<?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: Akecel </title>
    <description>The latest articles on DEV Community by Akecel  (@akecel).</description>
    <link>https://dev.to/akecel</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%2F102435%2F7f055378-b5c9-400e-8f1b-3cfcfca61a67.jpg</url>
      <title>DEV Community: Akecel </title>
      <link>https://dev.to/akecel</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/akecel"/>
    <language>en</language>
    <item>
      <title>Commenter son code, c’est douter de son talent ?</title>
      <dc:creator>Akecel </dc:creator>
      <pubDate>Thu, 01 Oct 2020 12:55:37 +0000</pubDate>
      <link>https://dev.to/akecel/commenter-son-code-c-est-douter-de-son-talent-5e5j</link>
      <guid>https://dev.to/akecel/commenter-son-code-c-est-douter-de-son-talent-5e5j</guid>
      <description>

&lt;p&gt;Quand j’ai commencé à coder sérieusement en voulant en faire mon métier &lt;em&gt;(et c’était y’a pas si longtemps)&lt;/em&gt; le monde du développement était bien différent, mais une chose, essentielle et commune à tous les langages était déjà présente, et ce depuis bien longtemps. &lt;strong&gt;Les commentaires.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;Évidemment commenter son code c’est essentiel, du moins c’est ce qu’on nous rabâche très rapidement quand on commence à créé de réelles applications. Si chaque développeur gagnait un euro à chaque fois qu’on lui parle de commentaires, il n’y en aurait sûrement plus beaucoup en activité… &lt;strong&gt;(de développeurs j’entends)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Et bien sûr, au bout de quelques temps on comprend facilement leur intérêt et lors de nos premières code legacy, on les vénères. Mais il me semble important de revenir dessus et d’expliquer à quoi ils servent réellement, comment on doit les utiliser mais aussi pourquoi ils peuvent poser problème.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pourquoi faire ?
&lt;/h2&gt;

&lt;p&gt;C’est bateau mais oui les commentaires ont une utilité et il est important pour la suite de revenir dessus et d’essayer de ne rien oublier, et avec un peu de chance tu apprendras peut-être quelque chose.&lt;/p&gt;

&lt;p&gt;Tout d’abord, le caractère &lt;strong&gt;informatif&lt;/strong&gt;. Pour être totalement honnête c’est clairement sa seule utilité, donner des informations. Mais c’est la que le champs des possibles s’élargit. Pour qui ou quoi es-ce informatifs ? Et surtout quelles sont ces informations ?&lt;/p&gt;

&lt;p&gt;On va commencer simple, les &lt;strong&gt;informations pour les développeurs&lt;/strong&gt;, que ce soit toi dans un an ou n’importe quel autres dev qui doit intervenir sur ton code quelques temps plus tard.&lt;/p&gt;

&lt;p&gt;On peut y retrouver de nombreuses informations différentes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Auteur du fichier&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Âge du fichier&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Le copyright&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;L’utilité d’une classe&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;La version d’une classe&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Le fonctionnement d’une méthode&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Des précisions sur des choix de développement&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Etc …&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bien sûr c’est non exhaustif et il est en vérité totalement possible d’écrire à peu près ce que tu veux tant que ça a une importance.&lt;/p&gt;

&lt;p&gt;Mais c’est pas tout, ces mêmes informations peuvent servir à quelqu’un d’autre, enfin non ça reste utile à un développeur mais par un autre biais.. &lt;strong&gt;La documentation et la couverture de code.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Grâce à ces mêmes commentaires il est possible, comme je l’ai dit, de stipuler des informations sur des classes ou des méthodes qui peuvent être réutilisées par des scripts pour générer automatiquement des documentations complètes de ton application (PhpDoc, JsDoc, JavaDoc etc).&lt;/p&gt;

&lt;p&gt;En plus de donner une information directe au développeur qui lit ton code, ta documentation offre &lt;strong&gt;une vision générale de l’application&lt;/strong&gt;. Il est par exemple possible de préciser quels paramètres prend ta méthode en entrée et ce qu’on attend en sortie.&lt;/p&gt;

&lt;p&gt;Ensuite viens les &lt;strong&gt;tests&lt;/strong&gt;, on en entend parler autant voir plus que les commentaires et pour cause c’est &lt;strong&gt;super important&lt;/strong&gt; &lt;em&gt;(on y reviendra sûrement un jour)&lt;/em&gt; Et de la est née un besoin, la couverture de code. Cela permet de savoir à quel point ton application est testé, et pour cela il existe des scripts. Et encore une fois ces scripts on besoin de…..? &lt;strong&gt;COMMENTAIRES.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Bravo au deux au premier rang qui lisent encore.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Pour résumer, tes commentaires peuvent te servir à toi, aux développeurs qui viendront après, à créé une documentation complète et aussi à vérifier à quel point ton code est testé ou non (et donc prouver la viabilité à long terme de ton application).&lt;/p&gt;

&lt;p&gt;Je pense qu’a ce niveau, et si ce n’était pas encore le cas. Tu es convaincu de l’utilité de commenter son code.&lt;/p&gt;

&lt;p&gt;Mais du coup, es-ce qu’il y a une bonne façon de commenter ?&lt;/p&gt;

&lt;h2&gt;
  
  
  Comment faire ?
