MonkeyBlog

Voyons un peu plus loin — Part 2/3

July 31st, 2008 L

Comme promi on continue aujourd’hui avec la vision de VoodooHaust sur les prochaines machines de Microsoft. Bonne lecture. Read the rest of this entry »

Posted in Coding | No Comments »

Google Protocol Buffers

July 10th, 2008 L

Ce n’est pas un secret, l’utilisation de techniques telles que le “data driven programming” peut parfois sauver des vies et beaucoup de cheveux. L’unique probleme de ce genre de concept informatique reste… et bien que c’est un concept, donc qu’il faut l’implementer, et souvent (malheureusement) de facon tres specifique pour coller au mieux aux besoins de l’application que l’on developpe surtout quand on souhaite avoir un minimum de performence (comprendre : quand on ne veut pas utiliser de XML pour la description des datas).

J’ai personnellement ete tres souvent confronte a ce genre de casse tete: “pas de XML ok, donc on binarise? Oui mais quel language pour le binarizer? C/C++? Oui mais j’aimerais quand meme que ce soit un brin plus generique que ca… Et puis compiler pour avoir un binarizer robuste c’est assez embettant… Du script ? oui comme du Ruby… mais il ne faut pas que tout cela soit specifique…” etc.

C’est ainsi qu’aujourd’hui un collegue de boulot se pose comme une fleur a cote de moi pour me dire “Hier je suis tombe sur un truc sympa sur l’internet mondiale, tiens regarde”. Voila comment j’ai decouvert Protocol Buffers, une application (apparement) toute fraiche de chez Google qui permet de facon tres simple de binariser des informations, sans se retrouver avec un classement affreux et inhumain comme cela pourrait l’etre avec une utilisation trop intensive du XML.

Pour le moment disponible pour les languages C++, Java et Python, gageons que dans quelques semaines nous trouveront des dizaines d’autres adaptation de ce Protocol Buffers.
Le tout se trouve assez facilement sur le net, mais comme je suis un gars sympa, voila le lien qui va bien.

Posted in Coding | No Comments »

Switch User - Recuperer le shell root.

June 23rd, 2008 L

Sudo

Suite a un soucis plus lie a mes mauvais reflexes psycho-moteur qu’a mon etourderie legendaire, je me suis trouve dans une situation fort rigolote qui consiste a ce que mon root n’ait plus de shell (apres une commande proche de chsh root : /bin/jecriskejepense). Et comme je suis un rigolo, aucun de mes autres utilisateurs ne fait partie de la liste des sudoers.
Apres m’etre bien marre (oui, c’etait des larmes de joie!), je me suis lance dans une nouvelle aventure “farfouillons le net et les manpages” (pour les windowsiens, nottez que les manpages ne sont malheureusement pas des page remplis de photos un peu ole-ole, uniquement des pages de documentations, qui soit dit en passant n’ont rien de tres sexy).

Et c’est ainsi que je tombe sur l’argument -c de su.

-c, –command COMMAND
Specify a command that will be invoked by the shell using its -c.

En voila une bonne nouvelle, puisque comme (a ce qu’il parrait) -c permet d’executer une et une seule commande, il suffirait d’y placer un script, ou un petit sed pour atteindre le /etc/passwd et voila.

Ouais ok, super, mais la commande passee a -c doit bien etre lance dans un environnement, celui la meme fourni par un shell! DAMN IT! Mais heureusement il reste l’argument -s de su:

-s, –shell SHELL
The shell that will be invoked.

The invoked shell is chosen from (highest priority first):
· The shell specified with –shell.
· If –preserve-environment is used, the shell specified by the
$SHELL environment variable.
· The shell indicated in the /etc/passwd entry for the target
user.
· /bin/sh if a shell could not be found by any above method.

If the target user has a restricted shell (i.e. the shell field
of this users entry in /etc/passwd is not listed in
/etc/shell), then the –shell option or the $SHELL environment
variable wont be taken into account, unless su is called by
root.

Donc si je lis ca, je suis legalement en droit de penser qu’une commande comme la suivante appellerait le script ‘mon_script’ avec les droit root au sein d’un bash.

$> su root -s /bin/bash -c /tmp/mon_script

Et bien pas du tout, car malgre le parametre -s il semblerait que le root ait besoin d’un shell valide meme lorsqu’on force le shell. Ce qui d’un cote parrait logique puisque dans le cas contraire l’utilite des /bin/false ou /bin/jail afin d’enlever l’acces au shell a certains utilisateurs n’aurait plus de sens. Alors la solution (normal) qu’il me restait, a ete de redemarrer avec un live-cd pour monter a la main ma partition / et modifier le fichier /etc/passwd afin d’y renseigner un shell valide (l’autre solution, en cas de non acces physique a la machine, aurait ete de recuperer la main sur un process tournant avec les droits root).

Voila un billet ou on croit des le debut qu’on peut recuperer assez facilement un shell root meme quand on est assez con pour chsh root… mais non! Je n’ai pas trouve LA solution. Au moins j’espere que vous aurez appris l’existence de parametres sympa a su.

