Archive pour mai, 2008
Tri de tableau multi-dimension en javascript
Posté par Sylvain Lévesque dans Technologies le 30 mai 2008
Bonjour à tous,
Hier j’ai eu le problème suivant en javascript. Comment trier efficacement un tableau multi-dimension en javascript. Et bien aujourd’hui j’ai trouvé la solution ! La fonction sort() en javascript permet de passer une function personnalisé en paramètre ce qui nous permet de valider de façon personnalisée le tableau. Voici un exemple simple où l’on tri par le nickname de la personne.
var objectArray = [ { userId: 1, nickname: 'Marie' }, { userId: 1, nickname: 'Sylvain' }, { userId: 1, nickname: 'Michel' }, { userId: 1, nickname: 'Victo', }, { userId: 1, nickname: 'Michael' }, { userId: 1, nickname: 'Abdel' }, { userId: 1, nickname: 'John' }, { userId: 1, nickname: 'Sylvio' } ]; function sortByNickname( a, b ) { if( a.nickname === b.nickname ) { return 0 } return ( a.nickname < b.nickname ) ? -1 : 1; }
Cette fonction personnalisée recoit deux elements du tableau en paramètre et nous les comparons. S’il sont égaux nous retournons la valeur 0 ce qui veux dire que nous ne déplaçons aucun des paramètres dans le tableau. Si a.nickname est plus petit que b.nickname nous retournons -1 ce qui signifie que a.nickname doit être placé plus haut dans le tableau que b.nickname. Sinon on retourne 1 ce qui signifie que b.nickname doit être placé plus haut que a.nickname dans le tableau.
Et voilà c’est tout !
S’agit juste de le savoir !
Améliorer les performances de rsync over ssh
Posté par Sylvain Lévesque dans Technologies le 21 mai 2008
Après plus de trois nuits complètes à restaurer mes fichiers de mon serveur de backup vers mon laptop, j’ai enfin décidé de regardé pourquoi c’est si long. Le maximum taux de transfert que j’ai obtenu est 1.5 MB/s. Ce qui fait pas mal long pour 160 Go de données. En googlant un peu, j’ai découvert que les pauvres performances n’était pas reliées ni à mon routeur, ni à ma configuration réseau, ni à mes vieilles cartes réseaux, ni même à rsync ( Car je l’utilise pour mes backup, c’est le best ! ) mais bien à SSH. J’utilise rsync via ssh pour mes backup. SSH, puisqu’il est crypté, produit un surplus de travail au processeur pendant le transfert et cela réduit considérablement la vitesse de transfert. Donc, même chose pour scp. Doh !
Donc, comment on pourrait bien améliorer un peu les performances !? Et bien j’ai lu que l’algorythme d’encryption Blowfish était plus rapide et d’une sécurité comparable. Enfin, je copie sur mon réseau local alors on l’essaye !
Voici la commande utilisée:
rsync -avz --progress -e 'ssh -c blowfish' repertoire_de_bak/* username@IP:/repertoire_de_restaure
Bingo.. en un instant, je viens de presque de doubler ma performance… Je suis passé de 1.5 MB/s au mieux à 2.6 MB/s. Je vais peut être sauver une nuit de restaure
J’aimerais donc trouver une alternative encore plus rapide. Que peut-on faire ?
Options envisageables
- Copie via NFS
- Rsync over NFS
- FTP
- Rsync over FTP ( Ca se peut ça ? Ça serait bien cool ! )
- rsync server
Vous avez des idées ? Vous avez fait des tests ? Écrivez-moi !
Deux profiles avec Firefox
Posté par Sylvain Lévesque dans Technologies le 20 mai 2008
En tant que développeur web, il m’est souvent utile, pour tester des applications web, d’avoir deux instances de navigateurs web ouverts avec deux profiles différent. Notamment pour les application utilisant ajax. Voici donc comment faire sous linux:
- Créer un nouveau profile à l’aide de la commande suivante:
firefox -P -no-remote
- Démarrer firefox avec la commande suivante:
firefox -P NonDuProfil -no-remote
Pour plus de facilité, pourquoi ne pas se faire un raccourci sur le bureau avec cette commande ?!
Bon débogage !
codeFest PHP Québec 2.1 : Optimiser & Tester les logiciels libres
Posté par Sylvain Lévesque dans Technologies le 16 mai 2008
Du 16 au 18 mai 2008 à Montréal et Sherbrooke se tiendra la version 2.1 du CodeFest de PHP Québec. Le sujet de cet édition portera sur les tests unitaires et l’optimisation du code. Vous êtes tous invité, débutants et experts, à prendre part à améliorer le logiciel qui vous intéresse. Voici les projets libres proposés:
- MediaWiki
- Drupal
- WordPress
- TikiWiki CMS/Groupware
- BeWelcome
- Habari
- Anne G. wikigraphe
- PHP Quebec Employment section
- Votre projet…
Bon codage !
