August 2006

Keen work

Sat 26 August 2006, , ,

I’ve spent the last 3 days working on a very cool Web 2.0 project with technos like PHP, MySQL, XHTML, CSS and JavaScript with the frameworks Prototype and Scriptaculous and I’ll continue it on Monday. That’ll be great.

A vital extension for Mozilla Firefox, you obviously need if you’re working with JavaScript and Ajax, is FireBug. Having a solid framework like Prototype or jQuery can gain you a lot of time. And last point, Database normalization is always good for you.

I’ve met some famous people of the Swiss French blogosphere.

Voilà, j’ai passé les trois derniers jours à faire du PHP, MySQL, XHTML, CSS et JavaScript (Prototype, Scriptaculous) sur un projet vraiment intéressant et complétement Web 2.0. Et lundi, c’est reparti !

Pour ce genre de dév, l’extension FireFox FireBug est vitale voire indispensable. Et se choisir un framework JavaScript peut faire gagner un temps non négligable. Mangez-en c’est bon.

Dernier point, les formes normales de la grande théorie des bases de données, ce n’est pas du pipeau.

En passant, j’ai fait un peu de people en faisant la connaissance de stars romandes.

Digg it!, so del.icio.us, blogmarks, reddit.

JavaScript frameworks and some news

Tue 22 August 2006,

Weblogger pointed recently a very interesting issue about Why jQuery's Philosophy is Better in which jQuery is faced to Prototype. Prototype is included into RoR and required for the delicious scrip.aculo.us but jQuery need some attention because it seems very powerful too.

I just wanna warn you about these magical toolboxes. They made JavaScript much more functionnal I think but no easier and playing this them without knowing the basis of how JavaScript (and probably DOM) works can be harmful.

At the time at Vera Cruz, my old-dude Batiste works hard on a little son to the templating system (with Python or a better way) that mades doContent so famous (I swear). If you’re interested by this CMS system just contact us.

Ce cher Weblogger a pointé récemment un article très intéressant ventant les mérites de jQuery intitulé : Why jQuery's Philosophy is Better. Vis-à-vis est décortiqué Prototype (Using prototype.js v1.4.0), l’autre et non moins célèbre framework JavaScript.

Ces boites-à-outils là ont l’avantage d’offrir un JavaScript plus fonctionnel, je dirais. Et non pas plus simple. Ne pas connaître les mécanismes sous-jacents me semble périlleux pour affronter ces molosses.

Pendant que je vous écris, Batiste prépare un petit enfant au système de templates (en Python ou en mieux) qui a fait le bonheur de doContent. D’ailleurs si quelqu’un est intéressé par ce dernier, il peut sans autre nous contacter.

Digg it!, so del.icio.us, blogmarks, reddit.

Freelance

Thu 17 August 2006,

As I’m waiting for an answer of the mysterious company of Dublin, a very funky Swiss company offered me to do some job for it. At the moment, it’s some integration but who knows. It’s very similar with what I’ve done to Bikini Test’s website.

I’ll reject the opportunity at Moutier because they cannot lie to them about my future.

Alors que j’attends des nouvelles imminantes de la probable future place à Dublin, une petite boite locale me propose de faire pour eux un peu d’intégration XHTML/CSS en freelance. C’est assez proche de ma tâche pour le site du Bikini Test sauf que les délais sont là.

Et je vais rejeter le poste à Moutier car les chances que je leur sois disponible sont devenues très faibles et la boite locale est plus attractive si toutefois ça tombait à l’eau.

Digg it!, so del.icio.us, blogmarks, reddit.

Unobtrusive JavaScript

Wed 09 August 2006, ,

I was a bad user of JavaScript, and I’ve recently learned cool things (many thanks to a Dubliner).

First of all, I probably abused of the window.onload = myFunction that is really intrusive. A better solution would be to use the addEventListener (W3C) or the attachEvent (Microsoft). But there are both incompatible (bad news). Another homemade solution comes from Simon Willison and this rocks. Read it!

Second thing, encapsulation. The OOP is everywhere and it’a great way of doing things that are reusable. You may read this article : JavaScript Object-Oriented Programming Part 1 from SitePoint. Most of JavaScript toolkits or frameworks made today are written this way.

I’ve made a little script that takes the queried words in the q parameter of the query string in the given page or in the referrer (if the visitor came from Google for example) and highlight them. You can try it there. Warning, this script shouldn’t be used, it may break your website.

