Skate in Mars

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

mercredi 19 août 2009

Quakelive disponible pour linux

Les plus joueurs d'entre vous connaissent sûrement déjà Quake Live, une "reprise" de quake 3 par ses auteurs qui se joue à partir d'un navigateur.

L'interface est ainsi accessible constamment (et obligatoirement) online, ce qui permet à id Software de contrôller les statistiques des joueurs, les mises à jour ainsi que le contenu publicitaire (ingame comme dans le "site").

Contrairement à ce qu'on peut croire cette version qui se lance depuis un navigateur web n'est pas en java ou encore en flash. Il s'agit d'un plugin (binaire) que l'on installe et qui contiendra de quoi lancer le jeu. Les données du jeu seront elles stockées dans votre home (plus exactement dans ~/.quakelive, pour un poids d'environ 300Mo). Il n'y a donc pas de soucis de performance : si votre machine peut faire tourner quake 3, elle fera tourner quake live.

Le jeu est en bêta publique depuis un petit moment, mais la grand nouvelle est que l'on peut maintenant y acceder nativement sous linux, y compris Ubuntu !
En effet depuis aujourd'hui le jeu est compatible sous linux et mac, à la condition d'utiliser firefox, le support d'autres navigateurs tels que ceux basés sur webkit (chromium, konqueror) devant arriver ultérieurement.

Après un petit test rapide tout marche plutôt bien, les bindings (définitions des touches) sont légèrement différentes que sous windows mais votre souris 9 boutons sera bien reconnue. En jouant en plein écran j'ai toutefois eu quelques crashs et mon dual screen (à base de ATI en dual head) à sauté (chose que j'avais déjà expérimenté avec quake 3).
Les développeurs étant très actifs, on peut espérer que tout problème grave sera résolu rapidement.

Rendez-vous donc sur www.quakelive.com pour (re)découvrir ce jeu et y jouer dès maintenant !
Et encore merci a id Software pour leur support des OS dits "alternatifs" et continuer à nous laisser profiter de notre distribution favorite.

mardi 24 février 2009

It's coming for you

Peut-être le billet le plus court depuis le début du blog, mais que dire de plus :

http://quakelive.com arrive en open beta !
Arriverez-vous à passer la dernière porte du tutorial ? ;-)

