Tri de tableau multi-dimension en javascript

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

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

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:

  1. Créer un nouveau profile à l’aide de la commande suivante:
    firefox -P -no-remote
  2. 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

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:

Bon codage ! 🙂