Les représentants des ElePHPants PHP écoutent avec grande attention cette annonce. Ils viennent d'apprendre une annonce merveilleuse :
"La famille va s'agrandir"
L'adoption pourra se faire sans douleur dès leur naissance par les grands et les petits Pour en savoir plus, le site Nexen.net explique comment effectuer l'adoption... Cliquez ici | ![]() |
L'équipe de développement de PHP a annoncé le 01 mai 2008 la sortie de PHP 5.2.6. Cette version a pour but d'améliorer la stabilité de la branche 5.2.x avec la correction de 120 bugs dont plusieurs concernant la sécurité.
Parmi les correctifs de sécurité, on notera :
- Correction d'une possibilité de stack buffer overflow dans FastCGI SAPI.
- Correction d'une possibilité d'overflow des entiers dans la fonction printf().
- Correction d'un contournement du safe_mode dans cURL.
- Correction de la gestion des séquences incomplètes dans la fonction escapeshellcmd().
- Mise à niveau de PCRE à la version 7.6
Les corrections importantes concernent entre autres :
- Correction de possibles crashs dans l'extension POSIX.
- Diminution de l'utilisation de mémoire de la concaténation avec "." au lieu de ".=".
- Correction de la possibilité d'appeller un constructeur privé dans une fonction statique.
- Correction d'une possibilité de boucle infinie dans bz2_filter.c.
- Correction de fuites de mémoire dans quelques fonctions lors de l'appel de __toString().
- Correction de crashs lors de l'utilisation de __get et __set.
- Correction de crashs dans pdo_pgsql.
- Correction de l'utilisation de la méthode __call() lorsque elle est appelée sur un parent d'une classe enfant.
- Correction de crashs dans la méthode xmlrpc_server_call_method().
- Correction de fuites de mémoire lors de conversion implicite.
- Correction de problèmes de mémoire dans SimpleXML.
La liste complète des modifications apportées par PHP 5.2.6 est disponible dans le changelog.
01net a publié fin avril une interview d'Harold Goldberg, PDG de Zend, où il fait le point sur la concurrence et parle de l'avenir de l'entreprise.
Après avoir fait un point sur les activités actuelles de Zend (Zend Core, Zend Framework, Zend Studio, etc), Harold Goldberg nous apprend qu'il n'est pas impossible que Zend passe un jour à un modèle 100% open source même si c'est encore loin d'être une priorité.
Le reste de l'article se résume à une comparaison du langage PHP avec quelques-uns de ses plus célébres concurrents que sont Ruby, Python ou encore Java. On y apprend entre autres, que PHP serait utilisé par 30 millions de sites soit 30% du Web actuel.
Lien vers l'article : Zend (PHP) envisage de basculer vers le tout open source
Pour rappel l'appel à conférenciers pour le forum PHP 2008 est en cours, n'hésitez pas à envoyer vos propositions de sessions !
http://afup.org/pages/forumphp2008/appel-a-conferenciers.php
PHP Solution dans le numéro 03/2008 qui vient de paraître, propose une interview du Trésorier de l'AFUP "Christophe Villeneuve".
Il a répondu à certains nombres de questions qui ont été posé par la rédaction du magazine. Par ailleurs, il fut aussi interroger sur son ouvrage : Construisez votre application "PHP & MySQL - MySQLi - PDO" édité par les éditions ENI.
A numéro à découvrir
Tout est dans le titre :
Sous forme d’addons (si vous avez déjà installé WampServer 2.0) :
http://www.wampserver.com/addons_php.php
http://www.wampserver.com/addons_mysql.php
Sous forme de package complet :
http://www.wampserver.com/download.php
Avec le beau temps qui est présent, le soleil au rendez-vous, nos amis "Les ElePHPants PHP" ont voulus montrer leurs pleines formes...
ils ont décidés d'effectuer un nouveau sport...
Le pari était de réaliser une pyramide en 3D avec un maxium d'éléPHPants... Et ils ont réaliser l'exploit avec 39 ElePHPants.
ils ont commencés par une structure solide
et un deuxieme niveau de renfort
Ce billet intitulé No, really, symfony doesn't scale! a été rédigé par Nicolas Perriault et publié sur le blog Prendre un Café sous licence Creative Commons BY-NC-SA.
Je participe actuellement en duo au concours Appli’Challenge organisé par le groupe Altran
Le principe de ce concours est de proposer la meilleure idée d’application, la développer puis la promouvoir sur Facebook (plus d’infos sur le groupe Facebook concernant le concours)
Pour les lauréats, les prix sont les suivants, du premier au troisième :
Les inscriptions se sont terminées au 5 mai. Voiçi les prochaines dates importantes :
C’est une très bonne initiative qui peut motiver à découvrir l’API Facebook (disponible officiellement en PHP4/5) et les particularité du développement sur cette plateforme.
Je participe donc en duo avec un ami designer. Nous avons développé une application en PHP5, FBML et FBJS (mode canvas pour les connaisseurs) qui connait depuis son lancement récent un succès plutôt encourageant.
En dehors du concours, nous avons bon espoir que celle-ci soit à moyen terme un des succès d’applications locales présente sur Facebook (nous visons actuellement avec cette application uniquement la communauté française)
Vu sur l'IBM Developer Works un court et synthétique article sur les nouveautés attendues dans PHP6 , encore plus en bref :
Il est dommage que ce passage ne soit pas l'occasion de refondre l'API pour y apporter une cohérence regrettée ...
Aujourd’hui encore, PHP est de loin un langage de choix dans le développement web.
Cependant, celui-ci n’a pas évolué en profondeur depuis de nombreuses versions, et de nouveaux arrivants, tel que le framework Ruby on Rails (langage Ruby) ou encore le langage Python (qui n’a pourtant pas été conçu à l’origine pour le web) voient leur popularité croître de plus en plus.
Dernier exemple en date, la plateforme d’hébergement et de développement RoR heroku.com a levé $3 millions d’un fond d’investissement, Redpoint Ventures il y a de cela quelques jours (consultez l’article techcrunch à ce sujet).
Ces nouveaux arrivants sont objectivement bien plus structurés en interne que PHP, qui se traîne entre autres depuis des années son système de nommage de fonctions anarchique :
(Plus de détails sur cet article de PHP Index : Et si PHP était audité demain ?)
Mais PHP, c’est aussi des aspects de fonctionnement qui ont été souvent au centre de nombreuses polémiques, avec parmi ces bad practices :
PHP5, c’est encore des lacunes dans le traitement des chaînes de caractères multi-octets. Les fonctions internes de PHP4 ou 5 ne sont pas capables de traiter des chaînes multi-octets (en UTF8 par exemple), il faut passer par des extensions tels que mb_string, et utiliser les fonctions correspondantes : mb_strlen, mb_strpos, mb_strtolower … Sans cela, des problèmes importants sont à craindre. Exemple simple :
Sur l’internet de nos jours, les vrais projets se font dans une perspective multi-langues. Le jeu de caractère généralement choisi est l’UTF8, et il est alors nécessaire de respecter une chaîne d’encodage identique de la source vers la destination. Il faut alors être rigoureux, connaitre les good practices afin d’éviter les erreurs :
Bref, vous l’aurez compris, savoir bien développer aujourd’hui en PHP n’est plus aussi facile que dans l’internet d’il y a 5 ans, où les sites développés n’ont jamais été aussi complexes que maintenant. Les contraintes de développement des projets du web 2 imposent un ensemble de good practices qu’il est nécessaire de maitriser.
En développement depuis au moins 2 ans, la version finale n’est toujours pas disponible mais ça arrive. Le planning de développement est fixé, et les nouveautés sont là (je vous invite à lire cet article paru sur l’IBM Developper Works il y a quelques jours).
Quelles sont donc ces avancées ?
Mais finalement, que reste t’il de nouveau pour les bons développeurs respectant déjà les bonnes pratiques et n’étant quasiment pas concernés par tout ces changements ?
Pas grand chose, hormis les namespaces, qui vont être aussi portés en PHP 5.3, donc ne sont plus vraiment un privilège de PHP6 ;o.
On n’aura malheureusement pas encore droit à une meilleure consistance dans le système de nommages des fonctions internes. Je pense qu’il aurait été judicieux dans PHP6 de revoir toutes ces incohérences, quitte à attendre plus longtemps, car PHP6 est résolument une version introduisant de nouvelles fondations bien plus propres et solides, et ça fait un peu tâche de se traîner ce système anarchique.
La question finale sera concernant l’adoption de PHP6 chez les hébergeurs mutualisés. Beaucoup trop sont toujours en PHP4, alors que sa fin a sonné.
PHP6 est une version importante qui va sans aucun doute améliorer la qualité et la sécurité du code pour beaucoup, ainsi qu’offrir de nouvelles performances.
Graphique nexen.net
Merci à Damien (http://www.nexen.net) pour ce lien :
http://www.dailymotion.com/search/MySQL/video/x5d2ka_tutoriel-video-wamp_creation?from=rss
3 nouveaux rendez-vous Webinar sont organisés pour le mois de Mai :
WEBINAR : "Créez et déboguez vos applications PHP avec Zend Studio for Eclipse"
Jeudi 22 mai 2008 – 14h30 : Votre ordinateur - via Webex
Zend Studio for Eclipse est notre IDE PHP de nouvelle génération basé sur Zend Studio "Classique" et l'environnement Eclipse. Studio possède de nombreuses nouvelles fonctionnalités telles que le Code coverage, le test unitaire, le profiling...
L'objectif de ce webinar est de mettre en rapport les fonctionnalités de Studio for Eclipse avec les problématiques quotidiennes de développement.
Nous vous montrerons donc comment créer et déboguer une application PHP en utilisant les outils Zend Studio for Eclipse.
Nous aborderons de manière pratique la gestion de projets, les fonctionnalités de base (édition, complétion, templates), les fonctionnalités avancées (génération de code, débogage, profiling, test unitaire).
Notre expert répondra à l'ensemble de vos questions tout au long de cette présentation.
Durée : 50 minutes
Public : développeurs, chefs de projet...
Intervenant : Gauthier Delamarre, Consultant Zend Technologies
https://zend.webex.com/zend-fr/onstage/g.php?t=a&d=578382773
--------------------------------------------------------------------
Webinar : "Migration PHP4 vers PHP5, quels enjeux et problématiques ?"
Mardi 20 mai 2008 – 14h30 : Votre ordinateur - via Webex
Le PHP Group annoncé la fin du support de PHP4 par la communauté le 8 août 2008. Cet arrêt impose aux entreprises qui possèdent des serveurs PHP4 de considérer la problématique d'une migration vers PHP5 non seulement de vos serveurs, mais aussi de vos applications.
Pourquoi envisager la migration, même celle d'un système fonctionnel ?
Quels sont les avantages de PHP 5 par rapport à PHP 4 ?
Quels sont les risques ?
Quel est le processus de migration ?
C'est aussi l’occasion de poser toutes vos questions à un expert Zend en direct.
Durée : 40 minutes environ
Public : développeurs, administrateurs, responsables informatiques
Intervenant : Gauthier Delamarre, Consultant Zend Technologies
https://zend.webex.com/zend-fr/onstage/g.php?t=a&d=575744185
---------------------------------------------------------------------
WEBINAR : "Optimisez et supervisez vos applications PHP avec Zend Platform"
Mardi 27 mai 2008 – 14h30 : Votre ordinateur - via Webex
Durant cette présentation, vous découvrirez comment la Zend Platform vous permet d'accélérer vos développements et réduire vos coûts de maintenance grâce à un système de supervision complet de vos applications. Lors d'une phase de démonstration, un consultant vous montrera comment il est possible de déboguer d'un clic un incident passé, et enregistré par la Platform, directement en mode débogage pas-à-pas. Seront également présentées les fonctionnalités d'amélioration de performances au travers de différents mécanismes de cache.
Durée : 50 minutes / 1 heure (dont Questions/réponses)
Public : développeurs, administrateurs, responsables informatiques
Intervenant : Gauthier Delamarre, Consultant Zend Technologies
https://zend.webex.com/zend-fr/onstage/g.php?t=a&d=570899126
Proposé par Hello
Clever Age a publié récemment un livre blanc au sujet des frameworks PHP pour l'entreprise.
Le document présente les différents aspects de l'évaluation d'un framework : aspects techniques, évidemment, mais également aspects fonctionnels et stratégiques. Quatre frameworks, parmi les plus populaires, ont été passés au crible : Cake PHP, Code Igniter, Symfony et le Zend Framework.
Chacun d'entre eux a été analysé suivant la méthode QSOS, et le résultat de l'étude est résumé sous la forme de graphiques radar.
Ce livre blanc est disponible gratuitement, sur simple demande.
Proposé par Xavier Lacot
Plusieurs extensions sont actuellement corrigées car sensibles entre autres aux Cross site scripting (XSS)
Extension WT Gallery (wt_gallery)
Versions concernées : 2.6.2 et versions précédentes.
Lors de l'upload d'une image, l'arborescence du serveur peut apparaître. Cette extension est également sensible aux XSS.
Télécharger la mise à jour
Extension Questionaire (pbsurvey)
Versions concernées : 1.2.0 et versions précédentes.
L'extension est sensible aux XSS et ne filtre pas les données javascript.
Télécharger la mise à jour
Extension Event Database (rlmp_eventdb)
Versions concernées : 1.1.1 et versions précédentes.
L'extension est sensible aux XSS et ne filtre pas les données javascript.
Télécharger la mise à jour
Extension Statistics (ke_stats)
Versions concernées : 0.1.2 et versions précédentes.
L'extension est sensible aux injections SQL et aux XSS.
Télécharger la mise à jour
Extension Frontend User Registration (sr_feuser_register)
Versions concernées : toutes
L'extension est sensible aux XSS et ne filtre pas les données javascript. De plus, l'exécution d'une commande à distance peut effacer certains fichiers du serveur.
Pour les utilisateurs des versions de Typo3 3.x : Télécharger cette mise à jour
Pour les utilisateurs des versions de Typo3 4.x : Télécharger cette mise à jour
Extension Frontend Filemanager (air_filemanager)
Versions concernées : 0.6.0 et versions précédentes
L'extension est sensible aux XSS et ne filtre pas les données javascript. Du code PHP peut également être inséré dans les pages.
Télécharger la mise à jour
Pour toutes les extensions citées ci-dessus, Typo3 conseille de suivre les recommandations données dans le livre de sécurité.
Lire la liste des bulletins de sécurité
L'équipe de symfony, le framework pour php5, vient de corriger une importante faille de sécurité.
Cette correction est l'unique changement entre cette version et la précédente, mais elle justifiait à elle seule la mise à jour. Vous trouverez plus d'informations à propos de la procédure l'exploitant sur le ticket #1617. Brièvement, avant la correction de cette brèche de sécurité, un attaquant pouvait outrepasser le processus de validation en changeant la casse d’un nom de fichier appelé.
Le patch de cette faille a provoqué quelques soubresauts du fait que l'auteur de la découverte l'avait faite remonter il y a plus d'un an.
Concernant la faille, tout le monde n'est pas forcément touché, il faut que votre application utilise :action comme paramètre de règle de routage, ce qui est le cas par défaut.
Pour le savoir, allez à l'emplacement "data/skeleton/app/app/config/" puis regardez dans le fichier "routing.yml".
Si vous trouvez la mention :
default:
alors vous êtes affecté par cette faille et l'équipe de symfony vous encourage vivement à mettre à jour le plus rapidement votre version.
url: /:module/:action/*
Pour la mise à jour :
- Si vous êtes en version 1.0 : vous pouvez patcher directement le fichier sfExecutionFilter.class.php comme indiqué sur le changeset #8922, ou utiliser PEAR (pear upgrade symfony/symfony-1.0.16) ou bien encore le paquet Debian.
- Si vous êtes en version 1.1 : vous pouvez patcher directement le fichier sfExecutionFilter.class.php comme indiqué sur le changeset #8925.
Le patch sera inclus dans la version 1.1RC.
PS : Un peu hors sujet, mais restant sur les failles critiques, si vous utilisez SSH, que vous êtes sous Debian (ou ses dérivées) et que ce n'est pas déjà fait, pensez à mettre à jour aussi si vous ne voulez que l'on puisse prédire" vos clefs.
Proposé par Hourdeaux Christophe
Article original publié sur Glagla Dot Org. Tous droits réservés.
Le format PDO (Programming Data objet) se trouve un format que j'ai découvert en 2007 part différents conseils... Cependant connaître le format, c'est bien, mais il faut en faire profiter la communauté PHP...
Suite à la réalisation de mon ouvrage "PHP & MySQL-MySQLi-PDO, construisez votre application" aux Editions ENI et certaines personnes me sollicitent pour connâitre les autres projets touchant l'univers du PDO.
Comme à mon habitude, j'ai souvent tendance à être en retard sur mes propres projets, mais ils prennent une voix.
Ces projets sont variés et différents :
- Application
- Tutoriaux
- Articles (dont 1 déjà planifié pour le prochain numéro de PHP Solution)
et beaucoup d'autres choses...
Donc patienté un tout peu, et vous pourrez découvrir et utiliser ce format sans probleme
Voici la description officielle de l’AFUP :
Une première en France, un BarCamp exclusivement orienté autour de PHP. Une occasion rêvé de participer activement au développement du langage lui-même (à travers la TestFest), de présenter des sujets qui vous tiennent à coeur et de participer à des échanges nombreux.
Un BarCamp est avant tout une rencontre fruit du désir des uns et des autres de partager et d’apprendre : un évènement intense avec des démos, des présentations et de l’interaction entre participants.
La subtilité du PhpCamp tient juste au fait que PHP sera la techno de référence.
TestFest en cours au niveau mondial, on y parlera forcément des tests si nécessaires pour le bon fonctionnement du PHP Core. Pour le reste c’est tout ouvert : outils, techniques, astuces, Open Source, communautés… Tous les tags sont permis.
Infos pratiques :
- Date : 07/06/2008
- Horaire : 10h00 - 20h00
- Capacité : 80 places
- Tarif : gratuit
- Lieu : La Cantine
- Adresse : 151 rue Montmartre / Passage des Panoramas / 12 Galerie Montmartre / 75002 Paris
- Métro : “Grands Boulevards” et “Bourse”
Pour vous inscrire : http://www.afup.org/pages/rendezvous/?id=5
Un des éléments les plus déterminants de la performance d’un site web est sans conteste son interaction avec sa base de donnée. Il suffit en effet d’une seule requête mal conçue ou mal indexée pour qu’advienne une dégradation de performance parfois extrème (temps d’exécution de la requête en seconde), figeant l’affichage de la page pour votre visiteur, et mettant à genoux votre serveur.
De manière générale, vous devez faire très attention à vos requêtes SQL. Cela se traduit notamment par le placement d’index adéquats sur les champs utilisés dans les clauses “WHERE” et sur les pivots de jointures.
Je vous relate ici une mésaventure obtenue sur une requête qui à la base me semblait tout à fait normale.
Nous avons les deux tables suivantes :
table_feeds ( `id_feed` int(10) unsigned NOT NULL auto_increment, `id_user` bigint(20) unsigned NOT NULL, `group_key` char(32) NOT NULL PRIMARY KEY (`id_feed`), KEY `group_key` (`group_key`), KEY `id_user` (`id_user`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Cette table contient des actions (feed) d’utilisateurs donnés (id_user) qui ont été effectuées dans des groupes donnés (group_key)
table_assoc ( `id_user` bigint(20) unsigned NOT NULL, `group_key` char(32) NOT NULL, KEY `group_key` (`group_key`), KEY `id_user` (`id_user`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Cette table contient l’association des utilisateurs avec les groupes. Je ne détaille pas le pourquoi de la structure ici
Je souhaite récupérer les feeds de tous les groupes dans lequel se trouve l’utilisateur 10.
SELECT group_key FROM table_assoc WHERE id_user=10
SELECT id_feed FROM table_feeds WHERE group_key IN('ABC ...', 'DEF ...', 'HIJ ...')
Ces deux requêtes ne posent aucun problème de performance car elles utilisent chacune un index.
Aucun soucis. La clause IN utilise l’index “group_key”, MySQL n’a besoin de parcourir que les 5 enregistrements existants pointés par cet index (à noter que la table table_feeds contient en tout 250k enregistrements)
Mais pourquoi effectuer deux requêtes dans ce cas ?
SELECT id_feed FROM table_feeds WHERE group_key IN(SELECT group_key FROM table_assoc WHERE id_user=10)
La table table_feeds ne contenait au départ que quelques enregistrements, je n’avais donc pas noté un problème de performance pouvant être causé à l’avenir par cette requête qui s’exécutait alors en seulement quelques millièmes de secondes et pensais-je, en utilisant les mêmes index que les deux requêtes séparées.
Erreur. Quelques jours plus tard, la table table_feeds atteint les 250k enregistrements, et cette requête est passé de quelques millièmes à plus de 5 secondes d’exécution. Quand on atteint une telle différence de temps d’exécution, cela ne peut pas s’expliquer par le fait que la table possède plus d’enregistrements, mais par un problème d’indexation.
Nous avons bien la confirmation de l’erreur : MySQL doit parcourir les 250000 enregistrements de la table table_feeds et n’utilise plus aucun index
Après quelques recherches, il s’agirait d’un bug déclaré dans MySQL 4 et 5. D’après la dernière réponse (bien que maintenant “ancienne”) , celui-ci est corrigé dans MySQL 6 (que je n’ai pas encore testé).
On utilise les résultats de la première requête (que l’on formate avec un implode en php par exemple) dans le IN de la deuxième requête. Cette solution a l’inconvénient d’augmenter la longueur textuelle de vos requêtes (plus la première requête va retourner de résultats, plus la deuxième sera longue) et d’imposer un traitement supplémentaire à votre script.
SELECT id_feed FROM table_feeds f INNER JOIN table_assoc a ON a.group_key = f.group_key AND a.id_user =10
J’ai ensuite crée un index multicolonnes (user_and_group) sur (groupe_key+id_user) qui sera utilisé par ma jointure :
Avec un nombre de visiteurs supérieur à la veille et donc un nombre de requêtes plus élevé, (cf. graph) la correction de cette seule requête divise la consommation du processeur jusqu’à un facteur 4. Ci-dessous les statistiques affichant de haut en bas la consommation CPU, la charge du serveur et le nombre de requête SQL par minute, le trait rouge de droite indiquant l’heure de correction de la requête.
A travers son blog Redo The Web, François Zaninotto nous fait un petit tour d'horizon de la future version 1.1 du framework Symfony.
Le redacteur de la documentation de Symfony insiste tout d'abord sur le fait que cette nouvelle version du framework s'accompagne d'une nouvelle philosophie : Si la version 1.0 devait permettre d'écrire du code rapidement, la version 1.1 vise elle à rendre les applications plus facilement extensibles.
Puis pour appuyer son propos sur cette nouvelle philosohie, l'auteur nous présente deux nouveautés de ce Symfony 1.1: Le système de tâches, qui facilite l'écriture des scripts en ligne de commande, et le système d'évènements permettant la modification des classes pendant l'exécution du script.
François Zaninotto, conclu en admettant qu'il n'approuve pas forcement ce changement de philosophie, et regrette que la documentation actuelle, particulièrement le livre The Definitve Guide To Symfony risque de se transformer en pur documentation technique.
Rappelons d'ailleurs que si cette version 1.1 n'est pas à l'heure actuelle sortie en version stable, la première release-candidate est néanmoins disponible depuis deux semaines.
L'article sur Redo The Web
Pour emboiter le pas au DrupalCamp du mois dernier, samedi 7 juin, pour la première fois en France, seront organisés un PHPCamp est une TestFest exclusivement orienté autour de PHP. Une occasion de participer à des échanges (BarCamp) et développement du langage (via la TestFest).
Côté informations pratiques, ces réunions se dérouleront à La Cantine (qui permet d'accueillir 80 places, alors inscrivez vous vite !) de 10h à 20h. Bien entendu l'accès à ces évènements est gratuit.
PS : Pour rafraichir quelques notions chez certains, Wikipedia nous apprend qu'un BarCamp est "une non-conférence ouverte qui prend la forme d'ateliers-événements participatifs où le contenu est fourni par les participants. C'est le principe "pas de spectateur", "tous participants". Une TestFest, quant à elle, est un évènement dont le but est d'améliorer la couverture de code d'une suite de test.
Proposé par Hourdeaux Christophe
La plateforme developperWorks d'IBM nous propose un nouveau tutoriel sur l'utilisation des API Google Bloc-note dans une application PHP.
Le service Google Bloc-note (Google Notebook en anglais) vous permet de stocker en ligne vos notes, textes, liens, et images, et de pouvoir ensuite y accéder de partout à l'aide de votre compte Google.
Ce tutoriel nous explique comment utiliser les API fournies par Google pour lister vos blocs-notes, et récupérer leurs contenus dans vos scripts PHP. De plus, et comme souvent avec IBM, l'explication est agrémentée de nombreux exemples de codes.
Il est à noter que ces API ne permettent pas, à l'heure actuelle, d'effectuer des modifications sur vos blocs-notes, ni sur leurs contenus.
L'article sur IBM developperWorks
Version 6.8 of the Asbru Web Content Management system for PHP, ASP and JSP/Java has been released.
Version 6.8 of the Asbru Web Content Management system is a major upgrade with focus on supplying a number of ready-to-use applications, which makes it easy for organizations to add a variety of functions to their websites. Version 6.8 also adds Landing Page Optimization (LPO) capabilities.
Stores and Branches Directory
Among the new applications in the latest version 6.8 is a Stores and Branches Directory application. This application enables non-technical users to add searchable lists of stores and branches to their website in just three steps. When a website visitor selects a store a map and details about the store is displayed.
Careers and Jobs Directory
The new version also includes a Careers and Jobs Directory, that when added to a website enables visitors to search for jobs and submit their job applications. New jobs are easily added by website administrators.
Other Directory Applications
Other applications include an Organizational Plan Directory, which displays subsidiaries, divisions, roles and responsibilities of organizations and a Classifieds Directory. There is also a General Directory application that can be adapted to suit individual needs.
All the applications are built upon the Custom Databases Add-On Module and demonstrate the power and versatility of the Asbru Web Content Management system's Custom Databases Add-On Module.
Landing Page Optimization
Finally the new version 6.8 of the Asbru Web Content Management system adds Landing Page Optimization functionality that enables web sites managed by the Asbru Web Content Management system to display different landing pages depending on which websites visitors came from and which search queries website visitors used to find the website.
For an online trial of the new version of the Asbru Web Content Management system: http://wcm.asbrusoft.com.
About Asbru Web Content Management
The Asbru Web Content Management system is a full-featured and ready to use out-of-the-box enterprise level solution. It is available for PHP, ASP and JSP/Java and runs on Microsoft Windows, Linux, Unix and Mac OS X. The system enables users to update web content through Internet Explorer, Mozilla/Firefox and Safari web browsers. For more information about Asbru Web Content Management: http://wcm.asbrusoft.com.
Proposé par David Fisher
Les deux concepteurs viennent d'annoncer un partenariat sous licence BSD.
Bien connu des développeurs PHP, Zend inclura à l'avenir Dojo Toolkit, un framework AJAX contenant entre autres :
Aujourd'hui Ulhume nous propose sur son "non blog" Artisan Numérique un tutoriel pour créer son premier module pour Drupal.
Le module se contentera d'afficher des statistiques (nombre d'articles, de pages, de commentaires, ...) mais vous l'aurez compris son but premier est l'aspect pédagogique.
Tout d'abord, il faut structurer l'arborescence de l'application pour y loger notre futur module. Pour des soucis de maintenabilité, l'auteur nous conseille de créer le répertoire "mes_modules" dans le répertoire "sites/all/modules" et non directement dans "modules" à la racine. De ce fait, en cas de changement de version de Drupal, l'importation du répertoire "sites" se chargera d'importer aussi nos modules.
Une fois ce dossier "mes_modules" crée, nous allons aussi y ajouter un répertoire "statistiques" dans lequel nous créerons au minimum deux fichiers "statistiques.info" et "statistiques.module".
Nous avons un répertoire "statistiques" qui sera le nom parent du module, les fichiers contenus dans ce répertoire devrons porter son nom en plus de leur extensions.
Drupal, quand il trouve un répertoire de module, va regarder à l'intérieur s'il trouve un fichier .info du même nom, le fichier de configuration du module. C'est un fichier texte contenant des informations sur le module comme son nom, sa description, la version de Drupal avec lequel il est compatible,... Après avoir trouvé ce fichier .info, Drupal va chercher un fichier .module qui lui contient le code PHP du module.
Libre à vous bien-sûr d'appeler d'autres fichiers depuis votre .module.
Voici les fichiers .info et .module de notre module de statistiques :
* statistiques.info
name = "Statistiques"
description = "Statistiques sur les contenus"
package = karma-lab
project = "statistiques"
version = "6.x-2.0"
core = 6.x
* statistiques.module
<?
function statistiques_init() {
}
/**
* Implémentation du hook_block
*
* @param $op opération demandée (list, configure, save, view)
* @param $delta id du bloc (op==view)
* @param $edit données modifiées par le formulaire (op==save)
*/
function statistiques_block($op = 'list', $delta = 0, $edit = array()) {
$blocks=array();
// Enumeration des blocs disponibles
if ($op == 'list') {
$blocks[] = array(
'info' => t('Affichage des statistiques'),
'weight' => 0,
'status' => 1);
return $blocks;
}
// Génération du formulaire de configuration
else if ($op == 'configure' && $delta == 0) {
$form['statistiques_commentaires'] = array(
'#type' => 'checkbox',
'#title' => t('Afficher les commentaires ?'),
'#default_value' => variable_get('statistiques_commentaires', 0),
);
return $form;
}
// Sauvegarde du formulaire de configuration
else if ($op == 'save' && $delta == 0) {
variable_set('statistiques_commentaires', $edit['statistiques_commentaires']);
}
// Génération du contenu à afficher pour le block
else if ($op == 'view') {
switch($delta) {
case 0:
$block = array(
'subject' => t('Statistiques'),
'content' => statistiques_contenu());
break;
}
return $block;
}
}
function statistiques_contenu() {
$result="<ul>";
$cursor = db_query("SELECT type,count(type) as count FROM {node} GROUP BY type");
while ($statistique=db_fetch_object($cursor)) {
$result.="<li>".t($statistique->type).' : '.$statistique->count."";
}
if (variable_get('statistiques_commentaires', 0)) {
$comments = db_result(db_query("SELECT count(*) as count FROM {comments}"));
$result.="<li>".t("commentaires").' : '.$comments."";
}
$result.="</ul>";
return $result;
}
?>
Bien entendu vous trouverez bien plus d'explication sur ce premier module chez son auteur, d'ailleurs durant la rédaction de cette actualité Ulhume a mis en ligne la suite de ce tutoriel : créer un module "type de contenu".
Merci encore à lui pour ces contributions.
Proposé par Hourdeaux Christophe
L'auteur du blog PHP::Impact a pris la peine de lister les applications PHP open-source qui, selon lui, ont marquées les 10 dernières années.
Dans ce récapitulatif classé par année, l'auteur nous liste tous les projets importants, peu importe leur domaine d'application, et regroupant ainsi des applications liées à la gestion de contenu, de mails, de forums, de bases de données, et bien d'autre encore. Même si ces applications sont, pour la plupart, très connues, l'auteur a néanmoins ajouté un petit descriptif à chacune d'elles.
En parcourant la liste on retrouve des projets désormais historiques comme phpMyAdmin sorti en 1998, phpBB apparu en 2000, ou MediaWiki en 2002, mais aussi les deux principaux frameworks PHP du moment: Symfony et le Zend Framework, sortis respectivements en 2005 et 2006.
L'article de PHP::Impact
Pour continuer les apéroPHP de 2008, je propose de nous rencontrer

Chaque fois vers 19h.
Des lieux calmes à proposer ? n'hésitez pas ! Vous connaissez des espaces propice à l'annonce de ces rencontres ? n'hésitez pas ?
Si vous connaissez un lieu tranquille, dans ces villes ou ailleurs, laissez moi un commentaire. Si la date ne convient pas, et que vous avez une proche à proposer, celle que je propose sont des références d'espacement. Il n'y a aucun problème de proposer une autre date dans les alentours.
Les conditions à remplir pour un apéro PHP réussi.
phpbelgium à un compte sur Twitter
Le site EL Roubio, le créateur du symbol de l'ElePHPant PHP, signale mes explois de pyramide dont je le remercie.
Par ailleurs, La communcauté de l'ElePHPant possède aussi son groupe sur flick'r
Et bien sur, mon blog en cours de refonte, va consacrer une partie pure de l'ElePHPAnt.
Si vous voulez rejoindre cette communauté, il est toujours possible d'en adopter 1 directement sur le site de Nexen en cliquant ici
Le site EL Roubio, le créateur du symbol de l'ElePHPant PHP, signale mes explois de pyramide dont je le remercie.
Par ailleurs, La communcauté de l'ElePHPant possède aussi son groupe sur flick'r
Et bien sur, mon blog en cours de refonte, va consacrer une partie pure de l'ElePHPAnt.
Si vous voulez rejoindre cette communauté, il est toujours possible d'en adopter 1 directement sur le site de Nexen en cliquant ici
Suite à quelques mouvements de personnel dans la R&D de Zend, John Coggeshall donne son point de vue sur ce qui pourrait se passer au sein de l'entreprise
Le site TechCrunch a publié il y a un peu plus d'une semaine un article évoquant une réduction de la masse salariale parmis l'équipe de R&D chez Zend. Cette opération qui place la balance commerciale de la compagnie dans le positif est interprêtée comme une action permettant de faciliter un achat éventuel.
Les acheteurs potentiels cités sont alors Oracle, ayant déjà approché Zend dans le passé mais aussi IBM et Microsoft avec qui Zend a développé un partenariat actif ces derniers temps.
A ce sujet John Coggeshall a donné son avis qui pencherait pour Microsoft et ce pour diverses raisons, il évoque également les rumeurs sur les récentes visites des co-fondateurs de Zend Zeev et Andi à Seattle.
Source
Extension KJ: Image Lightbox v2 (kj_imagelightbox2)
Versions concernées : 1.4.2 et versions précédentes
Cette extension est sensible aux Cross site scripting (XSS) et ne filtre pas les données javascript.
Télécharger la mise à jour 1.4.3
Les utilisateurs de l'extension kj_imagelightbox (le prédécesseur de kj_imagelightbox2) doivent également télécharger la mise à jour.
Extension Library for Frontend plugins (sg_zfelib)
Versions concernées : 1.5.512 et versions précédentes
Cette extension est sensible aux injections SQL et rend possible les accès à la base de données.
Télécharger la mise à jour
Lire la liste des bulletins de sécurité
J’ai le plaisir de vous annoncer que l’application Cursus, que j’ai développée en duo avec mon partenaire designer Thomas Guenoux, a remporté hier le concours Appli’Challenge organisé par le groupe Altran en partenariat avec 20minutes.
Me voici donc en compagnie d’un superbe MacBook AIR
Cursus est une application Facebook développée en PHP5/MySQL5/FBML/FBJS (la surcouche HTML et Javascript de la plateforme Facebook). Elle permet de retracer de manière innovante son parcours scolaire, de la maternelle aux études supérieures.
Une fois son parcours retracé, les anciennes classes sont reformées dans des groupes où l’on peut uploader ses photos de classe et poster des commentaires via le wall. Outre le fait de pouvoir retrouver les personnes d’un même classe, l’application permet aussi de retrouver les personnes ayant fréquenté à la même période le même établissement et de consulter le cursus de ses amis.
Auto complétion sur la ville => recherche des établissements disponibles => recherche des libellés de classe déjà proposés => validation puis pré remplissage des champs sur l’année-1 (l’assistant est antéchronologique : on commence à remplir son cursus depuis la première année d’étude jusqu’à la maternelle, celui se chargeant de décrémenter les années et le passage aux classes inférieures est généré automatiquement)
Sur la page d’accueil se trouve le feed Cursus, fonctionnalité phare de Facebook adapté à l’application :
Celui-ci indique les nouveaux commentaires dans les classes, les nouveaux cursus de nos amis, les dernières photos de classe uploadées concernant nos amis ou nous-mêmes etc …
Au lieu d’un long discours, jugez plutôt par vous même
Une des dernières fonctionnalités plébiscitées par les fans de l’application, c’est son intégration totale dans le “Look and Feel” Facebook. La profile box, disponible sur la page profile de l’utilisateur, témoigne de cette intégration totalement réussie par Thomas (ici la profile box d’un des fans de l’application) :
Cursus a été développé en une quinzaine de jours et lancé fin mars 2008. Aujourd’hui, deux mois plus tard, elle possède plus de 60 000 utilisateurs, un total d’un million d’années scolaire et plus de 7000 photos
Merci donc au groupe Altran et à 20minutes de nous avoir donné la motivation pour développer cette application, de son accueil de qualité au sein de son siège social à Levallois, et bien sûr de leurs très beaux prix : )