Publié par kazhar
Ven 16 mai 2008 11:09:00 GMT
Il peut arriver que vous cherchiez à concevoir une application web et que de par le principe de cette conception, vous ayez besoin de toujours charger le même fichier quelque soit l’url appellée. Sauf si le fichier existe déjà (le cas d’une image par exemple).
La solution qui semblerait la plus simple au premier abord est de trifouiller avec ErrorDocument dans le .htaccess
ErrorDocument 404 /index.php
Ca fonctionne puisque à partir du moment ou votre fichier n’existe pas, vous êtes redirigé vers votre index.php. Vous n’avez alors plus qu’à afficher votre contenu. Et surtout ne pas oublier de forcer le code HTTP 200 au lieu de 404. Sans quoi votre site ne sera jamais indexé par les moteurs de recherche (et vous êtes en contradiction avec la norme du protocole HTTP). Cette solution est intéressante notemment si vous n’avez pas accès à l’URL rewriting.
Une autre, que je trouve plus propre, consiste à utiliser l’URL rewriting.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
Qu’est-ce que c’est que toutes ces lignes ?
RewriteEngine On
Ici, on se contente d’activer l’url rewriting.
RewriteCond %{REQUEST_FILENAME} !-d
Si l’url existe et est un répertoire, on ignore les lignes suivantes
RewriteCond %{REQUEST_FILENAME} !-f
Si l’url existe et est un fichier, on ignore la ligne suivante
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
Et donc, si ce n’est ni un fichier, ni un répertoire, on redirige l’url vers index.php. Ici, on passe également l’URL de la page en GET.
Cette astuce est utilisée dans divers frameworks. Notemment CakePHP et Ruby on Rails.
Entre temps

Et hier soir


Publié sous Développement | Mots clés cakephp, errordocument, htaccess, on, rails, rewrite, ruby | 4 commentaires
Publié par kazhar
Mer 14 mai 2008 09:42:00 GMT
J’avais promi un billet technique. Alors en attendant celui qui expliquera comment je suis en train de revoir mon environnement de développement chez moi, voici un petit truc sympa.
JavaScript permet de parser des documents XML assez facilement. De la même manière que vous le faites lorsque vous récupérez les éléments de la page (oui parce que le xHTML c’est une extension de XML pour ceux qui le sauraient pas). Cependant pour pouvoir parser ces documents aisément en utilisant des méthodes telles que childNodes, getElementById etc, il vous faut un object du type XML. Vous ne pouvez parser de cette manière une chaine de caractères.
Il peut cependant vous arrivez d’avoir besoin justement de parser un document XML que vous récupérez comme une chaine de caractères. Heureusement, la transformation d’une chaine de caractère en objet XML est faisable très facilement. Petit exemple.
var xmlobject = (new DOMParser()).parseFromString("<root><item>monElement</item></root>", "text/xml")
En y passant ces paramètres, votre chaine de caractères devient un object XML qu’il est possible de parcourir "comme d’habitude".
Pendant ce temps là, y’en a un qui s’embête pas et passe sa journée prélassé dans un pouf !