&lt;/h2&gt;

&lt;p&gt;Pour répondre à ta super question. &lt;strong&gt;Oui, il y à de bonnes pratiques&lt;/strong&gt;. Il existe plusieurs “types” de commentaires se différencient par leur place dans le fichier et par les informations qu’ils contiennent.&lt;/p&gt;

&lt;p&gt;Faisons une petite liste avec des exemples :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Le commentaire de fichier :&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Il sert à stipuler les informations générales du fichier, son auteur ou son nom par exemple.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cm"&gt;/*
 * UserController.php
 *
 * @author Axel.
 */&lt;/span&gt;

&lt;span class="kn"&gt;namespace&lt;/span&gt; &lt;span class="nn"&gt;App\Http\Controllers\Api\User&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;App\Http\Controllers&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;UserController&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;ApiController&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

&lt;span class="mf"&gt;....&lt;/span&gt;

&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Le commentaire de classe :&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Les informations propres à une classe, son utilité et pourquoi pas d’autres informations comme sa version d’implémentation, le développeur en charge de son développement etc …&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cm"&gt;/*
 * Logique controller des utlisateur
 * 
 * @class UserController
 * @since 3.1
 */&lt;/span&gt;
&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;UserController&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;ApiController&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

&lt;span class="mf"&gt;....&lt;/span&gt;

&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Le commentaire de méthode :&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tout ce qui concerne une méthode, son fonctionnement, son utilité, ses paramètres etc …&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt; &lt;span class="cd"&gt;/**
  * Afficher la liste des utilisateur.
  * @param  \Illuminate\Http\Request  $request
  * @param  App\Models\User $user
  * @return \Illuminate\Http\Response
  */&lt;/span&gt;

  &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;Request&lt;/span&gt; &lt;span class="nv"&gt;$request&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;User&lt;/span&gt; &lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="mf"&gt;...&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Le commentaire de précision :&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ce sont les petits commentaires, directement écrit à l’intérieur du code, servant à justifier un choix ou à apporter des précisions sur un bout de code en particulier.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;Request&lt;/span&gt; &lt;span class="nv"&gt;$request&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;User&lt;/span&gt; &lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  
  &lt;span class="c1"&gt;// On autorise cette méthode qu'au token administrateur&lt;/span&gt;
  &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;authorize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'adminManage'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;  
  &lt;span class="c1"&gt;// On récupère la collection d'utilisateurs avec les paramètres&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;UserCollection&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;User&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;with&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;withs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;get&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 sur, ce ne sont que des exemples, rien est vraiment gravé dans le marbre et les syntaxes et l’utilisation de ces différents commentaires peuvent varier selon le langage ou l’équipe dans laquelle tu bosse.&lt;/p&gt;

&lt;h2&gt;
  
  
  Que des avantages ?
&lt;/h2&gt;

&lt;p&gt;Jusqu’ici on pourrait se dire que les commentaires, en plus d’être utiles et presque indispensables n’ont que des avantages, mais il n’en ai rien.&lt;/p&gt;

&lt;p&gt;Il existe bien des &lt;strong&gt;inconvénients&lt;/strong&gt;. De nombreux même, et c’est bien normal, plus un outil semble indispensable plus il est utilisé, parfois bien, et &lt;strong&gt;parfois mal&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Quand on y réfléchit un peu plus longuement, on se rend vite compte que de nombreux commentaires sont souvent facultatifs, ceux de “précisions” par exemple : Ils sont, la plupart du temps, un aveux de faiblesse.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“Mon code n’est pas très clair, je dois le commenter”&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Être conscient des problèmes de son code est une première étape, reste ensuite à apprendre comment &lt;strong&gt;nettoyer son code&lt;/strong&gt;, le rendre plus lisible et parfois sacrifier la facilité pour la &lt;strong&gt;maintenabilité&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Regarde les commentaires de précision que je t’ai donné en exemple tout à l’heure :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;Request&lt;/span&gt; &lt;span class="nv"&gt;$request&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;User&lt;/span&gt; &lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  
  &lt;span class="c1"&gt;// On autorise cette méthode qu'au token administrateur&lt;/span&gt;
  &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;authorize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'adminManage'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;  
  &lt;span class="c1"&gt;// On récupère la collection d'utilisateurs avec les paramètres&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;UserCollection&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;User&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;with&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;withs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;get&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;Sont-ils réellement utiles ? Qu’elles informations apportent-ils que le code ne contient pas déjà ?&lt;/p&gt;

&lt;p&gt;De plus, avec les documentations auto-générées et la couverture de code, on se retrouve très souvent avec des commentaires qui n’ont pas d’autre utilité que celle là, qui prennent parfois plus de place que le code lui même et qui rendent le &lt;strong&gt;code illisible&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Il faut donc apprendre à différencier un bon, d’un mauvais commentaire, savoir jauger la pertinence de certains et le superflus d’autres. Et surtout il faut être conscient de ces problématiques.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bref, si le code parfait existait, il n’aurait pas besoin d’être commenté, et le commentaire parfait, lui, est celui qui n’a pas besoin d’être écrit.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Mais c’est pas non plus une raison pour pas commenter ton code compris ?&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>tips</category>
      <category>beginners</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>La solitude des devs PHP dans les écoles du Web</title>
      <dc:creator>Akecel </dc:creator>
      <pubDate>Thu, 01 Oct 2020 12:55:28 +0000</pubDate>
      <link>https://dev.to/akecel/la-solitude-des-devs-php-dans-les-ecoles-du-web-21po</link>
      <guid>https://dev.to/akecel/la-solitude-des-devs-php-dans-les-ecoles-du-web-21po</guid>
      <description>

