Générateur (PHP) de site statique orienté documentation.
Le This is couscous. Couscous is good. me fait marrer.
Cette série d'articles de Fabien Potencier sont désormais dans la doc Symfony2. C'est un must read pour avoir une bonne vision d'une architecture Web. On retrouve ce type d'architecture un peu partout, pas seulement en PHP, dès qu'on souhaite faire du Web un peu proprement.
Si cela ne vient pas du cache, vérifier que DependencyInjection/
Première release pour Posibrain, le tchatbot réutilisable en PHP, parce que maintenant il supporte les positrons (traduisez : plugins ;D).
Ma checklist de mise en production pour un site utilisant Symfony2 était beaucoup plus courte que cela : oups !
A vrai dire ce n'est pas que sur Symfony2, il y a aussi quelques points sur Composer, Doctrine et l'installation d'un accélérateur PHP (m'étant souvent demandé en quoi cela consisté vraiment, il faudrait que je regarde de plus près) !
L'une des meilleures présentation à propos de Doctrine avec juste Doctrine et rien d'autres.
OpenID en PHP (par mon école d'ingé ! Enfin avant quoi ^^)
Ok, donc apparemment, pour qu'un package Composer sur Github soit automatiquement mis à jour sur Packagist (auto-update), lorsque ce package est lié à une organisation, il faut :
Voici le fichier codant les layout Twig pour Symfony. Ce qui est utile lorsque l'on souhaite étendre l'un d'entre eux :D
Ok, HWIOAuthBundle est un bunble Symfony pour être un client OAuth. Bien, bien...
La doc du dit bundle est ici : https://github.com/hwi/HWIOAuthBundle
Mais cet article est bien utile pour le faire fonctionner !
Ainsi que celui-ci : http://www.diegocaprioli.com/adding-hwioauthbundle-to-your-symfony2-project/
Et pour faire des tests en local, il vaut mieux désactiver la vérification SSL, comme expliqué ici : https://github.com/hwi/HWIOAuthBundle/issues/368 (verify_peer: false)
Je ne sais plus où j'ai trouvé ce benchmark, mais il est pas mal du tout.
Finalement, un des benchmark qui m'a le plus impressionné et l'un de ceux que je connaissais déjà : for ($i = 0; $i < count($array); $i++) est lent par rapport à for ($i = 0, $count = count($array); $i < $count; $i++). Je ne savais pas que c'était à ce point (x40 pour un tableau de 128 caractères).
ça me le fait à chaque nouvelle installation d'un ordinateur.
composer.bat install
You must enable the openssl extension to download files via https
Il faut activer l'extension PHP Openssl. Si on utilise Wamp par exemple, le menu de configuration permet de l'activer dans le php.ini dédié au page Web. Ici on cherche le php.ini pour l'accès en ligne de commande (CLI), il faut enlever le point-virgule devant la ligne ";extension=php_openssl.dll" dans "wamp/bin/php/php#.#.##/php.ini".
Eh, mais il y a une nouvelle version de poche, the self hosted read-it-later web app! La précédente version me plaisait bien... j'ai bon espoir d'apprécier cette refonte. Reste à voir s'il est possible d'y ajouter la gestion du hors ligne...
J'en suis à la version 0.3.0 de Posibrain (anciennement TchatBot, attention l'url à changé), une petite implémentation de tchat bot en PHP. Pour l'instant , je m'intéresse surtout à faciliter l'environnement de développement et de déploiement : installation, utilisation, debug, choix et créations de "knowledge databases" pour les "cerveaux" des robots.
Les lecteurs d'Isaac Asimov reconnaîtront peut-être le lien entre Posibrain et les robots positroniques ! Et ne s'étonneront pas que R. Sammy (le tchat bot par défaut) soit légèrement stupide. Créer un cerveau et une base de connaissances pour Daneel Olivaw va être un vrai challenge :-)
Mon petit passe-temps du moment : implémenter un tchatbot en PHP. Je me suis inspiré d'un petit projet existant (visant à reproduire ELIZA en PHP) et j’améliore, je modifie, je m'amuse. L'idée n'est pas de créer un tchatbot très intelligent (il n'y a même pas d'apprentissage pour l'instant) mais de voir jusqu'à où je peux aller comme ça.
C'est libre et distribué sous licence LGPL v2.1.
Je l'ai installé sur le minitchat de mon site (http://la-bnbox.fr/). Le mystérieux "Hari S." se met à parler lorsqu'on envoie un message commençant par "@Hari".
Visiblement avec PHP 5.5 il faudra compter avec les Generators (yeld et tout ça...) et je ne suis pas encore opérationnel !!!
Cette librairie pour manipuler du RSS/Atom avec PHP a l'air plutôt simple et efficace.
Eh, je suis dans la liste "Membres Contributeurs" de la communauté FluxBB.fr ! Dingue. Merci, c'est super sympa ça ! Surtout que j'ai certes un peu contribué à un moment, mais c'était il y a longtemps !
ça fonctionne aussi chez 1&1 !!! Je n'avais jamais réussi à corriger cet ennuyeux problème.
Ajouter la ligne suivante :
ini_set('session.save_path', $_SERVER['DOCUMENT_ROOT'].'/../sessions');
J'ai ainsi corrigé le problème sur Shaarli et SnippetVamp et je vais aussi tester pour Leed. Par contre, je ne comprends pas pourquoi cela pose problèmes sur ces applications, et pas sur celles que j'ai développé moi même (dont la dernière en m'inspirant de Shaarli)...
La librairie PGP de PHP.
A lire tranquilement :-)
Ahah ! Excellent ! C'est vrai que bon... des regex pour du HTML, ce n'est peut-être pas la meilleure solution...
J'ai installé la béta 1 de SnippetVamp : http://www.warriordudimanche.net/article157/snippetvamp-beta-1-0 A voir comment je m'en sers.
En tout cas, chapeau WarriorDuDimanche ! Léger, facile à prendre en main, yeah !
Un bon use case d'amélioration d'un composant PHP existant et de la manière de pusher la modification (et de l'utiliser). Si ça fonctionne avec PHP/Composer, Git et Github, cela reste applicable à d'autres technologies.
Dernière itération d'une boucle avec le moteur de template RainTPL :
{loop="list"}
{if="$counter==count($list)-1"}
This is the last element
{/if}
{/loop}
Super ! Mais pourquoi "count($list)" au lieu de "$list|count" ???
J'avais besoin de faire de l'encodage / décodage base 64 en Javascript, et c'est finalement dans la bibliothèque php.js que j'ai trouvé ça ! Je n'y avais jamais songé, mais cette bibliothèque permet finalement de trouver tout un tas d'algo qui peuvent manger dans Javascript.
Composer, c'est le pied. Maintenant, il va falloir apprendre à utiliser quelques outils PHP :-)
Pour avoir pas mal contribuer à la communauté française de ce système de forum, il est plutôt conseillé d'utiliser le fork de PunBB : FluxBB (http://fluxbb.org/). Un jour le concepteur de PunBB a plus ou moins lâché l'équipe de dev en vendant le bébé à une entreprise. Depuis, les plus gros contributeurs ont forké et pas mal de gens ont suivi. La communauté française en tout cas (http://fluxbb.fr/). Les mises à jour sont plus suivies, et suivant d'avantage la vision de la communauté.
L'histoire classique d'un projet libre quoi ;-)
Ceci est super génial ! Merci à Idleman de partager cette trouvaille ;-) Installé chez moi, rapidement testé et déjà approuvé !!
C'est souvent quelque chose qui m'a posé des problèmes... Donc je me vois bien utiliser ce genre de solution à l'avenir.
Dingue, je suis lu :D
J'ai re-testé le script de Timo et c'est impeccable en effet ! Enfin, sur les tests que j'ai effectué. Bien joué encore !
Ah oui les regex. Toujours galère en particulier pour parser du HTML; Je me demande si Le Hollandais Volant nous montrera un exemple d'utilisation.
Personnellement, j'ai testé son script en utilisant le code de son article comme exemple (éhéh !). J'ai quelques balises de titre qui restent, mais c'est peut-être fait exprès... ?
<div id="main">
<section id="midle">
<div id="posts">
<article class="itembloc link" id="20130322003640">
<hgroup class="post-hgr links-hgr">
<h2 class="link-titre"><a href="index.php?mode=links&id=20130322003640">#5292</a> - <a href="http://lehollandaisvolant.net/?mode=links&id=20130322003640">Note : regex pour matcher les balises HTML et les attributs</a></h2>
<h3 class="link-date">Aujourd’hui à 00:36:40</h3>
</hgroup>
<div class="post-cnt links-cnt">
"#<\s*/?(?:[a-zA-Z-]+)(?: (?:\s*\w+=(['\"])(?:(?!\g{1}).|(?:(?<=\\\)\g{1}))+\g{1})*(?:\s*\w*\s*))?/?>#S"<br />
<br />
(en php, en gros : utiliser dans un preg_replace() et les remplacer par une chaine vide agira comme striptags().)<br />
<br />
(oui, les attributs peuvent contenir un « > » ou un « < », par exemple en JS : « 2<=4 », et c’est chiant).<br />
<br />
Un peu de doc complémtentaire :<br />
<a href="http://www.regular-expressions.info/refadv.html">http://www.regular-expressions.info/refadv.html</a><br />
<a href="http://stackoverflow.com/questions/6050427/regex-problem-with-backreference-in-pattern-with-preg-match-all/6051114#6051114">http://stackoverflow.com/questions/6050427/regex-problem-with-backreference-in-pattern-with-preg-match-all/6051114#6051114</a> (commentaire intéressant)<br />
<a href="http://blog.lilhoot.eu/regex-et-preg-assertions-avant-arriere-lookahead-lookbehind-assertions-recuperer-les-chaines,a3">http://blog.lilhoot.eu/regex-et-preg-assertions-avant-arriere-lookahead-lookbehind-assertions-recuperer-les-chaines,a3</a> (en français, très intéressant et très clair)
</div>
</article>
</div> <!-- end postS -->
Devient :
<h2 class="link-titre"> #5292 - Note : regex pour matcher les balises HTML et les attributs </h2>
<h3 class="link-date">Aujourd’hui à 00:36:40</h3>
"#<\s*/?(?:[a-zA-Z-]+)(?: (?:\s*\w+=(['\"])(?:(?!\g{1}).|(?:(?<=\\\)\g{1}))+\g{1})*(?:\s*\w*\s*))?/?>#S"
(en php, en gros : utiliser dans un preg_replace() et les remplacer par une chaine vide agira comme striptags().)
(oui, les attributs peuvent contenir un « > » ou un « < », par exemple en JS : « 2<=4 », et c’est chiant).
Un peu de doc complémtentaire :
http://www.regular-expressions.info/refadv.html
http://stackoverflow.com/questions/6050427/regex-problem-with-backreference-in-pattern-with-preg-match-all/6051114#6051114 (commentaire intéressant)
http://blog.lilhoot.eu/regex-et-preg-assertions-avant-arriere-lookahead-lookbehind-assertions-recuperer-les-chaines,a3 (en français, très intéressant et très clair)
<!-- end postS -->
Ah oui, il faut reconnaître que c'est stylé ! ça semble être un très bon travail de Weirblog ! Certes bon un petit projet frenchy, une bonne vieille méthode "plurialize" est sûrement plus performante, mais bon, hein !
Allez hop quelques adaptations pour Leed.
En effet, ce parser de flux RSS en PHP est à tester, parce que SimplePie commence à dater et je ne comprends pas pourquoi il est si gros / lourd / complexe. Et encore, il existait une autre bibliothèque avant SimplePie (
Pratique pour rester anonyme mais identifiable
Peut-etre utile sur de petirs projets PHP.
Le dernier article de la série au sujet de la sécurisation des mots de passe !
Et si on n'a pas MySQL? Il faudrait que je check les bonnes pratiques à ce sujet.
Un formulaire à partir d'un fichier de configuration. Ce n'est pas encore ce que je veux, mais c'est bon pour l'inspiration !
Silex - The PHP micro-framework based on Symfony2 Components
Free and open source webmail software for the masses, written in PHP
Doctrine2 et les fixtures dans Symfony2
All Open Source Symfony 2 Bundles sorted by trend