Fantomas’side

Weblog open-source

Archives 2007

Bienvenue dans la galaxie !

Ayant fait acquisition il y a quelque mois d'une puce WiiKey permettant de lire les backups sur la Wii, j'ai voulu tester mes backups sur les nouveaux jeux sortis comme Metroid III et Mario Galaxy, mais une mise à jour est nécessaire pour pouvoir lancer ces backups.

La mise à jour étant accompagnée d'un message d'avertissement prévenant que les possesseurs de Wii
modifiées risque des dysfonctionnements, je commence à hésiter :)

"Si votre console Wii a subi une modification technique non autorisée, cette mise à jour risque de la mettre hors d'usage."

Donc directement je me rend sur internet a la recherche d'informations sur cette mise à jour et les conséquences sur la lecture de backup avec une WiiKey.

D'après divers forum, une mise a jour vers un firmware>= 3.0 de la Wii empêchera la lecture des backups sur la WiiKey. De plus ce nouveau firmware provoque une défaillance dans le système de mise à jour du propre firmware de la WiiKey.

Mais une solution existe, parmi les différentes méthodes décrites sur le net, celles testées et approuvées, celle plus ou moins claire, difficile de faire le tri. Mais pour bien faire les choses je vais vous donner la méthode que j'ai employé pour pouvoir passer les derniers backup de jeux tel Mario Galaxy.

Préparation :

  1. 2 DVDs vierges
  2. Téléchargez et décompressez le fichier suivant ConfigDisc 1.2b.
  3. Téléchargez et décompressez le dernier firmware de la Wiikey 1.9g.
  4. Une manette Gamecube ...

Continuer la lecture

Ogame Attack Watcher

Ogame Attack Watcher (OAW) est un programme écrit en Python qui permet la surveillance de comptes inter-univers pour OGame.

En effet OGame est un jeu de rôle massivement multijoueurs en ligne, qui se joue à travers un navigateur internet.

L’intérêt de ce programme est de pouvoir surveiller à distance son compte de toutes tentatives d'attaques sur ses planètes, qui pourraient ruiner des semaines d'efforts. Le programme se connectera toute les 30 minutes sur votre compte et vous préviendra par email de toute attaques, laissant le temps de préparer une manœuvre.

Le plaisir d'écrire ce programme pour moi a été de pouvoir recevoir ces attaques directement sur mon téléphone mobile pour pouvoir savoir de n'importe où si je me fais attaquer sur le jeu, le tout grâce au transfert d'email :) Ce que je vous recommande de faire fortement.

Une seconde version du programme est en cours d'écriture, avec beaucoup plus de fonctionnalités :

  • Migration des flottes et des ressources en cas d'attaques.
  • Construction de batiments, défense, recherches
  • Mode Raider :p

Les bonnes volontées sont les bienvenues d'ailleurs.

Il ne manque juste l'adresse du programme pour pouvoir s'enregistrer et utiliser OAW : http://ogame.willbreak.it ou directement http://oaw.upasika.org

Le svn du projet en version 2 :

http://obot.upasika.org

Génération de flux RSS en PHP

RSS pour Really Simple Syndication, est une des récentes technologies qui popularisent le web 2.0. Le format RSS est un flux de données XML regroupant diverses informations sur des ressources accessibles depuis le réseau.

Dans le cas d'un site d'actualités, les flux RSS du site regrouperont les nouveaux articles publiés et les commentaires récents qui permettront aux utilisateurs de voir l'évolution du site sans avoir besoin de s'y connecter en permanence.

Générer un flux RSS 2.0 à l'heure actuelle peut rester facile pour n'importe quel développeur. Cependant, générer de multiples flux devient vite une tâche fastidieuse. J'ai donc décidé d'écrire un jeu de classes PHP, pour me simplifier la production de flux de type RSS.

Un exemple concret de construction de flux à partir de ces classes vous montrera la marche à suivre. Notre exemple se base sur le listage d'un répertoire distant, à travers un flux RSS.

<?php
include('myrss.class.php');

$rss = new RSS('Contenu du répertoire', 'http://url.du.repertoire', 'Description du répertoire');

if ($handle = opendir('.')) {
  while (false !== ($file = readdir($handle)))
    if ($file != "." && $file != "..") {
      $file_info = stat($file);
      $desc = is_dir($file) ? 'Dossier créé ' : 'Fichier de '.round(
      $file_info['size'] / (1024 * 1024), 2).' Mo';
      $desc .= strftime('le %A %d/%m/%Y à %H:%M:%S', $file_info['atime']);
      $date = strftime('%D');
      // Remplissage du flux
      $item = new Item($file, 'http://url.du.repertoire/'.$file, $desc, $date);
      $rss->add($item);
    }
  closedir($handle);
}
print $rss->publish();
?>

Et voilà comment en moins de ...

Continuer la lecture

L'Himalaya