&lt;p&gt;Vois-tu, j’entre cette année en 1ere année de Master. J’ai donc derrière moi, trois années d’études dans le milieu de l’informatique, de la programmation et du web. Et… forcé de constater, dans certaines formations, le PHP est aujourd’hui fortement délaissé au dépend de JavaScript et de ces différentes utilisations.&lt;/p&gt;




&lt;p&gt;Évidemment ce n’est pas une généralité, d’ailleurs c’est uniquement dans les formations privées que c’est le cas, mais bien sûr ce sont en général les formations les plus professionnalisante. Au contraire dans l’enseignement public, en BTS, DUT ou en Licence, le PHP garde bonne réputation et sert encore aujourd’hui de &lt;em&gt;“premier langage de programmation web”&lt;/em&gt; pour les futurs développeurs.&lt;/p&gt;

&lt;p&gt;Cela m’a fait donc me poser de nombreuses questions à ce propos… Et si tu te les poses aussi, &lt;strong&gt;je vais essayer d’y répondre.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  L’effet de mode
&lt;/h2&gt;

&lt;p&gt;Évidemment quand on parle de &lt;strong&gt;Node.js&lt;/strong&gt; on est obligé de parler de son explosion, cette technologie est passée, en 10 ans, d’inexistante aux &lt;em&gt;“Must Know”&lt;/em&gt; du développeur branché. Bon je ne vais pas être de mauvaise fois, il y a des raisons et Node à ces avantages mais est-ce que cela justifie un tel engouement ? (Oui surement).&lt;/p&gt;

&lt;p&gt;Le point intéressant pour notre sujet c’est, je pense, que Node.js a très rapidement eu une réputation de technologie &lt;em&gt;“Cool et moderne”&lt;/em&gt;. De là , toute &lt;strong&gt;Startup&lt;/strong&gt; ou agence se lançant sur le marché et qui avait besoin de montrer qu’elle était &lt;em&gt;“jeune et dynamique”&lt;/em&gt; se lançait directement sur Node.js (en fait Macron c’est un président asynchrone?).&lt;/p&gt;

&lt;p&gt;Attention, ne me fais pas dire ce que j’ai pas dit, Node est très performant et il a ses avantages, ses cas d’utilisations, comme toutes les technologie et les langages. Mais je suis persuadé que de nombreuses jeunes boites ont décidées assez arbitrairement de construire leur stack autour de Node.&lt;/p&gt;

&lt;p&gt;Évidement les développeurs eux même ont suivis cette mode. À cette époque je codais mes toutes premières lignes en C++ donc j’étais encore loin du Web…&lt;/p&gt;

&lt;p&gt;Mais j’imagine que n’importe quel développeur, voyant cette chimère permettant de faire du &lt;strong&gt;JavaScript&lt;/strong&gt; coté serveur arrivée vers lui, s’est senti pousser des ailes et que la plupart, consciemment ou non, ont compris que cette technologie ferait partie intégrante du paysage Web dans les années futures. (Bonne pioche)&lt;/p&gt;

&lt;p&gt;On se retrouve donc avec de plus en plus de développeurs curieux face à une nouvelle technologie et un marché de l’emploi ou Node fleurit comme les marguerites dans le jardin de ma grand mère...&lt;/p&gt;

&lt;h2&gt;
  
  
  S’adapter au marché
&lt;/h2&gt;

&lt;p&gt;Et c’est &lt;strong&gt;LÀ&lt;/strong&gt; qu’entre en jeux &lt;strong&gt;les écoles du Web&lt;/strong&gt;. Pour n’importe qu’elle école spécialisée dans le Web, son but c’est de faire de &lt;strong&gt;l’argent&lt;/strong&gt;. On va pas se mentir hein, je citerai aucun nom et je critiquerai même pas ce système car il ne me choque pas vraiment. Car justement, pour faire beaucoup d’argent, il doivent forger de &lt;strong&gt;bons développeurs&lt;/strong&gt;, de bons développeurs qui rendront heureux les employeurs qui eux même donneront de la valeur aux diplômes et surtout à l’école.&lt;/p&gt;

&lt;p&gt;Et donc pour ça, ces écoles doivent &lt;strong&gt;s’adapter au marché&lt;/strong&gt;. Chose évidement très complexe dans un monde ou le Web est plus indécis qu’un chat devant une porte.&lt;/p&gt;

&lt;p&gt;Mais en vérité elles s’en sortent pas trop mal, mais cela à des conséquences et suivre “la tendance générale” est toujours plus simple que d’adapter un programme de trois ans chaque années en fonction des fluctuations du marché.&lt;/p&gt;

