Extension Intl avec Wamp

Si comme moi vous souhaitez faire fonctionner l'entension PHP intl sous wamp, vous devez suivre les deux étapes suivantes :

Activer l'extension via Wamp

Cliquez simplement sur l'icône du logiciel puis allez dans PHP, Extensions PHP et cochez php_intl afin d'activer l'extension. (ou décommentez la ligne php_intl.dll dans le php.ini)

http://www.maraumax.fr/medias/Billets/wamp_intl.jpg

Copier les DLL manquantes

Rendez-vous ensuite dans le répertoire wamp/bin/php/php*version*/ et copier les dll ayant la structure icu****.dll dans le répertoire :
wamp/bin/apache/Apache*version*/bin

Redémarrez ensuite wamp et votre extenstion devrait être activée !

http://www.maraumax.fr/medias/Billets/phpinfo_intl.jpg

Extrait de phpinfo()

L'hébergeur qui sent bon la lavande

Ou pas. Il semblerait que cet hébergeur gratuit rencontre actuellement quelques problèmes d'hébergement.

http://www.maraumax.fr/medias/Billets/cigales.jpg

En espérent un retour à la normal assez vite pour que les utilisateurs puissent au moins récupérer leurs sites wink

Plus d'infos sur Les Cigales.

Mettre à jour un dépôt SVN avec un tag / une branche

Depuis peu je me suis mis à créer des tags svn pour les différentes versions d'un site internet. C'est très pratique et ça permet de revenir facilement en arrière et / ou d'apporter une modification précise à une version sans avoir à créer des patchs.

Après avoir crée une branche dans le répertoire tags de votre svn, il vous suffit d'exécuter la commande suivante :
svn switch http://svn.votre-site.fr/monprojet/tags/v1.2.3 /home/www/monprojet

Le dernière paramètre, si vous est dans le dossier du projet n'est pas obligatoire. La version de votre dépot est automatiquement mise à jour avec les bonnes révisions.

Petit point important si vous créer votre branche en utilisant la révision 150 alors que vous êtes actuellement à la révision 180 alors la révision de votre tag seras la 181. Le résultat de svn info seras donc 181. Pour obtenir la révision correspondante utilisez la commande suivante :
svn log --verbose --stop-on-copy http://svn.votre-site.fr/monprojet/tags/v1.2.3/

Le résultat seras le suivant :

Chemins modifiés :
   A /tags/v1.2.3 (de /trunk/www:150)

Pour plus de détails, n'hésitez pas à faire un tour sur la documentation de svn switch.

Envoyer des SMS gratuitement

http://www.maraumax.fr/medias/Billets/envoyersmsgratuit.pngJe vous présente mon dernier projet, Envoyer SMS Gratuit qui comme son nom l'indique permet d'envoyer gratuitement des SMS depuis votre ordinateur. Le service est entièrement gratuit, anonyme et ne nécessite pas d'inscription !

Comment envoyer un SMS ?
Rien de plus simple ! Renseignez simplement le destinataire et votre message, vous avez alors peut-être besoin de cliquer sur une ou deux publicités pour activer le bouton de validation et votre SMS est directement expédié.

Comment est financé le service
Le service est actuellement financé grâce aux publicités que vous devez cliquer afin de confirmer le formulaire. Ces publicités sont diffusées par des régies publicitaires à l'incentive tel que Easy-Ads.

Fonctionnalités
Les fonctionnalités du site sont très basiques et le resteron probablement. Vous pouvez envoyer des sms, consulter le statut des messages expédiés mais aussi les réponses de vos destinataires.
Je rajouterais probablement la possibilité d'envoyer des messages différés mais pas de "grosses fonctionnalités" afin de conserver un service très simple et toujours sans inscription.

Cependant n'hésitez pas si vous avez quelque chose à me proposer !

Envoyer SMS Gratuit

Tuer des processus MySQL de façon sélective

