The Caribbean Weblog

"This blog is continuing @ http://christophemaximin.com "

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

jeudi 31 août 2006

Test de valeurs, PHP & Ruby

Petites informations pour la route (notez que iphp, c'est ça) :

christophe@monica:~$ iphp
>> 0 == true
=> false
>> '0' == true
=> false
>> '1' == true
=> true

Ceux qui font du php le savaient déjà, 0 est faux, un string est vrai, mais vous remarquerez la chaine '0' est fausse, certainement parce qu'elle a été convertie en INT, cependant en ruby nous avons :

christophe@monica:~$ irb --simple-prompt
>> 0 == 1
=> false
>> 0 == true
=> false
>> 1 == true
=> false

Pourquoi ? Surement parce que chaque type booléen est "pur". Donc un chiffre n'est ni vrai ni faux, il est un chiffre. En ruby, tout est classe, tout renvoie une valeur, et si cette valeur est nulle, elle s'appelle nil :

>> def nouvelle_fonction
>>   end
=> nil
>> nouvelle_fonction
=> nil
>> def nouvelle_fonction
>>   1 + 1
>>   end
=> nil
>> nouvelle_fonction
=> 2

Vous noterez qu'il y a une différence *significative* entre ce qu'est quelque chose, et ce que cette chose signifie dans une condition, donc en ruby toujours, nous avons ceci :

>> 0 == true
=> false
>> 0 ? 'vrai' : 'faux'
=> "vrai"

Vous noterez aussi qu'en php, cela donne :

>> 0 ? 'vrai' : 'faux'
=> 'faux'

Alors pourquoi 0 n'est pas true alors qu'il valide une condition ? Certainement parce que :

>> 0.class
=> Fixnum

Donc 0 est une classe de type Fixnum, donc elle existe bien, et l'interpréteur se dit " s'il fallait faire un choix entre true et false, une classe valide serait vraie ", ce qui est vérifié par les tests suivants :

>> nil == true
=> false
>> nil == false
=> false
>> nil ? 'oui' : 'non'
=> "non"

C'est bête, mais ça fait drôle de mettre le doigt sur quelque chose qui échappe un peu des fois...
Et, pour finir et vous laissez aller à la récré, je vais vous reparler de ça et de la conversion des chiffres par PHP (oui c'est faiblement typé, tout le monde le sait, ...) :

>> 0 < 1
=> true
>> '0' < 1
=> true

Tandis qu'en ruby, nous avons :

>> 0 < 1
=> true
>> '0' < 1
ArgumentError: comparison of String with 1 failed
        from (irb):33:in `<'
        from (irb):33
        from :0

Voili voilà, vous pouvez aller jouer.

lundi 21 août 2006

Utiliser Ruby on Rails avec Apache 2.2 avec FASTCGI

Je vais faire court : vous ne pouvez pas utiliser FastCGI (et donc RoR) avec Apache (httpd) 2.2 avec les versions compilables actuelles.
À l'heure actuelle, le mod_fastcgi 2.4.0 n'est pas compatible avec l'apxs 2.2, mais plutôt que de downgrader, la solution se trouve sur la mailing-list des developers de FCGI : http://www.fastcgi.com/archives/fastcgi-developers/2005-December/004060.html.

Ensuite, suivez la doc habituelle (modifications du .htaccess et du dispatch.fcgi, décommentage de la ligne 26 surtout)..

Et voilà, un fastcgi tout beau, un Rails tout beau, et un Apache tout frais \o/

PS: et au cas où fastcgi crash aléatoirement pour des erreurs sordides, il y a toujours mongrel que l'on peut utiliser en daemon et faire Apache juste pointer vers le bon port avec le ProxyPass* , voir http://railswiki.involution.com/index.php/Main_Page

lundi 7 août 2006

Code Snippets

Rien à dire, si ce n'est que c'est le type de site useful à garder sous la main, d'autant plus qu'il contient un nombre important de 'code snippets' sur RoR sur lequel je planche (durement) ces jours-ci.

http://www.bigbold.com/snippets/ ( et http://textsnippets.com/ )

PS: D'ailleurs ça tombe bien, c'est le SOR en ce moment ! Summer of Rails

Pages: