Luxbum.net - Blog d'information

Aller au contenu | Aller au menu | Aller à la recherche

mercredi, mai 30 2007

Stockage des commentaires, sqlite ?

J'aimerais faire un point sur les commentaires. Dans la version 0.5 j'ai introduis la possibilité de laisser des commentaires sur les photos car la demande était très forte. J'avais eu un problème à l'époque, problème que j'ai toujours plus ou moins aujourd'hui : comment stocker efficacement des commentaires sans base de données ?

  • fichiers textes : un peu galère, il faut gérer correctement les retours à la ligne, définir un format de fichier correct.
  • sérialisation d'objet : très facile à implémenter, mais très peu souple : si la structure de l'objet sérialisé change, il devient difficile de récupérer le contenu du fichier sérialisé. Je ne pense pas non plus que la sérialisation soit un vrai moyen de persistance.
  • fichiers xml : usine à gaz en php, surtout sans simpleXml de php5
  • utiliser une base de données

Les trois méthodes posent la problématique suivante : faut-il utiliser un seul fichier de stockage, ou un par galerie ? Faire une zone d'administration correcte avec un fichier par galerie c'est difficile rapidement et simplement du fait que l'information n'est pas centralisée.

La version stable actuelle de luxbum utilise une base de données MySQL. Cela pose des problèmes continus car c'est radicalement plus compliqué que le reste de luxbum et que je n'ai pas fait une implémentation correcte. J'avais voulu rester dans l'idée de simplifier la vie de l'utilisateur, la création de la table MySQL est censée être automatique, mais ça ne fonctionne pas correctement ; il faut également au préalable disposer d'une base de données MySQL. En développant la future version j'ai découvert la sérialisation des objets, j'ai donc supprimer la base MySQL et remplacé par un fichier sérialisé dans chacune des galeries. Seulement lors de mes premiers travaux sur la refonte du manager je me suis heurté au problème de l'administration centralisées des commentaires rendue difficile par l'éclatement des commentaires dans chacun des dossiers des galeries.

Depuis j'ai transformé luxbum en php5, je me rend compte que sqlite pourrait reprendre le meilleur de chacun des mondes. Je n'ai pas encore décidé si je vais utiliser sqlite pour le stockage des commentaires, mais il y a de très fortes chances. Pour ne pas pénaliser les personnes disposant d'un hébergement sans sqlite, il faut que je réfléchisse à la possibilité de supporter la sérialisation et sqlite comme deux supports de stockage des commentaires.

lundi, mai 28 2007

Intégrations des sélections

Je viens de finir l'intégration des sélections. Les sélections permettent de faire une sélection de fichiers (images ou vidéo flash), puis de consulter cette sélection. Par rapport aux versions précédentes de luxbum, j'ai ajouté quelques nouveautés que voici :

Sur les pages de consultation d'une galerie ou d'un fichier, on peut :

  • ajouter un fichier (image ou vidéo flash),
  • supprimer un fichier,
  • ajouter une galerie entière,
  • supprimer une galerie entière.

Sur la page d'index on trouve l'affichage d'une galerie "Ma sélection" sur laquelle on peut effectuer les actions suivantes :

  • consulter la sélection,
  • supprimer la sélection,
  • télécharger la sélection.

Bon, j'ai encore 2-3 bricoles à rectifier, mais rien de majeur :)

samedi, mai 26 2007

Passage en PHP 5 et intégration de Pluf

J'ai très longtemps hésité avant de faire le grand pas, mais c'est désormais fait, j'ai passé luxbum en php5.

Les raisons de ce choix sont multiples. La principale est la possibilité de pouvoir intégrer une partie d'un framework écrit en php 5 que j'aprécie particulièrement, j'ai nommé Pluf, pluf sur le site de l'auteur. Pluf intègre une version modifiée et simplifiée du moteur de template de Jelix, Pluf possède un controlleur très facile d'accès.

