Archives par mot-clé : PHP

Architecture de tests en C++ avec Qt

Publié dans C / C++ | Laisser un commentaire

Si vous êtes développeur, je pense que vous avez surement entendu parler des tests unitaires (unit test) et j’espère que vous êtes convaincu de leur utilité ! Tester unitairement un morceau de code, c’est vérifier que celui-ci fait ce que l’on souhaite dans de multiples situations. Ensuite, on peut passer sereinement aux tests d’intégration qui vont tester plusieurs morceaux de codes (ou d’applications) entre eux. On peut encore raffiner avec des tests de performances, tests système, etc, etc… Tout dépend jusqu’où on souhaite aller.

Si on est capable de lancer régulièrement l’exécution de nos tests unitaires, alors on est capable de dire que notre code continue de fonctionner comme voulu malgré les mises à jours ou les refactoring. Cela n’empêche pas les erreurs ni les bugs, car on ne peut pas tester tout notre code unitairement, ou cela peut lamentablement planter lors de l’intégration. Néanmoins, on sait qu’une base solide « fonctionne comme prévu », ce qui facilite grandement la correction d’une erreur.

Pour des myriades de raisons :
tester son code c’est génial !!!

Des études prouvent même qu’une bonne gestion des tests permet au final de gagner du temps. Si vous n’y croyez pas, je vous invite sérieusement à reconsidérer votre opinion.

Ce que j’ai déjà vu dans certains environnements et ce que j’aimerai reproduire dans mon environnement Qt / C++, se résume ainsi :

Continuer la lecture

Dernière itération d’une boucle avec le moteur de template RainTPL

Publié dans Snippet | Laisser un commentaire
{loop="list"}
  {if="$counter==count($list)-1"}
      This is the last element
  {/if}
{/loop}

En savoir plus.

Javascript

Manipuler du JSON en PHP

Publié dans PHP | Un commentaire

Pour manipuler du JSON en PHP, il y a 2-3 petites choses à savoir. L’encodage, décodage c’est la première étape. Ensuite on peut s’amuser à gérer des cas bizarres et les erreurs. Et après… après on peut s’amuser avec des schémas si jamais l’envie nous prend.

Encodage / Décodage

Tout d’abord, les méthodes qui font l’essentiel du travail :

  • json_decode: transforme une chaîne de caractères JSON en variable PHP
  • json_encode: transforme une variable PHP en chaîne de caractères JSON

Cependant, il faut garder en tête que ces méthodes ne travaillent qu’avec de l’UTF-8. Allez savoir pourquoi alors que c’est plutôt l’inverse en PHP généralement… mais bref. Du coup, un petit coup de utf8_encode / utf8_decode avant d’utiliser json_decode sur autre chose que de l’UTF-8. Même topo pour json_encode.
La documentation PHP nous fournit quelques autres informations intéressantes, par exemple au sujet de la manière d’accéder à un objet contenant un trait d’union en PHP ($myObject->{'param-etre'}).
Continuer la lecture

PHP diff et merge

Publié dans PHP | Un commentaire

Une question que je me pose en ce moment… Comment, en PHP, comparer deux version d’un même texte et n’en faire plus qu’une contenant les différentes modifications. En gros: difference + merge. C’est ce qui est utilisé couramment dans les systèmes de Wiki (dont Wikipédia) et je vois quelques applications à cela qui pourraient être très sympathiques.
Après une petite recherche, voilà ce que je retiens de ce qui existe.

PHPDiff

Le projet PHPDiff est géré par Chris Boulton, sous licence BSD et accessible via Github: PHPDiff sur Github.
Ce projet m’intéresse particulièrement car un certain Xiphe a créé une interface Web dynamique (bref, en Javascript) pour choisir comment merger deux textes. Ce qui peut s’avérer utile en cas de conflit. C’est accessible en licence GPL sous Github: jQuery Merge for PHP Diff sur Github. La démo est vraiment bluffante : Démo jQuery Merge.
Continuer la lecture

Quelques modifications sur Leed

Publié dans Geekeries | Laisser un commentaire

On ne présente plus Leed ! L’agrégateur de flux RSS par Idleman dont on parle beaucoup en ce moment (avec d’autres) suite à l’annonce de la fin de Google Reader pour Juillet 2013. Même Tristan Nitot (de Mozilla) en fait la promotion, c’est pour dire 😉
Bref, en trois mots : j’ai quitté Google Reader il y a bien longtemps, et j’ai installé RSSLounge sur mon hébergement perso. Depuis le début de l’année, je suis passé à Leed et j’en suis ravi ! C’est plus propre, plus rapide et plus léger pour mon serveur. A posteriori, ce qui me plait peut-être le plus, c’est que le code soit bien fichu et pas outrement compliqué. Du coup, je peux adapter facilement ce lecteur de flux RSS à mes besoins !
J’ai transmis mes quelques adaptations ci-dessous (plier / déplier un article, bookmarklet amélioré) à Idleman (si besoin), qui très sympathiquement m’a expliqué qu’elles étaient déjà dans la to do list (sauf la deuxième, je crois ?). Cool ! En attendant, si besoin…
Continuer la lecture

