29 mai 2009

PKGI

PKGI est logiciel fonctionnant sous Debian vous permettant de déployer dans un répertoire quelconque l'arborescence d'une application autonome. On peut ainsi utiliser et gérer en tout indépendance :

  • Apache
  • MySql
  • Tomcat
  • OpenLDAP
  • phpMyAdmin
  • tmpreaper
  • logrotate
  • cron
  • ...

D'autres applications peuvent également être gérées, à condition de développer un petit module adéquat.

Pour la petite histoire PKGI est né de la façon d'utiliser les machines Unix à l'INIST-CNRS. Cette façon de faire est très simple et elle se résume en gros à :

  • un répertoire
  • un projet
  • des users autorisés

Quand on arrive dans un répertoire vierge et que l'on doit monter par exemple une architecture LAMP, tout est à faire, tout est à organiser ...

Face à cette tache répétitive, quelques personnes souhaitaient avoir un ou des outils pour se simplifier la vie et gagner du temps. l'époque, je me suis donc lancé dans l'écriture d'un ensemble de script permettant la création d'une arborescence type accompagné par des scripts de contrôle pour Apache , MySQL, logrotate et tmpwatch.

Ma solution était au départ dédiée aux machines HP-UX, elle fut ensuite portée sous Linux Debian & Mandriva.

En 2007, pour des besoins personnels, Stéphane Gully a reprit les grands principes de ma solution et il a commencé le développement de PKGI , une solution spécifique pour Debian. Comme il en a fait un logiciel libre, désormais, PKGI remplace avantageusement mon vieux système basé sur des Makefiles !

25 mai 2009

Message d'avertissement Javascript pour IE6

Il devient usant pour un développeur Web de rendre compatible un site ou une page web avec IE6 (Microsoft Internet Explorer Version 6).

Si vous n'avez plus de temps à perdre avec ce navigateur, contentez-vous d'afficher un message d'avertissement à destination uniquement des internautes utilisant ce logiciel avarié.

Concrètement, il s'agit de faire un test en fonction du navigateur, ce test peut être fait du coté serveur (en PHP par exemple) ou coté client en Javascript.

Voici 2 méthodes pour le faire en Javascript

Prêt à l'emploi

Voici 2 petites libraires Javascript qui se chargent de faire le boulot :

Fait maison

Il existe une astuce permettant de réaliser une instruction javascript uniquement sous IE6, ensuite libre à chacun d'afficher son message.


if (typeof document.body.style.maxHeight === "undefined") {
    alert('IE6 not suported !');
    return false;
}

Il reste juste à exécuter cette instruction au chargement de la page et ça aussi ça pose problème sous ie6. Voir le blog de Dean Edwards à ce sujet

23 mai 2009

Compresser automatiquement ses fichiers javascript et CSS

Quand on développe une page ou un site Web, il arrive souvent que l'on utilise plusieurs fichiers de styles CSS et plusieurs fichiers de script (Javascript).

Les bonnes pratiques du Web recommandent d'avoir pour chaque page html un seul et unique fichier de style et un seul et unique fichier de script. Idéalement ces 2 fichiers doivent également être comprimés (cad : sans caractère inutile, sans commentaire, etc ...).

Sites Web

Plusieurs sites Web proposent un service en ligne permettant de comprimer du CSS et/ou du Javascript soit à partir de l'upload d'un fichier soit à partir d'une zone de saisie.

Programmes ou APIs

Il existe également plusieurs programme ou API plus ou moins puissante ...

Makefile ad hoc

Je souhaitais mettre en place en un minimum de temps une procédure automatique me permettant de compresser et regrouper mes fichiers javascript et css.

Après une tentative d'installation infructueuse de juicer, j'ai rapidement écrit un petit fichier Makefile qui fait parfaitement l'affaire.

Avec seulement, les commandes cat et curl je génère un fichier script.min.js et un fichier style.min.css à partir de plusieurs fichiers css et js présent dans mon répertoire.

Simple, rapide, efficace, ...


all: style.min.css script.min.js

style.css : file1.css file2.css file3.css
 cat $^ > $@

style.min.css : style.css
 curl http://www.refresh-sf.com/yui/ -F type=CSS -F compressfile[]=@$^ | \
  grep "<textarea" | grep "class=\"output\"" | \
  sed -e "s/<\/textarea>//g" \
  -e "s/<textarea rows=\"20\" cols=\"80\" class=\"output\">//g" \
  -e "s/^\s*//g" \
  -e "s/\s*$$//g" \
  -e "s/&amp;/\&/g" \
  -e "s/&lt;/</g" \
  -e "s/&gt;/>/g" \
  > $@

script.js : file1.js file2.js file3.js
 cat $^ > $@

script.min.js : script.js
 curl http://www.refresh-sf.com/yui/ -F type=JS -F compressfile[]=@$^ | \
  grep "<textarea" | grep "class=\"output\"" | \
  sed -e "s/<\/textarea>//g" \
  -e "s/<textarea rows=\"20\" cols=\"80\" class=\"output\">//g" \
  -e "s/^\s*//g" \
  -e "s/\s*$$//g" \
  -e "s/&amp;/\&/g" \
  -e "s/&lt;/</g" \
  -e "s/&gt;/>/g" \
  > $@

clean: script*.js style*.css
 rm $^



20 mai 2009

Un fichier .gitignore pour Automake & Autoconf

Quand on utilise automake et autoconf pour un projet, le répertoire de celui-ci contient de très nombreux fichiers et répertoires créés automatiquement par ces 2 outils.
Si on souhaite utiliser git pour gérer le projet, il est fortement conseillé de signaler à Git la liste des fichiers pouvant être régénérés automatiquement.

Voici donc un fichier .gitignore pour ignorer les fichiers générés par Automake et Autoconf.

Makefile
Makefile.in
aclocal.m4
autom4te.cache
build
config.cache
config.guess
config.h
config.h.in
config.log
config.status
config.sub
configure
depcomp
install-sh
libtool
ltmain.sh
missing
mkinstalldirs
releases
stamp-h
stamp-h1
stamp-h.in
*~
*.swp
*.o
.deps
*.exe

16 mai 2009

Est-ce qu'elle sait que je chante ?

C'est le titre du premier roman de Cédric André.
J'en recommande à tout le monde la lecture !

Le livre est disponible chez "TheBookEdition.com" pour seulement 9 €...

Alors n'hésitez pas à le lire et achetez le !