L'Himalaya est un restaurant indien et pakistanais, situé au 22 rue de la Gaieté, l'entrée ne paye pas de mine en termes de place, mais une salle spacieuse a l'étage permet d'accueillir plusieures dizaines de personnes. La décoration plutôt simple mais agrémentée ornements muraux met dans l'ambiance timidement.

Le problème de l'Himalaya n'est pas dans sa cuisine, qui est très bonne surtout concernant les entrées, mentions aux Pakoras et aux Samoussas aux légumes, bien qu'un peu mous. Le problème vient plutôt des 'à-côtés'.

En effet en apéritif, le whisky commandé, couleur jaune fade voir transparent, possède un goût immonde, celui d'un spiritueux quelconque qu'on aurait coupé a l'eau, j'interpelle le serveur, qui m'affirme m'avoir servi un JB... enfin bref passons je prendrais une bière indienne, la Cobra, désaltérante au possible, mais aux épices trop prononcées et à la saveur peu consistante. Petite déception mais bon, on est là pour manger indien.

Après le plateau d'entrée servi dans un décoration très appétissante, et le plat principal, les choses se gâtent...

Je commande une glace au lait, servie avec des éclats de coco, mais le résultat se trouva être 2 boules de glace quelconques avec pour caractéristique les cristaux de glace d'eau, signe d'une décongélation et recongélation, sympa...

Pour finir le serveur nous proposa un digestif, et là l'erreur d'accepter fut fatale. Le digestif fut une sorte d'alcool frelaté, peut être la ...

Continuer la lecture

A kind of Kinder

Qui aime les Kinder Chocolat ?

A peu près tout le monde certainement, hormis ceux sensibles aux allergies et au chocolat chimique.

Enfin bref, à une époque, je me demandais d'où provenait la tête du gamin affichée sur tous les packagings du produit, ce gamin au visage super symétrique, retouché au Photoshop de l'époque, et à la coupe de cheveux sortie tout droit des années 70 (1978 pour être précis), mais surtout je me demandais quand Ferrero changerait de représentant.

Enfin bref ce qui devait arriver arriva, en me baladant dans un magasin, le choc, ce n'est plus lui, il a été remplacé par un autre gamin, plus hype, plus dans l'air du temps. Une partie de ma jeunesse s'effondre, mais c'est pas plus mal.

Maintenant comparons l'évolution entre les 2. Le sourire ultra-bright est toujours présent (oui oui je mange du chocolat, mais j'ai les dents super blanches). La coupe de cheveux plus courte et relevée. La seule réelle évolution révélatrice de notre société, c'est qu'il est plus rond, obésité oblige :) Moi ce que je me demande, c'est :

  • Comment il gère sa vie de star, vis à vis de ses potes, qui le voit dès qu'ils ouvrent le placard ?
  • Est ce que si je mange du kinder chocolat, j'aurais l'air aussi heureux, et j'aurais les dents plus blanches ?

Un autre truc qui me chiffonne, c'est que les rares emballages, où une tête est affichée ...

Continuer la lecture

Valeur binaire et décalage

L'informatique a un secret, un secret aussi fondamental que spectaculaire. Toutes les informations circulant à l'intérieur d'une calculatrice ou même d'un ordinateur sont composées de 0 et de 1. Ce système appelé binaire, permet de synthétiser toutes les informations possibles, chiffres, images, caractères, à travers des séquences de bits pour rendre ces informations compréhensibles par une machine.

Par exemple, si on prend le nombre 42, il aura besoin de 6 bits pour stocker son information, qui se représentera pour un l'ordinateur 101010. Je vous épargne la conversion du système décimal au système binaire :)

Lors de l'écriture d'une programme, un développeur ne se souciera pas de ces suites de 0 et de 1, c'est le travail du compilateur ou de l'interpréteur, et surtout de la machine. Le développeur se souciera juste du déroulement des différentes actions composant son programme.

Mais parfois il est astucieux d’accéder aux bits d'une valeur stockée en mémoire. Dans l'infographie par exemple, pour les composantes RGB des couleurs, généralement codées sur 32bits (4 octets).

Dans mon cas, j'ai eu besoin de représenter en ActionScript pour Flash les suites de bits contenus dans des nombres indiquant l'heure actuelle. L'avantage de cet algorithme est qu'il est portable et facile à paramétrer.

function arrayOctetBinaryValue(value:Number) : Array {
    var binary = new Array();
    for (var i = 0; i < 8; i++) {
        binary[i] = value & 0x1;
        value = value >> 1;
    }
    return(binary.reverse());
}

arrayOctetBinaryValue(12); // [0 ...

Continuer la lecture

Persistance

Comment rendre les variables du code persistantes à travers le temps et les pannes de courants en passant par les crashs d'application ?

Cette problématique fut mise en avant lors du développement d'ECS, un framework e-commerce écrit en Python, au sein d'Emencia, société de services en logiciels libres.

Les modules Python pickle et cPickle servent à cela, mais leurs mise en place de manière générique peuvent être coûteuse et de plus comment centraliser des centaines d'objets à un moment T donné ?

