<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Paul Arizpe</title>
    <description>The latest articles on DEV Community by Paul Arizpe (@kiramishima).</description>
    <link>https://dev.to/kiramishima</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F119459%2Ff5ddc945-7c7d-4df9-beff-1f2a3382451b.jpeg</url>
      <title>DEV Community: Paul Arizpe</title>
      <link>https://dev.to/kiramishima</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kiramishima"/>
    <language>en</language>
    <item>
      <title>Oh-my-Powershell</title>
      <dc:creator>Paul Arizpe</dc:creator>
      <pubDate>Tue, 07 Sep 2021 02:54:30 +0000</pubDate>
      <link>https://dev.to/kiramishima/oh-my-powershell-pjf</link>
      <guid>https://dev.to/kiramishima/oh-my-powershell-pjf</guid>
      <description>&lt;p&gt;Bienvenue dans un nouvel article, cette fois dédié à Powershell.&lt;br&gt;
Étant Développeur avec le system Windows, la majorité de temps quand nous travaillons avec WSL ou directement dans un environnement Linux, nous utilisons zsh pour donner de plus personnalité au terminal, cependant, quand nous retournons à notre environnement Windows, nous n'avons pas ces styles et couleurs dans notre Terminal.&lt;/p&gt;

&lt;p&gt;Heureusement, j'ai trouvé en recherchant un solution pour windows, ainsi j'ai trouvé &lt;strong&gt;&lt;a href="https://ohmyposh.dev/"&gt;Oh-My-Posh&lt;/a&gt;&lt;/strong&gt; .&lt;br&gt;
Ce script permet de donner un peu plus de personnalisation à la terminal Powershell, similaire au zsh.&lt;/p&gt;

&lt;p&gt;Pour y installer, nous devons avoir installé &lt;a href="https://github.com/PowerShell/powershell/releases"&gt;Powershell&lt;/a&gt;. Si vous êtes développeur .Net, il en est possible que vous ayez une version vielle.&lt;/p&gt;

&lt;p&gt;Puis on doit ouvrir une fenêtre de Powershell en mode Administrateur, alors on va exécuter les commandes suivantes :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;PowerShell&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;7.1.4&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Copyright&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Microsoft&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Corporation.&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="n"&gt;https://aka.ms/powershell&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nx"&gt;Type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'help'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;get&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;help.&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="n"&gt;PS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;C:\Users\edens-zero&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Install-Module&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;oh-my-posh&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Scope&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;AllUsers&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;PS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;C:\Users\edens-zero&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Import-Module&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;oh-my-posh&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;PS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;C:\Users\edens-zero&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Get-PoshThemes&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;PS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;C:\Users\edens-zero&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Get-PoshThemes&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-list&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Après que le processus d'installation termine, on doit télécharger la typographie &lt;strong&gt;&lt;a href="https://www.nerdfonts.com/"&gt;Nerd Fonts&lt;/a&gt;&lt;/strong&gt; puisque &lt;strong&gt;Oh-My-Posh&lt;/strong&gt; en a besoin. Un fois télécharge dans notre ordinateur, il sera nécessaire de l'installer, car les thèmes ont besoin de celle.&lt;/p&gt;

&lt;p&gt;Après on va créer un nouvel fichier en exécutant la ligne suivant :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;PS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;C:\Users\edens-zero&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;notepad&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="bp"&gt;$PROFILE&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AllUsersAllHosts&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c"&gt;# Si ça ne marche pas , vous pouvez utiliser &lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;PS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;C:\Users\edens-zero&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;notepad&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="bp"&gt;$PROFILE&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ça ouvrira le notepad, alors nous ajouterons la ligne suivante pour assigner un thème :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;Set-PoshPrompt&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Theme&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;jandedobbeleer&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Puis nous écrivons. $PROFILE et voilà !!! Powershell aura une meilleure présentation. Si vous utilisez WSL, vous devez modifier les paramètres et ajouter dans la section &lt;strong&gt;&lt;code&gt;defaults&lt;/code&gt;&lt;/strong&gt; la typographie &lt;code&gt;Nerd Font&lt;/code&gt; installé. Par exemple :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"profiles"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"defaults"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"fontFace"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"FiraCode Nerd Font"&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Finalement, Powershell semble à ZSH. N'hésitez pas si vous avez des commentaires ou des questions ! Et si vous aimez cet article, n'oubliez pas de donner votre like et le partager, à bientôt.&lt;/p&gt;

</description>
      <category>powershell</category>
      <category>zsh</category>
      <category>terminal</category>
      <category>french</category>
    </item>
    <item>
      <title>S1E1 - Instalando ZSH &amp; ASDF en Ubuntu</title>
      <dc:creator>Paul Arizpe</dc:creator>
      <pubDate>Tue, 24 Aug 2021 03:33:43 +0000</pubDate>
      <link>https://dev.to/kiramishima/s1e1-instalando-zsh-asdf-en-ubuntu-jnh</link>
      <guid>https://dev.to/kiramishima/s1e1-instalando-zsh-asdf-en-ubuntu-jnh</guid>
      <description>&lt;p&gt;Hola a todos, y bienvenidos a una entrega mas, ahora en formato video y en español para su mayor comodidad. En esta ocasión comenzaremos realizando uno de mis articulos en Frances &lt;strong&gt;ZSH &amp;amp; ASDF sur WSL2 Ubuntu&lt;/strong&gt; , ya que aprovechando de que obtuve una Raspberry Pi 4, aproveche para hacer este video. Espero les guste y no olviden dejar su Like &amp;amp; compartir para seguir trayendo mas contenido. &lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/9hGEk8Dt3p0"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>spanish</category>
      <category>ubuntu</category>
      <category>wsl</category>
      <category>raspberrypi4</category>
    </item>
    <item>
      <title>Data Science avec F#</title>
      <dc:creator>Paul Arizpe</dc:creator>
      <pubDate>Sat, 31 Jul 2021 15:20:09 +0000</pubDate>
      <link>https://dev.to/kiramishima/data-science-avec-f-3o85</link>
      <guid>https://dev.to/kiramishima/data-science-avec-f-3o85</guid>
      <description>&lt;p&gt;Bonjour à tous, aujourd’hui on retourne avec F# !!!! Pour vous donner un peu de contexte, en 2020 j’ai pris par un an le diplômât de Data Science dans la plateforme de Datacamp, grâce à une bourse de Facebook, j’ai appris quelques techniques de science de données, cependant, la majorité des cours utilisent Python pour travailler avec les données. Alors je rappel que F# et Scala s’utilisent aussi pour jouer avec les données. &lt;br&gt;
En 2019, Microsoft a lancé .NET Core 3.0 et cela a donné aux Jupyter Notebooks le support pour utiliser .NET. Pour longtemps .NET utilisait &lt;a href="https://github.com/fsprojects/IfSharp" rel="noopener noreferrer"&gt;IfSharp&lt;/a&gt; qui est une modification de Jupyter crée par la communauté de F#, maintenant on peut utiliser le Jupyter qui vient avec les outils d’Anaconda.&lt;br&gt;
Dans cet article, je vais utiliser le laboratoire « Introduction to Jupyter Notebooks « que la plateforme Datacamp a pour enseigner leurs élevés comme fonctionne cet outil.&lt;/p&gt;


&lt;h2&gt;
  
  
  &lt;strong&gt;Jupyter Notebooks&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Je parle sur Jupyter et ses Notebooks mais Qu’Est-ce que ce Jupyter ? &lt;br&gt;
Il est un projet qui permet créer des documents interactifs, ces documents permettent exécuter code et montrer le résultat sur le même. D’abord, il travaille avec Python qui est le kernel du début et avec Markdown pour donner une meilleure présentation aux écrits. Pour utiliser cet outil, on doit installer Python et les requis qui demande Jupyter, or, pour faire cette installation facile, on peut utiliser Anaconda ou Docker.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Requis&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Les requis sont très simples car il est possible qu’on ait ce logiciel déjà installé.&lt;br&gt;
• Installez la suite &lt;a href="https://www.anaconda.com/products/individual" rel="noopener noreferrer"&gt;Anaconda&lt;/a&gt;&lt;br&gt;
• Installez le &lt;a href="https://docs.microsoft.com/en-us/dotnet/core/tools/" rel="noopener noreferrer"&gt;.NET CLI&lt;/a&gt; auquel on peut trouver F#&lt;br&gt;
• Installez votre éditeur de code préféré, dans cet article, je vais utiliser &lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;VS Code&lt;/a&gt;&lt;br&gt;
Pour y ajouter le kernel .Net, on doit exécuter les suivantes lignes du code dans une terminal après avoir installé le .NET CLI et Anacoda :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Il faut installer l’outil dotnet-try
Terminal &amp;gt; dotnet tool install –global dotnet-try
# Pour installer le kernel
Terminal&amp;gt; dotnet try Jupyter install
# Pour vérifier que le kernel se soit bien installé 
Terminal&amp;gt; Jupyter kernelspec list