&lt;p&gt;Du coup, dans la plupart de ces formations on se retrouve avec &lt;strong&gt;quelques cours&lt;/strong&gt; de PHP, un peu forcés, souvent &lt;em&gt;“bourre crane”&lt;/em&gt; et qui arrivent rarement à trouver leur public malgré la forte présence de PHP sur le marché. Puis viens ensuite des cours de &lt;em&gt;JavaScript, de React, d'Angular, de Node.js&lt;/em&gt; et là, les futurs développeurs y voit une échappatoire au PHP. On se retrouve donc avec 3/4 des dev des promotions spécialisés en JS, front ou back et avec un tout petit échantillon préférant le PHP et se faisant honteusement discriminer par les autres (non, j’ai absolument aucun traumatisme)&lt;/p&gt;

&lt;p&gt;De toutes ces choses nait un triptyque infernal provoquant lui même un cercle vicieux :&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Le marché recherche du JS alors les écoles forment du JS donc les Dev pensent que le JS est indispensable et donc lancent des entreprises et recherchent du JS.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Et le public dans tout ça ?
&lt;/h2&gt;

&lt;p&gt;À vrai dire, je ne sais pas réellement pourquoi les formations publiques insistent moins sur le &lt;strong&gt;JavaScript&lt;/strong&gt; que les privées. On pourrait facilement penser que c’est car les programmes sont réalisés par des vieux de la vieille qui sont, pour la plupart pas des développeurs mais bien des ingénieurs qui eux sont beaucoup moins enclins à suivre une tendance, du moins pas sur des laps de temps aussi court.&lt;/p&gt;

&lt;p&gt;Mais soyons honnête on ne sait pas vraiment et il est impossible de savoir aujourd’hui si c’est le &lt;strong&gt;bon choix ou non&lt;/strong&gt;. Ni même de savoir lequel des deux types de formations créera les meilleurs développeurs sur le long terme. Tout ce qui est sur, c’est que cela offre un &lt;strong&gt;éventail de possibilités&lt;/strong&gt; à l’étudiant et surtout une &lt;strong&gt;alternative&lt;/strong&gt; aux formations privées qui sont presque toujours payantes, du moins les première années (on en reparlera dans un futur article).&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;On sait que la place du JavaScript dans le marché des développeur et son expansion continuelle est du à un cercle vicieux entre les écoles, les développeurs et la mode.. Mais après tout est-ce que c’est grave ?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Non.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ce sont, je pense, deux facettes d’une même pièce et il me semble normal aujourd’hui de dire qu’une formation ne doit pas tant nous apprendre un langage ou une techno, mais bien nous apprendre des méthodologies, des bons réflexes et une gymnastique d’esprit qui permettront au développeur d’apprendre tout au long de sa carrière.&lt;/p&gt;

&lt;p&gt;Le marché changera, encore et encore. Le JavaScript sera un jour considéré comme un langage pré-historique et ce jour là quelqu’un se posera les mêmes questions que moi aujourd’hui, mais avec d’autres langages. Dans un milieu évoluant aussi vite que le notre, la véritable valeur d’un dev n’est pas le nombre de langages qu’il maitrise ni même son langage de prédilection mais plutôt sa curiosité et son envie de découvrir de nouvelles technologies.&lt;/p&gt;

&lt;p&gt;Et oui, malheureusement, on ne peut s’empêcher d’avoir un langage favori. On peut donc, comme moi, être spécialisé PHP, se retrouver entouré de développeur Javascript et donc… Se sentir un peu seul.&lt;/p&gt;

&lt;p&gt;Mais il faut rester conscient qu’aucun langage n’a réellement plus de valeur qu’un autre, ils ont tous leurs avantages, leurs inconvénients et leurs cas d’utilisations.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;La vraie force d’un dev c’est de savoir jongler avec ces langages et technologies en fonction de ses besoins, pas de connaitre sur le bout des doigts le langage le plus tendance ou le plus compliqué.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>php</category>
      <category>webschools</category>
    </item>
    <item>
      <title>La synesthésie chez les développeurs</title>
      <dc:creator>Akecel </dc:creator>
      <pubDate>Thu, 01 Oct 2020 12:55:17 +0000</pubDate>
      <link>https://dev.to/akecel/la-synesthesie-chez-les-developpeurs-44ai</link>
      <guid>https://dev.to/akecel/la-synesthesie-chez-les-developpeurs-44ai</guid>
      <description>

&lt;p&gt;Ces dernière années j’ai entendu plusieurs fois parler de synesthésie et bien que le sujet ne m’intéressait pas plus que ça, j’ai fini par tomber sur un article (que je ne retrouve plus aujourd’hui) qui traitait de ce trouble neurologique et qui m’a passionné.&lt;/p&gt;




&lt;p&gt;Je t’arrête tout de suite, &lt;strong&gt;je suis absolument pas atteint de synesthésie&lt;/strong&gt;. Du moins pas que je sache, et après avoir lu pas mal de chose sur le sujet, je pense que je le saurais.&lt;/p&gt;

&lt;p&gt;Et oui ça fait exactement 3 fois que je te cite le mots “synesthésie” mais j’ai toujours pas expliqué ce que c’était. Et si tu n’as jamais entendu parler de ça tu dois me prendre pour un sacré relou (j’adore ça), donc bref, trêve de blabla, on est partis.&lt;/p&gt;

&lt;h2&gt;
  
  
  Synesthésie
&lt;/h2&gt;