Posted in Coding, Life | 4 Comments »

Grub et les nouveaux disques durs.

June 16th, 2008 L

GrubComme ca m’a pri un peu de temps, alors que ca semble quand meme super evident, j’en fais un petit billet qui n’est rien d’autre qu’un cri d’espoir au monde souhaitant que je ne sois pas le seul a rater les evidences :) .

La problematique est la suivante:
On a un systeme GNU/Linux (Debian dans mon cas) qui fonctionne tres bien, mais qui commence a etre un peu juste en place. Du coup on souhaite lui rajouter un autre disque dur plutot qu’etre propre et faire un peu de rangement. Seulement le nouveau disque dur pour une raison X ou Y sera le nouveau primary device, et l’ancien l’esclave du nouveau.
On se retrouve donc a devoir booter un disque qui ne contient pas forcement de bonne choses et qui surtout n’a aucune idee de notre configuration precedente, puisque celle ci se trouve sur l’autre disque dur.

La solution est (comme dit plus haut) plutot simple. Il suffit de se munir d’un live-cd et demarrer avec. Une fois lance on accede a un terminal et on regarde nos differents devices, dans ma configuration j’avais le nouveau disque dur en /dev/hda et l’ancien en /dev/hdd. Il faut donc d’abord formater le nouveau disque, pour cela on utilise mkfs de maniere un peu seche puisque celui ci efface tout simple le contenu du disque entier pour n’en faire qu’une grosse partition. La commande (en root, donc precedee d’un sudo si besoin) :

# mkfs -t ext2 /dev/hda

On confirme la commande, et cela nous cree donc une partition de la taille du nouveau disque dur de type ext2 (ou du type que vous souhaitez utiliser, et de la taille que vous voulez, je ne suis pas specialement difficile comme garcon).
Tout ca est bien sympa. Seulement en l’etat si on redemarre ca ne change rien, on bootera toujours sur le nouveau disque, propre cette fois, mais pas de grub, pas d’info, rien qui n’indique que notre systeme ne se trouve sur le second disque dur. Pour cela on lance la console de grub pour lui indiquer ou se trouve les infos utiles a grub, et ou les re-installer. Toujours en root on lance la console de grub :

# grub –batch

On souhaite retrouver notre configuration grub precedente, alors on lui demande ou la trouver:

> find /boot/grub/stage1
(hd1,0)

Maintenant que nous savons ou se trouve la configuration valide de grub (dans mon cas (hd1,0)) il suffit de dire a grub de l’utiliser et de s’installer sur le nouveau disque dur (soit hd0) par les commandes suivantes:

> root (hd1,0)
> setup (hd0)
> quit

Qu’avons nous jusqu’ici?
Un nouveau disque dur correctement formate et partitionne, qui a recu une installation de grub utilisant les informations de l’ancien disque dur, comme nous le souhaitions. On pourrait donc penser qu’en redemarrant tout se passerait bien dans le meilleur des mondes… qu’on retrouverait notre systeme comme avant mais avec un disque supplementaire. Et bien on se tromperait.
Puisqu’en redemarrant on arriverait bien sur un grub tout neuf, nous proposant des configurations coherentes, mais celle ci seraient innexploitables puisque pointant sur hd0, qui etait la position de l’ancien disque quand il etait seul, mais qui a ete bouleverse quand le nouveau disque a pri cette position, releguant donc l’ancien sur hd1. Pour etre clair, notre systeme se trouve donc maintenant sur hd1 et pas sur hd0 puisque le disque est vide.
Pour corriger ce probleme, il suffit d’ouvrir le fichier de menu des configuration de grub et modifier la ligne qui specifie ou se trouve le systeme. Il faut avant tout monter la partition / de notre systeme pour pouvoir acceder aux fichiers, dans mon cas :

# mkdir /tmp/monsysteme
# mount /dev/hdd2 /tmp/monsysteme

une fois ceci fait il suffit d’ouvrir /boot/grub/menu.lst avec votre editeur de texte prefere:

# emacs /tmp/monsysteme/boot/grub/menu.lst

et aux lignes de configuration (generalement en fin de fichier) nous devrions trouver quelque chose comme ceci :

title Debian GNU/Linux, kernel 2.6.17-2-486
root (hd0,0)
kernel /boot/vmlinuz-2.6.17-2-486 root=/dev/hdd1 ro
initrd /boot/initrd.img-2.6.17-2-486
savedefault

la ligne qui nous interesse est celle contenant la valeur du champs root. En effet on remarque que tout pointe encore sur (hd0,0) qui, en l’etat actuel, est notre nouveau disque. Remplacons le pour qu’il pointe sur l’ancien disque dur, ainsi on remplace la ligne root par celle que nous a retourne le find de la console grub precedemment, dans mon cas:

root (hd1,0)

On sauvegarde.
On redemarre.
“et voila”.

Je me suis ainsi rendu compte que ce qui me faisait tres peur hier (a savoir grub) n’est en fait pas si effrayant quand on prend le temps de le connaitre.
Plus qu’un probleme d’informatique, une lecon de vie :)

