{"id":36795,"date":"2019-10-31T22:13:50","date_gmt":"2019-10-31T19:13:50","guid":{"rendered":"https:\/\/prohoster.info\/blog\/kak-perestat-delat-odno-i-to-zhe\/"},"modified":"2019-10-31T22:13:50","modified_gmt":"2019-10-31T19:13:50","slug":"kak-perestat-delat-odno-i-to-zhe","status":"publish","type":"post","link":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/kak-perestat-delat-odno-i-to-zhe","title":{"rendered":"Comment arr\u00eater de faire la m\u00eame chose","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Vous aimez r\u00e9p\u00e9ter des op\u00e9rations routini\u00e8res encore et encore ? Moi pas. Mais \u00e0 chaque fois que je travaillais avec le stockage de Rostelecom dans le client SQL, je devais \u00e9crire manuellement toutes les jointures entre les tables. Et pourtant, dans 90 % des cas, les champs et les conditions de jointure des tables \u00e9taient les m\u00eames d'une requ\u00eate \u00e0 l'autre ! On pourrait penser que tout client SQL dispose de fonctions de saisie automatique, mais pour les stockages, cela ne fonctionne pas toujours : il est rare d\u2019y trouver des contraintes d\u2019unicit\u00e9 et des cl\u00e9s \u00e9trang\u00e8res pour am\u00e9liorer les performances, et sans cela, le programme ne peut pas savoir comment les entit\u00e9s sont li\u00e9es entre elles et ce qu'il peut vous proposer.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/rostelecom\/blog\/462021\/\"><img decoding=\"async\" alt=\"Comment arr\u00eater de faire la m\u00eame chose\" src=\"\/wp-content\/uploads\/2019\/08\/998faa579fa9772fa4509980be551be3.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Apr\u00e8s avoir travers\u00e9 le d\u00e9ni, la col\u00e8re, le marchandage, la d\u00e9pression et en m\u2019approchant de l\u2019acceptation, j'ai d\u00e9cid\u00e9 \u2013 pourquoi ne pas essayer de mettre en place la saisie automatique avec du blackjack et tout le reste ? J'utilise le client dbeaver, qui est \u00e9crit en java, et il a une version communautaire avec un code source ouvert. J'ai con\u00e7u un plan simple :<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<ol>\n<li>Trouver dans le code source les classes responsables de la saisie automatique<\/li>\n<li>R\u00e9orienter leur utilisation pour travailler avec des m\u00e9tadonn\u00e9es externes et extraire les informations sur les jointures<\/li>\n<li>??????<\/li>\n<li>PROFIT<\/li>\n<\/ol>\n<p>\nJ'ai rapidement compris le premier point \u2014 j'ai trouv\u00e9 dans le bug tracker une demande pour corriger la saisie automatique et dans le commit associ\u00e9 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/dbeaver\/dbeaver\/commit\/4f7652c1d11f21d29cf734155b133e9a426c727f\">j'ai d\u00e9couvert la classe SQLCompletionAnalyzer. J'ai regard\u00e9 le code \u2014 c'est exactement ce qu'il me fallait. Il ne restait plus qu\u2019\u00e0 le r\u00e9\u00e9crire pour que tout fonctionne. J'ai attendu une soir\u00e9e libre et commenc\u00e9 \u00e0 planifier la mise en \u0153uvre. J'ai d\u00e9cid\u00e9 de conserver les r\u00e8gles de relations des tables (m\u00e9tadonn\u00e9es) en json. Je n'avais pas d'exp\u00e9rience pratique avec ce format et la t\u00e2che actuelle me semblait \u00eatre une opportunit\u00e9 de corriger cette lacune.<\/a><\/noindex> Pour travailler avec json, j'ai d\u00e9cid\u00e9 d'utiliser la biblioth\u00e8que <\/p>\n<p>json-simple <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/fangyidong\/json-simple\">de Google. C'est alors que les surprises ont commenc\u00e9. Comme il s'est av\u00e9r\u00e9, dbeaver, en tant qu'application s\u00e9rieuse, est \u00e9crit sur la plateforme Eclipse en utilisant le cadre OSGi. Pour les d\u00e9veloppeurs exp\u00e9riment\u00e9s, cela offre une commodit\u00e9 de gestion des d\u00e9pendances, mais pour moi, cela ressemblait davantage \u00e0 de la magie noire \u00e0 laquelle je n'\u00e9tais clairement pas pr\u00e9par\u00e9 : comme d'habitude, j'ai inscrit l'importation des classes dont j'avais besoin de la biblioth\u00e8que json-simple en haut de la classe modifi\u00e9e, je l'ai indiqu\u00e9e dans le pom.xml, apr\u00e8s quoi le projet refuse cat\u00e9goriquement de se construire correctement et s'effondre avec des erreurs.<\/a><\/noindex> de Google. C'est l\u00e0 que les surprises ont commenc\u00e9. Comme il s'est av\u00e9r\u00e9, dbeaver, en tant qu'application s\u00e9rieuse, est \u00e9crit sur la plateforme Eclipse en utilisant le framework OSGi. Pour les d\u00e9veloppeurs exp\u00e9riment\u00e9s, cet outil offre une gestion pratique des d\u00e9pendances, mais pour moi, c'\u00e9tait plut\u00f4t comme de la magie noire, \u00e0 laquelle je n'\u00e9tais clairement pas pr\u00e9par\u00e9 : comme d'habitude, j'importe les classes dont j'ai besoin \u00e0 partir de la biblioth\u00e8que json-simple en haut de la classe modifi\u00e9e, je la sp\u00e9cifie dans le pom.xml, apr\u00e8s quoi le projet refuse cat\u00e9goriquement de se compiler correctement et \u00e9choue avec des erreurs. <\/p>\n<p>Pour r\u00e9soudre les erreurs de build, j'ai en fait d\u00e9clar\u00e9 la biblioth\u00e8que non pas dans pom.xml, mais dans le manifeste manifest.mf, comme l'exige OSGI, en l'indiquant comme import-package. Ce n'est pas la solution la plus \u00e9l\u00e9gante, mais cela fonctionne. Ensuite, une autre surprise est apparue. Si vous d\u00e9veloppez dans IntelliJ IDEA, vous ne pouvez pas simplement lancer le d\u00e9bogage de votre projet bas\u00e9 sur Eclipse : un d\u00e9veloppeur novice doit souffrir autant qu'un analyste sans compl\u00e9tion automatique des requ\u00eates. Les d\u00e9veloppeurs de Beaver ont aid\u00e9 en indiquant dans la wiki tous les rituels n\u00e9cessaires. Ce qui est particuli\u00e8rement frustrant, c'est qu'apr\u00e8s toutes ces d\u00e9marches, le projet ne voulait toujours pas se lancer en mode d\u00e9bogage avec une biblioth\u00e8que JSON connect\u00e9e via import-package (bien qu'il se soit toujours bien construit dans le produit final). <\/p>\n<p>\u00c0 ce moment-l\u00e0, j'avais d\u00e9j\u00e0 ressenti l'inconv\u00e9nient d'utiliser JSON pour ma t\u00e2che - apr\u00e8s tout, les m\u00e9tadonn\u00e9es devaient \u00eatre modifi\u00e9es manuellement, et pour cela, le format XML est mieux adapt\u00e9. Un deuxi\u00e8me argument en faveur de XML \u00e9tait la pr\u00e9sence dans JDK de toutes les classes n\u00e9cessaires, ce qui a permis d'arr\u00eater de lutter contre une biblioth\u00e8que externe. J'ai transf\u00e9r\u00e9 avec plaisir toutes les m\u00e9tadonn\u00e9es de JSON \u00e0 XML et j'ai commenc\u00e9 \u00e0 revoir la logique de l'autocompl\u00e9tion. <\/p>\n<p><b class=\"spoiler_title\">Exemple de m\u00e9tadonn\u00e9es<\/b><\/p>\n<pre><code class=\"xml\">dim_account\n        dim_partner\n        \n        \n    \n    \n        dim_account\n        dim_branch<\/code><\/pre>\n<p>En cons\u00e9quence, j'ai <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/v9854268996\/dbeaver\">apport\u00e9 des modifications<\/a><\/noindex> aux classes SQLUtils et SQLCompletionAnalyzer. L'id\u00e9e est la suivante : si le programme n'a pas r\u00e9ussi \u00e0 proposer des suggestions d'autocompl\u00e9tion par la logique de base, il v\u00e9rifie la disponibilit\u00e9 de joints possibles via un fichier XML externe. Dans ce fichier sont stock\u00e9es des paires de tables avec indication des champs par lesquels ces tables doivent \u00eatre reli\u00e9es. Les restrictions sur les dates techniques d'entr\u00e9e en vigueur des enregistrements eff_dttm et exp_dttm ainsi que le drapeau de suppression logique deleted_ind sont d\u00e9finis par d\u00e9faut.<\/p>\n<p>Une fois les modifications apport\u00e9es au code, une question s'est pos\u00e9e : qui va remplir le fichier de m\u00e9tadonn\u00e9es ? Il y a de nombreuses entit\u00e9s dans le r\u00e9f\u00e9rentiel, il serait trop lourd de d\u00e9finir toutes les relations soi-m\u00eame. Au final, j'ai d\u00e9cid\u00e9 de confier cette t\u00e2che \u00e0 mes coll\u00e8gues analystes. J'ai mis le fichier de m\u00e9tadonn\u00e9es dans svn, \u00e0 partir duquel se fait le checkout dans le r\u00e9pertoire local avec le programme. Le principe est le suivant : une nouvelle entit\u00e9 appara\u00eet dans le r\u00e9f\u00e9rentiel ? Un analyste ajoute les jointures possibles dans le fichier, valide les modifications, les autres font le checkout chez eux et profitent de l'auto-remplissage fonctionnel : communaut\u00e9, accumulation de connaissances, tout \u00e7a. J'ai organis\u00e9 un atelier pour mes coll\u00e8gues sur l'utilisation du programme et j'ai r\u00e9dig\u00e9 un article dans Confluence \u2014 maintenant, l'entreprise dispose d'un outil pratique suppl\u00e9mentaire.<\/p>\n<p>Travailler sur cette fonctionnalit\u00e9 m'a fait comprendre qu'il ne faut pas craindre d'explorer des projets open source \u2014 en g\u00e9n\u00e9ral, leur architecture est claire, et m\u00eame des connaissances de base dans le langage suffisent pour exp\u00e9rimenter. Avec une certaine dose de pers\u00e9v\u00e9rance, il est m\u00eame possible de se d\u00e9barrasser des op\u00e9rations r\u00e9p\u00e9titives d\u00e9test\u00e9es, gagnant ainsi du temps pour de nouvelles exp\u00e9riences.<br \/>\n<br \/>Source : <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/rostelecom\/blog\/462021\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u044b \u043b\u044e\u0431\u0438\u0442\u0435 \u0438\u0437 \u0440\u0430\u0437\u0430 \u0432 \u0440\u0430\u0437 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u0440\u0443\u0442\u0438\u043d\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438? \u0412\u043e\u0442 \u0438 \u044f \u043d\u0435\u0442. \u041d\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0432 SQL-\u043a\u043b\u0438\u0435\u043d\u0442\u0435 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u043c \u0420\u043e\u0441\u0442\u0435\u043b\u0435\u043a\u043e\u043c\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0434\u0436\u043e\u0439\u043d\u044b \u043c\u0435\u0436\u0434\u0443 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438 \u0440\u0443\u0447\u043a\u0430\u043c\u0438. \u0418 \u044d\u0442\u043e \u043f\u0440\u0438\u0442\u043e\u043c, \u0447\u0442\u043e \u0432 90% \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043f\u043e\u043b\u044f \u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0442\u0430\u0431\u043b\u0438\u0446 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u043b\u0438 \u043e\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043a \u0437\u0430\u043f\u0440\u043e\u0441\u0443! \u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u043b\u044e\u0431\u043e\u0439 SQL-\u043a\u043b\u0438\u0435\u043d\u0442 \u0438\u043c\u0435\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0430\u0432\u0442\u043e\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u043d\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":27562,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-36795","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u044b \u043b\u044e\u0431\u0438\u0442\u0435 \u0438\u0437 \u0440\u0430\u0437\u0430 \u0432 \u0440\u0430\u0437 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u0440\u0443\u0442\u0438\u043d\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438? \u0412\u043e\u0442 \u0438 \u044f \u043d\u0435\u0442. \u041d\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0432 SQL-\u043a\u043b\u0438\u0435\u043d\u0442\u0435 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u043c \u0420\u043e\u0441\u0442\u0435\u043b\u0435\u043a\u043e\u043c\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0434\u0436\u043e\u0439\u043d\u044b \u043c\u0435\u0436\u0434\u0443 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438 \u0440\u0443\u0447\u043a\u0430\u043c\u0438.\" \/>\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\/administrirovanie\/kak-perestat-delat-odno-i-to-zhe\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\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\u041a\u0430\u043a \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0442\u044c \u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u044b \u043b\u044e\u0431\u0438\u0442\u0435 \u0438\u0437 \u0440\u0430\u0437\u0430 \u0432 \u0440\u0430\u0437 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u0440\u0443\u0442\u0438\u043d\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438? \u0412\u043e\u0442 \u0438 \u044f \u043d\u0435\u0442. \u041d\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0432 SQL-\u043a\u043b\u0438\u0435\u043d\u0442\u0435 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u043c \u0420\u043e\u0441\u0442\u0435\u043b\u0435\u043a\u043e\u043c\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0434\u0436\u043e\u0439\u043d\u044b \u043c\u0435\u0436\u0434\u0443 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438 \u0440\u0443\u0447\u043a\u0430\u043c\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/kak-perestat-delat-odno-i-to-zhe\" \/>\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:13:50+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:13:50+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\udd47Comment arr\u00eater de faire la m\u00eame chose | ProHoster","description":"Aimez-vous r\u00e9p\u00e9ter inlassablement des op\u00e9rations routini\u00e8res ? Pas moi non plus. Mais \u00e0 chaque fois que j'utilisais le client SQL pour travailler avec le r\u00e9f\u00e9rentiel de Rostelecom, je devais d\u00e9finir toutes les jointures entre les tables manuellement.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/kak-perestat-delat-odno-i-to-zhe","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\u041a\u0430\u043a \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0442\u044c \u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435 | ProHoster","og:description":"\u0412\u044b \u043b\u044e\u0431\u0438\u0442\u0435 \u0438\u0437 \u0440\u0430\u0437\u0430 \u0432 \u0440\u0430\u0437 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u0440\u0443\u0442\u0438\u043d\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438? \u0412\u043e\u0442 \u0438 \u044f \u043d\u0435\u0442. \u041d\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0432 SQL-\u043a\u043b\u0438\u0435\u043d\u0442\u0435 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u043c \u0420\u043e\u0441\u0442\u0435\u043b\u0435\u043a\u043e\u043c\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0434\u0436\u043e\u0439\u043d\u044b \u043c\u0435\u0436\u0434\u0443 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438 \u0440\u0443\u0447\u043a\u0430\u043c\u0438.","og:url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/kak-perestat-delat-odno-i-to-zhe","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:13:50+00:00","article:modified_time":"2019-10-31T19:13:50+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"36795","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 04:53:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:38:24","updated":"2026-01-22 04:53:19","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\/36795","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=36795"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/36795\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/27562"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=36795"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=36795"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=36795"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}