&lt;p&gt;D’après ce merveilleux outil qu’est &lt;a href="https://fr.wikipedia.org/wiki/Synesth%C3%A9sie"&gt;Wikipédia&lt;/a&gt;, la synesthésie c’est :&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“La synesthésie est un phénomène neurologique par lequel deux ou plusieurs sens sont associés de manière durable”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Alors pour une fois c’est assez clair, mais pour bien se rendre compte de la chose on va donner des exemples, il existe dans ce monde, des personne qui, quand elles voient des lettres de l’alphabet associent &lt;strong&gt;chacune de ces lettres à une couleur&lt;/strong&gt;. Effectivement pour les non-synesthètes, ça peut paraître extrêmement &lt;strong&gt;étrange&lt;/strong&gt;, et pour cause. Mais cela existe bel et bien, et c’est mine de rien assez répandu. Enfin, d’après les études, ce serait une personne sur 24 qui serait concerné (ça fait 4%), mais aujourd’hui, avec internet et les réseaux sociaux, il est beaucoup plus commun d’en entendre parler.&lt;/p&gt;

&lt;p&gt;Il y a d’ailleurs eu il n’y a pas si longtemps une vague d’articles sur la synesthésie après le buzz d’un &lt;a href="https://thumbs-prod.si-cdn.com/fe14iFI3jtg_Qm6q0Kz1wmpbZYc=/1024x596/https://public-media.smithsonianmag.com/filer/8f/57/8f57089f-5f8d-4e3d-8c58-b2d0703bce24/pylons2016.gif"&gt;gif sur twitter&lt;/a&gt; que tu as surement vu passer.&lt;/p&gt;

&lt;p&gt;À cet instant de nombreuses personnes se sont renseignées sur ce phénomène et beaucoup se sont découvert synesthète. C’est l’article de l’un d’eux qui avait piqué ma curiosité à l’époque.&lt;/p&gt;

&lt;p&gt;Ce qu’il faut bien comprendre c’est que ce fameux gif n’est pas réellement un &lt;em&gt;“test de synesthésie”&lt;/em&gt;, déjà car il existe de &lt;strong&gt;nombreuses formes différentes&lt;/strong&gt; de ce phénomène, mais aussi, et surtout, parce qu’en fait, ce &lt;a href="https://www.smithsonianmag.com/smart-news/how-can-you-hear-silent-gif-180967491/"&gt;qui se cache derrière ce gif n’est pas réellement de la synesthésie&lt;/a&gt;, mais plutôt une association d’idées mêlé à une &lt;strong&gt;dissonance sensorielle&lt;/strong&gt;, notre cerveau essai de combler un vide, tout simplement. Évidemment un synesthète entendra plus facilement le bruit, mais l’entendre de fait pas de toi un synesthète.&lt;/p&gt;

&lt;p&gt;Comme je te l’ai dit plus haut, il existe plusieurs formes de synesthésies, mais aussi plusieurs catégories :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Synesthésie bimodale :&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;C’est la synesthésie qui croise deux sens, généralement unidirectionnel, par exemple, associer une couleur à un son (mais pas l’inverse).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Synesthésie multimodale :&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La même que la bimodale sauf que cette fois-ci c’est bidirectionnel, par exemple, les formes évoquent de la musique et inversement.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Synesthésie cognitive :&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;C’est celle ci qui va nous intéresser ici. C’est aussi la plus compliquée et la plus abstraite, le type répandu est celui où une couleur est associée à une lettre. Elle est aussi appelée &lt;strong&gt;&lt;em&gt;“idéoesthésie”&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;On va s’attarder sur deux types de cette dernière catégorie, la &lt;strong&gt;synesthésie cognitive&lt;/strong&gt; et &lt;strong&gt;spatio-temporelle&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Dans ces deux types, un peu similaires, une &lt;strong&gt;carte mentale&lt;/strong&gt; entre en jeux. D’un côté pour les nombres et l’autre pour le temps. Que ce soit un repère orthonormé pour se représenter les nombres ou bien un ruban pour “voir” le temps. On se retrouve ici avec une projection mentale pour se représenter quelque chose d’abstrait au premier abord mais de profondément factuel.&lt;/p&gt;

&lt;p&gt;Tu vois où je veux en venir ?&lt;/p&gt;

&lt;h2&gt;
  
  
  Chez un développeur
&lt;/h2&gt;

&lt;p&gt;Je pense qu’on sera tous d’accord pour dire qu’un développeur, en plus évidemment d’utiliser des &lt;strong&gt;langages&lt;/strong&gt; et de connaître des &lt;strong&gt;méthodologies&lt;/strong&gt;, doit avoir une certaine &lt;strong&gt;gymnastique d’esprit&lt;/strong&gt;. Que ce soit pour préparer l’architecture d’une application, pour modéliser une base de données, pour intégrer de façon optimale une interface ou même pour penser et mettre en place une pipeline de CI/CD.&lt;/p&gt;

&lt;p&gt;Bref tu l’aura compris, savoir se représenter des systèmes complexes mentalement est une compétence &lt;strong&gt;extrêmement intéressante&lt;/strong&gt;, et bien qu’évidemment, elle ne soit pas indispensable, on ne peut nier son utilité.&lt;/p&gt;

