dimanche 28 mars 2010

Games for Windows Live est une bouse

Cela faisait un certain temps que je ne m'étais pas acheté un bon jeu (le précédent était Fallout 3, très bon). Je me suis donc lâché le week-end dernier, et j'ai décidé d'expérimenter Steam pour me chopper Bioshock 2. Ayant donné mes sous, je laisse le téléchargement pour quelques heures, et je m'apprête à lancer la bête. C'est là que tout est parti en vrille.

Tout d'abord, l'horrible SecuRom me saute au visage en me demandant un code. Après quelques recherches, je découvre qu'il faut faire un clic droit sur le jeu dans l'interface Steam et aller chercher la "CD Key". Yeah, ça démarre! Je vois alors une interface bizarre qui commence à m'embêter. Je vois "Games for Windows Live", et un truc sur les sauvegardes, et on me demande un code. Alors que le jeu est déjà démarré. Encore un code! Je finis par le trouver à grands coups de Alt-Tab, je vire le login à Windows Live à grands coups de clics, et je regarde l'excellente scène de début.

Erreur.

Je me disais quand même que cette histoire de sauvegardes était bizarre. Dès que j'ai le contrôle, j'essaie de sauver.

Non.

Je réitère: Sans un compte Windows Live, on ne peut pas sauver. J'ai acheté le truc, entré plein de codes, et je n'ai même pas le droit de sauver. Qui donc a pu imaginer un seul instant quelque chose d'aussi bancal!

J'avais bien un compte Live qui traînait, j'ai donc entré mes identifiants, et là Microsoft continue à m'embêter! Maintenant, ils veulent la création d'un compte Jeux, ce qui veut dire entrer quelques informations personnelles supplémentaires. Je leur dit intérieurement d'aller se faire foutre, et entre une date de naissance délirante, en 2009. Et là, on me dit d'entrer l'adresse e-mail de mes parents pour obtenir leur autorisation.

Difficile d'exprimer l'état de rage dans lequel tout ce cirque m'a mis. Je me suis mis à invectiver tout haut et en termes particulièrement fleuris Microsoft, les DRM, et le foutage de gueule généralisé auquel nous étions confrontés. Rage qui fut décuplée lorsque je m'aperçus qu'il m'était impossible de changer la date de naissance bidon que j'avais entrée. Et que de toutes façons, le jeu était complétement planté, et qu'il fallait un reboot complet pour qu'il accepte de redémarrer.

Puis, ce fut le calme après la tempête. Confronté d'un côté à une longue bataille et quelques lettres bien senties, et de l'autre à agir comme un bon petit con-sommateur, j'ai pris la solution de facilité (et j'avais envie de jouer!). J'ai créé un autre compte Live, j'ai entré une date de naissance plus proche de la réalité.

Heureusement, le jeu est bon. Très bon, même, il est difficile de s'en décrocher. Le foutage de geule continue, puisque je gagne de temps en temps des "Bonus Live" lors de certaines actions en jeu, ce qui est, je supppose, la faible excuse pour nous infliger ces conneries ("mais si, notre con-sommateur va pouvoir enregistrer tous ses exploits sur son compte Live, super, non?"). Mais j'essaie d'ignorer les tentatives du DRM pour me rappeler qu'il est là, et de me plonger dans l'ambiance en écoutant le bruit des gouttes qui tombent sur mon scaphandre.

Je ne dirai pas "plus jamais ça!", mais je pense faire plus attention à qui je donne mes sous la prochaine fois. Tiens, je me laisserai peut-être tenter par X3 - Terran Conflict. Entre temps, je vais aller coder, ça va me détendre.

mercredi 17 mars 2010

Coder efficacement avec Emacs - Partie 3: gdb

Commençons dès maintenant à parler code! Une fonctionnalité des plus intéressantes d'Emacs est de fournir une interface graphique à gdb. Ouvrez donc le fichier source qui vous intéresse, puis démarrez gdb via la commande suivante: "M-x gdb" (pour ceux qui ont déjà oublié: Esc, suivi de x, suivi de gdb, puis entrée). Confirmez la commande. La fenêtre se sépare en deux, la console gdb apparaissant en bas. Les commandes gdb marcheront comme d'hab: "file monprogramme" pour charger monprogramme, run pour le faire tourner, etc.



Une fois que le programme est chargé via la commande "file", il est possible d'aller placer des breakpoints directement dans emacs. Dirigez vous sur la ligne qui vous intéresse, et tapez "C-x spc" (Control-x suivi de la barre espace). Gdb vous informe que le breakpoint a été ajouté, et les versions récentes d'Emacs vont même jusqu'à l'afficher dans la marge du fichier source.

Les commandes gdb "up" et "down" permettent de se déplacer dans le stack, et Emacs va gentiment suivre le fichier s'il peut le retrouver.

