Pour rappel, RunCMS opère dans la lignée des CMS comme PHPnuke et Xoops dont il est le descendant.
Il est réalisé en language PHP et utilise MySQL pour accéder aux différentes données
Il permet d'effectuer :
-
La gestion des articles
- Des liens
- Des forums
- Des téléchargements
- Des sections
- Des sondages
- FAQ
- RSS
- Gestions des membres
- Personnalisation des thèmes
Une nouvelle version version avec des correctifs de sécurité.
A découvrir si vous ne connaissez pas.
Je vous souhaite une excellente année 2008, remplie de PHP, MySQL et nombreuses technologies Open Source, de réussite professionnelle et de bonheur. Puissent vos projets les plus ambitieux se réaliser! Pour ma part, je suis convaincu que lorsque l'on a réellement la passion et l'enthousiasme, nos souhaits se réalisent et bien souvent, alors qu'on ne s'y attendait pas encore!
Et je tiens aussi à vous remercier pour vos visites, vos commentaires et toutes les rencontres que je fais en conférence. Ça m'a fait bien plaisir et j'ai hâte de recommencer cette année!
Pour fêter la nouvelle année, les 5 premiers qui mettront un commentaire sur cette page, se verront offrir un
elePHPant PHP, et les 5 suivants, un
livre sur la sécurité PHP et MySQL. (Note : les commentaires sont modérés... S'ils sont moins que 10, vous avez encore une chance! ) Bonne chance!
Mise à jour du 2 janvier :
Le concours est maintenant fermé.
Olivier, Bouron, Oberon, Roger Stéphane et TiScarabee gagnent un elephpant PHP.
Hamon (Hugo), Oliv, deville, mr_xav et Cédric Marquevielle gagnent un livre 'Sécurité PHP 5 et MySQL 5'.
Bravo à tous les gagnants, et un grand merci pour tous vos voeux. Je vais vous contacter pour avoir leur adresse postale.(Note : Deville et Mr_xav : impossible de vous joindre sans adresse... Vendredi soir, je redistribue les prix aux suivants.)
(N
Après avoir lu les prédictions de 2008, j'ai regardé par ma propre fenêtre, et j'ai vu de grands progrès pour PHP et MySQL cette année 2008. Notamment, l'adoption de PDO via PHP 5, et l'arrivée du futur PHP 6 après moult rebondissements. Et aussi, quelques modifications dans le paysage professionnel...
"Un commentaire nous a montré qu'il faut faire le point sur les instructions d'installation et de compilation de mysqlnd pour PHP 5.2, 5.3 et 6.0 ."
Et voila la documentation!
"Voici les similitudes et différences entre PHP et Ruby. Si vous connaissez PHP, cela vous donnera un aperçu de ce que Ruby est capable, et comment on peut l'appréhender depuis PHP."
Après avoir obtenu en 2006 le trophée d'argent dans la catégorie "sécurité" aux Trophées du libre 2006.
GLPI (gestion libre de parc informatique) revient avec une nouvelle version de son application. Pour rappel, cette solution open source permet de gerer un parc informatique et de helpdesk et ecrit en PHP.
La plus importante nouveauté concerne la gestion des entités, permettant d'isoler des ensembles d'équipements et d'utilisateurs afin de pouvoir adapter GLPI à l'organisation de la structure utilisatrice.
Les mythes, comme les mites, ont la vie dure. Jaybill McCarthy pourfend dix, qu'il entend revenir encore et encore dans la bouche de développeur Java et .NET.
Certains sont de vieux classiques, comme le manque de support objet (bienvenue PHP 5) et PHP est lent.
Plus amusant, il y a "Toutes les applications PHP se ressemblent", avec une joyeuse confusion avec PHP-Nuke. Il y a aussi le "PHP est un imbroglio de include et require", qui démontre une bonne expérience de la plate-forme.
4 paquets ont été mis à jour cette semaine :
APC (0 visite) : cache PHP alternatif
imagick (0 visite) : interface avec la bibliothèque graphique ImageMagick
perforce (0 visite) : interface Perforce
timezonedb (0 visite) : base de données de fuseaux horaires pour PHP
PECL est la bibliothèque d'extensions C de PHP.
Voici les 5 dernières vidéos PHP et MySQL.
Ces vidéos sont publiés sur les sites de partagent de vidéo. Ce sont des tutoriels enregistrés, des sessions de conférences, des screencast ou encore des slides de conférences.
N'hésitez pas à nous contacter pour signaler tout media qui mérite d'être ajouté à cette liste.
PHP 4 est maintenant officiellement terminé. La toute dernière version a été publiée aujourd'hui par Derick Rethans, qui a aussi prononcée la fin du projet. Les développeurs du coeur de PHP souhaitent se concentrer maintenant sur les versions plus modernes du code, et ne plus perdre de temps en combats d'arrière garde. D'ici le 8 août 2008 (08/08/08), seuls les mises à jour de sécurité seront faîtes si elles sont jugées importantes. Autrement, PHP 4 est maintenant fini.
Il arrive souvent d'avoir besoin de données présentes dans la base. Il est tout aussi courant de ne pas avoir de données à disposition (ou pas assez).
Basé sur ce billet, les deux requêtes suivantes vous permettent de remplir un champ de type "date" avec des dates a peu près aléatoire pour autant d'enregistrement que vous voulez. Il vous suffit de créer plus de vues ou d'ajouter la même vue dans le "from" avec des alias pour augmenter le nombre d'enregistrement (c'est un produit cartésien).
Le code suivant génère des dates pour 9 enregistrements sur le plus petit dénominateur commun, à savoir un mois de 28 jours. L'année est mise en dur dans la requête, vous pouvez aisément la remplacer.
CREATE VIEW v3 AS SELECT NULL union ALL SELECT NULL union ALL SELECT NULL;
INSERT INTO t1 (date) SELECT concat('2007-', FLOOR(1 + RAND() * (12 - 1)), '-', FLOOR(1 + RAND() * (28 - 1))) FROM v3 a,v3 b;
Note: ce n'est pas la façon la plus élégante ni la plus efficace pour les dates mais ça fonctionne 
Il arrive souvent d'avoir besoin de données présentes dans la base. Il est tout aussi courant de ne pas avoir de données à disposition (ou pas assez).
Basé sur ce billet, les deux requêtes suivantes vous permettent de remplir un champ de type "date" avec des dates a peu près aléatoire pour autant d'enregistrement que vous voulez. Il vous suffit de créer plus de vues ou d'ajouter la même vue dans le "from" avec des alias pour augmenter le nombre d'enregistrement (c'est un produit cartésien).
Le code suivant génère des dates pour 9 enregistrements sur le plus petit dénominateur commun, à savoir un mois de 28 jours. L'année est mise en dur dans la requête, vous pouvez aisément la remplacer.
CREATE VIEW v3 AS SELECT NULL union ALL SELECT NULL union ALL SELECT NULL;
INSERT INTO t1 (date) SELECT concat('2007-', FLOOR(1 + RAND() * (12 - 1)), '-', FLOOR(1 + RAND() * (28 - 1))) FROM v3 a,v3 b;
Note: ce n'est pas la façon la plus élégante ni la plus efficace pour les dates mais ça fonctionne 
Le support de PHP4 est désormais arrêté avec la publication aujourd'hui de sa dernière version, la 4.4.8.
Cette nouvelle version, qui parait près de 8 mois après la précédente version, n'apporte pas de corrections majeures (corrections de bugs divers). A compter de ce jour, et ce jusqu'au 8 août 2008, seules des mises à jour de sécurité seront faites.
Nous vous invitons donc à migrer vos applications vers PHP5 si cela n'est pas encore fait. Vous avez pour cela à votre disposition le guide de migration de PHP4 vers PHP5.
Proposé par Fabien LACHAUD
Cette nouvelle année marque un tournant décisif dans l'histoire de PHP. Depuis le 01 janvier 2008, le développement de PHP 4 est abandonné au profit de PHP 5.3 et PHP 6. Rappelons-nous que la première version publique bêta de PHP4 date du 19 juillet 1999, soit 8 ans de bons et loyaux services. L'heure est venue de tourner la page et de laisser place aux nouvelles technologies.
Quel framework choisir est une question qui revient souvent dans la bouche des développeurs PHP. Mais aussi de nombreux autres plates-formes comme Ruby ou Python : il n'y a pas que Django ou Rails dans la vie!
Smashing magazine s'est essayé à l'exercice : pour PHP, c'est CakePHP qui sort du lot, avec le Code Igniter et le Zend Framework. Prado, et Symfony se font remarquer, ainsi que BareBones (qui a toujours été l'éditeur de BBedit pour moi, mais qui semble être aussi un framework PHP).
Notez aussi qu'il y a des framework Javascript, Ajax et même CSS! Un article à mettre ne signet de toute urgence.
PHP et MySQL ne font l'objet d'aucune alerte de sécurité dans leurs versions courantes :
PHP 5.2.5 et 4.4.8; MySQL 5.0.51 (communauté) , 4.1.22, ainsi que 5.1.21-beta et 6.0.3.
Les mises à jour sont recommandées vers ces versions.
3 alertes de sécurité ont été émises cette semaine, concernant des applications suivantes :
Drupal, Gallery et Mantis
Helgi Þormar Þorbjörnsson annonce une nouvelle version du site Web de PEAR : si elle semble assez cosmétique en apparence, il faut saluer le travail de forçat que Helgi a entrepris pour arriver à ses fins.
Le site est maintenant nettoyé, avec une colonne de moins, et une pléiade d'utilisateurs inactifs disparus. Le site n'est pas standard W3C, mais il en est très proche (3 erreurs). Si cela fait longtemps que vous n'y êtes pas allés, jetez-y un oeil.
"Il est très pratique pour les utilisateurs de communiquer avec une application ou une compagnie, via email, mais il n'est pas forcément très facile aux employés de cette dernière de répondre. Certaines demandes par courriel peuvent être très complexes, alors que d'autres seront très fréquentes et simples. C'est donc un avantage stratégique que de pouvoir répondre automatiquement aux message, via PHP."
CakePHP 1.2 vient de sortir en version beta après être resté un long moment en prebeta. Cette version inclut de nombreuses fonctionnalités : enrichissement des méthodes de validation, pagination et tri sur l'affichage des enregistrements, meilleur gestion de l'authentification des utilisateurs, système de cache...
En ce qui concerne la branche stable, une nouvelle
version 1.1.19 est également disponible. En voici le changelog :
https://trac.cakephp.org/wiki/changelog/1.1.x.x
Retrouvez toutes ces informations sur le nouveau site de
CakePHP
J'aurai la chance d'être au Canada pour deux semaines de vacances début février. En plus de la découverte de ce pays qui s'annonce très beau (et froid), je participerai à la rencontre mensuelle de PHP Québec qui aura lieu le 7 février 2008 de 19h à 22h à l'École de technologie supérieure...
Parfois, on sait ce qui est bon, mais on ne sait pas comment le dire. Alors, quand on tombe sur une de ces citations lapidaires qui donne un nom à une pratique, c'est le bonheur. "Worse is better" fait partie de celles-ci.
Dans la philosophie de développement "Worse is better", la simplicité est la qualité primordiale, suivie de la rectitude, la cohérnce et l'exhaustivité. "Il est plus important que l'implémentation soit simple que son interface"; "Il est mieux d'être simple que correct.".
Dire que cela existe depuis 1989...
10 paquets ont été mis à jour cette semaine :
PEAR est la bibliothèque de composants PHP.
C'est bientot le premier apéro php Belgique 2008 le 25 janvier.
J'ai retrouvé les photos du premier apéro php que j'ai fait à Annecy en mars 2001
Entendu aux infos, un quebecois parle de "la grande odyssée "un parcours de 1000 km dans les alpes.
Moins 30 c'est pas froid !
J'suis nue-mains... Ca va être la plus grosse difficulté
difficulté pour nous: "la chaleur"
J'ai souri (bon ok j'ai pleuré de rire)
Entendu aux infos, un quebecois parle de "la grande odyssée "un parcours de 1000 km dans les alpes.
Moins 30 c'est pas froid !
J'suis nue-mains... Ca va être la plus grosse difficulté
difficulté pour nous: "la chaleur"
J'ai souri (bon ok j'ai pleuré de rire)
La pagination découpe un résultat trop grand en une série de pages plus petites. A la base, cette approche permet de réduire la quantité de travail à faire, puisque les pages sont plus petites, et donc, plus faciles à générer. Elles sont au moins plus faciles à charger.
Toutefois, la majorité d'entre nous produisent les pages à l'aide de la clause LIMIT, ce qui fait que la 30eme page impose au serveur de classer les 300 premiers éléments pour n'en conserver que les 10 derniers. Du vrai gaspillage, qui se transforme en perte de vitesse.
"Je dois admettre qu'écrire une application pour FaceBook est plutôt cool. J'ai donc décidé d'en créer un qui utilise cette plate-forme. J'ai écrit cette application en PHP, et j'ai pensé qu'il serait utile à d'autre d'écrire sa propre application Facebook, alors voici le tutoriel qui va bien."
register_shutdown_function fait partie des fonctions PHP oubliées, qui se révèlent pourtant très utiles (nous l'avions déjà choisi pour le mois de la fonction PHP l'an dernier). Elle permet d'exécuter du code PHP APRES la livraison du code HTML au client. C'est le moment de l'extinction du fichier, où on peut ranger proprement les ressources, ou bien noter des informations sans ralentir la publication (mais toujours en faisant travailler le serveur).
Ludovic Toinel nous en parle en détail, avec force schéma et code.
"TCPDF est une classe PHP 5 pour produire des fichiers PDF à la volée, sans aucune extension particulière. TCPDF se base sur FPDF (www.fpdf.org) et lui apporte nombre de modernisation. Elle supporte notamment UTF-8, Unicode, HTML et XHTML."
Merci à Hervé Touzard de rappeler que TCPDF est bien vivante, et à jour. D'ailleurs, le site de tecnik présente deux autre projets intéressants : un correcteur XHTML qui transforme du vieux code HTML en XHTML, et un pont PHP-TMX (pour les traductions).
La version 6.5.2 d'Ovidentia est disponible en téléchargement.
Ovidentia est un gestion de publication de contenu open source et une plateforme collaborative.
Ovidentia vous permet d’intégrer simplement et facilement un environnement de publication sur internet ou un portail groupware (internet, extranet, intranet) pour une entreprise, organisation, communauté…
"Depuis les dernières années, l'utilisation de services Web a connu une popularité grandissante auprès des développeurs Web. Cette tendance est due aux techniques de 'mash-up' où plusieurs services Web sont combinés élégamment, en utilisant un langage de programmation coté serveur. Dans cet article, le premier d'une série de 6, nous allons voir comment utiliser le Yahoo! Developer Framework depuis PHP 5 pour construire des services Web pratiques."
Zend Core est la version de PHP proposée par Zend Technologies : la principale différence avec la version de php.net est que Zend Core est audité et certifié par Zend, aussi bien pour le coeur que pour les extensions.
Il arrive alors que sur ce noyau, on ait besoin d'ajouter d'autres extensions, soit par besoin, soit pour inclure des fonctionnalités spécifiques, et qui ne sont pas certifiées par Zend. La compilation est alors un peu différente de celle de PHP, et John Coggeshall nous explique comment faire.
'Il y a quelques mois, Johannes Schlüter et moi-même (David) avons commencé à discuter de GIT et d'autres systèmes de contrôle de sources décentralisés. Durant notre étude de GIT, nous avons envisagé d'importer le code source de PHP dans GIT. Quelques semaines plus tard, et après beaucoup de gaspillage de processeur, nousavons finalement un serveur GIT non-officiel, et son miroir. Il est proposé par Johannes Schlüter et dupliqué par moi-même."
CVS est un outil critique pour le développement de PHP, depuis que le nombre de développeur qui travaillent sur le code source a submergé son auteur initial. La technologie CVS montre son age, et plusieurs projets de remplacements sont à l'oeuvre. GIT est une solution à découvrir, pour les grands projets : ce logiciel ne dépend pas d'un serveur centralisé ni du réseau, mais fonctionne en mode distribué.
"Depuis les dernières années, l'utilisation de services Web a connu une popularité grandissante auprès des développeurs Web. Cette tendance est due aux techniques de 'mash-up' où plusieurs services Web sont combinés élégamment, en utilisant un langage de programmation coté serveur. Dans cet article, le premier d'une série de 6, nous allons voir comment utiliser le Yahoo! Developer Framework depuis PHP 5 pour construire des services Web pratiques."
Forum:
Brèves
Auteur: philippe
Écrit le: Wed, 09 Jan 2008 09:29:36 +0100
Dernier message: Mon, 17 Mar 2008 20:16:37 +0100
Le site Developer Tutorials vient de publier un tutorial expliquant comment créer sa propre application Facebook grâce à PHP.
Ce tutorial présente, à l'aide d'un exemple concret, tout ce dont vous aurez besoin pour vous lancer dans l'écriture d'une application.
Vous verrez notamment les librairies spécifiques à installer ainsi qu'une brève présentation du FBML (Facebook Markup Language), le langage de mise en page standard sur Facebook.
Créer une application Facebook avec PHP (en anglais)
Proposé par Fabien LACHAUD
Retrouvez en JavaScript vos fonctions PHP usuelles.
Kevin van Zonneveld a lancé un projet visant à porter des fonctions PHP en langage JavaScript. Le but étant pour un développeur PHP de retrouver en JS des fonctions usuelles telles que "trim", "str_replace", "implode" n'ayant pas d'équivalents. Même si l'utilité de ces fonctions peut paraître contestable pour des gens à l'aise en JS, les développeurs ayant plus de difficultés les trouveront certainement utiles.
Le projet compte actuellement 36 fonctions et Kevin van Zonneveld invite toute personne intéressée à contribuer en portant d'autres fonctions.
Source Zend Developper
Un article sur le site de Tomas Petricek et relayé récemment sur la Developer Zone de Zend explique comment utiliser PHP et Phalanger, compilateur permettant d'utiliser des scripts PHP avec le framework .Net, pour écrire des
applications Silverlight.
Dans un premier temps, l'auteur introduit l'écriture des fichiers XAML en énumérant les modifications à apporter pour le bon fonctionnement
des scripts PHP.
Ensuite il montre comment utiliser PHP pour dynamiser l'interface XAML avec comme exemple l'écriture d'évenements onclick et onload.
Enfin il nous montre comment compiler et exécuter l'application.
L'auteur fournit, en guise d'exemple, un mini jeu reprenant l'ensemble des explications abordées dans l'article et quelques notions supplémentaires pour ceux qui voudraient appronfondir le sujet.
Avec la mort récente et annoncée de PHP 4, les statistiques de décembre laissent un goût amer dans la bouche. Plus de 70% d'utilisateurs de PHP dans le monde sont encore à PHP 4, et se retrouvent désormais avec une dernière version 4.4.8. A partir de maintenant, leur situation ne peut que se dégrader...
Si les raisons de l'abandon sont nombreuses et inexorables, il reste étonnant de voir que tant de monde utilise encore PHP 4 : plus de 70% de la base installée! En plus de 3 ans, ces millions d'utilisateurs n'ont pas fait le saut en PHP 5. Pourtant, les applications PHP sont très majoritairement PHP 5, les hébergeurs ont tous leur offre de prête, et les sociétés de développement l'affiche aussi. Qui donc sont les développeurs PHP 4?
Parmi les arguments que je vois moins souvent passer, il y a les tailles respectives des communautés PHP 4 et PHP 5. PHP 4 a attiré les pionniers et paresseux de l'an 2000, qui ont peut-être encore un site actif, et fonctionnel. (rappelez-vous que 0,5 % utilise toujours PHP 3, et que 2 douzaines de sites affichent PHP 2!).
Pour PHP 5, ces gens-là sont allés chez flickr et facebook, et on délaissé galery et wordpress : cela fait que la base installée PHP 5 est maintenant plus petite que la base PHP 4. Ce qui explique le décalage étonnant entre le fait que tout le monde se prétende PHP 5, alors que l'on compte encore des millions de sites PHP 4.
En 5 minutes, j'ai réussi à citer de mémoire 44 balises HTML. Après avoir lu toutes les réponses possibles, je me suis aperçu que j'aurai pu en citer encore 15 autres... Mais les dernières sont inconnues au bataillons.
Bref... une petite leçon d'humilité.
Pascal Blachier vous entraine dans le monde excitant des frameworks avec la mission de faire un choix raisonnable dans l'immense gamme de logiciels proposés. La maturité d'un projet, la communauté, ses fonctionnalités sont autant de points à étudier pour choisir ou écarter un framework.
Au final, Pascal recommande Wordpress, eZ publish et Drupal. Quel est votre choix?
Voici les 5 dernières vidéos PHP et MySQL.
Ces vidéos sont publiés sur les sites de partagent de vidéo. Ce sont des tutoriels enregistrés, des sessions de conférences, des screencast ou encore des slides de conférences.
N'hésitez pas à nous contacter pour signaler tout media qui mérite d'être ajouté à cette liste.
"La page d'inscription à un site est la seconde page la plus importante sur un site (la plus importante est bien sûr la page d'accueil), car c'est là que vous demandez à vos visiteurs leur implication. Tout le monde se préoccupe de la page d'accueil (et peu de monde la réussi), mais la plupart des sites font un travail bien pire avec leur page d'inscription. Par exemple, HAMweather est horrible, et Last.fm ne donne aucune information. Cet article par Tim Bednar est aujourd'hui essentiel à lire."
Effectivement, la page d'inscription est sûrement une des pages les plus ratées, car les aspects sécurité et formulaires donnent généralement la main haute aux développeurs.
mysqlreport propose un rapport de santé pour MySQL plus parllant que le classique SHOW STATUS.mysqlreport se base sur les statsu en cours, mais produit des ratios plus intéressants et pertinents.mysqlreport est une alternative bien plus productive à SHOW STATUS et s'installe en un simple download.
MySQL 5.0.38-Dotdeb_1.d uptime 45 20:0:51 Thu Jan 10 16:16:57 2008
__ Key _________________________________________________________________
Buffer used 14.16M of 16.00M %Used: 88.48
Current 16.00M %Usage: 100.00
Write hit 83.42%
Read hit 95.63%
__ Questions ___________________________________________________________
Total 99.18M 25.0/s
DMS 98.05M 24.8/s %Total: 98.86
Com_ 516.82k 0.1/s 0.52
COM_QUIT 345.34k 0.1/s 0.35
QC Hits 300.38k 0.1/s 0.30
-Unknown 34.56k 0.0/s 0.03
Slow (10) 16.35k 0.0/s %Total: 0.02 %DMS: 0.02 Log: OFF
DMS 98.05M 24.8/s 98.86
INSERT 97.41M 24.6/s 98.21 99.34
UPDATE 361.23k 0.1/s 0.36 0.37
SELECT 264.64k 0.1/s 0.27 0.27
DELETE 16.57k 0.0/s 0.02 0.02
REPLACE 666 0.0/s 0.00 0.00
Com_ 516.82k 0.1/s 0.52
change_db 307.35k 0.1/s 0.31
lock_tables 81.47k 0.0/s 0.08
unlock_tabl 81.42k 0.0/s 0.08
__ SELECT and Sort _____________________________________________________
Scan 116.74k 0.0/s %SELECT: 44.11
Range 231 0.0/s 0.09
Full join 32 0.0/s 0.01
Range check 0 0/s 0.00
Full rng join 0 0/s 0.00
Sort scan 79.46k 0.0/s
Sort range 0 0/s
Sort mrg pass 76.19k 0.0/s
__ Query Cache _________________________________________________________
Memory usage 182.50k of 16.00M %Used: 1.11
Block Fragmnt 4.36%
Hits 300.38k 0.1/s
Inserts 9.26k 0.0/s
Insrt:Prune 9.26k:1 0.0/s
Hit:Insert 32.44:1
__ Table Locks _________________________________________________________
Waited 5.94k 0.0/s %Total: 0.01
Immediate 72.82M 18.4/s
__ Tables ______________________________________________________________
Open 62 of 64 %Cache: 96.88
Opened 10.02k 0.0/s
__ Connections _________________________________________________________
Max used 24 of 100 %Max: 24.00
Total 345.39k 0.1/s
__ Created Temp ________________________________________________________
Disk table 47 0.0/s
Table 18.51k 0.0/s Size: 32.00M
File 152.90k 0.0/s
__ Threads _____________________________________________________________
Running 3 of 8
Cached 0 of 0 %Hit: 0.68
Created 343.04k 0.1/s
Slow 2 0.0/s
__ Aborted _____________________________________________________________
Clients 104 0.0/s
Connects 1.39k 0.0/s
__ Bytes _______________________________________________________________
Sent 2.89G 728.8/s
Received 2.79G 704.4/s
__ InnoDB Buffer Pool __________________________________________________
Usage 304.00k of 8.00M %Used: 3.71
Read ratio 0.117
Pages
Free 493 %Total: 96.29
Data 19 3.71 %Drty: 0.00
Misc 0 0.00
Latched 0 0.00
Reads 103 0.0/s
From file 12 0.0/s 11.65
Ahead Rnd 1 0.0/s
Ahead Sql 0 0/s
Writes 1 0.0/s
Flushes 1 0.0/s
Wait Free 0 0/s
__ InnoDB Lock _________________________________________________________
Waits 0 0/s
Current 0
Time acquiring
Total 0 ms
Average 0 ms
Max 0 ms
__ InnoDB Data, Pages, Rows ____________________________________________
Data
Reads 25 0.0/s
Writes 7 0.0/s
fsync 7 0.0/s
Pending
Reads 0
Writes 0
fsync 0
Pages
Created 0 0/s
Read 19 0.0/s
Written 1 0.0/s
Rows
Deleted 0 0/s
Inserted 0 0/s
Read 0 0/s
Updated 0 0/s
Après deux ans de développement et quelques versions intermédiaires, la première version officielle stable de Jelix est disponible. Jelix est un framework libre (LGPL), extensible et modulaire pour PHP 5. Il a déjà fait preuve de robustesse et de performances intéressantes. En effet, il est utilisé depuis de nombreux mois sur plusieurs sites en production, dont certains gros sites français à très forte charge.
Ce framework entièrement orienté objet propose nombre aspects techniques modernes :
* une logique MVC
* une bibliothèque de mapping objet-base relationnelle (ORM)
* authentification
* gestion de droits
* localisation
* un moteur de template léger et performant
* un framework de tests unitaires
* la prise en charge de nombreux formats en sortie et de différents types de services web
* etc.
Son originalité tient en particulier dans :
* son système de formulaire simple et puissant
* son système d'urls automatiques
* son système d'évènements inter-modules
* sa gestion robuste des erreurs techniques
* la possibilité de "surcharger" des fichiers de module existants.
Toutefois, bien qu’offrant de nombreuses possibilités, Jelix est conçu avec à l’esprit le soucis constant de simplicité et de performance.
Jelix est disponible en trois éditions (gratuites et libres bien sûr) : "developer", "optimized" et "gold". La première est très utile pour la phase développement de vos projets, les deux autres sont optimisées pour les serveurs en production. Il est également possible de se construire une édition optimisée en fonction de la configuration de son propre serveur, de sa version de PHP.
Découvrez et téléchargez Jelix sur http://jelix.org. Rejoignez une communauté ouverte et réactive !
Proposé par Laurent Jouanneau
On parle beaucoup des API de Google, qui permettent de faire intéragir une application avec celles de Google. Yahoo! a également développé des API pour utiliser, entre autre, la recherche d'images et de videos. Le site devshed.com vient de publier un article qui donne les bases sur l'utilisation des web services de Yahoo!.
Après une petite introduction, ce tutoriel explique le fonctionnement des API de Yahoo puis vous propose deux exemples d'utilisation, la recherche d'images et de videos. Ziff Davis va proposer d'autre tutoriel sur ce sujet dans quelques temps.
Article
L'équipe de conférence PHP Québec est fière de vous dévoiler le
programme de la conférence PHP Québec 2008 qui aura lieu les 12,13 et 14 mars
au prestigieux Hôtel Sofitel à Montréal.
La sixième édition de la conférence PHP Québec, prendra son envol sous le
thème PHP: fait le avec PHP. Cette année, l'objectif de la conférence est de
fournir des solutions pratiques aux problèmes liés au développement
d'applications ainsi qu'à la gestion de projets.
Mercredi 12 mars, se tiendra le PHPLab, une journée d'ateliers pratiques sur
les techniques de sécurité Web, des trucs et astuces sur le développement de
services Web avec SOAP, comment développer un framework avec Symfonie,
comprendre et automatiser les tests unitaires, les dix erreurs d'optimisation
les plus fréquentes et comprendre les dernières évolutions de PHP. Deux
sessions spéciales seront également présentées lors de cette journée :
une session de questions et réponses sur la sécurité ainsi qu'une
présentation des diverses solutions de base de données disponibles sur le
marché (Oracle, MySQL, DB2, PGSQL) qui sera suivie d'une période de questions
réponses. Les ateliers, donnés en groupe de 20 personnes au maximum, vous
donnent une opportunité unique d'exposer vos problématiques et obtenir des
réponses pratiques. De plus, lorsque vous assistez au PHPlab vous obtiendrez
l'accès au salon de l'emploi et au cocktail gratuitement.
La conférence se poursuivra le jeudi 13 mars et le vendredi 14 mars. Avec plus
de 30 présentations sur les techniques avancées et les dernières nouveautés
de PHP, l'accessibilité des données ainsi que la résolution de problèmes
liés au développement Web, la conférence est un bon moyen pour mettre à jour
vos connaissances.
Pour plus d'information concernant la conférence, consultez le site Web de la
conférence.
Enregistrez vous avant le 18 janvier et économisez 195$.
Le tarif de pré-vente se termine le 18 janvier.
http://conf.phpquebec.com/
5 paquets ont été mis à jour cette semaine :
mailparse (0 visite) : manipulations de messages courriels
memcache (0 visite) : cache mémoire
perforce (0 visite) : interface Perforce
timezonedb (0 visite) : base de données de fuseaux horaires pour PHP
ocal (0 visite) : connecteur à Oracle Calendar
PECL est la bibliothèque d'extensions C de PHP.
Voici une page à mettre en signet immédiatement : la liste des candidats au titre de virus XSS le plus court au monde. Il s'agit d'un concours où le but est de fournit le plus petit virus possible. Le virus a un potentiel pathogène exprimé sous la forme alert('XSS'), et le concours porte sur les capacités de réplication de diffusion du virus, sans grossir, sur un maximum de navigateurs et sans prérequis du fichier DOM.
A voir le nombre de candidats pour le titre (70 candidats, pour 270 propositions...), il y a des cheveux à se faire. Les virus sont capables de se propager d'une page à l'autre, sans intervention de l'utilisateur, et sur presque tous les navigateurs.
La bonne nouvelle est que le plus petit d'entre eux fait 161 caractères : essayez alors d'interdire les entrées plus longues que 161 caractères pour être tranquilles.
Toutes les applications PHP ont besoin d'un fichier de configuration, ne serait-ce que pour enregistrer les informations de connexion à la base de données. Une des méthodes populaires pour cela est d'utiliser une inclusion PHP, car c'est pratique et que PHP le traite rapidement. Cette approche est celle choisie par le framework Solar PHP, et bien d'autres.
Mais, si c'est pratique pour les développeurs PHP, c'est souvent plus encombrant pour les autres. Par exemple, nous donnons souvent les applications à gérer aux administrateurs système. Comme ils ne connaissent que peu PHP, il est facile de les frustrer avec une apostrophe qui manque, une parenthèse ou un poit-virgule."
Une solution plus interopérable est YAML.
Le Magazine MySQL (un PDF gratuit) sort son troisième opus (hivers 2007).
- Comment appeler une procédure stockée avec un paramètre OUT
- Optimisation de performances Innodb
- Extrait du livre "Expert Mysql "
- Optimisation d'index en MySQL - Partie 2
"Le ODF-XSLT Document Generator (générateur de document ODF-XSLT) est une bibliothèque écrite en PHP 5, qui apporte la puissance de XSLT à vos documents OpenDocument. Il vous permet d'utiliser vos fichiers ODF comme si c'était des gabarits XSLT. Il permet aussi quelques options d'analyse supplémentaire pour éditer les fichiers ODF depuis votre suite Office préférée. ODF-XSLT est développé par Tribal Internet Marketing et est publiée sous licence libre GNU General Public License, version 3."
Des gabarits pour produire des fichiers ODF en série depuis PHP? Une bibliothèque au potentiel intéressant pour échanger des documents en ligne.
Le magazine fortune a dressé la liste des introductions en bourse intéressantes pour 2008 : 3 des cinq entreprises retenues sont Open Source : MySQL, Ingres et SugarCRM. Pour MySQL, cela fait déjà longtemps que l'on en parle, et les rumeurs ... sont toujours des rumeurs. Disons simplement que 2008 est plus probable que 2007.
Tutorial sur les expressions régulières en PHP
Martin Streicher a publié en ce début d'année la première partie de son tutorial consacré aux expressions régulières en PHP.
Enormément utilisé dans tout type d'applications, les expressions régulières permettent en particulier de vérifier le format d'une chaîne de caractères, que ce soit simplement une adresse mail, une url, une date ou bien un format précis que vous définissez vous même.
La première partie de ce tutorial introduit le concept des expressions régulières et présente les utilisations de base des fonctions offertes par PHP.
Lire l'article
Petit changement pour ce premier apéro php Belgique 2008 ce 25 janvier , nous irons à la Bécasse du centre ville (pas au cimetière d'Ixelles)
Ca ne change rien pour ceux qui viennent en train. Mais les feux d'artifices seront interdits.
11 rue Tabora | Taborastraat
1000 Brussel (Vijfhoek) | Bruxelles (Pentagone)
Si vous comptez venir,
Inscrivez vous sur l'event facebook, ou laissez un commentaire sur ce post
View Larger Map
PHP et MySQL ne font l'objet d'aucune alerte de sécurité dans leurs versions courantes :
PHP 5.2.5 et 4.4.8; MySQL 5.0.51 (communauté) , 4.1.22, ainsi que 5.1.22 et 6.0.3.
Les mises à jour sont recommandées vers ces versions.
9 alertes de sécurité ont été émises cette semaine, concernant des applications suivantes :
Drupal, Gallery, Horde, Invision Power Board, Joomla, Mantis, WordPress, ming et phpBB
Ah la la. C'est assez rare pour être souligné, mais je viens de me battre avec Symfony pendant près de deux heures avec un problème assez déroutant de prime abord : lorsque dans une action vous faites quelque chose d'aussi anodin que ceci :
public function executeBar()
{
try
{
// Some stuff here, if successful redirect user to somewhere else
$this->setFlash('notice', 'Action was successful');
$this->redirect('@whatever_route');
}
catch (Exception $e)
{
$this->getRequest()->setError('errors', 'Something has failed somewhere, sorry dude');
$this->logMessage('Big boo boo occured: '.$e->getMessage(), 'err');
return sfView::SUCCESS;
}
}
Et bien dans ce cas là, la redirection s'opère MAIS l'ensemble du rendu sera tout de même produit et envoyé au navigateur [1] - ce qui peut s'avérer très couteux sur un site internet au final [2]. La raison en est très simple, la méthode redirect() de la classe sfActions met fin à l'execution par ce moyen que l'on peut qualifier de hardi :
public function redirect($url, $statusCode = 302)
{
$url = $this->getController()->genUrl($url, true);
if (sfConfig::get('sf_logging_enabled'))
{
$this->getContext()->getLogger()->info('{sfAction} redirect to "'.$url.'"');
}
$this->getController()->redirect($url, 0, $statusCode);
throw new sfStopException();
}
Oui, vous avez bien lu, on interrompt le script en levant une exception, ici de type sfStopException. Le problème, c'est que dans mon exemple précédent, la méthode redirect() est appellée dans un bloc try { } catch { }, et donc l'exception levée est interceptée et l'action n'est au final pas stoppée. Vicieux, hein ?
Pour régler le problème, on peut par exemple toujours effectuer ses appels à la méthode redirect() en dehors d'un block try { } catch { } [3], ou encore tester le type de l'exception levée. Dans notre exemple, cette dernière solution ressemblerait à ça :
public function executeFoo()
{
try
{
// Some stuff here, if successful redirect user to somewhere else
/// ...
$this->setFlash('notice', 'Action was successful');
$this->redirect('@whatever_route');
}
catch (sfStopException $e)
{
return sfView::HEADER_ONLY;
}
catch (Exception $e)
{
$this->getRequest()->setError('errors', 'Something has failed somewhere, sorry dude');
$this->logMessage('Big boo boo occured: '.$e->getMessage(), 'err');
return sfView::SUCCESS;
}
}
C'est pas super sexy, mais ça fonctionne, et ça a le mérite de m'inspirer deux morales à cette histoire :
- tester le type des exceptions que l'on catche, c'est bien
- lever une exception pour arrêter un script, c'est super cracra et mériterait éventuellement d'être patché

Edit: Je m'exprime mal, c'est pas super cracra, c'est juste que ça introduit une petite complexité supplémentaire. Mais l'utilité de la chose est bien entendu totalement avérée si on a besoin d'effectuer des opérations particulières avant la fin du script ( ce qui est rarement le cas, enfin chez moi).
Ian Bicking rappelle que PHP est fait pour le Web, et non pas le contraire : les modules PHP n'ont pas été des interfaces additionnelles à des langages établis, comme Python ou Ruby, mais bien des développements spécifiques, et totalement en phase avec le contexte d'exécution : PHP perd de la mémoire? Qui s'en soucie, le processus sera mort à la fin de la page.
L'autre grande force de PHP que rappelle Ian est la philosophie 'share nothing', où instances de PHP ne se marchent pas sur les pieds les unes des autres. Et les applications "qui fonctionnent fonctionne toujours même après une modification de PHP. (même celles qui marchent à moitié continuent de marcher à moitié."
Ronald Bradford publie une liste de solutions pour ceux qui compilent MySQL sur Ubuntu 7.10, avec les explications aux écueuils les plus courants.
" Cela faisait longtemps que je n'avais pas compilé [MySQL] depuis les sources, et, pour la situation, la première fois que je le faisais sur Ubuntu 7.10 (une installation propre). Voici certains problèmes et les solutions associées, pour éviter à tout le monde de bloquer sur la même chose."
Ronald Bradford publie une liste de solutions pour ceux qui compilent MySQL sur Ubuntu 7.10, avec les explications aux écueuils les plus courants.
" Cela faisait longtemps que je n'avais pas compilé [MySQL] depuis les sources, et, pour la situation, la première fois que je le faisais sur Ubuntu 7.10 (une installation propre). Voici certains problèmes et les solutions associées, pour éviter à tout le monde de bloquer sur la même chose."
PHP_SELF (ou $_SERVER['PHP_SELF']) est sujet à des injections XSS tout comme n'importe quelle variable $_GET ou $_POST. En fait, le serveur Web prend les informations provenant de l'utilisateur pour construire cette variable, et même s'il y a quelques vérifications de plus que pour une variable $_GET (il faut bien que l"URI soit résolue pour être exécutée), il est possible de glisser des injections HTML dans PHP_SELF.
Gareth Heyes publie 4 tests à appliquer à une page pour voir si elle est vulnérable à une attaque XSS via PHP_SELF.
Le lundi est le jour de l'inspiration chez Smashing Magazine, et ils rassemblent des centaines d'exemples et d'expériences sur des approches innovantes. Cette semaine, lundi est consacré aux représentations innovantes de données, avec des supports comme des drapeaux, des cartes avec des noms de domaines, ou encore le coût des nouvelles technologies depuis 50 ans. Beaucoup de bonnes idées à piocher si vous recherchez comment représenter certaines informations.
mysql-proxy se dirige tranquillement vers sa première version stable, et les premiers ateliers de performance sont en train de sortir. mysqlproxy sert de point d'entrée pour une architecture MySQL : en lui donnant quelques règles, on peut répartir les demandes de requêtes sur plusieurs machines, en fonction de règle personnalisées.
Les résultats sont encourageants :
- mysql-proxy a resisté à mysqslap (le client de tests en charge de MySQL)
- mysql-proxy a répartit la charge entre les bases sans problème
- Assurez-vous que tout fonctionne correctement dès le début avec un client MysQL.
La compression de données permet de faire économiser de la place sur le disque, mais coûte en performances. Quel peut être l'impact de cette approche pour une base de données?
L'impact peut être intéressant pour les champs BLOB, et plus surement encore, les champs TEXT. Avec une fonction telle que COMPRESS et UNCOMPRESS, accessibles directement dans MySQL, on peut gagner un facteur de 2 à 10 sur l'espace de stockage. Pour des données qui sont peut manipulées, cela peut se révéler très bon, même en performances : lire sur le disque des données est généralement assez lent. Bien sur, vous devez vérifier si votre serveur est chargé ou pas.
Un autre aspect à prendre en compte est que les données compressées sont presque chiffrées : une recherche dans une colonne compressée implique une décompression des données, de même qu'un GROUP BY ou un affichage partiel. C'est généralement à ce stade qu'on réalise que la compression n'est pas si rentable.
OdinJobs publie une entrevue croisée avec 8 experts PHP, sur les raisons de leur passion pour cette plate-forme. Jeff Moore, fondateur du projet WACT; Hasin Hayder, responsable du groupe PHPExperts au Bangladesh; Vidyut Luther, auteur de PHPCult; Ed Finkler, du PHP Security Consortium. Matthew Turland; Richard Heyes, de PHPGuru et Martynas Jusevicius.
La question la plus intéressante du lot est celle consacrée à la meilleure fonctionnalité de PHP : les réponses sont toutes différentes. En vrac : la communauté, la simplicité, la facilité de déploiement, le coté couteau suisse; l'utilité ou le multi-plate-forme.
C'est une véritable saison des louanges à PHP.
Olivier Mansour, "utilisateur averti" de Symphony, lance une lettre ouverte aux utilisateurs du Zend Framework pour mieux évaluer les différences entre les deux frameworks populaires de PHP.
Olivier passe en revue les inconvénients de Zend Framework, lorsqu'on vient de Symfony. J'ai retrouvé certains points soulevés par Louis-Philippe Huberdeau dans sa sessions sur le Zend Framework de PHP Québec. Symfony semble plus intégré pour produire une application Web rapidement, tandis que Zend Framework est plus découplé, laissant plus de liberté mais imposant plus de structuration dès le début. Un peu comme les eZ components, mais un peu moins fort.
Vous êtes un pro du Zend Framework? Défendez votre framework dans les commentaires!
Comme nous le savons tous, le but d'un mot de passe est avant tout de rester connu d'une personne ou d'un groupe de personne. Sa divulgation entraine alors la perte complète de son efficacité et de sa sécurité. Lorsque le mot de passe devient connu d'une personne tierce, alors cette dernière peut par exemple s'approprier des droits sur une application et compromettre son fonctionnement normal. Un mot de passe est une donnée extrêmement sensible et convoitée par des pirates, quelle que soit l'application qui l'utilise.
Today, I released the second version of eZVideoFLV Datatype extension
. This is the first version compatible with eZ Publish 4 and PHP5
. I would like to thank Kåre Køhler Høvik
from eZ Systems
who initiated the portage to PHP5. This version also brings some small bugfixes and a better debug output to the cronjob script. Information about this extension can be found on the project page
and in the announce of the first version
. Bug report and comments are welcome.
Connaisseur averti de Symfony (que j'ai pratiqué sur de nombreux projets) je m'intéresse vivement aux frameworks PHP. J'ai utilisé d'autres frameworks ; par exemple, Code Igniter qui est quand même pas mal, (surtout si on est coincé avec PHP4) mais qui reste pour moi valable uniquement pour des petits ...
Ma première tentative a bien fonctionnée mais pose un problème assez important.
Il semble que la version de php5 fournie par Apple soit incapable de charger un module dynamiquement depuis la ligne de commande. C'est ainsi que j'interprètre l'erreur systématique que l'on a lorsque l'on lance php via le terminal après ...
Attention, cette recette ne donne pas tout à fait satisfaction (casse le binaire php lancé en ligne de commande). Consultez plutôt cet article pour quelque chose d'efficace.
Suite à un commentaire pertinent de Niko je me lance dans l'opération consistant à l'installation de la librairie GD pour la version de php5 ...
Quelle bonne surprise de fin d'année ! En fait, je m'y attendais un peu. Ce qui est sympa c'est la version relativement à jour de php qui est fournie :
Les fichiers de configuration sont standards (a ceci près qu'il faut renommer le fichier /etc/php.ini.default en /etc/php.ini si vous voulez changer ...
En fait c'est plutôt une astuce Propel ;-).
Quand vous chargez des données depuis la base (avec doSelect ou retrieveByPk) vous récupérez des objets complètement "hydratés". C'est à dire que chaque objet représente une ligne de votre base de donnée avec autant de variables membres que de colonnes. Un problème évident ...
Voici le code permettant d'ajouter une entrée dans la liste des timers de Symfony. On peut écrire ce code dans une libraire, une classe de modèle etc ....
$timer = sfTimerManager::getTimer('hardwork !!!!');
myClass::workHardPlease();
$timer->addTime();
Les développeurs , en utilisant la barre de débogage de symfony, verront alors le temps consommé lors de l'exécution de ...
La fonction eval() permet d'évaluer une chaine de caractère comme du code PHP. Elle peut être utile dans certains cas mais pose des problèmes :
le code est plus dur à maintenir et à déboguer,
l'execution de cette fonction ralenti votre script.
C'est particulièrement vrai pour les eval appelés dans une boucle ...
Un démon (ou daemon en anglais) est un programme fonctionnant en permanence en arrière plan et qui n'est pas contrôlé par l'utilisateur.
PHP étant un langage de script, on ne peut pas lancer des tâches de fond depuis les requêtes faites sur le serveur http. Quand un processus nécessite des ...
Encore une bonne raison de passer à Léopard !
Je n'ai pas pu tester (tristesse) mais il semble bien que Léopard soit livré avec PHP5. Sous réserve de quelques manipulations (Working with PHP 5 in Mac OS X 10.5 - en anglais), il est possible d'avoir une magnifique installation (incluant PHP5, ...
Symfony est un framework RAD PHP vraiment interessant. Voici un rapide tutoriel pour l'utilisez sous OS X avec MAMP.
Euan a rassemblé ses notes de 6 mois de recherche sur Google concernant les performances des applications LAMP. Il les livre pour que les autres puisse éviter les mêmes erreurs.
- in_array, serialize et unserialize sont lents
- SQL_CALC_FOUND_ROWS peut être plus rapide que COUNT
- key_buffer_size, sort_buffer_size et read_rnd_buffer_size pour les requêtes SQL
- Eviter mysqldump et ses verrous de tables
D'autres conseils sur le site.
Stefan Priebsch, futur intervenant à la conférence PHP Québec 2008, a finit de livrer son dossier sur xdebug, l'outil de profilage de PHP.
- Partie 1 : introduction à xdebug
- Partie 2 : traçage d'applications avec xdebug
- Partie 3 : profilage d'application avec xdebug
- Partie 4 : débogage d'application avec xdebug
- Partie 5 : couverture de code avec xdebug
Jay publie trois petits utilitaires MySQL qui publie des informations sur un serveur en fonctionnement, à la manière d'iostats. Les utilitaires se servent de SHOW STATUS et consort pour rassembler différentes informations instantanées sur le fonctionnement du serveur.
$ ./myq_status -h host -u user -p pass -t 15 myisam
row Queries (/sec) Table Key Buffer
time sel ins upd del lock full used dirt rmiss wmiss
16:16:11 341m 256m 135m 5.4m 0.02% 57.8% 442.34M 0.00% 0.74% 34.2%
16:16:27 56.9 19.2 0 0 0.00% 57.6% 442.34M 0.00% 0.36% 21.1%
16:16:41 136 22.1 0 0 0.00% 57.4% 442.34M 0.00% 3.95% 20.7%
16:16:56 27.1 19.7 0 0 0.00% 57.3% 442.34M 0.00% 0.58% 35.8%
Je suis consterné de voir que déjà deux livres sur PHP 6 sont publiés, alors même que PHP 5.3 a du mal à sortir des cartons, et que PHP 6 est encore assez loin d'une version initiale. Je vous les déconseille vivement.
Il y a clairement beaucoup de pression sur les éditeurs pour sortir un livre PHP 6 au même moment que la version de PHP. La course est une véritable partie de black jack, où il faut être aussi synchro que possible avec la sortie : trop tôt, le livre est ridicule. Trop tard, il est phagocyté par les autres passés avant. Au final, peu nombreux sont les livres généralistes consacrés à PHP.
En français, on a la chance d'avoir le PHP 5 avancé de Cyril Pierre de Geyer et Eric Daspet. J'espère qu'ils ne seront pas trop en avant pour le PHP 6 avancé...
- L'éléPHPant sortira en version ORACLE pour PHP Québec : Oracle a commandité une versions spéciale de l'éléphpant, avec son logo de l'autre coté de la bête. Ces petites peluches seront données à PHP Québec, et par les membres de l'OTN sur San Fransisco. Merci à Christopher Jones et Todd Trichler pour assurer la promotion de l'animal
- L'éléPHPant a été jusqu'en Guadeloupe, et il est aussi en route pour la Réunion. Quelle vie d'éléPHPant!
- Les éléphpants s'empilent bien : 3 l'un sur l'autre, ou bien 21 en tas.
- Les éléphpants ont été expédié sur les 5 continents et sur près de 25 pays, y compris la Chine, le Japon, la Russie, le Brésil, le Maroc, l'Australie, la Nouvelle-Zélande
- Les éléphpants attirent les filles : j'en ai fait l'expérience moi-même, mais plusieurs retours indique que les éléphpants attirent la gente féminine. Je confirme aussi qu'ils attirent les enfants, même s'il n'y a aucun rapport entre ces deux informations.
- Une nouvelle production d'éléphpant sera organisée durant l'année. Pensez à me tenir au courant si vous voulez faire partie des achats de gros (laissez-moi un mail).
PHP Apero
Le 1er rendez-vous de l'année "PHP Apero" avec la participation des membres de AFUP.
Un rendez-vous à ne pas manquer sur Paris 20e
Pour plus d'informations... http://www.aperophp.net/apero.php?id=193
Phpnews.fr vient d’ouvrir ses portes en ce début d’année 2008 afin d’offrir à tous les développeurs, administrateurs web ou curieux une page d’accueil autour des actualités des technologies Open Source dédiées au web.
Phpnews.fr vous proposera ainsi des actualités mais aussi des tutoriaux, des liens et toutes sortes d’astuces et d’idées que chacun pourra soumettre.
Pourquoi un site sur les technologies Open Source du web et en particulier sur PHP ?
A travers la blogosphère, qu’elle soit francophone ou internationale, tout le monde peut découvrir les dernières tendances et nouveauté du WEB 2.0 : Un nouveau service par ici, une nouvelle de Facebook par là, nous retenons de l’explosion des sites WEB 2.0 une nouvelle façon d’appréhender le web via de nouvelles interfaces et de nouvelles habitudes de consommation du contenu.
Cependant, on ne parle jamais de ce qui a permis l’avènement de ce nouveau web et des coulisses de tous ces services dont beaucoup ont choisit de travailler avec des technologies issues du logiciel libre tel que PHP, Apache, MySQL, GNU/Linux …
Quelles problématiques peuvent rencontrer ces entreprises et que peuvent leur offrir les technologies Open Source ? Comment alors les utiliser et y contribuer ?
Ce blog sera donc celui du PHP et des technologies Open Source 2.0.
Des étudiants en licence professionnelle "WebDéveloppeur" organisent une conférence de présentation de Zend Framework.
La journée sera divisée en deux parties. Le matin sera proposé une présentation de PHP par un membre de l'AFUP, une présentation de Zend Framework par Zend France.
Et des comparaisons de Zend Framework avec les autres grands framework (pas forcément en PHP).
L'après midi seront proposées des conférences sous forme de tutoriel par les étudiants, permettant d'approfondir le framework.
C'est le 21 février, à Saint-Quentin, dans l'Aisne (un peu plus d'une heure au nord de Paris). Et c'est gratuit.
Un repos bien mérité en Guadeloupe pour l’elePHPant qui a eu une fin d’année 2007 très mouvementée.


Je vous vois venir…non, ce n’est pas moi qui ai pris les photos, c’est Loïc d’Anaska qui, lui, peut prendre plusieurs semaines de vacances en plein hiver!
On est plus au temps des pages HTML perso, avec quelques liens et des boutons. Les interfaces des dernières années sont riches, réactives et aident considérablement les utilisateurs dans leurs manipulations. Smashing magazine présente le meilleur de Nourish, last.fm, basecamp, mais aussi Yahoo! et Microsoft Live Mail.
"PHP fournit depuis la version 4 des fonctions pour vérifier lexistence de fonctions et de méthodes de classes. Voici un petit topo sur ces différents outils et leurs astuces."
Et après les fonctions PHP. parfois vieilles comme le monde, il y a aussi les fonctions d'introspection Reflexion, de PHP 5.
Après avoir été présenté comme la super star des introductions en bourse pour 2008, MySQL a finalement signé un accord avec Sun MicroSystems pour une acquisition. Selon O'reilly, l'acquisition de fait au coût de 1 milliard de dollars US en cash, et possiblement des stock options.
L'annonce est actuellement faite par Kaj Arno, sur son blog
et l'annonce de presse de Sun semble introuvable à 14h50 , mais Kaj nous détaille les avantages de l'accord. Pour la communauté MySQL, Sun est un champion de l'Open Source, et entend continuer avec MySQL. MySQL fera toujours partie de LAMP, et il n'est pas prévu de l'y soustraire. Dans le sens inverse, il ne semble pas que Sun apporte de grands changements à la communauté MySQL (en bien ou en mal).
A première vue, le mariage est surtout un mariage de raison, pour des raisons probablement de nature entrepreneuriale et non technique : la croissance de la compagnie la conduisait à un affrontement plus direct avec les grands éditeurs en place, et il est toujours difficile d'entrer dans l'arène quand on est le petit poucet. Avec plus de moyens, le combat sera plus égal.
Pour être franc, je suis surpris. Il me faut quelques jours (et probablement quelques mails) pour mieux comprendre les enjeux.
Comment détecter en PHP qu’une chaîne n’est composée que de majuscules
La méthode la moins élégante
On parcourt notre chaine grâce à sa forme indexée (avec $str[$i], $str{$i} étant dépréciée en PHP6) en comparant à chaque passage si le caractère parcouru est bien un caractère majuscule. Pour cela :
- soit on initialise un tableau contenant les lettres majuscules de A à Z et on utilise la fonction in_array (qui est case-sensitive) pour vérifier la présence de la lettre parcourue dans ce tableau.
- soit on utilise la fonction ord($str[$i]) pour vérifier que la valeur décimal du caractère appartient bien à celle des majuscules (65-90), cf. http://www.asciitable.com/
Une méthode plus élégante
Avec une expression rationnelle. Afin d’obtenir l’expression la plus simple, il faut non pas chercher à savoir si tous les caractères sont en majuscule mais rechercher s’il existe un caractère qui n’est pas une majuscule.
Une fois que l’on a effectué ce raisonnement, la solution vient très naturellement :
if(preg_match('#[^A-Z]#', $foo) === 0)
{
/*
Aucune occurrence d'un caractère n'étant pas A-Z
n'a été trouvé, la chaine est donc en MAJ
*/
}
On peut compléter ainsi facilement la liste des caractères autorisés, par exemple pour prendre en compte les chiffres on pourra utiliser le motif #[^A-Z0-9]#
Deuxième partie du tutorial sur les expressions régulières en PHP
Dans cette deuxième partie, Martin Streicher aborde les éléments suivants :
- Les sous-masques
- Les modificateurs
- Le formattage des données
- Les assertions
- Les classes de charactères
Au rythme d'une partie chaque semaine, la troisième ne saurait tarder.
Lire l'article
Après de nombreux mois de buzz autour de son introduction en bourse , on apprend finalement aujourd’hui que SUN devrait racheter MySQL AB, la société qui gère les produits MySQL :
http://blogs.mysql.com/kaj/2008/01/16/sun-acquires-mysql/
Ainsi SUN affirme encore un peu plus son positionnement dans l’univers Open Source en faisant l’acquisition de l’un des produits les plus répandus et les actifs. Espérons que cela permettra à MySQL de continuer sa progression actuelle.

MySQL, la base de donnée Open Source la plus populaire du WEB 2.0, utilisée entre autre par Google, MySpace et Facebook se fait racheter par Sun MicroSystems pour un montant estimé de $800 millions en cash contre toutes les actions de l’entreprise.
Il manquait clairement dans le panel des technologies Sun (qui est entre autre le troisième fabricant mondial de serveurs pour entreprises) une base de données capable d’occuper le marché des bases de données pour entreprises estimé à 15 milliards de dollars.
Cette acquisition pourrait aussi permettre à SUN de consolider sa position sur les technologies du WEB en lui permettant de promouvoir son langage Java en conjugaison à une base de donnée MySQL.
Le couple Java/MySQL supplantera t’il le couple PHP/MySQL dans quelques années ?

Etienne Kneuss a finalisé 3 nouvelles classes, qui se retrouvent sous forme de structures de données dans la bibliothèque SPL :
- splDoublyLinkedList : une liste doublement chaînée
- splStack : une pile
- splQueue : une queue
Actuellement, on peut réaliser ce type de structure à l'aide de tableau, mais les interfaces SPL permettent d'apporter un gain en standardisation appéciable. Selon Etienne, d'autres structures seront bientôt présentées dans SPL. Dommage que la documentation ne soit pas encore en ligne.
Sebastian Bergmann présente la prochaine fonctionnalité de PHP Unit : les scénario. Les tests peuvent maintenant s'écrire presque littéralement (en anglais, du moins), avec des fonctions telles que given, when, and et then.
public function scoreForOneSpareIs16()
{
$this->given('New game')
->when('Player rolls 5')
->and('Player rolls 5')
->and('Player rolls 3')
->then('Score should be 16');
}
L'objectif est de réaliser un scénario de test plus proche des utilisations finales, plutôt que d'encadrer des fonctions trop enfouies dans le code. PHPSpec, un autre projet, tente lui aussi d'apporter les notions de Behaviour-driven developpement (développement dirigé par l'utilisation).
Il n'y a pas que les extensions FireFox pour les techniciens : certaines d'entre elles sont maintenant affutées pour les gens d'affaires, et permettent de transformer un navigateur en un assistant très complet.
Linkedin, bien sûr, pour gérer les contacts directement depuis le navigateur. Meebo et Peeko pour se rencontrer en ligne aisément. Zotero, pour gérer ses références en ligne et dataanalytics pour extraire des données d'une page et les coller dans un tableur.
Voici les 5 dernières vidéos PHP et MySQL.
Ces vidéos sont publiés sur les sites de partagent de vidéo. Ce sont des tutoriels enregistrés, des sessions de conférences, des screencast ou encore des slides de conférences.
N'hésitez pas à nous contacter pour signaler tout media qui mérite d'être ajouté à cette liste.
Il est fréquent d'utiliser $_REQUEST en remplacement de $_GET et $_POST : quand on peut avoir des données qui entrent indifféremment via l'un ou l'autre méthode. En effet, $_REQUEST rassemble les valeurs des deux tableaux.
Toutefois, il ne faut pas oublier que $_REQUEST inclut aussi les données en provenance des cookies, de l'environnement ou encore des sessions, en fonction de la configuration de PHP. La plus courante est EGPCS. Les cookies arrivent donc après POST et GET, et si vous avez un controleur qui se base sur $_REQUEST, il devient possible de bloquer définitivement un utilisateur en lui donnant une valeur de type 'action = logout'.
Bref, si les données doivent venir de POST ou GET, faîtes une condition.
L'information selon laquelle Sun rachetait MySQL AB n'a pas pu vous échapper. Depuis hier après-midi, le communiqué est repris et largement commenté sur un très grand nombre de supports.
Petite revue de web de cet évènement majeur de la vie du logiciel libre:
Les communiqués officiels:
La presse:
6 paquets ont été mis à jour cette semaine :
mailparse (0 visite) : manipulations de messages courriels
memcache (0 visite) : cache mémoire
imagick (0 visite) : interface avec la bibliothèque graphique ImageMagick
perforce (0 visite) : interface Perforce
SPL_Types (0 visite) : Extensions pour SPL
ocal (0 visite) : connecteur à Oracle Calendar
PECL est la bibliothèque d'extensions C de PHP.
Nexen.net a publié récemment une brève sur quelques conseils de performances PHP/MySQL notamment sur la fonction PHP in_array();
Le code original utilisé par le testeur s’apparente à :
$time_start = microtime(true);
$data = array('a', 'b', 'c', 'd', 'e', 'f' ... 'zzz');
for ($i=0; $i < 1000; $i++)
if(in_array('c', $data)){};
echo (microtime(true) - $time_start);
Temps d’exécution moyen pour un tableau de ‘a’ à ‘zzz’ sur ma machine de test :
0.26708 sec
On obtient une exécution bien plus rapide en utilisant le code suivant :
$time_start = microtime(true);
$data = array('a', 'b', 'c', 'd', 'e', 'f' ... 'zzz');
$a_data = array();
foreach ($data as $point) {$a_data[$point] = true;}
for ($i=0; $i < 1000; $i++)
if(isset($a_data['c'])){};
echo (microtime(true) - $time_start);
Temps d’exécution moyen :
0.01059 sec. (Donc environ 25 fois plus rapide que d’utiliser la fonction in_array())
Une autre méthode serait d’utiliser la fonction array_flip() (qui permet de remplacer les clés par les valeurs, et les valeurs par les clés). On pourra ainsi tester la présence de la valeur devenue clé :
$time_start = microtime(true);
$data = array('a', 'b', 'c', 'd', 'e', 'f' ... 'zzz');
$a_data = array_flip($data);
for ($i=0; $i < 1000; $i++)
if(isset($a_data['c'])){};
echo (microtime(true) - $time_start);
Temps d’exécution moyen :
0.01038 sec. Le résultat est sensiblement identique à la version précédente.
Il y a cependant encore plus rapide pour transformer nos valeurs en clés, c’est en utilisant la fonction array_fill_keys()
$time_start = microtime(true);
$data = array('a', 'b', 'c', 'd', 'e', 'f' ... 'zzz');
$a_data = array_fill_keys($data, ''); //Ne pas remplir de null car isset() retournerai FALSE même si la clé existe
for ($i=0; $i < 1000; $i++)
if(isset($a_data['c'])){};
echo (microtime(true) - $time_start);
Temps d’exécution moyen :
0.00524 sec. C’est pratiquement 2 fois plus rapide que précédemment et 50x plus que in_array().
Si vous souhaitez reproduire ces tests chez vous et essayer de trouver une méthode encore plus rapide, voici la fonction vous permettant de générer un grand tableau :
<?php
$buffer = 'array(';
$str = 'abcdefghijklmnopqrstuvwxyz';
$str_len = strlen($str);
for($i = 0; $i < $str_len; $i++)
{
$buffer .= "'".$str[$i]."’,";
for($j = 0; $j < $str_len; $j++)
{
$buffer .= "’".$str[$i].$str[$j]."’,";
for($k = 0; $k < $str_len; $k++)
{
$buffer .= "’".$str[$i].$str[$j].$str[$k]."’,";
}
}
}
$buffer .= ‘1);’;
echo $buffer;
?>
Article sur la mise en place d'un moteur d'Enterprise Search avec Apache Solr et PHP.
L'Enterprise Search ou comme on pourrait l'appeller "recherche en entreprise", permet l'identification et l'indexation de contenu au sein du domaine de l'entreprise ainsi que la recherche et l'affichage de ce contenu.
Bien que destinés à une recherche "locale", ces moteurs de recherches sont utilisés également dans le domaine du web pour des sites à forte fréquentation et disposant d'un contenu conséquent.
Solr est un de ces serveurs, développé à partir de de la librairie Java Lucene par CNET Network avant d'être donné à la fondation Apache. Parmi les fonctionnalités, on trouve :
- Utilisation de la librairie Lucene pour la recherche full-text
- Format de sorties supportés : JSON, XML, PHP, Ruby et Python
- Interface d'administration Web
- Replication
- Possibilité d'ajout de plugins
Netflix, Digg, CNET's News.com et CNET Reviews sont parmi les sites de références ayant déployés Solr.
L'article de Martin Streicher vous indique comment mettre en place le serveur Solr, de l'étape de l'installation, à celles de création de l'index et de requêtage de celui-ci en PHP.
Lire l'article
Apache Solr
Zend Studio pour Eclipse est pour bientôt.
Yossi Leon communique sur le Zend Blog que le ZSfE (Zend Studio for Eclipse) serait en bonne voie de disponibilité d'ici peu. Suite à plusieurs béta et de nombreux retours, l'application devrait être nettoyée de ses bugs et contenir de nouvelles fonctionalités non encore dévoilées.
Basé sur la technologie du Zend Studio ainsi que sur le projet PDT (PHP developers tools) d'Eclipse, le ZSfE s'annonce comme l'un des IDE PHP les plus complets.
Lire l'article
Comparaison des fonctionnalités ZSfE et PDT
Mise à jour du 23 janvier 2008 :
C'est fait, Zend Studio pour Eclipse est disponible depuis hier sur la partie marchande du site de Zend. Il ne vous en coûtera pas moins de 299$ pour en acquérir une licence, les détenteurs d'une licence Zend Studio Professional quant à eux pourront l'obtenir gratuitement. Parmis les évolutions à venir Zend prévoit :
- Intégration du Zend Framework
- Editeur HTML WYSIWYG
- Support de Subversion
Lire l'article
Christian Durel : Unisys -> Oracle -> SAP -> Zend
"inspiré par un exemple réel, une utilisation souvent oubliée des expressions rationnelles est l'extraction de racines à l'aide des sous-modèles. Le problème? Je devais extraire les mots Canton, Region et Group d'une chaîne, et exécuter une tâche en fonction de ce qui a été trouvé."
L'extraction de racine est la recherche de mots particuliers dans un texte. Ici, il y a une recherche simple, mais cela peut s'appliquer à des moteurs de recherche interne, qui travaillent en recherchant des mots clés basés sur un dictionnaire préalable.
Une présentation consacrée à la sécurité Web, avec une collection de situations un peu moins fréquentes, mais qui conduit à des vulnérabilités importantes ou difficile à repérer. On y retrouve le problème de $_REQUEST qui a déjà fait la une en début de semaine.
Il y a aussi des trucs pour utiliser le gestionnaire de mot de passe de FireFox, XSS via HTTP, lecture de l'historique du navigateur via xss, etc. Pas mal d'expérience dans ces pages.
PHP et MySQL ne font l'objet d'aucune alerte de sécurité dans leurs versions courantes :
PHP 5.2.5 et 4.4.8; MySQL 5.0.51 (communauté) , 4.1.22, ainsi que 5.1.22-beta et 6.0.3.
Les mises à jour sont recommandées vers ces versions.
7 alertes de sécurité ont été émises cette semaine, concernant des applications suivantes :
Drupal, Gallery, Horde, Joomla, MyBB, WordPress et ming
Il y a les outils MySQL, mais aussi les utilitaires proposés par la communauté. LeFred publie une magnifique liste sur son blogue. Il y a notamment le
- querysniffer, qui extrait les requêtes d'un serveur, sans active le log général;
- mysqlsla, qui analyse le log de requête lentes
- mysqlidchck,qui vous dit quels sont les index inutiles de votre base
- querysniffer, qui extrait les requêtes d'un serveur, sans active le log général;
8 paquets ont été mis à jour cette semaine :
PEAR est la bibliothèque de composants PHP.
Cet article fait suite au deux premiers écrits au sujet de l'installation de PHP5 et MySQL5 sous Léopard.
L'idée est de faire du profiling d'application PHP en utilisant xdebug et KCachegrind.
Installation de xdebug
Si vous avez correctement installé PHP aucun problème pour xdebug :
# sudo pecl install xdebug
Ajouter "zend_extension=/usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so"
à la fin du ...
Apache 2.0.63
La branche 2.0 d’Apache continue d’être maintenue avec la version 2.0.63. A noter que la version 2.0.62 n’a pas été publiée et qu’un saut a été directement effectué à la version .63 pour marquer les changements significatifs depuis la version .61.
Au niveau sécurité, deux corrections ont été apportées au niveau des modules mod_status et mod_imagemap, toutes les deux concernant de possibles failles XSS.
Au niveau de la correction de bug (6 corrections), vous trouverez le changelog en suivant ce lien
Apache 2.2.8
Concernant la dernière branche 2.2, nous retrouvons les deux corrections de sécurité décrites ci-dessus, ainsi qu’une autre faille XSS dans le module mod_proxy_balancer et une possibilité de DoS entrainant un crash possible, toujours via ce module.
Le changelog concernant la résolution de bug est assez conséquent, à la fois concerant le coeur d’Apache et ses modules ”built-in” :
http://www.apache.org/dist/httpd/CHANGES_2.2.8
It's been a long time that I and some people I know were looking after a place on the web to publish a Symfony developer profile, post a job offer, share contacts and/or project opportunities. There's been some initiatives here and here, but nothing has really convinced me so far. So I've decided to write something on my own.
The name of the project is Symfonians. It's available in a beta state and only in english language for now.
There must exist a lot of bugs, so feel free to report them if you use the service 
Ah, last but not least, I imagine that the site won't display nice on IE6 (maybe on IE7 too), but for now I don't care as I don't have much time to loose on this kind of fascinating CSS hacking challenges 
Je suis en train de préparer la semaine prochaine, qui va être sportive et festive : je parle bien sûr du salon linux. Ce sera avec beaucoup de plaisir que je vais retrouver un très grand nombre d'acteurs du libre, de PHP et bien sûr, mes collègues d'Alter Way.
Au programme, je propose deux sessions : la première est consacrée à PHP 6, et tout ce qui va changer avec cette nouvelle version. Cela sera la session la plus projective que j'ai faite, avec une forte probabilité que tout ce qui sera dit soit valable.. l'an prochain.
J'ai aussi une session sécurité PHP, sur laquelle je planche pour renouveler le concept : toutes les sessions sécurité font des listes d'épicerie de vulnérabilités à combler. Elles restent théoriques à mon goût, et, avec Philippe Gamache, on travaille à une approche plus pragmatique. L'audit de code PHP et par où commencer à chercher des failles dans le code devrait être une approche fraîche et dépoussiérante.
J'ai aussi une séance de dédicace du livre 'sécurité PHP 5 et MySQL 5', que vous pourrez toujours venir consulter sur le site de nexen services. Nous aurons aussi un concours de photos de l'éléPHPant. Nous aurons aussi une vente d'éléphpants sur place.
N'hésitez pas à passer nous voir, pour parler PHP, sécurité, MySQL ou simplement pour prendre un café.
Nat Torkington présente un problème de sécurité rencontré par Perl.com : ces derniers affichait une publicité via un annonceur et un code javascript distant. Rien d'original jusque là, puisque des millions de sites font pareil.
Le problème a surgit lorsque le domaine de l'annonceur a été oublié, puis racheté par un spammeur, qui a remplacé immédiatement le javascript par un autre système qui redirigeait vers un site pornographique (le classique de la redirection spammeuse, il semble). Dans cette situation, perl.com avait intentionnellement installé le javascript sur le site : c'est bien le site annonceur qui fait défaut.
Maintenant, comptez donc le nombre de javascript qui sont sur votre page, et qui vont chercher des informations distantes... Combien? www.nexen.net en a deux : la bannière de publicité, et les stats google.
phpUnderControl est une application compagnon de l'outil d'intégration continue CruiseControl, qui intègre les meilleurs outils de développement PHP. Ce projet a pour objectif de faire avec vous les premiers pas avec CruiseControl et PHP et de les rendre aussi simple que possible. Par conséquent, phpUnderControl est livré avec un outil de ligne de commande, pour effectuer toutes les modifications à une installation CruiseControl.
Cruisecontrol est une application qui implémente les concepts de l'intégration continue : chaque membre de l'équipe ajoute ses modifications au programme chaque jour, et une batterie de tests est exécutée immédiatement pour vérifier que tout fonctionne bien.
"Inspekt sert de 'firewall' entre les données des visiteurs et le reste de l'application. Elle prend les tableaux superglobaux de PHP, encapsule les données dans une 'cage', et supprime la variable d'origine. Les données sont alors accessibles via une collection d'accesseurs qui appliquent un filtre, ou bien validés avant d'être utilisés. Les données brutes sont toujours accessibles, mais doivent être lues via 'getRaw()', forçant le développeur à réfléchir à ce qu'il fait."
Supprimer les variables globales aura l'effet immédiat de vous dérouter et de vous forcer à vous poser la question : comment est-ce que je veux mes données servies. En ce sens, cela fait une sécurité incontournable. Et ultérieurement, les utilisations de GetRaw() seront faciles à repérer dans le code.
Le concept initial est intéressant. Il est dommage que le inspeckt ne comporte aucun test unitaire, alors que cette bibliothèque serait bien encadrée par de nombreux cas.
Après avoir décidé un visiteur à s'inscrire, et à rester à moyen terme sur un site, il faut que ce dernier passe le test de l'inscription. C'est à dire qu'il ne fasse pas fuir le visiteur intéressé avec un système d'enregistrement effrayant. Que pensez-vous d'un site qui vous demande vos informations de carte visa en guise d'inscription? sur les 89 sites testés par Linda Bustos, deux le faisait!
Linda Bustos dresse la liste des champs demandés durant les inscriptions, et vous serez peut être surpris des pourcentages : 100% demande un mot de passe, 14% détaillent les avantages d'un inscription, 1% propose un CAPTCHA, 13% demande un nom d'utilisateur, 14% sont uniquement destinés aux USA...
L'étude se termine par une liste de bon formulaires d'enregistrement, avec les bonnes pratiques. Une lecture édifiante.
Différentes sortes ElePHPants
Suite à un problème de serveurs, voici l'ensemble des nouvelles photos des ElePHPants qui ont découverts qui n'étaient pas les seuls au monde...




Les Elephants sont disponibles sur le site de Nexen, à l'adresse suivante : cliquez ici
La Team Joomla vient d'annoncer la nouvelle version de Joomla 1.5 stable réalisé en toujours en PHP après plus de 2 ans de travails.
Cette version se veut etre :
* Extensible
* International
* Conviviale
C'est pourquoi l'ensemble de l'API a été rendu plus facile pour l'utilisation des Templates, la création des extensions et la gestion des installeur unique pour les différents types d'extension.
Du point de vue Administration, l'interface a été simplifiée par rapport aux anciennes versions déjà existantes.
Après plus de deux ans et demi de travail, l'équipe de Joomla vient d'annoncer la sortie de la version stable de Joomla 1.5.
Cette nouvelle version est basée sur trois maîtres mots : l'extensibilité, l'internationalisation et la convivialité. En effet, grâce à la nouvelle API, la création d'extension devient plus facile et leur gestion est simplifié grâce à un installeur unique quelques soit le types d'extension.
L'interface d'administration à été simplifiée : nouvelle méthode de sélection d'image, gestion des archives directement dans la gestion des articles, aperçu en "live" sans enregistrement, etc. Le support des jeux de caractères étendus et de l'écriture de ela droite vers la gauche font de Joomla un CMS complet et international.
L'annonce sur Joomla.fr
Téléchargement
Liste des nouveautés
Ce court tutoriel vous présente une classe qui permet de créer des objets encapsulant les données d'un numéro de RIB. Elle peut s'utiliser de deux manières différentes : soit créer des objets RIB ou bien servir comme système de validation des informations bancaires grâce à ses méthodes statiques. Bien que très peu extraordinaire en soit, cette source s'avère particulièrement pratique et efficace dans lors du développement d'applications de comptabilité par exemple.
De nombreux projets PHP (moteur de blog, CMS...) gèrent les données au format UTF-8. Malheureusement, beaucoup ne le font pas correctement : les tables MySQL sont créées avec l'encodage latin1 par défaut et le texte encodé en UTF-8 par l'application y est stocké tel quel.
Lorsque l'on regarde le contenu de ces tables avec phpmyadmin, on voit alors les lettres accentuées remplacées par deux caractères sans rapport. Il devient difficile d'exploiter efficacement ces données.
L'erreur généralement commise est double :
- table créée en latin1 pour stocker de l'utf-8
- utilisation des fonctions mysql_* en latin1 avec des données utf8
Pour utilisation optimale de MySQL il suffit pourtant de peu de chose :
- ajouter DEFAULT CHARSET=utf8 à la fin des requêtes de création de table
- appeler la fonction mysql_set_charset("utf8") juste après la connexion pour indiquer à MySQL que le client échangent les données avec le serveur avec l'encodage UTF-8. On peut aussi exécuter une requête SQL (si on utilise un framework ou PHP<5.2.3 ou MySQL<5.0.7) qui a le même résultat : $db->query("SET NAMES UTF8");
Voici un petit exemple complet :
[php]
<?php
// Affichage de la page en UTF-8
header("Content-type: text/html; charset=UTF-8");
?>
<html>
<body>
<form method="POST" action="<?=$_SERVER['REQUEST_URI']?>">
Entrez du texte accentué : <input name="texte" />
<br/>
<input type="submit" value="Enregistrer dans la base" />
</form>
<?php
// Connexion et sélection de la base
$lnk = mysql_connect("localhost", "root", "fox") or die("Impossible de se connecter au serveur");
mysql_select_db("test", $lnk) or die("Connexion à la base impossible");
// Indiquer à mysql que l'on va communiquer avec lui en utf8
mysql_set_charset("utf8", $lnk);
// Il est aussi possible de changer l'encodage à l'aide d'une requête SQL
// si les fonctions mysql_* sont encapsulés dans un framework
// ou si PHP<5.2.3 ou MySQL<5.0.7
// ex : mysql_query("SET NAMES UTF8");
// ou $db->query("SET NAMES UTF8");
// Création de la table encodée en UTF8
$sqlCreate = "CREATE TABLE IF NOT EXISTS tableA (
champsA int(11) NOT NULL auto_increment,
champsB text NOT NULL,
PRIMARY KEY (champsA)
) ENGINE=MyISAM DEFAULT CHARSET=utf8";
if(mysql_query($sqlCreate))
{
echo "Création de la table OK.<br/>\n";
}
// Insertion du texte saisie dans le formulaire
if(isset($_POST['texte']))
{
$sqlInsert = sprintf("INSERT INTO tableA(champsB) VALUES('%s')",
mysql_real_escape_string($_POST['texte']));
if(!mysql_query($sqlInsert))
{
echo "Insertion dans la table impossible.<br/>\n";
}
}
$sqlSelect = "SELECT * FROM tableA";
// Lecture des données
$result = mysql_query($sqlSelect) or die("Requête impossible sur la table.");
// Afficher des résultats en HTML
echo "<table>\n";
while ($line = mysql_fetch_assoc($result)) {
echo "\t<tr>\n";
foreach ($line as $col_value) {
echo "\t\t<td>$col_value</td>\n";
}
echo "\t</tr>\n";
}
echo "</table>\n";
// Libération des résultats
mysql_free_result($result);
// Fermeture de la connexion
mysql_close($lnk);
?>
</body>
</html>
Vous l'avez peut-être remarqué, GLOBALIS, éditeur de ce site, recherche plusieurs développeurs. Si vous êtes intéressés par le langage PHP, si vous souhaitez apprendre, participer à l'enrichissement du contenu PHPIndex et travailler sur des projets variés, venez rejoindre notre équipe.
Seuls impératifs: avoir un diplôme informatique de niveau Bac+2 à Bac+4, et une expérience, même courte, de développement PHP. Les jeunes diplômés sont les bienvenus.
Acceleo est un générateur de code qui permet de transformer des modèles vers du code ( approche MDA).
Acceleo est simple à utiliser et dispose de générateurs prêt à l'emploi entre autre avec PHP et d'éditeurs de templates de génération sous Eclipse.
Concernant les possibilités des différents langages utilisés. Le module PHP se voit enrichir d'une meilleure gestion des héritagess. Par ailleurs il a été incorporé un outil de modélisation et de génération d'application web PHP utilisant le framework Zend avec la partie Wisss. cette nouvelle version permet d'utiliser le chargement des objets à la volée, ainsi que l'optimisation des requetes SQL de mise à jour.
Jeremiah Grossman publie la liste des 10 meilleurs (et des 80 candidates) au titre de vulnérabilité de l'année. Flash et PDF, avec leur caractère universel, finissent en haut de la liste, avec les honneurs. Bien classé, il y a les vulnérabilités dans les images, les spams sur imprimante (sur papier, quoi), les scans de port sans Javascript.
PHP est cité pour un scan interne via l'ouverture de fichiers à distance, et getimagesize qui accepte des images contenant du code PHP. Ce dernier point est délicat : le format GIF inclut une taille des données utiles, et le reste est ignoré. PHP accepte ce standard et il n'est donc pas possible de valider une image avec getimagesize. Si getimagesize échoue, on sait que ce n'est pas une image, mais si getimagesize marche, on ne peut pas conclure que c'est une image : cela peut être une image et autre chose.
et sans Windows, avec qui les objets COM résolvent le problème. Ici, Tony Bibbs vous propose de passer par le format XML des documents, et le moteur de gabarits Flexy pour produire les documents depuis PHP. Office 2003 et plus récent, sont alors capables de reprendre de relire directement les fichiers, comme s'il s'agissait de documents originaux.
Un dictionnaire représente une colonne dans une table avec un nombre fini de valeurs : par exemple, la liste des provinces canadiennes, ou les mois de l'année. Ce type de liste peut être plutôt court, mais parfois long : le plus important est qu'il soit fini, et stable.
Il y a alors plusieurs solutions pour mettre ces informations en base, proprement :
+ un champ ENUM (plus de 64000 valeurs possibles)
+ un champ VARCHAR (une infinité de valeurs)
+ un champ entier et une table de jointure : un peu des deux précédents
Peter Zaitsev réalise un test que je voulais faire depuis longtemps, et mesure les performances de chaque solution. Les trois sont très proches, avec ENUM un peu plus rapide, et VARCHAR un peu plus lent.
Voici les 5 dernières vidéos PHP et MySQL.
Ces vidéos sont publiés sur les sites de partagent de vidéo. Ce sont des tutoriels enregistrés, des sessions de conférences, des screencast ou encore des slides de conférences.
N'hésitez pas à nous contacter pour signaler tout media qui mérite d'être ajouté à cette liste.
6 paquets ont été mis à jour cette semaine :
imagick (0 visite) : interface avec la bibliothèque graphique ImageMagick
perforce (0 visite) : interface Perforce
mqseries (0 visite) : Interface MQSeries
SPL_Types (0 visite) : Extensions pour SPL
PHK (0 visite) : accélérateur PHK
automap (0 visite) : Un chargeur rapide par carte
PECL est la bibliothèque d'extensions C de PHP.
L’observatoire du logiciel libre vient de publier la nouvelle édition. Celle-ci analyse le marché du libre et dresse un bilan de 2007.
La technologie référence pour le Web concerne le langage PHP et est considérée comme une technologie fiable et mature.
AFUP (Association Française des Utilisateurs de PHP) sera présent au salon "Solutions Linux 2008" sur le stand B38 pour vous en parler, alors n'hésitez pas à leur rendre visite.
Le Salon "Solution Linux" ouvre ses portes les 29-30-31 janvier 2008.
Avec l'annonce de la sortie de mon ouvrage
PHP et MySQL - MySQLi - PDO
Construisez votre application
Les Editions ENI, éditeur de l'ouvrage propose :
"Rencontrez l´auteur de ce livre Christophe VILLENEUVE, qui répondra à toutes vos questions,
le Mardi 29 Janvier de 15h à 16h
sur le salon Solutions Linux 2008 -
Stand Editions ENI n°E38
(CNIT - Paris la défense)"
Pour plus d'informations... cliquez ici
PHP et MySQL ne font l'objet d'aucune alerte de sécurité dans leurs versions courantes :
PHP 5.2.5 et 4.4.8; MySQL 5.0.51 (communauté) , 4.1.22, ainsi que 5.1.22-beta et 6.0.3.
Les mises à jour sont recommandées vers ces versions.
8 alertes de sécurité ont été émises cette semaine, concernant des applications suivantes :
Drupal, Gallery, Horde, Mantis, MyBB, PHP Nuke, WordPress et phpBB
Apéro php Belgique 2008 #1: un album photos sur Flickr
21 photos
Une bonne petite soirée, avec des participants d'horizons divers.
Bon j'avoue, je suis un peu déçu des désistements mais c'est pas aussi grave que le premier en 2002 où j'avais eu 3 personnes pour 15 inscrits (et dans les 3 un ne s'était pas inscrit).
Ici nous auront été 9, même si Patrick, parti assez tôt n'a vu que 3 personnes ne travaillant pas avec lui.
On a eu 2 paranos, 2 Claroline, 2 ausy, 1 B-Holding, 1 Belgacom, et un king of blogs
Donc voilà le prochain de la serie se fera en wallonie ou en flandre, j'attends des propositions (et prépare une roue de secours)
PS pour les présents:
maître capello a vérifié : bibi = Ghislain Seguy et pas Benoît
Pour déboguer un script, prenez xdebug, python et VIM puis utilisez ces deux derniers comme client pour le premier. Ensuite, ajoutez XDEBUG_SESSION_START=1 à l'URL à tester, et le débogueur est maintenant prêt à interrompre le script. Pierre-Alain Joye donne le détail de la démarche.
Wez Furlong lance le chantier de PDO2 par un appel à commentaire. PDO, la couche d'abstraction de base de données pour PHP, est maintenant un ajout permanent à la plate-forme, et le groupe de développeurs souhaite faire participer plus particulièrement les éditeurs des bases, tout en modernisant l'API.
PDO2 se dote d'un groupe d'organisateurs, d'une CLA (Common Licence Agreement), et d'une FAQ.
3 paquets ont été mis à jour cette semaine :
PEAR est la bibliothèque de composants PHP.
Monty Widenius, co-foundateur de MySQL AB, a lancé tout récemment son blog. Les deux premières entrées sont consacrées à l'acquisition de MySQL par Sun, et sur un nouveau moteur de table MySQL appelé Marie.
La vente de MySQL a un autre éditeur était l'alternative disponible à l'entrée en bourse, qui apparaissait plus incertaine à Monty : "dans ce cas, il n'y a aucune garantie à long terme que MySQL AB soit une entreprise dédiée à l'Open Source." Avec Sun, Monty a le sentiment d'avoir fait un choix constructif.
Pour Maria, c'est l'annonce de la disponibilité de ce nouveau moteur. L'objectif principal est de proposer une alternative robuste aux crash à MyISAM : en cas de crash, le moteur réparera les tables automatiquement pour repartir. De plus, les fonctionnalités sont plus importantes dans ce moteur que les performances : ces dernières seront étudiées une fois le moteur fonctionnel. Maria est disponible depuis MySQL 5.1
MySQLDumper est un script de sauvegarde MySQL, écrit en PHP et Perl.
MySQLDumper utilise une technique propriétaire pour éviter les interruptions d'exécution de PHP. Le script sauve une quantité d'informations, puis se rappelle automatiquement via JavaScript pour continuer le processus sans être bloqué.
Automap est une extension PHP qui étend le concept de __autoload() aux fonctions et aux constantes. __autoload() est une fonction PHP5 qui, quand elle est définie, intervient pour charger dynamiquement un fichier qui définit la classe, et évite de bloquer le script.
automap réalise les mêmes manipulations, mais pour les fonctions et constantes. Après une analyse du code source PHP, une carte de fichiers est mise en cache, et utilisée pour charger les fichiers quand la fonction demandée n'est pas trouvée.
Wisss est un générateur d'application web basé sur le plugin eclipse Acceleo. Il fournit un métamodèle spécifique à la place d'UML et génère du code PHP basé sur le Zend Framework.
La version 0.2.0 est en cours de développement et va permettre de définir dans un modèle métier aussi bien les données que la présentation et des processus métiers simples.
Pour les processus plus complexes, il reste toutefois possible de définir du code utilisateur qui ne sera pas écrasé lors des générations suivantes. Wisss s'occupe dans tous les cas de faire le lien entre les différentes couches MVC pour se focaliser uniquement sur l'écriture des processus métiers et sur la mise en forme via une CSS.
Cet article intervient à l'occasion de la sortie d'un tutorial montrant l'utilisation de Wisss dans l'état actuel du développement.
NetEco vient de publier une interview de Harold Goldberg, CEO et Christian Durel, nouveau directeur général de Zend France.
Lire l'interview
- Nouveau composant Zend_Form, avec support Ajax
- Nouveaux assistants d'action et vue, pour automatiser les requêtes Ajax
- Adaptateurs Infocard, OpenId et LDAP
- Support des recherches Lucene complexes
- Support du format Lucene 2.1
- Conteneurs Partial, Placeholder, Action, et Header pour les vues complexes
- Nouveau composant Zend_Layout
- Support UTF-8 pour PDF
- Nouveaux services Web Technorati, SlideShare et Remember the Milk
Je viens de faire la mise à jour de l'article sur les configurations PHP les plus utilisées. En se basant sur les phpinfo() fournis aux membres de l'équipe de qualité, j'ai pu tirer un portrait de la configuration type d'un serveur PHP.
Les changements depuis les versions 5.2.3 sont faibles. MySQL continue d'être installé sur 85% des configurations, tandis que PostGreSQL est sur 11% (Oracle n'apparaît pas dans les calculs car les extensions n'apparaissent pas de manière standard dans les configurations).
Quelques nouveautés et bizarreries :
- bcompiler, le compilateur de bytecode
- shp, pour manipuler les fichiers shape
- htscanner, pour utiliser les fichiers .htaccess dans PHP
- fann, pour les réseaux neuronaux
- SourceGuardian, pour l'encodage des sources
- extensions inconnues : sina, lpcapi, ruten, wires_php (si vous savez ce que c'est dites le moi)
Une préversion du framework de Zend est disponible au téléchargement. En plus de corriger certains bugs et d'améliorer quelques services offerts par Zend Framework, cette version permet d'avoir un aperçu des nouvelles fonctionnalités qui seront incluses dans la version 1.5 finale.
Les principales nouveautés :
- Un nouveau composant Zend_Form pour la création de formulaire avec le support de l'Ajax
- Nouveaux adaptateurs Infocard, OpenId et LDAP
- Support des recherches Lucene complexes et du format Lucene 2.1
- Nouveaux conteneurs Partial, Placeholder, Action, et Header pour des vues complexes
- Un nouveau composant Zend_Layout
- Le support de l'UTF-8 pour la création de document PDF
- Nouveaux webservices pris en charge : Technorati, SlideShare et Remember the Milk
Article sur zend.com
Téléchargement
Forum:
Brèves
Auteur: philippe
Écrit le: Tue, 29 Jan 2008 08:31:35 +0100
Dernier message: Tue, 29 Jan 2008 08:31:35 +0100
Google propose des choses vraiment intéressantes au travers de ses API, comme par exemple son méconnu (car planqué dans la doc) webservice HTTP de géolocalisation. L'idée ici est de récupérer la lattitude et la longitude d'un endroit géographique à partir de sa description, par exemple Paris, France ou encore 3 allée des allouettes, 35000 Rennes, France.
Il vous faut posséder au préalable une clé d'API Google, que vous pouvez obtenir gratuitement par là.
<?php
define('GOOGLE_API_KEY', 'your_google_api_key_here');
$wsurl = 'http://maps.google.com/maps/geo?q=%s&output=csv&key=%s';
$location = 'Paris, France';
$data = explode(',', file_get_contents(sprintf($wsurl, urlencode($location), GOOGLE_API_KEY)));
$coord = 200 === (int)$data[0] ? array((float)$data[2], (float)$data[3]) : null;
var_dump($coord);
Ce qui nous donne :
array(2) {
[0]=>
float(48.856667)
[1]=>
float(2.350987)
}
On prendra soin de cacher autant que faire se peut les résultats renvoyés par le webservice, afin de soulager les serveurs de Google et accessoirement de pas fusiller le crédit-requête associé à sa clé d'API.
Disclaimer : Ce billet n'est pas un appel au troll, je me doute qu'on peut faire la même chose en 3 lignes de Ruby, 2 lignes de Python et -10 lignes de Fotran77. C'est juste pour dire que les services Google, ça déchire quand même un petit peu.
Mise à jour mineure de SPIP 1.9.2
Pour nous faire patienter jusqu'à la prochaine version majeure de SPIP, les développeurs de SPIP publient la version 1.9.2d.
Cette mise à jour porte principalement sur la correction de diverses anomalies mais aussi des modifications et améliorations pour les développeurs de plugins telles que :
- l'amélioration de la purge du cache dans le CRON,
- la correction d’un include manquant qui pouvait faire échouer la fonction autoriser_voir_dist ,
- l'appel de 'url_de_base' depuis mes_options...
Changelog
Téléchargement
Proposé par Clément Péronneaud
J'ai le plaisir et la joie de vous présenter le tout premier concours du site Apprendre-PHP.com. Peut-être le savez-vous déjà si vous suivez le site depuis sa création mais la première bougie pointe le bout de sa flamme. C'est donc à cette occasion que j'ai décidé de mettre en place ce concours afin de fêter comme il se doit cette première bonne année, et aussi remercier toutes les personnes qui y contribuent.
Elephpant au salon Linux 2008
Les Elephpant PHP sont présents au salon "Solution Linux" 2008, et pour montrer leur joie... ont réalisé une petite figure pour le plaisir de tous.
Beaucoup de visiteurs ont réclamé d'en adopter un.. Alors pourquoi pas vous, en venant directement sur le Stand de AFUP. Ils seront encore présent aujourd'hui et demain jeudi.
Un auteur PHP sur le stand ENI
L'auteur du livre "PHP et MySQL - MySQLi - PDO, Construisez votre application" était présent hier mardi sur le stand de la societe "Editions ENI" pour parler de son ouvrage qui sortira le 11 fevrier prochain.

L'auteur sera présent les après-midi de mercredi et jeudi au salon "Solution Linux", vous pouvez aussi le rencontrer sur le stand de l'AFUP (Association Francaise des utilisateurs de PHP)
Pour plus d'informations, sur ce livre.. cliquez ici
Les bases de données libre fait souvent apparaitre en avant MySQL, 2 autres bases de données communiques qu'ils n'y a pas que MySQL, que ecrit David Maume de 01net
Il nous montre par son article que ces bases de données alternatives sont aussi adaptées sur de nombreux projets utilisés par les grands comptes.
Forum:
Brèves
Auteur: philippe
Écrit le: Wed, 30 Jan 2008 10:01:32 +0100
Dernier message: Sun, 03 Feb 2008 22:16:49 +0100
Voila encore une fonctionnalité peu connu qui me fait aimer ce framework.
Dans Symfony, quand le système reçoit une requête il exécute une série de filtre permettant un découpage logique efficace des actions à traiter. Ce qui est intéressant, c'est que l'on peut facilement intégrer ses propres filtres afin de ...
2eme jour sur le salon Linux
Lors de la deuxième journée au salon linux, les visiteurs sont nombreux pour voir et revoir les elePHPants effectués leur Show sur le Stand de AFUP.
Cependant L'auteur de PHP & MySQL - MySQLi - PDO, et publicateur de News pour le site de Nexen.net, était aussi présent pour montrer l'exemplaire de son ouvrage à ces collègues Nexen du groupe Alter Way, son ouvrage qui sortira prochainement en librairie.
Pour Le dernier jour du salon "Solution Linux", vous pourrez discuter toujours avec son auteur
3 paquets ont été mis à jour cette semaine :
PECL est la bibliothèque d'extensions C de PHP.
Quelle serait votre réponse à cette question? rcbarnett analyse 7 réponses jusqu'à la réponse adéquate : inutile de dire qu'elle est longue et alambiquée.
La première réponse que j'ai notée dans l'article a fait écho directement avec mon expérience : quand on interroge un webmestre, il est généralement prompt à expliquer que son site est sécuritaire. "Aucun problème, on a bien blindé les formulaires". mmm,
D'un autre coté, peut on se permettre de répondre : "non, mon site n'est pas sécuritaire, mais je ne sais pas même pas d'où viendrait le problème " ou encore "bah, oui, peut-être... sûrement, ... on n'a jamais rien entendu."
Quand à savoir qu'un site se comporte comme il devrait le faire, c'est sûrement facile pour les injections SQL, mais pour les XSS, c'est encore une autre paire de manche.
Pourquoi devrait-on encore faire des formulaires comme nous le faisons il y a 5 ans? Pourquoi n'y a-t-il pas plus de paquets commet HTML_QuickForm, qui permet de produire rapidement un formulaire, sa validation : on gagnerait tellement de temps...
Il semble que le temps soit venu : Symphony et Zend Framework ont deux tels projets dans leurs cartons, et ils seront bientôt disponibles de manière stable. Cal Evans publie un exemple sur le Zend_form, à découvrir.
Voici les 5 dernières vidéos PHP et MySQL.
Ces vidéos sont publiés sur les sites de partagent de vidéo. Ce sont des tutoriels enregistrés, des sessions de conférences, des screencast ou encore des slides de conférences.
N'hésitez pas à nous contacter pour signaler tout media qui mérite d'être ajouté à cette liste.
Smashing Magazine livre un dossier consacré à la conception de site Web. À partir de 4 constats, ils vous proposent 10 règles à suivre pour préparer correctement votre site Web.
- Les utilisateurs apprécient la qualité et la crédibilité
- Les utilisateurs ne lisent pas, ils scannent
- Les utilisateurs sont impatients et demandent une gratification immédiate
- Les utilisateurs ne font pas de choix optimaux
Je me demande d'ailleurs si ces constats ne pourraient pas pas être adaptés à la programmation PHP et MySQL.