mercredi, 8 novembre 2006

PHP Multithread

Non, faire tourner PHP en multithread n'est pas un mythe !
C'est possible de lancer des processus fils grâce au module pcntl, et à les synchroniser avec le module sémaphore, de préférence en ligne de commande (la doc précise que leur utilisation en module apache peut amener à des résultats erronés).

Voici donc un petit article qui démontre par un exemple comment implémenter un démon multithread en PHP.

mercredi, 11 octobre 2006

Covoiturage

Premier jour de covoiturage. Tout c’est bien passé, à part une petite frayeur dans un bouchon.

Je ne peux pas encore me prononcer sur les effets à long terme du covoiturage, mais j’ai déjà trouvé que c’était plus sympa le trajet à 2. L'heure de trajet est passée bien plus vite, et suivant les personnes qui accompagnent, les échanges peuvent être intéressants et constructifs.

Dès la semaine prochaine on charge 2 personnes supplémentaires.

On a l’air vachement moins égoïste à 2-3 dans une voiture…

Un serveur en overload

Quels sont les signes qu'un serveur est en overload ?

La réponse est relativement simple un outil de monitoring tel que mrtg ou maintenant rrdtool est installé sur le serveur.

Considérons le graphique suivant :



Il représente la charge d'un serveur sur une moyenne journalière, avec en y le % de charge. Dès juillet, l'augmentation de la charge non négligeable que subit le serveur est un signe qu'il faut envisager rapidement un remplacement par une machine plus puissante. L'augmentation est linéaire, elle nous permet donc une bonne projection et donc une bonne prévision de quand le serveur arrivera à une charge moyenne de 100%.

mardi, 10 octobre 2006

Les billets de mon ancien blog

Comme je l'ai dit ici, je compte utiliser régulièrement ce blog. Et en fonction du temps disponible, je vais faire revivre d'ancien billet qui sont partis aux oubliettes en même temps que mon ancien blog.

Ne soyez donc pas surpris de voir des billets qui commencent par "Initialement posté sur Noisette.ch", ce billet vont s'entremêler aux nouveaux.

lundi, 2 octobre 2006

Linked In

Après avoir reçu plusieurs invitations d'amis et collègues, j'ai finalement rejoins la grande famille de LinkdeIn, sur lequel vous pouvez consulter mon profile et mes connexions : http://www.linkedin.com/in/benoitperroud

Je ne sais pas encore si ce site va me servir pour trouver un futur emploi, mais j'ai trouvé le concept intéressant, et je compte bien arriver à plus de 90% dans toutes les options :)

vendredi, 29 septembre 2006

Les algorithmes de recherche binaire et par fusion sont bogués

C'est la constatation alarmante qu'a fait Joshua Bloch, Software développeur chez Google, dans son article Nearly All Binary Searches and Mergesorts are Broken (Presque tous les algorithme de recherche binaire et par fusion sont bogués) et il en explique précisément la cause.

Il cite en exemple la méthode binarySearch de la librairie java.util.Arrays, qu'il a lui même écrit avant de quitter Sun.

La ligne contenant ce bug est la suivante :

int mid = (low + high) / 2;


Le bug en question est un "bête" integer overflow qui peut apparaître si on manipule un tableau de l'ordre de plus de 2^30 éléments.

Le plus dérangeant dans cette histoire banale est que ce genre de bug, pourtant trouvé dans une routine de peu de lignes, est passé inaperçu pendant près de 60 ans.

Cet exemple démontre très précisément qu'il est impossible d'écrire du code sans bugs, et que donc les prochaines améliorations seront plus d'en limiter les conséquences que de les éradiquer.

mardi, 26 septembre 2006

Gentoo avec Apache2 + PHP5 + Suexec + FastCGI (dynamic)

FastCGI est un concept tout à fait intéressant qui permet, dans le cadre de PHP, d'allier rapidité et sécurité. Il permet conjointement d'avoir la rapidité de mod_php avec la sécurité de PHP/CGI, notemment en terme de droits d'utilisateurs.
Je ne vais pas vous refaire une série de benchmark comme c'est le cas sur beaucoup d'autre site, mais je viens de réaliser un article explicant en détail l'installation, la configuration et surtout les problèmes qu'on peut rencontrer avec la mise en place PHP, FastCGI dynamique et Suexec :