(Bon ya plus qu'a se dire qu'avec une tripotée de n00bz en plus j'aurais de meilleures stats)

dimanche 25 janvier 2009

Vacances \o/

Hop, un pur post mylife pour faire genre ce blog est vivant.

Comme dit le titre donc, me voila parti pour 2 semaines de snowboarding intense \o/
Au programme un tour des Alpes entre Gap, L'Argentière la Bessée (Reprizent !) et Grenoble, de quoi faire niveau station donc...

2 semaines sans le net, une première depuis quelques années, mais le eee serra la pour quelques parties de Frozen Bubble et Powermanga (:

Enfin bref, «Bye !» (c'est pas comme si quelqu'un lisait ce blog de toutes façons :>)

jeudi 25 décembre 2008

try_files, une nouvelle feature pour nginx

Je sais, ca fait un bail que j'avais plus bloggué. A côté mr_pouit et gpocentek ont même l'air productifs (mais bon, je peut toujours me dire que je suis plus productif que Lutin tout de même :p).
Enfin bref, la date et l'heure sont parfaites pour annoncer mon billet cadeau de noël sur cette nouvelle feature du serveur web nginx, try_files.

Tout commence plus ou moins sur ce thread par un Igor Sysoev (le développeur de nginx donc) qui une fois de plus râle sur l'utilisation abusive des blocs if dans les fichiers de config, notamment lors de tests d'existence d'un fichier. Igor annonce donc l'implémentation d'une fonctionnalité pour rendre tout cela plus propre. La syntaxe est rapidement définie et le nom est choisi après une courte discussion : try_files.

Mais de quoi s'agit-il exactement ? C'est assez simple, prenez ce bout de config :

location / {
if (-f $request_filename) {
break;
}

if (-f $request_filename/index.html) {
rewrite (.*) $1/index.html break;
}

if (-f $request_filename.html) {
rewrite (.*) $1.html break;
}

if (!-f $request_filename) {
proxy_pass http://mongrel;
break;
}
}

Ce qui donne : pour toutes les URLs (car elles correspondent toutes à "/"), on teste si le fichier demande existe. Si oui, on arrête de lire la suite des règles et on sert le fichier. Sinon, on continue et teste après si un dossier correspondant au fichier demandé existe avec le fichier "index.html" à l'intérieur. Si c'est le cas on arrête la suite pour le servir (avec un rewrite). On fait ensuite de même en cherchant un fichier correspondant au nom de fichier demandé suivi de ".html".
Si tout cela ne marche pas (notez qu'on teste si le fichier n'existe pas encore une fois, ce qui pourrait être omis) on passe la requête au serveur nommé "mongrel" (défini auparavant dans un bloc upstream).
Malgré mes piètres explications, vous l'aurez compris, on cherche à servir les "vrais" fichiers et les fichiers de cache avant de passer en dernier recours la requête au serveur d'application (qui héberge donc notre appli qu'elle soit en ruby, python, php (avec fastcgi éventuellement) ou autre).

Ce type de config est extrèmement courant pour les applications rails ou nginx est couplé avec mongrel ou thin. Et c'est donc cela que try_files améliore. Voyez plutôt :

location / {
try_files $uri $uri/index.html $uri.html @mongrel;
}

location @mongrel {
proxy_pass http://mongrel;
}

Pas mal non ? (sisi, quand même !) On donne simplement a try_files des urls à essayer. Le dernier argument est une "named location" (emplacement nommé ?), de type @nom. (les named location existent depuis longtemps mais ne sont pas très répandus, au grand dam d'Igor).
Ce dernier paramètre sera donc utilisé quand les autres auront échoué (les named locations "existent" toujours). Je ne sais pas si ce "fallback" est obligatoire ou si une erreur 404 est envoyé au cas ou tous les essais de try_files échouent mais il semble nécessaire d'après Igor.
Je pense qu'Igor espère aussi une plus grande utilisation des named locations grâce à cette feature.

Cette directive est donc arrivée dans nginx 0.7.27 (la branche de développement), et un patch est disponible pour nginx 0.6.34 (bon, faut que je migre mon 0.5.x de prod moi....).
Ajoutez à cela la possibilité d'utiliser des variables dans les directives fastcgi_pass et proxy_pass (ce qui permettra de rendre ses fichiers de config plus réutilisables), toujours depuis la version 0.7.27.
Pour plus d'infos vous pouvez donc consulter la mailing-list de nginx (notamment les threads sus-cités) en attendant qu'une âme charitable mette à jour le wiki.

Mais, que faites vous encore sous Apache ou Lighttpd ?

PS: Joyeux Noël à tous les utilisateurs de serveurs webs, d'un côté ou de l'autre du tuyau :-)

mardi 9 septembre 2008

Ubuntu 9.04 sera Jaunty Jackalope

Mark Shuttleworth a annnoncé sur la liste de diffusion ubuntu-devel-announce le nom de la prochaine version d'ubuntu : Jaunty Jackalope.
La jackalope est un animal imaginaire entre le lièvre et une antilope (oui, je cherche encore le rapport), quand au terme jaunty, il vient du francais "gentil" et si je devais me risquer à le traduire je vous dirais que cela correspondrait à peu près au terme "Dapper" déjà rencontré, soit "chic" et stylé, mais aussi joyeux et enjoué.

Shuttleworth parle de livrer ubuntu sur des millions de machines en comparant la qualité de l'OS à Microsoft et Apple. Il annonce ensuite les priorités de cette version : le temps de démarrage, mais aussi l'intégration avec les applications web (pour être à la mode ?).
Il annonce également qu'ubuntu utilisera Bazaar pour le développement de toute la distribution, ce qui pourrait amener des améliorations interressantes comme la publication faciles de paquets personnalisés sur un PPA.

Source : https://lists.ubuntu.com/archives/ubuntu-devel-announce/2008-September/000481.html

mercredi 6 août 2008

Gmrun : un alt+F2 surpuissant

Vous utilisez peut-être le raccourci alt + F2 (la combinaison de touches par défaut pour cet utilitaire sous Gnome et KDE), qui permet de lancer une commande ou un programme plus rapidement que si l'on devait ouvrir un terminal.

Cet outil est certes intéressant mais parfois assez limité. C'est pourquoi gmrun est un remplacent idéal !

Installation

Pour installer gmrun il vous suffit d'installer le paquet gmrun du même nom.
Pensez à lui modifier vos raccourcis pour qu'il remplace le alt+f2 habituel, ou à lui attribuer un autre raccourci (sous xfce cela se passe dans l'onglet Raccourcis de la section Clavier dans vos préférences).

Utilisation

L'utilisation de base de gmrun est très simple : pour lancer votre commande, il faut évidemment utiliser la touche Entrée après avoir tapé le nom du programme. Mais le raccourci Ctrl+Entrée peut lui aussi être utilisé pour lancer votre commande dans un terminal (utile avec un éditeur en mode texte par exemple).

L'interface de gmrun est certes simpliste mais les fonctionnalités sont au rendez-vous.

La plus importante est peut-être la complétion automatique des commandes. Tapez donc quelques lettres de la commande à lancer, puis la touche TAB, et admirez le programme à l'oeuvre :

Vous pouvez également utiliser la complétion des noms de fichiers (si vous voulez par exemple en passer en paramètre de votre commande).

L'historique de commande est également très utile. Vous pouvez ainsi utilisez les touches haut/bas pour retrouver les commandes déjà lancées. Les amateurs de shell se réjouiront aussi de la présence de fonctionnalitées de recherche dans l'historique "à la bash" comme ctrl+r et ctrl+s et "!" (reportez-vous au manuel pour en savoir plus).

Configuration

Gmrun marche très bien avec sa configuration par défaut mais il peut être interressant de regarder quelques options du programme.

Pour modifier la configuration on va (comme pour de nombreux programmes) utiliser le fichier .gmrunrc. Commencez par copier la configuration de base depuis /etc/gmrunrc vers votre répertoire personnel (sans oublier d'ajouter la . au début du nom de fichier), pour éviter de modifier la configuration pour tous les utilisateurs.

Ouvrez ensuite ce fichier dans votre éditeur de texte préféré pour modifier les options. Ce fichier est commenté en anglais et de la documentation plus complète est également disponible sur le site du projet.

Parmis les points interressants à noter, l'option AlwaysInTerm qui définit une liste de programme qui seront toujours lancés dans un terminal (comme ssh ou vim). Vous pouvez ajouter à la liste par défaut des commandes telles que nano (éditeur en mode texte), ou encore bc (calculette) ou yafc (client FTP) si vous utilisez de tels softs.

Vous pouvez également changer la taille de l'historique à conserver, ou encore la largeur de l'interface.

Une autre partie de la configuration à observer est la liste "d'URL handlers". Ces "handlers" permettent de vous simplifier la vie en n'ayant pas à taper un nom de commande à chaque fois. par exemple, si vous entrez simplement "http://google.fr" la commande définie dans URL_http sera lancée (par défaut votre navigateur).
Parmis les handlers par défaut les plus utiles (pour moi du moins :p) on retrouvera mailto, man:commande, ou encore term:commande (je vous laisse essayer ce dernier avec un "cat").
Vous pouvez également ajouter vos handlers personnalisés en suivant la syntaxe définie.

La derniere partie de la configuration montre également une utilisation sympatique de gmrun. Certains fichiers peuvent ainsi être lancés simplement en entrant leur chemin, et si leur extension est présent dans la liste des "'Extention handlers" ils seront ouverts en utilisant la commande définie. Un fichier PDF sera donc ouverts avec votre lecteur pdf, un fichier doc sous openoffice, etc. Vous pouvez la aussi ajouter des extensions à la liste par défaut qui est assez courte.
Notez également que chez moi la configuration pour les extensions html ne marche pas, je l'ai donc remplacée par cette ligne :

EXT:html,htm = x-www-browser %s

pour utiliser le navigateur graphique par défaut.

Vous voila donc avec un outil sympatique qui vous economisera peut-être de nomreuses ouvertures de terminaux pour lancer de simples commandes !

vendredi 1 août 2008

Déjà ?

C'est tellement énorme que ca mérite de déterrer le blog (remarquez, j'aurais pu faire le billet hier mais ca fait plus sympa de blogguer tous les premiers du mois) :

Ce blog utilise donc Dotclear 2.0 ! (la on dit zOMG WTF o_O T_T normalement)

Il paraitrait que Duke Nukem arrive bientôt sous Hurd aussi...

jeudi 1 mai 2008

Flash bientôt libre ?

Adobe vient de lancer l'Open Screen Project (http://www.adobe.com/openscreenproject/). Cette initiative a pour but de développer la technologie Flash (ainsi que AIR, une sorte d'équivalent au lecteur flash mais hors du navigateur web) sur toutes les plateformes multimédias : télévision, ordinateurs, téléphones...


Vous vous demanderez peut-être ce qu'on peut y gagner dans l'histoire ? Pour arriver à ce résultat, Adobe a tout bonnement décidé d'ouvrir les spécifications de SWF (le format de Flash) et les rendre accessibles sans conditions. Ces spécifications sont la base permettant de créer un lecteur flash. Pour l'histoire, elle sont actuellement accessibles à tout le monde mais il est interdit de les utiliser pour créer un lecteur. C'est pour cela que des projets comme MTASC ou Haxe se développent la ou les lecteurs libres tels Gnash ou SWFdec sont encore loin derrière le flash player officiel d'Adobe.

Actuellement le lecteur flash d'Adobe n'est pas près d'être libéré mais une fois les spécifications publiées librement on peut imaginer que les lecteur libres rattraperont rapidement leur retard.

Pour rappel 3 lecteurs flash sont disponibles sont ubuntu actuellement :
- Le lecteur officiel, non libre, grâce au paquet flashplugin-nonfree
- Gnash, du projet GNU : paquets gnash et mozilla-plugin-gnash
- Swfdec, inclus dans la dernière version de GNOME. Paquet ubuntu : swfdec-mozilla et swfdec-gnome
La page du wiki francophone rappele les procédures d'installation : http://doc.ubuntu-fr.org/flashplayer

Plus d'infos sur le projet Open Screen : sur Ajaxian, et sur ReadWriteWeb.

The missing link

Bon, comme cela fait vraiment trop longtemps que je n'ai pas bloggué (même mr_pouit et illovae blogguent plus que moi Oo), il est temps de profiter de cette belle journée pour rester enfermé et sortir un bon petit tas de liens \o/

Mais avant, un petit pardon pour le downtime ce week-end et ce début de semaine, mon alimentation et ma carte mère sont mortes en même temps, et le seul magasin ouvert le lundi qui faisait des prix corrects a trouvé malin de me vendre une alim défectueuse... La bonne chose c'est que j'ai eu l'occasion de tester ubuntu 8.04 sur le eee :-) (quoi, vous l'avez déjà installé sur votre pc principal ? vous êtes fous ?)
  • LA nouvelle c'est bien sur Dotclear 2 en Release Candidate ! On a beau râler, le travail accompli semble bien énorme. http://www.dotclear.net/blog/post/2008/05/01/Dotclear-20-RC1
  • Tant qu'a faire dans les releases : OpenBSD 4.3, le plugin del.icio.us pour FF3, Rails 2.1RC qui bouillonne, sans oublier Netbeans 6.1 que je teste actuellement et qui pourrait presque me faire oublier eclipse (je sais ce que vous allez dire, mais faut bien utiliser son core2duo et ses 4Go de ram de temps en temps :o )
  • Les utilisateurs de la dernière ubuntu ont sûrement remarqué que la zone de texte de message dans pidgin 2.4 n'est plus redimensionnable. Un choix plus que discutable qui a entraîné une bonne flamewar sur un ticket trac ouvert à cette occasion : http://developer.pidgin.im/ticket/4986#comment:272 Un plugin est apparemment tout de même disponible pour restaurer le comportement originel
  • Des trucs sympas et utiles en js : Une interface basée sur prototype pour recadrer une image (exemple d'implémentation rails); un gros tas de libs/scripts plus ou moins biens; et des exemples d'utilisation de mootools (qui roxe, rappelons-le)
Ca suffira pour quelques temps, j'espère ?

vendredi 8 février 2008

Dis vert !

Bon voila, j'ai plein d'idées de billet hyper interressants, mais aucune motive, donc je vais faire un petit billet de lien pour donner l'illusion que ce blog est encore actif.
Hop hop trève de discussions :

Voila, si vous vous attendiez à plus d'explications, bah, tant pis.

samedi 26 janvier 2008

Les gendarmes sous Ubuntu ?

D'après plusieurs rumeurs (rien de confirmé donc), il semblerait que la gendarmerie nationale planifierait le passage de ses postes sous Ubuntu
Après la migration de l'assemblée nationale, ce serait donc un pas en avant pour l'implémentation de GNU/Linux en France et sa reconnaissance. Notons que la gendarmerie utilise déjà des solutions libres : OpenOffice.Org et Firefox.

Visiblement plus d'informations seront données lors du salon Solutions Linux.
Merci à Theo pour son journal récapitulatif sur linuxfr.

lundi 24 décembre 2007

En vrac \o/

Et oui vous croyiez pouvoir y échapper mais le revoila, le billet de liens !
Pas mal comme cadeau de Noël non ? (non)

Bref, passons aux choses "sérieuses" :

  • 9 CSS Ethics Every Designer Should Have Quelques bonnes pratiques en CSS
  • Kohana PHP est un framework en PHP5 basé originellement sur Codeigniter. Il est complètement objet et corrige pas mal de manques et problèmes de CI. Il manque toutefois encore un peu de maturité avant de pleinement le remplacer, et les docs laissent à désirer. Un projet à surveiller donc (le développement avancant très vite, préférez la version svn pour tester).
  • Des sorties côté rails pour les endormis : Rails 2.0 (2.0.2), et Rubygems 1.0 (1.0.1)
  • En parlant de rails, les slides de la conf Paris on rails 2007 sont dispos et y'en a des biens (<3 Christophe Porteneuve as usual). Si vous kiffez les slides mettez-en sous le sapin voila aussi ceux de Paris Web 2007, qui sont moins bien (la preuve, yen a au format powerpoint)
  • En enfin je m'aperçois que j'ai honteusement oublié de faire un billet sur le Barcamp Marseille (d'un autre côté c'était pas si intéressant donc c'est pas trop grave :) ). Voila tout de même le lien vers la conf pour les intéressés : http://barcamp.org/BarCampMarseille1
  • Et pour finir (oui je finis 2 fois) sachez que skateinmars.net tourne maintenant sous nginx en frontend :) apache est toujours la pour les quelques repositories svn et pour les scripts php (bien que je pourrais le remplacer par php-cgi, j'héberge quelques personnes qui ont besoin de htaccess apache)
Sur ce, joyeux Noël toussa toussa o/

jeudi 22 novembre 2007

Session classroom éclair sur screen

Note : En raison de l'indipsonibilité de u-classroom, effraie son hébergeur ayant perdu sa connexion, je m'occupe de publier cette annonce en espérant son retour le plus tôt possible !

Le channel IRC #ubuntu-fr-classroom est heureux de vous convier à son prochain
cours qui portera sur l'outil _screen_ ce mercredi 28 novembre 2007 à 20h00
(heure de Paris).

Screen est un gestionnaire de fenêtre pour votre shell. Il vous permet de
créer des fenêtres virtuelles, de naviguer entre elles, de les arranger à
votre sauce, etc. Screen (et ce que vous ferez dedans) existe indépendamment
de vous session utilisateur, ce qui laisse le champ libre à votre imagination
dans son utilisation.

Ce cours, qui ne devrait pas durer plus de trois-quart d'heure sur le papier,
va pouvoir vous donner les bases dans la prise en main de screen, quelques
astuces pratiques, ainsi que nous l'espérons une aisance dans son utilisation.

Il sera donc dispensé à 20h00, heure de Paris, sur le channel
#ubuntu-fr-classroom sur le réseau freenode (irc.freenode.net) le mercredi 28
novembre 2007.

Pré-requis pour ce cours :

avoir installé préalablement l'outil screen (disponible dans le dépot Main) :
  • par l'intermédiaire de synaptic
  • ou grâce à votre terminal : <code>sudo apt-get install screen</code>
des connaissances très sommaires sur l'utilisation du terminal :
  • savoir se déplacer, se repérer dans le terminal
  • savoir éditer un fichier au sein du terminal serait une bonne chose pour vous mais n'est pas obligatoire pour ce cours (utilisation de nano, vim, d'emacs etc)

À mercredi :)

