Comprendre les statistiques NFSD sous Linux

Les statistiques du serveur NFS sont accessibles dans le fichier /proc/net/rpc/nfsd ; c’est ce fichier qu’il faut lire si vous avez votre propre programme de monitoring et qu’il vous faut les valeurs « brutes ». Si c’est pour une lecture par un humain, l’utilitaire nfsstat est là pour ça. Petit tour d’aperçu des deux outils

Continuer la lecture de Comprendre les statistiques NFSD sous Linux

in_array et le mode strict

[La fonction in_array|http://fr.php.net/in_array|fr] peut avoir un comportement tout à fait étrange lorsqu’on utilise la syntaxe par défaut, qui fait une vérification non stricte : @@var_dump(in_array(‘mouhahaha’,array(0,1,2))); // bool(true)@@%%% Et oui, mon texte est dans ce tableau d’après PHP. Etonnant, non ? Tout simplement parce que PHP va essayer de convertir (cast) les types avant de les comparer. Ma chaîne de caractère, à un moment, vaut ‘true’ et mon 1 vaut ‘true’ aussi, d’où l’égalité.%%% Par contre, si on met les nombres entre quotes comme ceci : @@var_dump(in_array(‘mouhahaha’,array(‘0′,’1′,’2’))); // bool(false)@@%%% Car les chaines étant de même type (string), aucun cast n’a lieu. Pour éviter les effets de bords et autres mauvaises surprises, utilisez le mode strict qui va également comparer le type de la variable. Pour cela, ajouter un 3e argument à in_array comme ceci : %%% @@var_dump(in_array(‘mouhahaha’,array(0,1,2), true)); // bool(false)@@

Stockage de nombre à virgules dans MySQL

Pour stocker un nombre à virgule (un flottant, ou float en anglais) dans MySQL, il existe plusieurs types de colonnes. Mais attention : ils ne sont pas tous identiques. Petite démonstration simple : %%% * Prenons une table ‘test’, avec entre autre un champ de type FLOAT(8,2). * Executez la requete suivante : %%% @@INSERT INTO `test` (id, flottant) VALUES(4,’446351.74′);@@ %%% * Puis relisez la ligne : @@SELECT * FROM `test` WHERE id=4@@ Voici le résultat:%%% @@446351.75@@ Comment ?? ,75 et non ,74 comme je l’ai demandé ? Et oui, normal vu la méthode de stockage qu’utilise MySQL.
Continuer la lecture de Stockage de nombre à virgules dans MySQL

Attention à l’adresse IP d’un visiteur

Amis webmasters / éditeurs de sites Internet, je suis persuadé que vous récupérez à un moment ou à un autre l’adresse IP du visiteur (à des fins légales entre autre, en cas de soucis avec un membre ou du contenu). Mais comment faites vous ? Dans le site dont je m’occupe, nous avons une routine pour cela. Nous ne l’avions pas codé, et je ne m’y étais jamais interessé de près. Il a fallu un petit évènement pour que je relise le code attentivement.
Continuer la lecture de Attention à l’adresse IP d’un visiteur

Firefox 3 est là

Profitez de cette journée pour télécharger la dernière version de Firefox 3.[|http://webkit.org/perf/sunspider-0.9/sunspider.html|en] L’interface a été revue et est assez agréable : barre d’URL « intelligente » (elle vous fait des suggestions basées sur votre historique de navigation), anti phishing, … Pourtant, ce qui m’a le plus impressionné, c’est la rapidité. Petit test avec [SunSpider|http://webkit.org/perf/sunspider-0.9/sunspider.html|en] : * Firefox 2 : 29134 ms * Firefox 3 : 4934 ms [http://www.mozilla.com/fr/firefox?p=downloadday|http://www.mozilla.com/fr/firefox?p=downloadday|fr]

Le pouvoir disciplinaire

Il n’est jamais inutile de savoir comment peut/doit s’effectuer le pouvoir disciplinaire du chef d’entreprise, d’autant que la législation est assez complexe, notamment en ce qui concerne les délais légaux entre chaque action, et les obligations de l’employeur. Première question : Quel est le degré de la faute ? Cela doit être défini au regard du règlement intérieur, qui est un document écrit, obligatoire dès 20 employés. Il doit être visé par l’inspection du travail qui pourra l’annoter (suppression de mesures prohibés, ou ajout de mesures obligatoires). Dans la suite, j’aborderais l’échelle des sanctions, et les indemnités à verser en cas de licenciement, selon le niveau de la faute.
Continuer la lecture de Le pouvoir disciplinaire

Une application serveur en PHP

Je viens de tester une solution d’application serveur en PHP. Le principe est simple : une appli php est lancée en mémoire, de manière continue (elle reste en mémoire). A chaque requête sur le serveur web, ce dernier va interroger le script PHP via SCGI (une interface comme CGI ou FastCGI). Celui-ci va alors faire sa sauce et retourner du contenu, mais en restant en mémoire après. Quel intérêt ? Enorme. Par exemple, on peut maintenant mettre du cache en mémoire, et le servir ensuite particulièrement rapidement. Pas besoin de zone mémoire partagée ou autre choses de ce genre. On économise également le temps de « parse » du moteur PHP (transformation du code source en instructions semi-compilées). Le proof of concept existe, il est satisfaisant. Mais mon premier test montre que le plus simple programme PHP provoque déjà des fuites de mémoire. C’est toutefois quelque chose à surveiller de près ! [http://blog.milkfarmsoft.com/?p=51|http://blog.milkfarmsoft.com/?p=51|en]