{"id":36115,"date":"2019-10-31T22:09:42","date_gmt":"2019-10-31T19:09:42","guid":{"rendered":"https:\/\/prohoster.info\/blog\/ne-soglashajtes-razrabatyvat-to-chego-ne-ponimaete\/"},"modified":"2019-10-31T22:09:42","modified_gmt":"2019-10-31T19:09:42","slug":"ne-soglashajtes-razrabatyvat-to-chego-ne-ponimaete","status":"publish","type":"post","link":"https:\/\/prohoster.info\/fr\/blog\/news\/ne-soglashajtes-razrabatyvat-to-chego-ne-ponimaete","title":{"rendered":"Ne vous engagez pas \u00e0 d\u00e9velopper ce que vous ne comprenez pas","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Ne vous engagez pas \u00e0 d\u00e9velopper ce que vous ne comprenez pas\" src=\"\/wp-content\/uploads\/2019\/07\/bfd609d9004113a76d59d8763d82c6d0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDepuis d\u00e9but 2018, j'occupe le poste de leader\/chef\/developer principal dans l'\u00e9quipe - appelez cela comme vous voulez, mais l'essentiel est que je suis enti\u00e8rement responsable d'un des modules et de tous les d\u00e9veloppeurs qui y travaillent. Ce poste m'offre une nouvelle perspective sur le processus de d\u00e9veloppement, car je suis impliqu\u00e9 dans un plus grand nombre de projets et participe plus activement \u00e0 la prise de d\u00e9cisions. R\u00e9cemment, gr\u00e2ce \u00e0 ces deux circonstances, j'ai r\u00e9alis\u00e9 \u00e0 quel point le niveau de compr\u00e9hension influence le code et l'application.<\/p>\n<p>La pens\u00e9e que je souhaite exprimer est que la qualit\u00e9 du code (et du produit final) est \u00e9troitement li\u00e9e \u00e0 la mesure dans laquelle les personnes qui con\u00e7oivent et \u00e9crivent le code comprennent ce qu'elles font.<\/p>\n<p>Vous pensez peut-\u00eatre maintenant : \u00ab Merci, capitaine. Bien s\u00fbr, il serait bon de comprendre ce que l'on \u00e9crit. Sinon, on pourrait aussi bien engager un groupe de singes pour taper al\u00e9atoirement sur des touches, et se satisfaire de cela. \u00bb Et vous avez tout \u00e0 fait raison. Par cons\u00e9quent, je suppose comme acquis que vous comprenez qu'avoir une vue d'ensemble de ce que vous faites est n\u00e9cessaire. Cela peut \u00eatre qualifi\u00e9 de niveau z\u00e9ro de compr\u00e9hension, et nous ne l'aborderons pas en d\u00e9tail. Nous examinerons en d\u00e9tail ce qu'il est n\u00e9cessaire de comprendre et comment cela impacte les d\u00e9cisions que vous prenez chaque jour. Si j'avais su ces choses \u00e0 l'avance, cela m'aurait \u00e9vit\u00e9 de nombreuses heures perdues et du code douteux.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nBien que vous ne voyiez ici aucune ligne de code, je pense n\u00e9anmoins que tout ce qui a \u00e9t\u00e9 dit ici rev\u00eat une grande importance pour \u00e9crire un code de qualit\u00e9 et expressif. <\/p>\n<h4>Premier niveau de compr\u00e9hension : Pourquoi \u00e7a ne fonctionne pas ?<\/h4>\n<p>\nLes d\u00e9veloppeurs atteignent g\u00e9n\u00e9ralement ce niveau au d\u00e9but de leur carri\u00e8re, parfois m\u00eame sans aide ext\u00e9rieure - du moins, c'est ce que j'ai observ\u00e9. Imaginez que vous recevez un rapport de bug : une certaine fonction dans l'application ne fonctionne pas, il faut la r\u00e9parer. Comment allez-vous agir ?<\/p>\n<p>Le sch\u00e9ma standard ressemble \u00e0 ceci :<\/p>\n<ol>\n<li>Trouver le morceau de code qui pose probl\u00e8me (comment cela se fait - c'est un sujet distinct, que j'aborde dans mon livre sur le code obsol\u00e8te)<\/li>\n<li>Apporter des modifications \u00e0 ce morceau<\/li>\n<li>S'assurer que le bug est corrig\u00e9 et qu'aucune erreur de r\u00e9gression n'est survenue<\/li>\n<\/ol>\n<p>\nConcentrons-nous maintenant sur le deuxi\u00e8me point : les modifications du code. Il existe deux approches pour ce processus. La premi\u00e8re consiste \u00e0 comprendre exactement ce qui se passe dans le code actuel, identifier le bug et le corriger. La seconde est plus exp\u00e9rimentale : ajouter, par exemple, +1 dans une instruction conditionnelle ou une boucle, v\u00e9rifier si cette fonction fonctionne dans le sc\u00e9nario souhait\u00e9, puis essayer autre chose et ainsi de suite ind\u00e9finiment.<\/p>\n<p>La premi\u00e8re approche est la correcte. Comme l'explique Steve McConnell dans son livre Code Complete (que je recommande d'ailleurs vivement), chaque fois que nous modifions le code, nous devons \u00eatre capables de pr\u00e9dire avec confiance comment cela affectera l'application. Je cite de m\u00e9moire, mais si le correctif ne fonctionne pas comme pr\u00e9vu, cela devrait beaucoup vous alerter et vous devriez remettre en question l'ensemble de votre plan d'action.<\/p>\n<p>Pour r\u00e9sumer, afin de r\u00e9aliser un bon bugfix qui n'alt\u00e8re pas la qualit\u00e9 du code, il est essentiel de comprendre toute la structure du code ainsi que la source du probl\u00e8me sp\u00e9cifique.<\/p>\n<h4>Deuxi\u00e8me niveau de compr\u00e9hension : Pourquoi cela fonctionne-t-il ?<\/h4>\n<p>\nCe niveau est beaucoup moins intuitif que le pr\u00e9c\u00e9dent. En tant que d\u00e9veloppeur d\u00e9butant, je l'ai compris gr\u00e2ce \u00e0 mon sup\u00e9rieur, et par la suite, j'ai souvent expliqu\u00e9 ce principe \u00e0 des novices.<\/p>\n<p>Cette fois, imaginons que vous recevez deux rapports de bugs simultan\u00e9ment : le premier concerne le sc\u00e9nario A, le second le sc\u00e9nario B. Dans les deux cas, quelque chose ne va pas. Vous commencez donc par le premier bug. En vous basant sur les principes que nous avons \u00e9tablis pour le premier niveau de compr\u00e9hension, vous vous plonger dans le code li\u00e9 au probl\u00e8me, d\u00e9couvrez pourquoi il fait agir l'application de cette mani\u00e8re dans le sc\u00e9nario A, et y apportez des modifications raisonnables qui donnent exactement le r\u00e9sultat attendu. Tout se passe bien.<\/p>\n<p>Ensuite, vous passez au sc\u00e9nario B. Vous r\u00e9p\u00e9tez le sc\u00e9nario en essayant de provoquer l'erreur, mais \u2014 surprise ! \u2014 tout fonctionne maintenant comme pr\u00e9vu. Pour confirmer votre hypoth\u00e8se, vous annulez les modifications apport\u00e9es lors du traitement du bug A, et le bug B r\u00e9appara\u00eet. Votre correctif a r\u00e9solu les deux probl\u00e8mes. Quelle chance !<\/p>\n<p>Vous ne vous y attendiez pas du tout. Vous avez trouv\u00e9 un moyen de corriger l'erreur du sc\u00e9nario A et vous ne savez pas pourquoi cela a fonctionn\u00e9 pour le sc\u00e9nario B. \u00c0 ce stade, il y a une forte tentation de penser que les deux t\u00e2ches ont \u00e9t\u00e9 accomplies avec succ\u00e8s. C'est logique : l'id\u00e9e \u00e9tait de corriger les erreurs, n'est-ce pas ? Mais le travail n'est pas encore termin\u00e9 : vous devez encore comprendre pourquoi vos actions ont corrig\u00e9 l'erreur dans le sc\u00e9nario B. Pourquoi ? Parce qu'il fonctionne peut-\u00eatre sur des principes incorrects, et vous devrez alors chercher une autre solution. Voici quelques exemples de tels cas :<\/p>\n<ul>\n<li>\u00c9tant donn\u00e9 que la solution n'a pas \u00e9t\u00e9 adapt\u00e9e pr\u00e9cis\u00e9ment \u00e0 l'erreur B en tenant compte de tous les facteurs, vous avez peut-\u00eatre, sans le savoir, cass\u00e9 la fonction C. <\/li>\n<li>Il est possible qu'un troisi\u00e8me bogue soit \u00e9galement cach\u00e9 quelque part, li\u00e9 \u00e0 cette m\u00eame fonction, et que votre correctif lie le bon fonctionnement du syst\u00e8me dans le sc\u00e9nario B \u00e0 ce dernier. Pour l'instant, tout semble en ordre, mais un jour, ce troisi\u00e8me bogue sera remarqu\u00e9 et corrig\u00e9. Alors, l'erreur r\u00e9appara\u00eetra dans le sc\u00e9nario B, esp\u00e9rons-le seulement l\u00e0.<\/li>\n<\/ul>\n<p>\nTout cela apporte du chaos dans le code et finira par vous tomber dessus \u2014 probablement au pire moment. Vous devrez rassembler votre courage pour vous forcer \u00e0 prendre le temps de comprendre pourquoi tout fonctionne en apparence, mais cela en vaut la peine. <\/p>\n<h4>Troisi\u00e8me niveau de compr\u00e9hension : Pourquoi \u00e7a fonctionne ?<\/h4>\n<p>\nMa r\u00e9cente r\u00e9v\u00e9lation est justement li\u00e9e \u00e0 ce niveau, et c'est probablement celui qui m'apporterait le plus d'avantages si j'y avais pens\u00e9 plus t\u00f4t.<\/p>\n<p>Pour clarifier, prenons un exemple : votre module doit \u00eatre compatible avec la fonction X. Vous n'\u00eates pas particuli\u00e8rement familier avec la fonction X, mais on vous a dit que pour \u00eatre compatible avec elle, vous devez utiliser le framework F. D'autres modules qui s'int\u00e8grent \u00e0 X fonctionnent justement avec celui-ci.<\/p>\n<p>Votre code n'a jamais \u00e9t\u00e9 en contact avec le framework F depuis le premier jour de sa cr\u00e9ation, donc son int\u00e9gration ne sera pas si simple. Cela aura de s\u00e9rieuses cons\u00e9quences sur certaines parties du module. N\u00e9anmoins, vous vous investissez \u00e0 fond dans le d\u00e9veloppement\u00a0: vous passez des semaines \u00e0 \u00e9crire du code, \u00e0 le tester, \u00e0 d\u00e9ployer des versions pilotes, \u00e0 obtenir des retours, \u00e0 corriger des erreurs de r\u00e9gression, \u00e0 d\u00e9couvrir des complications inattendues, \u00e0 d\u00e9passer les d\u00e9lais initialement fix\u00e9s, \u00e0 \u00e9crire encore du code, \u00e0 tester, \u00e0 recevoir des retours, \u00e0 corriger des erreurs de r\u00e9gression \u2014 tout cela pour int\u00e9grer le framework F.<\/p>\n<p>Et \u00e0 un moment donn\u00e9, vous r\u00e9alisez soudainement \u2014 ou peut-\u00eatre entendez-vous de quelqu'un \u2014 que le framework F ne vous permettra peut-\u00eatre pas d'avoir la compatibilit\u00e9 avec la fonction X. Peut-\u00eatre que tout ce temps et tous ces efforts ont \u00e9t\u00e9 consacr\u00e9s \u00e0 quelque chose de totalement inutile.<\/p>\n<p>Quelque chose de semblable m'est arriv\u00e9 lors d'un projet dont j'\u00e9tais responsable. Pourquoi cela s'est-il produit ? Parce que je comprenais mal la nature de la fonction X et son lien avec le framework F. Que devrais-je faire ? Demander \u00e0 la personne qui \u00e9met la demande de d\u00e9veloppement d'expliquer clairement comment le plan d'action propos\u00e9 aboutit au r\u00e9sultat souhait\u00e9, au lieu de simplement r\u00e9p\u00e9ter ce qui avait \u00e9t\u00e9 fait pour d'autres modules ou de croire sur parole que c'\u00e9tait n\u00e9cessaire pour le fonctionnement de la fonction X.<\/p>\n<p>L'exp\u00e9rience de ce projet m'a appris \u00e0 refuser de commencer le processus de d\u00e9veloppement tant que nous n'avons pas une compr\u00e9hension claire des raisons pour lesquelles nous sommes invit\u00e9s \u00e0 effectuer certaines actions. Refuser de mani\u00e8re franche. Lorsque vous recevez une t\u00e2che, le premier r\u00e9flexe est de s'y atteler imm\u00e9diatement pour ne pas perdre de temps. Mais la politique de \u00ab nous gelons le projet jusqu'\u00e0 ce que nous ayons compris tous les d\u00e9tails \u00bb peut r\u00e9duire consid\u00e9rablement le temps perdu. <\/p>\n<p>M\u00eame si l'on essaie de vous mettre la pression pour commencer \u00e0 travailler alors que vous ne comprenez pas la raison, r\u00e9sistez. D'abord, comprenez les objectifs sous-tendant la t\u00e2che, et d\u00e9terminez si ce chemin est le bon vers cet objectif. J'ai d\u00fb apprendre cela \u00e0 mes d\u00e9pens \u2014 j'esp\u00e8re que mon exp\u00e9rience pourra faciliter la vie de ceux qui lisent cela.<\/p>\n<h4>Quatri\u00e8me niveau de compr\u00e9hension : ???<\/h4>\n<p>\nEn programmation, il y a toujours quelque chose \u00e0 apprendre, et je pense que je n'ai effleur\u00e9 que la surface de compr\u00e9hension. Quels autres niveaux de compr\u00e9hension avez-vous d\u00e9couverts au fil des ann\u00e9es pass\u00e9es \u00e0 coder ? Quelles d\u00e9cisions ont eu un impact positif sur la qualit\u00e9 du code et de l'application ? Quelles d\u00e9cisions se sont r\u00e9v\u00e9l\u00e9es erron\u00e9es et vous ont enseign\u00e9 une le\u00e7on pr\u00e9cieuse ? Partagez vos exp\u00e9riences dans les commentaires.<br \/>\n<br \/>Source : <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/digital-ecosystems\/blog\/459588\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0421 \u043d\u0430\u0447\u0430\u043b\u0430 2018 \u0433\u043e\u0434\u0430 \u044f \u0437\u0430\u043d\u0438\u043c\u0430\u044e \u0434\u043e\u043b\u0436\u043d\u043e\u0441\u0442\u044c \u043b\u0438\u0434\u0430\/\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0438\u043a\u0430\/\u0432\u0435\u0434\u0443\u0449\u0435\u0433\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u2014 \u043d\u0430\u0437\u044b\u0432\u0430\u0439\u0442\u0435 \u044d\u0442\u043e \u043a\u0430\u043a \u0445\u043e\u0442\u0438\u0442\u0435, \u043d\u043e \u0441\u0443\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u044f \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043e\u0442\u0432\u0435\u0447\u0430\u044e \u0437\u0430 \u043e\u0434\u0438\u043d \u0438\u0437 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0438 \u0437\u0430 \u0432\u0441\u0435\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0434 \u043d\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442. \u042d\u0442\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043c\u043d\u0435 \u043d\u043e\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0442\u0430\u043a \u043a\u0430\u043a \u044f \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d \u0432 \u0431\u043e\u043b\u044c\u0448\u0435\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u0435\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":27008,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-36115","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0421 \u043d\u0430\u0447\u0430\u043b\u0430 2018 \u0433\u043e\u0434\u0430 \u044f \u0437\u0430\u043d\u0438\u043c\u0430\u044e \u0434\u043e\u043b\u0436\u043d\u043e\u0441\u0442\u044c.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/fr\/blog\/news\/ne-soglashajtes-razrabatyvat-to-chego-ne-ponimaete\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041d\u0435 \u0441\u043e\u0433\u043b\u0430\u0448\u0430\u0439\u0442\u0435\u0441\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0442\u043e, \u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0421 \u043d\u0430\u0447\u0430\u043b\u0430 2018 \u0433\u043e\u0434\u0430 \u044f \u0437\u0430\u043d\u0438\u043c\u0430\u044e \u0434\u043e\u043b\u0436\u043d\u043e\u0441\u0442\u044c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/fr\/blog\/news\/ne-soglashajtes-razrabatyvat-to-chego-ne-ponimaete\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:09:42+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:09:42+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Ne vous engagez pas \u00e0 d\u00e9velopper ce que vous ne comprenez pas | ProHoster","description":"Depuis d\u00e9but 2018, j'occupe le poste de.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/news\/ne-soglashajtes-razrabatyvat-to-chego-ne-ponimaete","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041d\u0435 \u0441\u043e\u0433\u043b\u0430\u0448\u0430\u0439\u0442\u0435\u0441\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0442\u043e, \u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0435 | ProHoster","og:description":"\u0421 \u043d\u0430\u0447\u0430\u043b\u0430 2018 \u0433\u043e\u0434\u0430 \u044f \u0437\u0430\u043d\u0438\u043c\u0430\u044e \u0434\u043e\u043b\u0436\u043d\u043e\u0441\u0442\u044c.","og:url":"https:\/\/prohoster.info\/fr\/blog\/news\/ne-soglashajtes-razrabatyvat-to-chego-ne-ponimaete","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:09:42+00:00","article:modified_time":"2019-10-31T19:09:42+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"36115","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-22 02:04:38","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:50:24","updated":"2026-01-22 02:04:38","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/36115","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=36115"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/36115\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/27008"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=36115"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=36115"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=36115"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}