May 13, 2008

Maxime (ckiop)

Bilbo Baggins ( Bilbon Sacquet ) "Je te vois !"

Enfermé à Gobelinville, Bilbon qui a trouvé sans le savoir l'anneau unique, est poursuivi par Gollum, l'ancien propriétaire. Pour en échapper Bilbon met à son doigt l'anneau qui lui donne le pouvoir d'invisibilité... Un seul être au monde peut alors le voir.

Bilbo baggins

May 10, 2008

Julien (jd)

You fragged...

This made my day.

May 07, 2008

Mathieu (Matthew)

Chapitre 8

L'attaque

Je ne saurais dire si c'est la faim ou le clairon qui m'ont réveillé en premier - probablement un peu des deux. La journée risque d'être longue. Laissant à mon organisme le temps de se remettre en marche, j'observe, assis, les orques en train de ranger le camp. Beaucoup de débris vont rester sur place, empilés sur le tas de débris précédent. Sous les ordres de Rok, le convoi se remet en formation et repart en direction de l'ouest. Instinctivement, chacun a repris la place de la veille et je retrouve le taciturne et Urag, pas moins bavard qu'hier :

- Bonjour Waknar ! J'ai bien dormi et toi ? demande-t-il sans attendre de réponse. J'espère en avoir vite fini avec cet assaut, qu'on rentre vite au camp. Je n'ai pas aimé ces ruines et ses statues hideuses. Elles me rappellent la dernière bataille, que je vais heureusement vite oublier après la victoire de ce soir.

Ne voulant pas briser son optimisme, je ne tente pas de répondre. De gros doutes trottent tout de même dans ma tête quant à nos chances pour ce soir. Comment savoir si les informations de Vridush sur le nombre d'ennemis est fiable ? Tandis que nous commençons l'ascension du chemin serpentant menant au deuxième col, Urag continue de me faire part de son enthousiasme et me fait part des récits qu'il a lui-même entendus sur de précédentes victoires. Je n'ai aucune expérience militaire, mais j'ai l'impression que la réalité a été quelque peu embellie par le narrateur. Je cesse finalement d'écouter au bout de quelques virages. Ce n'est qu'à la fin de l'escalade que, las de ruminer mes doutes, je reprends le fil de son monologue :

- ... et, alors que deux cent Hommes lourdement armés l'encerclaient, Nalrok Grands-Crocs relâcha toute la puissance qu'il lui restait dans une dernière attaque. Lacérant et déchiquetant à tout va, il réussit à se tailler un chemin, grimpant sur les cadavres, arrachant des bras ça et là. Terrible, n'est-ce pas ?

- Oui, ce devait être un puissant ouargue celui-là, répond-je, sur le ton le plus crédible que je puisse avoir.

- Un héros oui ! Et figures-toi que ce héros-là, c'était mon grand-père ! Eh oui !

- Eh bien j'espère que tu suivras sa lignée !

Quelques instants plus tard, la horde s'arrête sur un plateau afin de se reposer avant d'entamer la descente. Vridush, circulant autour du groupe, annonce la suite des évènements :

- La place ennemie n'est plus qu'à quelques heures de marche. Il est situé juste derrière une colline à l'ouest, un peu au sud. Nous ne serons donc seulement à la vue de leurs veilleurs. Pour éviter d'être repérés, nous allons longer la forêt que vous pouvez apercevoir au nord. Les premiers arbres cacheront notre présence. Cependant, ne pénétrez pas trop dans la forêt ! Et restez silencieux, compris ?

Il me semble que le regard de Vridush, disant ces mots, s'attarde sur Urag.

- Un autre camp d'orques nous aidera pour l'offensive. Je vais envoyer quelques Ours éclaireurs en avant afin de fixer avec eux le rendez-vous à l'orée d'une avancée méridionale du bois, à partir de laquelle nous attaquerons à la nuit tombée. Le chariot va rester ici à l'abri des regards. Ne vous inquiétez pas pour la bouffe, vous aurez de la viande de choix ce soir !

Satisfait de la vague de grognements de plaisir qu'il vient de provoquer, Vridush rejoint Rok, qui a déjà choisi une dizaine de ouargues parmi les plus habiles au camouflage. Rok se charge des dernières recommandations pour les orques qui les chevauchent et les voilà qui s'élancent, disparaissant rapidement derrière une butte. Savourant les quelques minutes de repos accordées, je me réjouis de ne pas faire partie de ces infortunés. Je me serais vu bien incapable de courir une telle distance.

Nous reprenons la marche. Je n'y avais pas pensé mais le départ avancé du groupe d'Ours fait que suis maintenant presque en première ligne : seules deux rangées de congénères me devancent. Cela ne me rassure pas. J'ai un mauvais pressentiment concernant cette journée et je préfère ne pas être dans les premiers confrontés aux aventures qui nous attendent.

La descente, que même Urag effectue silencieusement, est déjà bien amorcée quand soudain un cri retentit à l'arrière de la troupe. Je me retourne brusquement et vois un ouargue sur le flanc droit s'effondrer, une flèche plantée dans les entrailles. La panique gagne instantanément tout le monde. Je scrute rapidement le versant de la colline quand j'entends siffler d'autres projectiles. Un regard en l'air : une pluie de flèches s'apprête à nous tomber dessus. Suivant les autres, je dévale en trombe la pente, entendant hurler des orques blessés et Rok donnant des ordres de fuite à tout va. Je distingue loin derrière des cris terrifiants et ose jeter un œil par dessus mon épaule. Sortant des fourrés de chaque côté du chemin où nous étions il y a quelques secondes, des dizaines d'hommes jaillissent, plantant leurs épées scintillantes dans quelques orques désarçonnés par des Mammouths détalant à mes côtés. Je bute tout à coup sur le ouargue qui me précède : sa gorge vient d'être percée par une flèche. Je tombe la tête la première mais parviens après quelques roulades à me rattraper. Je fonce de plus belle devant moi, réussissant à distancer les diables humains. Les moins prompts, pour la plupart des Limaces, sont égorgés. Haletant, je continue ma fuite quand surgissent à une courte distance devant nous une autre vague d'humains, ceux-ci montés sur d'immenses créatures que je crois être des chevaux. Lances en mains, ils nous chargent en poussant des cris effroyables, mettant à nouveau en déroute le maigre groupe que nous avions réussi à reconstituer. Pris au piège entre ces mâchoires, chacun s'enfuit par où il peut. Je choisis la droite. Faisant appel à toutes mes forces, je fonce à m'en déchirer les muscles. Pas après pas, je prie pour échapper aux chevaux et je parviens à passer devant le dernier, ses lourds sabots à moins d'un mètre derrière moi. J'entends siffler des flèches autour de moi. Le ouargue devant moi se fait transpercer l'abdomen par la lance du cavalier le plus proche. Stoppé net dans sa course, il racle le sol quelques mètres et s'arrête, laissant une trainée d'herbe rouge. Je suis maintenant en tête, mais plus rien ne me fera regarder en arrière. Je file, les poumons en feu, horrifié par mes poursuivants. La forêt se dessine devant moi, seule cachette possible, et bondis de plus belle. Les cris derrière moi s'affaiblissent et j'entends les sabots s'arrêter. Les premiers arbres sont à quelques foulées. J'entre enfin à toute vitesse dans la forêt mais, alors que je me croyais un peu plus en sécurité, je sens une vive douleur au milieu du dos. C'est une flèche qui s'est plantée presque à l'horizontale sous ma peau. Je cours encore une bonne distance, la canopée de plus en plus dense me cachant de la lumière. Les chênes défilent à toute vitesse. J'évite les racines et je sens déjà que la douleur s'estompe : la blessure ne doit pas être profonde. Je m'arrête enfin, à l'abri d'un talus, à bout de souffle.

Je le sentais. Comment ont-ils pu croire que tout se passerait bien ? En tout cas, je ne pensais pas à une attaque aussi anticipée et préparée. C'est nous les lapins maintenant. Les images de la déroute repassent dans ma tête. J'essaye avec quelques minutes de retard d'identifier les victimes que j'ai cru voir. Beaucoup ont péri sous mes yeux mais je ne crois pas en avoir reconnu. Un lointain cri retentit. Pour l'avoir souvent entendu, c'est celui de Vridush, qui semble en plein combat. J'avoue qu'en ce moment, son sort m'importe peu. Autour de moi tout parait calme, à part ce que j'espère être la vie normale de la forêt. Une légère brise agite le sommet des arbres, faisant bruisser des feuilles et grincer quelques branches. Les oiseaux, qui s'étaient tus à mon arrivée, reprennent petit à petit leurs piaillements. Je commence enfin à respirer plus calmement et prends le temps de m'occuper de ma blessure. La flèche a disparu. Elle a du tomber dans ma fuite. L'endroit m'est inaccessible et je ne peux voir l'état de la plaie. J'ai un peu mal, ce ne doit pas être important. A part ça, je suis étonnamment indemne. J'ai eu beaucoup de chance comparé à mes confrères. Eviter presque toutes les flèches, les chevaux et trouver une cachette à peu près sûre, tout ça tient du miracle ! Je décide de rester tapis un bon moment, faisant confiance à la vigilance des volatiles ainsi qu'à mon ouïe attentive. Ces hommes, du même gabarit que les orques, peut-être un peu plus fins, seront bien incapables de se déplacer ici sans que j'en sois alerté.

J'ai du m'assoupir un peu. A mon réveil, je me rends compte que ma blessure me fait souffrir davantage qu'avant. Cela arrive souvent, notre cicatrisation rapide n'étant pas sans contre-partie.

La forêt qui m'abrite semble plus ancienne que je croyais. D'immenses chênes et hêtre se mêlent en une densité peu commune, que parsèment quelques frênes noirs. Tout ceci a un aspect inquiétant, comme vénérable. La sensation que j'éprouve est étrange. Quelque chose vit ici, quelque chose sommeille. En quelques instants, j'ai l'impression que ce nouvel environnement m'est devenu hostile, comme si l'esprit de la forêt s'était rendu compte qu'un intrus s'était immiscé au plus profond d'elle. Les murmures des feuilles essaient de me dire quelque chose.

Ressaisis-toi, Wagnar ! Ca doit être la faim et la fatigue qui me font croire des choses. Soudain, un grondement éclate sans que j'en perçoive l'origine. Résonnant longuement, le sol se met a trembler, comme répondant au tonnerre. Les fougères, suivis par les arbres, commencent à onduler étrangement. Je me recroqueville le plus possible sous le talus. Les feuilles me parlent, j'en suis sûr maintenant. Les paroles que je saisis forment un amas incohérent.

- ... ta faute ! Ils arrivent ! ... nous organiser ... maléfice. Je vous ai prévenu ! Rien ne repoussera après le sang ... avertir les autres ...

Je suis terrorisé. D'où viennent ces voix ? J'ai l'impression de suffoquer. L'air est devenu atrocement chaud et irrespirable. Une terrible odeur, comme celle d'un poison, s'insinue en moi à chaque bouffée. Je ne peux plus bouger. Mon dos tout entier semble à vif maintenant. Le grondement s'intensifie et tout à coup le sol se dérobe sous moi et je tombe dans un puits obscur. Chutant sans fin, l'ombre la plus totale se remplit d'images délirante. Le noir se transforme en une couleur encore plus sombre, une couleur puante et brûlante. Tout autour de moi est confus, je ne sens plus mon corps et plonge sans fin dans un chaos ténébreux. Le visage de ma mère apparait, tournoyant de plus en plus vite dans un bain de sang. Une cacophonie de bruits bizarres vient s'y mélanger, se transformant en un sol au dessus duquel je flotte maintenant sans comprendre quoi que ce soit. Une botte apparaît devant moi, équipée d'une aile. La pauvre vole en rond, s'éloignant de moi. Le sol se rapproche et je me rends compte qu'il est composé d'une infinité de sabots prêts à me piétiner. Je tente de fuir, nageant dans l'obscurité vers la botte qui me sourit à présent. Je ne parviens qu'à patauger ridiculement, basculant sans arrêt. Les sabots se rapprochent, tandis qu'une nuée d'effroyables mâchoires m'attaquent le dos et me dévorent, arrachant des lambeaux de chair. Mon dernier espoir est cette botte vers laquelle je gigote du mieux que je peux. Le tumulte cesse soudainement et la bouche riante de la botte articule :

- C'est bon.

May 05, 2008

Félix (neo)

et hop...

Je passe au vert......

Office communicator

Bon, chez SAS comme dans beaucoup de grosses boites qui ont une grosse architecture Microsoft, nous utilisons Office communicator comme IM interne. En gros, c'est un MSN qui se connecte tout seul vu qu'il s'authentifie tout seul sur l'AD avec les mêmes identifiants que ceux avec lesquels vous êtes...

May 04, 2008

Félix (neo)

PHP et Flash

