galaxy 55 : script de récupération des prix
Salutations à tous les capitalicubistes qui me lisent !
Aujourd’hui un article de geek avec du code dedans. Mais pas du python. Nous, dans le blog de Réchèr, on n’est pas que des machines à pythonner, on est aussi des êtres humains, avec un cœur, un foie, des ovaires et/ou des couilles. Donc aujourd’hui ce sera …
Du javascript DTC (Dans Ta Console)
La société Motion Twin a (une fois n’est pas coutume, mais plusieurs fois est coutume), créé un chouette jeu "comme Minecraft, mais dans l’espace", intitulé Galayx 55. Le joueur y explore les diverses planètes à sa disposition : minage, extraction, récolte et recherche de constructions témoignant d’une civilisation perdue sont de mise. Je ne vous décris pas le jeu en détail, d’autres sites feront ça mieux que moi, et avec moins de commentaires débiles en rouge pour sous-entendre que je suis fou et que je voudrais que tout parte, non que tout reste, non que tout parte mais que le reste reste, prolétaritude du dictatioriaaaaaaaaaaaaahhhhh !
Ce jeu comporte un marché d’échange de cubes. Un peu comme Wall Street, mais sans les hippies qui l’occupy. (Tiens d’ailleurs, il en est où ce mouvement ? Faudra que je le moteur-de-recherchise, à l’occasion). Les joueurs peuvent y faire des offres d’achats, de vente, des transactions, etc. Tout cela est bien biaux.
Il y a juste un petit problème d’interface : on peut consulter les prix type de cube par type de cube, mais il n’y a pas de récapitulatif global !
Alors vous êtes là, avec vos planètes, comportant des centaines de cubes. Vous "kiffez" l’exploitation intensive de la nature dans le seul but d’amasser de l’argent. Vous êtes prêt à tondre des hectares entier de forêt luxuriante pour votre luxe. Sauf que vous ne pouvez pas savoir quels cubes se vendent le mieux. Mince alors.
Heureusement je suis là.
Disgression : j’ai mis le mot "kiffer" entre guillemets juste pour m’amuser à faire le type qui parle pas djeun’s mais qui essaie quand même de parler djeun’s tout en ayant bien conscience qu’il sait pas le faire, et qui prend tout cela au second degré. Je fais du second degré sur du second degré. D’ailleurs, pour être vraiment clair sur mes intentions, j’aurais du mettre les guillemets entre guillemets. Quelque chose comme ça : ‘"‘kiffer’"‘. (Sauf que WordPress me bidouille mes guillemets pas comme je veux, mais c’est pas grave).