jeudi 1 novembre 2007

phpMyAdmin and HTTPS on nginx

Okay, this is just a really small post to resurrect the blog, but this could be useful as I lost some time looking for an answer to that problem, and that's why I'll write this one in english :)


If you're trying to set up a phpMyAdmin with nginx and an SSL vhost and fastcgi, you should have seen an issue with the urls produced by phpMyAdmin.

phpMyAdmin does not detect that the pages are served through an HTTPS connection and only detect the used port. It will result in urls like "http://phpmyadmin.mydomain.com:443/"

Trying to follow theses urls will result with nginx sending a 400 error like "The plain HTTP request was sent to HTTPS port"


I tried to dig in the code to see how phpMyAdmin was doing to detect HTTPS setups, and one of the few ways was looking for a $_SERVER['HTTPS'] variable set to 'on'. But in fact I didn't have to look for this as alxkbs already provided the (quite simple) solution on his russian blog : http://alexkbs.livejournal.com/208480.html

So, to have working HTTPS setup, you only have to add to snippet in your nginx vhost with your other fastcgi parameters :

fastcgi_param HTTPS on;

phpMyAdmin will then properly detect the SSL setup and produce clean, working urls.

Hope this can save some time for people running into the same problem !

mardi 16 octobre 2007

ET Quake Wars sous Linux, démo et client disponibles

Depuis aujourd'hui, la démo de ET : Quake Wars est disponible pour linux (x86, amd64). Le client final du jeu complet devrait arriver sous peu d'après cette news sur linuxgames.

Vous pouvez la télécharger en torrent sur ce tracker : http://zerowing.idsoftware.com:6969/

Voici comment l'installer sous Ubuntu (feisty, la procédure devant être également valable pour les versions ultérieures) :

  • Téléchargez le fichier d'installation ETQW-demo-client-1.1-full.r5.x86.run (643.26Mb)
  • Une fois fait, rendez vous dans le répertoire d'installation, ouvrez-y un terminal et lancez l'installation ainsi : sudo ./ETQW-demo-client-1.1-full.r5.x86.run (ce qui exécutera le fichier)
  • Suivez les consignes de l'installeur, il vous faudra avoir installé les librairies SDL, et OpenAl pour le son ce qui devrait déjà être le cas si vous jouez à un fps tel Nexuiz ou Urban Terror.
  • En passant notez la configuration minimale requise qui est assez optimiste, j'avais du mal à jouer sur la version avec un amd 3000+ et une Géforce 6600. Des pilotes fournissant le support de la 3d sont bien sur obligatoires
  • Une fois l'installation terminée, si vous avez suivi les options par défaut votre jeu se trouve dans /usr/local/games/etqw.demo. Pour le lancer rendez vous dans ce répertoire et exécutez le fichier etqw
