Comme vous l'avez sans doute remarqué, je n'ai pas trop donné de nouvelles sur la nouvelle version de KrISS feed. J'avais prévu un grand bouleversement du code pour le rendre encore plus flexible et chouette avant de sortir la version 8. La conséquence, c'est qu'il n'y a pas beaucoup de nouvelles fonctionnalités par rapport aux dernières nouvelles. Avec les vacances, la rentrée et le boulot, je suis pas mal pris en ce moment et je ne pourrai donc pas sortir la version 8 telle que je l'avais imaginée. Je vais donc la sortir moins aboutie que ce j'avais prévu et je repousserai la mise à jour du code reformaté à la version 9. Je vais donc tout faire pour sortir cette version 8 mi-septembre !
En attendant je voulais vous présenter certaines modifications plus ou moins récentes que j'ai intégrées pour converger vers un code encore plus chouette :-)
Session.php
Tout d'abord j'ai légèrement modifié ma classe Session. Celle que je vous avais présentée lors de mon tout premier article : http://tontof.net/?2012/04/18/19/00/00-joyeux-anniversaire
J'ai viré le singleton que je trouvais inutile et ajouté un test pour le brute force basé sur les fonctions de Sebsauvage dans Shaarli.
Vous trouverez plus de détails sur la page dédiée : http://tontof.net/kriss/php5/session
Rss.php
Ensuite, je me suis dit que ce serait une bonne chose d'utiliser une bibliothèque dédiée pour les flux RSS. J'ai cherché du côté de syndexport, picoFeed et lastRss (je n'ai pas considéré les poids lourds du style simplePie) mais j'avais toujours des reproches : fait trop de choses à mon goût, utilise des dépendances pas nécessaires, ne gère pas tous les types de format comme rdf, n'est pas suffisamment paramétrable, etc.
Je tiens à signaler qu'il y a lastRss qui m'a beaucoup intéressé car il fonctionne avec PHP4 et ne nécessite même pas DOMDocument contrairement à tout ce qui existe. Le problème c'est que ça nécessitait trop de modifications pour que je l'intègre facilement à KrISS feed. En tout cas je le garde sous le coude parce que je pense que ça peut être une bonne chose pour éventuellement gérer les flux XML invalides. J'étudierai ça quand les plugins seront fonctionnels.
Maintenant on peut compter sur une nouvelle alternative : http://tontof.net/kriss/php5/rss
Elle ne fait rien d'autres que gérer des flux XML à l'aide de DOMDocument. Son but n'est pas de gérer le téléchargement d'un flux, la gestion du cache ou autres fantaisies. En gros, on a un flux RSS/atom sous forme de chaîne de caractères et on veut récupérer des infos sous la forme d'un tableau.
Vous pouvez tester avec une petite démo ici : http://tontof.net/kriss/php5/rss/#demo
Je suis assez content du résultat car je la trouve extrêmement fonctionnelle et flexible : http://tontof.net/kriss/php5/rss/#options
Elle permet des choses que je n'utilise pas encore dans KrISS feed comme vous pouvez le voir sur la démo avancée : http://tontof.net/kriss/php5/rss/#advanced-demo
KrISS php5
Pour regrouper tout ça, j'ai donc créer KrISS php5 qui contiendra plein de choses utiles en PHP pour mes différents projets présents et à venir !
KrISS php5 ne contient que des classes statiques sans vraiment de dépendance. En ce moment je travaille beaucoup avec Symfony et l'injection de dépendances est quelque chose que je trouve vraiment chouette. Je n'arrive pas à savoir si c'est une bonne chose de faire comme je fais avec mes classes statiques mais pour des projets comme les miens (KrISS feed, blog, etc.), l'avantage de l'injection de dépendances reste relativement limité même si elle permettrait d'avoir un code encore plus propre et flexible. En fait, le côté statique est sensé être plus efficace (en pratique, ça dépend de la version de php mais la tendance est à l'amélioration au cours du temps). Mais en gros est-ce que vous pensez que l'injection de dépendances c'est KISS :-)
Si des spécialistes PHP ont des conseils/suggestions, je suis tout ouïe !
En attendant encore un peu de patience pour la version 8, mais elle arrive !
Comments
1 - @ - totop
Merci pour ce travail !
samedi 31 août 2013 - 12:31
2 - @ - tontof
Les messages d'erreur sont maintenant plus explicites par rapport aux flux invalides. Souvent c'est à cause d'une erreur de timeout que j'ai fixé à 4 secondes et pas vraiment de flux.
samedi 31 août 2013 - 13:04
3 - @ - bg62
samedi 31 août 2013 - 19:05
4 - @ - Tontof
samedi 31 août 2013 - 19:18
5 - @ - cid
Merci !
samedi 31 août 2013 - 20:11
6 - @ - totopcid
samedi 31 août 2013 - 20:12
7 - @ - Anonymous
Merci pour ce bon programme ! Pour info, à propos de l'Issue #264 (Firefox on Android with portrait orientation: impossible to scroll with some styles), il suffit de supprimer les lignes 513 à 515 de greader.css pour corriger le bug :
@media screen and (max-width: 768px) {
html, body {height: 100%;
}
Je ne suis pas expert en CSS, je ne peux pas dire pourquoi.
samedi 31 août 2013 - 22:40
8 - @ - tontof
L'idéal est d'installer les certificats :
curl_setopt($ch, CURLOPT_CAINFO, "/etc/cacert.pem");
Sinon tu peux indiquer que tu ne veux pas considérer les certificats :
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
Par contre il te faudra modifier le fichier index.php vers ces lignes en ajoutant celle du dessus en fonction de ton choix :
curl_setopt($ch, CURLOPT_ENCODING, '');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, true);
À terme ce genre de modifications pourra se faire à l'aide des plugins.
Sinon tu dois pouvoir ajouter le lien shaarli sans le https pour t'éviter de modifier le code ?
@Anonymous : Merci j'ai transmis :-)
samedi 31 août 2013 - 22:51
9 - @ - matttbe
@Tontof: Merci pour ces avancées! :)
samedi 31 août 2013 - 22:55
10 - @ - TitaX
Merci beaucoup pour le partage.
Je suis impatient de mettre à jour :-)
dimanche 01 septembre 2013 - 00:55
11 - @ - cid
dimanche 01 septembre 2013 - 09:07
12 - @ - fpp
Une fois résolus mes problèmes d'hébergement et de sessions, KF est devenu mon lecteur RSS au quotidien, sur toutes mes machines (une demi douzaine :-).
Il a remplacé notamment Feedly, qui était original au départ mais a pris la grosse tête depuis...
Le seul petit souci qui me reste c'est que sur la tablette 7" il ne bascule pas en mode mobile comme sur le smartphone, et sur cet écran l'interface "bureau" est inadaptée (taille des caractères et des boutons).
Impatient de voir la suite !
mardi 03 septembre 2013 - 21:08
13 - @ - Tontof
Pour l'adaptation tablette, il doit juste falloir changer le css. Faudrait que je regarde le nouveau bootstrap 3 pour voir s'ils ont changé des valeurs.
mardi 03 septembre 2013 - 22:08
14 - @ - Bobinours
et lorsqu'on saisit un nombre trop grand dans "Max items" (exemple: 51), on obtient cette erreur.
Je ne peux m'empêcher de penser que ce n'est pas une feature mais bien un bug :)
Désolé, je n'ai pas eu le courage de vérifier le code et proposer un patch, il est tard, et je ne sais pas non plus si c'est ici le meilleur endroit pour reporter des bugs.
Bonne continuation.
PS: j'ai aussi eu ces erreurs en voulant poster mon commentaire via Firefox...
Notice: Undefined index: captcha in /homez.527/tontof/www/index.php on line 2304
Notice: Undefined index: captcha in /homez.527/tontof/www/index.php on line 2312
mercredi 04 septembre 2013 - 23:02
15 - @ - Tontof
Pour le problème sous Firefox, est-ce que tu as désactivé les cookies ? Parce qu'on dirait que c'est un problème de session et je vois pas trop pourquoi.
jeudi 05 septembre 2013 - 07:18
16 - @ - Bobinours
Mais dans l'absolue, la notice ne devrait pas apparaître et un joli message d'information devrait la remplacer "Vous devez activer les cookies... Blabla..." (m'enfin, je dis ça, je dis rien).
mardi 10 septembre 2013 - 20:48
17 - @ - Tontof
J'ai ouvert une issue sur github pour m'en souvenir : https://github.com/tontof/kriss_blog/issues/5
mardi 10 septembre 2013 - 22:10