Posted on 27-01-2007 | By: Jérémie Laval
Category : C#, Circ, Linux
Après avoir entendu tout le monde sur #sdz parler de choses tel que des bots, clients, serveurs… IRC je me suis dit pourquoi pas en fait ? Le principal client sous Linux/Gnome reste X-Chat (ou irssi pour les fana de la ligne de commande). La plupart du temps il me convient bien mais j’avoue que certaine chose me chagrine et je trouve intéressant de m’exercer sur un projet de ce type puisque pour l’instant mon action c’est plutôt limité à des bibliothèques sous Mono.
Donc voilà je vais essayer de me faire un petit client IRC que j’appellerais Circ (acronyme de « C# is really cool », petite dédicasse aux gens de #sdz
) et qui grosso modo obéit à ce cahier des charges :
- Le client devra suivre le modèle PAC et être construit suivant de bonne règle de design.
- Il devra être facilement extensible à l’aide de plugin simple à concevoir et pouvant être coder dans n’importe qu’elle langage CLI. A une certaine extension toute les fonctionnalitées devraient être implémentées sous forme de plugin.
- Il devra être hautement configurable.
- Il ne devra pas être gourmand en mémoire et relativement performant en général.
- Un des plugins devra fournir une interface D-Bus pour manipuler Circ.
- Il faudrait prévoir une suite de plugin interargissant avec d’autres logiciels compatible D-Bus comme NetworkManager et Banshee par exemple.
Pour l’instant j’ai écrit la partie Plugin et gestion de ceux ci et là je vais m’atteler a modifié une bibliothèque IRC (SmartIRC4NET) pour mes besoins. Ensuite viendra le coeur du programme PAC et un backend GTK# et éventuellement à ce moment là une première release 0.1
Posted on 25-01-2007 | By: Jérémie Laval
Category : School