Un petit script pour pouvoir lancer le jeu sans se déplacer dans le répertoire peut-être créé dans /usr/local/bin ce qui sera plus pratique. Créez un fichier nommé etqw dans ce répertoire, donnez lui les droits d'exécution (avec chmod) et écrivez-y le contenu suivant :
#!/bin/sh

cd /usr/local/games/etqw.demo/
./etqw.x86


Il vous suffira ensuite de lancer le jeu dans votre terminal par la commande etqw (aucun raccourci n'est créé dans le menu applications).

Après un premier test le jeu marche très bien (testé sur un Core2Duo avec une Geforce 7950gtx et le SLI désactivé, en 1680*1050 et les optiosn d'affichage en medium ou low), un peu mieux que sous Windows niveau temps de chargement.
Des benchmarks arriveront bientôt sur Phoronix qui fournit déjà un tas de screenshots. (Je ne vous proposerais pas les miens, un bug m'empéchant de faire une capture correcte en plein écran)

Dernière note, pensez à lire la faq et notez que comme pour tout jeu id de la série doom/quake un répertoire .etqw sera créé dans votre home vous permettant d'éditer à la main la configuration du jeu (de nombreux tutos à ce sujet sont déjà dispos, ceux-ci étant valable sous windows comme sous linux).

Bon frag :)

Edit : le client linux est disponible :
http://www.phoronix.com/scan.php?page=news_item&px=NjEzOQ pour la news et
http://zerowing.idsoftware.com:6969/stats.html?info_hash=561e63fd63887faaecdc17632a551d49f512a66b pour le torrent

vendredi 7 septembre 2007

Le point sur les PPAs

Depuis peu, on a vu apparaître une nouvelle fonctionnalité sur Launchpad : les Personal Package Archives, ou PPAs.
Cet outil permet aux packageurs de tous horizons et tous niveaux de construire et héberger leurs propres paquets en profitant de la structure déjà mise en place par Canonical pour les dépôts officiels.

L'annonce de la mise à disposition des PPAs par l'équipe de développement de Launchpad a été accueillie de façon très enthousiaste par bon nombre de packageurs.
Les PPAs ont en effet un avantage indéniable pour le développement et l'assurance qualité des paquets, en permettant par exemple de tester ces derniers avant leur envoi dans les dépôts officiels Ubuntu.
Les équipes ont également la possibilité de créer leur propre PPA, facilitant le travail collaboratif, puisque les membres d'une même équipe (telle que Medibuntu ou MOTUMedia) ont la possibilité d'utiliser un PPA commun pour travailler sur leurs paquets.

Mais au-delà de tous ces intéressants aspects (pour le développeur), réside une source de problèmes pour l'utilisateur.
Une dérive possible de l'utilisation des PPAs est le phénomène Pidgin.
En effet, lors du renommage de Gaim vers Pidgin, on a vu fleurir de nombreux paquets non-officiels... chacun se mettant à recréer depuis zéro son petit paquet personnel de plus ou moins bonne qualité (plutôt moins que plus d'ailleurs).
Il est aisé de prédire que ceci va s'étendre aux PPAs. D'ici quelques semaines, on disposera probablement d'une bonne demi-douzaine de PPAs proposant le même programme pour une même version d'Ubuntu (par exemple, pidgin pour Ubuntu 6.06). Comment s'assurer de la qualité des paquets, comment gérer les conflits qui naîtront entre les différents PPAs ? Le problème, qui a déjà été évoqué a plusieurs reprises concernant les dépôts tiers, pourrait donc prendre une dimension bien plus importante cette fois.

Il faut savoir que les PPAs sont également utilisés par les développeurs Ubuntu, et donc que la construction de 12 paquets Pidgin engendre une attente non négligeable pour ces packageurs.

L'argument récurrent concernant la légitimité de dépôts tiers est la mise à disposition de versions plus récentes de logiciels. C'est un argument fallacieux. Les versions stables d'Ubuntu le sont en grande partie grâce au gel des versions des logiciels. Importer une nouvelle version c'est ajouter un gros risque de bugs, de régressions ou de problèmes de dépendances, en particulier lors de mises à jours de bibliothèques ou de logiciels système (une mise à jour de dbus peut apporter beaucoup plus de soucis que de nouveautés). C'est d'ailleurs pour cette raison que les mises à jour pour les versions stables d'Ubuntu sont aussi limitées que possible (et n'apportent *jamais* de nouvelles versions de logiciels).

Un autre argument très souvent avancé est la mise à disposition de paquets n'existant pas dans Ubuntu (ou dans Debian). Il existe déjà des structures telles que http://mentors.debian.net/ ou encore http://revu.tauware.de/ qui permettent de proposer des paquets à l'inclusion dans les dépôts officiels Debian et Ubuntu.
De plus, si vous avez besoin d'aide, <pub>le chan #ubuntu-fr-classroom@irc.freenode.net est toujours peuplé de MOTU/core-dev/aspirants Développeurs Debian prêts à vous accueillir avec le sourire, dans la joie et la bonne humeur</pub>.

Conclusion: utilisez les PPA avec précaution (néanmoins si vous désirez réellement casser votre système, vous pouvez également utiliser Automatix2, efficacité garantie)

(ce billet est fièrement propulsé par Gobby, et est le fruit d'un travail coolaboratif de membres d'u-classroom.net )

mercredi 5 septembre 2007

Chaînage de méthodes en JavaScript

Lorsque l'on code en JavaScript (et dans bien d'autres langages), on se retrouve parfois avec des tartines de code qui utilisent plusieurs méthodes d'un même objet. Par exemple :

document.getElementById("infozone").className = "affiche";
document.getElementById("infozone").innerHTML = "Hello";
document.getElementById("infozone").style.display = "block";
(Exemple fictif, on ne devrait surtout pas utiliser .style.display et .innerHTML)
L'exemple est explicite, on va ajouter la classe affiche, insérer le texte "Hello" (et remplacer le HTML existant) et modifier la propriété CSS display de l'élément "infozone".
Ce genre de code est assez répétitif, mais heureusement les grandes librairies javascript nous permettent de gagner du temps grâce au chaînage de méthodes.
Comme son nom l'indique cela consiste à enchaîner les méhodes sur un même objet.

Pratique


Pour plus de clarté on va voir des exemples avec les bibliothèques Jquery, Mootools et Prototype pour réduire le code utilisé en exemple et le rendre plus propre.

1. Prototype


Inutile de présenter prototype, la bibliothèque utilisée par rails et une des plus mises en avant.
$() est un raccourci vers document.getElementById(), en plus d'étendre l'élément sélectionné en lui ajoutant des méthodes assez utiles (on peut également lui passer un élément html quelconque en argument pour profiter des méthodes étendues de prototype).

$("infozone").addClassName('affiche').update("Hello").show();

Quelques améliorations : addClassName nous permet de conserver les classes deja existantes de l'élément et update permet de nettoyer le html inséré.

2. Mootools


Mootools est une librairie pas tellement connue mais rapide et légère et est assez puissante au niveau des effets que l'on peut utiliser. On peut également choisir de télécharger seulement quelques éléments de la lib pour encore alléger le tout.

$("infozone").addClass("affiche").setText("Hello").setStyle('display', 'block');

La méthode d'ajout d'une classe est plus claire que pour prototype, par contre il n'y a pas de méthodes du genre show() ou hide() (c'est un choix des développeurs qui estiment que setStyle fait son boulot).