Pour un projet actuel (dont je vous parlerai d'ici peu), j'ai du faire communiquer du PHP avec du Flash. L'intérêt par exemple serait de gérer en PHP toute la partie données, de gérer le tout avec des objets PHP , et ensuite de les envoyer à du Flash sous forme d'objets (sans passer par du XML ou...

Julien (jd)

OpenArena, comment que ca m'éclate

C'est à dire que j'avais un peu oublié Quake 3 Arena, tout ca, c'était du passé vous voyez. Et puis voilà que je tombe sur OpenArena, le jeu qu'il est forké de Quake 3 et qu'il est bien.

Alors OpenArena, c'est quoi ? C'est simple, ca ressemble à Quake 3, ca sent comme Quake 3, mais... c'est Quake 3 !@!#!

Alors évidemment, les puristes diront sûrement que non, mais en fait si. La seule différence, c'est que tous les graphismes, les joueurs, les objets, les cartes, ont été refaits à la main par les auteurs, étant donné que tout ceci n'a pas été liberé par ID Software.

Conclusion ? Ca fait juste un Quake 3 en beaucoup plus moche. Certains objects sont três bien fait (le Quad, le shotgun, le mega-health, les drapeaux, …), mais le reste est globalement vraiment pas beau. Les cartes ne sont pas sublimes non plus, ca manque de textures, de détails, etc.

Ceci dit, à part ca, ca reste du bon gros Quake, donc j'aime. Allez, je me suis même fait plaisir, j'ai jouer en tant que C4 pour défendre l'honneur, tout en mettant une claque aux gentils admins de TuxFamily qui ont leurs propres serveurs où vous pourrez peut-être me croiser quand je me détends !

jd on OpenArena

April 28, 2008

Mathieu (Matthew)

Chapitre 7

Le départ

Le jour du départ est déjà arrivé. Je n'ai pas vu passer ces deux derniers jours, qui se sont déroulés en grande partie comme le premier, mis à part le discours. Le rythme m'épuise ainsi que les autres ouargues : la plupart d'entre eux se plaignent de la cadence inhabituelle. J'imagine que c'est l'approche de l'attaque du clan ennemi qui pousse les orques à nous entraîner plus durement. Au bout de ces trois jours, je pense maîtriser correctement les ordres stratégiques ; les combats, par contre, me posent encore quelques problèmes. Je gagne rarement un duel et je ne parviens pas systématiquement à laisser mes instincts prendre le dessus.

Ce matin, tous les ouargues sont rassemblés dans l'arène, peu importe le niveau d'entraînement. Il y a même deux nouveaux, arrivés hier soir, parmi les Limaces. Les pauvres ont l'air complètement perdus, haletants. Ils restent collés l'un à l'autre en essayant de comprendre ce qui se passe. De façon générale, tout le monde est tendu, même la demie-douzaine de gardiens qui nous surveillent. Quelques-uns parmi les Mammouths, peut-être cinq ou six, sont assaillis de questions par les autres. Des bribes de chuchotements que j'entends, je comprends que ce sont les seuls à avoir participé à un assaut. Calmement assis, ils restent muets, le regard perdu dans leur mémoire. Je les sens replonger dans des histoires peu réjouissantes, des scènes effroyables remplies de sang... Je veux fuir. Je ne peux qu'avoir de mauvais pressentiments concernant cette histoire. J'aimerais marcher un peu pour essayer de penser à autre chose, mais nous sommes tous agglutinés ici.

- Deux jours de marche à allure moyenne, nous annonce Vridush du haut du mur. Vous n'avez pas à savoir autre chose pour l'instant. Peu d'entre vous ont connu le champ de bataille, je vous explique donc la formation : à l'arrière, le commandement orque, chevauchant les Mammouths. Devant eux, les Limaces, puis les Lynx, et en première ligne les Ours montés par les orques guides. Les bataillons orques se trouveront sur les côtés. Chaque classe va maintenant rejoindre la sortie du camp dans l'ordre de la formation. La sortie de votre camp d'entraînement se fait par la tanière des Mammouths. En avant, les Ours !

Enfin un peu d'informations ! Si les deux derniers jours n'étaient que spéculations, je vois maintenant un peu mieux l'organisation des choses. Alors que les Ours entrent dans le tunnel des Mammouths, je comprends que la seule sortie possible de notre camp d'entraînement se fait par cette tanière. C'est sûr qu'une meute de ouargues élites vaut tous les gardiens du monde. Je m'engouffre à mon tour dans le tunnel en compagnie des Lynx pour découvrir une grotte beaucoup plus profonde que la notre. Ici chaque Mammouth a son espace, une sorte d'alvéole tapissée de paille. A l'opposé du tunnel d'où nous arrivons se trouve une autre porte qui mène à la sortie. La file que nous formons s'y dirige et tous apprécient jalousement le confort dont dispose la classe supérieure. Je pénètre dans le deuxième tunnel qui s'élève en pente douce sur une dizaine de mètres, et nous débouchons en plein milieu du campement que je n'avais aperçu que furtivement lors de mon arrivée. Nous nous arrêtons sur une sorte de large place d'où j'ai le loisir d'examiner les alentours.

Le soleil à peine levé éclaire faiblement le campement boueux. Il a plu toute la nuit mais heureusement la douceur printanière nous évite de geler sur place. Une cinquantaine d'orques attendent en silence autour d'une dizaine de feux. Je pensais échapper à ce sentiment de cloisonnement perpétuel en sortant des tanières mais les palissades de bois à la surface sont plus proches que je le pensais. Deux tentes ont été installées au centre et semblent résister difficilement au vent et à la pluie. L'une d'elle, protégée par deux gardes, doit abriter Rok, tandis que l'autre est remplie de caisses. Un chariot semblable à celui dans lequel je suis arrivé a été rempli de caisses, de vivres et de divers matériel.

Rok, suivi de Vridush, sort de la tente gardée et observe le convoi. Les derniers Mammouths quittent le tunnel alors que les Ours, tout près de la sortie, reçoivent les premiers ordres. Au nombre d'une quinzaine, chacun s'accroupit pour laisser grimper un orque. Quel sentiment désagréable ce doit être ! Même si ces guides ont été choisis parmi les plus légers, l'équipement qu'ils portent doit être pesant. Il est constitué pour tous les orques d'un casque et de bottes en fer, d'une tunique en cuir et d'une arme, assez différente d'un guerrier à l'autre : épée, gourdin, arc... Ces créatures ont l'air incapables de se battre naturellement comme nous, mais sont beaucoup plus belliqueuses.

Un nouveau cri de Rok et les Ours se mettent en marche. Nous les suivons en rang par trois comme à l'entraînement. Cette fois je suis au milieu de deux autres éclaireurs. A ma gauche, Urag, avec qui j'ai échangé quelques mots hier soir après le repas. Urag est à peu près du même gabarit que moi et doit avoir quelques années de plus. A ma droite, un éclaireur que je ne connais pas. Le cortège piétine un peu au début puis adopte une marche assez rapide. Quand je franchis la porte, j'ai l'impression de quitter un enfer pour en trouver un autre. Le camp s'éloigne petit à petit avant de disparaitre derrière une colline.

Cela fait un bon moment que nous marchons en direction de l'ouest quand Urag s'adresse à moi, d'une voix la plus faible possible :

- Waknar, c'est ça ?

- Oui, lui répond-je.

- Ecoute. Je n'aime pas que ça se sache au près des nouveaux - je déteste quand ils m'assaillent de questions - mais j'ai déjà fait une attaque comme celle-ci. Tu m'as l'air bien, je te fais confiance. Voici le seul conseil sage que je puisse te donner : si tu vois que ça tourne mal, enfuis-toi.

- Merci du conseil, fais-je, surpris de trouver un ami dans une heure si sombre. Comment s'était passée la bataille que tu as livrée ?

- Mal. Oh, nous étions légèrement en supériorité, mais cela n'a pas aidé. Les Hommes que nous avons combattus sont plus faibles que les orques, mais ils sont plus intelligents. Nous avons rapidement été mis en déroute et peu d'entre nous ont réussi à s'échapper. A l'époque, je n'avais pas pu trouver l'occasion de m'enfuir définitivement de tout ça. Je ne sais pas ce que tu en penses, mais ce n'est pas notre guerre. Peu importe ce que le Grand Prédicateur peut dire, je pense que les orques nous utilisent. Si les campements sont constamment harcelés par les Elfes, les Nains et les Hommes, c'est uniquement à cause des Orques.

Je ne trouve rien à répondre. Tout ceci est nouveau pour moi. Il y a quelques jours, cet univers n'était qu'une légende à mes oreilles. Voilà que j'y suis précipité sans échappatoire. Je jette un œil à mon voisin de droite dont le mutisme et le regard dans le vague excluent une quelconque participation à notre conversation. Urag poursuit :

- Il se passe assurément de grandes choses dans ce monde en ce moment. Mais savoir qui a tort ou raison, l'Oeil ou ses ennemis, n'est pas aussi simple à décider que ce qu'on nous dit. Tu sais, j'ai entendu des histoires qui ne seraient pas bonnes répéter ici. Ce n'est sûrement qu'un mythe servant à faire rêver les jeunes, mais on m'a raconté qu'un Elfe avait un jour été pris d'une affection réciproque pour un ouargue. Oui !

- N'est-ce pas tout bonnement impossible ? réagis-je. Je pensais que les Elfes n'étaient autre que des démons.

- Je ne sais pas si c'est vrai, car la suite de l'histoire est peu vraisemblable. L'Elfe en question, que la légende appelle Taralon, aurait appris au ouargue à parler sa langue, et lui aurait même transmis le don d'immortalité.

- Rien que ça !

- Comme tu dis. Le coup de l'immortalité est forcément inventé, mais pour l'apprentissage d'une langue, pourquoi pas. Nos gorges sont à mon avis beaucoup plus polyvalentes que ce dont nous nous servons. Je me suis un peu entraîné, écoute ça.

Urag commence alors à pousser des cris étranges, aigus, et très variables. Il utilise sa langue et ses lèvres pour moduler des syllabes bizarres, qu'on pourrait aisément croire d'une autre espèce. Un des ouargues nous précédant se retourne alors et lance à Urag :

- Tais-toi vieux fou ! Tu vas nous attirer des problèmes avec tes conneries !

Les sons cessent immédiatement. C'est vrai que Urag parait un peu dérangé mais il me donne tout de même à réfléchir.

Le soleil a finalement pris le dessus sur la pluie et arrive maintenant au dessus de nos têtes, après avoir été dans notre dos toute la matinée. Le premier arrêt de la journée, accueilli avec joie, se fait à l'abri d'un bosquet de chênes, le long d'un maigre ruisseau. Chacun se précipite pour boire quelques gorgées. Les premières chaleurs de l'année, la douceur de l'endroit et cette fausse liberté retrouvée me feraient presque oublier le dangereux dessein qu'on m'impose. Même si le nombre de crocs et lames acérés en présence m'aide à me sentir protégé, je doute que tout cela finisse bien. J'ai un peu le temps de reposer mes pattes avant que nous reprenions le chemin. Je retrouve mon voisin silencieux, et Urag qui est visiblement impatient de me dire quelque chose. Il attend tout de même que les bruits de la marche couvrent un peu ses paroles.

- J'ai des nouvelles ! J'ai surpris une discussion entre Vridush et un autre Mammouth. Nous devrions rejoindre un autre groupe d'orques dans la journée de demain, avant d'attaquer par surprise à la nuit tombée. D'après Vridush, avec ces renforts, nous serons largement supérieurs en nombre. Finalement je ne la sens pas si mal cette attaque !

- C'est un peu rassurant, en effet, lui répond-je.

- Encourageant plutôt ! J'ai cru comprendre que ça serait un avant-poste tenu par les Hommes et qu'il y aurait peut-être quelques Nains des montagnes voisines, venus commercer. J'ai hâte d'en goûter un ! On m'a dit que c'était excellent.

Je suis un peu désorienté par l'enthousiasme de Urag, lui qui était prêt à déserter à la moindre occasion il y a quelques heures. La vision d'une possible victoire lui a complètement fait oublier ses idées sur le but de cette guerre. Je décide de changer de sujet.

- Comment as-tu atterri dans ce campement ? lui lance-je.

- Oh, je suis né dans un camp comme celui-ci. C'était au temps où les Orques élevaient eux-même les Ouargues. Ils ont arrêté il y a quelques années, quand ils se sont rendus compte que les ouargues sauvages étaient de "meilleure qualité". Une histoire de manque de reproducteurs, qui aurait fait que les progénitures auraient des tares. Mais moi, ne t'inquiète pas, je ne suis pas dingue ! N'est-ce pas ? fait-il avec un petit rire.

Pris au dépourvu, je ne sais quoi dire. Heureusement, il n'attendait pas de réponse, et continue :

- Ensuite, j'ai voyagé de campement en campement, à la découverte de différentes régions. En dix ans, j'ai bien du connaître deux douzaines de tanières ! Et autant de chefs. Je dois dire que Vridush n'est pas le pire. Avant, la sélection était bien pire et on mourrait pour rien. Mais le manque de sang neuf dans cette longue guerre laisse moins de marge à ce niveau-là. Le campement de Rok, ça fait déjà quelques temps que j'y suis. C'est à partir celui-là que j'ai participé à l'attaque dont je te parlais tout à l'heure. Il a fallu du temps pour reconstituer un groupe conséquent comme celui d'aujourd'hui. Et toi comment es-tu arrivé ici ?

Je lui raconte, en prenant quelques raccourcis, ma courte existence.

- Seulement trois jours que tu es dans un camp ? enchaîne-t-il. Eh bien j'espère que tu as saisi les stratégies de manœuvres. Ne nous fais pas repérer, sinon je me chargerai de ton cas ! commente-t-il en riant de nouveau. Mais comme nous sommes dans la même galère, faisons de notre mieux pour nous entraider.

Un grognement me fait sursauter. C'est Vridush, qui patrouille le long du convoi. Nous continuons le trajet en silence, le soleil face à nous. Les guides nous font entamer l'ascension d'une colline rocailleuse assez élevée. Le trajet serpente sur la fin, et nous passons un col surplombant une nouvelle vallée. Assez loin au nord, un lac nourrit une rivière qui traverse la vallée devant nous avant de disparaitre dans une grotte, au sud ouest. Au beau milieu de la vallée, juste au bord du cours d'eau, se dressent quelques ruines, probablement les restes d'une petite ville, dont l'architecture m'est inconnue.

- Nous dormirons là-bas cette nuit, se met à répéter Vridush en longeant le cortège, pour éviter d'avoir à le hurler.

Ouf ! Je commençais à être épuisé. Je comprends Vridush, qui jusque là était avare en informations : la motivation regagne toute la troupe. La descente se fait rapidement, au pas de course par moments. Ou bien j'avais mal estimé la distance nous séparant des ruines, ou bien le temps est passé plus vite. Toujours est-il que nous arrivons aux abords de l'eau avant que le soleil ne soit couché. Un petit pont en pierre nous permet d'accéder aux édifices écroulés, sur l'autre berge. Aux restes de caisses de provisions dispersées au centre des ruines, je devine que l'endroit sert souvent d'étape aux voyageurs orques. Les cuisiniers s'affairent déjà à chauffer le repas de ce soir tandis que je contemple les lieux. Les bâtiments sont presque tous détruits, mais demeurent impressionnants. Ca et là, j'aperçois quelques statues encore debout. Si l'art orque que j'ai pu observer au campement était primaire et laid, celui-ci est plus poussé et du coup plus effrayant. Ce sont des Hommes, aux proportions que j'espère agrandies, tenant épées, boucliers, ou montant des chevaux. Tout est remarquablement travaillé, du moins ça devait l'être à l'époque. Aujourd'hui, les statues encore debout ont systématiquement été décapitées. Une des statues, la plus imposante, arbore même un crâne à la place de la tête.

Les marmites, dont la mixture n'est même pas encore chaude, sont dévorées en peu de temps. Tandis que certains affamés en lèchent le fond, je rejoins les Lynx pour passer la nuit. Une demie-douzaine d'orques veillent, torches en mains. Les flammes dansent devant mes yeux, me rappelant des jeunes ouargues en train de jouer. J'ai quelques pensées pour mon ancienne meute, principalement ma mère, que j'ai l'impression d'avoir quittée il y a une éternité. Le sommeil s'empare de moi.

April 27, 2008

Julien (jd)

Extending pango markup attributes

I'm currently facing a problem I just can't solve, involving pango and GMarkup's glib API.

I currently use pango markup in awesome, but I'd like to extend it to support more attributes.

Pango markup uses GMarkup API to parse the formatted string. The problem is that there's no way to extend what is parsed, and if a tag is unknown in the pango parser, it will just fail.

I've tried to implement my own parser with GMarkup, but… When I encounter a tag I don't know but that pango does, I just can't pass it to the pango parser function for this tag, since this pango function is private.

There was a try to extends the markup parser 2 years ago, but the patch was crappy since it exposed the private elements of pango markup parsing, which is the bad way to solve this.

So for now, I've no idea how to do this. I was first using the bad parsing method with string.h's functions which I for now reverted, because I do not really like that.

April 23, 2008

Félix (neo)

5 mois sans poster , la honte !

Bonjour à tous, Bon, mea culpa une fois de plus je n'ai pas pu m'occuper de mon blog ces derniers temps, je vais donc vous faire un petit résumé des petites choses qui m'ont animé ces derniers mois : Euromanager: Bon, vous l'aurez compris vu que vous n'aviez plus de nouvelles, nous avons...

April 18, 2008

Julien (jd)

Updating my .plan

I've been on holidays for one week now, breaking my usual workflow. Well, that allowed me to rest and to think about what I'd like to do and things I need to handle during next weeks.

The urgent things this next days will be my primary server replacement. It is currently dying, and I already had to change its power supply twice in a month. Unfortunately, I'm now at a point where I do not have any spare piece so if things go wrong again, I'm screwed. I need to collect some money and buy a new server, or maybe get a server if someone have an old or spare one to give me, I do not know yet.

On the awesome front, I'm about to release awesome 2.3, which will be the final minor release of the major branch 2. This will lead me to work on awesome 3 at a slower rate and a cooler pace.

Then, the thing I do not have to hurry for is awesome 3. There's no big problems in awesome 2, and the xcb-util stuff are not stabilized yet. After my gentle yelling on XCB mailing list, it seems that things will move but will slowly. So I do have time to make things right and do what I want on that branch, making bugfix release on awesome 2 if needed. You can read more about futur on my last post about awesome.

All this should give me some more spare time to work on the upcoming Debian release, lenny, which I'd like to work on. Two years ago (my god, time flies), we've done good work with the french cabal squashing critical bugs and I'd like to go back on this and squash asses again.

April 07, 2008

Julien (jd)

awesome: from 2 to 3

Last week I sent a mail about the upcoming developement strategy for awesome.

Long story short; we begin to work on awesome 3, dropping Xlib in favor of XCB, bringing out the first window manager using this bindings (if you do not count the demo one in the source repository ;-)).

Thanks to the amazing grunt work of Arnaud Fontaine, we already have a working version of awesome using XCB, and it works very very well. Better API, better code, and even faster code. That is awesome.

awesome 2.3-rc1 was released this morning so we'll begin shortly to work on the 3 branch and merge it into the master one.

April 02, 2008

Francois (Alf)

Apache Virtualhost generator

Currently I’ve not much time to work on Wisss :-( However, I will make a tiny dsl and generator to have a virtualhost file generated (independent from Wisss, which already generate a vhost). I’ve already done this with a shell script but it will be more powerful and easy to maintain for a few hours of work.

The initial need is for my own server but it will also be useful for my company. The goal is to provide our best practice for vhost in a tool.

March 27, 2008

Julien (jd)

PHP applications code quality

Ah, Erich, that IS so true. I never found a well written PHP application anyway, or it was only 10 lines long.

I guess that's primarily the language fault. It permits to do a lot of stuff and does not simplify, help nor force the simplest implementation methods like MVC which should be the base in Web developement.

Well, take as example what we would do with Python and GTK+ if they were like PHP and HTML (I do not have the API reference so it will be somewhat improvised):

#finally we do not need this module I wrote everything myself
#import somemodule
def main():
    # Well we want to do some printing
    window = GtkWindow()
    # Connect to the database without any abstraction, that sucks
    db = mysql.connect()
    data = db.query("select RANDOMLYTYPEDDATA from MYONLYTABLE");
    while data:
        # Ah, we do not have include() so we cannot reuse code
        # I'm a PHP developer, I do not know functions
        import somestuff
    window.print(somestuff.result)
    # Obviously, forgot to close db connection, etc.
    if form.data.field == "hello":
        # The user asked for hello, print hello
        window.print("hello")
    # debug
    print data[0]
    if form.data.anotherfield[0] == "morning":
        data = db.query("select anotherdata from MYONLYDATA")
    else:
        sys.exit(42)
    label = GtkLabel()
    # Yes know we construct the view!
    window.add(label)
    label.print(data)

That is typical PHP code: we just take randomly typed data from our DB eng... no wait, from MySQL (remember that's LAMP!!! Not LAPP or anything else, bitches!), then we print some HTML code with data, and we do tests on environment, forms, etc, and we get back data, reprint them, do not use functions but include() multiple times thousand of files and then do not close/free anything.

It's so easy to do bad code that lot of people coming from nowhere and who did not learn anything from other languages are doing it.

Another hypothesis coming from my experiment: PHP is a language which can be developed under any OS since it's server-side executed. A link between mostly brain dead "developers" from the Microsoft world and whose from the Free Software world. A clash.

I apologize to some of my coworkers doing better PHP all the day. :-)

March 26, 2008

Mathieu (Matthew)

Chapitre 6

Le discours

Le tunnel débouche au bout d'une dizaine de mètres sur une grotte assez vaste creusée dans la terre. Le sol est éclairé par une ouverture dans le plafond au milieu de la caverne. Située à quelques mètres du sol et grillagée, cette issue est inaccessible. Je me fige dans l'ombre mourante de la fin de la galerie pour observer la vingtaine de ouargues présents dans la pièce, qu'ils arpentent de long en large. Il règne une grande agitation : des échanges de grognements sont interrompus par quelques bagarres succinctes. Tous ont la tête levée et fixent l'ouverture sans se soucier de mon arrivée. Soudain, le grillage se soulève, déclenchant un tumulte chez mes congénères. La tête d'un Orque apparaît et pousse un cri perçant, ramenant un relatif silence. Il disparaît, laissant place à une grande marmite qu'il fait descendre à l'aide d'une chaîne. Une véritable frénésie s'empare maintenant des ouargues qui grimpent les uns sur les autres pour atteindre les premiers le récipient, dont je commence à sentir le contenu. La faim l'emporte sur ma peur et je m'élance dans la meute.

Ce ragoût, à la composition incertaine, était infâme mais j'ai tout de même réussi à en avaler assez pour me remplir l'estomac. Tandis que le chaudron remonte doucement, dégoulinant des restes du repas, chacun s'écarte du centre de la pièce et se réfugie calmement dans un recoin. Je n'avais pas remarqué, mais le soleil est presque couché, alors que la grille se referme sur ce ciel violacé. Exténué, je cherche à mon tour un endroit isolé pour la nuit. Je trouve un petit espace entre deux ouargues, déjà endormis, et je m'allonge en essayant de ne pas gêner mes voisins. J'observe les dernières lueurs du jour percer à travers le trou ainsi que quelques gouttes d'eau. La pluie s'intensifie rapidement et une flaque de boue commence à se former là où, quelques instants auparavant, nous étions tous agglutinés. Mes paupières se ferment d'elles-mêmes.

Le son puissant d'un cor me réveille en sursaut. Un orque vient de sonner dans sa corne juste au-dessus de la grille, avant de s'éloigner, donnant des coups de cor à droite et à gauche. Un à un, mes compagnons se lèvent et s'étirent. Quelques-uns commencent à prendre la direction du tunnel quand soudain, un des plus massifs, dont tout le monde se tenait à bonne distance, les écarte violemment pour passer devant.

- Poussez-vous, crapules ! lance-t-il brusquement.

Tous obéissent et nous suivons cette brute dans la galerie. La porte en fer est ouverte, et nous débouchons sur l'arène vide. Rok se tient debout au bord du mur, Vridush à ses côtés, et tous deux nous observent quelques instants. Nous nous asseyons face à eux. Puis, d'une voix imposante, Vridush s'adresse à nous :

- Tout d'abord, un changement de classe. Grodash, tu vas chez les Ours.

La grosse brute de tout à l'heure, déjà assis au premier rang, se lève et, d'un air fier, se dirige en trottinant vers la deuxième porte en partant de la gauche, qui vient d'être soulevée par Rok. Mes camarades semblent tous soulagés et je dois dire que je le suis aussi.

- Ce matin, nous allons continuer à nous exercer aux tactiques de guerre de base. Ensuite, entraînement au combat. En place !

J'observe mes compagnons : trois ouargues se détachent du lot et se placent côte à côte, commencant à trottiner, suivis par les autres. Je suis le mouvement, remarquant que petit à petit, tout le monde se positionne par rangée de trois. Je trouve rapidement une place à gauche d'une rangée, vers l'intérieur de l'arène, vers la fin de la troupe. Les meneurs suivent la courbe de l'arène et nous faisons ainsi quelques tours, rapidement bouclés malgré notre allure assez lente. Au bout de plusieurs minutes, Rok se rapproche du bord et lance subitement un cri bref. Tous s'arrêtent, tapis au sol. Je ne manque pas de heurter le ouargue qui me précède, mais je me remets en place promptement. Je m'efforce d'être aussi immobile que les autres tandis que Rok nous scrute. Quelques instants plus tard, ce dernier lance un autre cri, plus long et plus puissant, et la meute se remet en marche.

S'il ne me faut pas longtemps pour comprendre les principaux ordres donnés par Rok - marche, course, arrêt, dissimulation, attaque -, en revanche l'entraînement est long et intensif. Enfin, au soulagement de tous, le Maître ordonne une pause. Vridush réapparaît au bord de l'arène, et reprend la parole :

- Préparez-vous maintenant pour les combats. Trouvez un adversaire et répartissez-vous dans l'arène. Je rappelle la règle pour le nouveau : saisissez la gorge de l'ennemi et vous avez gagné. Essayez de ne pas faire gicler trop de sang.

Ils veulent nous tuer ou quoi ? Je n'ai même pas encore repris mon souffle que certains sont déjà face à face. Visiblement, je suis en moins bonne forme que la plupart et j'espère que Vridush ne l'a pas remarqué. Un ouargue s'approche de moi et me fait signe de me préparer. Un peu plus grand et plus vieux que moi, son pelage gris clair m'indique qu'il n'est certainement pas un éclaireur. Si je veux le battre, il va falloir que j'utilise toute ma ruse. Je ne pense pas que l'astuce d'hier, contre Gark, marchera : cet adversaire-ci est plus expérimenté et ne fera pas l'erreur d'exposer sa gorge si facilement. Je me place donc à quelques mètres de lui et élabore une stratégie d'attaque. L'atmosphère est terrifiante dans la fosse : quelques queues se balancent nerveusement, aucun autre mouvement n'est perceptible. De même, seuls quelques grognements viennent rompre le silence pesant. Soudain, Rok pousse le hurlement d'attaque. Les yeux de mon rival, que je fixais depuis un moment, changent subitement d'aspect : ses pupilles se dilatent en un instant et ces deux billes noires semblent tenter de pénétrer mon esprit. Je suis comme paralysé, terrifié par cette attitude que je n'ai jamais vue. Je n'ai le temps de parer son attaque que par un léger pas de côté qui ne m'empêche pas de recevoir son énorme patte sur le museau. Le coup ne m'assomme pas mais me déstabilise. Le temps de me ressaisir, son autre patte m'assène un violent choc sur la mâchoire. Je sens alors ses crocs saisir mon cou et le lâcher aussi subitement.

Abasourdi, je ne comprends pas ce qui m'est arrivé. C'est comme si je ne pouvais bouger qu'au ralenti, presque témoin de ce qui se passe. Autour de nous, les autres sont encore en train de se battre, et, alors que je suis indemne, bien que perdant, d'autres ont le visage en sang.

- Eh ! Le nouveau ! me lance mon adversaire. T'as pas l'air de savoir te battre ! Tu es un éclaireur c'est ça ?

- Oui, lui réponds-je.

- Essaye de libérer tes instincts. Ne réfléchis pas trop, bats-toi. Imagine que je suis ton repas. Si tu te laisses corriger comme ça à chaque fois, je ne donne pas cher de ta peau.

Mes instincts ? Mon repas ? Je ne vois pas comment ça peut m'aider à le battre. Autour de nous, les combats commencent à prendre fin un par un. Après un vacarme épouvantable, le silence revient petit à petit, et une fois la dernière mâchoire refermée sur la dernière gorge, Vridush intervient :

- Pas si mal, à part le nouveau. Minable. On recommence.

Je me prépare à être un peu plus direct cette fois-ci. Au cri de Rok, les pupilles en face de moi se dilatent à nouveau. Je bondis de toutes mes forces, tous crocs découverts, mais ces yeux semblent savoir ce que je vais faire. Cette fois, il ne lui faut qu'un coup pour mettre à découvert ma gorge. Encore perdu.

- Tes instincts je te dis ! me lance mon adversaire. Laisse-toi aller à la rage !

Je crois comprendre ce qu'il veut dire. Cet état second dans lequel je me trouve quand je chasse une proie, c'est cela dont il parle. Sauf que je n'ai jamais su contrôler ce sens. Je peux lutter contre, mais je ne sais pas le provoquer. Trois autres combats se passent, trois autres défaites, peut-être un peu moins sévères mais cela ne change rien : je suis loin de son niveau. Je me concentre de toutes mes forces pour me mettre en rogne, mais rien n'y fait, je me fais de nouveau battre à plate couture.

Alors éclate un rire rocailleux au dessus de moi. Vridush me regarde d'un air amusé :

- Pitoyable... Je ne sais pas pourquoi je t'ai mis dans les Lynx. J'aurais dû créer une classe spéciale pour toi : les Cafards !

Il est alors pris d'un fou rire, bientôt suivi par le reste de la meute. Cette remarque me met hors de moi, et j'aimerais qu'il descende dans l'arène, pour lui faire cesser ce rire excédant. Le calme revient et je me prépare pour le prochain combat. Un cafard ! Je vais lui montrer. Je fixe mon rival qui a encore le sourire aux lèvres. Je sens que ça vient. Enfin ! J'entends à peine le cri de Rok.

Impulsion. Cri surpuissant. Grand coup de patte. Esquive. Mords ! C'est pas la gorge. Esquive. Mords ! Gorge ! Arrêtes !

Je reprends mes esprits, le cou de mon ennemi entre les dents. Je n'en reviens pas ! J'ai réussi ! Autour de moi, certains combats ont cessé prématurément et beaucoup de ouargues me regardent, l'air médusé. Je fixe alors Vridush, qui, lui, a plutôt l'air perplexe. Au bout de quelques secondes, il me hurle dessus :

- Qu'est-ce que tu as à me regarder ? Tu veux une médaille ? C'est lamentable que tu n'y sois pas arrivé avant ! Essaye donc de battre ton adversaire à nouveau, et on verra !

La rage qui s'est emparée de moi à l'instant s'évapore petit à petit et je finis par baisser le regard. Il faut que je cesse de me mettre en avant de la sorte, je sens que c'est dangereux pour moi.

Durant les combats suivants, je sens que j'ai dépassé un niveau : je parviens à laisser mes instincts prendre le dessus la plupart du temps. Même si je ne gagne que peu de duels, je suis assez fier de moi. Je n'avais jamais vraiment contrôlé cet état second auparavant. Ce que je ressens est assez difficile à décrire. Tout d'abord, j'ai vraiment l'impression que ce n'est pas moi, que quelqu'un d'autre prend possession de mes membres et de ma tête. Mon esprit n'a qu'un pouvoir limité sur mon corps : sans être totalement spectateur, je ne peux que suggérer des mouvements ou des idées. Ce sentiment est assez désagréable, mais les bénéfices que j'en retire sont sans égal. D'une part, je gagne en rapidité et en force, qui, sans être décuplées, permettent de me donner un avantage sur mon ennemi. D'autre part, j'ai la sensation de pouvoir anticiper les mouvements de ma cible. Tout du moins, j'ai eu cette impression à plusieurs reprises et je ne me l'explique pas. Mais face à ce ouargue, je ne maîtrise rien et c'est certainement pour cela que je me retrouve souvent sur le dos.

Le soleil a depuis longtemps dépassé le zénith quand Vridush nous ordonne d'arrêter les combats, et disparait de notre vue. Je suis épuisé, mais indemne : à part quelques griffures un peu partout sur le corps, je n'ai rien. Il n'en est pas de même pour certains de mes compagnons, dont plusieurs ont des blessures assez sérieuses. Je ne m'en fais pas pour eux car nous, les ouargues, avons une capacité de régénération assez impressionnante comparée à celle d'autres animaux. Nous ne craignons pas les infections, à part les poisons, mais de toute façon les individus estropiés ou malades sons systématiquement abattus. C'était le cas dans mon ancienne meute, et, vu la bonne santé générale - sauf la malnutrition flagrante - des ouargues de ce camp, c'est le cas ici aussi.

Vridush, déjà de retour, s'adresse à nous :

- Pas d'entraînement cet après-midi. Le Grand Prédicateur nous fait l'honneur de sa visite et nous fera un discours.

Il disparait à nouveau. Quelques instants plus tard, les portes métalliques des trois autres classes se soulèvent, et l'arène se remplit de ouargues aussi différents les uns que les autres. Les Limaces sont reconnaissables parmi la foule : petits et maigres, certains ne semblent même pas avoir un an. Quelle horreur ! Au lieu de jouer avec leurs frères et sœurs sous le regard de leur mère, ils sont ici, dans ce lieu de mort, sans repos ni affection. Toute cette classe semble apeurée, surtout par la classe des Mammouths. Je comprends mieux ce que voulait dire Vridush quand il me disait que je n'en ferai jamais partie : ils sont tous du même gabarit que lui, énormes, musculeux et terrifiants. Je pensais que Vridush n'était qu'une abomination de la nature, mais il semble qu'il fasse partie d'une race entière, prédestinée à la guerre.

La fosse est maintenant tellement pleine que nous devons tous nous tasser. Cependant, tout est calme. De longues minutes s'écoulent quand finalement apparaissent Rok, Vridush et, entre les deux, le Grand Prédicateur. C'est un vieux ouargue édenté, misérable à voir. Il semble tenir tout juste sur ses pattes, tremblant de tous ses membres. La fourrure terne, il arbore un collier imposant qui semble avoir été confectionné par les Orques. Malgré son allure pitoyable, j'ai l'impression qu'il devait être splendide dans sa jeunesse, car il dégage une aura puissante et étrange, incitant au respect immédiat.

Une fois arrivé péniblement au bord de la fosse, il s'allonge. Après avoir balayé l'assemblée de ses yeux blanchâtres, il commence son sermon, d'une voix lente et faible :

- Bonjour, mes chers enfants. Aujourd'hui, j'aimerais vous parler de la Terre. Dans ma longue vie, j'ai connu de nombreux maîtres et ai voyagé là où aucun ouargue n'a jamais posé une patte. J'ai vu l'Oeil, celui de notre Maître, le plus puissant de tous. J'ai vu les lointaines Montagnes du Sud, qui se perdent dans les nuages, ainsi que la Grande Mer de l'Ouest, tantôt calme et apaisante, tantôt déchaînée et épuisante. Vous qui n'avez encore rien vu, vous n'avez pas eu l'occasion de vous pencher sur le destin du monde comme je l'ai fait. Et croyez-le, j'ai peur. Une menace pèse sur notre peuple, sur notre descendance et sur les peuples de nos alliés. Cette menace grandissante, je l'ai toujours connue, tout comme l'ont connue des générations de ouargues, d'orques, et de toutes les créatures méritant de vivre sur ces Terres. Ces forces malfaisantes, ces démons infâmes, ont créé des êtres abominables dans le but de nous anéantir et c'est pour cela que nous devons nous défendre. L'Oeil me l'a dit, nous l'a dit à tous, et le répète sans cesse : une vie sans souffrance et sans faim ne passera que par leur anéantissement. Levez-vous et bannissez avec moi ces monstres !

Le Grand Prédicateur, dont la voix semble avoir gagné en puissance tout au long du discours, est devenue un cri. Essayant de comprendre ce qu'il raconte, je n'ai même pas remarqué qu'il s'était levé, et, suivant le mouvement de l'auditoire, je me lève à mon tour. Chacun semble passionné et boit les paroles de l'orateur. Cette brève pause en frustre même certains, tandis que d'autres commencent à grogner, en écho aux vociférations du vieil ouargue. La clameur qui s'est installée plonge l'arène dans une atmosphère très particulière. Je me sens mal et j'ai vraiment l'impression d'être le seul. Je me mets cependant à grogner et à m'agiter, afin de me noyer dans la foule, car Vridush et Rok nous observent toujours.

- Les Elfes ! reprend le Grand Prédicateur, suivi par des hurlements brefs mais assourdissants de la troupe. Les Elfes sont un des pires fléaux que nous ayons jamais connus. Même si leur nombre est en diminution, ils ne restent pas moins des dangers pour nous et nos enfants ! Grands et rapides, ils sont issus d'une dégénérescence provoquée, une habile machination de l'Ennemi destinée à nous tuer un par un. N'ayez aucune pitié si vous les rencontrez ! Les Nains ! enchaîne-t-il toujours plus intensément, sous les acclamations du public. Les Nains, autrefois terrés dans nos montagnes, sortent maintenant de leurs cachettes et viennent, main dans la main avec les Elfes, détruire nos espèces ! Si leur tête dépasse de peu les herbes, méfiez-vous de leur ténacité et de leur robustesse ! Les Hommes ! rugit-il, suivi d'un vacarme impossible. Les Hommes, pour finir, sont la pire des espèces vivant dans ce monde. S'ils ressemblent physiquement aux Elfes, ils sont d'une perfidie bien pire et eux se reproduisent comme des parasites, sans aucun contrôle sur la qualité de leur progéniture. Mais je ne donne pas cher de leur peau une fois que commencera la grande Guerre, menée par l'Oeil. Si l'avenir vous paraît incertain, continue-t-il après une courte pause, sachez que j'ai deux bonnes nouvelles pour vous, aujourd'hui. Tout d'abord, votre Maître a reçu l'ordre d'attaquer le campement ennemi installé dans la Vallée Rouge, tout près d'ici, et cette attaque se fera dans trois jours !

L'annonce qui me terrifie est une réjouissance pour mes voisins, comme s'ils attendaient ce moment depuis des années. Le tumulte engendré ne cesse que lorsque le vieux reprend la parole :

- L'autre bonne nouvelle, c'est que les éclaireurs du camp vous ont rapporté un cadeau de taille. Le voici : un Humain bien saignant ! Délectez-vous !

Rok, qui s'était éclipsé quelques instants auparavant, revient, tenant par le pied un petit homme. C'est la première fois que j'en vois un mais je suis capable de dire que celui-ci n'est pas bien vieux. Poussant des cris aigus à peine audibles parmi la tempête ambiante, il se débat en vain, suspendu au dessus de la meute de Mammouths affamés. Rok lâche son étreinte, et le petit corps chute puis disparaît de ma vue. Quelques giclées de sang et des bruits d'os broyés plus tard, le calme revient. Rok, Vridush et le Grand Prédicateur sont partis et les portes de fer sont relevées. Chaque classe regagne ses quartiers pour la nuit, et même s'il ne fait pas encore nuit, je suis exténué.

March 18, 2008

Julien (jd)

Are chickens hacking?

I was just taking a look at #awesome IRC stats, and I saw that there was a huge traffic 2 days ago. That was weird, so I did take a look in my log files. And yes, in fact, something happened.

At 03:26 GMT+1, suddenly, several hundreds of users joined the channel in somethng like 1-2 minutes, and then just left in same timeline. Some minutes after that, some guys began to talk with one of the real awesome user who was hanging out there.

It seems that these guys describe themselves as a "Turkey Hack Team".

I've seen a lot of hacked box in my (short) sysadmin life. Many of my customers have no idea of what security is, and this week I'm still working for a customer with an hacked box.

And one of the thing I never got was why all these "hackers" were downloading and installing IRC bot or IRC proxy on these compromised boxes. I say "hackers" with big quotes, because when I see in their command line history somethings like "rm .bash_history; logout" or "./exploit_of_dead_to_become_root" when the user they got the password has sudo right, I must laugh.

Now, I understand: it seems there are doing some sort of "parade", making all their bots joining an IRC channel and then left. That's so amazing. that I can say for sure: if I'd be a chick, I'll be stripping my shirt vehemently.

But the thing is that so far I've no idea if a turkey hack team is somehow related to chickens.

March 11, 2008

Francois (Alf)

New features in Wisss : authentication, acl, blocks

Following my last post about authentication, I’ve implemented it in Wisss. I’ve also added a simple ACL management which retrieves all resources, roles and privileges from database and constructs a Zend_Acl object in the boostrap. I’m not very happy to have to retrieve all stuffs about ACL each time, but for now, I have no time to implement something smarter.

To manage ACL, I’ve also begun to generate an admin interface which is also for now quite simple (displaying a big table with all roles and resources). Concerning resources, I’ve define three layers : module, screen, action. I don’t know yet what is the best practice to apply ACL to a particular object. I will think of it during next weeks.

I’ve also added a block view helper which displays blocks in the layout if you are allowed to. A block is just a screen rendered as a menu, what minimize concepts in the model. There’s also a special block : the context. Thanks to a context action helper, each action can register contextual action which will then appear in the context menu. For instance, the “create” action will be able to set “edit” and “delete” action as contextual actions.

I’m busy this week, and I was this last two weeks (giving a ZF formation ;-) ) but I will switch form generation to Zend_Form as soon as possible. Despite my first opinion, which was against the use of Zend_Form, I find this component very useful and productive. Even if it’s bad to put view logic in the controller, it seems to be far easier to maintain.

I think the 0.3.0 release will happen soon including everything to build a blog example (and many other application). 0.4.0 will focus on cleaning up the code, polishing the interface, trying to improve ACL. I hope there won’t be a 0.5 :-)