Juste pour dire que j’ai eu 19 à mon contrôle de math et que j’en suis très content
Posted on 22-01-2007 | By: Jérémie Laval
Category : School
Posted on 18-01-2007 | By: Jérémie Laval
Category : C#, Linux, Mono.Xna
La plupart du code relié aux gamepads Xbox a été commité sur le SVN, néanmoins il reste une méthode qui n’a pas été implémenté car elle est assez complexe (i.e. fortement dépendante de la plateforme) : SetVibration().
Pour Mono.Xna nous utilisons SDL.NET qui est un wrapper au niveau de Tao.Sdl qui est lui même un binding de la bien connue bibliothèque SDL. SDL est utile dans le sens où elle abstrait les opérations, comme le support des joysticks, sur pas mal de système différent. Le revers de tout ça est que ce qui est permis est assez limité : une fois qu’on a passé le cap de l’état des bouttons on peut difficilement faire plus.
Ainsi pour cette opération très spéciale qu’est le maniement des retours de force du gamepad de la 360, il faut utiliser les API natives. Pour Windows pas de souci, un peu de Googling et j’ai trouvé la lib XInput qui a été visiblement créée pour être utilisé en interne par XNA. Du côté de MacOS X j’ai aussi trouvé quelques pistes dans la documentation mais le maniement est plus délicat (l’API semble permettre des choses puissantes, les vibrations y sont représentés par des effets qui sont paramétrables etc…, mais elle est plus complexe). Et comme tout bon Linuxien qui se respecte je me devais de faire marcher l’histoire sous le système Pingouin jusqu’à que je ne trouve… rien. Le kernel (et pas Xorg comme je le pensais au début) supporte bien les joysticks mais bizarrement c’est le même ordre de fonctionnalité que SDL (étrange, étrange
). Pour être plus honnête il semble bien y’avoir une fonction obscure qui permet d’envoyer des informations bas niveau au joystick mais elle est tellement bas-niveau qu’il faut manipuler directement les bits ce que je ne peux pas faire vu mon peu d’expérience assembleur/système ou simplement le fait que je n’ai pas de contrôleur XBox 360 (si vous avez un cadeau à faire …
). Bref Linux de ce côté là est à mon avis en retard (vis à vis de ces concurrents Windows et MacOS X).
Posted on 18-01-2007 | By: Jérémie Laval
Category : Quick note, School
- Finir le dossier d’anglais européen.
- Me rapeller si j’escaladais la piste d’escalade en pied gris-main violette ou le contraire.
- Réussir à faire un créneau correct la nuit quand y’a plein de gens.
Posted on 15-01-2007 | By: Jérémie Laval
Category : C#, SharpWidgets
Comme vous ne le savez surement pas, un autre de mes projets de codeur fou consiste à la création d’une bibliothèque de GUI multiplateforme (à l’image de wxWidgets ou Qt) qui profiterait de tous les avantages de la plateforme .NET (late binding, appels asynchrones, évênements…). Une page pour présenter le projet était disponible ici [en] ou ici [fr] mais ça fait longtemps que je ne les ai pas mise à jour, je n’ai, pour ainsi dire, pas commité de travail sur le SVN depuis au moins 1 mois
.
Il n’empêche que j’ai eu l’envie de retravailler un peu dernièrement dessus et l’idée du jour consiste à transformer les appels GUI natif en méthode asynchrone ce qui devrais en tout logique amener de meilleure performance et un meilleur suivi des règles de PAC (Plateform Abstraction Controller : le design pattern derrière SharpWidgets). Comme ma précédente idée d’apporter de la laziness à SharpWidgets, cette idée-ci demande quelques tests et un changement assez radical dans l’organisation de la lib. Stay tuned donc
.
Posted on 13-01-2007 | By: Jérémie Laval
Category : C#
Je voudrais vous faire part des désagréments que je viens d’avoir en implémentant la partie Input de Mono.Xna. Si vous suivez le lien vous verrez que, à part les factory, l’ensemble est constitué de structures. D’un point de vue design c’est pas mal car ces objet sont faites pour êtres créés et consommées sur l’instant (dans la méthode Update() de Game généralement) et donc à la fin de Update() ces structures sont détruites automatiquement et sans intervention du GC.
Néanmoins les structures sont à contrario des classes beaucoup plus délicates d’implémentation. En effet de nombreux petits machins qui rendent la vie plus facile ne sont pas disponibles. J’en citerai trois qui m’ont énervé : absence d’initialiseur (vous savez quand vous mettez directement int foo = 500; dans vos classes), de constructeur par défaut (i.e. non seulement y’a pas d’initialiseur mais en plus on peut pas faire le travail d’initialisation dans un constructeur par défaut car c’est interdit par le compilo), et enfin il faut initialiser tous les champs d’une structure dans le constructeur avant de pouvoir utilisé quoi que ce soit (dans mon cas j’avais un champ qui dépendait d’un autre mais comme du coup l’ensemble n’était pas initialisé ça buggait soit à la compilation soit à l’exécution, un vrai foutoir >_< ).
Bref tout ça pour dire que vous aurez bientôt le support de souris/clavier/manette XBOX dans Mono.Xna.
Posted on 13-01-2007 | By: Jérémie Laval
Category : Quick note, School
4 heures de devoir de philosophie un samedi matin, c’est quelque chose qu’il fallait tenter…
Posted on 13-01-2007 | By: Jérémie Laval
Category : Mono.Xna
… où comment deux trois stupides couleurs remontent le moral.
Ca y’est Mono.Xna est capable de faire quelque chose d’utile (« utile » est à relativiser
) grâce à super Rob
. En effet la dernière version SVN fait tourner (de son petit nom) SimpleExample. Je vous ai mit une vidéo en bas (fait par moi donc très bof). Vous pouvez aussi allez voir le blog d’Alan.
Lien vers la vidéo.
PS : comme c’est fait avec VLC il se peut que ça marche qu’avec VLC
Posted on 12-01-2007 | By: Jérémie Laval
Category : QoTD
miguel_ : They changed the licence ?! What's the fuck ! That blows. Absofuckingtly blows.
– Miguel de Icaza sur #mono
Pour un peu resituer la citation, Miguel discutait la possibilité d’utiliser AGG pour implémenter WPF/E (Windows Presentation Foudation Everywhere) seulement, alors que cette bibliothèque était précédemment sous license MIT, la dernière news annonçait que le projet passait sous licence GPL ce qui rendait son utilisation inutilisable. Admirez tout particulièrement le magnifique « Absofuckingtly« .