3. Jquery


Jquery est une bibliothèque assez à la mode en ce moment et qui a justement popularisé le concept de chaînage de méthodes car il repose essentiellement sur ce concept comme le montre le site et les démos.

$("#infozone").addClass("affiche").text("Hello").show();

La grande différence est visible dans la fonction $ qui contrairement aux autres libs est utilisé avec des sélecteurs (ici on utilise le sélecteur CSS "#" qui identifie l'id d'un élément). On peut également utiliser des sélecteurs CSS3 ou XPath. Prototype et Mootools utilisent tous deux la fonction $$() pour cet usage.
La fonction text est aussi assez différente car elle est utilisée de deux manières : appelée avec un argument elle se comporte comme update() ou setText(), mais si on l'appelle sans argument elle renverra le texte de l'élément (auquel sera retiré les balises HTML).

Comment ca marche ?


Le principe est en fait très simple.
Chacune des méthodes que l'on a vu renvoie l'élément sur lequel elle a été appliquée.
Voici par exemple le code de la méthode Element.hide de prototype :

hide: function(element) {
 $(element).style.display = 'none';
 return element; // <-- la magic touch
},


C'est donc sur cet élément que l'on va appliquer la prochaine méthode de notre chaîne de fonction.

Pour aller plus loin, vous pouvez également lire mon précédent article "
Des sous-menus déroulants non obstrusifs avec Jquery" ou l'on peut voir l'utilisation du chaînage de méthode pour gagner en clarté et en taille dans un script non-obstrusif, en plus de se déplacer dans le DOM :
$(this).parent().parent().children("li").find("ul.montre").slideToggle("").removeClass("montre").addClass("matched");