March 08, 2008

Mathieu (Matthew)

Chap. 5

Le tunnel

Etourdi, je me relève avec peine : mon épaule droite me fait souffrir. Gark, à quelques mètres de moi, semble avoir mieux réussi son atterrissage et procède comme moi à un repérage des lieux. La fosse, à peu près ovale, est profonde de deux ou trois mètres et ses murs ainsi que le sol ont été creusés bien droits. Une des deux grandes parois est lisse, tandis que, dans le mur opposé, j'aperçois de lourdes portes en fer, d'environ un mètre de hauteur. Deux grosses chaînes relient le bas de chaque porte au haut du mur de la fosse, afin, je pense, de pouvoir les ouvrir sans avoir à descendre. Chaque porte présente un dessin différent mais je distingue mal ce qu'ils représentent. Je me retourne brusquement, en entendant un grognement sourd derrière moi. En haut du mur sans porte, l'orque géant nous observe. Une deuxième tête dépasse du mur : un ouargue l'a rejoint et nous fixe à son tour. Tout comme l'orque, ce ouargue sort tout droit de mes pires cauchemars : la fourrure rouge sombre et la crinière blanche, il fait à peu près deux fois ma taille. Que fait-il là-haut, avec cette infâme créature ? Est-il de leur côté ?

- Ecoutez-moi ! crie-t-il d'une voix rauque et lourde, presque incompréhensible. Je vous explique comment ça marche ici. Je m'appelle Vridush. Vous appartenez à ce camp, Ash Tulûk. Finie la liberté. Vous pouvez mourir à tout moment si vous ne faîtes pas ce qu'on attend de vous. Rok, dit-il en montrant le molosse qui nous a jetés dans la fosse, est le Maître des ouargues et il a tous les droits sur vous, comme moi.

