<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Nodejs on Laïla Atrmouh</title>
    <link>/fr/tags/nodejs/</link>
    <description>Recent content in Nodejs on Laïla Atrmouh</description>
    <generator>Hugo</generator>
    <language>fr</language>
    <copyright>&lt;a href=&#34;https://creativecommons.org/licenses/by-nc/4.0/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;CC BY-NC 4.0&lt;/a&gt;</copyright>
    <lastBuildDate>Mon, 27 Jul 2026 15:21:00 +0000</lastBuildDate>
    <atom:link href="/fr/tags/nodejs/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Migrer une application React vers TypeScript avec un agent IA</title>
      <link>/fr/posts/2026/07/migrer-une-application-react-vers-typescript-avec-un-agent-ia/</link>
      <pubDate>Mon, 27 Jul 2026 15:21:00 +0000</pubDate>
      <guid>/fr/posts/2026/07/migrer-une-application-react-vers-typescript-avec-un-agent-ia/</guid>
      <description>&lt;p&gt;Il y a quelques années, j&amp;rsquo;ai commencé un projet pour un praticien en acupuncture qui souhaitait pouvoir suivre ses patient(e)s sur une application hébergée sur son serveur et garder le contrôle de ses données.&lt;/p&gt;&#xA;&lt;p&gt;Sur l&amp;rsquo;application, différents cas d&amp;rsquo;usage existent. Un praticien peut :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;enregistrer une nouvelle personne qui vient le consulter ainsi que sa séance&lt;/li&gt;&#xA;&lt;li&gt;accéder à l&amp;rsquo;historique des séances pour une personne&lt;/li&gt;&#xA;&lt;li&gt;saisir ses dépenses pour son cabinet&lt;/li&gt;&#xA;&lt;li&gt;suivre ses revenus&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;On l&amp;rsquo;a ouvert à d&amp;rsquo;autres praticien·ne·s : c&amp;rsquo;est devenu un vrai produit utilisé au quotidien par un petit nombre de personnes ! J&amp;rsquo;y ai accumulé de la dette technique, et un de mes gros sujets de 2025 était &lt;strong&gt;de migrer le projet vers TypeScript&lt;/strong&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>TIL 8 - Opérateur PHP, TypeScript et autres découvertes</title>
      <link>/fr/posts/2026/04/til-8-op%C3%A9rateur-php-typescript-et-autres-d%C3%A9couvertes/</link>
      <pubDate>Wed, 29 Apr 2026 15:21:00 +0000</pubDate>
      <guid>/fr/posts/2026/04/til-8-op%C3%A9rateur-php-typescript-et-autres-d%C3%A9couvertes/</guid>
      <description>&lt;p&gt;Voici quelques découvertes du mois que j&amp;rsquo;ai pris le temps de compiler dans un article !&lt;/p&gt;&#xA;&lt;h2 id=&#34;php&#34;&gt;PHP&lt;/h2&gt;&#xA;&lt;h3 id=&#34;match&#34;&gt;match&lt;/h3&gt;&#xA;&lt;p&gt;&lt;code&gt;match&lt;/code&gt;, un opérateur qui n&amp;rsquo;existe que depuis PHP 8.1 et que je n&amp;rsquo;avais encore jamais utilisé. Il sert à évaluer une valeur et à retourner directement un résultat, comme un &lt;code&gt;switch&lt;/code&gt; mais en plus concis.&lt;/p&gt;&#xA;&lt;p&gt;Avant, avec un &lt;code&gt;switch&lt;/code&gt; :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;switch&lt;/span&gt; ($invoice&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;getPaymentMode&lt;/span&gt;()) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;PaymentMode&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;CB&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        $payment_mode &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Carte bancaire&amp;#34;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;break&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;PaymentMode&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;CHEQUE&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        $payment_mode &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Chèque&amp;#34;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;break&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;PaymentMode&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;ESPECES&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        $payment_mode &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Espèces&amp;#34;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;break&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;PaymentMode&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;VIREMENT&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        $payment_mode &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Virement&amp;#34;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;break&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;PaymentMode&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;LYDIA&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        $payment_mode &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Lydia&amp;#34;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;break&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Après, avec &lt;code&gt;match&lt;/code&gt; :&lt;/p&gt;</description>
    </item>
    <item>
      <title>Débuter avec Node.js</title>
      <link>/fr/posts/2016/01/d%C3%A9buter-avec-node.js/</link>
      <pubDate>Sun, 10 Jan 2016 16:46:02 +0000</pubDate>
      <guid>/fr/posts/2016/01/d%C3%A9buter-avec-node.js/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;👴 &lt;em&gt;Attention&lt;/em&gt; Cet article a quelques années et n&amp;rsquo;est peut-être plus à jour !&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;J’ai profité de cet après-midi pluvieux pour me familiariser avec Node.js grâce à &lt;a href=&#34;https://openclassrooms.com/courses/des-applications-ultra-rapides-avec-node-js&#34;&gt;l’excellent cours de Mathieu Nebra sur Open Classrooms&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Ce que je retiens de ces quelques heures de bachotage (pas encore poussé mon application) :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Javascript qui s’exécute côté serveur&lt;/li&gt;&#xA;&lt;li&gt;Force du language: la gestion d’événements côté serveur et sa rapidité&lt;/li&gt;&#xA;&lt;li&gt;NPM est un outil puissant pour la gestion des dépendances&lt;/li&gt;&#xA;&lt;li&gt;Nécessite une bonne connaissance de Javascript (Closures, callbacks, prototypes).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;quelques-outils-donnés-sur-le-tutoriel-bien-pratiques&#34;&gt;Quelques outils donnés sur le tutoriel bien pratiques&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://browsenpm.org/package.json&#34;&gt;http://browsenpm.org/package.json&lt;/a&gt;&#xA;Récapitulatif des attributs que l’on peut préciser dans son fichier de dépendances&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
