Ames Troubles

Aller au contenu | Aller au menu | Aller à la recherche

jeudi, mars 11 2010

De l'art de la compression

Disclaimer préalable : si vous n'aimez pas les maths ou l'informatique, cette note va vous sembler totalement imbuvable. Non, mais vraiment, hein. Bon, vous aurez été prévenus.

Donc, il arrive qu'on soit tenté de transmettre des fichiers via le net. Pour ça, la méthode la plus simple si il y a plusieurs fichiers, c'est de les compresser et de les envoyer en un "pack". Il se trouve que je suis actuellement en train de travailler sur un CMS (j'en reparlerais), qui doit contenir la possibilité d'installer des "blocs", sortes de modules complémentaires, d'un clic. Ces modules doivent être compressés en un seul pack contenant tous les fichiers.

J'ai pensé, bien entendu, à mettre en place une solution basée sur l'une des extensions de compressions disponibles dans PHP. Mais ces extensions ne sont pas nécessairement activées ; dans l'optique d'être compatible avec un maximum de configuration, j'ai décidé de créer mon propre système de compression. Et c'est là que les problèmes commencent.

Je ne m'étendrais pas sur la partie "packing", qui est assez simple et ne demande pas réellement d'explications ; en revanche, intéressons-nous à la compression (et à son pendant, la décompression).

jeudi, janvier 22 2009

Centrer un élément dont on ne connait pas la taille

Bonjour les gens !

J'ai été confronté aujourd'hui au boulot à un petit problème : J'avais un tableau (qui affichait effectivement un tableau de données, pas pour mettre en forme mon design !) qui pouvait contenir un nombre variable de colonnes. Du fait de la variabilité du nombre et du contenu de ces colonnes, je ne pouvais pas utiliser les astuces classiques pour centrer l'élément, puisque je ne connaissais pas sa largeur.

Donc j'ai utilisé un petit script en javascript tout simple. Je suis passé par des marges négatives (les marges automatiques n'étant pas recalculées autrement), et j'ai utilisé javascript pour recalculer mes marges en fonction de la taille réelle de l'élément :

<script type="text/javascript">
var largeur = $('grilleProgramme').clientWidth;

var marge = Math.floor(((largeur - 899) / 2) * -1);

$('grilleProgramme').style.marginLeft = marge + 'px';
</script>

Pour rappel, j'utilise prototype, donc $() corresponds à document.getElementByID(). Le 899 dans le script corresponds à la taille du conteneur de ma table. Le but est donc de récupérer la taille de la table "grilleProgramme", de lui enlever la taille qui est de toutes façons dans le design de base, et de diviser par deux ce qu'il reste. Et enfin, de décaler du nombre obtenu, vers la gauche.

Voila voila :)