Posted in Coding, Life | 2 Comments »

Jerks will be jerks.

April 3rd, 2008 L

GamaSutraArticle tres interessant, ce matin, dans les colonnes de Gamasutra.com, qui explique comment et pourquoi le mode online de certains jeux peut a lui seul faire baisser les ventes du titre a cause des joueurs.
En effet il nous ait tous arrive un jour de faire une rencontre malheureuse sur un jeu online, et de faire face a certains etats d’esprits et autres insultes de tout poils, amenant forcement une image negative du online, et donc nous rebutant parfois a vouloir retenter l’experience.
Bref c’est plein d’humour, et surtout plein d’exemples et de clefs pour penser au social design qui permettra aux joueurs de prendre conscience, sans pour autant utiliser la technique dites du “je te mets le nez dedans”, qu’etre un cretin n’est pas profitable a une bonne experience de jeu.
Ce tres bon article se trouve par ici!

Posted in Coding, Gaming | No Comments »

GPU Gems, now readable online!

March 28th, 2008 L

Juste une courte breve, pour annoncer au monde entier que Nvidia vient d’offrir au Net son premier tome de GPU Gems. C’est vieux, c’est sur… mais on me souffle dans mon oreillette que c’est une tres bon ouvrage pour commencer dans le vaste monde des GPU.
Le tout ce trouve ici.

Posted in Coding | No Comments »

Top Spin Wii

March 28th, 2008 L

Top spin 3Ca n’a pas grand chose a voir, mais hier s’est deroule un petit show de presentation de Top Spin 3, a Miami. On pouvait y voir les differentes versions du jeu, sur differentes plateformes, et certaines stars du monde du tennis, etaient conviees a tester la version Wii.
Et c’est peut etre bete, mais voir James Blake, Svetlana Kuznetsova et surtout Maria Sharapova et Gael Monfils prendre du plaisir a ce jeu, est vraiment tres plaisant et rassurant pour la suite des evenements, puisque cela confirme qu’on ne s’est pas trompe dans ce qu’on faisait.

Posted in Coding, Gaming, Life | No Comments »

Console vs PC dev`

March 24th, 2008 L

Ces derniers temps, plusieurs personnes m’ont fait part de leur souhait de construire quelque chose dans le domaine de l’industrie video-ludique.
La plupart ne connaissant pas vraiment ce monde de l’interieur (je dois avouer que personnellement je n’en connait guere plus qu’eux), ils se retrouvent avec certaines interrogations.
C’est peut etre pour eux que, ce matin, Gamasutra a publie dans ses `columns` un article qui fait un comparatif, du point de vue developpeur entre la creation de jeux pour PC et consoles.

Le tout ce trouve ici.

Posted in Coding, Gaming | 1 Comment »

Quadra : le blog

January 20th, 2008 L

Un petit mot tres rapide pour vous annoncer avec joie la creation et la mise en ligne du blog du projet Quadra.
C’est sur ce dernier que vous aurez les news de l’avancee du projet, des screens et autres annonces de tout poil… en esperant qu’il y’en ait vite :)
C’est par ici!

Posted in Blog, Coding, Life | No Comments »

Quadra

December 27th, 2007 L

QuadraCe n’est pas vraiment une annonce, bien qu’il fallait qu’en ces fetes de fin d’annee je m’autorise un petit cadeau de plus. Mais j’ai l’extreme plaisir, et l’immense joie (je n’en ferais jamais trop) de vous annoncer que le developpement du projet nomme Quadra, qui murit depuis maintenant pres de trois ans dans mon sombre esprit torture, a repri, et n’a jamais ete aussi fourni.
En effet apres une premiere version solo en 2D que je nomme affectueusement la version vPorcasse0.1, puis une ebauche de version 3D avec les mauvais outils, me nous voila (car oui, j’ai trouve des gens assez fou pour vouloir mettre les mains dedans) repartis de plus belle.
Outre la reprise du developpement, je vous annonce aussi que la premiere Milestone (nommee RenderReady) est desormais terminee et fonctionnelle, depuis plusieurs semaines deja. Ainsi la plupart des outils, et du noyau meme du projet sont en place et en phase quasi finale. En gros, ca tourne! ca n’affiche rien mais ca tourne!

Mais le plus fou dans tout ca, c’est que certaines personnes me demandent encore ou en est ce projet qui date de plusieurs annees… et bien cette annonce est pour vous :) en esperant que ca vous plaise, et surtout qu’on s’y tienne plus d’un mois…

Posted in Coding, Life | 2 Comments »

« Previous Entries
  • You are currently browsing the archives for the Coding category.

  • Archives

    • August 2008
    • July 2008
    • June 2008
    • May 2008
    • April 2008
    • March 2008
    • February 2008
    • January 2008
    • December 2007
    • November 2007
    • October 2007
  • Categories

    • Blog (7)
    • Coding (11)
    • Gaming (21)
    • Life (32)
    • Other (2)

MonkeyBlog is proudly powered by WordPress | Bob