&lt;p&gt;Imagine maintenant un développeur synesthète. Imagine la facilité avec laquelle il pourrait se représenter toutes ces choses de façon &lt;strong&gt;intuitive&lt;/strong&gt;, pratiquement &lt;strong&gt;inconsciente&lt;/strong&gt; et surtout, imagine la facilité qu’il pourrait avoir pour certaines tâches par rapport “aux commun des mortels”.&lt;/p&gt;

&lt;p&gt;J’ai essayé de me renseigner et de trouver des développeurs synesthètes et malheureusement je n’en ai pas trouvé. &lt;em&gt;Donc si c’est ton cas à toi qui lis ça, hésites surtout pas ! Contact moi et on discutera de tout ça !&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;D’autre part, le seul &lt;strong&gt;développeur synesthète&lt;/strong&gt; “connu” que j’ai pu trouver est &lt;a href="https://fr.wikipedia.org/wiki/Robert_Cailliau"&gt;Robert Cailliau&lt;/a&gt;, qui n’est pas n’importe qui étant donné qu’il est le &lt;strong&gt;co-fondateur de web&lt;/strong&gt;. Autant vous dire que sans lui on serait pas là aujourd’hui à se poser des questions comme celle ci sur un blog.&lt;/p&gt;

&lt;p&gt;Lui, par exemple il possède une synesthésie bimodale de type &lt;strong&gt;Graphème / Couleur&lt;/strong&gt;, il associe donc naturellement des lettres à des couleurs..Peut être cela l’a t’il aider dans la conception de l’hypertexte, qui sait ?&lt;/p&gt;

&lt;p&gt;La programmation est basée sur des &lt;strong&gt;langages&lt;/strong&gt; eux même possédants une &lt;strong&gt;syntaxe&lt;/strong&gt; mais aussi sur une &lt;strong&gt;architecture&lt;/strong&gt; que l’on peut se représenter de façon &lt;strong&gt;spatiale&lt;/strong&gt;. Toutes les caractéristiques de la programmation peuvent être impactées par une forme de synesthésie.&lt;/p&gt;

&lt;p&gt;Il y a d’ailleurs surement de &lt;strong&gt;nombreuses autres applications&lt;/strong&gt; auxquelles je n’ai pas pensées ou que je ne connais même pas, mais je pense qu’on peut sans risque dire que beaucoup d’axes du développement web et de la programmation informatique en générale peuvent être influencés par ce phénomène et peuvent donc ouvrir des &lt;strong&gt;perspectives très intéressantes dans l’aspect méthodologique&lt;/strong&gt; de cette discipline.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Est-ce qu’un développeur synesthète serait un super-dev ?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Peut-être bien mais… Il ne serait peut être pas meilleur qu’un autre, il aurait surement des facilités sur certaine tâches, mais pourrait aussi très bien avoir des difficultés sur d’autres. Ce qui est sûr c’est que je trouve intéressant de se poser la question de quelle serait la &lt;strong&gt;“façon de penser”&lt;/strong&gt; optimale pour un développeur je pense que tenter de trouver une réponse à ces questions est une première étape pour mettre en place des &lt;strong&gt;nouvelles méthodologies&lt;/strong&gt; qui pourraient, possiblement, régler certains problèmes que l’on retrouve dans le métier… À méditer.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Évidemment je tiens à le préciser, je ne fais absolument pas l’apologie de la synesthésie. Bien que ce trouble ne soit pas handicapant d’après les différentes sources, je ne veux parler au nom d’aucun synesthètes. Considérez cet article comme une porte ouverte à la réflexion méthodologique.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;La bise !&lt;/p&gt;

</description>
      <category>synsethesia</category>
      <category>webdev</category>
      <category>reflections</category>
    </item>
    <item>
      <title>Des scripts Shell pour déployer en une ligne</title>
      <dc:creator>Akecel </dc:creator>
      <pubDate>Thu, 01 Oct 2020 12:55:03 +0000</pubDate>
      <link>https://dev.to/akecel/des-scripts-shell-pour-deployer-en-une-ligne-1a01</link>
      <guid>https://dev.to/akecel/des-scripts-shell-pour-deployer-en-une-ligne-1a01</guid>
      <description>

&lt;p&gt;Dans cet article on va essayer de créer un petit script de déploiement qui pourra être adapté à n’importe quel projet et qui, si tu l’utilises bien te poussera naturellement à fouiner du coté du DevOps et plus particulièrement de la Livraison continue et du Déploiement continu.&lt;/p&gt;

&lt;p&gt;Pour ça, voila de quoi on aura besoin :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;De Git (ou autre tant que ça fait le taff).&lt;/li&gt;
&lt;li&gt;D’un serveur web (spoiler).&lt;/li&gt;
&lt;li&gt;Pouvoir se connecter en SSH sur ce serveur.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Petit disclaimer tout de même, cet article ne s’adresse évidement pas à toute personne ayant déjà une bonne connaissance des enjeux DevOps. Je ne suis qu’un dev junior qui partage son approche légère et progressive de cette méthodologie à d’autres juniors. D’ailleurs tout cela n’est que de la vulgarisation, au yeux d’un avisé, il y aura sans doute beaucoup d’erreurs mais j’essaie simplement de trouver les mots juste pour faire passer un message, ce n’est pas toujours simple&lt;/em&gt; 😉&lt;/p&gt;

