{"id":2642,"date":"2018-11-13T13:37:47","date_gmt":"2018-11-13T12:37:47","guid":{"rendered":"https:\/\/blog.alwaysdata.com\/?p=2642"},"modified":"2018-11-12T11:55:01","modified_gmt":"2018-11-12T10:55:01","slug":"etes-vous-prets-a-redemarrer-la-matrice","status":"publish","type":"post","link":"https:\/\/blog.alwaysdata.com\/fr\/2018\/11\/13\/etes-vous-prets-a-redemarrer-la-matrice\/","title":{"rendered":"\u00cates-vous pr\u00eats \u00e0&nbsp;red\u00e9marrer la Matrice&nbsp;?"},"content":{"rendered":"<p>Novembre est d\u00e9j\u00e0 l\u00e0, avec ses feuilles mortes et son vent dans les branches. Il est peut-\u00eatre temps de vous parler de ce qui nous a&nbsp;occup\u00e9s durant l\u2019\u00e9t\u00e9, et de ce que nous avons d\u00e9velopp\u00e9 autour de la piscine<span class=\"footnote_referrer\"><a role=\"button\" tabindex=\"0\" onclick=\"footnote_moveToReference_2642_1('footnote_plugin_reference_2642_1_1');\" onkeypress=\"footnote_moveToReference_2642_1('footnote_plugin_reference_2642_1_1');\"><sup id=\"footnote_plugin_tooltip_2642_1_1\" class=\"footnote_plugin_tooltip_text\">1)<\/sup><\/a><span id=\"footnote_plugin_tooltip_text_2642_1_1\" class=\"footnote_tooltip\"><\/span><\/span>.<\/p>\n<p>Une fonctionnalit\u00e9 que nous voulions reprendre de z\u00e9ro depuis quelque temps est notre syst\u00e8me d\u2019installation en 1\u2011click. Il vous offre la possibilit\u00e9 de d\u00e9ployer facilement et rapidement des applications pr\u00e9provisionn\u00e9es dans votre espace utilisateur. Pourtant, notre architecture \u00e9tait quelque peu obsol\u00e8te pour facilement nous permettre de supporter de nouvelles applications. Nous avons donc d\u00e9cid\u00e9 de repartir de la base<span class=\"footnote_referrer\"><a role=\"button\" tabindex=\"0\" onclick=\"footnote_moveToReference_2642_1('footnote_plugin_reference_2642_1_2');\" onkeypress=\"footnote_moveToReference_2642_1('footnote_plugin_reference_2642_1_2');\"><sup id=\"footnote_plugin_tooltip_2642_1_2\" class=\"footnote_plugin_tooltip_text\">2)<\/sup><\/a><span id=\"footnote_plugin_tooltip_text_2642_1_2\" class=\"footnote_tooltip\"><\/span><\/span>.<\/p>\n<figure class=\"embed-media__giphy\" style=\"width:65%; padding-bottom:calc(65% * (270 + 12) \/ (480 + 12))\">\n    <video id=\"giphy-${token}\" autoplay loop muted playsinline>\n        <source src=\"https:\/\/media.giphy.com\/media\/l0HlGmbxkwkICKykM\/giphy.mp4\" type=\"video\/mp4\">\n        <img decoding=\"async\" src=\"https:\/\/media.giphy.com\/media\/l0HlGmbxkwkICKykM\/giphy.gif\" alt=\" @Giphy\">\n    <\/video>\n<\/figure>\n<hr>\n<h2>L\u2019applith\u00e8que, un nouvel espace pour d\u00e9marrer vos projets<\/h2>\n<p>D\u00e9ployer des applications en production suit souvent les m\u00eames \u00e9tapes&nbsp;:<\/p>\n<ol>\n<li>Trouver quelque part l\u2019archive contenant la derni\u00e8re version de l\u2019app ou du service que vous souhaitez d\u00e9ployer&nbsp;;<\/li>\n<li>T\u00e9l\u00e9charger cette archive dans votre espace utilisateur, la d\u00e9compresser, et rentrer dans le dossier nouvellement cr\u00e9\u00e9&nbsp;;<\/li>\n<li>Ex\u00e9cuter les diff\u00e9rentes t\u00e2ches, depuis l\u2019installation jusqu\u2019\u00e0 la configuration, soit en ligne de commande (CLI), soit depuis une interface (Web) ;<\/li>\n<li>Cr\u00e9er la base de donn\u00e9es manquante&nbsp;;<\/li>\n<li>Relancer la configuration de l\u2019app&nbsp;;<\/li>\n<li>Activer ces %$@! d\u2019extensions manquantes dans l\u2019interpr\u00e9teur&nbsp;;<\/li>\n<li>Relancer la configuration pour, esp\u00e9rons-le, la derni\u00e8re fois&nbsp;;<\/li>\n<li>Cr\u00e9er un nouveau site qui pointe vers le r\u00e9pertoire de l\u2019application&nbsp;;<\/li>\n<li>Corriger les permissions&nbsp;;<\/li>\n<li>Parfois, tout jeter et recommencer depuis 1\/ pour corriger le&nbsp;tout&nbsp;(\u256f\u00b0\u25a1\u00b0\uff09\u256f\ufe35&nbsp;\u253b\u2501\u253b.<\/li>\n<\/ol>\n<p>Nous avons donc con\u00e7u un syst\u00e8me pour vous permettre de vous simplifier tout \u00e7a. En utilisant notre plateforme de d\u00e9ploiement 1\u2011click, vous pouvez installer et provisionner une app ou un service dans votre espace utilisateur. Plus besoin de configurer des d\u00e9pendances syst\u00e8me, ou de t\u00e9l\u00e9charger et d\u2019installer manuellement toute la pile technique. Cliquez sur un bouton, et c\u2019est pr\u00eat<span class=\"footnote_referrer\"><a role=\"button\" tabindex=\"0\" onclick=\"footnote_moveToReference_2642_1('footnote_plugin_reference_2642_1_3');\" onkeypress=\"footnote_moveToReference_2642_1('footnote_plugin_reference_2642_1_3');\"><sup id=\"footnote_plugin_tooltip_2642_1_3\" class=\"footnote_plugin_tooltip_text\">3)<\/sup><\/a><span id=\"footnote_plugin_tooltip_text_2642_1_3\" class=\"footnote_tooltip\"><\/span><\/span> !<\/p>\n<figure class=\"embed-media__ad__medium embed-media__ad__\">\n    <img decoding=\"async\" src=\"https:\/\/blog.alwaysdata.com\/wp-content\/uploads\/2018\/10\/57DFBC72-E46C-4383-94F8-74E3E67F25EC.jpeg\" alt=\"Capture d\u2019\u00e9cran de l\u2019interface d\u2019administration : acc\u00e9der \u00e0 l\u2019installation en 1-click\" class=\"aligncenter size-full wp-image-\">\n    <figcaption>Capture d\u2019\u00e9cran de l\u2019interface d\u2019administration&nbsp;: acc\u00e9der \u00e0&nbsp;l\u2019installation en 1\u2011click<\/figcaption>\n<\/figure>\n<p>H\u00e9las, notre architecture initiale s\u2019appuyait sur l\u2019automatisation des processus de configuration au travers de l\u2019interface Web gr\u00e2ce \u00e0&nbsp;des outils script\u00e9s comme PhantomJS. Celui-ci est d\u00e9pr\u00e9ci\u00e9 depuis longtemps, et tous les projets r\u00e9cents offrent maintenant au moins une CLI pour g\u00e9rer leurs installation, configuration, et provisionnement. Il \u00e9tait temps de repenser notre outil pour lui offrir plus de fiabilit\u00e9. Cette nouvelle mouture nous permet \u00e9galement de vous proposer de nouvelles applications que nous ne pouvions pas supporter avec l\u2019ancien syst\u00e8me. Bienvenus \u00e0&nbsp;nouveau, nous red\u00e9marrons la Matrice&nbsp;!<\/p>\n<h3>Vos applications favorites d\u00e9j\u00e0 disponibles<\/h3>\n<p>Nous venons de mettre en production la premi\u00e8re version de notre nouvel outil. Apr\u00e8s plusieurs semaines de tests intenses, nous ne doutons plus de sa stabilit\u00e9.<\/p>\n<figure class=\"embed-media__ad__medium embed-media__ad__\">\n    <img decoding=\"async\" src=\"https:\/\/blog.alwaysdata.com\/wp-content\/uploads\/2018\/11\/Admin-Panel-1-click-Install-FR.png\" alt=\"Capture d\u2019\u00e9cran de l\u2019interface d\u2019administration: l\u2019installation en 1-click<br \/><small>(notez que les notes de popularit\u00e9 ici sont purement fictives pour un rendu r\u00e9aliste)<\/small>\" class=\"aligncenter size-full wp-image-\">\n    <figcaption>Capture d\u2019\u00e9cran de l\u2019interface d\u2019administration&nbsp;: l\u2019installation en 1\u2011click<br><small>(notez que les notes de popularit\u00e9 ici sont purement fictives pour un rendu r\u00e9aliste)<\/small><\/figcaption>\n<\/figure>\n<p>Une autre t\u00e2che (titanesque) a&nbsp;\u00e9t\u00e9 de porter les applications que nous vous proposions d\u00e9j\u00e0. Il \u00e9tait effectivement hors de question de vous proposer une applith\u00e8que moins fournie que celle d\u00e9j\u00e0 pr\u00e9sente. Notre \u00e9quipe<span class=\"footnote_referrer\"><a role=\"button\" tabindex=\"0\" onclick=\"footnote_moveToReference_2642_1('footnote_plugin_reference_2642_1_4');\" onkeypress=\"footnote_moveToReference_2642_1('footnote_plugin_reference_2642_1_4');\"><sup id=\"footnote_plugin_tooltip_2642_1_4\" class=\"footnote_plugin_tooltip_text\">4)<\/sup><\/a><span id=\"footnote_plugin_tooltip_text_2642_1_4\" class=\"footnote_tooltip\"><\/span><\/span> a&nbsp;fait un important travail de portage. Voici la premi\u00e8re liste des applications et <em>frameworks<\/em> que vous pouvez d\u2019ores et d\u00e9j\u00e0 installer en 1\u2011click sur cette nouvelle plateforme&nbsp;:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.dokuwiki.org\/\">DokuWiki<\/a>&nbsp;: un wiki simple et efficace, id\u00e9al pour maintenir une documentation interne&nbsp;;<\/li>\n<li><a href=\"https:\/\/www.drupal.org\/\">Drupal<\/a>&nbsp;: un Framework \/ CMS PHP pour g\u00e9rer les contenus de votre site&nbsp;Web&nbsp;;<\/li>\n<li><a href=\"https:\/\/gitea.io\/\">Gitea<\/a>&nbsp;: une alternative \u00e0&nbsp;GitHub l\u00e9g\u00e8re et autoh\u00e9bergeable, pour g\u00e9rer vos d\u00e9p\u00f4ts de code et votre suivi des tickets&nbsp;;<\/li>\n<li><a href=\"https:\/\/www.joomla.fr\/\">Joomla<\/a>&nbsp;: un CMS PHP plut\u00f4t connu&nbsp;;<\/li>\n<li><a href=\"https:\/\/magento.com\/\">Magento<\/a>&nbsp;: la c\u00e9l\u00e8bre plateforme e\u2011commerce PHP&nbsp;;<\/li>\n<li><a href=\"https:\/\/www.mediawiki.org\/wiki\/MediaWiki\">MediaWiki<\/a>&nbsp;: le plus r\u00e9put\u00e9 des wikis, qui propulse notamment Wikip\u00e9dia&nbsp;;<\/li>\n<li><a href=\"https:\/\/neofr.ag\/\">NeoFrag<\/a>&nbsp;: un CMS \u00e0&nbsp;destination des communaut\u00e9s e\u2011sport&nbsp;;<\/li>\n<li><a href=\"https:\/\/nextcloud.com\/\">Nextcloud<\/a>&nbsp;: le cloud personnel offrant d\u2019importantes fonctionnalit\u00e9s de collaboration&nbsp;;<\/li>\n<li><a href=\"https:\/\/www.prestashop.com\/\">PrestaShop<\/a>&nbsp;: une plateforme e\u2011commerce simple \u00e0&nbsp;prendre en&nbsp;main&nbsp;;<\/li>\n<li><a href=\"https:\/\/thelia.net\/\">Thelia<\/a>&nbsp;: une autre plateforme e\u2011commerce, pens\u00e9 pour les moyens et gros&nbsp;sites&nbsp;;<\/li>\n<li><a href=\"https:\/\/wallabag.org\/\">Wallabag<\/a>&nbsp;: une solution <em>Read It Later<\/em> open source&nbsp;;<\/li>\n<li><a href=\"https:\/\/wordpress.org\/\">WordPress<\/a>&nbsp;: le tr\u00e8s connu moteur de blog\/CMS.<\/li>\n<\/ul>\n<p><em>Note<\/em>&nbsp;: quelques applications ont disparu, telle phpBB, parce qu\u2019elles n\u2019offrent aucun outil d\u2019automatisation de provisionnement (comme une CLI). Comme ces applications souffrent souvent d\u2019un manque d\u2019int\u00e9r\u00eat de la part de la communaut\u00e9, nous avons choisi de les retirer de la&nbsp;liste.<\/p>\n<h2>Un nouveau moteur, tout beau, tout&nbsp;chaud<\/h2>\n<p>Comme la plupart des applications Web r\u00e9centes offrent des outils embarqu\u00e9s d\u00e9di\u00e9s \u00e0&nbsp;l\u2019installation et la configuration, il nous semble \u00e9vident de les utiliser. Nous avons donc con\u00e7u un moyen de les utiliser au travers d\u2019une m\u00e9canique de scripts.<\/p>\n<p>Chaque script d\u00e9clare un environnement et des variables de configuration dans un <em>dataset<\/em> sous forme d\u2019un <a href=\"https:\/\/en.m.wikipedia.org\/wiki\/YAML\">YAML Front Matter<\/a>.<\/p>\n<pre><code class=\"yaml\">site:\n    type: php\n    path: '{INSTALL_PATH_RELATIVE}'\n    php_version: '7.2'\ndatabase:\n    type: mysql\n<\/code><\/pre>\n<p>Ce syst\u00e8me nous permet un provisionnement automagique qui va se charger de cr\u00e9er votre site dans le type demand\u00e9 et de le configurer avec les extensions n\u00e9cessaires, de configurer les bases de donn\u00e9es n\u00e9cessaires \u00e0&nbsp;la bonne marche du service, etc. La derni\u00e8re version est alors r\u00e9cup\u00e9r\u00e9e<span class=\"footnote_referrer\"><a role=\"button\" tabindex=\"0\" onclick=\"footnote_moveToReference_2642_1('footnote_plugin_reference_2642_1_5');\" onkeypress=\"footnote_moveToReference_2642_1('footnote_plugin_reference_2642_1_5');\"><sup id=\"footnote_plugin_tooltip_2642_1_5\" class=\"footnote_plugin_tooltip_text\">5)<\/sup><\/a><span id=\"footnote_plugin_tooltip_text_2642_1_5\" class=\"footnote_tooltip\"><\/span><\/span>, et est extraite dans votre espace utilisateur.<\/p>\n<pre><code class=\"sh\">#!\/bin\/bash\n\nset -e\n\ncomposer global require wonderfulapp\/console\n\nphp .composer\/vendor\/bin\/wonderfulapp app:download --www=\"$INSTALL_PATH\" default\nphp .composer\/vendor\/bin\/wonderfulapp app:install --www=\"$INSTALL_PATH\" --mysql-login=\"$DATABASE_USERNAME\":\"$DATABASE_PASSWORD\" --mysql-host=\"$DATABASE_HOST\" --mysql-database=\"$DATABASE_NAME\" --skip-exists-check --drop default\n\nrm -rf .composer\n<\/code><\/pre>\n<p>Le script est alors ex\u00e9cut\u00e9 pour provisionner l\u2019application avec les r\u00e9glages sp\u00e9cifiques \u00e0&nbsp;votre compte <em>alwaysdata<\/em>. G\u00e9n\u00e9ration des fichiers de configuration, ex\u00e9cution des migrations des bases de donn\u00e9es, correction des permissions, et toute t\u00e2che laborieuse&nbsp;: tout est automatique.<\/p>\n<p>C\u2019est tout. Votre app est pr\u00eate \u00e0&nbsp;\u00eatre utilis\u00e9e.<\/p>\n<h3>W\u00f4w, \u00e7a semble top&nbsp;!<\/h3>\n<p>En fait, \u00e7a l\u2019est. Ce syst\u00e8me nous offre de nombreux avantages&nbsp;:<\/p>\n<ul>\n<li>Ce ne sont que des scripts, ce qui les rend simples \u00e0&nbsp;\u00e9crire et \u00e0&nbsp;maintenir, et nous permet de vous proposer facilement et rapidement de nouvelles apps et frameworks sur la plateforme&nbsp;;<\/li>\n<li>Nous nous sommes d\u00e9barrass\u00e9s de toutes les bidouilles \u00e0&nbsp;base de scripting de l\u2019interface Web, ce qui rend les scripts plus robustes et plus testables&nbsp;;<\/li>\n<li>En tant que scripts, seules quelques connaissances en shell sont n\u00e9cessaires pour les \u00e9crire. Vous n\u2019aimez pas Bash&nbsp;? Utilisez le langage de script de votre choix (Python, Ruby\u2026), ils fonctionneront tout aussi&nbsp;bien&nbsp;;<\/li>\n<li>Nous utilisons les outils embarqu\u00e9s dans les applications pour l\u2019automatisation des t\u00e2ches, ce qui laisse l\u2019\u00e9diteur responsable de la maintenance entre deux versions sur une commande d\u00e9di\u00e9e&nbsp;;<\/li>\n<li>Les scripts sont beaux, les scripts sont merveilleux, les scripts sont les enfants des licornes&nbsp;;<\/li>\n<li>Obtenir des traces d\u2019erreur d\u00e9taill\u00e9es permettant de corriger les probl\u00e8mes d\u2019installation est <em>infiniment<\/em> plus simple qu\u2019avec une automatisation d\u2019interface&nbsp;;<\/li>\n<li>J\u2019ai dit que ce n\u2019\u00e9tait <em>que<\/em> des scripts&nbsp;?<\/li>\n<\/ul>\n<p>Notre objectif est de vous fournir la plupart des outils, services, et applications les plus courants, sans casser les scripts d\u2019installation \u00e0&nbsp;chaque nouvelle version. Cette solution nous permet de vous offrir ce confort, et nous esp\u00e9rons bien vous fournir de nouvelles apps r\u00e9guli\u00e8rement.<\/p>\n<h2>Un mot concernant la s\u00e9curit\u00e9 durant le d\u00e9ploiement<\/h2>\n<p>Certaines t\u00e2ches automatis\u00e9es n\u00e9cessitent ou vous retournent des informations, et notre syst\u00e8me vous permet d\u2019y acc\u00e9der facilement. Voici la liste non exhaustive des consid\u00e9rations relatives \u00e0&nbsp;la s\u00e9curit\u00e9 lors du d\u00e9ploiement.<\/p>\n<h3>G\u00e9n\u00e9ration de mots de passe al\u00e9atoires<\/h3>\n<p>Vous avez souvent besoin de fournir un mot de passe administrateur, pour l\u2019interface back-office, lorsque vous installez une nouvelle application. Notre outil peut g\u00e9n\u00e9rer un mot de passe al\u00e9atoirement pour vous, ou vous laisser choisir le v\u00f4tre lors de l\u2019installation. Quel que soit votre choix, nous <strong>ne stockons jamais<\/strong> votre mot de passe sur notre plateforme. Vous restez seul\u2022e propri\u00e9taire de votre&nbsp;outil.<\/p>\n<p><em>Note<\/em>&nbsp;: Nous ne stockons pas d\u2019information sensible, mais si votre application utilise un mot de passe en clair dans ses fichiers de configuration, celui-ci restera pleinement lisible. Les fichiers de configuration \u00e9tant stock\u00e9s dans <em>votre<\/em> espace utilisateur, et disposant des permissions correctes, ce n\u2019est souvent pas trop grave. Cependant si vous consid\u00e9rez qu\u2019il s\u2019agit d\u2019une mauvaise pratique, n\u2019h\u00e9sitez pas \u00e0&nbsp;ouvrir une <em>issue<\/em> sur le <em>tracker<\/em> de votre application pour demander le support du mot de passe chiffr\u00e9&nbsp;;).<\/p>\n<h3>URL d\u2019administration, configurations personnalis\u00e9es, et&nbsp;plus<\/h3>\n<p>Certaines solutions vous permettent de personnaliser plusieurs \u00e9l\u00e9ments, comme les URL d\u2019administration. Nous avons souvent fait des choix par d\u00e9faut, pour simplifier le d\u00e9ploiement. Vous \u00eates bien entendu libres de personnaliser ces URL une fois l\u2019installation termin\u00e9e, pour correspondre \u00e0&nbsp;vos besoins.<\/p>\n<p>Globalement, notre plateforme s\u2019occupe seulement de provisionner le d\u00e9ploiement avec une configuration s\u00e9curis\u00e9e par d\u00e9faut. Libre \u00e0&nbsp;vous de modifier, mettre \u00e0&nbsp;jour, ou personnaliser votre installation par la&nbsp;suite.<\/p>\n<h3>Cr\u00e9ation des bases de donn\u00e9es<\/h3>\n<p>Les bases de donn\u00e9es relatives \u00e0&nbsp;votre app sont cr\u00e9\u00e9es automatiquement avec un utilisateur d\u00e9di\u00e9, avec un mot de passe g\u00e9n\u00e9r\u00e9 al\u00e9atoirement. Nous <strong>ne stockons aucune information<\/strong> relative \u00e0&nbsp;la connexion durant ce processus. Vos donn\u00e9es restent prot\u00e9g\u00e9es.<\/p>\n<h3>Logs (\u00e0 venir dans la prochaine release)<\/h3>\n<p>Vous pouvez acc\u00e9der aux <em>logs<\/em> g\u00e9n\u00e9r\u00e9s durant le processus automatique depuis votre espace utilisateur. Si l\u2019installation \u00e9choue pour une quelconque raison, vous y&nbsp;trouverez les informations n\u00e9cessaires au d\u00e9bogage. Si vous avez besoin de transmettre ces rapports, les informations sensibles y&nbsp;sont d\u00e9j\u00e0 omises&nbsp;: aucun nom de comptes, chemin d\u2019acc\u00e8s, ou mot de passe n\u2019y figurent.<\/p>\n<figure class=\"embed-media__giphy\" style=\"width:65%; padding-bottom:calc(65% * (363 + 12) \/ (480 + 12))\">\n    <video id=\"giphy-${token}\" autoplay loop muted playsinline>\n        <source src=\"https:\/\/media.giphy.com\/media\/3o6Zt16nOfEI0C9sPu\/giphy.mp4\" type=\"video\/mp4\">\n        <img decoding=\"async\" src=\"https:\/\/media.giphy.com\/media\/3o6Zt16nOfEI0C9sPu\/giphy.gif\" alt=\" @Giphy\">\n    <\/video>\n<\/figure>\n<hr>\n<p>Nous cherchons toujours \u00e0&nbsp;vous fournir une plateforme d\u2019h\u00e9bergement qui soit \u00e0&nbsp;la fois simple et puissante dans ses fonctionnalit\u00e9s. Nous esp\u00e9rons que cette nouvelle solution en 1\u2011click vous aidera dans vos processus de d\u00e9ploiement et vous aidera \u00e0&nbsp;d\u00e9livrer vos contenus encore plus rapidement.<\/p>\n<p>Dans les prochains jours, nous publierons un deuxi\u00e8me article qui vous montrera toute la puissance de notre nouvel outil d\u2019installation en 1\u2011click <em>#teasing<\/em>.<\/p>\n<p>Pour tromper votre attente, que diriez-vous de nous proposer une liste des applications que vous aimeriez voir rejoindre celles d\u00e9j\u00e0 support\u00e9es&nbsp;? Laissez-nous un commentaire ou <a href=\"mailto:community@alwaysdata.com\">envoyez-nous un message \u00e0&nbsp;community@alwaysdata.com<\/a> pour nous faire part de vos suggestions.<\/p>\n<div class=\"speaker-mute footnotes_reference_container\"> <div class=\"footnote_container_prepare\"><p><span role=\"button\" tabindex=\"0\" class=\"footnote_reference_container_label pointer\" onclick=\"footnote_expand_collapse_reference_container_2642_1();\">Notes<\/span><span role=\"button\" tabindex=\"0\" class=\"footnote_reference_container_collapse_button\" style=\"display: none;\" onclick=\"footnote_expand_collapse_reference_container_2642_1();\">[<a id=\"footnote_reference_container_collapse_button_2642_1\">+<\/a>]<\/span><\/p><\/div> <div id=\"footnote_references_container_2642_1\" style><table class=\"footnotes_table footnote-reference-container\"><caption class=\"accessibility\">Notes<\/caption> <tbody> \n\n<tr class=\"footnotes_plugin_reference_row\"> <th scope=\"row\" class=\"footnote_plugin_index_combi pointer\" onclick=\"footnote_moveToAnchor_2642_1('footnote_plugin_tooltip_2642_1_1');\"><a id=\"footnote_plugin_reference_2642_1_1\" class=\"footnote_backlink\"><span class=\"footnote_index_arrow\">\u2191<\/span>1<\/a><\/th> <td class=\"footnote_plugin_text\">histoire de se rappeler encore un peu nos beaux jours de soleil<\/td><\/tr>\n\n<tr class=\"footnotes_plugin_reference_row\"> <th scope=\"row\" class=\"footnote_plugin_index_combi pointer\" onclick=\"footnote_moveToAnchor_2642_1('footnote_plugin_tooltip_2642_1_2');\"><a id=\"footnote_plugin_reference_2642_1_2\" class=\"footnote_backlink\"><span class=\"footnote_index_arrow\">\u2191<\/span>2<\/a><\/th> <td class=\"footnote_plugin_text\"><em>spoiler<\/em>&nbsp;: il y&nbsp;a une autre tr\u00e8s bonne raison \u00e0&nbsp;vouloir reprendre toute cette architecture, vous en saurez plus tr\u00e8s rapidement dans un prochain <em>article<\/em><\/td><\/tr>\n\n<tr class=\"footnotes_plugin_reference_row\"> <th scope=\"row\" class=\"footnote_plugin_index_combi pointer\" onclick=\"footnote_moveToAnchor_2642_1('footnote_plugin_tooltip_2642_1_3');\"><a id=\"footnote_plugin_reference_2642_1_3\" class=\"footnote_backlink\"><span class=\"footnote_index_arrow\">\u2191<\/span>3<\/a><\/th> <td class=\"footnote_plugin_text\">on n\u2019a pas fait mieux depuis le microonde<\/td><\/tr>\n\n<tr class=\"footnotes_plugin_reference_row\"> <th scope=\"row\" class=\"footnote_plugin_index_combi pointer\" onclick=\"footnote_moveToAnchor_2642_1('footnote_plugin_tooltip_2642_1_4');\"><a id=\"footnote_plugin_reference_2642_1_4\" class=\"footnote_backlink\"><span class=\"footnote_index_arrow\">\u2191<\/span>4<\/a><\/th> <td class=\"footnote_plugin_text\">particuli\u00e8rement H\u00e9lo\u00efse et Nicolas, qu\u2019ils en soient remerci\u00e9s pour les si\u00e8cles \u00e0&nbsp;venir<\/td><\/tr>\n\n<tr class=\"footnotes_plugin_reference_row\"> <th scope=\"row\" class=\"footnote_plugin_index_combi pointer\" onclick=\"footnote_moveToAnchor_2642_1('footnote_plugin_tooltip_2642_1_5');\"><a id=\"footnote_plugin_reference_2642_1_5\" class=\"footnote_backlink\"><span class=\"footnote_index_arrow\">\u2191<\/span>5<\/a><\/th> <td class=\"footnote_plugin_text\">soit par un <code>cURL<\/code> classique, soit en utilisant un outil de gestion de d\u00e9pendances si disponible<\/td><\/tr>\n\n <\/tbody> <\/table> <\/div><\/div><script type=\"text\/javascript\"> function footnote_expand_reference_container_2642_1() { jQuery('#footnote_references_container_2642_1').show(); jQuery('#footnote_reference_container_collapse_button_2642_1').text('\u2212'); } function footnote_collapse_reference_container_2642_1() { jQuery('#footnote_references_container_2642_1').hide(); jQuery('#footnote_reference_container_collapse_button_2642_1').text('+'); } function footnote_expand_collapse_reference_container_2642_1() { if (jQuery('#footnote_references_container_2642_1').is(':hidden')) { footnote_expand_reference_container_2642_1(); } else { footnote_collapse_reference_container_2642_1(); } } function footnote_moveToReference_2642_1(p_str_TargetID) { footnote_expand_reference_container_2642_1(); var l_obj_Target = jQuery('#' + p_str_TargetID); if (l_obj_Target.length) { jQuery( 'html, body' ).delay( 0 ); jQuery('html, body').animate({ scrollTop: l_obj_Target.offset().top - window.innerHeight * 0.2 }, 380); } } function footnote_moveToAnchor_2642_1(p_str_TargetID) { footnote_expand_reference_container_2642_1(); var l_obj_Target = jQuery('#' + p_str_TargetID); if (l_obj_Target.length) { jQuery( 'html, body' ).delay( 0 ); jQuery('html, body').animate({ scrollTop: l_obj_Target.offset().top - window.innerHeight * 0.2 }, 380); } }<\/script>","protected":false},"excerpt":{"rendered":"<p>Ne perdez plus votre temps ou vos nerfs \u00e0&nbsp;d\u00e9ployer de nouvelles apps&nbsp;!<\/p>\n","protected":false},"author":12,"featured_media":2605,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"wp_typography_post_enhancements_disabled":false,"footnotes":""},"categories":[230],"tags":[251,229],"class_list":["post-2642","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized-fr","tag-1-click-fr","tag-fonctionnalites-fr"],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/posts\/2642","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/comments?post=2642"}],"version-history":[{"count":0,"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/posts\/2642\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/media\/2605"}],"wp:attachment":[{"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/media?parent=2642"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/categories?post=2642"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/tags?post=2642"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}