Il s'arrête quelques instants, le temps de nous laisser assimiler ses paroles.

- Battez-vous, lance-t-il froidement.

- Quoi ? répond Gark.

- Faîtes ce que je dis ! Battez-vous !

Je ne comprends plus rien. Pourquoi nous amener dans un camp pour nous faire nous battre ? Peut-on être assez cruel pour faire ça par plaisir ? Je n'ai jamais attaqué un ouargue et je n'ai pas l'intention de le faire. Je lance un regard à Gark, juste à temps pour voir ce scélérat se jeter sur moi. J'ai juste le temps de me redresser vers lui avant qu'il n'abatte ses pattes sur ma gueule, nous faisant rouler dans un des coins de l'arène. Je me retrouve sur le dos, avec cette teigne essayant de me mordre la gorge. Je donne une puissante ruade qui propulse son corps, assez léger, quelques mètres plus loin. Me relevant, je me rends compte que plusieurs orques sont apparus tout autour de la fosse, nous hurlant dessus. La silhouette de Rok, deux fois plus grosse que toutes les autres, est facilement reconnaissable. A peine relevé, Gark fonce sur moi et je m'élance à mon tour. Je vois qu'il s'apprête à sauter et une idée me vient à l'esprit. Je m'abaisse aussi pour préparer mon saut mais, au dernier moment, je me fige au sol. Mon adversaire, déjà en l'air au-dessus de moi, semble désemparé, alors que, bondissant maintenant vers le ciel, je lui saisis la gorge. Je le ramène violemment à terre, l'assommant à moitié. Il est à ma merci, je n'ai plus qu'à serrer ma mâchoire pour l'achever.