# Le résultat de la commande serait le suivant : 
Available kernels:
  .net-csharp      …\jupyter\kernels\.net-csharp
  .net-fsharp      ...\jupyter\kernels\.net-fsharp
  powershell       ...\jupyter\kernels\powershell
  pysparkkernel    ...\jupyter\kernels\pysparkkernel
  sparkkernel      ...\jupyter\kernels\sparkkernel
  sparkrkernel     ...\jupyter\kernels\sparkrkernel
  python3          ...\jupyter\kernels\python3

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Désormais, on peut utiliser Jupyter avec .NET, alors on va exécuter dans la ligne de commande :&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Terminal &amp;gt; cd Workspace
Workspace &amp;gt; jupyter lab
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxjbcbj5y208v15fxaqqf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxjbcbj5y208v15fxaqqf.png" alt="Exemple"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cela va lever un serveur web dans le port 8888, si c’est la première fois, vous devez écrire un mot du passe. D’abord on peut regarder des sections qui ont différentes fonctionnalités, alors pour créer un nouveau cahier jupyter, on a 3 options dont F# est l’option auquel on va travailler dans cet article.   &lt;/p&gt;


&lt;h2&gt;
  
  
  &lt;strong&gt;Atelier – En chargeant données dans un DataFrame&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;1-  On va cliquer sur le Button « .NET (F#) «, alors ça va créer un nouveau fichier «Untitled1.ipynb« , puis on clique sur le Button « Garder «  et après on clique sur le fichier pour le renommer.&lt;br&gt;
2-  Cliquez sur le cahier pour ajouter le code ou Markdown, dans ce cas on va ajouter le code :&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
3-  Pour pouvoir utiliser des nugets packages dans jupyter, on utilise les &lt;a href="https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/preprocessor-directives" rel="noopener noreferrer"&gt;directives de préprocesseur&lt;/a&gt; en écrivant la syntaxe :&lt;br&gt;&lt;br&gt;
&lt;code&gt;#r « &amp;lt;nuget package&amp;gt; «&lt;/code&gt; ou si nous avons besoin de certaine version, on utilise la syntaxe :&lt;br&gt;&lt;br&gt;
&lt;code&gt;#r « &amp;lt;nuget package, version «&lt;/code&gt;&lt;br&gt;&lt;br&gt;
Alors, on va ajouter les packages :&lt;br&gt;&lt;br&gt;
• &lt;a href="https://github.com/fsprojects/FSharp.Data/" rel="noopener noreferrer"&gt;FSharp.Data&lt;/a&gt; – ça nous permettra travailler facilement avec les données de type JSON, CSV, HTML, etc.&lt;br&gt;&lt;br&gt;
• &lt;a href="https://bluemountaincapital.github.io/Deedle/" rel="noopener noreferrer"&gt;Deedle&lt;/a&gt; – Il était inspiré dans le populaire package de Python : Pandas, alors ce package nous permets travailler avec Dataframes&lt;br&gt;&lt;br&gt;
• &lt;a href="https://fslab.org/XPlot/" rel="noopener noreferrer"&gt;Xplot&lt;/a&gt; – Ce package semble un peu à &lt;a href="https://bokeh.org/" rel="noopener noreferrer"&gt;Bokeh&lt;/a&gt; et &lt;a href="https://matplotlib.org/" rel="noopener noreferrer"&gt;Matplotlib&lt;/a&gt;, celui-ci nous va permettre faire des graphiques.&lt;br&gt;&lt;/p&gt;

&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;



&lt;p&gt;Dans cet atelier, on utilisera un fichier csv qui contient de l’information des températures parmi les années 1850 – 1960. Vous pouvez le télécharger &lt;a href="https://gist.github.com/kiramishima/e81f714fda921c259fbdadcb1affa0e1" rel="noopener noreferrer"&gt;ici&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4-  Pour charger ces données, on utilise &lt;strong&gt;Deedle&lt;/strong&gt; et pour montrer le contenu, on emploi le méthode &lt;strong&gt;Print&lt;/strong&gt;. Pour prendre certaine quantité des données, on utilise la propriété &lt;strong&gt;Rows&lt;/strong&gt; et celle-ci a le méthode &lt;strong&gt;Between&lt;/strong&gt; qui reçoit les indices de début et final où on prend l’information. Dans ce petit exemple, j’ai pris 3 éléments du Dataframe.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;

&lt;/h2&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Atelier – En créant des graphiques avec Xplot&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Désormais on savait comment charger un fichier CSV dans un DataFrame, alors on va montrer un graphique avec le package Xplot.&lt;/p&gt;

&lt;p&gt;5-   On crée une nouvelle cellule du type code et on import le nom d'espace &lt;strong&gt;Xplot&lt;/strong&gt;. Pour créer un graphique, nous utilisons la syntaxe ([propriétes du graphique])&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight fsharp"&gt;&lt;code&gt;&lt;span class="k"&gt;open&lt;/span&gt; &lt;span class="nn"&gt;XPlot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Plotly&lt;/span&gt;

&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;lineTrace1&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt;
    &lt;span class="nc"&gt;Scatter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Tableaux&lt;/span&gt; &lt;span class="n"&gt;des&lt;/span&gt; &lt;span class="n"&gt;donn&lt;/span&gt;&lt;span class="err"&gt;é&lt;/span&gt;&lt;span class="n"&gt;es&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;,&lt;/span&gt;
        &lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Tableaux&lt;/span&gt; &lt;span class="n"&gt;des&lt;/span&gt; &lt;span class="n"&gt;donn&lt;/span&gt;&lt;span class="err"&gt;é&lt;/span&gt;&lt;span class="n"&gt;es&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;6-  D'autre part, si nous avons besoins d'ajouter plus de style à notre graphique et qu’il soit plus compressible, on utilise la class &lt;strong&gt;Layout&lt;/strong&gt;, puis on passe les propriétés dans leur constructeur.  Pour ajouter un &lt;strong&gt;titre&lt;/strong&gt;, on emploi la propriété &lt;strong&gt;title* du type **string&lt;/strong&gt;.  Si on a besoin de changer les titres de l’axis &lt;strong&gt;X&lt;/strong&gt; ou &lt;strong&gt;Y&lt;/strong&gt;, on utilise la propriété &lt;strong&gt;xaxis&lt;/strong&gt; ou &lt;strong&gt;yaxis&lt;/strong&gt;, par exemple si on a besoin de changer le titre de l’axis X , on déclare un nouveau élément du type &lt;strong&gt;Xaxis&lt;/strong&gt; et on assigne un valeur sur son propriété *&lt;em&gt;title&lt;/em&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight fsharp"&gt;&lt;code&gt;&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;styledLayout&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt;
        &lt;span class="nc"&gt;Layout&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;title&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Titre du graphique"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;xaxis&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt;
                &lt;span class="nc"&gt;Xaxis&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                    &lt;span class="n"&gt;title&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Titre xaxis"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="n"&gt;showgrid&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="n"&gt;zeroline&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;false&lt;/span&gt;
                &lt;span class="o"&gt;),&lt;/span&gt;
            &lt;span class="n"&gt;yaxis&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt;
                &lt;span class="nc"&gt;Yaxis&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                    &lt;span class="n"&gt;title&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"titre yaxis"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="n"&gt;showline&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;false&lt;/span&gt;
                &lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;7- On applique désormais tout ça pour créer notre graphique, ensuite nous utilisons les pipes pour joindre le code et montrer le graphique, finalement on exécute la cellule&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight fsharp"&gt;&lt;code&gt;&lt;span class="k"&gt;open&lt;/span&gt; &lt;span class="nn"&gt;XPlot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Plotly&lt;/span&gt;