PS : J'espère que cet article vous aura donné envie d'utiliser une des nombreuses bibliothèques Javascript mises à disposition, sinon, voici 6 raisons pour le faire.

lundi 3 septembre 2007

Setup CodeIgniter on Nginx server with fastcgi

(Yes, I decided to write a post in english, as this might be useful for a lot of people).

Today I lost some time trying to set up code igniter with fastcgi and an nginx server. Google wasn't really helpful but I found a part of the answer on this thread in the ci forums but I had to dig through the nginx and ci config files. Here is what I have finally done to make this work.

First you have to set up a rewrite rule if you want ci's nice urls (example.com/controller/method/param). I assume you use different vhost files with a specific server directive in each. So, in your nginx config file, configure your server_name, logs, and listen directives as usual, then use this for the / location :

  location /
  {
    index index.php;
    root  /path/to/your/ci/directory;

    if ($request_filename !~ (js|css|images|robots\.txt|index\.php.*) ) {
      rewrite ^/(.*)$ /index.php/$1 last;
    }
  }


Replace the root param with your web directory, which will contain your static files. You can modify the $request_filename regexp to exclude files and directories (if you have a files/ directory for example) from the rewrite.
Note the ^/ in the regexp part from the rewrite, this will avoid getting urls like /index.php//method. I don't know if this is mandatory as the user won't see this rewrite.

