Un petit billet au jour et à l'heure de la naissance de notre fils.
Le bébé et sa maman se portent bien.
Pour les photos, suivez ce lien...
11 juin 2009
Matthieu Thouvenin
03 juin 2009
Dépôt Git privé et personnel sur serveur mutualisé OVH
L'architecture et la philosophie de Git n'imposent pas l'usage d'un serveur central. Malgré cela, pour un développeur, il est pratique et confortable d'avoir un dépôt de référence donc d'avoir un dépôt central.
Si l'on travaille sur un projet public seul ou à plusieurs, des plateformes comme github ou gitorious sont parfaitement adaptées. Si par contre, on souhaite utiliser git pour un usage personnel et strictement privé, ces plateformes le sont beaucoup moins (options payantes pour github notamment). D'autant plus que si on loue déjà un serveur autant essayer de le réutiliser.
L'offre de serveur mutualisé chez OVH propose à partir de la gamme 90 Plan un accès ssh. On a donc un accès en ligne de commande dans son espace et on peut utiliser les outils installés sur le système.
Depuis quelques temps (ça n'a pas toujours été le cas), on peut utiliser la commande git. Il devient donc possible de transformer son compte en serveur de dépôt git privé. Démonstration :
Création d'un projet GIT
% mkdir ~/mon_projet % cd ~/mon_projet % touch .gitignore % git init % git add . % git commit -an
Création du dépôt de référence
% cd ~/mon_projet % git clone --bare . ~/mon_projet.git % cd ~/mon_projet.git % git --bare update-server-info % cd hooks/ % mv post-update.sample post-update % chmod a+x post-update
Un dépôt de référence et plus précisément un dépôt nu a par convention l'extension git. Dans notre exemple : mon_projet.git
Copie sur le serveur
% scp -r ~/mon_projet.git moi@ovh:~/ % rm -Rf ~/mon_projet*
Utilisation du dépôt de référence
% git clone ssh://moi@ovh/~/mon_projet.git % touch readme % git add readme % git commit -an % git push
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 !
28 mai 2009
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/&/\&/g" \ -e "s/</</g" \ -e "s/>/>/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/&/\&/g" \ -e "s/</</g" \ -e "s/>/>/g" \ > $@ clean: script*.js style*.css rm $^
