{"id":3955,"date":"2012-04-01T03:00:06","date_gmt":"2012-04-01T01:00:06","guid":{"rendered":"http:\/\/blogs.wittwer.fr\/whiler\/?p=3955"},"modified":"2012-04-01T12:34:27","modified_gmt":"2012-04-01T10:34:27","slug":"eval-function-packer","status":"publish","type":"post","link":"https:\/\/blogs.wittwer.fr\/whiler\/2012\/04\/01\/eval-function-packer\/","title":{"rendered":"eval(function(p,a,c,k,e,r)"},"content":{"rendered":"<p>Plutot que de r\u00e9inventer la roue \u00e0 chaque fois, on utilise r\u00e9guli\u00e8rement des biblioth\u00e8ques de code, des applications toutes faites qui r\u00e9pondent \u00e0 nos besoins&#8230;<br \/>\nParmi tant d&rsquo;autres, j&rsquo;utilise par exemple <a href=\"https:\/\/fr.piwigo.org\/\" title=\"Site fran\u00e7ais de Piwigo\" target=\"_blank\">Piwigo<\/a> et <a href=\"https:\/\/www.wordpress-fr.net\/\" title=\"Site fran\u00e7ais de WordPress\" target=\"_blank\">WordPress<\/a>&#8230;<\/p>\n<p>Ces solutions sont hautement personnalisables et offrent la possibilit\u00e9 de d\u00e9velopper et\/ou d&rsquo;installer des <a href=\"http:\/\/fr.wikipedia.org\/wiki\/Plugin\" rel=\"glossary\" target=\"_blank\" title=\"Wikipedia, D&eacute;finition de&nbsp;: extensions\" style=\"\" >extensions<\/a><sup style=\"font-family: Georgia, Times New Roman, Serif; font-weight: bold; color: #AAAAAA\" ><em>W<\/em><\/sup>. <img src=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-includes\/images\/smilies\/skype\/\/bow.gif\" alt=\"(bow)\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/> <\/p>\n<p>Cependant, il arrive que certaines extensions soient bogu\u00e9es ou plus maintenues&#8230; Parfois, ce n&rsquo;est pas grand chose et l&rsquo;on voudrait pouvoir faire la modification n\u00e9cessaire afin de corriger le soucis&#8230;<\/p>\n<p>Concr\u00e8tement, j&rsquo;ai vu que j&rsquo;avais un petit bogue sur mon blog qui emp\u00eachait la navigation sur les pr\u00e9c\u00e9dents commentaires depuis le <a href=\"#recentcomments\" title=\"Derniers commentaires\">widget de la barre de droite<\/a>&#8230; Les fichiers JavaScript utilis\u00e9s sont compress\u00e9s afin d&rsquo;optimiser les temps de t\u00e9l\u00e9chargement&#8230; Aid\u00e9 de <a href=\"https:\/\/addons.mozilla.org\/fr\/firefox\/addon\/firebug\/\" title=\"Extension Firebug\" target=\"_blank\">Firebug<\/a> <img src=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-includes\/images\/smilies\/skype\/\/inlove.gif\" alt=\"(love)\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/> , il ne m&rsquo;a fallu que quelques minutes pour trouver un lien suspect&#8230; J&rsquo;ai alors utilis\u00e9 la version de d\u00e9veloppement fournie par le d\u00e9veloppeur de l&rsquo;extension pour effectuer la modification que je voulais tester&#8230; Cool, \u00e7a fonctionne&#8230;<\/p>\n<p><center><img loading=\"lazy\" decoding=\"async\" src=\"\/whiler\/wp-content\/uploads\/2012\/04\/compress-js.png\" alt=\"Compress JavaScript\" title=\"Compress JavaScript\" width=\"135\" height=\"148\" class=\"size-full wp-image-3957\" \/><\/center><\/p>\n<p>Mais ne souhaitant pas laisser la version de <em>dev<\/em> en <em>prod<\/em>, j&rsquo;ai cherch\u00e9 et tr\u00e8s rapidement trouv\u00e9 comment compresser cette version de d\u00e9veloppement&#8230; Afin d&rsquo;avoir \u00e0 nouveau un script commen\u00e7ant par <code class=\"codecolorer javascript dawn\"><span class=\"javascript\">eval<span class=\"br0\">&#40;<\/span><span class=\"kw1\">function<\/span><span class=\"br0\">&#40;<\/span>p<span class=\"sy0\">,<\/span>a<span class=\"sy0\">,<\/span>c<span class=\"sy0\">,<\/span>k<span class=\"sy0\">,<\/span>e<span class=\"sy0\">,<\/span>r<span class=\"br0\">&#41;<\/span><\/span><\/code>&#8230;<br \/>\n<!--more--><br \/>\nIl suffit simplement d&rsquo;aller sur <a href=\"https:\/\/dean.edwards.name\/packer\/\" target=\"_blank\">cette page<\/a>, de coller son script, de cocher les cases n\u00e9cessaires sur la droite, puis de cliquer sur le bouton <em>Pack<\/em>. <img src=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-includes\/images\/smilies\/skype\/\/yes.gif\" alt=\"(y)\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/> <\/p>\n<p>Bien s\u00fbr, pour qu&rsquo;un texte soit compress\u00e9, plus il sera long, plus cela sera int\u00e9ressant.. N\u00e9anmoins, \u00e0 titre d&rsquo;exemple, voila ce que l&rsquo;on peut obtenir&nbsp;:<\/p>\n<ul>\n<li>Au d\u00e9part&nbsp;:\n<div class=\"codecolorer-container html4strict dawn\" style=\"overflow:auto;white-space:nowrap;width:480px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/><\/div><\/td><td><div class=\"html4strict codecolorer\"><span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/html.html\"><span class=\"kw2\">html<\/span><\/a>&gt;<\/span><br \/>\n&nbsp; <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/head.html\"><span class=\"kw2\">head<\/span><\/a>&gt;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/title.html\"><span class=\"kw2\">title<\/span><\/a>&gt;<\/span>Test Compression<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/title.html\"><span class=\"kw2\">title<\/span><\/a>&gt;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/script.html\"><span class=\"kw2\">script<\/span><\/a> <span class=\"kw3\">type<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;text\/javascript&quot;<\/span>&gt;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; function hw() {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; alert('Hello world!');<br \/>\n&nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/script.html\"><span class=\"kw2\">script<\/span><\/a>&gt;<\/span><br \/>\n&nbsp; <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/head.html\"><span class=\"kw2\">head<\/span><\/a>&gt;<\/span><br \/>\n&nbsp; <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/body.html\"><span class=\"kw2\">body<\/span><\/a> <span class=\"kw3\">onload<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;javascript:hw();&quot;<\/span>&gt;<\/span><br \/>\n&nbsp; &nbsp; Hi!<br \/>\n&nbsp; <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/body.html\"><span class=\"kw2\">body<\/span><\/a>&gt;<\/span><br \/>\n<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/html.html\"><span class=\"kw2\">html<\/span><\/a>&gt;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<\/li>\n<li>Apr\u00e8s avoir compress\u00e9 le code plac\u00e9 entre les balise <code class=\"codecolorer html4strict dawn\"><span class=\"html4strict\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/script.html\"><span class=\"kw2\">script<\/span><\/a> <span class=\"sy0\">\/<\/span>&gt;<\/span><\/code>&nbsp;:\n<div class=\"codecolorer-container html4strict dawn\" style=\"overflow:auto;white-space:nowrap;width:480px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/><\/div><\/td><td><div class=\"html4strict codecolorer\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/html.html\"><span class=\"kw2\">html<\/span><\/a>&gt;<br \/>\n&nbsp; &lt;<a href=\"http:\/\/december.com\/html\/4\/element\/head.html\"><span class=\"kw2\">head<\/span><\/a>&gt;<br \/>\n&nbsp; &nbsp; &lt;<a href=\"http:\/\/december.com\/html\/4\/element\/title.html\"><span class=\"kw2\">title<\/span><\/a>&gt;Test Compression&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/title.html\"><span class=\"kw2\">title<\/span><\/a>&gt;<br \/>\n&nbsp; &nbsp; &lt;<a href=\"http:\/\/december.com\/html\/4\/element\/script.html\"><span class=\"kw2\">script<\/span><\/a> <span class=\"kw3\">type<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;text\/javascript&quot;<\/span>&gt;<br \/>\n&nbsp; &nbsp; &nbsp; eval<span class=\"br0\">&#40;<\/span>function<span class=\"br0\">&#40;<\/span>p,a,c,k,e,r<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span>e<span class=\"sy0\">=<\/span>String;if<span class=\"br0\">&#40;<\/span>!<span class=\"st0\">''<\/span>.replace<span class=\"br0\">&#40;<\/span><span class=\"sy0\">\/<\/span>^<span class=\"sy0\">\/<\/span>,String<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span>while<span class=\"br0\">&#40;<\/span>c--<span class=\"br0\">&#41;<\/span>r<span class=\"br0\">&#91;<\/span>c<span class=\"br0\">&#93;<\/span><span class=\"sy0\">=<\/span>k<span class=\"br0\">&#91;<\/span>c<span class=\"br0\">&#93;<\/span>||c;k<span class=\"sy0\">=<\/span><span class=\"br0\">&#91;<\/span>function<span class=\"br0\">&#40;<\/span>e<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span>return r<span class=\"br0\">&#91;<\/span>e<span class=\"br0\">&#93;<\/span><span class=\"br0\">&#125;<\/span><span class=\"br0\">&#93;<\/span>;e<span class=\"sy0\">=<\/span>function<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span>return<span class=\"st0\">'\\\\w+'<\/span><span class=\"br0\">&#125;<\/span>;c<span class=\"sy0\">=<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#125;<\/span>;while<span class=\"br0\">&#40;<\/span>c--<span class=\"br0\">&#41;<\/span>if<span class=\"br0\">&#40;<\/span>k<span class=\"br0\">&#91;<\/span>c<span class=\"br0\">&#93;<\/span><span class=\"br0\">&#41;<\/span>p<span class=\"sy0\">=<\/span>p.replace<span class=\"br0\">&#40;<\/span>new RegExp<span class=\"br0\">&#40;<\/span><span class=\"st0\">'\\\\b'<\/span>+e<span class=\"br0\">&#40;<\/span>c<span class=\"br0\">&#41;<\/span>+<span class=\"st0\">'\\\\b'<\/span>,<span class=\"st0\">'g'<\/span><span class=\"br0\">&#41;<\/span>,k<span class=\"br0\">&#91;<\/span>c<span class=\"br0\">&#93;<\/span><span class=\"br0\">&#41;<\/span>;return p<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'0(\\'<\/span><span class=\"nu0\">1<\/span> <span class=\"nu0\">2<\/span>!\\<span class=\"st0\">');'<\/span>,<span class=\"nu0\">3<\/span>,<span class=\"nu0\">3<\/span>,<span class=\"st0\">'alert|Hello|world'<\/span>.split<span class=\"br0\">&#40;<\/span><span class=\"st0\">'|'<\/span><span class=\"br0\">&#41;<\/span>,<span class=\"nu0\">0<\/span>,<span class=\"br0\">&#123;<\/span><span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/script.html\"><span class=\"kw2\">script<\/span><\/a>&gt;<br \/>\n&nbsp; &lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/head.html\"><span class=\"kw2\">head<\/span><\/a>&gt;<br \/>\n&nbsp; &lt;<a href=\"http:\/\/december.com\/html\/4\/element\/body.html\"><span class=\"kw2\">body<\/span><\/a> <span class=\"kw3\">onload<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;javascript:hw();&quot;<\/span>&gt;<br \/>\n&nbsp; &nbsp; Hi!<br \/>\n&nbsp; &lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/body.html\"><span class=\"kw2\">body<\/span><\/a>&gt;<br \/>\n&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/html.html\"><span class=\"kw2\">html<\/span><\/a>&gt;<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<\/li>\n<\/ul>\n<p>Par ailleurs, lorsque l&rsquo;on n&rsquo;a pas le fichier de d\u00e9veloppement, on peut quand m\u00eame utiliser <a href=\"https:\/\/dean.edwards.name\/packer\/\" target=\"_blank\">la m\u00eame page web<\/a> pour d\u00e9coder un script pr\u00e9c\u00e9demment compress\u00e9. Personnellement j&rsquo;utilise une nouvelle fois mon Firebug pour supprimer la lecture seule du champ de saisie et la d\u00e9sactivation du bouton&nbsp;: <img src=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-includes\/images\/smilies\/skype\/\/wink.gif\" alt=\";)\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/><br \/>\n<div id=\"attachment_3959\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"\/whiler\/wp-content\/uploads\/2012\/04\/decode-disable.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3959\" src=\"\/whiler\/wp-content\/uploads\/2012\/04\/decode-disable-300x252.png\" alt=\"Au d\u00e9part\" title=\"Au d\u00e9part\" width=\"300\" height=\"252\" class=\"size-medium wp-image-3959\" srcset=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2012\/04\/decode-disable-300x252.png 300w, https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2012\/04\/decode-disable.png 725w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-3959\" class=\"wp-caption-text\">Au d\u00e9part<\/p><\/div><br \/>\n<div id=\"attachment_3960\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"\/whiler\/wp-content\/uploads\/2012\/04\/decode-enable.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3960\" src=\"\/whiler\/wp-content\/uploads\/2012\/04\/decode-enable-300x252.png\" alt=\"D\u00e9codeur disponible\" title=\"D\u00e9codeur disponible\" width=\"300\" height=\"252\" class=\"size-medium wp-image-3960\" srcset=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2012\/04\/decode-enable-300x252.png 300w, https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2012\/04\/decode-enable.png 725w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-3960\" class=\"wp-caption-text\">D\u00e9codeur disponible<\/p><\/div><\/p>\n<div class=\"thanks_button_div\" \n                  style=\"float: right; margin-right: 10px; margin-top:10px;\"><div id=\"thanksButtonDiv_3955_1\" style=\"background-image:url(https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/plugins\/thanks-you-counter-button\/images\/thanks_compact_brown1.png); background-repeat:no-repeat; float: left; display: inline;\"\n                onmouseover=\"javascript:thankYouChangeButtonImage('thanksButtonDiv_3955_1', true);\" \n                onmouseout=\"javascript:thankYouChangeButtonImage('thanksButtonDiv_3955_1', false);\"\n                onclick=\"javascript:thankYouChangeButtonImage('thanksButtonDiv_3955_1', false);\" >\n                <input type=\"button\" onclick=\"thankYouButtonClick(3955, 'You left &ldquo;Thanks&rdquo; already for this post')\" value=\"Merci\u00a0 0\"\n                  class=\"thanks_button thanks_compact thanks_brown1\"\n                  style=\"  font-family: Verdana, Arial, Sans-Serif; font-size: 14px; font-weight: normal;; color:#00f;\"\n                  id=\"thanksButton_3955_1\" title=\"Click to leave &ldquo;Thanks&rdquo; for this post\"\/>\n             <\/div><div id=\"ajax_loader_3955_1\" style=\"display:inline;visibility: hidden;\"><img decoding=\"async\" alt=\"ajax loader\" src=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/plugins\/thanks-you-counter-button\/images\/ajax-loader.gif\" \/><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Plutot que de r\u00e9inventer la roue \u00e0 chaque fois, on utilise r\u00e9guli\u00e8rement des biblioth\u00e8ques de code, des applications toutes faites qui r\u00e9pondent \u00e0 nos besoins\u2026<br \/>\nParmi tant d\u2019autres, j\u2019utilise par exemple Piwigo et WordPress\u2026<\/p>\n<p>Ces solutions sont hautement personnalisables et offrent la possibilit\u00e9 de d\u00e9velopper et\/ou d\u2019installer des extensions (plugins).<\/p>\n<p>Cependant, il arrive que certaines extensions soient bogu\u00e9es ou plus maintenues\u2026 Parfois, ce n\u2019est pas grand chose et l\u2019on voudrait pouvoir faire la modification n\u00e9cessaire afin de corriger le soucis\u2026<\/p>\n<p>Concr\u00e8tement, j\u2019ai vu que j\u2019avais un petit bogue sur mon blog qui emp\u00eachait la navigation sur les pr\u00e9c\u00e9dents commentaires depuis le widget de la barre de droite\u2026 Les fichiers JavaScript utilis\u00e9s sont compress\u00e9s afin d\u2019optimiser les temps de t\u00e9l\u00e9chargement\u2026 Aid\u00e9 de Firebug, il ne m\u2019a fallu que quelques minutes pour trouver un lien suspect\u2026 J\u2019ai alors utilis\u00e9 la version de d\u00e9veloppement fournie par le d\u00e9veloppeur de l\u2019extension pour effectuer la modification que je voulais tester\u2026 Cool, \u00e7a fonctionne\u2026<\/p>\n<p>Mais ne souhaitant pas laisser la version de dev en prod, j\u2019ai cherch\u00e9 et tr\u00e8s rapidement trouv\u00e9 comment compresser cette version de d\u00e9veloppement\u2026 Afin d\u2019avoir \u00e0 nouveau un script commen\u00e7ant par eval(function(p,a,c,k,e,r)\u2026<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_links_to":"","_links_to_target":""},"categories":[11],"tags":[99,106,27,100,101,136,98,26,108,112,107],"class_list":["post-3955","post","type-post","status-publish","format-standard","hentry","category-web","tag-addons","tag-blog","tag-coloration-syntaxique","tag-extensions","tag-firefox","tag-javascript","tag-piwigo","tag-plugin","tag-script","tag-widget","tag-wordpress"],"_links":{"self":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts\/3955","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/comments?post=3955"}],"version-history":[{"count":0,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts\/3955\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/media?parent=3955"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/categories?post=3955"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/tags?post=3955"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}