- Arrêtez ! hurle Vridush.

Je lâche la gorge de Gark. C'est la première fois que je goûte du sang ouargue et finalement ce n'est pas si mauvais. Le pauvre respire difficilement, les yeux fermés et le cou en sang. Ca lui apprendra. Les spectateurs se dispersent progressivement, visiblement déçus de la rapidité du combat. Rok et Vridush se jettent dans l'arène et se dirigent vers le blessé, qui essaie misérablement de se remettre sur patte. Rok l'examine rapidement, puis le saisit par la peau du dos et le soulève sans difficulté. Il se dirige vers la porte la plus petite, tout à droite. Un puissant cri, et un orque resté en hauteur s'empresse de tirer sur les chaînes afin de soulever la porte métallique. J'aperçois un tunnel sombre qui bifurque rapidement. Gark y est jeté brutalement et la porte se referme. Rok s'approche maintenant de moi, menaçant. Je me couche devant lui car j'ai bien compris que je dois me soumettre. Vridush s'approche à son tour.

- Comment t'appelles-tu ? me grogne-t-il.

- Waknar.

- Tu seras éclaireur. Tu as l'air rusé pour un débutant. Comme tu as gagné ton combat, tu es de la classe des Lynx, dit-il en m'indiquant la deuxième porte en partant de la droite. Ce qui veut dire que tu peux être envoyé à la guerre. Les Limaces, comme ton minable d'adversaire, sont inutiles tant qu'ils ne sont pas endurcis et dressés. Pour moi, tu devrais être une limace, espèce de vermine, mais les ordres sont de baisser le niveau de chaque classe. Pas assez de ouargues ces temps-ci. Si tu te muscles et que tu apprends un peu, tu pourras passer à la troisième classe, les Ours. Et vu ton gabarit, ça sera déjà pas si mal. La classe des élites, les Mammouths, sont dans le tunnel de gauche. Pigé ?

J'acquiesce rapidement. Lynx, deuxième porte en partant de la droite, éclaireur. Je ne vois pas encore à quoi tout cela peut servir, à part m'éviter des coups. Les deux chefs m'observent attentivement, comme pour me faire comprendre qui respecter. Puis le Maître Rok lance deux cris et, tandis que les portes des Mammouths et des Lynx s'ouvrent, il escalade rapidement le mur, faisant preuve d'une souplesse étonnante étant donnée sa stature. Vridush me regarde avec insistance et je me dirige vers le tunnel de ma classe. Je remarque que la porte, au-dessus du trou, montre une vague représentation d'un animal à quatre pattes, avec deux petites oreilles. Du coin de l'œil, j'aperçois Vridush qui trottine vers l'entrée des Mammouths. Je m'engouffre dans le tunnel, la porte claquant lourdement derrière moi. L'endroit est sec, très sombre. Mes yeux mettent un moment à s'accommoder à l'obscurité. J'ai l'impression que, la porte se refermant derrière moi, je viens d'échapper de justesse à la mort.

Combien peut-il y avoir de ouargues dans ces tunnels ? En tout cas, je ne semble pas faire partie des plus faibles, ce qui me réconforte quelque peu. J'entends quelques échos de grognements ouargues et des effluves de sueur m'arrivent à la truffe. Cette odeur me rappelle celle des chasseurs de mon ancienne tanière lorsqu'ils rentraient de la chasse. J'avance doucement et prudemment, redoutant un autre combat à chaque tournant de la galerie.

March 04, 2008

Julien (jd)

We've been almost down

I had a big fright this afternoon. My friend ludo asked me to shut down my main server (delmak.naquadah.org) for racking one of my new equipement.

Delmak is my oldest server, hosting almost everything since 5 years. I knew I will have to shut it down some days, but after 280 days of uptime I was pretty confident everything will be allright.

But obviously, it refused to boot again. Fortunately, only the power was burned, and after changing it with a new one, we manage to get delmak booting again.

Now I'm really thinking about some better solution to not having everything on a server that can explose any day now. :-D

The sloppy focus

While most of you people and readers are doing quick and great works in Python, Ruby, or any modern language, there's still people like me fighting with The Low Level.

I like that, but the X architecture is just the proof of concept of an architecture which wrongly evolved because it was not designed to. Xlib and all concepts it is based upon where probably fun and sufficient in the 80's, but nowaday, it can really be a joke. I really hope that somedays Xorg will break things and start a new fresh X design (at least from Xlib point of view).

It's not that I think Xorg people are doing bad stuff, but there are mostly bailling out from a long code and design history IMHO.

So, last weeks I was trying to fix the sloppy focus in awesome. I've found a real interesting Web page from Alex Hioreanu about various issues that we encountered too. I've been trying ahwm hack, but it's not really reliable.

And then I've been trying a lot of things, and this morning I figured out something which works pretty well. It just fails in some corner case with GTK+ apps that are not reporting XMotionEvent when the pointer move, and I don't know why and how get them.

Let's see.

March 01, 2008

Mathieu (Matthew)

Chap. 4

Gark

J'ai tant de questions qui me trottent dans la tête. Où allons-nous ? Aucune idée. Vers le sud, un sud inconnu. Je laisse un paysage nouveau défiler devant mes yeux sans vraiment y prêter attention. Que vais-je devenir ? Pourquoi ne m'ont-ils pas déjà tué ? Peut-être que le voyage sera long et qu'ils ne veulent pas que ma chair commence à pourrir trop vite. J'examine les opportunités qui s'offrent à moi. M'enfuir, oui, mais comment ? La seule issue de ce chariot est l'arrière, grand ouvert sur la plaine, mais trois orques trottinent derrière l'engin. Mes dons de rôdeurs ne me serviront pas, il faudrait que j'utilise la surprise, et surtout la chance. En tout cas il n'est pas question d'attaquer trois orques. Trop épuisé pour me battre ou pour fuir. Je ne vois qu'une seule chose à faire : tenter de me reposer pour peut-être passer à l'attaque plus tard. A cette simple idée, mes paupières semblent s'alourdir. Je ne lutte plus, je verrais bien si je me réveille.

Quelque chose me touche le dos. Je me réveille en sursaut. Je ne sais pas si j'ai dormi ; probablement car il fait maintenant nuit noire. C'est cet autre ouargue qui me secoue de sa patte. Je le vois mieux à présent : les trois orques derrière le chariot ont allumé des torches. Sa tête est fine, il a les yeux jaunes et un air terrifié.

