Thursday, 30 December 2004
Traduction du billet 'New release of PEAR-Date_Holidays' de php-tools:
Stéphane a publié une nouvelle version de la librairie PEAR-Date_Holidays (en), la v0.12.0. Nouveau avec cette version: des nouvelles langues - allemand pour USA-Holidays et italien pour Christian holidays, et la méthode getHolidayForDate() a été améliorée grâce à un très bon patch de Lorenzo (en), qui la rend beaucoup plus rapide.
Date_Holidays est une librairie qui permet de gérer des dates spéciales comme les vacances ou jours fériés de maniere transparente. Elle a été créee par Carsten (en), à qui je fais un petit clin d'oeil en passant
Tuesday, 28 December 2004
J'ai récemment traduit les nouveaux textes pour la version française de Serendipity (en), et Garvin Hicking (de) l'a intégré à la version de développement CVS, qui peut être téléchargée (en) par le site officiel.
Dans sa dernière mouture (de), le système permet maintenant même l'utilisation de templates CSS de WordPress (en), le vote Karma pour les billets, l'export au format PDF du blog ou de parties du blog (voir tout en bas de mon blog), et plus encore.
Le troisième membre de l'équipe de PHP Application Tools, gERD, est en ce moment en Australie (vous pouvez suivre son aventure par son site). Il est aussi à la recherche d'un boulot... Il est un très bon administrateur système (Linux), ayant lui aussi pu faire ses preuves pendant près de 4 ans chez Metrix, est un bon programmeur PHP (il est l'auteur de patSysinfo, patUser et patSession) et est très ouvert d'esprit. Alors si vous connaissez quelqu'un en Australie...
Friday, 24 December 2004
Après des recherches fouillées, nous avons pu trouver exactement ce qui s'est passé quand notre serveur a été hacké - nous avons tout simplement été victimes du virus 'Santy', qui utilise Google pour trouver des forums phpBB ayant une faille de sécurité (voir le rapport de Search Engine journal). Le forum de php-tools étant un forum phpBB (et pas très à jour jusqu'à hier), nous nous sommes bien faits avoir. En attendant, j'ai quand-même aiguisé ma hache, et si jamais je devais retrouver l'auteur de cette petite crotte, je lui pourfendrais volontiers le crâne (non, ne vous inquiétez pas, ce sont des pulsions tout à fait naturelles  )
Thursday, 23 December 2004
Le weekend dernier, nous avons une fois de plus été visités par un hacker. Malheureusement, celui-là aussi faisait partie de la communauté des hackers très cons (voir mon billet 'Z'ont rien d'autre à faire, eux!') - je m'explique: il existe beaucoup de très bons hackers qui ont une connaissance énorme - j'en connais encore quelques-uns, et le les respecte pour ce qu'ils savent faire. Parcontre, même si un vrai hacker ne va jamais détruire mais seulement montrer son exploit (et souvent même donner des indications comment il a pu entrer), il y en a beaucoup qui n'ont pas ce sens de l'éthique.
C'est donc un de ces hackers-là qui a réussi à rentrer dans notre serveur, pour y déposer un petit script perl qui a remplacé tous les fichiers .php et .html auxquels il pouvait accéder par un petit bout de HTML affichant le texte 'This site has been defaced'. Wow, sacré héros le gars - il n'a même pas fait le travail lui-même. Et pour nous, génial: tous les fichiers PHP perdus, et même si nous avons des copies d'un peu tout, ça nous a coûté tout de même une journée entière à trois pour tout remettre en ordre.
Enfin voilà, c'est juste pour dire qu'on t'emmerde, petit con, qui que tu soies - t'as pas de vie, t'as pas de conscience, t'as pas de classe - j'ai pitié de toi. Et j'en profite aussi pour saluer tous mes amis hackers, vous savez qui vous êtes
Traduction du billet 'New versions of XML_Parser and XML_Serializer released' de php-tools:
Stéphane a publié une nouvelle version de deux de ses librairies PEAR: XML_Parser 1.2.2 et XML_Serializer 0.14.0. Tandis que la nouvelle version du XML_Parser ne corrige que deux bogues, la nouvelle version du XML_Serializer ajoute de nouvelles fonctions bien pratiques:
- En séparant les agents SAX de la librairie XML_Parser (ce qui est possible depuis la version 1.2.0), il est maintenant possible de définir l'encodage du document source et du document cible. Cela permet par ex. de lire des fichiers encodés en UTF-8 et de les convertir en ISO-8859-1.
- La nouvelle option 'encodeFunction' permet de définir une fonction PHP ou une méthode d'un objet qui sera utilisée pour toutes les données et attributs avant qu'ils ne soient ajoutés au document XML. Il est ainsi possible, par ex. d'encoder vos données en UTF-8 avant de créer le document XML. Comme le XML_Unserializer propose les fonctions de décodage correspondantes, cette option permet aussi d'encrypter et de décrypter des documents XML de manière tout à fait transparente.
Stéphane a ajouté ces deux nouvelles fonctions comme il travaille en ce moment sur sa librairie Services_Ebay - et Ebay ne travaille qu'avec des documents XML encodés en UTF-8. Cependant, il est vrai que ces fonctions peuvent permettre de gagner du temps de développement dans bien des cas.
Traduction du billet 'Two new articles published' de php-tools:
La semaine dernière, deux nouveaux articles de Stéphane sont parus: le premier est une introduction à XUL, publié dans le numéro 1.05 du magazine allemand "Java Magazin". Le XUL est un langage de type XML qui permet de modeler des interfaces utilisateur pour Mozilla. Si le sujet vous intéresse, et que vous avez encore un petit peu de mal avec l'allemand (c'est facile, pourtant  ), Stéphane a aussi publié une librairie dans PEAR, XML_XUL, avec laquelle on peut créer des applications XUL chez soi avec PHP. Même sans l'article, il y a une série d'exemples fournis avec qui permettent de débuter facilement.
Le second article est sur la librairie XML_Serializer de Stéphane, publié dans le dernier numéro du International PHP Magazine. Le XML_Serializer est une librairie très puissante qui permet de sérialiser presque n'importe-quelle structure PHP en XML et inversement. Un bon exemple est qu'on peut sérialiser un objet complet en XML, et le récupérer tel quel plus tard - ou l'utiliser tout simplement pour lire n'importe-quel document XML sans avoir à le parser soi-même.
Dans ma fanpage pour le jeu Etherlords, les Ether Planes, j'ai utilisé le XML_Serializer pour lire les données des cartes, qui étaient entièrement en XML. Le petit bout de code ci-dessous faisait la plupart du boulot:
// inclure le Unserializer
include_once( 'XML/Unserializer.php' );
// créer l'objet - on veut aussi avoir les attributs
// des balises, donc on définit l'option au démarrage
$unserializer = new XML_Unserializer( array( 'parseAttributes' => true ) );
// désérialisation des données XML
$unserializer->unserialize( 'maps/etherlords.xml', true );
// et voilà un joli tableau contenant les données
// du ficher XML. Simple, non?
$data = $unserializer->getUnserializedData();
Le XML_Serializer a aussi une interface SimpleXML, qui permet d'accéder aux données XML un peu comme avec la nouvelle extension PHP (dans certaines limites, bien sûr, vu que certaines choses ne sont pas possibles avec PHP4) - j'adore cette librairie, vu que je ne fais pas partie de ces gens qui adorent écrire des parseurs XML
Tuesday, 14 December 2004
Comme j'ai pas mal de correspondances dans plusieurs langues, ça commençait à devenir lassant de devoir éditer mes signatures tout le temps (Regards / Salutations / Grüße...), comme Mozilla Mail ne permet de définir qu'une seule signature par compte email. Alors un petit tour sur mozdev m'a fait découvrir TagZilla, une petite extension qui permet à la base d'ajouter une petite citation dans un email ou même dans un champ de formulaire quand on est dans le navigateur (pratique pour les forums!). C'est prévu pour des citations à la base, mais ça marche parfaitement pour gérer des signatures.
Une fois installé, quand on écrit un email, on accède à la liste des signatures par click droit (ou CTRL+J):
Ensuite, on peut sélectionner facilement une citation dans l'interface, et même par les boutons disponibles en insérer une aléatoirement si on veut
Les signatures sont stockées dans un fichier texte, mais celui-ci est limité à une citation par ligne par défaut. Il faut donc aller dans les préférences pour activer l'utilisation de fichiers à lignes multiples. Dans ce cas, il faut définir un séparateur de ligne qui sera utilisé pour distinguer les signatures.
Comme vous voyez, mon séparateur est assez massif, mais c'est pratique pour voir d'un coup d'oeil les signatures dans le fichier quand on veut l'éditer. D'ailleurs, voici ce que ça donne:
Et voilà, avec ça il devient facile de gérer plusieurs signatures! Comme vous pouvez voir, dans ma liste de signatures, la premiere ligne de chaque signature est le nom sous lequel elle apparaît dans la liste - c'est un peu bête de ne pas pouvoir les nommer sans avoir à recourir à ça, mais bon - là ça ne fait qu'une ligne à effacer apres avoir ajouté la signature dans l'email
Thursday, 9 December 2004
Traduction du billet 'patSpiderizer v2.0.9 bugfix release' de php-tools:
Comme j'ai finalement eu le temps de m'occuper du bogue "cannot redeclare xmlrpc_decode()", j'ai publié une nouvelle version de patSpiderizer (v2.0.9) qui est disponible sur notre site. C'est juste une version pour corriger ce bogue qui était très énervant mais qui n'arrivait qu'avec des installations PHP ou l'extension xmlrpc était activée. Et ce tout simplement parce-que les noms des fonctions de notre librairie de connectivité xml-rpc étaient les mêmes...
C'est probablement la dernière publication pour la version 2 (à part la correction de bogues), comme j'ai commencé à prendre des notes pour la nouvelle version 3. Cette nouvelle version sera entièrement réecrite, et va synthétiser l'expérience gagnée avec patSpiderizer et son grand frère XENA PolePosition (en allemand) que j'ai développé pour mon dernier employeur, Metrix Internet Design GmbH, en un programme. Le concept global va amener un peu de nouveau dans la scène du 'cloaking', je pense, comme il va être le premier à ne RIEN dissimuler
Wednesday, 8 December 2004
Apparamment il y a des gens qui savent comment plaire au Argh - il y en a même qui en font des peluches
Bzip! Revenons deux ans en arrière: à cette époque, je réservais le nom de domaine www.planetargh.com. C'était un projet très ambitieux: rassembler en un endroit toutes les péripéties de ma divinité préférée. Cependant, ce projet était un brin trop ambitieux (trop de péripéties  ) et n'a finalement jamais pu voir le jour.
Bzap! De retour en décembre 2004: j'ai réservé le nom de domaine www.temple-du-argh.net, qui héberge maintenant mon petit temple pour le Argh tout puissant. Ah oui, c'est déjà plus petit qu'une planète, un temple... je pense que là ça devrait marcher. Et puis un temple c'est chouette, avec tout plein de bougies et de statues, des adeptes en robe rouge, des pélerins venus du monde entier... n'oubliez pas les granolas, il adore les granolas, le Argh.
Traduction du billet 'Welcome Adam - Services_Ebay 0.10.0 released' de php-tools:
Stéphane vient de publier une nouvelle version de sa librairie d'accès au WebService d'Ebay dans PEAR, Services_Ebay. Il s'est occupé d'un petit bug dans le modèle pour les articles, et implémenté la possibilité de changer la langue des messages d'erreur ainsi que de définir des options d'expédition pour les articles.
Mais un grand changement est aussi que Stéphane a donné du carma CVS à Adam Trachtenberg, qui peut maintenant contribuer au projet directement via CVS. Il a déjà ajouté un premier patch, et il y en aura certainement d'autres à suivre. Alors, bienvenue Adam!
Traduction du billet 'New PEAR proposal: HTTP_Cache' de php-tools:
Stéphane vient de proposer une nouvelle librairie à inclure dans PEAR: HTTP_Cache. Cette librairie aide dans la gestion de requêtes GET conditionelles, et permet de limiter le trafic de vos sites en n'envoyant le corps de la requête qu'avec la première requête - pour toutes les autres, HTTP_Cache envoie un entête 304 (non modifié). C'est utile surtout si une page générée via PHP est très demandée mais ne change pas beaucoup, car le navigateur ne va pas la mettre dans son cache par défaut.
Pour utiliser HTTP_Cache dans votre site, c'est très simple vu que la librairie s'occupe de tout, et peut même utiliser le tampon d'affichage. Pour l'inclure dans votre application, il suffit de quelques lignes de code:
<?php
require_once 'HTTP/Cache.php';
$cache = &new HTTP_Cache(array('auto' => true));
echo "Vous pouvez maintenant envoyer des données au navigateur";
?>
HTTP_Cache va générer un identifiant unique pour le navigateur actuel et envoyer les entêtes suivants:
Cache-Control: must-revalidate
Etag: e33b111743ff17c7829cd6bdad6815cb
À la prochaine requête, le navigateur va renvoyer le Etag au serveur, et HTTP_Cache va comparer cet Etag avec celui généré sur le serveur. Si les deux correspondent, un entête 304 sera envoyé au navigateur (aucune donnée ne sera envoyée):
HTTP/1.x 304 Not Modified
Le seul désavantage est que HTTP_Cache a besoin de générer une somme MD5 du contenu à envoyer au navigateur, ce qui peut ralentir légèrement votre apllication selon les cas. Mais d'utiliser le cache peut augmenter les performances globales du serveur comme il n'a plus autant de données à envoyer que sans le cache.
Autrement, il est aussi possible de dire à HTTP_Cache quel identifiant utiliser - dans ce cas, la librairie n'a plus besoin de le générer elle-même par somme MD5. C'est surtout utile si vous sutilisez déjà un système de cache côté serveur qui a déjà généré un identifiant. Dans ce cas, vous pouvez vérifier si le cache du navigateur est valide pour ne pas avoir à charger la page:
<?php
require_once 'HTTP/Cache.php';
$cache = &new HTTP_Cache();
// création de l'identifiant
$etag = 'hfhfhjfjddhfhjdshdddkjd33';
$cache->setEtag($etag);
// le cache du navigateur n'est pas valide
if (!$cache->isValid()) {
// création du contenu
$html = 'Plein de HTML partout, partout tout plein....';
// donner le contenu à HTTP_Cache
$cache->setBody($html);
}
// envoyer les entêtes
$result = $cache->send();
?>
Si cette librairie vous intéresse, vous pouvez consulter la proposition dans PEAR ou télécharger la première version par notre site.
Tuesday, 7 December 2004
Traduction du billet 'PHP5 Kompendium is now available' de php-tools:
Samedi dernier, alors qu'il faisait ses courses de noêl, Stéphane a trouvé le nouveau livre de Christian et Tobias dans les étalages. Assez attendu, ce livre fait un tour complet de PHP5 et est le cadeau de noêl parfait pour qui veut commencer avec PHP ou est à la recherche de techniques avancées (et comprend l'allemand, bien sûr  ). En fait, personne n'avait remarqué que cela faisait bien deux semaines que le livre était sorti d'après le blog de Christian. Peut-être qu'il serait temps d'inclure son blog dans Planet PHP...
En tout cas, félicitations à Christian et Toby de toute l'équipe de PHP Application Tools!
Monday, 6 December 2004
Ca faisait un moment que je n'avais plus regardé dans Google ce qu'on peut bien trouver en faisant une recherche sur 'Argh'. À l'heure que j'écris ce billet, mon temple arrive en troisième position... pas mal me dis-je. Mais chose très saugrenue, mon concurrent direct est une association sportive: L' Association de Ringuette Gatineau- Hull, ou ARGH
"Mais qu'est-ce que donc la Ringuette?!?", me dis-je... (eh oui, parfois je me dis des trucs). Et hop, mon passe-temps favori reprend du service: une petite recherche Google et me voilà un spécialiste de la Ringuette, un sport principalement féminin qui m'a l'air fort sympatique. Et en même temps, je me dis qu'Internet, c'est vraiment trop fort. À priori, le Argh et la Ringuette avaient très peu de chances de se trouver liés. Coup de destin, ou hasard inopiné... moi, je trouve que le titre de ce billet fait un peu fable de la fontaine
|