&lt;h2&gt;
  
  
  Le Shell ? Kecekecé ?
&lt;/h2&gt;

&lt;p&gt;Avant tout, il faut impérativement essayer de comprendre les outils qu’on va utiliser, et le principal c’est évidement les Scripts Shell 😱. Pour t’expliquer ça je pourrais évidement simplement citer la définition Wikipédia mais d’une ; on comprend rien à ce qu’ils racontent là bas. Et de deux ; on s’en fou un peu de la définition académique.&lt;/p&gt;

&lt;p&gt;Donc nous on va faire dans la simplicité 😎&lt;/p&gt;

&lt;p&gt;Shell c’est un langage de script, donc un langage de programmation, qui doit être interprété, jusque la on est ok, on connait. Mais la particularité des langages de script c’est qu’ils permettent d’automatiser une succession de commandes simples (entre autres hein).&lt;/p&gt;

&lt;p&gt;On peut donc imaginer des scripts pour tout, mais ici on va s’en servir pour coordonner et exécuter différentes commandes qui vont aboutir au déploiement de notre projet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Git &amp;amp; SSH
&lt;/h2&gt;

&lt;p&gt;Là c’est la début de la fin. C’est quand on commence à entendre parler de connexions SSH, de clés SSH privées ou publiques, de RSA et autre fingerprint qu’on se dit qu’on a surement quelque chose de plus constructif à faire que de lire un article ou un tuto.&lt;/p&gt;

&lt;p&gt;Et tu n’as pas tort, mais bon c’est une étape indispensable, évidement j’espère que tes projets sont déjà gérés avec Git (ou un autre gestionnaire de versions). Si non… &lt;strong&gt;QU’ATTENDS-TU ?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Outre cela, tu vas aussi devoir configurer ton serveur web pour pouvoir te connecter en SSH :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ssh"&gt;&lt;code&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="k"&gt;ssh&lt;/span&gt; user@000.00.000.000 -p &lt;span class="m"&gt;00&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Techniquement, il même possible de ne pas avoir à trifouiller des clés SSH, du moins pour le moment, tu te rendras vite compte que c’est quand même super pratique.&lt;/p&gt;

&lt;p&gt;Partons du principe que tu as tout ça, ton projet est sur &lt;a href="https://github.com/"&gt;GitHub&lt;/a&gt;, ton serveur te permet de te connecter en SSH et toi tu continues de lire cet article alors qu’il n’y a pas eu une ligne de commande en 5 minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Codons un peu
&lt;/h2&gt;

&lt;p&gt;Mais pas tout de suite.&lt;/p&gt;

&lt;p&gt;On va prendre pour exemple un répo GitHub qu’on va appeler &lt;strong&gt;“simple_test_repo”&lt;/strong&gt; .&lt;/p&gt;

&lt;p&gt;Commençons par se connecter à notre super serveur.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ssh"&gt;&lt;code&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="k"&gt;ssh&lt;/span&gt; user@000.00.000.000 -p &lt;span class="m"&gt;00&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;D’ici, allons dans notre répertoire &lt;strong&gt;“srv"&lt;/strong&gt;&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="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /srv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Maintenant nous allons créer un nouveau répertoire qu’on va appeler &lt;strong&gt;“src”&lt;/strong&gt; pour les &lt;strong&gt;“sources”&lt;/strong&gt;. C’est ici que notre répo git sera cloné. Ça va nous permettre de bien séparer ce qui concerne Git et la version en ligne du projet. On se donne les droits sur ce répertoire et on se rend à l’intérieur.&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="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo mkdir &lt;/span&gt;src
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo chown &lt;/span&gt;user:user src
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;src
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A présent, on peut cloner ici notre projet (on ne configure pas encore les fichiers d’environnement du projet)&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="nv"&gt;$ &lt;/span&gt;git clone https://github.com/user/simple_test_repo.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On fait évidemment un petit &lt;strong&gt;“ls”&lt;/strong&gt; pour vérifier que tout va bien. Et ensuite, on crée de nouveau un répertoire, cette fois-ci nommé &lt;strong&gt;“script”&lt;/strong&gt; et on se rend dedans :&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="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo mkdir &lt;/span&gt;scripts
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;scripts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ok, maintenant on a toute notre infrastructure pour commencer nos scripts et goupiller tout ça.&lt;/p&gt;

&lt;p&gt;Prêt pour créer ton script ? Ok let’s go 🚀&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="nv"&gt;$ &lt;/span&gt;nano pull_and_deploy_website.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Maintenant il faut écrire ton script, voilà ce qu’on va mettre dedans :&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;&lt;span class="c"&gt;#/bin/bash -eu&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; /srv/src/simple_test_repo
git pull origin master
rsync &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt; /var/www/html &lt;span class="nt"&gt;--exclude&lt;/span&gt; .git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Voilà ce que tout ça veut dire :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;On commence simplement par dire à Unix qu’on va utiliser Bash, le -eu est en quelque sorte le mode strict de bash (merci à la personne qui m’a dit de le rajouter)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ensuite on se rend dans le répertoire ou notre projet est cloné&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On récupère les différentes modifications qui ont été faites&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On copie uniquement les fichiers qui ont été modifiés dans le répertoire www du serveur web en excluant le dossier .git&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Il y a plein de façons d’optimiser ces commandes, par exemple il est possible d’utiliser “rsync -aC” pour conserver les liens symboliques et ignorer par défaut certains fichiers. Mais on va rester dans la simplicité pour ce script là.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Pour finir on règle les permissions de ce script :&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="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;chmod&lt;/span&gt; +x pull_and_deploy_website.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A présent tu peux configurer les fichiers d’environnement de ton projet.&lt;/p&gt;