- Oh j'ai cru que tu étais mort ! me chuchote-t-il.

Ces quelques mots prononcés dans ma langue résonnent en moi et arrivent comme une lueur dans la nuit. Ne pas être seul, surtout face aux pires dangers, c'est le sentiment peut-être illusoire d'un réconfort inattendu.

- Je m'appelle Gark, continue le jeune ouargue.

- Waknar, gargouillent mes cordes vocales, me rappelant que je n'ai pas parlé depuis plusieurs jours.

- Tu n'es pas blessé ? me demande-t-il, en me montrant son flanc droit, la fourrure couverte de sang séché.

- Non, j'ai eu ... de la chance.

Ces prémisses de familiarité m'apportent un peu d'espoir : le monde n'est pas entièrement contre moi. Un des orques à quelques pas de nous lance soudain un grognement pétrifiant. Gark et moi nous taisons et reculons. Tapi au fond du chariot, mon compagnon d'infortune attend comme moi son destin.

Le chariot continue son chemin alors que les premières lueurs du jour se dévoilent à l'est. Je distingue maintenant quelques reliefs aux cimes enneigées, lointains monts aux contours étonnamment acérés. Cette mâchoire semble vouloir dévorer tous les petits nuages qui passent à sa portée. J'ai faim.

Au fur et à mesure que la lumière croît, le paysage change, passant d'une plaine verdoyante sans relief à des collines plus rocailleuses. La course du chariot ralentit, freinée par une pente plus franche, puis nous semblons arriver sur un plateau. Ce transport orienté vers l'arrière m'est très désagréable, moi qui suis habitué à observer attentivement lors de mes explorations. Je me concentre donc sur mon ouïe, mon seul sens susceptible de m'informer de ce qui va suivre. Outre les cahots et les grognements orques, je perçois maintenant un lointain tumulte percé par des cris stridents. Encore des cris d'orques, et ils semblent nombreux. Le vacarme se rapproche et des bannières plantées dans le sol me confirment que nous entrons dans un campement. Nous dépassons quelques gardes et franchissons une ouverture dans une palissade de pieux aiguisés en bois. Deux des gardes referment la porte par laquelle nous sommes passés. Ces infâmes êtres pullulent en ces lieux et cela me donne la nausée. Si, il y a quelques heures, je songeais à m'échapper, tuant peut-être un orque au passage, l'idée m'est sortie de la tête, submergé par la terreur qui me saisit maintenant au plus profond des entrailles. Par groupes de quatre ou cinq, les orques sont réunis autour de petits feux. L'arrivée du chariot ne déclenche que quelques regards, les curieux se contentant d'un coup d'oeil sur la cargaison. Mon compagnon est visiblement aussi effrayé que moi : les yeux grands ouverts et les canines découvertes, il scrute chaque nouvelle créature arrivant dans notre champ de vision. Ni lui ni moi ne bougeons ni ne faisons un bruit. Le chariot s'arrête.

Malgré son rythme déjà élevé, mon cœur s'accélère. Quelques minutes s'écoulent sans que rien ne se passe. J'observe les deux gardes : ils sont fatigués mais semblent toujours alertes. Gark et moi échangeons quelques regards, comme si nous attendions que l'autre fasse quelque chose. Soudain un immense orque apparaît, grogne sur les deux soldats qui s'éloignent. Monstrueux, le teint gris et sombre, il se tient plus droit que la plupart des autres, arborant une armure imposante. Son visage, déjà difforme, est parcouru d'une profonde cicatrice de l'oreille gauche au coin de la bouche. En un saut, il monte dans le chariot et se rue sur nous. Nous nous plaquons davantage vers le fond sans parvenir à éviter ses énormes mains qui nous saisissent par la peau du cou. D'une force incroyable, il nous extirpe du chariot et j'étouffe à moitié. Rien à voir avec la délicate mâchoire de ma mère quand j'étais petit. La brute nous traîne sur quelques mètres, puis nous jette l'un après l'autre en avant et nous tombons de plusieurs mètres dans une fosse poussiéreuse.

February 26, 2008

Julien (jd)

Back from holidays

After 10 days of nice holidays, I'm back. I was totally offline, so I had to read some hundred of mails first, which is done now.

For a good restart, I've fixed a bunch of bugs in awesome and released 2.2-rc2 version. I've also migrated apt-build repository on Alioth from Subversion to git. I've uploaded a new version of this one with some patches, and a also put in the archive a new version of the mp32ogg package.

Next step will be to move my packages repositories which are in my global home Subversion repository, to my own git repositories on Alioth.

February 25, 2008

Maxime (ckiop)

life :)

pitit panda !

February 21, 2008

Francois (Alf)

Secure authentication without SSL (part2)

After chatting with my colleagues, we noticed that my CRAM can be worth than nothing.

First, I have forgotten to precise what was the goal. It doesn’t prevent from stealing session by a man in the middle. The goal was to avoid seeing password on the network (if you use the same for all websites) and to prevent replay attack. The CRAM prevent replay by asking for a response with a different salt each time but it implies that the client and the server share the password. I was mistaken with this approach.

It’s a known and good practice to store a password hash instead of plain text password since a read access to the database doesn’t allow an attacker to authenticate since he sends the password in plain text and the server makes the hash. With my CRAM, even if you only have the hash, you can authenticate. That’s the security hole. Since you can’t prevent from a man in the middle attack without SSL, the CRAM seems useless.

But we still want to prevent replay and showing password. First, let’s come back to a basic authentication : we send username and password in plain text, the server makes the hash of the password and compare it with the one in database. To prevent the plain text exchange, we will store a double hash of the password in database : sha1(sha1(password)). The client sends sha1(password) and the server apply a new sha1 before comparing. Concerning the replay, we will use the CRAM. The server sends a unique salt for each try and the client still sends sha1(password) for authentication. The client will also send sha1(salt+md5(password)) as the challenge response. Then the server can authenticate the client with sha1(password) and ensure uniqueness of the challenge with the challenge-response.This implies to store sha1(sha1(password)) and md5(password) in database.

We have the best of the two approach. A man in the middle won’t see the password in plain text and won’t be able to replay the authentication because of the CRAM. He still is able to steal the session, but as long as it is valid. If the valid user logs out, the session becomes invalid. If an attacker has access to the database, he will find md5(password) and sha1(sha1(password)) what will allow him to answer to the CRAM but not to the basic authentication (which wait for sha1(password)).

This method remains low secure but I can’t see anything better without SSL. Like Bram sugessted, I should add a basic plain text authentication by default if javascript is disabled.

February 18, 2008

Francois (Alf)

Secure authentication without SSL

Last days, I’ve implemented authentication in Wisss. The goal is to have a secure authentication without the need to use SSL. I’ve then choose a basic Challenge Response Authentication Mechanism which prevent to send password in clear text.

The mechanisme is simple :

  1. The server send a unique salt, which can be used only once
  2. The client answer with its username and SHA1(salt+SHA1(password))
  3. The server retrieves user’s password SHA1 from database and do SHA1(salt,sha1_password)
  4. if the two match, the user is authenticated

Here is the code for the server (it’s inside a Zend controller, but it can easily be implemented for all framework/language) :

The CRAM authentication adapter for Zend_Auth :


class Wisss_Auth_Adapter_BasicCram implements Zend_Auth_Adapter_Interface
{
    protected $login ;
    protected $digest ;

    public funtion __construct($login,$digest)
    {
        $this->login = $login ;
        $this->digest = $digest ;
    }

    public function authenticate()
    {
        $auth_session = new Zend_Session_Namespace('auth');
        // retrieve salt from session and erase it since it's used once
        $salt = $auth_session->salt ;
        unset($auth_session->salt) ;
        // digest received from client
        $cram_from_client = $this->digest ;
        // retrieve password sha1 digest from database for the user provided
        require_once('Wisss/Dao/Factory/Abstract.php') ;
        $dao_user = Wisss_Dao_Factory_Abstract::getDao('User','core') ;
        $user = $dao_user->findBy(array('login' => $this->login)) ;
        $sha1_password = $user[0]->getPassword() ;
        // compute the CRAM digest
        $cram_from_server = sha1($salt.$sha1_password) ;
        if($cram_from_client == $cram_from_server) {
            return new Zend_Auth_Result(Zend_Auth_Result::SUCCESS,$this->login) ;
        } else {
            return new Zend_Auth_Result(Zend_Auth_Result::FAILURE,$this->login) ;
        }
    }
}

The code of the controller :
class LoginController extends Zend_Controller_Action
{
    public function indexAction()
    {
        $salt = md5(uniqid(rand(), true)) ;
        $auth_session = new Zend_Session_Namespace('auth');
        $this->view->assign('login_salt',$salt) ;
        $auth_session->salt = $salt ;
        $auth_session->referer = $_SERVER['HTTP_REFERER'] ;
    }

    public function authenticateAction()
    {
        $auth_session = new Zend_Session_Namespace('auth');
        require_once 'Zend/Auth.php';
        $auth = Zend_Auth::getInstance();
        // Set up the authentication adapter
        require_once('Wisss/Auth/Adapter/BasicCram.php') ;
        $authAdapter = new Wisss_Auth_Adapter_BasicCram($this->_getParam('login'), $this->_getParam('password'));
        // Attempt authentication, saving the result
        $result = $auth->authenticate($authAdapter);
        if (!$result->isValid()) {
            // Authentication failed
            $this->_redirect('/login') ;
        } else {
            // Authentification succeeded
            // regenerate id to prevent session fixation after successfull authentication
            Zend_Session::regenerateId();
            $referer = $auth_session->referer ;
            unset($auth_session->referer) ;
            if($referer != $_SERVER['HTTP_REFERER']) {
                $this->_redirect($referer) ;
            }
        }
    }
}

and finally, the client code (it requires the Prototype Javascript framework) :

<div>
    <form action="login/authenticate" method="POST" onSubmit="cram()">
    <?php echo $this->formHidden('login_salt',$this->login_salt) ?>
    <fieldset>
        <div><label for="login">Login : </label><?php echo $this->formText('login') ?></div>
        <div><label for="password">Password : </label><?php echo $this->formPassword('password') ?></div>
        <div><input type="submit" name="authenticate" value="login"/></div>
    </fieldset>
    </form>
</div>

And the associated js :

function cram()
{
    $('password').value = sha1Hash($('login_salt').value+sha1Hash($('password').value)) ;
    $('login_salt').value = "" ;
}

// © 2002-2005 Chris Veness
// http://www.movable-type.co.uk/scripts/sha1.html
function sha1Hash(msg)
{
    // constants [§4.2.1]
    var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];

    // PREPROCESSING
    msg += String.fromCharCode(0x80); // add trailing '1' bit to string [§5.1.1]

    // convert string msg into 512-bit/16-integer blocks arrays of ints [§5.2.1]
    var l = Math.ceil(msg.length/4) + 2;  // long enough to contain msg plus 2-word length
    var N = Math.ceil(l/16);              // in N 16-int blocks
    var M = new Array(N);
    for (var i=0; i<N; i++) {
        M[i] = new Array(16);
        for (var j=0; j<16; j++) {  // encode 4 chars per integer, big-endian encoding
            M[i][j] = (msg.charCodeAt(i*64+j*4)<<24) | (msg.charCodeAt(i*64+j*4+1)<<16) |
                (msg.charCodeAt(i*64+j*4+2)<<8) | (msg.charCodeAt(i*64+j*4+3));
        }
    }
    // add length (in bits) into final pair of 32-bit integers (big-endian) [5.1.1]
    // note: most significant word would be ((len-1)*8 >>> 32, but since JS converts
    // bitwise-op args to 32 bits, we need to simulate this by arithmetic operators
    M[N-1][14] = ((msg.length-1)*8) / Math.pow(2, 32); M[N-1][14] = Math.floor(M[N-1][14])
    M[N-1][15] = ((msg.length-1)*8) & 0xffffffff;

    // set initial hash value [§5.3.1]
    var H0 = 0x67452301;
    var H1 = 0xefcdab89;
    var H2 = 0x98badcfe;
    var H3 = 0x10325476;
    var H4 = 0xc3d2e1f0;

    // HASH COMPUTATION [§6.1.2]

    var W = new Array(80); var a, b, c, d, e;
    for (var i=0; i<N; i++) {
        // 1 - prepare message schedule 'W'
        for (var t=0;  t<16; t++) W[t] = M[i][t];
        for (var t=16; t<80; t++) W[t] = ROTL(W[t-3] ^ W[t-8] ^ W[t-14] ^ W[t-16], 1);
        // 2 - initialise five working variables a, b, c, d, e with previous hash value
        a = H0; b = H1; c = H2; d = H3; e = H4;

        // 3 - main loop
        for (var t=0; t<80; t++) {
            var s = Math.floor(t/20); // seq for blocks of 'f' functions and 'K' constants
            var T = (ROTL(a,5) + f(s,b,c,d) + e + K[s] + W[t]) & 0xffffffff;
            e = d;
            d = c;
            c = ROTL(b, 30);
            b = a;
            a = T;
        }

        // 4 - compute the new intermediate hash value
        H0 = (H0+a) & 0xffffffff;  // note 'addition modulo 2^32'
        H1 = (H1+b) & 0xffffffff;
        H2 = (H2+c) & 0xffffffff;
        H3 = (H3+d) & 0xffffffff;
        H4 = (H4+e) & 0xffffffff;
    }

    return H0.toHexStr() + H1.toHexStr() + H2.toHexStr() + H3.toHexStr() + H4.toHexStr();
}