ECS grâce au projet SQLAchemy, supporte tous types de bases données et fournis en plus un tas de fonctions pour manipuler des tables en base de donnée à partir d'un modèle de code. C'est donc à partir de la que fût développé le modèle de persistance.

Le modèle de persistance écrit pour ECS, fournit donc les outils pour effectuer la sauvegarde de tout objet instancié au sein de Python. Il contient en plus une implémentation rapide par méta-classe pour accélérer l'intégration au sein du code.

Voici un exemple d'implémentation de classe persistante, prenons l'exemple d'un chat :

from persistency import PersistentClass

class Cat(object):
  __metaclass__ = PersistentClass
  age = None
  name = None

def __init__(self, name='', age=-1):
  self.age = age
  self.name = name
  if self.age == -1:
    self.load()
  else:
    self.save()

def database(cls):
  return 'sqlite:///:memory:'

Cat._sqluri_callback = database

Nous allons donc créer un chat du nom de Felix âgé de 8 ans.

felix = Cat('Felix', 8)  # Roooh il est ...

Continuer la lecture

Service class design

Avant de faire du Python par la force des choses et d'en découvrir la toute puissance, j'ai commencé la programmation sur le web avec PHP, et me suis particulièrement intéressé aux moyens de communication à travers les différentes technologies qui composent internet.

A la suite de plusieurs projets plus ou moins grands, une subtilité m’apparaît, peu importe la technologie, du moment que les programmes ont accès aux mêmes ressources, et qu'ils partagent le même langue pour communiquer, il n'y a pas de problèmes.

D'où l'idée de centraliser les tâches à partir d'un même noyau qui sera accessible par n'importe quels types de technologies.

Dans le cas d'un blog, les différents articles qui le composent doivent au minimum pouvoir être créés, édités et supprimés.

Donc si on veut pouvoir faire une interface pour administrer tout cela, disons dans une page, on va rédiger du code pour apporter ces fonctionnalités. Maintenant nous voulons pouvoir administrer les articles pour pouvoir les éditer à partir d'un client quelconque. Doit-on une fois de plus re-coder ces fonctionnalités ? Non ! Cela serait une énorme perte de temps.

A l'heure du web 2.0 et de la centralisation des données, il est temps de se simplifier la tâche.

La solution proposée est de fournir un service accessible de n'importe où et qui centralisera toutes les actions faites aux articles du blog. L'accès aux ressources se fera donc par HTTP, le minimum je pense.

Écrire ...

Continuer la lecture

Le Coryphène

Le Coryphène est le nom d'une dorade africaine, mais c'est aussi le nom du zodiac de mon beau-père José.

Profitant d'un dimanche après midi plutôt calme, mais un peu venteux (du Narbonnais), on décide d'aller faire un tour sur son bateau, un zodiac PRO MAN 7, une première pour moi, surtout que je déteste la mer et tout ce qui s'y apparente.

Équipé du GPS, on commence à sortir doucement du port, mais dès les balises de l'entrée passées, les 40 chevaux du moteur 4 temps se mettent au galop, pour qu'on commence à s'en prendre plein la tronche.

Le principe d'un zodiac est le suivant : on se prend la vague de face, et on essaye de retomber sur son siège sans se faire trop mal, jusqu'à la prochaine vague.

Après une petite heure de pêche en pleine mer, on décide d'aller pousser l'engin sur l'étang qui prolonge l'avancée de la mer. Dans cette zone le vent était presque nul et il est clair que sur une mer d'huile, la sensation de vitesse est énorme surtout dans les virages. Trop bon !

Tout cela pour vous dire que même si je déteste toujours la mer, le zodiac de mon beau père m'a réconcilié au moins avec l'air marin.

De plus je ne pense pas pouvoir oublier la beauté des vagues en pleine mer, à la fois simples dans leurs formes, mais complexes dans leurs ...

Continuer la lecture

Le Wa

Le Wa est un restaurant sympa où nous allons de temps en temps nous retrouver entre potes.

Vendredi soir dernier était l'une de ces occasions. Le Wa est un restaurant situé juste à coté du très touristique "Pied de cochon", sauf que là on mange japonais avec une touche de cuisine française.

Donc on y trouvera très bien sushis, makis, sashimis... mais aussi par exemple des brochettes , ou bien des escalopes de foie gras sur pavé de riz, un régal.

Globalement la cuisine est donc très bonne, je dis globalement car quelques échos n'émettent pas la même opinion, mais au Wa il n'y a pas que la cuisine, il y a aussi l'ambiance.

La décoration du Wa laisse ressortir une ambiance acidulée, avec des spots un peu partout modifiants les effets de lumières mauve, vert pastel, orange, tout en donnant une impression de cocon grâce à des voiles et à l'éclairage très tamisé. On se croirait dans une sorte de boite VIP sortie du dernier chic

Les serveurs tirés aux quatre épingles et à la gomina sont efficaces et serviables et participe à l'ambiance créée par le décor.

Sinon je met une mention spéciale au bateau, qui ressemble vraiment à un bateau garnis.