Galaxy 55 est un jeu comportant des arbres et des barrières en bois, comme ce qu’on voit en arrière-plan de cette image.
Je me suis lancé dans la réalisation d’un bout de javascript automatisant la récupération des prix. Comme j’y connais pas grand-chose, je me suis dit que ce serait sûrement faisable sous la forme d’un gros tas de code à copier-coller comme un bourrin dans la console du navigateur. J’y suis parvenu.
Je ne m’en suis rendu compte que plus tard, mais j’ai vraiment eu du bol. Ça a pu fonctionner ainsi grâce au fait que la recherche des cubes, leur sélection et la récupération des prix se font par des requêtes Ajax.
(ici, il faudrait mettre une image d’un bidon de lessive Ajax, mais ce serait tellement convenu. Je vous l’épargne, d’accord ?)
Les requêtes Ajax ne changent pas l’URL, ce qui signifie qu’il n’y a pas de méga gros reset de la page web, qui aurait tué dans l’oeuf l’exécution de mon gentil script. Oui, mon script s’exécute dans un oeuf et il vous emmerde.
Et donc ça marche. Mon code, après quelques instants de moulinage, finit par logger le tableau complet des cours et des prix directement dans la console. Pour savoir comment s’en servir, consultez le mode d’emploi que j’ai posté dans le forum du jeu. (http://galaxy55.com/tid/forum#!view/69146|thread/17632463). Ou bien allez voir le repository de mon tout nouveau compte github. (https://github.com/darkrecher/Galaxy-55-PriceFetcher)
Faites-en bon usage, jeunes parallelépipédocapitalistes !
Les trucs que j’ai pas réussi à faire dans ce script.
Des requêtes jQuery qui ne se bloquent pas
Doit y avoir un truc qui m’échappe avec cette cochonnerie. Je tape $("div#best_ask span.tgt") dans la console et j’obtiens un tableau contenant un élément. Jusqu’ici tout va bien.
Sur la même page, je lance mon script comportant cette ligne de code, et elle me renvoie null.
Je me dis qu’il faut peut-être attendre que les ajaxeries en cours soient terminées. Je met la ligne dans une fonction SetTimeout, qui se relance tant que le truc obtenu est null. Et ça se relance à l’infini. Merci, au revoir, et passez-moi une brouette de commandes getElement[ById/sByTagName/sByClassName].
Continuer mon script sur une autre page
Lorsque je suis parvenu à logger le tableau dans la console, je me suis dit que ce serait cool de l’envoyer automatiquement à un site de pastebin. C’est là que je me suis heurté au problème non vu précédemment, pour cause de gros coup de bol.
Ça paraît évidemment pour ceux qui font de la programmation web depuis l’époque où leur mère suçait encore des bites, mais pour moi, ça ne l’était pas (l’évidence, pas la bite). Je vais donc vous l’écrire en gras : La plupart des infos en mémoire (variables, fonctions à exécuter après un timer, etc.) sont oubliées lorsqu’on passe d’une page à une autre. Ce n’est pas une limitation technique, c’est le navigateur qui le fait exprès. C’est une sorte de mesure de sécurité, appelée la "Same Origin Policy", ou quelque chose comme ça. Il y a bien une instruction javascript pour changer de page, mais lorsqu’on le fait : pouf ! Reset.
Les "vrais" sites web, pour conserver leurs informations, utilisent des cookies dont ils gavent votre navigateur. Il existe sûrement une instruction en javascript pour concocter une de ces délicieuses friandises, mais ça n’aidera pas mon pauvre script dans sa pauvre console. Il va de toutes façons se stopper en changeant de page, et je n’aurais pas l’occasion de manger le cookie que je viens de poser.
La solution serait d’utiliser un plug-in tel que GreaseMonkey. Il peut cuisiner ses propres cookies rien que pour lui, et exécuter différents morceaux de javascript dans différentes pages. J’aurais donc un morceau dans la page Galaxy 55, un autre dans la page du pastebin, et les deux se transmetteraient les données grâce à un cookie commun. (kou-ki-kom-1)
Sauf que cette solution, je n’ai pas envie de la mettre en place, d’abord parce que j’ai la flemme, et ensuite parce que ce serait moins portable. Le script tel qu’il est actuellement, y’a rien besoin d’autre qu’un navigateur pour l’exécuter. Pas de singe graisseux à installer, ni tout autre tralalas. Je veux que ça reste super simple à utiliser, que n’importe quel joueur de Galaxy 55 puisse le lancer, pour éventuellement rediffuser publiquement les prix et en faire profiter tout le monde. J’ai dit.
Autre petite chose concernant Galaxy 55
Pour aller d’une planète à l’autre, on dispose d’un vaisseau, à concevoir soi-même comme on veut.
Ce vaisseau doit respecter diverses contraintes (présence obligatoire de l’ordinateur de bord, étanchéité, etc.). De plus, une valeur de vitesse y est associée, qui semble être fonction du nombre de cube utilisé.
Comme je suis un grand scientifique, je suis parvenu à créer le plus petit vaisseau possible respectant toutes les contraintes. Et j’ai également trouvé la formule déterminant la vitesse. J’ai publié le détail de ces recherches cruciales et sérieuses dans le forum du jeu. (http://galaxy55.com/tid/forum#!view/96|thread/11814458?p=1)
Distinction suprême pour mon travail, la formule de la vitesse a été reprise dans la revue scientifique Twinpedia. (http://www.twinpedia.com/galaxy55/donnees_mathematiques)
Mes nouveaux l’amis de l’internet
Pour trouver la réponse à mes questions existentielles sur le javascript et les pastebin, j’ai eu recours à mes nouveaux l’amis de l’internet. Ils s’appellent Sam et Max et ont un blog super. (http://sametmax.com/). Allez-y les voir, je les «’»"«’»kiffe«’»"«’». Voici une photo d’eux, avec un troisième ami indéterminé.
Je vais essayer, dans les semaines qui viennent, de leur proposer des articles sympatoches sur le python ou autre. C’est toujours bien de squatter un peu le blog d’autres gens, ça permet d’amener du flux de cerveau dans le mien.
J’en profite également pour remercier Roro, un autre l’ami de l’internet. C’est lui qui m’a introduit (avec vaseline) au blog de Sam&Max. Il n’a pas de site ni de blog ni de truc comme ça. Alors je vais juste le remercier publiquement ici. (Et merci aussi pour plein d’autres trucs).








05/11/2012 à 02:42:02
Source des images
Les deux images du jeu.
http://cur.lv/6h9f
http ://galaxy55.com/
Eh bien elles viennent du jeu, figurez-vous. La première image, c’est ma planète principale, qui vient de la version alpha 3 du jeu. J’y entrepose tous le bazar de cube intéressant que je pique sur d’autres planètes. À ce sujet, j’ai architecté une structure de stockage ordonnée, pratique d’accès et évolutive. J’écrirais un autre article à ce sujet dès que j’en ai le temps. (Donnez-moi votre pognon, tout ça…)
La seconde image, c’est l’interface rustique et marronne du marché au cube. Mais comme le reste du jeu est quand même vachement bien, et encore en cours de développement, et totalement gratuit pour l’instant, je crois qu’on va pas trop se plaindre.
Une nana avec les cheveux roses.
http://cur.lv/6hag
http ://bbw-girls.tumblr.com/post/15565061122/gsggs
Bon c’est une fausse couleur de cheveux, mais on ne va pas lui en tenir rigueur n’est-ce pas ? On a bien le droit, de temps en temps, d’améliorer artificiellement son corps. D’autre part, ce sont de faux nichons, mais on va lui en tenir raideur, n’est-ce pas ? Ça me fait penser aux Twix, avant, ça s’appelait des raideurs. Eh oui, je suis vieux, comme le dit le texte débile qui "circule sur internet", stipulant que les gens qui savent que ça s’appelaient raideur avant sont des vieux. Moi je vieux bien, sauf qu’on s’est un peu foutu de ma gueule, parce qu’au fur et à mesure que je deviens vieux, on recule d’autant l’âge de la retraite. Et ça me fait bien chier. Faudrait savoir. Je suis vieux pour les trucs de jeunes, et jeunes pour les trucs de vieux tel que la retraite. Ça doit être ça la magie de la "génération perdue". (Toutes les générations se plaisent à se nommer "la génération perdue", pour se dédouaner des problèmes qu’elles ont).
Des gens (modernes, apparemment), qui jouent au jokari.
http://cur.lv/6hmk
http ://www. dejeunesgensmodernes.com/2012/07/summer-pastime-14-le-jokari/
Pour ceux qu’auraient pas compris, c’est un jeu de mot entre "jQuery" et "jokari". Nan, attendez, je vous explique. C’est parce que, au niveau de la sonorité, dans "jQuery", on commence par prononcer "ji", et ça ressemble un peu à "jo", comme dans "jokari". Et ensuite, on prononce "query" (kouèri), et ça ressemble un peu à "kari", comme dans jokari. Attendez, là vous rigolez pas, mais c’est parce que je vous ai pas encore complètement tout expliqué bien en détail. Donc, dans "jQuery", y’a le son "j", qui ressemble (et qui est même égal) à "j". Ensuite, y’a "i", même si c’est pas écrit dans le mot, on le prononce. Eh bien ce "i", il n’est pas vraiment égal à "o". Mais c’est pas grave, parce que c’est la suite qu’est marrante. Et donc, ensuite, on a le son "k" qui est égal au son "k". Puis le son "ouè", enfin là ça fait bizarre, c’est parce que je l’écrit le plus possible de la manière dont ça se prononce, le mieux ce serait de le mettre en phonétique, mais tout le monde sait pas forcément écrire la phonétique, en particulier moi, et donc le son "ouè", il ressemble un peu au son "a", ouè mais non en fait il ressemble pas à, il est carrément pas égal. C’est pas grave. Et pour finir, on a les sons "r" et "i", qui, eux, sont totalement égaux aux sons "r" et "i". Et c’est pour ça que c’est drôle, parce que les sons sont son s’on s’ont çon.
Couverture de la BD "le cube numérique".
http://cur.lv/6hmu
http ://gallica.bnf.fr/VisuSNE?id=oai_exist.dupuis.be_9782803613953&r=&lang=FR
C’est dessiné et scénarisé par Andreas, mon auteur de BD préféré. J’en ai parlé dans un article d’un ancien numéro de 42. Je peux pas tout raconter en détail ici, ce serait vraiment trop lon lon lon lon. Mais sachez que je vous réserve peut-être quelque chose par rapport à ce monsieur Andreas. "le maître", comme ils disent chez BdParadisio.
Encore une image du jeu.
http://cur.lv/6hmx
http ://galaxy55.com/media
Celle-ci ne vient pas d’une de mes planètes, mais d’un screenshot de démo du jeux. Donc bien présenté comme il faut. J’en fait pas des aussi classe avec mes planètes, mais j’ai quand même quelques zones topologeogéographiques assez vertigineuse. Des cailloux biscornus à perte de vue, des cascades géantes, des crevasses sans fond font fon fon fon fon fon fon fon.
Des fesses.
http://cur.lv/6hmy
http ://maxx46.tumblr.com/post/31936111497
Ce sont des chouettes fesses. Je ne connais pas le nom de l’actrice-top-modèle, désolé. Tout ce que je peux vous dire, c’est quelque chose qui ne bugge pas avec le son "on". Parce que des fesses comme ça, quand même, ça distord suffisamment la réalité vers un monde positif, magique et plein d’arc-en-ciel pour être capable de me corriger mes bugs. Ce qu’il faudrait c’est des femmes habillées comme ça qui se promènent dans la rue. Ça soignerait plein de probèmes du monde.
Un chien, un autre chien et un lapin.
http://cur.lv/6hnc
http ://www .ugo.com/web-culture/dog-on-dog-on-rabbit
Par tradition, mes nouveaux l’amis de l’internet sont représentés par des animaux. La tradition est ici de circonstance, puisque Sam est un chien et Max un lapin. Quand à leur troisième ami chien, je ne sais pas qui c’est. Mais la photo, ainsi que sa date de publication nous permettent de savoir que l’anniversaire de cet ami se situe aux alentours du 11 avril. Je dis ça rapport à la blague : "Qu’est-ce que 3 pédés qui s’enculent à la queue-leu-leu (c’est leu cas de le dire). Réponse : l’anniversaire de celui du milieu".
Ah ouais, et sinon, la page, faut la charger deux fois de suite pour voir l’image. Enfin chez moi, c’est ce que ça fait. Je sais pas pourquoi. Mais je m’en fout. C’est rigolo, c’est la phrase inverse de la phrase de l’informaticien typique. "Chez moi, ça marche pas". (Ça c’est la phrase inverse, la vraie phrase, c’est l’autre, faut inverser pour l’avoir.)
Un singe qui sourit.
http://cur.lv/6hnl
http ://www .wallpapers-avenue.com/animaux-7/singe-667/singe-n-5424-wallpaper-5424.html
Donc animal, parce que ami. OK, on reste dans la même optique. Et sinon, c’est un clin d’oeil subtil à cet immonde carte animée en Flash, visible sure le site de l’internaute, où on voit un crétin de singe avec une guitare, qui chante "merci, merci, meeeerci". Mais là, en l’occurrence, le singe, ce serait moi, et non pas le nouveau l’ami de l’internet. Puisque c’est moi qui remercie Roro le pas-singe pour tous ce qu’il a fait pour moi. (regonflage d’ego, aide matérielle, bizarrisme de l’espace, …).
Et j’ai encore plein de trucs que j’aimerais faire.
09/11/2012 à 23:25:36
Quand est-ce que tu nous pond un truc en python ?
Avec son accompagnement de petits légumes (non mais ça va pas…moi !…De commentaires !…veux-je dire !°
Quelque chose d’évolutif. Petite chose insignifiante à la naissance.
Mais à laquelle tu ajouterais des membres au fil du temps et de ta disponibilité.
Boouuuh! la dis-po-ni-bi-li-té..La chose la plus rare et la plus chère
sur cette foutue planète.
Bon. ben on va prendre patience.
Si tu a un moment, passe où tu sais, on n’y fait pas du python, mais on y fait quand meme.
12/11/2012 à 14:36:07
Ton appel a été entendu mon ami !
Je reconnais que, pour la plupart de mes créations, je préfère attendre de l’avoir totalement finie pour la proposer au monde extérieur.
Les libristes disent "release early, release often". J’ai longtemps pensé que c’était applicable aux logiciels, mais pas aux "oeuvres d’arts", et donc pas aux jeux vidéos.
Mais comme tu le dis, la disponibilité se faisant rare, je ne suis jamais sûr de parvenir à finir ce que je commence. Il vaut donc mieux le jeter en pâture au monde extérieur dès que possible. Le monde en fera bien ce qu’il voudra.
Je te remercie pour ces encouragements et pour ton intérêt. Ca mérite bien un tout petit quelque chose en retour. Alors, hop, tu peux aller là : https://github.com/darkrecher/GMarble
Tu lis le texte de présentation, tu récupères le code source et tu en fais ce que tu veux.
J’ai un autre projet, un peu plus volumineux, que je déposerais également dans mon github. Ca devrait venir très bientôt.
Promis, j’essaye de repasser là où je sais, dans la semaine. En attendant, amuses-toi bien avec cet embryon de GMarble !!