&lt;span class="c1"&gt;// Example&lt;/span&gt;
&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;year&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;globalTemp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;GetColumn&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;int16&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;(&lt;/span&gt;&lt;span class="s2"&gt;"year"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;degreesCelsius&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;globalTemp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;GetColumn&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;double&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;(&lt;/span&gt;&lt;span class="s2"&gt;"degrees_celsius"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;lineTrace1&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt;
    &lt;span class="nc"&gt;Scatter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;year&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Values&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;degreesCelsius&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Values&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;""&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;styledLayout&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt;
    &lt;span class="nc"&gt;Layout&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;title&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Temperature 1850 - 2016"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;xaxis&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt;
            &lt;span class="nc"&gt;Xaxis&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                &lt;span class="n"&gt;title&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Years"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;showgrid&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;zeroline&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;false&lt;/span&gt;
            &lt;span class="o"&gt;),&lt;/span&gt;
        &lt;span class="n"&gt;yaxis&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt;
            &lt;span class="nc"&gt;Yaxis&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                &lt;span class="n"&gt;title&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Degrees"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;showline&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;false&lt;/span&gt;
            &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;//&lt;/span&gt;
&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;chart&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;lineTrace1&lt;/span&gt; &lt;span class="p"&gt;|&amp;gt;&lt;/span&gt; &lt;span class="nn"&gt;Chart&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Plot&lt;/span&gt; &lt;span class="p"&gt;|&amp;gt;&lt;/span&gt; &lt;span class="nn"&gt;Chart&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;WithLayout&lt;/span&gt; &lt;span class="n"&gt;styledLayout&lt;/span&gt; &lt;span class="c1"&gt;// |&amp;gt; Chart.Show&lt;/span&gt;
&lt;span class="n"&gt;display&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;chart&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Voila, on a créé notre premier graphique :D&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsda8vjxctbx3ety7ejoh.png" alt="Graphique des temperatures"&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Atelier – Cartes&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Si vous venez de Python, vous avez Folium pour montrer certaine information dans une carte, cependant, dans .NET n’a pas une librairie similaire mais on peut travailler avec une carte grâce à Xplot. Pour utiliser cette fonctionnalité, on doit importer l’espace de noms &lt;strong&gt;GoogleCharts&lt;/strong&gt;. Celui-ci a beaucoup de classes, cependant, dans cet exemple, on utilisera &lt;strong&gt;Geo&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Geo reçoit des données du type tuple, c’est-à-dire dans ce format :  &lt;strong&gt;Lat*Lng*String&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;8 – Pour présenter une carte, on importe &lt;strong&gt;GoogleCharts&lt;/strong&gt;. Après on déclare une variable qui s’appellera &lt;code&gt;companies&lt;/code&gt; lequel contiendra le code suivant :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight fsharp"&gt;&lt;code&gt;&lt;span class="c1"&gt;// XPlot.GoogleCharts&lt;/span&gt;
&lt;span class="k"&gt;open&lt;/span&gt; &lt;span class="nn"&gt;XPlot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;GoogleCharts&lt;/span&gt;
&lt;span class="c1"&gt;// Declaration d'un variable de type Tableaux avec tuples (Lat, Long, "Label")&lt;/span&gt;
&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;companies&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; 
    &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;37&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;4970&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="mi"&gt;127&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0266&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"Samsung: 20.5%"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;37&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;3318&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;122&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0311&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"Apple: 14.4%"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;5431&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="mi"&gt;114&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0579&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"Huawei: 8.9%"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;9 – Puis, on déclare une variable du type &lt;strong&gt;Options&lt;/strong&gt; et on active la propriété &lt;strong&gt;showTooltips&lt;/strong&gt; et la propriété &lt;strong&gt;displaymode&lt;/strong&gt; tiendra la valeur : « markers «&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight fsharp"&gt;&lt;code&gt;&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;options&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nn"&gt;XPlot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nn"&gt;GoogleCharts&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Options&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;showTooltips&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;displayMode&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"markers"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;11 – Finalement on joint tous les éléments en utilisant les pipes de F# et on verra la carte 😊&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight fsharp"&gt;&lt;code&gt;&lt;span class="n"&gt;companies&lt;/span&gt; 
&lt;span class="p"&gt;|&amp;gt;&lt;/span&gt; &lt;span class="nn"&gt;Chart&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Geo&lt;/span&gt;
&lt;span class="p"&gt;|&amp;gt;&lt;/span&gt; &lt;span class="nn"&gt;Chart&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;WithOptions&lt;/span&gt; &lt;span class="n"&gt;options&lt;/span&gt;
&lt;span class="p"&gt;|&amp;gt;&lt;/span&gt; &lt;span class="nn"&gt;Chart&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Show&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Voila !! Nous avons crée une carte qui a 3 markers&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxfodsdir8da4bhvawt2t.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxfodsdir8da4bhvawt2t.PNG" alt="Carte avec Xplot"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;En bref, on a utilisé Jupyter avec F# en ajoutant le Kernel .NET grâce au package try. Cette combinaison entre Jupyter et .Net, nous permet montrer et partager nos recherches. Pour ce labo, je « transformais » le laboratoire de Datacamp « Introduction to Datacamp Projects « au format .NET en utilisant F#, aussi il est possible utiliser C#. Finalement Si vous aimez cet article, n'oubliez pas de donner votre like et le partager, à bientôt.&lt;/p&gt;

</description>
      <category>fsharp</category>
      <category>datascience</category>
      <category>jupyter</category>
      <category>dotnet</category>
    </item>
    <item>
      <title>Dart pour C# Développeurs - Part 2</title>
      <dc:creator>Paul Arizpe</dc:creator>
      <pubDate>Wed, 16 Jun 2021 04:16:39 +0000</pubDate>
      <link>https://dev.to/kiramishima/dart-pour-c-developpeurs-part-2-p4f</link>
      <guid>https://dev.to/kiramishima/dart-pour-c-developpeurs-part-2-p4f</guid>
      <description>&lt;p&gt;Bonjour à tous et bienvenue à la deuxième partie de « Dart pour C# Développeurs «. La dernière fois, on a vu comment créer un projet Dart de type console en utilisant la ligne de commande, aussi on a vu la syntaxe basique et quelques types de donnés.&lt;/p&gt;

&lt;p&gt;D’abord, on va commencer avec les types « &lt;strong&gt;classe&lt;/strong&gt; «, ensuite les « &lt;strong&gt;Délégués&lt;/strong&gt; «, « &lt;strong&gt;Interfaces&lt;/strong&gt; » et « &lt;strong&gt;mixins&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Classes
&lt;/h2&gt;

&lt;p&gt;Définir une classe en Dart, celle-ci ne devrait pas être une chose très difficile, puisqu’il semble beaucoup aux classes codé en C#.&lt;br&gt;
Pour donner un peu de contexte, je vais utiliser comme un exemple une classe laquelle j'appellerai « &lt;strong&gt;Pokemon&lt;/strong&gt; « :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="c1"&gt;// C# Code&lt;/span&gt;
&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Pokemon&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;Id&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;Name&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="nf"&gt;Pokemon&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;Id&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="n"&gt;Name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Utilisant Dart, celle-ci deviens:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Pokemon&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kt"&gt;String&lt;/span&gt; &lt;span class="n"&gt;Name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;''&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;Id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="n"&gt;Pokemon&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;Name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;Id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bien que déclarer une classe soit facile, il est indispensable de remarquer que Dart n'a pas d'accesseurs comme en C#, c'est-à-dire que on ne doit pas indiquer si la classe est publique ou privé avec &lt;code&gt;public&lt;/code&gt; ou &lt;code&gt;private&lt;/code&gt;, or, il faut ajouter que ce type de déclaration existe d'une autre maniere, par exemple, pour le type privé, il est nécessaire d'ajouter &lt;code&gt;_&lt;/code&gt; avant du nom de notre variable, par exemple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Person&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kt"&gt;String&lt;/span&gt; &lt;span class="n"&gt;_Name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;''&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="kt"&gt;String&lt;/span&gt; &lt;span class="kd"&gt;get&lt;/span&gt; &lt;span class="n"&gt;Name&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;_Name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="n"&gt;Person&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;_Name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="n"&gt;person&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Person&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Clara"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;person&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;Name&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// "Clara"&lt;/span&gt;
&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;person&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;_Name&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// throws error&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;D'autre part, si nous avons besoins les bondis de l’héritage sur notre classe, c’est simple de donner cette compétence, par exemple en utilisant la classe Pokemon, on va ajouter la propriété ‘Type’ en utilisant cette caractéristique d’héritier.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="c1"&gt;// C# Code&lt;/span&gt;
&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Pokemon2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Pokemon&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
     &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;Type&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;

     &lt;span class="nf"&gt;Pokemon2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;type&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
       &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;base&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
     &lt;span class="p"&gt;{&lt;/span&gt;
         &lt;span class="n"&gt;Id&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
         &lt;span class="n"&gt;Name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
         &lt;span class="n"&gt;Type&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;type&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
     &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pour faire cela en Dart, on doit utiliser le mot réservé : "&lt;em&gt;extended&lt;/em&gt;".&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Dart code&lt;/span&gt;
&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Pokemon2&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="n"&gt;Pokemon&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kt"&gt;String&lt;/span&gt; &lt;span class="kt"&gt;Type&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;''&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="n"&gt;Pokemon2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;String&lt;/span&gt; &lt;span class="n"&gt;type&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;super&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;Type&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;type&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Très facile ! Désormais, vous pouvez créer vos propres classes et utiliser l'héritage, maintenant on va apprendre sur les interfaces.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Interfaces&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;En C#, nous pouvons définir la structure et les méthodes qui vont avoir nos classes, grâce aux interfaces, on peut faire un brouillon ou skeleton. Définir une interface en C# est très simple puisque on crée un fichier avec le code de l’interface, c’est-à-dire que ceux-ci suivent comment règle principal d’avoir le préfix «I« avant le nom, par exemple, l’interface de la classe « Pokemon » serait «IPokemon«.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Code C#&lt;/span&gt;
&lt;span class="k"&gt;interface&lt;/span&gt; &lt;span class="nc"&gt;IPokemon&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
   &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Attack&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Utilisation&lt;/span&gt;
&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;PokemonWithInterface&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;IPokemon&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
     &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Attack&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
     &lt;span class="p"&gt;{&lt;/span&gt;
         &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Attack !!!!"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
     &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Néanmoins, Dart n’a pas d’interfacés, or, on peut utiliser une classe de type abstract pour donner un effet similaire en suivant les mêmes règles de définition. Par exemple :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Code dart&lt;/span&gt;
&lt;span class="kd"&gt;abstract&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;IPokemon&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="n"&gt;attack&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// utilisation&lt;/span&gt;
&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;PokemonWithInterface&lt;/span&gt; &lt;span class="kd"&gt;implements&lt;/span&gt; &lt;span class="n"&gt;IPokemon&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nd"&gt;@override&lt;/span&gt;
  &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="n"&gt;attack&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Attack !!!!'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;Mixins&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Avant de continuer avec le type &lt;strong&gt;Délégués&lt;/strong&gt;, c’est important de savoir sur l’existence de &lt;strong&gt;mixins&lt;/strong&gt;, lesquels permettent réutiliser parties de code sur multiples hiérarchies de classes. Ceux-ci sont pareils aux interfaces mais ils implémentent une fonctionnalité.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="c1"&gt;// création&lt;/span&gt;
&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;PokeMixin&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="n"&gt;Attack2&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Attack Mixin"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// implementation&lt;/span&gt;
&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Pokemon&lt;/span&gt; &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;PokeMixin&lt;/span&gt; &lt;span class="kd"&gt;implements&lt;/span&gt; &lt;span class="n"&gt;IPokemon&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kt"&gt;String&lt;/span&gt; &lt;span class="n"&gt;Name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;''&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;Id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="n"&gt;Pokemon&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;Name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;Id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nd"&gt;@override&lt;/span&gt;
  &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="n"&gt;attack&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Attack Method'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Exemple&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="n"&gt;poke&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Pokemon&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'Pikachu'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;poke&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;Name&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Pikachu&lt;/span&gt;
&lt;span class="n"&gt;poke&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;Attack2&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// Attack Mixin&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Faites attention ! Je n'ai pas donner un exemple en C# puisque les mixins ne semblent pas aux mixins de Dart.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Délégués
&lt;/h2&gt;

&lt;p&gt;Un &lt;strong&gt;délégué&lt;/strong&gt; est un type qui représente des références aux méthodes avec une liste de paramètres et un type de retour particuliers. Lorsque vous instanciez un délégué, vous pouvez associer son instance à toute méthode ayant une signature et un type de retour compatibles.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="c1"&gt;// C# Code - Déclaration d'un délégué&lt;/span&gt;
&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;delegate&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;InfoDelegate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Pokemon&lt;/span&gt; &lt;span class="n"&gt;pokemon&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// On doit définir un méthode qui corresponde à la signature du délégué.&lt;/span&gt;

&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;InfoMethod&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Pokemon&lt;/span&gt; &lt;span class="n"&gt;pokemon&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
     &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ForegroundColor&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ConsoleColor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Cyan&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
     &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"----------------"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
     &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;$"#&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;pokemon&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Id&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s"&gt; - &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;pokemon&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Name&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
     &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"----------------"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Utilisation&lt;/span&gt;
&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;pokemon&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;Pokemon&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Pikachu"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;InfoDelegate&lt;/span&gt; &lt;span class="n"&gt;handler&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;InfoMethod&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nf"&gt;handler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pokemon&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;En Dart, nous pouvons utiliser le mot réservé &lt;strong&gt;typedef&lt;/strong&gt; pour avoir le même effet.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Dart Code - Déclaration d'un délégué&lt;/span&gt;
&lt;span class="kd"&gt;typedef&lt;/span&gt; &lt;span class="n"&gt;InfoDelegate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="kt"&gt;Function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Pokemon&lt;/span&gt; &lt;span class="n"&gt;pokemon&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Définition de méthode&lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;InfoMethod&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Pokemon&lt;/span&gt; &lt;span class="n"&gt;pokemon&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'----------------'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'#&lt;/span&gt;&lt;span class="si"&gt;${pokemon.Id}&lt;/span&gt;&lt;span class="s"&gt; - &lt;/span&gt;&lt;span class="si"&gt;${pokemon.Name}&lt;/span&gt;&lt;span class="s"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'----------------'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Exemple d'utilisation&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="n"&gt;pokemon&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Pokemon&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'Pikachu'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;InfoDelegate&lt;/span&gt; &lt;span class="n"&gt;handler&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;InfoMethod&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;handler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pokemon&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Voila !! Désormais, on peut déclarer une classe, une interface, un mixin et un délégué. Pour le suivant et dernier article, on verra quelques exemples d'Async et Await et quelques exemples d'Events.&lt;br&gt;
Finalement, Si vous aimez cet article, n'oubliez pas de donner votre like et du partager, à bientôt.&lt;/p&gt;

</description>
      <category>dart</category>
      <category>csharp</category>
      <category>dotnet</category>
      <category>darklang</category>
    </item>
    <item>
      <title>Dart pour C# Développeurs</title>
      <dc:creator>Paul Arizpe</dc:creator>
      <pubDate>Sun, 11 Apr 2021 21:46:46 +0000</pubDate>
      <link>https://dev.to/kiramishima/dart-pour-c-developpeurs-1g1o</link>
      <guid>https://dev.to/kiramishima/dart-pour-c-developpeurs-1g1o</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Filgx3salqi8el2ddo1jt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Filgx3salqi8el2ddo1jt.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
Bonjour à tous et bienvenue dans un nouvel article, dans cette occasionne, je vous enseignerais comment commencer programmer en &lt;strong&gt;Dartlang&lt;/strong&gt; étant un développeur C#. Comme d’habitude je commencerais avec les requis, cependant, je supposerais que vous ayez installé asdf avec les plugins nécessaires pour travailler avec &lt;a href="https://github.com/emersonsoares/asdf-dotnet-core" rel="noopener noreferrer"&gt;.NET&lt;/a&gt; et &lt;a href="https://github.com/PatOConnor43/asdf-dart" rel="noopener noreferrer"&gt;Dart&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Pour commencer avec les choses plus basiques de Dart, on va faire une comparaison entre les deux langues de programmation, puisqu’ls partagent certaines similitudes, pourtant, j’ai divisé cet article en 2 parties afin de vous donner une meilleure compression parmi les deux codes.&lt;/p&gt;
&lt;h2&gt;
  
  
  Création des projets de type Console.
&lt;/h2&gt;

&lt;p&gt;Premièrement on va créer les projets de console pour Dart et C#. Pour créer un projet de console avec dart, il faut exécuter dans un Terminal la commande &lt;code&gt;dart create -t console-full SampleConsoleApp&lt;/code&gt;, ensuite on va entrer dans le dossier crée avec le commande &lt;code&gt;cd SampleConsoleApp&lt;/code&gt;. On peut regarder qu'il y a trois dossiers, or, le plus important sont &lt;strong&gt;bin&lt;/strong&gt; et &lt;strong&gt;lib&lt;/strong&gt; puisqu'ils contiendront notre code.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcalk4cvt11s0pjwkhowv.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcalk4cvt11s0pjwkhowv.PNG" alt="En créant notre première Project Dart"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;bin&lt;/strong&gt;: Il contient le point d'exécution de l'application Dart. Il semble à &lt;strong&gt;Program.cs&lt;/strong&gt; mais ici le fichier principal s'appellera avec le nom que nous le donnons pendant son création &lt;strong&gt;SampleConsoleApp.dart&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;lib&lt;/strong&gt;: Sur ce dossier, on va trouver les fichiers dart qui auront nos fonctions et clases. Par default, on trouve également un fichier avec le même nom que le fichier de bin, cependant, il contient le méthode &lt;code&gt;calculate&lt;/code&gt; qui est appelé dans le point d'entrée de l'autre fichier.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;test&lt;/strong&gt;: Il contient tous les test qu'on va faire dans notre code. Par default, il contient un exemple. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;pubspec.yml&lt;/strong&gt; : Il contient les packages qu'on va utiliser dans notre projet. Il semble un peu à &lt;strong&gt;nuget&lt;/strong&gt;, mais, tous les packages seraient télécharger de &lt;a href="https://pub.dev/" rel="noopener noreferrer"&gt;pub.dev&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Structure basique d'une application de console en Dart&lt;/span&gt;
&lt;span class="c1"&gt;// main.dart&lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;String&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello World!"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="c1"&gt;// Pour exécuter, il faut exécuter le suivante instruction: `dart run`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Créer une application de console dans Visual Studio, il sera facile, cependant, je vous laisse le contenu de &lt;strong&gt;Program.cs&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;namespace&lt;/span&gt; &lt;span class="nn"&gt;CsharpToDart&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Program&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello World!"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;En Dart, il n'existe pas le namespace comme en C#.&lt;br&gt;
Pour pouvoir appeller les methodes de dossier lib, il faut suivre la syntaxe:&lt;br&gt;
import 'package:/.dart'&lt;br&gt;
Par exemple :&lt;br&gt;
import 'package:SampleConsoleApp/SampleConsoleApp.dart'&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Déclaration des variables et types de donnés.
&lt;/h2&gt;

&lt;p&gt;En C#, on peut déclarer les variables en utilisant la syntaxe :&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;[type de donné] {nom de variable} = ;&lt;br&gt;
Par exemple:&lt;br&gt;
string message = "Bonjour";&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Aussi si nous ne connaissons le type de donné, on peut utiliser &lt;code&gt;var&lt;/code&gt;, pourtant, quand la valeur soit assignée, il obtiendra le type de donné, par exemple :&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;var {nom de variable} = ;&lt;br&gt;
var name = "Joaquin"; // type string&lt;br&gt;
var prix = 12.5; // type double ou float&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Pour Dart, les choses sont similaires, seulement on va ajouter &lt;code&gt;dynamic&lt;/code&gt; , &lt;code&gt;const&lt;/code&gt; et &lt;code&gt;final&lt;/code&gt; qui sont un peu semblables à &lt;code&gt;var&lt;/code&gt; mais avec certains règles. Par exemple :&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Dart&lt;/strong&gt;&lt;br&gt;
String message = "I'm a Dalek !!!";&lt;br&gt;
var name = "The Doctor";&lt;br&gt;
const prix = 12.5;&lt;br&gt;
final message2 = "E X T E R M I N A T E !!!!"; // Même cas que const.&lt;br&gt;
dynamic companyName = "Torchwood";&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;const&lt;/strong&gt;: Une fois assignée, on ne peut changer la valeur de ce variable&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;final&lt;/strong&gt;: Même cas que &lt;strong&gt;const&lt;/strong&gt;, une fois assigné, la valeur ne pourra pas changer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;dynamic&lt;/strong&gt;: Il est similaire à var, puisque celui-ci est utilisé quand on ne connait pas le type de donné. Il est utilisé beaucoup dans le type Map.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Désormais on va faire une petite comparaison entre les deux langues afin de connaitre quels sont les types des donnés les plus familials :&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;C# type&lt;/th&gt;
&lt;th&gt;.NET type&lt;/th&gt;
&lt;th&gt;Dart type&lt;/th&gt;
&lt;th&gt;Dartlang type&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;bool&lt;/td&gt;
&lt;td&gt;System.Boolean&lt;/td&gt;
&lt;td&gt;bool&lt;/td&gt;
&lt;td&gt;dart:core&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;byte&lt;/td&gt;
&lt;td&gt;System.Byte&lt;/td&gt;
&lt;td&gt;ByteBuffer&lt;/td&gt;
&lt;td&gt;dart:typed_data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;char&lt;/td&gt;
&lt;td&gt;System.Char&lt;/td&gt;
&lt;td&gt;String&lt;/td&gt;
&lt;td&gt;dart:io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;double&lt;/td&gt;
&lt;td&gt;System.Double&lt;/td&gt;
&lt;td&gt;double&lt;/td&gt;
&lt;td&gt;dart:core&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;int&lt;/td&gt;
&lt;td&gt;System.Int32&lt;/td&gt;
&lt;td&gt;int&lt;/td&gt;
&lt;td&gt;dart:core&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;uint&lt;/td&gt;
&lt;td&gt;System.UInt32&lt;/td&gt;
&lt;td&gt;Uint8&lt;/td&gt;
&lt;td&gt;dart:ffi&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nint&lt;/td&gt;
&lt;td&gt;System.IntPtr&lt;/td&gt;
&lt;td&gt;IntPtrPointer&lt;/td&gt;
&lt;td&gt;dart:ffi&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;object&lt;/td&gt;
&lt;td&gt;System.Object&lt;/td&gt;
&lt;td&gt;Object&lt;/td&gt;
&lt;td&gt;dart:core&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;System.String&lt;/td&gt;
&lt;td&gt;String&lt;/td&gt;
&lt;td&gt;dart:core&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dynamic&lt;/td&gt;
&lt;td&gt;System.Object&lt;/td&gt;
&lt;td&gt;dynamic&lt;/td&gt;
&lt;td&gt;dart:core&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;void&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;void&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  List, Maps, Sets
&lt;/h2&gt;

&lt;p&gt;En C#, on a Arrays et Dictionary, cependant, si on a besoin de travailler avec Set, on requit d'installer &lt;code&gt;Iesi Collections&lt;/code&gt; en cas d'utiliser .NET 4, tandis que la version 5, il vient avec &lt;code&gt;HashSet&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Bien que C# ait ces structures des donnés, Dart a aussi les propres, cependant, pour le type array, il devient List, pour le Dictionary, il sera Map. Bien que C# n'ait pas supporté le type Set jusqu'à la version 5 de .NET, en Dart, on a le type Set.&lt;/p&gt;

&lt;p&gt;Ici quelques exemples :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="c1"&gt;// List&lt;/span&gt;
&lt;span class="kt"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;String&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;names&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;'Wanda'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'Pietro'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'Vision'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'Agatha'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'Mephisto'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="n"&gt;names2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;String&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;[&lt;/span&gt;&lt;span class="s"&gt;'Wanda'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'Pietro'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'Vision'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'Agatha'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'Mephisto'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="c1"&gt;// Maps&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;'name'&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;'Wanda'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'lastname'&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;'Maximoff'&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="n"&gt;person&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;String&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;String&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;{&lt;/span&gt;&lt;span class="s"&gt;'name'&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;'Wanda'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'lastname'&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;'Maximoff'&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="kt"&gt;Map&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;String&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;String&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;data2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;'name'&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;'Wanda'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'lastname'&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;'Maximoff'&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="c1"&gt;// Set&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="n"&gt;names3&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;'Wanda'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'Pietro'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'Vision'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'Agatha'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'Mephisto'&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="n"&gt;persons&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;String&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;{&lt;/span&gt;&lt;span class="s"&gt;'Wanda'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'Pietro'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'Vision'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'Agatha'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'Mephisto'&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="kt"&gt;Set&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;String&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;characters&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;'Wanda'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'Pietro'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'Vision'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'Agatha'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'Mephisto'&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bref, on a vu les types de donnés qui ont pu trouver parmi les deux langues de programmation, cependant, il manque quelques structures et méthodes qu'on verra dans le suivant article. Si vous aimez cet article n'oublié de donner votre like et le partager, à bientôt.&lt;/p&gt;

</description>
      <category>dart</category>
      <category>csharp</category>
      <category>dotnet</category>
      <category>darklang</category>
    </item>
    <item>
      <title>Azure Functions avec F#</title>
      <dc:creator>Paul Arizpe</dc:creator>
      <pubDate>Wed, 07 Apr 2021 20:44:07 +0000</pubDate>
      <link>https://dev.to/kiramishima/azure-functions-avec-f-2mll</link>
      <guid>https://dev.to/kiramishima/azure-functions-avec-f-2mll</guid>
      <description>&lt;p&gt;Bonjour à tous dans un nouvel article sur la plateforme &lt;code&gt;Dev.to&lt;/code&gt;. Dans cette occasionne, nous apprendrons brièvement comment faire une Azure Fonction en utilisant F# pour la développer.&lt;/p&gt;

&lt;p&gt;Dans la première version d'Azure Fonctions, nous pouvions faire facilement une fonction en utilisant un script &lt;strong&gt;fsx&lt;/strong&gt;, tandis que dans la dernière version d'Azure Fonctions nous devons précompiler et uploader nos scripts &lt;strong&gt;fs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fgj9akzjj9fbgjiasqrug.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fgj9akzjj9fbgjiasqrug.PNG" alt="L'information que Microsoft Developeurs nos donne"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Après de voir la documentation, j'ai découvert qu'il n'y a pas un bon exemple pour faire une fonction azure avec F#, donc la Template ne fonctionne pas alors j'ai déçu de faire ce petit tutoriel.&lt;/p&gt;

&lt;h4&gt;
  
  
  Requis
&lt;/h4&gt;

&lt;p&gt;On a besoin d'installer le suivant logiciel: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;Visual Studio Code&lt;/a&gt; ou votre éditeur du texte préféré.&lt;/li&gt;
&lt;li&gt;Installez &lt;a href="https://fsharp.org/" rel="noopener noreferrer"&gt;F#&lt;/a&gt; et &lt;a href="https://nodejs.org/en/" rel="noopener noreferrer"&gt;NodeJS&lt;/a&gt; avec le package &lt;a href="https://www.npmjs.com/package/azure-functions-core-tools" rel="noopener noreferrer"&gt;Azure Functions Core Tools&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Installez le &lt;a href="https://docs.microsoft.com/en-us/dotnet/core/install/windows?tabs=net50" rel="noopener noreferrer"&gt;.NET Core CLI&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Optionnellement vous pourriez créer un compte &lt;a href="https://azure.microsoft.com/fr-fr/" rel="noopener noreferrer"&gt;Microsoft Azure&lt;/a&gt; en cas de vouloir publier votre fonction.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Temp de code 1..2..3
&lt;/h4&gt;

&lt;h5&gt;
  
  
  Pas 1
&lt;/h5&gt;

&lt;p&gt;D'abord on va vérifier notre installation alors on va ouvrir un terminal unix et écrire les commandes :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;darkhero&amp;gt; func &lt;span class="nt"&gt;--version&lt;/span&gt; &lt;span class="c"&gt;# 3.0.3388&lt;/span&gt;
darkhero&amp;gt; func templates list &lt;span class="c"&gt;# on verra qu'il n'y a pas F# templates&lt;/span&gt;
darkhero&amp;gt; dotnet &lt;span class="nt"&gt;--version&lt;/span&gt; &lt;span class="c"&gt;# 5.0.201&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Malgré la faute d'une Template F#, on peut créer une fonctionne en exécutant le commande :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Ce commande va créer notre fonctionne base dont F# sera la langue pour programmer&lt;/span&gt;
darkhero&amp;gt; dotnet new classlib &lt;span class="nt"&gt;--language&lt;/span&gt; F# &lt;span class="nt"&gt;--name&lt;/span&gt; HelloDevTo
darkhero&amp;gt; &lt;span class="nb"&gt;cd &lt;/span&gt;HelloDevTo &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;ls
&lt;/span&gt;HelloDevTo.fsproj  Library.fs  obj
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On a 2 fichiers, &lt;code&gt;HelloDevTo.fsproj&lt;/code&gt; et &lt;code&gt;Library.fs&lt;/code&gt;, le premier contient l'information essentiel de notre projet F#, toutes les libraires vont ici. &lt;code&gt;Library.fs&lt;/code&gt; est le fichier F# crée par default, alors on va l'effacer et créer le fichier &lt;code&gt;HelloFunctions.fs&lt;/code&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  Pas 2
&lt;/h5&gt;

&lt;p&gt;Pour ajouter la fonctionnalité d'une Azure Fonction dans notre code, il est nécessaire d'ajouter le package &lt;strong&gt;Microsoft.Net.Sdk.Functions&lt;/strong&gt;, après on doit créer les fichiers &lt;strong&gt;host.json&lt;/strong&gt;, &lt;strong&gt;local.settings.json&lt;/strong&gt; &amp;amp; &lt;strong&gt;function.json&lt;/strong&gt;.&lt;br&gt;
Pour ajouter le package, on va exécuter la suivante ligne de code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;darkhero&amp;gt; dotnet add package Microsoft.NET.Sdk.Functions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pour le fichier &lt;strong&gt;host.json&lt;/strong&gt;, on va copier (ou écrire) le suivante code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pour le fichier &lt;strong&gt;local.settings.json&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"IsEncrypted"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"Values"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"AzureWebJobsStorage"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"UseDevelopmentStorage=true"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"FUNCTIONS_WORKER_RUNTIME"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"dotnet"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Finalement dans le fichier &lt;strong&gt;function.json&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"bindings"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"httpTrigger"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"methods"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"get"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"post"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"authLevel"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"anonymous"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"req"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"disabled"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Après de tenir les fichiers nécessaires, on va modifier le fichier &lt;strong&gt;HelloDevTo.fsproj&lt;/strong&gt;, car on doit ajouter les fichiers qu'on avait créés avant. Si on ouvre ce fichier, on verrait le suivant :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;Project Sdk="Microsoft.NET.Sdk"&amp;gt;

  &amp;lt;PropertyGroup&amp;gt;
    &amp;lt;TargetFramework&amp;gt;netcoreapp3.1&amp;lt;/TargetFramework&amp;gt;
    &amp;lt;GenerateDocumentationFile&amp;gt;true&amp;lt;/GenerateDocumentationFile&amp;gt;
  &amp;lt;/PropertyGroup&amp;gt;

  &amp;lt;ItemGroup&amp;gt;
    &amp;lt;Compile Include="Library.fs" /&amp;gt;
  &amp;lt;/ItemGroup&amp;gt;

  &amp;lt;ItemGroup&amp;gt;
    &amp;lt;PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.7" /&amp;gt;
  &amp;lt;/ItemGroup&amp;gt;

&amp;lt;/Project&amp;gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cependant, il n'y aura la configuration précise d'un azure fonction, pourtant, on va faire des petites modifications afin de lui donner la fonctionnalité. Pour faire cela, il n'est que nécessaire de changer et ajouter quelques lignes de code :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;Project Sdk="Microsoft.NET.Sdk"&amp;gt;

  &amp;lt;PropertyGroup&amp;gt;
    &amp;lt;TargetFramework&amp;gt;netcoreapp3.1&amp;lt;/TargetFramework&amp;gt;
    &amp;lt;AzureFunctionsVersion&amp;gt;v2&amp;lt;/AzureFunctionsVersion&amp;gt;
  &amp;lt;/PropertyGroup&amp;gt;

  &amp;lt;ItemGroup&amp;gt;
    &amp;lt;Compile Include="HelloFunc.fs" /&amp;gt;
  &amp;lt;/ItemGroup&amp;gt;

  &amp;lt;ItemGroup&amp;gt;
    &amp;lt;PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.7" /&amp;gt;
  &amp;lt;/ItemGroup&amp;gt;

  &amp;lt;ItemGroup&amp;gt;
    &amp;lt;Content Include="host.json"&amp;gt;
      &amp;lt;CopyToOutputDirectory&amp;gt;PreserveNewest&amp;lt;/CopyToOutputDirectory&amp;gt;
    &amp;lt;/Content&amp;gt;
    &amp;lt;Content Include="local.settings.json"&amp;gt;
      &amp;lt;CopyToOutputDirectory&amp;gt;PreserveNewest&amp;lt;/CopyToOutputDirectory&amp;gt;
      &amp;lt;CopyToPublishDirectory&amp;gt;Never&amp;lt;/CopyToPublishDirectory&amp;gt;
    &amp;lt;/Content&amp;gt;
  &amp;lt;/ItemGroup&amp;gt;

&amp;lt;/Project&amp;gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Après d'avoir changé le contenu de fichier &lt;strong&gt;fsproj&lt;/strong&gt;, on va créer le fichier &lt;strong&gt;HelloFunc.fs&lt;/strong&gt;, puis on va passer l'exemple avec C# à F#. Ici le code C#:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.IO&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.Threading.Tasks&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Microsoft.AspNetCore.Mvc&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Microsoft.Azure.WebJobs&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Microsoft.Azure.WebJobs.Extensions.Http&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Microsoft.AspNetCore.Http&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Microsoft.Extensions.Logging&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Newtonsoft.Json&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;namespace&lt;/span&gt; &lt;span class="nn"&gt;FunctionApp1&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Function1&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nf"&gt;FunctionName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Function1"&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="n"&gt;Task&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;IActionResult&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;Run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nf"&gt;HttpTrigger&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;AuthorizationLevel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Anonymous&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"get"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"post"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Route&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt; &lt;span class="n"&gt;HttpRequest&lt;/span&gt; &lt;span class="n"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;ILogger&lt;/span&gt; &lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;LogInformation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"C# HTTP trigger function processed a request."&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

            &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Query&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

            &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;requestBody&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;StreamReader&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Body&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;ReadToEndAsync&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
            &lt;span class="kt"&gt;dynamic&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;JsonConvert&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;DeserializeObject&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;requestBody&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="p"&gt;??&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="p"&gt;!=&lt;/span&gt; &lt;span class="k"&gt;null&lt;/span&gt;
                &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ActionResult&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;OkObjectResult&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;$"Hello, &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;BadRequestObjectResult&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Please pass a name on the query string or in the request body"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Maintenant, on va convertir ça. Ici le code transformé:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;namespace HelloDevTo

open System
open Microsoft.AspNetCore.Mvc
open Microsoft.Azure.WebJobs
open Microsoft.Azure.WebJobs.Extensions.Http
open Microsoft.AspNetCore.Http
open Microsoft.Extensions.Logging
open Newtonsoft.Json
open System.IO

module HelloFunction =
    // Define a nullable container to deserialize into.
    [&amp;lt;AllowNullLiteral&amp;gt;]
    type NameContainer() =
        member val Name = "" with get, set

    // For convenience, it's better to have a central place for the literal.
    [&amp;lt;Literal&amp;gt;]
    let Name = "name"

    // Nombre de la funcion
    [&amp;lt;FunctionName("HelloFunction")&amp;gt;]
    // Nivel de Autorizacion para consumir la funcion, la cambiamos a Anonymous ya que para este ejemplo no requerimos nada de seguridad
    // Tambien que metodos HTTP acepta
    // Route nos permite customizar el nombre de salida al publicar la funcion
    let Run([&amp;lt;HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)&amp;gt;] req : HttpRequest, log: ILogger) =
        async {
            log.LogInformation("F# HTTP trigger function processed a request.")

            let nameOpt = 
                if req.Query.ContainsKey(Name) then
                    Some(req.Query.[Name].[0])
                else
                    None

            use stream = new StreamReader(req.Body)
            let! reqBody = stream.ReadToEndAsync() |&amp;gt; Async.AwaitTask

            let data = JsonConvert.DeserializeObject&amp;lt;NameContainer&amp;gt;(reqBody)

            let name =
                match nameOpt with
                | Some n -&amp;gt; n
                | None -&amp;gt;
                   match data with
                   | null -&amp;gt; ""
                   | nc -&amp;gt; nc.Name

            let responseMessage =             
                if (String.IsNullOrWhiteSpace(name)) then
                    "Please pass a name on the query string or in the request body"
                else
                    $"Hello, {name}"

            return OkObjectResult(responseMessage) :&amp;gt; IActionResult
        } |&amp;gt; Async.StartAsTask

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ensuite en utilisant la terminal, on exécute &lt;code&gt;func start --verbose&lt;/code&gt;, ça va lancer la fonctionne dans notre environnement local et nous recevrons un lien avec lequel on peut tester, dans mon cas, j'utilisais curl pour y tester.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;darkhero&amp;gt; curl http://localhost:7071/api/HelloFunction
Please pass a name on the query string or &lt;span class="k"&gt;in &lt;/span&gt;the request body
darkhero&amp;gt; curl http://localhost:7071/api/HelloFunction?name&lt;span class="o"&gt;=&lt;/span&gt;DevTo
Hello, DevTo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Voilà, on a un Azure Fonction qui utilise F# comme langue de programmation. Aussi il est possible de travailler avec Azure Fonction d'une autre manière plus simple, cependant, dans cet article, on verra seulement ce premier essai. &lt;/p&gt;

&lt;p&gt;En fin, j’ai fait toutes ses pas pour créer un azure fonction avec F#, tandis que la création d’une avec une autre langue de programmation va être facile puisque celle-ci est plus populaire, par exemple, quand on a installé &lt;code&gt;func&lt;/code&gt; et on voit la liste des langues supportés, on peut voir que seulement a templates pour C#, NodeJS, PowerShell et Python, même si on a besoin de travailler avec Golang, F#, Rust ou Deno, nous devons créer nos projets d’une autre façon, étant donné que Microsoft oublie parfois qu’il peut supporter des autres langues de programmation. Pour moi, ça a été amusant puisque j’ai appris beaucoup pendants les recherches. &lt;/p&gt;

</description>
      <category>azurefunctions</category>
      <category>fsharp</category>
      <category>devfr</category>
    </item>
    <item>
      <title>ZSH &amp; ASDF sur WSL2 Ubuntu</title>
      <dc:creator>Paul Arizpe</dc:creator>
      <pubDate>Tue, 30 Mar 2021 21:04:07 +0000</pubDate>
      <link>https://dev.to/kiramishima/zsh-asdf-sur-wsl2-ubuntu-1p72</link>
      <guid>https://dev.to/kiramishima/zsh-asdf-sur-wsl2-ubuntu-1p72</guid>
      <description>&lt;h3&gt;
  
  
  Contexte
&lt;/h3&gt;

&lt;p&gt;Cette histoire commence quand j'ai déçu changer la version PHP 7.4 pour la nouvelle. À la fin de 2019, je réinstallais tout mon ordinateur, ainsi j'essayais installer la version 7.4 de PHP sur WSL Ubuntu, néanmoins, cette version n'étais pas supporter dans les repositories officiels, par conséquent l'unique manière d'y avoir, c'était d'ajouter des repositories externes. Pendant 2020, la communauté PHP grâce aux efforts des développeurs avaient déçu libérer la version anticipé de PHP. J'ai déçu laisser passer puisque celle-ci ne serait pas optime pour mettre en production. Maintenant en 2021, j'ai choisi travailler avec PHP 8, malheureusement quand je voudrai l'installer, je me suis trouvé avec une grand erreur: je ne peux pas installer puisque je travail avec d'autres langues de programmation et ils choquent entre eux, donc je ne peux pas installer la dernière version de PHP, alors j'ai déçu d'effacer tout mon environnement de développe.&lt;/p&gt;

&lt;h2&gt;
  
  
  (Ré)Installation et requis
&lt;/h2&gt;

&lt;p&gt;Avec de commencer avec l'installation, on doit compter avec les suivantes requis:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Système Opérative de votre préférence: Linux, Windows ou Mac. (Dans mon cas, j'utiliserais Windows avec WSL où j'installais Ubuntu 20.04)&lt;/li&gt;
&lt;li&gt;Une connexion Internet puisqu'on va télécharger le logiciel :P &lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  zsh , oh-my-zsh et zinit
&lt;/h4&gt;

&lt;p&gt;Premièrement, on va ouvrir une fenêtre de Terminal, après on va écrire le suivante commande:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;(&lt;/span&gt;darkhero&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;span class="o"&gt;(&lt;/span&gt;darkhero&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;apt upgrade
&lt;span class="o"&gt;(&lt;/span&gt;darkhero&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; curl git zsh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Pour MacOS, on doit installer &lt;a href="https://brew.sh/index_fr"&gt;Homebrew&lt;/a&gt; pour pouvoir installer zsh sur l'ordinateur MacOS &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;D'après on va installer &lt;a href="https://github.com/ohmyzsh/ohmyzsh"&gt;oh-my-zsh&lt;/a&gt; qui va donner des nouveaux fonctionnalités à notre Terminal, pour y installer, on va exécuter:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;darkhero&amp;gt; sh &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ensuite on va installer les plugins nécessaires en utilisant zinit, pourtant, il est aussi nécessaire d'installer &lt;a href="https://github.com/zdharma/zinit"&gt;znit&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;darkhero&amp;gt; sh &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/zdharma/zinit/master/doc/install.sh&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Après on doit modifier le fichier &lt;code&gt;.zshrc&lt;/code&gt; et ajouter à la fin du fichier le suivante code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;zinit light zdharma/fast-syntax-highlighting
zinit light zsh-users/zsh-autosuggestions
zinit light zsh-users/zsh-completions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  &lt;a href="https://asdf-vm.com/"&gt;ASDF&lt;/a&gt; &amp;amp; PHP
&lt;/h4&gt;

&lt;p&gt;Pour ajouter &lt;code&gt;asdf&lt;/code&gt; dans notre environnement de développe, il est nécessaire d'exécuter:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/asdf-vm/asdf.git ~/.asdf &lt;span class="nt"&gt;--branch&lt;/span&gt; v0.8.0

&lt;span class="c"&gt;# Pour les utilisateurs MacOS, on utilise `brew install asdf`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;D'après on ajoute l'&lt;code&gt;asdf&lt;/code&gt; au &lt;code&gt;zsh&lt;/code&gt; en modifiant le fichier &lt;code&gt;.zshrc&lt;/code&gt;, ainsi on en ajoute à la fin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;. $HOME/.asdf/asdf.sh
. $HOME/.asdf/completions/asdf.bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Maintenant on a &lt;code&gt;asdf&lt;/code&gt; et &lt;code&gt;zsh&lt;/code&gt; courant sur notre terminal, pourtant, on va installer notre première langue de programmation, ainsi PHP sera l'élu pour cette tache, puisque comment j'avais dit, j'ai besoin d'installer la version 8.&lt;/p&gt;

&lt;p&gt;Pour installer PHP, il est nécessaire de chercher le plugin, d'ajouter le plugin et d'installer les requis. Grace au travail de la communauté asdf, c'est facile de trouver le plugin &lt;a href="https://github.com/asdf-community/asdf-php"&gt;PHP&lt;/a&gt;. Néanmoins, il est nécessaire d'installer les requis qui sont:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Linux Ubuntu/Debian&lt;/span&gt;
darkhero&amp;gt; apt-get update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; apt-get &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; autoconf bison build-essential curl gettext git libgd-dev libcurl4-openssl-dev libedit-dev libicu-dev libjpeg-dev libmysqlclient-dev libonig-dev libpng-dev libpq-dev libreadline-dev libsqlite3-dev libssl-dev libxml2-dev libzip-dev openssl pkg-config re2c zlib1g-dev

&lt;span class="c"&gt;# MacOS&lt;/span&gt;
darkhero&amp;gt; brew &lt;span class="nb"&gt;install &lt;/span&gt;autoconf automake bison freetype gd gettext icu4c krb5 libedit libiconv libjpeg libpng libxml2 libzip pkg-config re2c zlib
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Si toute se bien installait , il serait temps d'installer PHP en utilisant la commande &lt;code&gt;asdf install &amp;lt;langue de programmation&amp;gt; &amp;lt;version&amp;gt;&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;darkhero&amp;gt; asdf &lt;span class="nb"&gt;install &lt;/span&gt;php 8.0.3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Une fois que asdf termine d'installer PHP, si on vérifie la version avec &lt;code&gt;php -v&lt;/code&gt;, il est possible de voir le message:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;darkhero&amp;gt;php-v
No version set for command php
Consider adding one of the following versions in your config file at php 8.0.3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Alors, on doit ajouter au fichier &lt;code&gt;.tool-versions&lt;/code&gt; le ligne &lt;code&gt;php 8.0.3&lt;/code&gt; et après si on exécute &lt;code&gt;php -v&lt;/code&gt; on peut voir correctement la version PHP.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Le fichier &lt;code&gt;.tool-versions&lt;/code&gt; parfois n'a pas été crée, alors nous devons le créer.&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;PHP 8.0.3 &lt;span class="o"&gt;(&lt;/span&gt;cli&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;built: Mar 29 2021 12:57:13&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt; NTS &lt;span class="o"&gt;)&lt;/span&gt;
Copyright &lt;span class="o"&gt;(&lt;/span&gt;c&lt;span class="o"&gt;)&lt;/span&gt; The PHP Group
Zend Engine v4.0.3, Copyright &lt;span class="o"&gt;(&lt;/span&gt;c&lt;span class="o"&gt;)&lt;/span&gt; Zend Technologies
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bref, l'installation d'asdf a été bien reçu, étant donné que je travaille avec différents langues de programmation comme Golang, C#/F#, Python, NodeJS, Elixir, etc. Toutefois, j'installe chaque langue de programmation individuellement, par conséquent je trouve des problèmes pendant tout le processus, néanmoins, asdf permets gérer toutes les langues et leurs versions, ainsi c'est facile de tester les nouvelles versions sans modifier votre environnement de développe. Finalement, je vous laisse la vidéo où je fais toutes les pas de cet article.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/sL-nGD8behg"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>zsh</category>
      <category>wsl2</category>
      <category>asdf</category>
      <category>php</category>
    </item>
    <item>
      <title>&gt; echo "Hello Dev.to"</title>
      <dc:creator>Paul Arizpe</dc:creator>
      <pubDate>Mon, 22 Jun 2020 20:46:50 +0000</pubDate>
      <link>https://dev.to/kiramishima/echo-hello-dev-to-27ek</link>
      <guid>https://dev.to/kiramishima/echo-hello-dev-to-27ek</guid>
      <description>&lt;p&gt;Premièrement, celui-ci est mon premier article sur la plateforme &lt;code&gt;Dev.to&lt;/code&gt;. Avant j'avais écrit sur jeux vidéos mais après je décide écrire sur la programmation dans la plateforme de &lt;code&gt;Medium&lt;/code&gt; dont parfois j'écrit. J'ai profité écrire des jeux vidéos longtemps parce que je les aimes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_UqKNhku--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/02taqu5pcct8s1fbyq5d.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_UqKNhku--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/02taqu5pcct8s1fbyq5d.jpg" alt="Alt Text" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Après de cette petite introduction, je m'appelle Paul Arizpe mais tout le monde me connais comment "Kira Mishima"(mon nom d'utilisateur de &lt;a href="https://github.com/kiramishima"&gt;Github&lt;/a&gt; ). J'ai étudié à l'université de Puebla après j'ai pris différents cours pour mettre à jour mes connaissances. Je suis Backend Développeur donc j'utilise principalement les langues de programmation &lt;code&gt;PHP&lt;/code&gt; , &lt;code&gt;C#&lt;/code&gt; , &lt;code&gt;Golang&lt;/code&gt; , &lt;code&gt;NodeJS&lt;/code&gt; et parfois &lt;code&gt;Python&lt;/code&gt;, &lt;code&gt;F#&lt;/code&gt; et &lt;code&gt;Elixir&lt;/code&gt;. Parfois je program le frontend en utilisant &lt;code&gt;Angular X&lt;/code&gt; ou &lt;code&gt;Vue&lt;/code&gt;. Il est rare que je fasse le rôle de DevOps dans lequel j'utilise &lt;code&gt;Ansible&lt;/code&gt;, &lt;code&gt;AWS CLI&lt;/code&gt;, &lt;code&gt;Azure CLI&lt;/code&gt; et &lt;code&gt;Bash&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vedFqjAZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/lhncd9f7g9zuvwknhxed.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vedFqjAZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/lhncd9f7g9zuvwknhxed.jpg" alt="Alt Text" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;De temps en temps je participe aux Hackathons avec amis et amies dont on y utilise nos connaissances de programmation. Sous le prétexte d'aller manger pizza, je les amène aux évènements. Ainsi je suis le gars qui a changé un Backend complet fait en Java à Golang en 3hrs dans un Hackathon.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--USqtubNt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/3cclz6zf0kbn6w36cyy6.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--USqtubNt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/3cclz6zf0kbn6w36cyy6.jpg" alt="Alt Text" width="800" height="794"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Maintenant j'étude à l'Alliance Française au Mexique donc un jour après du confinement, j'aimerais travailler en France ou Canada. Parfois j'ai fait de directs sur &lt;a href="https://www.twitch.tv/kiramishima"&gt;Twitch&lt;/a&gt; et &lt;a href="https://www.facebook.com/TheKiraMishima/?modal=admin_todo_tour"&gt;FB Gaming&lt;/a&gt; où j'enseigne les choses que j'ai appris. Finalement je vous remercie pour lire cette petite introduction et j'espèrerait écrire le plus tôt possible.&lt;/p&gt;

</description>
      <category>hellodevto</category>
      <category>fr</category>
    </item>
  </channel>
</rss>