Question2Answer – FAQ StackOverflow Like

Publié dans Geekeries | 2 commentaires

Ok, donc Question2Answer est définitivement un super système de FAQ en PHP ! Un Stack Overflow Q&A like si vous préférez. Je le trouve plus adapté à mes besoins que Coordino présenté récemment par Idleman. Au programme :

  • très simple à installer,
  • sous licence GPL,
  • Apache, Mysql 4, PHP 4.3+,
  • très paramétrables, notamment au niveau des droits d’accès (ce qui faisait parti de mes exigences),
  • plusieurs « add-on » sont disponibles, ce qui implique qu’il doit être possible d’en créer facilement,
  • la communauté a l’air active,
  • en prime, c’est un entrepreneur, Gideon Greenspan qui est derrière, je ne sais pas quel est son business model, mais cela assure une certaine pérennité.

Question2Answer

Bref, même pas besoin de détailler le fonctionnement, cette application Web de FAQ s’utilise très facilement !
Je n’ai essayé qu’en local, il faudra que je vois sur mon serveur ce que ça donne niveau consommation mémoire.

La sécurisation des mots de passe et les poissons volants

Publié dans Geekeries | Un commentaire

Dans l’épisode précédent "La sécurisation des mots de passe, c’est salée", j’avais expliqué l’intérêt du sel pour protéger les mots de passe de ses utilisateurs. On va voir désormais que cela n’est toujours pas suffisant, et que seul les poissons volants (blowfish) pourront nous sauver la mise !

Ajouté en 2017 : Bien que tout ce qui est expliqué ci-dessous dans cet article reste valable, depuis l’avénement de PHP 5.5, il est préférable d’utiliser la fonction password-hash pour hasher ses mots de passe en PHP. Cette fonction permet de gérer le sel, l’évolution de la complexité, et sera même capable d’utiliser d’autres algorithmes que bcrypt à l’avenir si le besoin s’en fait ressentir.
Bonne lecture !

Saler et hacher ne suffit pas

A la lecture de deux très bons articles sur le sujet : How to safely store a password (en), Exemple de stockage de mot de passe en Java : hashage et salage, est-ce suffisant ? ; on se rend compte que saler et hacher ne suffit pas !
Continuer la lecture

La sécurisation des mots de passe, c’est salée !

Publié dans Geekeries | 8 commentaires

Dans un précédent billet (Comment sécuriser les mots de passe de mes utilisateurs), j’expliquais quelques bases pour bien comprendre comment stocker convenablement le mot de passe de ses utilisateurs. Comme on l’a vu, il suffit d’enregistrer la valeur hachée du mot de passe (avec une bonne méthode de hashage comme SHA-1 ou SHA-2), pour éviter les conséquences désagréables sur la sécurité d’un vol de base de données !
Aujourd’hui, nous allons aller encore plus loin en tentant de contre-carré les attaques par dictionnaire ou pire par rainbow tables ! Pour cela, on aura besoin d’une bonne technique de salage (oui, avec du sel !), voire de poissons volants (blowfish >) !
Continuer la lecture

Installer et Configurer Eclipse

Publié dans Java | Laisser un commentaire

Avant, je préférais avoir un seul Eclipse avec tous les plugins qui vont bien pour mes différents projets (Java, PHP, Android) et je jouais avec les workspace quand il fallait passer d’un projet à un autre. Aujourd’hui, j’ai l’impression qu’il vaut mieux avoir des Eclipses séparés selon l’utilisation :

  • Un optimisé pour les projets PHP,
  • Un autre pour les projets Java, OSGi
  • Et un autre pour Android. Même si pour ces deux derniers, j’aurai plutôt tendance à les mettre ensemble, à voir…

Du coup, j’ai une petite procédure d’installation / configuration et optimisation de mon IDE. La voici en résumé.
Continuer la lecture

To search a needle in a PHP haystack

Publié dans PHP | Laisser un commentaire

Vous connaissez l’expression « Chercher une aiguille dans une meule de foin » ? Figurez-vous qu’elle existe aussi en anglais « To search a needle in a haystack » ! Et vu que ça peut se traduire mot à mot, je soupçonne nos amis anglais de nous l’avoir piqué… Oui, c’est gratuit 😉

Mais saviez-vous que cette expression existe aussi en PHP ?
Prenons l’exemple de la fonction in_array qui permet de vérifier l’existence d’un élément dans un tableau.

$haystack = array('cow', 'duck', 'pig');
$needle = 'cow';
if (in_array($needle, $haystack)) {
 echo 'Oh yeah!';
}
else {
 echo 'What?';
}

Et c’est la documentation PHP officielle qui utilise « needle » et « haystack » comme nom de variables !
Continuer la lecture