Publié sous Développement | Mots clés javascript, xml | 4 commentaires
Publié par kazhar
Lun 12 mai 2008 21:47:00 GMT
Le design de ce blog commencait à se faire vieillissant non ? Après près de trois ans (quand même. J’aime pas trop suivre les tendances des "je change de thème tous les 4 matins". Mais là ça commencait à devenir long) de bons et loyaux services, je viens de changer de thème.
Et de plateforme en même temps. Passant ainsi d’un blog "roulé sous les aisselles" avec CakePHP à quelque chose de (un peu plus) mieux, développé en Ruby. J’ai nommé Typo. Merci à Frédéric pour l’aide qu’il m’a apporté avec les (quelques) problèmes que j’ai depuis deux semaines pour tenter de maitriser la bête ;)
De nombreuses choses sont encore à améliorer ici. Mais ça va venir avec le temps hein. On ne change pas de plateforme tous les jours.
N’hésitez donc pas à me signaler les divers bugs que vous rencontrerez.
Notez que les URL des billets ont changé. Je vais faire des redirections des anciennes vers les nouvelles. Mais laissez moi 24h (ou un petit peu plus).
Publié sous Général | Mots clés blog, cakephp, kazhar, typo, typosphere | 4 commentaires
Publié par kazhar
Jeu 08 mai 2008 20:25:00 GMT
Bah ouais quoi ! Vous connaissez le groupe Gold (Emile et Images était mon groupe préféré au lycée. J’écoute moins aujourd’hui. Mais j’aime toujours autant ;) ). Et dmoz n’est pas un groupe musical.
Plus sérieusement. Notre cher staffer (technicien payé par AOL et en charge du projet ODP) bbqgrant a posté aujourd’hui un billet sur le blog officiel dmozien intitulé "DMOZ Is Like Gold".
Opinions et démontage en bonne et due forme.
bbgrant cite un article sur un site que je ne nommerais et vers lequel je ne ferai pas de lien.
Ce site dit :
Getting a site into DMOZ is like Gold.
Google loves links from DMOZ and your site will reap the benefits.
The big catch however is actually getting your site into the directory in the first place.
Find the perfect category for your site and check to see if it has an editor. If you see a link "Volunteer to edit this category" try and find another relevant location.
Pages without active editors take much longer to get listed into.
Once you find the perfect directory submit your site every 4-6 months until listed.
If you are lucky you will get in eventually.
Alors, premièrement, si vous regardez sur le billet, vous verrez que notre cher staffer a rajouté toute la partie sur le lien dmozien qui vaut de l’or. Sans cette remarque, la phrase est beaucoup moins positive pour l’annuaire.
Notre cher staffer cherche donc à déformer ce que le webmaster a dit en remontant l’image de dmoz. Vu ce qu’il ajoute, on ne peut vraiment pas considérer qu’il s’agisse d’une citation. Le fond est totalement modifié.
Mais … Que vois-je également ? Il dit "si il n’y a aucun éditeur dans la catégorie, choisissez une autre catégorie pour que votre site soit listé plus rapidement".
Horreur et damnation ! Ceci est la dernière chose à faire. Si vous suggérez votre site dans une catégorie appropriée, celui-ci sera de toute façon déplacé par l’éditeur vers la catégorie appropriée.
Par ailleurs, le fait qu’une catégorie n’ait pas d’éditeur ne signifie pas que personne n’y passe. Tous les éditeurs peuvent éditer dans les catégories où ils sont marqués comme éditeur. Mais également toutes ses sous-catégories.
Par ailleurs, près de 300 éditeurs ont les droits nécessaires pour éditer dans toutes les sections de l’annuaire.
Ne pas soumettre votre site dans la bonne catégorie peut multiplier par deux le temps d’attente de votre site. Faites donc bien attention à l’endroit où vous suggérez votre site.
Enfin notre cher staffeur a vraissemblablement posté son article beaucoup trop rapidement. En effet, celui-ci n’est qu’une copie d’un autre article publié 10 jours plus tôt ici.
Si les seuls éditeurs rémunérés pour travailler sur l’ODP ne respectent pas nos directives d’éditions et mettent en avant des sites n’ayant pas du contenu original, où allons nous ?
De nombreuses choses m’ont déçu à l’ODP depuis un an. Celle-ci serait-il la goutte d’eau ? Je me donne le week-end pour y réflechir et presser où non le gros bouton rouge.
P.S. : promis, le prochain article sera technique.
Publié sous Dmoz | 24 commentaires
Publié par kazhar
Mer 07 mai 2008 14:31:04 GMT

Depuis quelques jours, Google Reader propose une fonctionnalité on ne peut plus intéressante. :-)
En plus de pouvoir ajouter des notes aux éléments partagés, chacun des utilisateurs peut maintenant partager … des url, via un bookmarklet.
Je me suis empressé d’ajouter ce bookmarklet. Et voulant partager une image un peu plus tôt, je me suis retrouvé avec l’erreur de l’image ci-dessus (et ci-dessous).