&lt;p&gt;L’intérêt de tout ça, c’est de séparer proprement les fichiers qui proviennent de ton gestionnaire de versions et tes fichiers qui seront possiblement accessibles par l’utilisateur, ça offre une couche de sécurité en plus et cela t’oblige à prendre en compte ton infrastructure.&lt;/p&gt;

&lt;p&gt;De plus pour déployer il ne te suffit plus que d’une seule ligne (après t’être connecté en SSH)&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="nv"&gt;$ &lt;/span&gt;srv/src/scripts/pull_and_deploy_website.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tu as maintenant deux copies de ton projet sur ton serveur, une directement reliée à Github avec une remote récupérant les différentes mises à jour, et une, en ligne, que tu peux mettre à jour en une seule ligne de commande, le tout de façon sécurisée.&lt;/p&gt;

&lt;p&gt;Tu peux aussi personnaliser ton script, en créer pour plusieurs projets, y rajouter des messages de succès, pourquoi pas essayer d’y intégrer des builds, ou des tests ? Mais, tu te rendra vite compte que tu es limité… &lt;em&gt;(enfin pas toi, le script)&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Si tu as bien lu et que tu as essayé ce script en le modifiant à ta sauce, tu as sûrement compris le potentiel de ce genre de méthodes…&lt;/p&gt;

&lt;p&gt;Et bien félicitation, tu viens de créer ta première pipeline, simple, basique &lt;em&gt;(vous n'avez pas les bases)&lt;/em&gt;, archaïque même, mais c'est une pipeline. Et si tu as compris les enjeux et objectifs de ce script, alors tu as compris ceux de la méthodologie DevOps: automatisation, sécurité et performance.&lt;/p&gt;

&lt;p&gt;Mais du coup, comment faire pour que cela deviennent une vraie pipeline ? Et bien en fait là, on exécute à proprement parler qu'une seule tache, et pour que cela soit une vraie pipeline il en faudrait plusieurs déjà. Le minimum serait en premier lieu d'ajouter des tests, unitaires par exemple.&lt;/p&gt;

&lt;p&gt;Ce qu'il te faut comprendre avec le &lt;strong&gt;CI/CD&lt;/strong&gt; c'est les principes &lt;strong&gt;d'automatisation et de non régression&lt;/strong&gt;. Pour que ton code reste fonctionnel, et que tes nouvelles fonctionnalités n'entrent pas en conflit avec les anciennes, ta pipeline doit avoir un déclencheur, un push ou un merge sur master par exemple. Ensuite et seulement ensuite une série de taches sera effectuées automatiquement à partir de ta pipeline, le plus courant étant :&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Build ➡️ Test ➡️ Déploiement&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Pour faire simple, une pipeline se comportera comme ton script, mais à grande échelle.&lt;/p&gt;

&lt;p&gt;Et c'est ici qu'entre en jeu les différents outils de CI/CD, ils t'offriront un environnement pour tes pipelines, une interface graphique et des documentations indispensables. De plus ils te permettront d'affiner tes possibilités en ajoutant du Coverage, du Code Legacy et plein d'autre joyeusetés 😊&lt;/p&gt;

&lt;p&gt;À présent, n'hésites pas à te renseigner sur ces différents outils (&lt;a href="https://about.gitlab.com/stages-devops-lifecycle/continuous-integration/"&gt;Gitlab CI&lt;/a&gt;, &lt;a href="https://circleci.com/"&gt;CircleCI&lt;/a&gt;, &lt;a href="https://www.jenkins.io/"&gt;Jenkins&lt;/a&gt;, &lt;a href="https://travis-ci.org/"&gt;Travis&lt;/a&gt; et &lt;a href="https://github.com/features/actions"&gt;GitHub Action&lt;/a&gt;), à coder tes premiers tests unitaires, à réfléchir à différentes pipelines pour différents besoins et à te lancer dans le merveilleux monde du DevOps.&lt;/p&gt;




&lt;p&gt;Tu peux trouver le code source de cet article &lt;a href="https://github.com/Akecel/deploy-shell-script"&gt;ici&lt;/a&gt; !&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Merci beaucoup à toi d’avoir lu jusqu’ici, je le répète je suis un dev junior et j’essaie de rendre le propos le plus simple possible, je suis loin d’être un grand développeur. Je suis conscient que la méthode présentée dans cet article paraîtra absurde et inutile à beaucoup de personne, mais moi, elle m’a aidé à mieux cerner certains enjeux et il me semblait important de la partager.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;J’espère que cet article t'aura tout de même intéressé et je reviendrais très bientôt avec d’autres sujets&lt;/em&gt; 😉&lt;/p&gt;

</description>
      <category>shell</category>
      <category>devops</category>
      <category>codenewbie</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