http://www.maraumax.fr/medias/Billets/mysql-shell.jpgJ'ai récemment eu besoin de killer tous les processus MySQL d'un utilisateur pour permettre une modification de table tranquillement. MySQL ne propose pas de commande pratique pour le faire et il est impossible d'ajouter des conditions à la commande kill.

Connectez vous à votre serveur MySQL et exécutez les commandes suivantes en utilisant vos conditions évidemment.

# Création d'un fichier temporaire sous la forme "kill id;"
select concat('KILL ',id,';') from information_schema.processlist where user='root' and time > 200 into outfile '/tmp/kill.tmp';
# On importe le fichier contenant nos commandes
source /tmp/kill.tmp;

Dans cet exemple, je récupère les IDs de tous les processus de l'utilisateur root lancés depuis plus de 200 secondes. N'hésitez pas à regarder la structure de la table processlist avec la commande suivante :

# Afficha la structure de la table des processus
describe information_schema.processlist;

Bon killing à vous !

Forcer le HTTPS avec un Load Balancer chez Amazon

http://www.maraumax.fr/medias/Billets/amazon-web-services.pngAmazon permet de configurer son service Load Balancing pour gérer le chiffrement de votre site et renvoyer du HTTP sur vos instances. Cette solution permet de décharger votre serveur WEB mais impossible d'utiliser la variable "SERVER_PORT" dans vos conditions car le serveur répond uniquement sur le port 80. Logique !

La solution est plus ou moins indiquée dans la documentation d'amazon et c'est en place depuis le 27 octobre 2010.

Il faut donc utiliser le header X-Forwarded-Proto qui contient le protocole du client renvoyé par le load balancer. Et voici deux petites lignes permettant de forcer le https à votre client :

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule !/status https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

La première ligne active le mod rewrite, la seconde vérifie si le protocole est donc différent de https et dans ce cas la troisième ligne effectue une redirection 301 vers le même domaine en excluant le cas ou vous consultez le server status !

Problème avec Pure Ftp Mysql et Inetd

Inetd est un démon très avantageux qui active automatiquement un service lorsqu'un client tente de s'y connecter. Il permet donc d'allouer des ressources uniquement quand c'est nécessaire. Suite à une mise à jour des paquets un serveur Debian, je me suis retrouvé avec une erreur lors de la connexion au ftp.

Can't exec "/usr/sbin/pure-ftpd": No such file or directory at /usr/sbin/pure-ftpd-wrapper line 174.

Cette erreur apparaît car inetd a mal été configuré avec pure ftp mysql. Pour la corriger il suffit d'éditer les quelques premières lignes du fichier /usr/sbin/pure-ftpd-wrapper.

Remplacez les trois lignes suivantes :

my $daemon = '/usr/sbin/pure-ftpd';
my @capabilities = @ARGV;
 
if ($ARGV[0]) {
$daemon = "$daemon-$ARGV[0]";
}

Par ceci :

my $daemon = '/usr/sbin/pure-ftpd-mysql';
my @capabilities = @ARGV;
 
#if ($ARGV[0]) {
#$daemon = "$daemon-$ARGV[0]";
#}

On a donc remplacer le chemin du démon et commenté les quelques lignes qui normalement auraient du ajouter "-mysql" au nom du démon.

Vous pouvez ensuite redémarrer inetd, et tout devrait à nouveau fonctionner !
/etc/init.d/openbsd-inetd restart

En espérant vous avoir rendu service !

Créer des miniatures de vidéos à la volée

Pour un projet qui devrait voir le jour dans les prochaines semaines / mois j'ai eu besoin de réaliser un script permettant de générer des vidéos à la volée.

J'ai donc travaillé sur un script qui est assez simple au final. Pour l'utiliser vous devez disposer de ffmpeg sur votre serveur.

Pour l'installer lancez simplement la commande suivante :

apt-get update
apt-get install ffmpeg