Enfin, comble de l'élégance, à partir d'Emacs 23, il existe un mode qui affiche en même temps le stack, la liste des breakpoints, les variables locales, les registres, etc, façon Visual Studio. Après avoir lancé gdb dans emacs, tapez "M-x gdb-many-windows", et vous obtiendrez quelque chose d'un peu comme ça:



Bon débuggage!

mercredi 10 mars 2010

Coder efficacement avec Emacs - Partie 2: Les bases

Les commandes Emacs s'obtiennent au clavier via des combinaisons de touches, généralement à partir de la touche Control (notée C dans la doc) ou de la touche Meta (notée M). La touche Meta s'obtient soit via la touche Esc, soit en maintenant la touche Alt. C'est un peu bizarre dit comme ça, mais on s'y fait. Les commandes apparaissent dans la barre inférieure au fur et à mesure qu'on les tape.

Voilà les quelques touches suffisantes pour pouvoir éditer simplement du texte:


  • C-x C-s: Sauvegarder (maintenir la touche Ctrl, et taper x puis s)

  • C-x C-c: Quitter (maintenir la touche Ctrl, et taper x puis c)

  • C-s: Chercher (maintenir la touche Ctrl, taper s, relâcher Ctrl, et taper le texte à chercher). Continuer à taper C-s pour chercher la prochaine occurence. La recherche est case insensitive si le texte est tapé en minuscules, case sensitive s'il y a au moins une majuscule.

  • M-%: Remplacer (taper Esc, puis %, ou maintenir Alt, puis %). Tapez ensuite le texte à chercher, entrée, le texte à remplacer, entrée, puis ! pour tout remplacer, ou y (yes) et n (no) pour remplacer au fur et à mesure (pas de panique, les choix sont rappelés dans la barre de commandes!). Le remplacement gère intelligemment les majuscules

  • M-g: Annuler (généralement Alt + g répété avec violence). Ceci annule la commande courante. Très pratique lorsque l'on a rentré quelque chose de bizarre.



Voici donc la trousse de secours minimale d'Emacs. La prochaine fois, l'on plongera un peu plus profondément dans les entrailles de la bête.

dimanche 7 mars 2010

Coder efficacement avec Emacs - Partie 1: Préliminaires

Cela fait un certain temps que je codais en amateur avec Emacs (au boulot, ils me donnaient un beau VC++ tout neuf), mais maintenant que j'ai rejoint la horde des développeurs Unix, il m'a fallu devenir bien plus efficace avec les outils fournis. Voici donc une petite introduction au fameux éditeur. Message personnel à Socrate: j'attends ton guide vim!

Quand ne pas utiliser Emacs
Pour autant que les aficionados les plus barbus prétendent que l'on peut tout faire avec Emacs (la vanne habituelle étant qu'Emacs est un bon système d'exploitation auquel il ne manque qu'un éditeur de texte potable), il est des cas où ce n'est pas forcément l'outil le plus adapté. Par exemple, pour la documentation de code. Dans Visual Studio, bien qu'intellisense ne porte pas toujours très bien son nom, c'est quand même un outil pratique pour mieux comprendre le code. Dans Emacs, les tags m'ont toujours laissés assez froid, et je ne peux donc plus me passer de mon Firefox avec la documentation Doxygen (à jour, bien entendu).

Bien que ce soit évidemment possible, je ne suis pas particulièrement fan non plus de faire tourner ses commandes unix, ou d'y regarder ses e-mails. Des histoires d'œufs et de paniers, en fait.

Rigoureux, voire rigoriste
Emacs est très efficace lorsque l'on peut répéter les commandes, travailler sur des rectangles de sélection, ou remplacer des expressions par d'autres. Il travaille également bien au niveau des lignes, plutôt qu'au niveau des caractères. Cela veut dire qu'un code très carré sera beaucoup plus facile à travailler au corps. En utilisant systématiquement les mêmes espacements, les mêmes positions, les mêmes majuscules, en utilisant des noms de variables un peu plus long pour augmenter ses chances d'être uniques dans le fichier, en alignant un paramètre de fonction par ligne pour pouvoir supprimer un paramètre d'une seule touche, l'on gagne un temps non négligeable.

Améliorer, et s'améliorer
L'on peut devenir raisonnablement efficace avec Emacs en un temps très court via quelques commandes de base. Mais c'est à ce moment qu'il faut chercher plus loin, avoir moins de patience pour les tâches répétitives, et chercher le bon raccourci, ou écrire un petit script qui fera gagner un temps fou sur le long terme. Par exemple, passer du .h au .cpp avec une touche: la fonctionnalité existait dans une extension de Visual Studio, et je l'avais trouvée particulièrement efficace. Quelques recherches plus tard, je trouvais un équivalent pour Emacs, qu'il m'a suffi d'adapter. Mon script me suit maintenant partout!

Prochaine partie: les commandes de base.