Je pense avoir été un utilisateur de JavaScript avec de vieux défauts ce qui fait que le résultat est difficilement réutilisable et n’est pas à l’abri d’erreurs. Voici quelques points que j’ai récemment appris d’un dubinois (merci à lui).

Premier point, le chargement automatique d’une fonction au démarrage. Beaucoup de monde peut désirer faire une opération à ce moment là. Éviter le window.onload = maFonction et permettre à chacun de mettre sa fonction est assez vital. La solution fournie par JavaScript est double et c’est la le problème. Microsoft et le W3C spécifie différentes choses incompatible entre elles. Une solution publiée par Simon Willison permet de contenter tout un chacun.

Autre point, passer à un style orienté objet devient également vital dès que la question de la réutilisation intervient. Un article SitePoint traite le sujet en profondeur : JavaScript Object-Oriented Programming Part 1, à lire donc. À l’heure actuelle, les frameworks JavaScript sont écrits de manière orientée objet, donc pas de raison d’y couper.

Et comme, j’ai toujours besoin de mettre en pratique les choses que j’acquiers (sinon j’oublie), voici un petit outil, très imparfait, qui va mettre en évidence les mots recherchés dans la page. Le script va prendre en compte soit le paramètres q dans l’URL ou ce même paramètre dans le référant (si, par exemple, le visiteur vient de Google). Testez-le ici.

Digg it!, so del.icio.us, blogmarks, reddit.

Better Web App Development

Thu 03 August 2006, , , , , ,

Batiste pointed me, a really interesting video (Quicktime, 379MB) about Web Application and Frameworks (Ruby on Rails, Django, J2EE, TurobGears, Zope/Plone) and what worth.

Django just hits 0.95. And remember, J2EE gives, at least two, headaches.

Une vidéo (Quicktime, 379MB) faisant le tour des Frameworks web dans le vent (désolé pas de PHP) avec démo, avantages et inconvénients, fonctionnalités, usage, ...

Digg it!, so del.icio.us, blogmarks, reddit.

Convolution Matrix

Tue 01 August 2006,

The website of the Bikini Test move to a new and most powerful server with GD2. Hurray, we can resize our pictures from PHP.

The first essay of resizing this pretty picture (of William White).
Original picture of William White
turns into a nightmare.
resized with GD2

The result isn’t really pretty. So I tried to apply some convolution matrix like : a Gaussian blur or emboss.

A Gaussian blur :
1  3 1
3 27 3
1  3 1
divisor : 43

Emboss :
1  1 -1
1 15 -1
1 -1 -1
divisor : 15
		

The result can be better but not perfect like flickr can. Bellow the emboss result :
PHP + emboss filter

Last try is to call ImageMagick with exec.

convert input.png -resize widthxheight -quality 90 output.jpg

And the result is really good.
resized with ImageMagick

The bad side of this is that the exec command is allowed everywhere (thanks to Azylog) and that you depend of the imagemagick installation to work. I should be only an alternative to GD.

And, of course, don’t miss the great William White Saturday the 7th of October 2006.

Le site du Bikini Test a changé d’hébergeur dernièrement et comme il y a enfin GD2 (la bibliothèque de manipulation d’image) et bien il est enfin possible de redimensionner via PHP leurs images.

Une belle image (depuis le site de William White (photo)) redimensionnée et hop, bof bof, le résultat n’est vraiment pas terrible.

Les premiers essais ont été d’appliquer des matrices de convolution sur l’image destination afin de réaliser des effets comme un flou (blur) ou emboss. Le résultat du flou, est peut-être un peu moins sale et celui du emboss donne un peu de relief. C’est peut-être mieux, mais loin des bons résultats que, par exemple, Flickr fournit.

Ultime solution, non mécontent d’en avoir appris un peu plus sur les matrices de convolution, faire appel à ImageMagick.

convert input.png -resize widthxheight -quality 90 output.jpg

Avec PHP, il faut passer par la fonction exec, malheureusement pas autorisée partout (vive Azylog, qui n’est pas pour autant le nouvel hébergeur du site de Bikini Test). C’est ce par quoi il faut passer pour obtenir un résultat “professionnel” lorsque l’on fait des miniatures avec PHP. Un peu dommage.

Et venez nombreux le samedi 7 octobre 2006 pour assister au concert de Monsieur William White.

Digg it!, so del.icio.us, blogmarks, reddit.