J’avais rien d’autre à faire

March 27, 2011

En ce moment à l’école, on a 2 grands thèmes en parallèle : du signal et de l’informatique. Ça inclu d’enchaîner un cours sur la théorie de l’information avec un cours de javascript. Et comme l’un comme l’autre sont rigolos, j’me suis dit que je pouvais mixer les deux, tant qu’à y être.

Donc, vous avez tous un jour créé une archive autoextractible pour pouvoir faire rentrer tous vos gros fichiers sur une disquette et en plus pouvoir la donner à quelqu’un qui n’a pas winzip sur son PC. L’idée est donc d’appliquer le même principe, mais au Javascript. On sait bien que les fichiers statiques d’un site web sont lourds et qu’il faut utiliser diverses techniques pour leur faire prendre moins de place. Comme bien entendu il serait trop simple et performant d’utiliser la compression gzip du HTTP, je me suis dit qu’il serait assez amusant de créer un générateur de javascript autoextractible.

D’un point de vue performances, j’ai pris comme base le fichier minifié de jquery, qui fait 84kio. Une fois passé à la moulinette il ne pèse plus que 52kio. Le seul problème, c’est qu’il faut environ 200ms pour décompresser le fichier, ce qui est plus que le temps de chargement dans la majorité des cas. De toute façon, c’est un proof of concept, ça n’est pas sensé être utile :)

D’un point de vue réalisation, on a d’un côté un programme en python qui va prendre le fichier JS à compresser, le mouliner, et générer du code javascript qui une fois exécuté restitue le fichier JS de base. Le plus gros problème aura été un petit gag sur l’incapacité du JS à gérer les chaînes binaires. Du coup, j’ai dû faire un peu de hack… Attention aux âmes sensibles :) Après, question compatibilité avec les navigateurs, d’après mes tests ça passe très bien. En gros, c’est géré par tous les navitateurs sérieux.

J’ai créé un dépôt github pour mettre le code en ligne. Pour l’instant c’est pas très documenté, mais peut être que ça viendra. Si quelqu’un teste j’suis intéressé d’avoir des retours :-° Si j’ai pas trop la flemme je ferais un setup.py ou peut être même un paquet debian (oh le ouf).

Un petit apperçu vite fait de comment ça s’utilise :

./jsz.py -i tests/jquery-1.5.1.min.js -o out.js

Comprendra qui pourra :)

Sur ce, il est l’heure pour moi d’aller faire dodo…

Filed under: Divers

Leave a Comment

, (Hidden)

*

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

RSS feed for comments on this post.


Calendar

May 2012
M T W T F S S
« Oct    
 123456
78910111213
14151617181920
21222324252627
28293031  

Recent Posts