L'intégration de pluf a permis plusieurs choses :

  • Avoir un système de templates correct. En effet, le système de pseudos templates que j'ai écrit possède beaucoup de limitations. Pour expliquer brièvement, luxbum possède des classes de bases représentant une galerie, un index, une image, etc... Pour pouvoir les représenter dans une page web, j'ai écrit une surcouche à chacune des méthodes que je souhaite disponibles à l'affichage. Cela m'a représenté un travail important, mais ça a fonctionné correctement jusqu'à ce que je me rende compte de mes erreurs. Je m'en suis rendu compte lors de l'intégration des vidéos, et plus particulièrement lors de l'intégration des sélections : j'ai été incapable d'afficher la sélection courante sans devoir passer une journée à rajouter du code dégueulasse partout.
  • Avoir un système de vues correct.
  • La réécriture correcte de toute la présentation et des deux templates de luxbum en une journée seulement. En comparaison, l'écriture de mon pseudo système de templates m'a prit quelques semaines en travaillant le week-end et quelques heures le soir...

Le passage au php 5 me permet également les choses suivantes :

  • Avoir un modèle objet correct et arrêter de bidouiller avec la couche objet trop simpliste de php 4.
  • Avoir une gestion d'erreur très fine : n'importe quelle erreur d'accès aux galeries est interceptée et une page d'erreur spécifique est affichée.

dimanche, mai 13 2007

Vidéos privées et sélection

Dans le billet précédent concernant l'intégration des vidéos, j'ai parlé de mes difficultés à rendre complètement privée une vidéo. J'ai finalement trouvé la solution à mon problème.

J'ai également avancé sur la réintégration des sélections : il ne me reste plus qu'à les afficher.

jeudi, mai 10 2007

Vidéos flash dans luxbum

A plusieurs reprises, on m'a fait remarquer qu'il serait intéressant de gérer les vidéos filmées avec les appareils photos numériques en tant que contenu multimédia. L'idée est intéressante, il faut faire un panel des solutions possibles :

  1. téléchargement des vidéos avec affichage d'une image prédéfinie représentant une vidéo,
  2. affichage en live sur des vidéos.

La solution numéro une ne me convient pas car elle ne respecte pas l'esprit de luxbum qui est : visualisation directe des photos en tout simplicité. Je me suis donc orienté vers la solution numéro deux, mais les problèmatiques liées à l'intégration de vidéos dans une page web sont nombreuses :

  • les appareils photos ne sont pas uniformes sur le format de la vidéo : quicktime, avi, compressé ou non, avec du son ou non ; le panel est très large.
  • il faut pouvoir incorporer un lecteur vidéo dans une page, et que ce lecteur vidéo fonctionne sur tous les navigateurs connus et qu'il soit multiplateforme.
  • en supposant qu'un tel lecteur existe, le visiteur de la galerie devra disposer de ce lecteur ainsi que de tous les codecs nécessaires à la lecture des vidéos.

La principale difficulté est donc d'uniformiser cet ensemble vaseux et de choisir une solution valable. Cette solution valable n'existe pas. J'ai choisit la moins pire : support des vidéos flash à la mode youtube.

Voici ce que j'ai fait pour l'instant :

  • une galerie détecte maintenant les vidéos flash portant l'extension .flv, les photos et les vidéos peuvent donc sans problèmes être mélangées,
  • sur la page d'index des galeries, il est possible d'afficher le nombre de vidéos ainsi que leur taille,
  • si un dossier ne contient que des vidéos, la page d'accueil affiche une icône "dossier vidéo",
  • visualisation de l'intégralité d'une vidéo flv, j'ai pour celà utilisé le lecteur flash FlowPlayer,
  • commentaires sur les vidéos.

J'ai par contre une difficulté majeure : je ne peux pas rendre totalement privée une vidéo, même si elle est contenue dans une galerie privée... j'espère résoudre le problème, mais je n'y crois pas trop.

Il me manque seulement la gestion des miniatures d'une vidéo. J'ai deux possibilités et je ne sais pas encore comment je vais faire :

  1. extraire une image du flv et l'afficher,
  2. en même temps que l'envoi d'une vidéo dans le manager, envoyer également une miniature.

Pour la première possibilité, je n'ai pas encore trouvé comment faire, mais je suis sur que c'est faisable. La deuxième solution ne me plait pas, mais c'est une solution de secours si je n'arrive pas à faire la première.

L'intégration est comme toujours, consultable sur ma galerie perso :

- page 1 de 2