le lab

Watch out your dispatch.fcgi

I've been messing with my server today as I upgraded it to Rails 2. One of the things I did too is update totally Rails on my Mac, and then, when code was up to date and everything worked, I uploaded as a brute the files.

I even uploaded public/dispatch.fcgi . That's when things started to go terribly wrong. As I made other small changes, it took some time to find out, but my lighttpd server was stopping whenever I tried to reload it with a message like this :

2008-03-21 18:29:27: (mod_fastcgi.c.999) execve failed for: /www/guide/public/dispatch.fcgi No such file or directory 
2008-03-21 18:29:27: (mod_fastcgi.c.1025) the fastcgi-backend /www/guide/public/dispatch.fcgi failed to start: 
2008-03-21 18:29:27: (mod_fastcgi.c.1029) child exited with status 2 /www/guide/public/dispatch.fcgi
... And so on

Turns out Mac F.. OS X.5 has a special path for Ruby, something like #!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby which is quite different from the one I hav on my Ubuntu server : #!/usr/local/bin/ruby. That single line caused all the trouble, but none of the error messages pointed to that direction.

MacBookPro 15" 2 Ghz 250 Go et 2 Go de RAM

VENDU !

Je voyage léger maintenant, donc je n'ai pas l'utilité d'avoir 4 Mac... Non, je n'en ai pas 4. Mais celui que j'utilisais auparavant ne m'est plus utile. Je le mets donc en vente.

C'est un excellent Mac Book Pro acheté en octobre 2006. Il est équipé d'un processeur Core Duo à 2 Ghz, je lui ai augmenté sa RAM au maximum à 2 Go (achetée chez Crucial), et j'ai remplacé le disque dur d'origine par un disque Samsung de 250 Go, soit 239 GiB. Il vient avec un deuxième chargeur, une deuxième batterie (indispensable pour les longs voyages), ses CD d'origine et son CD de Leopard. Je l'ai réinstallé, il est comme neuf.

En termes d'usage justement, il a un seul défaut visible et malheureusement fréquent sur les portables : certaine touches ont marqué l'écran. Cela ne se voit pas du tout quand celui ci est allumé.

En cadeau Bonux, je joins un disque de 250 Go externe avec interface USB et Firewire (400 et 800 Mb/s). Il vient de chez Macway, il a peu servi.

Je vends le tout à --- euros hors frais. Sur Paris et Lille, on peut faire la livraison à pied. Pour les autres situations, il faut que je voie, mais les frais postaux peuvent varier énormément en fonction des options d'assurance. Bien entendu, pas d'expédition sans règlement.

Modes de règlement acceptés : liquide (j'ai fait ça la dernière fois déjà), virement ou Paypal. Une facture avec TVA en règle est émise, pour ceux qui veulent la récupérer voire immobiliser.

Si vous êtes intéressé, merci de me contacter par les commentaires qui sont modérés (je reçois un mail pour valider l'affichage des commentaires).

VENDU !

Donc pour résumer pour Google :

  • Mac Book Pro 15 pouces Core Duo 2 Ghz
  • 2 Go de Ram 250 Go HD
  • CDs origine + Leopard
  • Disque dur externe 250 Go FW+USB
  • 2 chargeurs 2 batteries
  • Très bon état général, une marque sur l'écran
  • 1 200 euros TTC

Chez Rails, quand on fait une nouvelle version, on optimise

J'ai un peu recommencé à faire du dev en Rails et j'ai notamment mis à niveau en Rails 2.0 une appli que j'ai pour un site. Et j'ai lu ensuite le mode d'emploi, c'est à dire la liste des changements. Elle est disponible ici.

Ce que j'ai particulièrement apprécié, ce sont ces deux paragraphes :

We’ve also made it much easier to structure your JavaScript and stylesheet files in logical units without getting clobbered by the HTTP overhead of requesting a bazillion files. Using javascript_include_tag(:all, :cache => true) will turn public/javascripts/.js into a single public/javascripts/all.js file in production, while still keeping the files separate in development, so you can work iteratively without clearing the cache.

Along the same lines, we’ve added the option to cheat browsers who don’t feel like pipelining requests on their own. If you set ActionController::Base.asset_host = “assets%d.example.com”, we’ll automatically distribute your asset calls (like image_tag) to asset1 through asset4. That allows the browser to open many more connections at a time and increases the perceived speed of your application.

Ce que cela signifie : une concaténation des fichiers javascripts en un seul entre le développement et la production, une excellente idée que je pousse à fond dès que je vois un site avec 5 js qui ralentissent son affichage. Rails prouve encore une fois à quel point c'est un framework agile en prenant en compte ce besoin.

L'autre partie, c'est l'usage de la parallélisation des fichiers de ressources pour essayer d'exploiter un maximum de connexions pour un navigateur donné ( et surtout IE).

Wow! Je ne pensais pas que des recommandations de performance pouvaient ainsi traverser l'ether et revenir directement dans un framework. Il faut croire qu'il y a des gens intelligents et qui écoutent.

J'aimerais que la notion de cache Http et de compression des ressources texte soient aussi bien intégrés, mais je pense qu'il faudrait que je m'y colle, ce qui n'est pas de mon niveau vraiment. On laissera ces problématiques aux serveurs web (qui sont certainement plus adaptés pour cett question).