Et voici le script, nommez la captures.sh par exemple :

#! /bin/bash
 
#--- Paramètres
 
videowaitdir=/home/www/videos/
capturedir=/home/www/videos/screens/
 
numberscreens=10
 
#--- Traitement des vidéos
 
for video in `ls $videowaitdir`; do
	if [ -f $videowaitdir$video ]; then
		duration=`ffmpeg -i $videowaitdir$video 2>&1 | grep "Duration:" | awk '{print $2}' | tr -d , | cut -d . -f 1`
 
		if [ -z "$duration" ] || [ "$duration" = "00:00:00" ]
		then
			continue
		fi
 
		h=`echo $duration | cut -d : -f 1`
		m=`echo $duration | cut -d : -f 2`
		s=`echo $duration | cut -d : -f 3`
 
		totaltime=$(($h+$m+$s))
 
		time=$(($totaltime/$numberscreens))
 
		for((i=0;i<=$numberscreens;i++))
		do
			t=$(($time*$i+$time))
 
			ffmpeg -y -i $videowaitdir$video -f mjpeg -ss $t -vframes 1 -s 640x480 -an $capturedir$video.$i.jpg
		done
	fi
done

Modifiez simplement les deux premières variables qui sont :
videowaitdir : répertoire des vidéos
capturedir : répertoire des miniatures

Vous avez aussi une variable numberscreens qui détermine le nombre de screens à faire de la vidéo.

N'oubliez pas de modifier les permissions pour exécuter le bash :
chmod +x captures.sh
Le script est assez simple à comprendre, on liste les vidéos du dossier, on utilise ffmpeg pour récupérer le temps de la vidéo et on détermine à quels moments on doit faire les screens.

N'hésitez pas si vous avez des suggestions.

Consulter les message du boot sur Debian

J'ai récement eu besoin de consulter les messages retournés par les services lors du boot sur Debian mais impossible de trouver quoi que ce soit dans les fichiers de logs.

Après quelques recherche il s'est avéré qu'il faut activer une option pour loger les sorties dans un fichier.

Pour les activer, ouvrez le fichier :
/etc/default/bootlogd

Puis remplacez la valeur de BOOTLOGD_ENABLE par Yes.

# Run bootlogd at startup ?
BOOTLOGD_ENABLE=Yes

Vous pouvez désormais consulter les logs du boot dans le fichier
/var/log/boot

Et voici un exemple de contenu :

Thu Jul  5 15:05:08 2012: Configuring network interfaces...done.
Thu Jul  5 15:05:09 2012: Cleaning up temporary files....
Thu Jul  5 15:05:09 2012: Setting sensors limits.
Thu Jul  5 15:05:09 2012: Setting kernel variables ...done.
Thu Jul  5 15:05:09 2012: INIT: Entering runlevel: 2
Thu Jul  5 15:05:09 2012: Using makefile-style concurrent boot in runlevel 2.
Thu Jul  5 15:05:09 2012: Starting enhanced syslogd: rsyslogd.

En espérant que ça vous permettre de résoudre vos soucis !

Installer Red5 sur Debian Squeeze

http://www.maraumax.fr/medias/Billets/tutoriels/red5-logo.pngAujourd'hui c'est un tutoriel pour installer Red5, un équivalent de Flash Media Server de Adobe. J'utilise red5 dans le cadre d'un projet de publication de vidéo et audio en streaming.

J'utilisais jusqu'à aujourd'hui la version 0.9.1 disponible sur les dépôts Debian, mais je rencontrait quelques soucis donc j'ai préféré passer la dernière version 1.0 RC.

J'en ai profité pour écrire un petit tutoriel vous permettant d'effectuer cette installation. Je partagerais probablement quelques codes flash pour publier des flux vidéo (webcam) en utilisant red5 un jour !

Installer Red5 sur Debian Squeeze

Find Me If U Can - Retrouver votre mobile perdu !