//
// function 'f' [§4.1.1]
//
function f(s, x, y, z)
{
    switch (s) {
        case 0: return (x & y) ^ (~x & z);           // Ch()
        case 1: return x ^ y ^ z;                    // Parity()
        case 2: return (x & y) ^ (x & z) ^ (y & z);  // Maj()
        case 3: return x ^ y ^ z;                    // Parity()
    }
}

//
// rotate left (circular left shift) value x by n positions [§3.2.5]
//
function ROTL(x, n)
{
    return (x<<n) | (x>>>(32-n));
}

//
// extend Number class with a tailored hex-string method
//   (note toString(16) is implementation-dependant, and
//   in IE returns signed numbers when used on full words)
//
Number.prototype.toHexStr = function()
{
    var s="", v;
    for (var i=7; i>=0; i--) { v = (this>>>(i*4)) & 0xf; s += v.toString(16); }
    return s;
}

February 14, 2008

Mathieu (Matthew)

Nouvelles d'un ouargue, chap. 3

Le filet

J'arrive à repérer une ombre assez imposante, aux contours incertains, juste avant qu'elle jette sur moi une sorte de filet de corde épaisse. Par chance, j'arrive à esquiver en partie l'assaut, grâce à un rapide mouvement sur ma gauche. Le filet me tombe sur la moitié postérieure et j'arrive à me libérer. M'enfuyant dans la direction opposée, j'entends derrière moi un grand cri qui m'évoque un mélange d'avertissement et de colère. Je ne prends pas le temps de m'attarder et, en quelques instants, je me retrouve à l'autre bout de la clairière près d'un bosquet dans lequel je m'apprête à plonger. Au dernier moment, deux ombres, de la même carrure que la précédente, jaillissent, criant de plus belle, et me jettent chacune un filet. L'un me passe largement au dessus mais le second ne me laisse aucune chance : il me recouvre totalement et semble lesté lourdement. Je suis pris au piège, sans avoir eu le temps de réagir. Je me débats pour essayer de trouver une issue, je mords tout ce que je peux, rien n'y fait, la corde ne s'use pas et semble me serrer de plus en plus. Les ombres se rapprochent de moi, dévoilant des traits qui me sont inconnus.

C'est leur odeur qui me frappe la première. Un mélange de terre, de viande légèrement pourrie et ... d'autre chose d'indéfinissable. Une effluve complexe semblant provenir d'obscures profondeurs, pas forcément nauséabonde, mais en tout cas effrayante. Au fur et à mesure qu'ils approchent, leur physique m'apparaît plus clairement, et cette vision m'apporte une certitude : ce sont des Anciens Maîtres, des Orques. Je n'en ai jamais vu de mes propres yeux, mais il est impossible que je me trompe, pour avoir souvent entendu les vieux de ma meute les décrire avec précision. Ils ont à peu près la taille d'un grand ouargue, sauf qu'ils se tiennent sur leurs seuls membres postérieurs, et sont donc plus hauts que nous. Leurs jambes sont arquées, le dos voûté, le visage rond avec une large mâchoire. Leur peau couleur terre de Sienne est dépourvue de fourrure sur la majeure partie et contribue à leur donner un air désagréable, si différent de nous.

D'après les doyens, la haine de notre meute envers les Orques remonte à plusieurs générations, avant qu'eux-mêmes ne naissent. A l'époque, nous étions esclaves des Orques, obéissant à leurs moindres exigences. Ils se servaient de nous, nous dressaient pour la chasse ou la guerre, contrôlaient nos portées et n'hésitaient pas à nous tuer en cas de manque temporaire de nourriture, ou même par pure cruauté. Mais une nuit, alors que les gardes avaient trop arrosé leur soirée, la meute entière se révolta, menée par Arkhash le Grand, ancêtre direct d'Arkhan. A l'aube, les quelques Orques qui n'étaient pas égorgés avaient détalé au delà de l'horizon.

Nous, les jeunes, adorions entendre cette histoire mais je me rends compte aujourd'hui que je n'aurais pas dû prendre à la légère les avertissements du danger que représente un Orque. J'en ai maintenant trois qui m'observent, criant de joie à tue-tête. Quel idiot j'ai été ! Me mettre autant à découvert pour un pauvre lapin ! Au fond de moi, j'ai honte mais la terreur domine tout en moi à présent. C'est moi le lapin et la mort approche, par je ne sais quel moyen, mais elle arrive.

Un étrange bruit retentit au loin et mes trois orques se figent. Le bruit se répète, plus lointain cette fois ; au même moment un des orques se saisit d'une corne d'aurochs accrochée autour de son cou et souffle dedans : le même son en sort. Ce doit être un code entre les Anciens Maîtres, comme nos hurlements, et cela ne me ravit guère : ils ne sont pas que trois. Les deux autres se saisissent alors du filet et commencent à me traîner vers la forêt. Je suis terrifié, je ne sais pas combien de temps il me reste à vivre. Je ne sens qu'à peine les ronces me labourer la peau, mon filet ballottant au bout de la corde le long d'un hypothétique chemin. Mes ravisseurs avancent d'un pas rapide, échangeant quelques mots de temps à autre.

Le soleil commence à tomber lorsque nous sortons de la forêt, débouchant sur un large plateau verdoyant. A quelques pas des derniers arbres se trouve un chariot gardé par deux autres orques. J'ai déjà vu un de ces engins pendant une excursion avec mon ancienne meute mais il était abandonné. Arkhan m'avait expliqué que les orques s'en servaient pour transporter diverses choses encombrantes mais à l'époque je n'avais pas compris ce qu'il voulait dire. Maintenant, je découvre avec horreur à quoi sert ce chariot : un autre ouargue, lui aussi emprisonné dans un filet, est y est traîné et jeté sans ménagement. Enfin une forme familière ! Je l'entends grogner et se débattre quand soudain, un des deux orques qui le traînaient abat sur lui une énorme massue. Un couinement écœurant suit, puis plus rien. Je ne sais pas s'il est mort mais l'espoir que je viens de regagner s'évapore. A mon tour, je suis jeté dans le chariot et je vois mon congénère couché, les yeux à moitié ouverts, la langue pendante. Je ne le connais pas, il vient d'une autre meute. Sa peau est sombre comme la mienne mais sa fourrure est plus courte, comme ses oreilles : il doit être plus jeune que moi. Une rapide réflexion m'incite à m'allonger sans mot dire. La massue se balance au-dessus de moi, puis s'éloigne.

Quelques grognements et un semblant de discussion plus tard, le chariot se met en route.

February 12, 2008

Julien (jd)

Testing out GRUB 2

After reading Jordi post about GRUB 2, I decided to give it a try on my EeePC.

I've just installed the grub-pc package, answered the questions, and that was it. I tested it with the chainload method from GRUB legacy, and it worked. I just had to rerun grub-install to replace the legacy with the new one. And I've a nice Debian background in the menu now!

What seems amazing is that GRUB now see my... LVM logical volumes! So this seems to be really cool, because this means no more /boot-without-lvm-ext3-formatted partitions because my-boot-loader-sucks-a-bit.

February 11, 2008

Julien (jd)

Holidays and projects

Long story short: I'm busy.

These days are quite busy. I'm working (you know, I need to eat so I've a job), to the point that I have many vacation days to take. So I'll be in holidays and offline from friday for 10 days.

I'm still working on awesome developement. Code base is quite good now, so I don't do 30 commits/day anymore, and update are less frequent. It's very nice that the users base is increasing every day, without polluting the mailing list and the BTS with bug reports and request for documentation. That means we at least achieve to do a not-so-bad code with a not-so-bad documentation. The feature requests list is still a bit long, but I think it will decrease in the next weeks.

On a human side, that's the biggest project I ever managed and it's very pleasant to have so many users and contributors.

I've some more project I'd like to work too. I plan to write a small git stats generator in Python when I'll have some more spare time. I'd also like to do some developement work around LDAP and Python for my servers, but I did not find the courage to do it neither the good library to handle LDAP object correctly (a DB_Object way would be good).

I'm always following Debian developement with one eye, so I'm not totally out. I really hope I could to some bug squashing like I did with several Debian buddies 2 years ago for the etch release.

Stay tuned.

February 07, 2008

Mathieu (Matthew)

Nouvelles d'un ouargue, chap. 2

Le lapin

Les meutes de ouargues sont organisées de façon assez stricte et c'est peut-être ce qui nous donne l'ascendant sur les autres espèces. Dès la naissance, les mâles sont triés en fonction de plusieurs critères : la couleur de la fourrure, le gabarit général et l'agressivité. Une fourrure claire ainsi qu'une constitution forte et un comportement très agressif dès la naissance promet à un jeune ouargue de faire partie des chasseurs, tandis que l'inverse en fera un rôdeur, comme moi. Les éléments les plus frêles sont tués après quelques jours. En tant que rôdeur, ma fourrure sombre et mon profil fin ajoutés à ma discrétion me permettent donc de passer inaperçu, la plupart du temps, des proies. Lors d'une partie de chasse, le rôdeur s'approche au plus près de la cible, qui, sous l'effet de la surprise, détale vers le groupe de chasseurs, chargé de la mise à mort.

Ces jours-ci, la nourriture - habituellement de succulents lapins ou autres délicieux petits mammifères - se faisant rare, la meute s'attaquait à de plus gros morceaux, comme des rennes et même des aurochs. La viande d'un aurochs suffisant à nourrir la meute pendant plusieurs jours, un nombre élevé de rôdeurs était devenu non seulement inutile mais augmentait encore le nombre de gueules à nourrir, ainsi que le risque pour le chef de meute de se faire détrôner. Ma naissance m'avait mis sur la route de la solitude.

Ainsi, lorsqu'au bout de trois jours la faim arrive à m'extirper de la torpeur dans laquelle je me trouvais, je me vois bien embarrassé en pensant à la nourriture que je dois trouver. Je n'ai aucune notion de chasse en solitaire, je suis de plus affaibli et je ne connais pas le nouvel environnement dans lequel je me retrouve. J'avais erré pendant toute une nuit avant de trouver un abri de fortune, à l'orée d'une petite forêt, sous un arbre abattu partiellement recouvert de branchages.

La plaine d'où je suis venu ne semblait pas suffisamment pourvue en buissons et autres cachettes, j'opte donc pour la forêt, qui semble beaucoup plus vivante. J'arrive à percevoir quelques odeurs diablement appétissantes. Enfin, cette sensation arrive, celle que j'attends depuis le réveil, cet appel du sang, ce mécanisme instinctif qui me plonge dans un état second. Je sais que je n'ai plus rien à faire, je vais me laisser guider par cet autre moi, cette âme de rôdeur gravée au fond de mes entrailles. C'est parti.

Silence ... Camouflage ... Rampe, rampe, en silence ! Ecoute. Attends. Attends. Bruit ! Proie possible. Proie certaine. Approche, approche. Attends. Attaque ! Cours, cours, mords, tranche !

Une fois le repas terminé, je reprends mes esprits. Mon cœur se calme petit à petit et je sens l'agressivité me quitter progressivement. Des restes d'os et de sang gisants près de moi, je parviens à distinguer la morphologie de mon repas. Ce jeune lapin n'aura pas détalé longtemps, mais sa maigre carcasse ne suffira pas à me repaître plus de quelques heures. Cependant, je suis fier de moi, mais la douleur m'étreint lorsque je ressens le besoin de montrer mes exploits, comme il m'arrivait de le faire auparavant.

Je m'assois quelques instants, tentant de faire le point. Mon départ de la meute me laisse, en plus d'une immense peine, plusieurs soucis lié à ma propre survie. Tout d'abord, la quantité et la diversité de ma nourriture vient de chuter drastiquement. Le léger encas que je venais de prendre n'avait fait qu'attiser ma faim. Ensuite, même si notre espèce semble résistante sur ce point, je commence à avoir soif ; le seul point d'eau que je connais est la grande Mare Ronde, située juste en contre-bas de notre tanière et férocement gardée jour et nuit par la meute. Les seuls animaux qui parviennent à y boire sont les oiseaux, qui se posent sur un petit tertre au centre de la mare, le temps de se désaltérer, avant que mes anciens compagnons n'atteignent l'îlot. Une image douloureuse me vient à l'esprit : c'était en effet un jeu, entre les autres rôdeurs et moi, de réussir à capturer un des volatiles. Je dois avouer que je me débrouillais pas trop mal. Mais tout cela est fini.