Je n’ai pas le temps/motivation de corriger cela maintenant. Mais j’avais envie de vous le faire partager (et puis il parait que des Googlers lisent mon blog alors bon …)
FYI, voici l’image que j’ai voulu partager.
Publié sous Général | 1 commentaire
Publié par kazhar
Mar 06 mai 2008 18:09:54 GMT
Pour ceux qui ne le sauraient pas, j’étais présent au premier Wordcamp parisien samedi dernier.
M’enfin vous devez le savoir puisque j’ai déjà posté en direct.
Voici tout de même un petit compte rendu.
- Session sur les extensions
Cette première session a été principalement sur le sujet "quelles sont les extensions les plus utiles. Et comment trouver l’extension la plus appropriée à mes besoins".
Cette discussion a débouché notemment sur un topic sur wordpress-fr.
Le second atelier traitait de Open-ID et son implémentation dans Wordpress, soit pour permettre aux visiteurs de se connecter avec leur compte Open-ID pour poster des commentaires où à l’administration.
Soit pour utiliser son compte wordpress comme identifiant Open-ID.
Pour la première problématique, le plugin qui est ressorti est WP-OpenID. Pour la seconde, c’est WP-Yadis.
Lors du troisième atelier, Amaury nous a fait une présentation de Wordpress MU pour lequel il est contributeur.
Wordpress MU permet de créer une plateforme multiblogs basée sur Wordpress.
Il est notemment utilisé sur wordpress.org et par lemonde.fr.
- Session technique sur la création d’extensions
Lors de la première session sur les extensions, il s’est avéré que plusieurs personnes cherchaient également à comprendre comment créer leur propre extension.
Cela tombait bien, j’avais justement préparé un atelier à ce sujet ;-)
Vous pouvez donc voir mes slides à ce propos sur le site de la meilleure agence web lyonnaise.
Et evidemment comme j’ai profité de mon nouvel objectif, il y a plein de photos ;-)
Publié sous Général | 2 commentaires
Publié par kazhar
Sam 03 mai 2008 09:45:19 GMT
Comme déjà annoncé, je suis aujourd’hui au premier BarCamp Wordpress Paris.
Les discussions n’ont pas officiellement commencé. Mais cela ne saurait tarder vu que l’on entends les tests micro.
Mais l’ambiance est déjà très geek et on a déjà tous commencé à causer.
Oups ! Ca commence ! ;-)
Publié sous Général | 4 commentaires
Publié par kazhar
Lun 28 avr 2008 19:50:18 GMT
Je serais de vendredi à dimanche sur Paris pour le premier Wordcamp Parisien.
Vous pouvez, si vous êtes intéressé, toujours vous inscrire et venir assister à des conférences sur le moteur de blog qui fait sensation.
Puis c’est la bonne occasion pour rencontrer les personnalités actives de la communauté francophone.
Et puis comme Thanh et moi venons de loin, on arrive avant et on repars après. Vous pouvez donc, si vous le désirez, venir manger avec nous (et plein d’autres gens. Pas de tête à tête aux chandelles) le vendredi soir où le dimanche midi.
A ce week-end ! ;-)
Publié sous Général | 1 commentaire
Publié par kazhar
Lun 28 avr 2008 10:12:00 GMT
Pour ceux qui n’étaient pas au courant, j’ai eu 22 ans vendredi dernier.
Et dites pas que je vous l’ai pas dit, c’est pas vrai. Suffit de faire ctrl + A sur l’article de vendredi. Et c’est marqué à la fin.
M’enfin on s’en fou ;-)
Ce qui est intéressant, c’est ce que ma môman m’a offert.
Un magnifique sac Kata R-103.
Et je me suis moi même offert l’objectif macro Tamron 90mm.
Ca me fait un super gros engin maintenant ! ;-)
Publié sous Général | Mots clés 350d, anniversaire, appareil, cadeau, canon, photo, tamron | 10 commentaires
Publié par kazhar
Sam 26 avr 2008 15:01:55 GMT
J’ai obtenu, la semaine dernière, une invitation pour la version béta de Google AppEngine. Premiers avis et impressions.
"Whoot ! I know Python !" dit Neo en enlevant son casque
Je ne connaissait absolument pas Python, qui est le seul langage actuellement disponible avec AppEngine.
Alors l’une des premières choses que j’ai fait est de commander le livre Python de chez Eyrolles. Le titre de ce paragraphe est la première phrase du livre.
Evidemment, le livre n’est pas constitué que de citations de geek rigolotes.
Bien au contraire, il détaille extrêmement bien toutes les possibilités offertes par le langage. Malheureusement cependant, il n’aborde absolument pas le développement web avec Django par exemple.
Celà n’est cependant pas spécialement génant pour toute personne qui a déjà une bonne expérience dans le développement avec au moins un autre langage (PHP avec les objets par exemple).
Les trucs qu’ils sont trop bien
Revenons un peu dans le sujet de Google AppEngine. Il s’agit d’une plateforme offrant l’hébergement d’applications web développées en Python.
D’autres langages pourront faire leur apparition dans le futur. Mais si vous souhaitez commencer à développer sur cette plateform, dès maintenant, il faudra le faire avec ce langage.
Voici donc l’avantage principal de Google AppEngine. Le fait que l’on puisse héberger rapidement une application web, sans se soucier de contraintes serveur. Où presque.
Les trucs un peu moins bien
Oui car forcément, comme toute offre gratuite (où payante d’ailleurs), il y a des limitations techniques.
Celles-ci sont disponibles sur le site d’AppEngine.
De base, cette plateforme ne sera donc vraiment accessible que aux petites applications, nécessitant peu de ressources système.
J’ai voulu par exemple intégrer les données du RDF dmoz afin d’exporter certains de mes outils dédiés aux éditeurs là-bas. Malheureusement, l’importation de telles données est totalement inenvisageable à cause des limitations du système au niveau de l’ouverture et du téléchargement de fichiers.
C’est d’ailleurs pour cette raison que je n’ai aucune application à vous présenter bien que j’ai déjà commencé à développer. J’ai une seconde application en tête. Mais il faudra attendre un peu ;-)
Google parle de possibilités payantes d’évolution du service afin de pouvoir passer outre ces limitations. Mais elles ne sont pas encore implémentées et nous n’avons aucune idée de la manière dont elles le seront.
L’utilisation d’un compte Google
Un truc qui m’a paru intéressant au départ, c’est le fait que l’utilisateur puisse s’identifier avec con compe Google.
Intéressant afin de s’épargner le développement d’une interface de connexion utilisateur.
Mais lorsque l’on regarde la documentation, on se rends compte que cette identification est difficilement utilisable à l’heure actuelle.
En effet, aucun identifiant unique n’est fourni pour chaque utilisateur. Seul l’email de celui-ci est présent. Que se passe-t-il donc lorsqu’un utilisateur change son email ?
La documentation le dit clairement : vous l’avez dans le baba. L’utilisateur a changé son email, vous ne connaissez que celà. Vous avez donc perdu la relation entre l’email et l’utilisateur.
Génant et limite légal lors de l’implémentation d’une newsletter sur votre service par exemple.
BigTable, un pseudo SGBDR
Bah oui quand même, il y a un système de gestion de bases de données. Déjà que ce billet n’est pas très positif pour l’outil. Dans le cas contraire, cela aurait été un démontage total ;-)
Le R de SGBD est à mettre car on peut mettre en relation deux tables. Un bon point pour l’outil.
Cependant, seuls les SELECT sont abordables en SQL pur. Aucune possibilité de faire des INSERT, UPDATE où DELETE en SQL pur. Il faut impérativement passer par les méthodes de l’API.
Je n’ai ainsi pas encore trouvé comment faire l’équivalent d’un TRUNCATE (suppression de toutes les entrées d’une table) autrement que … manuellement dans l’interface (et on ne peux supprimer que jusqu’à une centaine d’uplets à la fois. Génant).
Et encore une limitation, au niveau du SQL pur. Chacune de ces limitations possède un chemin détourné pour arriver à la même chose. Cependant ce chemin détourné n’épargnera par les ressources systèmes.
- Pas de ORDER BY ran(). Chemin raccourci : récupérer toutes les données. Puis voir combien il y en a, générer un nombre aléatoire et récupérer l’uplet relatif à ce numéro.
Pas d’optimisation de la RAM de la machine puisque vous récupérez toutes vos données et devez impérativement les placer dans un objet pour au final ne garder qu’un seul uplet.
- Pas de JOIN. C’est toujours du relationnel quand on peut associer un champ d’une table à une autre (table). Mais que l’on ne peut pas faire de requête qui récupère les données des deux tables ?
- Pas de LIKE (et encore moins de MATCH). Pas de recherche possible donc.
La seule solution à l’heure actuelle est de récupérer toutes les données de votre base et de chercher dans chacune d’elles si une n’est pas intéressante.
Sachez cependant qu’un technicien Google a parlé d’une méthode search() sur la mailing liste officielle de la plate forme. Cependant il a dit clairement que cette méthode n’est absolument pas optimisée et n’est pas documentée car elle est déconseillée.
Il a cependant parlé de possibilité de meilleures méthodes à ce niveau dans le futur.
Et comment j’envoie mes données ?
Un SDK est à télécharger sur le site de la plate forme. Celui-ci comprends deux applications :
appcfg_devserver.py, qui vous permet de lancer un serveur local sur le chemin de votre application. Utile (voir indispensable) pour développer votre application.
appcfg.py, qui vous permet d’envoyer votre application sur AppEngine.
Et seulement envoyer ! Aucune possibilité de rapatrier votre application sur votre machine. En cas de crash de votre machine et d’un manque de sauvegardes, votre application ne sera alors plus maintenable.
Un service encore en béta
Et ça se voit !
L’idée est appréciable. Non seulement afin d’offrir une meilleure visibilité au langage Python, qui est très sympathique à utiliser.
Cependant à la vue de tous les défauts énumérés ci-dessus, l’outil n’est pas encore utilisable sur des grosses applications.
Mais peut-être est-ce le but recherché, d’héberger des milliers de petits trucs sans intéret mais de laisser les gros qui peuvent en présenter en externe.
Le seul réel avantage que je trouve à Google AppEngine est donc le fait qu’il me permet de débuter facilement avec Python, qui est un langage magnifique.
Et vous, que pensez-vous de Google AppEngine ?
Publié sous Développement | 5 commentaires