Pourquoi les mots "Chers Concitoyens"

Je ne souhaite pas vraiment m'étendre sur des discours politiques car ceux-ci ne sont pas ma tasse de thé, et encore moins dans l'esprit que je compte tenir sur mon blog.

Mais au lendemain des votations fédérales sur le durcissement du droit d'asile, le préfix "con" du terme concitoyens retrouve tout son sens.

La question est donc lancée : « Mais qu’avez-vous donc fait ? ». Seul l’avenir nous le dira...

jeudi, 21 septembre 2006

Mes cours de Master : terminés

Alors que mon travail de diplôme est déjà bien entamé, je voulais juste m'arrêter un peu sur mes résultats du Master à l'EPFL.

Le détail des notes peut être trouvé sur mon site : Mes notes de Master, et il y a 2 choses importantes à relever : 5.57 de moyenne (sur 6) sur l'année, et aucune note en dessous de 5.

Ce que j'aimerais montrer par là, ce n'est pas combien je suis fort et tout, loin de moi cette idée narcissique, mais plutôt qu'avec de la motivation et de la persévérance, on arrive à nos fins (et en passant faire un clin d'oeil à certains détracteurs du redoublement dans les universités, mais une réponse plus complète viendra peut-être dans un autre billet, intitulé quelque chose comme "L'apprentissage par l'échec").

La motivation est une capacité merveilleuse dont nous a dotés mère Nature, grâce à laquelle on peut bouger des montagnes. La motivation donne des ailes, décuple les forces, mais ne serait qu'un feu de paille si la persévérance ne prenait pas la relève. La persévérance, elle, est plutôt une discipline de vie, une force mentale qui, si elle est utilisée à outrance, se transforme rapidement en obstination.

J'ai appris, après deux échecs, à dompter ma motivation, puis j'ai cultivé ma persévérance pour finalement arriver là ou j'en suis aujourd'hui, en train de faire mon travail de diplôme dans le groupe Kudelski. Et je suis convaincu que refaire la deuxième année était pour moi la meilleure chose, tant cette année est importante sur le plan théorique. Finir une branche avec juste la moyenne, c'est suffisant, mais à mes yeux actuels ça n'est pas assez pour prétendre avoir compris les finesses de la matière et pouvoir tisser des liens avec d'autres branches. J'ai réussi à le faire grâce au travail, et ça se ressent à beaucoup de niveaux.

Le travail n'est pas une source de frustration, bien au contraire. Et la recette en est bien simple :

  • Immergez-vous dans un projet,
  • Adoptez un état d'esprit positif et la motivation grandira d'elle-même,
  • Fixez-vous des objectifs à court et moyen terme pour favoriser la persévérance.

mercredi, 20 septembre 2006

Système de réécriture d'URL (URL Rewriting)

Les systèmes de réécriture d'URL posent rapidement des problèmes de scalabilité pour un site générant un trafic respectable (genre dès 1000 visiteurs uniques par jour). Je l'ai déjà exprimé dans un précédent article : Mambo 404 SEF, et souhaite maintenant apporter un design de solution.

Une technique relativement simple pour palier à ce problème de VARCHAR non- ou mal -indexable est d'introduire une variable aléatoire dans l'URL, variable à partir de laquelle la vrai URL sera chargée : www.domaine.com/14523623423/news/ma_premiere_news.html
L'important dans cet URL est donc la variable 14523623423, alors que ce qui se situe après n'a aucune importance et peut être modifié à souhait (on remarque aussi ici que cette technique permet rapidement de mettre un place de l'URL flooding, utilisants des URLs de toute sorte pour pointer sur la même page. Attention à ne pas en abuser, car on risque de voir son site se faire bannir des moteurs de recherche).

La requête SQL devient donc

SELECT realurl FROM redirections WHERE urlid = 14523623423

Mieux ça non ? Le problème évoqué ici est en fait global à tout design de base de données : les champs utilisés sans intervention d'un utilisateur dans une condition devraient toujours être de type entier ou un dérivé. Car même si les chaines de caractères sont relativement rapide lors des tests, la réaction à haute charge est très souvent mauvaise...