Pour finir, l'absence d'une meute me prive aussi de la protection dont je bénéficiais. Si la tanière n'est jamais attaquée directement, ce qui est bien compréhensible vu le nombre de crocs acérés se découvrant à la moindre alerte, il est arrivé que lors de parties de chasse mal organisées, un des ouargues isolé soit poursuivi par la proie, si celle-ci se sent de taille. En général, le reste des chasseurs reprend la situation en main, mais il m'est arrivé de voir un autre rôdeur grièvement blessé par le coup de corne d'un aurochs particulièrement échauffé.

Or maintenant, je suis sur un territoire inconnu et sans protection. Il me faut donc à partir de maintenant penser à être le plus prudent possible. Me relevant, je me rends compte que je pourrais actuellement être plus prudent : j'ai abattu ma proie en pleine clairière, l'ai dévorée sur place et me suis reposé au même endroit. Je me dirige donc vers un bosquet plus à l'ombre. Soudain, je suis alerté par un craquement provenant directement du buisson. Je me pétrifie, tous les sens à l'écoute. Pendant quelques secondes, rien ne se passe.

February 04, 2008

Mathieu (Matthew)

Nouvelles d'un ouargue

Le départ

Le chef de meute vint, un matin comme d'autres. C'était un mâle grand, robuste, à la fourrure sombre avec des touffes blanches. Ce n'était pas encore un des vieux ; il participait en première ligne aux parties de chasse et à la défense de notre tanière depuis des années, et pour moi, il avait toujours été le chef incontesté, l'infatigable et respecté Arkhan.

Ce matin-là, il vint et m'attaqua. Il planta ses crocs aiguisés dans ma patte arrière droite, alors que je me réveillais tout juste à cause des plaintes de ma mère, suppliant Arkhan. Je couinai en reculant brusquement de quelques mètres. Le chef et moi échangeâmes un regard, et je me souviendrai à jamais de la lueur que je vis dans ses yeux ce matin-là : un mélange de haine pure, de détermination et de dégoût. J'eus l'impression que Arkhan était comme possédé, lui qui d'habitude me tolérait plutôt bien. La surprise de son attitude me foudroya, mais je compris rapidement ce qui allait arriver, pour l'avoir trop souvent vu auparavant. Mes compagnons de jeu puis de chasse avaient été un à un rejetés au cours des derniers mois, et je savais le sort qui m'attendait.

J'osais un regard alentour. Le reste de la meute assistait à la scène, des vieillards mourants aux jeunes aussi hébétés que moi, en passant par les mères attristées par un nouveau départ. Le pire pour moi fut le regard de ma mère. Elle semblait terriblement navrée et attristée, mais malgré tout préparée à accepter l'issue. Si, au début de l'altercation, elle implorait le chef de me laisser encore un peu de temps, elle me suppliait maintenant du regard de ne pas rendre les choses plus difficiles.

Ainsi, je m'en allai. Mes premiers pas furent chancelants, et ce n'était pas du qu'à la morsure. Un court grognement derrière moi me fit sursauter : Arkhan me suivait, fixant mon autre patte arrière. Je fis quelques enjambées rapides pour le distancer. Il n'arrêta de me suivre qu'après un long moment. M'asseyant enfin, je jetai un oeil derrière moi. Les premiers rayons de l'aube commençaient à se dévoiler derrière les lointains Monts d'Or, surplombant la plaine des Valknars. Au milieu de cette plaine s'élevait une colline, ma colline, vers laquelle j'apercevais encore la silhouette d'Arkhan, trottinant vers les Grandes Pierres, repère marquant l'entrée de notre tanière. Je n'avais jamais vu cette colline de si loin, et, quelques jours plus tôt, j'aurais peut-être apprécié cette vision : un soleil d'automne se répandant dans la plaine comme un raz de marée de lumière, noyant chaque brin d'herbe, chaque rocher, sous la chaleur de ses rayons.

Ce jour-là, cette vision m'emplit d'horreur. La courte scène qui venait de se produire tournait en boucle dans ma tête, et m'empêchait de réfléchir à quoi que ce soit. Je n'arrivais pas à réaliser que, malgré la menace pesant sur moi ces dernières semaines, c'était finalement arrivé. Je devais me rendre à l'évidence : j'étais seul, je venais d'être rejeté, je n'avais plus de meute, plus de semblable, plus de monde. Que faire ? Je n'avais aucune idée de ce qui allait se passer maintenant, et l'idée d'avoir à prendre mes propres décisions me plongea dans l'effroi. La vie d'un ouargue exclu était un tabou au sein de la meute : il était considéré comme mort. Voilà comment je me sentais : mort. Je m'effondrai sur le sol.

January 28, 2008

Francois (Alf)

Demo of Wisss 0.2.0

Things are moving on in Wisss, I’ve been working on presentation and business logic over the last couple of weeks. It’s beginning to be presentable. This 0.2.0 milestone is not yet finished but already I can show you how it handles the model and what it generates.

Concerning the metamodel, I’ve defined two new packages: view and workflow. View metamodel allows you to define widgets by adding attributes from class data, references to classes or other widgets. The goal is to avoid generating CRUD forms by mapping to classes, which is not always exactly what we want. In the example, it allows you to create a new blog post with a new category. Another use case is to only show a part of a class.

The workflow metamodel, which may be soon renamed to dataflow (thanks to Tortoose for pointing this out) aims to define simple business processes. Like for views, generating simple CRUD processes is not enough for real projects. You often want a form which will create an object associated with another object or a wizard to dispatch creation in several actions. To achieve this, I’ve made a kind of dataflow to define simple algorithms. It allows you to link activities with each other using transitions and define what is for instance a blog post creation process. Activities can be either predefined or user defined. For instance, there is a Create activity which is related to a class. It takes several parameters in entry, mapped to the related class and returns an object.

For these predefined model entities, I’ve played with the code generated by JET. It’s the part which allows me to have a model editor from the ecore metamodel. For instance, what I’ve made is to add in and out parameters to a create activity when you choose its type.

I’ve made a flash demo of the model creation for a very small blog example (Icon set for new packages have not yet been done).

Concerning generation, I’ve added a configuration file for an apache virtualhost, a simple bootstrap, controllers, business objects and view templates. Each widget generates a template and IO activities (input or output) generate the templates which will be used with the controllers. I’ve used the new partial() function to achieve widget inclusion.

Concerning the work dataflow, I generate a business object for each process which contains a static method for each activity (which is not IO activity). A controller is also generated for each process and a controller action is added for each IO activity. A java service generates activity calls in the right order by browsing transitions.

I’ve also made a flash demo of the generation and the webapp working.

Concerning the next steps in Wisss, I may achieve the 0.2.0 in the next days, implementing all typical activities. The next 0.3.0 will add authentication and ACLs and the 0.4.0 will be the right time to add error management and user code blocks. I may find a 0.5.0 milestone before the 1.0 but I hope it will be the last. Now Wisss is presentable, I hope that the buzz will grow in the PHP community.

Thanks to Akrabat, TubularBell and norm2782 from #zftalk for proof reading.

January 26, 2008

Julien (jd)

Moving old projects to git

I finally did it.

Most of my small and personal projects (telak, sysrqd and mod_defensible) were maintained in my home-svn-repository. This had the side effect that I did not have a good overview of the current status of the project, and that I never though about tagging releases.

I used git-svnimport to move this stuff to git, with great success. Now, I see that only one release on three is tagged correctly, bad me. They are now on my git server.

But with a better tool like git I'm sure I will be more precise when I will work on that source code, so it was time to switch. And now my source code is public, which is far better than before.

January 21, 2008

Julien (jd)

New laptop: EeePC!

This morning, the snail mail brought me a new toy! A brand new EeePC!

Kawoosh!

It's a very very nice device. I did not test the Xandros system more than 5 minutes, but it looks fine for dummy users. I've plugged an USB key into it, booted on the Debian installer (provided on the Debian wiki) and installed it in a few minutes.

The hardest part was adding wifi support, since I needed to grab madwifi svn version, added a patch, and compiled it. It was not so hard after all, just don't expect to use Debian packages for now.

It even boot in less than one minute! The hardest part is to type on a such tiny keyboard.

Keyboard Plectrum as reference size

January 17, 2008

Mathieu (Matthew)

Ckiop

Mon cousin, ami, colloc, confrère et partenaire de beuverie, qui, malgré son handicap racial, est extrêmement valable à mes yeux, est en pleine refonte weballistique de sa page perso. En attendant l'ouverture, il nous gratifie d'une jolie image.

Sauras-tu reconnaître tous les films et jeux auxquels il fait référence ? Envoie ta réponse sur papier libre et gagne au choix un voyage dans l'espace ou un pays du tiers-monde.

January 16, 2008

Julien (jd)

Generating documentation from C source code

Dear Lazy Web,

I'm looking for a tool to extract and generate user documentation from C source code. No, I don't want doxygen which I already use, but something that can extract comments from C source and print them to a text file. The ultimate goal is to generate manpages (using asciidoc).

Anything that may look like that, a program, a library or a trained poney might interest me.

January 12, 2008

Clément (Gizmo)

nayla

Ill be your mirror
Reflect what you are, in case you dont know
Ill be the wind, the rain and the sunset
The light on your door to show that youre home

When you think the night has seen your mind
That inside youre twisted and unkind
Let me stand to show that you are blind
Please put down your hands
cause I see you

I find it hard to believe you dont know
The beauty that you are
But if you dont let me be your eyes
A hand in your darkness, so you wont be afraid

When you think the night has seen your mind
That inside youre twisted and unkind
Let me stand to show that you are blind
Please put down your hands
cause I see you

The Velvet Underground - I'll be your mirror

January 09, 2008

Julien (jd)

First RC version for awesome 2.1

And here we are. awesome 2.1 is coming! And it's really really nice.

It got a brand new set of widgets (icons, text, progress bar, tasklist, etc) for the statusbar, which is very configurable.

It also has a better EWMH support, which brings things like stick or fullscreen state support.

I still have to write the changelog between 2.0 and 2.1, but git log shows near 400 commits, it's gonna be a bit long.

January 08, 2008

Mathieu (Matthew)

Guitar Hero III

Après avoir parcouru un bon nombre de magasins à Nantes (jeu en rupture de stock), j'ai enfin eu devant moi Guitar Hero sur Wii. J'avoue que j'avais quelques a prioris négatifs. En tant que musicien, je voyais d'un mauvais oeil la vulgarisation de l'instrument, mais finalement, on joue deux minutes, et on peut dire sans calembredaine que c'est quand même lol.

Donc le kit se compose du jeu, du corps où l'on encastre la wiimote, et qui comporte un stick, deux boutons, un vibrato, et le truc pour gratter les cordes, qui est une sorte d'indescriptible mécanisme. Dessus, on encastre le manche, qui comporte 5 touches. Une fois la sangle autour du coup, on a un peu l'impression d'être Marty McFly au début de Retour vers le futur I.

Le principe du jeu est de suivre les morceaux proposés et de jouer les notes qui s'affichent à l'écran. C'est un peu comme si on avait qu'une corde avec 5 cases. En mode facile, il y a peu de notes à jouer, et seulement 3 différentes. En difficile (vraiment difficile), on a vraiment l'impression de jouer, les notes jouées sont relativement réalistes par rapport à l'original, et on s'éclate vraiment quand les notes passent. La partie se termine à la fin du morceau, ou, si tu déchires pas assez, en plein milieu, sous les huées du public, pourtant visiblement saoul. La difficulté est assez bizarrement dosée, avec un mode facile vraiment facile sur la plupart des morceaux, et dès qu'on passe au mode moyen, ça devient vraiment dur. Sans parler des modes difficile ou expert, où là quand on essaye de suivre, ça donne au mieux du Cyrille Lignac en train de chanter avec une tomate farcie dans la bouche et une pince à linge sur chaque couille.

Au niveau du contenu, on se retrouve avec pas mal de morceaux bien rock, et aucun ne déçoit véritablement. Ca passe, pour les plus connus, de ZZ Top à Aerosmith en passant par Metallica, Rolling Stones, Kiss, Red Hot, etc. 70 morceaux qu'ils disent, et pléthore de personnages à débloquer, ainsi qu'une foultitude de guitares. Rock and Roll ! Et à plusieurs, c'est pas trop mal pensé : le mode coop, ou on fait la "carrière" à 2 (basse/guitare ou rythm/lead), ou le mode duel, qui propose soit un jeu de questions/réponses entre deux guitares, avec possibilité d'envoyer des saloperies à l'autre (corde cassée, inversion de manche, etc.) soit un mode compète pure, où on doit mieux jouer que l'autre.

Au final, on a de quoi s'occuper un bon bout de temps en s'amusant comme des ptits fous. En même temps pour 90 euros, on n'en demande pas moins.

January 06, 2008

Francois (Alf)

Wisss icon set

While preparing the Wisss module for Acceleo 2.2 release, I’ve made a tiny icon set to replace default one and to show you a simple Wisss model :

Wisss model

I’ve seen that old demo videos have been clicked although the link is down. I will put them back in the next days.

January 05, 2008

Francois (Alf)