{"id":947,"date":"2009-10-22T13:24:05","date_gmt":"2009-10-22T11:24:05","guid":{"rendered":"http:\/\/www.do-as-i-say.com\/notes\/?p=947"},"modified":"2012-12-02T13:59:52","modified_gmt":"2012-12-02T11:59:52","slug":"symfony-poetry","status":"publish","type":"post","link":"https:\/\/www.do-as-i-say.com\/notes\/2009\/10\/symfony-poetry\/","title":{"rendered":"La beauty de la poetry dans Symfony"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-971\" style=\"border: 1px solid black;\" title=\"La po\u00e9sie, cbeautiful\" src=\"http:\/\/www.do-as-i-say.com\/notes\/wp-content\/uploads\/poetry.jpg\" alt=\"La po\u00e9sie, cbeautiful\" width=\"128\" height=\"128\" \/>Dans le d\u00e9veloppement web comme dans la programmation en g\u00e9n\u00e9ral, on utilise\u00a0 beaucoup de termes emprunt\u00e9s \u00e0 l&rsquo;anglais, dans des versions plus ou moins traduites ou transpos\u00e9es. Comme dans tout langage technique o\u00f9 on utilise, \u00e0 plus ou moins bon escient, des termes d&rsquo;origine \u00e9trang\u00e8re, \u00e7a donne lieu dans les \u00e9changes oraux ou \u00e9crits \u00e0 des phrases m\u00e9langeant all\u00e8grement des mots d&rsquo;origines diverses, dans un melting-pot qui souvent frise le ridicule, mais parfois rec\u00e8le une bonne dose de po\u00e9sie (oui, bon, moi \u00e7a me parle, cette po\u00e9sie, je sais bien que \u00e7a n&rsquo;est pas forc\u00e9ment le cas de tout le monde, mais c&rsquo;est comme \u00e7a).<br \/>\n<!--more--><\/p>\n<p>Je n&rsquo;aborderai pas ici le d\u00e9bat, en partie st\u00e9rile, consistant \u00e0 se demander s&rsquo;il faut traduire ou non tous ces termes et\/ou cr\u00e9er des \u00e9quivalents en fran\u00e7ais quand il n&rsquo;y a pas de mot existant. Une langue vivante est, comme son nom l&rsquo;indique, <em>vivante<\/em> (eh ouaip, ne me remerciez pas), comme tout organisme elle mue, agr\u00e8ge des \u00e9l\u00e9ments, transforme de la mati\u00e8re en d&rsquo;autres choses, et c&rsquo;est tr\u00e8s bien (mieux : c&rsquo;est vital \u2014 une langue que ne bouge plus est, comme on le dit fort bien, une <em>langue morte<\/em>).<\/p>\n<p>Non, je vais juste ici \u00e9voquer quelques uns des mots qu&rsquo;on pratique beaucoup en <a href=\"http:\/\/www.sensiolabs.com\" target=\"_blank\">environnement professionnel<\/a>, ceux qui ont pour mon oreille un peu bizarre des r\u00e9sonances particuli\u00e8rement dr\u00f4les ou po\u00e9tiques. \u00c7a me donnera au passage l&rsquo;occasion de parler un peu d&rsquo;un framework que j&rsquo;aime bien (voir <a href=\"http:\/\/www.do-as-i-say.com\/notes\/2009\/08\/framework-symfony-explique-a-ma-maman-1\/\" target=\"_blank\">ici<\/a>, <a href=\"http:\/\/www.do-as-i-say.com\/notes\/2009\/09\/design-patterns-symfony-explique-a-ma-maman-2\/\" target=\"_blank\">ici<\/a>, ou <a href=\"http:\/\/www.do-as-i-say.com\/notes\/2009\/09\/decouplage-symfony-explique-a-ma-maman-3\/\" target=\"_blank\">ici<\/a>). On pourrait appeler cette liste \u00ab\u00a0les 10 termes \u00e0 conna\u00eetre pour <em>speaker<\/em> fluemment le Symfony <em>in <\/em>le texte\u00a0\u00bb.<\/p>\n<ul>\n<li><strong>autoload <\/strong>: ne me demandez pas pourquoi celui-l\u00e0 me plait, il y a des chances que \u00e7a ait \u00e0 voir avec Goldorak (autolargue, quoi).\u00a0 En ce qui nous concerne, l&rsquo;autoload est une fonctionnalit\u00e9 un petit peu magique qui dispense le d\u00e9veloppeur d&rsquo;inclure explicitement chacun des fichiers d\u00e9finissant les classes dont il a besoin, le framework (chez nous, c&rsquo;est <a href=\"http:\/\/www.symfony-project.org\">Symfony<\/a>, des fois que je ne l&rsquo;aurais pas dit) se chargeant \u00e0 chaque nouvelle instanciation d&rsquo;objet de fouiller les r\u00e9pertoires qui vont bien \u00e0 la recherche du fichier n\u00e9cessaire et de l&rsquo;inclure dans votre dos sans que vous ayiez \u00e0 vous en soucier.<\/li>\n<li><strong>bootstraping <\/strong>: souvent utilis\u00e9 dans un <a href=\"http:\/\/www.do-as-i-say.com\/notes\/2009\/09\/les-10-termes-a-connaitre-pour-etre-un-bon-chef-de-projet\/\" target=\"_blank\">discours de v\u00e9rit\u00e9<\/a> pour en jeter un max, le <em>bootstraping<\/em> est litt\u00e9ralement la\u00e7age de chaussure (ou serrage de sangle de botte&#8230;) Les <em>bootstrap<\/em>s sont concr\u00e8tement des anneaux cousus sur le rebord des bottes, qu&rsquo;on utilise pour s&rsquo;aider \u00e0 les chausser. En anglais courant, le verbe <em>bootstrap<\/em> signifie d&rsquo;ailleurs \u00ab\u00a0se d\u00e9brouiller tout seul\u00a0\u00bb. Pour la fine bouche, signalons que dans la litt\u00e9rature anglaise le verbe est \u00e9galement une r\u00e9f\u00e9rence aux aventures du baron de M\u00fcnchhausen qui, embourb\u00e9 dans un mar\u00e9cage, s&rsquo;en sort en se tirant lui-m\u00eame par ses bottes pour se propulser dans les airs&#8230;<br \/>\n\u00ab\u00a0Bootstraper\u00a0\u00bb, puisqu&rsquo;on l&rsquo;utilise bien entendu comme verbe francis\u00e9, consiste \u00e0 d\u00e9marrer le boulot en en pr\u00e9m\u00e2chant l&rsquo;essentiel, pour obtenir rapidement une base pouvant servir au d\u00e9veloppement d&rsquo;une application plus puissante par la suite.<\/li>\n<li><strong>c\u00e9c\u00e9 <\/strong>: ou \u00ab\u00a0cici\u00a0\u00bb, si on le fait \u00e0 l&rsquo;anglaise ; abbr\u00e9viation et alias de la commande Symfony clear-cache (puis plus r\u00e9cemment cache:clear) utilis\u00e9e pour <em>clearer<\/em> le cache (le vider, quoi). On doit entendre chez Sensiolabs environ 167 fois par jour \u00ab\u00a0t&rsquo;as fait un c\u00e9c\u00e9 ?\u00a0\u00bb.<\/li>\n<li><strong>crud <\/strong>: \u00e0 prononcer \u00ab\u00a0crude\u00a0\u00bb, ou \u00ab\u00a0creude\u00a0\u00bb, bien s\u00fbr. Acronyme de Create-Retrieve-Update-Delete, qui sont les quatre fonctions de base d&rsquo;une interface simple d&rsquo;administration de donn\u00e9es.<\/li>\n<li><strong>fixtures : <\/strong>toujours un peu difficile \u00e0 dire pour les fran\u00e7ais, les <em>fikstcheurzes<\/em> sont des donn\u00e9es servant \u00e0 tester et\/ou initialiser une application, stock\u00e9es dans un format simple \u00e0 \u00e9diter et \u00e0 utiliser pour des injections automatiques (voir <em>populate<\/em> plus bas).<\/li>\n<li><strong>helper <\/strong>: j&rsquo;aime bien l&rsquo;id\u00e9e d&rsquo; \u00ab\u00a0aideurs\u00a0\u00bb (j&rsquo;imagine que l&rsquo;administration nous ferait dire \u00ab\u00a0aidants\u00a0\u00bb) qui avec leur petits bras musk\u00e9s font des trucs pour toi. Un <em>helper<\/em> est en effet une petite fonction destin\u00e9e en g\u00e9n\u00e9ral \u00e0 retourner du code HTML r\u00e9p\u00e9titif, construit avec des param\u00e8tres ou propri\u00e9t\u00e9s d&rsquo;un objet qu&rsquo;on lui passe.<\/li>\n<li><strong>hydrate : <\/strong>liquide et po\u00e9tique image qui touche au sublime : \u00ab\u00a0hydrater un objet\u00a0\u00bb consiste \u00e0 lui attribuer des valeurs qu&rsquo;on a r\u00e9cup\u00e9r\u00e9es en vrac par ailleurs (pour faire tr\u00e8s simple), cette attribution devant \u00eatre \u00ab\u00a0intelligente\u00a0\u00bb, c&rsquo;est-\u00e0-dire qu&rsquo;elle doit faire correspondre \u00e0 la bonne propri\u00e9t\u00e9 la bonne valeur. On peut \u00ab\u00a0hydrater \u00e0 la main\u00a0\u00bb, ce qui n&rsquo;a rien \u00e0 voir avec une cr\u00e8me de jour, ou recourir \u00e0 des fonctions qui <a href=\"http:\/\/www.symfony-project.org\/cookbook\/1_2\/en\/retrieving_data_with_doctrine#chapter_f6fc97d827760d5157133eaf9798ddaf_array_hydration\" target=\"_blank\">m\u00e2chent le travail<\/a>.<\/li>\n<li><strong>populate <\/strong>: autre m\u00e9taphore que j&rsquo;affectionne particuli\u00e8rement, qu&rsquo;on emploie un peu indiff\u00e9remment en anglais ou dans sa version fran\u00e7aise ( \u00ab\u00a0peupler\u00a0\u00bb, ou le n\u00e9ologique \u00ab\u00a0populer\u00a0\u00bb). <em>Peupler <\/em>une base de donn\u00e9es consiste \u00e0 lui injecter des donn\u00e9es de tests ou des donn\u00e9es initiales n\u00e9cessaires \u00e0 l&rsquo;application (utilisateurs, contenus de d\u00e9part&#8230;) ; pour faciliter la vie des d\u00e9veloppeurs, il existe dans Symfony des fa\u00e7ons d&rsquo;automatiser cette action pour pouvoir la r\u00e9p\u00e9ter en deux coups de cuiller \u00e0 pot et ins\u00e9rer des <em>fixtures<\/em> en une seule commande.<br \/>\nIl existe aussi la variante \u00ab\u00a0<strong>repeupler<\/strong>\u00ab\u00a0, qui d\u00e9signe le fait de r\u00e9afficher les donn\u00e9es saisies par l&rsquo;utilisateur dans un formulaire s&rsquo;il contient des erreurs ou doit \u00eatre compl\u00e9t\u00e9. On a tous un jour exp\u00e9riment\u00e9 la douleur de l&rsquo;absence de repopulation, quand on a pass\u00e9 du temps \u00e0 remplir un formulaire, qu&rsquo;on valide, qu&rsquo;il est refus\u00e9 pour une quelconque raison, mais est r\u00e9affich\u00e9 tout vide, et qu&rsquo;on doit tout ressaisir&#8230; Vous pourrez maintenant hurler \u00ab\u00a0IL N&rsquo;A PAS \u00c9T\u00c9 REPEUPL\u00c9, BORDEL DE M&#8230; !\u00a0\u00bb<\/li>\n<li><strong>routing <\/strong>: celui-l\u00e0 aussi on le traduit peu (le \u00ab\u00a0routage\u00a0\u00bb gardera quoiqu&rsquo;on en dise toujours une connotation de service postal). Le routing est le m\u00e9canisme qui r\u00e9\u00e9crit et\/ou traduit les urls (selon le sens o\u00f9 on le regarde) pour permettre de param\u00e9trer des adresses, comme on dit, plus sympathiques pour les utilisateurs et les moteurs de recherche (respectivement : <em>user-friendly<\/em>, et <em>search-engine-friendly<\/em> ; ou\u00e9\u00e9\u00e9\u00e9, copaaaing !) Il est li\u00e9 \u00e0 ce qu&rsquo;on appelle la r\u00e9\u00e9criture d&rsquo;url, qu&rsquo;on dit tr\u00e8s souvent \u00e0 l&rsquo;anglaise aussi : l&rsquo;<em>iouharelle rira\u00eftingue<\/em>.<\/li>\n<li><strong>sandbox <\/strong>: litt\u00e9ralement \u00ab\u00a0bac \u00e0 sable\u00a0\u00bb, d\u00e9signe une mode autonome de distribution d&rsquo;une application, pour faciliter son installation et permettre des tests o\u00f9 les risques d&rsquo;impact pour le reste du serveur sont limit\u00e9s sinon nuls. En d&rsquo;autres termes : pour faire joujou dans son bac \u00e0 sable o\u00f9 on peut tout crader sans g\u00eaner personne.<\/li>\n<li><strong>scaffolding <\/strong>: image tr\u00e8s sympathique, qu&rsquo;on pourrait traduire par \u00ab\u00a0\u00e9chaufadage\u00a0\u00bb. Assez proche du <em>bootstraping<\/em>, le <em>scaffolding<\/em> est plus sp\u00e9cifiquement li\u00e9 \u00e0 la fa\u00e7on d&rsquo;exploiter la structure d&rsquo;une base de donn\u00e9es. Il se base sur une description formalis\u00e9e de cette structure (dans <a href=\"http:\/\/www.symfony-project.org\/book\/1_2\/08-Inside-the-Model-Layer#chapter_08_sub_beyond_the_schema_yml_the_schema_xml\" target=\"_blank\">Symfony, par exemple<\/a>, dans un fichier <em>schema.yml<\/em>) pour g\u00e9n\u00e9rer automatiquement une interface d&rsquo;administration <em>crud <\/em>(voir plus haut). C&rsquo;est ce que fait le bien nomm\u00e9 <em>admin generator<\/em>,\u00a0 affectueusement appel\u00e9 <em>admin gen <\/em>(prononcez \u00ab\u00a0admine j\u00e8ne\u00a0\u00bb), dans Symfony. En quoi on peut dire : \u00ab\u00a0l&rsquo;<em>admin gen<\/em>, \u00e7a consiste \u00e0 <em>bootstraper <\/em>ton <em>backoffice <\/em>en faisant du <em>scaffolding<\/em> avec des interfaces <em>crud\u00a0\u00bb<\/em>. <em><br \/>\n<\/em>Cpas <em>beautiful<\/em>, \u00e7a ?<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Dans le d\u00e9veloppement web comme dans la programmation en g\u00e9n\u00e9ral, on utilise\u00a0 beaucoup de termes emprunt\u00e9s \u00e0 l&rsquo;anglais, dans des versions plus ou moins traduites ou transpos\u00e9es. Comme dans tout langage technique o\u00f9 on utilise, \u00e0 plus ou moins bon escient, des termes d&rsquo;origine \u00e9trang\u00e8re, \u00e7a donne lieu dans les \u00e9changes oraux ou \u00e9crits \u00e0 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[51],"tags":[21,26,12,55],"class_list":["post-947","post","type-post","status-publish","format-standard","hentry","category-misc","tag-framework","tag-langage","tag-metaphore","tag-symfony"],"_links":{"self":[{"href":"https:\/\/www.do-as-i-say.com\/notes\/wp-json\/wp\/v2\/posts\/947","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.do-as-i-say.com\/notes\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.do-as-i-say.com\/notes\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.do-as-i-say.com\/notes\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.do-as-i-say.com\/notes\/wp-json\/wp\/v2\/comments?post=947"}],"version-history":[{"count":54,"href":"https:\/\/www.do-as-i-say.com\/notes\/wp-json\/wp\/v2\/posts\/947\/revisions"}],"predecessor-version":[{"id":1193,"href":"https:\/\/www.do-as-i-say.com\/notes\/wp-json\/wp\/v2\/posts\/947\/revisions\/1193"}],"wp:attachment":[{"href":"https:\/\/www.do-as-i-say.com\/notes\/wp-json\/wp\/v2\/media?parent=947"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.do-as-i-say.com\/notes\/wp-json\/wp\/v2\/categories?post=947"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.do-as-i-say.com\/notes\/wp-json\/wp\/v2\/tags?post=947"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}