Then, add this :

  location ~ /index.php/
  {
    include /usr/local/nginx/conf/fastcgi.conf;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  /path/to/your/index.php;
    fastcgi_param  REQUEST_URI      $request_uri;
    fastcgi_param  QUERY_STRING     $query_string;
    fastcgi_param  REQUEST_METHOD   $request_method;
    fastcgi_param  CONTENT_TYPE     $content_type;
    fastcgi_param  CONTENT_LENGTH   $content_length;
    fastcgi_pass   127.0.0.1:9000;
  }


This will redirect queries to /index.php/* to your fastcgi thread. I had to use the location directive because nginx doesn't allow to change fastcgi_params within a rewrite directive.
Some fastcgi_params could not be necessary for you depending on your fastcgi.conf. Of course you have to adapt the include and fastcgi_pass directives for your setup. This website : http://www.alrond.com/en/2007/jan/25/performance-test-of-6-leading-frameworks/ will provide additional informations on php+fastcgi if you need. You can also see the nginx documentation.
Note that the SCRIPT_FILENAME parameter points directly to your index.php file, not to $fastcgi_script_name as usual.

You can now test this setup, which should work... Err, not really. You can see your default controller but your queries to other methods arn't working. CI does not see your request, so you'll have to change his configuration.

Edit the (system/)application/config/config.php file and look for the $config['uri_protocol'] config option. Change it to :
$config['uri_protocol']  = "REQUEST_URI";
Now CI can retrieve the full URI and your application should work fine.

I hope this can be useful for someone :)

samedi 21 juillet 2007

Les restes du monde

Tout va mal en ce moment... Un nuage toxique se ballade en Ukraine, du nucléaire se ballade au Japon...


Mais heureusement il existe encore des gens pour nous faire rêver. Si vous regardez la télévision plus de 5 minutes par jour vous avez sûrement entendu parler du leak du dernier Harry Potter. Quelques jours avant la sortie du dernier tome du bouquin un adolescent a pris en photo les centaines de pages du bouquin pour les poster sur le net, faisant le malheur des auteurs. En effet il y a du avoir des millions de gens pour se précipiter pour lire des photos de livres de pas trop bonne qualité en plus semble-t-il, malgré que l'appareil qui ait servi à les prendre soit plutôt haut de gamme (comme on peut en juger en regardant les infos exifs dans les jpgs postés qui donnent également le numéro de série de l'appareil, ce qui est assez sympathique).
Ceux qui craignent (craignaient ?) les spoilers peuvent toutefois être calmes, ce sont de grands journaux (anglais, américains ou français comme le parisien) qui se sont chargés de révéler toute l'histoire après avoir acheté un exemplaire à des libraires peu respectueux des dates de sorties officielles)

Mais il y a mieux. Un groupe s'est formé sur The Pirate Bay (tracker ou vous pourrez trouver toutes les releases de Harry Potter donc) afin de recopier à la main le texte depuis toutes ces photos pour en faire un pdf. On ne peut douter de l'utilité de leur action, sachant qu'à cette heure-ci le livre devrait être disponible dans toutes les librairies.

Un truc marrant tout de même, la release en .txt permet de s'amuser avec quelques recherches...
% cat hp7.txt|grep die |wc -l
141
% cat hp7.txt|grep Voldemort |wc -l
440

Voila, vous pouvez vous coucher devant ces infos cruciales.

PS : Désolé, on nous a gavé avec ces histoires de Harry Potter et j'en reparle sur mon blog, mais j'aime j'aime bien être lourd
PS2 : Si vous n'avez jamais lu les bouquins, évitez de perdre votre temps, ca n'a rien d'extraordinaire, lisez les spoilers puis allez voir ca
PS3 : nginx rulez \o/ http://survey.netcraft.com/Reports/0706/

samedi 7 juillet 2007

Blog's not dead !

Je suis toujours la....

Pour la peine :


skateinmars@tauri:~% date +%d/%m/%y

07/07/07

Vous pouvez retournez vers les blogs intéressants ;)

- page 1 de 4