vendredi 6 août 2010

Que faire de votre carte mémoire Ps2 Hackée ?

Je vous propose aujourd'hui une petite note (après relecture elle n'est pas si petite que ça..) qui suis mon premier article du 23 février sur le hack PS2 et mon deuxième article du 14 aout 2011 sur le hack PS2 : Volume 2. En effet, bon nombre de personnes sont tombées sur cet article et les réactions (en commentaire ou par mail) ont été nombreuses. Depuis, pas mal de personnes m'ont contactées par email pour me demander si je pouvais leur hacker une carte mémoire, chose que j'ai fait gratuitement comme précisé avant (je ne fournis rien, j'installe le hack). J'aimerais donc revenir sur certains points (des questions que l'on me pose souvent) et ajouter quelques liens pour que les personnes qui ont recours à mes service sachent quoi faire et où chercher après réception de leur carte mémoire Ps2 Hackée avec Free MC Boot.

Première étape : Me contacter

Edit du 8 Aout 2011 : Je ne fais plus de carte mémoire pour le moment car je n'ai plus le temps. Vous pouvez toujours passer par metagame-eu pour trouver une personne capable de vous faire ça.

Vous pouvez me contacter sur mon adresse email comte{.}yannick{@}free{.}fr (sans les accolades bien sur) en me précisant les choses suivantes :
  1. Vos coordonnées (que je puisse garder contact jusqu'à ce que tout soit terminé)
  2. Votre modèle de Ps2 (Fat ou Slim, je n'ai pas besoin du numéro de série)
  3. Ce que vous voulez sur la carte mémoire (j'y reviens plus bas)
Pourquoi ai-je besoin de connaitre votre modèle de Ps2 ? C'est simple, le hack fonctionne sur toutes les Playstation 2 du marché mise à part les dernières (SCPH-9000X) version slim (celle avec l'alimentation d'intégrée à la console). Donc pour éviter toute ambiguïté et des frais postaux inutiles, je vous demande de me dire le modèle de votre console. Si vous savez de quoi vous parlés, aucun soucis dites moi "C'est une slim et elle est OK", si vous n'êtes pas sur nous regarderons ensemble.

Que voulez vous sur la carte mémoire ? A partir de maintenant vous avez le choix entre deux options
  1. Installation Lite
  2. Installation Full
L'installation "Lite" propose :
  • Le hack FreeMC Boot 1.8b
  • uLaunchElf 4.x (suivant la version)
  • OpenPs2 Loader 0.7 (suivant la version)
L'installation "Full" propose la même chose que l'installation "Lite" mais avec en plus d'autres chargeurs de jeux, des émulateurs (SuperNes, Nes, Megadrive, etc...), un mini media center, et quelques autres trucs que je n'utilise pas comme le dezonage de la console.

Deuxième étape : L'envoi 

Là j'ai vue beaucoup de type de lettre différentes donc je tiens à préciser quelques points :
  • Une enveloppe standard est largement suffisante pour une carte mémoire
  • Enveloppez la carte mémoire dans un feuille (tenu avec des aggraphes par exemple, c'est ce que je fait pour le retour, comme ça la carte mémoire est immobilisée dans l'enveloppe)
  • Un timbre à toujours suffi à envoyer la carte mémoire, donc n'en mettez pas deux, à moins que vous soyez parano et pensiez que la poste accorde plus d'importance à ceux qui joindrait deux timbres
  • Une feuille avec vos coordonnées (adresse de retour) et votre email (car je reçois des emails tous les jours et il peut m'arriver de supprimer le premier email que vous m'avez envoyé, donc pour que je puisse vous répondre tout de suite il me faut votre email)
Déjà, je tiens à m'excuser pour ceux qui m'ont envoyés deux timbres au lieu d'un seul (mais je n'étais pas sur), j'ai bien évidemment collé les deux timbres si c'était le cas (mon objectif n'étant pas de récupérer des timbres à l'oeil ;-) ).

Troisième étape : Elle est interne
  1. Je reçois la carte mémoire
  2. Suivant vos précisions je la hack
  3. Je la test sur ma Ps2 Fat puis sur ma Slim avec des homebrews
  4. Je prépare l'enveloppe de retour (des fois elle est prête avant la réception de votre carte)
  5. Je file à la poste et je vous contact par email

Et après un délai qui peut varié suivant la poste, vous recevez votre carte mémoire hackée et prête à faire ce que vous lui demanderez. Mais que faire ? pour où commencer ? M'envoyer un email ? Non, voici quelques éléments de réponse.

Pour OpenPs2 Loader 

Si votre objectif ultime est de lire des jeux depuis un support amovible comme une clé USB ou un disque dur externe, lisez ce qui suis.

Je le rappel, tous les lanceurs sur Ps2 ne permettent pas de lancer directement des jeux avec le format Iso. Pourquoi ça ? La pauvre Ps2 n'a que 32 Mo de ram, elle charge dans sa mémoire OpenPS2 Loader (certes ce n'est pas énorme) + des fichiers du CD/DVD + des fichiers du jeu, donc vous comprendrez qu'il faille retravailler l'iso ou le CD/DVD.

Pour cela, avant toute chose vous utiliserez par exemple UsbUtil disponible sur psx-scene, vous avez le choix entre plusieurs versions, la 2.1 est en espagnole mais c'est la plus récente, sinon vous pouvez (comme votre serviteur) utiliser la 2.0 qui fonctionne parfaitement. Sachez qu'il existe d'autres logiciels qui permettent de préparer un iso ou un CD/DVD de jeu, je pense par exemple au soft fourni lors de l'achat de USB Extrem. Vous trouverez un tutoriel sur l'utilisation de UsbUtil  (lien metagame).

Ensuite vous n'avez qu'à lancer OpenPs2 Loader, de charger la liste des jeux et c'est partie, encore une fois regardez bien le dernier lien (sur UsbUtil) car il explique certaines choses concernant les patchs pour faire fonctionner certains jeux.

Mise en garde : Lorsque vous lancez un jeu depuis OpenPs2 Loader, votre écran va changer plusieurs fois de couleurs (jaune, bleu, rouge, violet...), c'est normal et une fois que votre jeu est chargé l'affichage redevient correcte, cependant si votre affichage reste bloqué sur une couleur cela peut vouloir dire plusieurs choses :
  1. Votre disque dur est fragmenté (donc défragmentez le correctement)
  2. Votre boitier de disque dur ou votre clé USB n'est pas compatible avec OPL
  3. Votre jeu n'est pas compatible
Si votre jeu n'est pas compatible, essayez d'utiliser des hacks dans OPL (touche triangle) et si les hacks ne fonctionnent pas attendez qu'une nouvelle version sorte.

Et si je veux la toute dernière version d'OpenPs2 Loader je fait comment ?

C'est simple l'ami, tu la compile toi même et tu la met sur ta carte mémoire ;) l'adresse tu dépôt mercurial est http://bitbucket.org/ifcaro/open-ps2-loader/wiki/Home . Pour la compiler vous aurez besoin d'un environnement de développement C/C++ ainsi que du Ps2 SDK, la compilation peut se faire sous Windows avec cygwin je crois ou sous Linux (c'est la solution la plus pratique). Si vous êtes un adepte de Virtual Box vous pouvez suivre ce guide (source psx-scene) qui vous permettra d'avoir directement l'environnement de développement Linux dans une machine virtuelle. Si vous êtes un Linuxien comme moi vous pouvez suivre ce guide qui indique comment installer et compiler le Ps2 SDK et OpenPs2 Loader (source psx-scene).

Bon et bien je pense avoir tout dit pour OpenPs2 Loader, je terminerais avec quelques adresses sympa :
* USB : Jeux lancés depuis un périphérique USB (disque externe, clé, psp...)
   HDD : Jeux lancés depuis le disque dur interne de la console
   SMB : Jeux lancés depuis le réseau via le protocole Samba (de amigo)


Et pour la suite ?

On m'a souvent demandé si on pouvais utiliser une clé USB pour sauvegarder ses parties (lien metagame), ne sachant pas trop je répondais que je ne savais pas mais il n'y a pas longtemps, une personne ayant profité de mes service et m'ayant posée la question m'a indiqué un lien qui répond à cette question, donc oui dans certains cas c'est possible, je n'ai pas testé cette manipulation encore.

Vous voudrez peut être mettre à jour certains homebrew ? et bien consultez ces liens :
On m'a aussi demandé si Linux était disponible sur Playstation 2 et si cela vous intéresse, je vous invite à suivre ce lien (source psx-scene). A l'heure où j'écris ces lignes, il n'y a pas encore d'interface graphique.

Et bien sur ce, je pense avoir pas mal fait le tour de la chose ;) si vous voyez d'autres choses à ajouter faites le moi savoir par commentaire ou par email.

Bon jeu à tous.

Contrat Creative Commons

jeudi 17 juin 2010

Retour sur l’épreuve des PTIs du Bts Ig

Ca faisait un moment que je n’avais pas pris le temps d’écrire un peu sur mon blog, et oui comme beaucoup j’étais en période d’examen. Je rappel à ceux qui ne le savent pas que je suis en deuxième années de BTS Informatique de Gestion option Développeur d’applications (oui je sais : c’est long ! comme ce billet je préfère vous prévenir alors accrochez vous) par correspondance via le CNED de Poitiers. Les épreuves ont commencées le 11 mai avec les écrits sur une semaine, puis les oraux la semaine après, suivant les personnes ça pouvait être fin mai, début juin… pour ma part ça a été une épreuve par semaine, sauf la dernière (que je vais présenter après mon baratin) qui s’est déroulée aujourd’hui (le Lundi 14 Juin 2010).

Le point sur les autres épreuves


Ce n’est pas que les autres épreuves sont “useless” mais elles ne font pas aussi peurs que la fameuse épreuve des “PTIs” donc je vais être bref (avec moi bref ça ne veux pas forcément dire rapide, vous l’aurez compris ;) ). Globalement je ne suis pas super satisfait de mon travail car j’ai été trop lent. Finalement les études par correspondance c’est bien car ça permet quand même de travailler à son rythme et puis… ah ah ! Voila le problème : Le rythme. J’ai perdu beaucoup trop de temps avec mes brouillons et je ne me suis pas assez focalisé sur certains points.
L’étude de cas
Par exemple pour l’étude de cas j’ai vraiment pris mon temps pour faire un superbe MCD, au brouillon, puis sur la feuille, sérieusement il est superbe (je l’encadrerais dans ma chambre si j’était complètement fou), la partie SQL n’est pas laide, elle n’est pas blanche non plus, la première question était simple car oui il y avait une jointure qui ne servait à rien :O les autres questions n’étaient pas très durs.. la dernière question par contre à cause de mon brouillon et de mon “rythme” a retenu mon attention trop longtemps et au final : j’ai fait franchement n’importe quoi (un INSERT au lieu d’un UPDATE) et mon calcul était faux, heureusement le total des points du dossier 2 n’est pas que sur cette questions. J’oubliais la partie gestion que j’ai lamentablement ratée, en faite je ne me rappel plus trop… ça fait déjà un mois, c’est dommage car l’année avait été pas mal en GEOSI. Le dossier 3, quel bonheur… de la programmation orientée objet : Sérieusement j’adore ça, je ne programme que comme ça, la programmation procédurale ? j’ai du mal maintenant car je pense objet tout de suite, pour moi la programmation procédurale dans un gros programme ça va être une fonction merdique qui prend 30 pointeurs en paramètres dont des pointeurs sur fonctions… Pourquoi je dit ça ? vous croyez que je l’ai raté ? ha ha (là je parie que non) je l’ai partiellement : bien || mal réussie. Je me suis compliqué la tête pour rien sur certains passage et j’ai fait d’autres passage hyper rapidement, au final ma feuille comportait du blanc (du correcteur non liquide, vous savez type souris correcteur)… La partie avec le fichier XML m’a pris du temps car je ne comprenais pas totalement comment fonctionnait le système (il faut que je m’immerge dans le sujet, que je le sente en moi pour réussir, mais au BTS on à pas le temps de jouer à ça hein), après de la réflexion et une appropriation du système dans ma tête, je finis le dossier. Lorsque j’ai attaqué le dernier dossier il était 17h40 je crois et je faisais partie des derniers élèves de la salle. J’ai pousser mon cerveau hors limites, il fallait finir sinon c’était le #fail assuré (note à part : Militons pour que les hashtag de twitter passent aussi sur les blogs et sur les messageries instantanées), j’ai donc fait de mon mieux, je me suis aperçus que j’avais une mémoire assez visuel car je revoyais des schémas et surtout des tableaux d’AMSI concernant l’adressage des routeurs ! Là où je me suis lamentablement planté ça a été au masque sous réseau, quand j’y repense, je crois avoir indiqué les adresse de pont à la place… Mais c’était le stresse
Les Maths : Oui je l’ai fait !
Alors là c’est la surprise la plus totale est c’est pourquoi je lui consacre un paragraphe entier. Non je ne vais pas vous dire j’ai réussi les maths, mais je vais vous dire : J’ai réussi à ne pas louper les maths et encore mieux : je sais que j’ai des exercices de justes. Il faut savoir que je ne suis pas bon en math et pourtant j’aime cette matière (ce propos est à relativiser par moment..), je ne suis pas bon car quand j’étais jeune je n’ai pas travaillé et avec le temps j’ai pris du retard, et ce retard est dur à rattraper. La veille de l’épreuve de math (un jeudi férié) j’ai révisé , donc pour moi c’était : “révise ce que tu est capable d’appliquer” j’ai donc révisé les graphes, les matrices, les statistiques à une et deux variables, les probabilités (un peu) et quelques autres truc sombres que je n’aime pas mais qu’il a fallu au moins regarder comme les primitives, les intégrales et toutes ces choses qui vous font peur ! Lorsque je suis arrivé à l’épreuve j’était stressé car je pensais que j’allais rendre feuille blanche, et non.. la magie à opérée, comme pour l’AMSI et ces tableaux, les formules me venaient dans la tête et je les appliquaient, mieux encore je vérifiais mes calculs avec la calculatrice et.. magie c’était bon :) . Bien sur il y a des passages où je n’ai pas fait grand chose, mais globalement c’est très bon et j’en suis content.
Les autre épreuves
Oui il faut abréger un peu… c’est un billet sur les PTIs normalement mais j’avais besoin de parler des autres épreuves aussi finalement. Je trouve personnellement que l’anglais écrit était facile par contre j’ai raté totalement mon oral (panique, anarchie dans ma tête sur le coup). L’économie droit c’était faisable, cependant je n’avais pas assez de méthode et pas assez de pratique (et c’est ma faute, je me suis concentré sur d’autres choses cette année). L’expression c’est pas trop mal passées (j’attend..).
L’oral de soutenance
Je suis passé le premier (les profs avaient du retard à cause du café d’après manger) et je pense avoir fait ce qu’il fallait côté contenu et communication. Une chose “marrante” m’est arrivée 15 minutes avant de rentrer dans la salle, ma montre à lâchée donc impossible de savoir combien de temps j’ai mis à l’oral, heureusement j’avais un PowerPoint bien structuré et j’ai dit l’essentiel. Concernant les questions, la prof de Français m’a demandée ce que c’était que ce symbole bizarre sur mon MCD (un héritage) et je me suis empressé de lui répondre, elle m’a aussi demandé d’éclaircir un point de ma présentation (le seul et unique que je n’avais pas clairement explicité). Pour ce qui est des questions informatique, on m’a demandé ce que représentait le X dans mon héritage sur le MCD (une exclusivité), par la suite la prof d’informatique m’a fait remarquer que j’avais une erreur de contrainte sur mon MCD (subtilement, car elle me l’a fait découvrir, je l’ai reconnu tout seul), en fait j’aurais dû mettre une contrainte type XT (exclusivité/totalité). Et puis il y a eu des questions sur le modèle client serveur de l’application alors j’ai commenté le schéma d’une diapo. Une chose encore, j’ai utilisé le dossier de soutenance comme support pour mes explications, par exemple je disais “comme vous pouvez le voir sur la page XY du dossier…”. Il n’y a pas grand chose d’autre à dire sur cet oral qui n’a pas été si dur que ça, enfin je pense (j’utilise beaucoup le verbe penser dans ce billet car je ne suis pas sur de moi).

Les PTIs


Nous y voilà enfin :) je pensais franchement faire plus court pour le haut mais que voulez vous, il faut bien introduire les choses et puis ça fait du bien de dire ce qu’on a sur le cœur avec un peu (pas beaucoup certes..) de recule. Dans un premier temps j’introduirais très rapidement la “notion” de PTIs puis je vais vous présenter les applications que j’ai réalisés, enfin vous aurez le droit à mon feedback, puis une conclusion.
Les PTIs qu’est ce que c’est ? comment ça marche ?
Ce paragraphe est surtout dédié aux lecteurs qui ne savent pas ce que c’est et qui ne sont pas en BTS Informatique de Gestion. L’épreuve des PTIs ou Pratiques des Techniques Informatiques est une épreuve où vous présentez une application parmi 5 ou 7 (il vaut mieux se limiter à 5) devant un jury. Vous présentez cette application de manière “technique” donc pas la peine de prendre toutes les dispositions du monde pour que tout les termes que vous employez soient sans ambiguïtés, non les deux enseignants informatique savent (en théorie car ils ne connaissent peut être pas le langage de programmation que vous utilisez) de quoi vous parlez car : un service web c’est un service web, une classe c’est une classe, une procédure…. Là je parle en tant que développeur, mais les PTIs réseaux existent bien évidement pour les étudiants passant un BTS IG ARLE (Administrateur Réseaux Locaux d’entreprises) mais je ne peux pas vous en parler car : je suis “dev” moi ;) et C# c’était mon idée. Les applications présentés doivent au moins couvrir toutes les compétences de la spécialité, cela ne veut pas dire qu’une application doit tout couvrir mais que l’ensemble des applications couvrent les compétences.
Les compétences en développeur d’applications
C31 Gérer un projet de développement logiciel
C32 Développer avec un langage procédural
C33 Maquetter et développer avec un langage événementiel
C34 Développer avec un langage orienté objet
C35 Développer autour d'une base de donnée relationnelle
C36 Développement Client/Serveur
C37 Mettre au point et maintenir une application
C38 Développement multimédia
C39 Maîtriser le poste de développement et l'environnement

Je ne débâterais pas sur ce tableau car il parle de lui même. Enfin je dirais simplement que les compétences C32, C37, C39 sont quand même hyper faciles à caser, personnellement je les verrais bien en une seule compétence, genre C30 : Gérer, créer et maitriser un cycle de développement logiciel, là ça parlerais ! et puis rajouter une compétence développement embarquée… je m’emporte..
Mes cinq applications
Je vais tenter d’être rapide et efficace, vous trouverez ci-dessous deux captures d’écran de l’application et de l’arbre du projet. Je ne vais pas m’amuser à écrire un mémoire sur ces applications (même si j’ai un sacré feedback sur XnBreak, mon jeu), par contre je présenterais un peu plus en profondeur celle sur laquelle je suis tombée. En fait je vais spoiler un peux, j’ai eu l’extrême privilège (car j’étais le dernier) de choisir mon application (qu’est ce que j’ai choisis ? et bien c’est plus bas).

1. Infolyc


Cette application a été réalisée durant mon stage de deuxième année au lycée Camille Claudel de Digoin. Elle permet de diffuser des informations sur le lycée à tous les étudiants et enseignants. Celle ci est diffusée grâce à deux télévision LCD (une à côté du bureau de la vie scolaire et l’autre en salle des profs).

infolyc
infolyc_code
La technologie Flash est utilisée dans cette application. L’interface graphique a été réalisée en MXML (à la main je n’aime pas trop les designer en général et encore moins celui de Flex Builder 3) et la partie traitement en Action Script 3. La grosse particularité de cette application est qu’elle communique avec un serveur pour y récupérer les informations et absences à afficher. Pour cela l’utilisation de AMFPHP a été nécessaire permettant de travailler avec Flash et MySQL via des services web écrits en PHP. Le contenu de la base de données est sérialisé sur le réseau au format AMF (lisible par flash) sous la forme d’un simple fichier XML.



2. WebAdmin


C’est une interface web qui permet de piloter l’interface Infolyc, elle a été conçu pour qu’elle soit accessible et que les utilisateurs n’aient pas besoin de chercher longtemps pour trouver ce qu’ils veulent faire. Grâce à cette application j’ai réellement put mettre en pratique mes compétences en développement web et j’en suis assez satisfait.
webadmin

webadmin_code WebAdmin fonctionne sur un serveur intranet type Apache MySQL PHP (Xampp puis Lamp). L’interface graphique est écrite en xHTML 1.0 Strict (valide W3C) avec une feuille de style CSS où je me suis permis d’utiliser quelques fantaisies de CSS 3 comme les coins arrondies, les ombres portés, la semi transparence… bien entendu cela n’est visible qu’avec un navigateur respectant les normes, les utilisateurs d’internet explorer ont une interface agréable mais sans coins arrondies (ce n’est pas très gênant au final). On pourra noter aussi une utilisation de JavaScript pour réaliser du DHTML (Dynamic HTML) qui permet entre autre d’ouvrir et de fermer des blocs (bulles d’aides) ou d’afficher masquer des listes d’enseignants. Concernant la partie programmation serveur j’ai utilisé le langage PHP (avec un peu d’objet en PHP5 pour l’écriture d’un petit service) couplé à MySQL pour le stockage des données. Mon dossier de soutenance portait sur cette interface, il y a énormément de choses à dire dessus, mais je vais passer à la suite.


3. XnBreak


Voici un de mes bébé de l’année : XnBreak ! Je commence d’écrire cette partie et je ne sais pas si je prévois un autre billet pour parler de ça ou pas car il y a énormément de choses à dire. Bon je vais essayer d’être aussi court que les autres présentations (je vous vois sourire, c’est le terme “assez court” ? il faut prendre son temps dans la vie des fois et c’est ce que je fait, j’ai le temps, j’ai fini mes examens). Au début j’avais prévue de présenter un casse brique fait en décembre 2009 avec le Framework Xna et le commencement d’un mini Framework construit sur Xna : Yna (c’est un nom de code hein.. j’entend vos “espèce de mégalo !” d’ici alors que l’article n’est même pas publié), puis une semaine avant les épreuves PTIs je me suis dit que ce casse brique était “merdique” et qu’il n’était pas représentatif des capacités que j’avais désormais sur la plateforme .Net et Xna, alors je l’ai recommencé de A à Z (graphisme compris of course). Cela m’a pris 6 jours uniquement. Une journée de graphisme, 4 jours de code intensifs (du HardCoding comme j’aime dire) et une journée de test & corrections. Six jours pour réaliser un casse brique ça peut paraitre gros mais j’ai cette fois ci ajouté un menu et surtout et je suis content d’écrire ça tout de suite : Le jeu supporte une grande majorité de résolutions, je m’explique. Quand on fait les graphismes du jeu ils ont une taille (la résolution) hors quand on développe rapidement on ne se soucis pas trop de la taille ou alors juste une fois. J’ai introduis la notion d’échelle et j’ai adapté cette échelle dans tous les calculs du jeu (collisions, taille de rendu, surface d’affichage relative, absolue, etc…), ça m’a pris un peu de temps (finalement le produit en crois, la proportionnalité etc.. c’est super utile), donc je peux switcher vers n’importe quelle résolution (et proposer des résolutions adaptées sur Xbox 360 : 480p, 720p, 1080p…) Oui car au passage le Framework Xna permet de développer sur Xbox 360 (il faut un abonnement spécial pour déployer sur la console et proposer ses créations sur le Xbox Live, le mien est arrivé à échéance, j’en reprendrais un bientôt pour l’instant je me contente du PC mais ce n’est que partie remise ;) ). Le prix de l’abonnement est de 49 € pour 3 mois ou 99 € pour 1 ans, il existe aussi une formule pour étudiants via Dreamspark pour découvrir (on peut déployer sur Xbox 360 mais pas vendre), je trouve que c’est bien de la part de Microsoft d’ouvrir sa console, on ne peux pas en dire autant des autres constructeurs tels que Sony et Nintendo où avoir une console Hackée est obligatoire pour se faire ses homebrews (bon il ne sont pas limité au compact Framework certes.. mais Xna permet de faire déjà tellement de choses… regardez donc la finale ImagineCup ou .. bon j’arrête j’ai trop dévié là).
xnbreak
Voilà la première version du casse brique réalisée en décembre. Il n’y avait pas de menu, les graphismes étaient moches, pas d’écrans de transitions. Mes les principes de la POO étaient eux bien là.



XnBreak2
Et voilà la version finale qui n’a plus rien à voir avec l’ancienne version. Le score du joueur prit en charge, comme ses vies et le temps de jeu. On peu mourir, gagner et abandonner. Le jeu a un réel but. c’est un jeu.



XnBreak2-2
Lorsque vous mourrez ou que vous gagnez, vous avez le droit à un écran de transition (le CPU récupère quelques cycles pour d’autres tâches comme ça). Ce qui a prit du temps aussi a été la gestion des états des menus, écrans de transition, jeu. Finalement maintenant je pourrais sans doutes refaire la même chose en deux jours.

XnBreak2-code
Cette fois ci c’est la fenêtre entière de Visual Studio 2008 Pro. Pour résumer, la partie du haut (le premier projet) c’est le casse brique avec tout ce qui est programmation graphique et logique. La partie du bas (deuxième projet, référence au premier) c’est le bas niveau du casse brique (Yna pour ceux qui ont suivis) avec la gestion des Sprites, des propriétés du joueur, de certains calques, etc..
Je n’ai même pas parlé de notion de calques en Xna.. mais ce n’est pas un cour sur Xna (je n’ai pas réussi à faire court encore désolé.. mais avouez ! c'était pas agréable à lire ?) Au fait après relecture rapide je n’ai même pas dit que le jeu avait été réalisé en C#, bon vous avez sans doutes vue que ça fonctionnais sur la plateforme .Net (mais vous auriez put croire que c’est du VB…). Pour info, pourquoi C# ? Car en musique la note après le C (Do) est le D(Ré) et la note entre ces deux notes c’est le C# (Do Dièze), C# c’est donc comme du C mais avec un demi ton au dessus ;) comme pour C++ qui veut dire C = C + 1 mais là je suis sincèrement désolé je me suis encore égaré. Damn !

5. MetroTune


Il est où le 4 ? et bien c’est l’application que j’ai présentée donc je l’a réserve pour la dernière et ultime partie (j’avais écrit chapitre.. ça commence bien). Alors oui mon côté musicien a resurgit dans ces PTIs et il fallait que je fasse une application en rapport avec la musique et plus particulièrement la guitare, en plus ça faisait l’occasion de valider la compétence multimédia quoi qu’un jeu vidéo doit bien la valider ? bon passons. Justement il me fallait un métronome chouette (pas ces M*#des) qu’on trouve sur le net qui ne ressemblent à rien OU (notez l’opérateur OU ce n’est pas un ET c’est un OU, ça  ne veut donc pas dire que TOUT les métronomes sur internet sont laids) qui ont trop de fonctionnalités (sous Linux par exemple il y a de super outils mais qu’est ce qu’ils sont chiants à faire fonctionner, heureusement il y a findus mon métronome est là).

metrotune

Il est claire et dépouillé et pourtant il affiche l’essentiel et n’est pas si laid que ça à regarder. Vous pouvez choisir une fréquence parmi plusieurs pré-sélectionnées ou alors choisir une fréquence personnalisée entre 30 Bpm (Battements par minutes) et 250 Bpm (on m’indique que la limite sur les version “physique” c’est 255 Bpm et bien il n’y a qu’un chiffre à changer sur le QSpinBox). Bon côté code c’est du C++ (je me suis efforcé à respecter les règles de normalisation pour que le code soit portable entre au moins deux compilateurs : VC++ et GCC). Rapidement (raté), l’application utilise le Framework Qt 4.6.2 et est multi-Threads (gros mot ?). Un Thread est chargé de notifier l’interface graphique à chaque fois qu’elle doit jouer un sample, le Thread fait simplement un traitement “mathématique” car il calcul à partir  d’une tempo le temps à attendre avant l’envoi d’une notification à l’interface graphique qui elle,  jouera le son. Il y a aussi un petit feedback sur cette application, cela concerne la partie accordeur. J’ai 6 boutons qui représentent les 6 cordes de la guitare et à un clique sur le bouton on joue la note, cependant l’événement (le signal) clicked() de QPushButton n’ as pas de paramètre donc impossible d’identifier rapidement le bouton. En fait il y a un moyen mais ça ne fonctionne pas en multithreading (le cas de cette application) donc j’ai cherché et trouvé sur la faq de developpez.com qu’il fallait utiliser un mappage des signaux, ce que j’ai fait, et peut de temps après ça fonctionnait et j’étais capable de dire : Oui c’est moi qui est fait ce code et voilà pourquoi ça marche comme ça ! Le contenu du projet ne faisant que 4 classes et un fichier main je ne pense pas qu’il soit nécessaire de les présenter ici avec une capture d’écran. C’est effectivement l’activité qui est la plus courte et pourtant j’aurais plus de choses à dire sur celle ci que sur la première activité Infolyc en Flash. Je tiens à dire que j’ai choisis le C++ car c’est un langage que je n’avais pas pratiqué depuis l’année dernière (pour les cours et pour OpenGL) et je voulais voir si j’allais me faire insulté par mon compilateur. Le compilateur m’a fait la vie dur au début, pointeurs obliges (on prend tellement l’habitude d’écrire MonObjet objet = new MonObjet() ), mais je me suis vite remis les choses en tête et j’ai rapidement repris le coup de main (ou de clavier comme vous voulez).

Mon Feedback

Nous y sommes enfin ;) et je suis bien content car je commence de fatiguer, je suis levé depuis 5h45, je n’ai pas beaucoup dormis ces temps ci (comme beaucoup d’ailleurs) et depuis que je suis rentré je rédige ce billet pour n’avoir à dire qu’une fois comment les choses se sont passées (j’ai aussi fait deux trois interventions sur le forum du CNED pour calmer un “frustré” qui insulte mes “Friends of Misery”). J’étais donc convoqué pour 8h30 et je pensais passer le premier comme pour les autres oraux, cependant ça n’a pas été le cas cette fois ci et je me suis retrouvé à passer en dernier. Durant cette phase d’attente j’ai parlé avec les étudiants du lycée en BTS Informatique de Gestion (DA et ARLE) pour collecter quelques informations et là.. et bien c’est le drame madame ! Sur les plaquettes du BTS IG il est mentionné que l’épreuve PTI consiste à présenter une des cinq (ou plus) activités réalisées dans l’année pendant 45 minutes, 20 minutes à l’oral, puis le temps restant on se fait interroger par les deux profs d’informatique, cela peut aller de la question sur le fonctionnement du code à la modification de celui ci (c’est donc de la pratique, et c’est normal vue le nom de l’épreuve). Mais là, à l’académie de Dijon ce n’est pas comme ça que ça marche, enfin pas exactement. Les étudiants présentent toujours cinq activités mais ce sont des activités apparemment assez courtes. Ils les présentent pendant 5 minutes et le temps restant ils codent. Oui mais que codent-ils ? Les profs d’informatique leurs ont demandés d’effacer certaines parties de leurs codes car ils devraient réécrire ces parties lors de l’épreuve. En gros l’épreuve c’est : Je présente mon activité pendant 5 minutes puis je remplis le code que j’ai effacé (donc du code que beaucoup ont tentés d’apprendre par cœur) mais où est l’intérêt ? De mon côté mon cerveau s’enflamme, que faire ? bon et bien je n’ai rien entendu je verrais avec eux sur le tas ! Juste avant de passer j’ai parlé avec un étudiant en ARLE (Réseau), j’étais bien content car c’était ma première vrai discussion de la matinée avec quelqu’un (moi qui regorge de sociabilité en ce moment) ça m’a permis de me calmer un peu, puis est venu un prof d’informatique du lycée qui m’a posé quelques questions (je l’intriguais, mais c’est normal.. I’m the Stranger.. and no one know me…). Enfin est venu le moment, à 11h15 où je suis entré dans la salle. Les examinateurs (deux profs d’informatique je le rappel pour ceux qui se sont assoupis) avaient déjà sondés pour savoir si un étudiant en candidat libre était ou pas présent, donc ils savaient d’où je venais. Je leur ai expliqué le “malentendu” entre ce que j’avais lu sur la plaquette d’information du BTS IG et ce que j’avais entendu dans les couloirs… ils m’ont dit que c’était bon, on ferait avec et ils m’ont mis sur la route. Vue que j’étais le dernier j’ai eu le droit de choisir mon application et là… ma tête c’est arrêtée, que faire ? choisir mon casse brique refait et tout frais ? choisir une activité que je n’aime pas “trop” mais qui envoie un peu ? (je pense à Flash là tout de suite, les gens qui me connaissent rigolent surement très fort en se remémorant mes hurlements de douleur intellectuel quand j’ai bossé sur cette plateforme), j’ai choisis alors de présenter la crème des crème, mon deuxième “bébé” en quelque sorte : Personal Contacts Manager, une application de gestion de contact codée en C# et utilisant une base de données embarquée SQLite.
Personal Contacts Manager
Cette application reprend à elle seule 88,8% (8/9) des compétences à valider à l’examen, en fait il n’y a que la compétence client/serveur qui ne peux pas être validée, mais je peux arranger ça avec un gestionnaire de mise à jour... Elle est conçue en C# et repose sur le Framework .Net 3.5 ou le “petit” nouveau .Net 4 (en réalité sur le 4 mais je l’ai portée sur le 3.5 pour la présentation car mon modeste PC portable a du mal avec les interfaces en WPF et Visual Studio 2010, et bien c’est du full WPF baby) et utilise une base de données embarquée SQLite avec 3 triggers (oui c’est au programme et en plus, mais ne le dites à personne car c’est un secret : ils servent réellement à quelque chose. En fait ils servent à compenser les manques de SQLite en C# comme la gestion des clés étrangères avec contraintes ON DELETE CASCADE, etc…). Voilà pour la partie “technique” maintenant passons au captures d’écran puis enfin et oui j’y viens : au déroulement de mon épreuve de 30 minutes ! (j’ai pas trop spoilé là ? c’était plus fort que moi comme Sega)

pcm

La fenêtre d’invite, l’utilisateur doit se connecter. Si aucun utilisateur n’existe alors il faut en créer un à partir du menu utilisateur.





pcm-xml
Une fois connecté, l’utilisateur a sa liste de contact, il peut exporter celle ci en .txt ou en .xml, quand je suis arrivé à ce passage les deux profs d’informatique se sont approchés de mon écran (comme si Xml était un mot “magique”)

pcm-complet
Vue d’ensemble des contrôles utilisateur, avec les fenêtres d’ajout de contact, d’ajout d’utilisateur, de modification d’utilisateur, d’affichage des contact, d’aide…




pcmcode
Et voilà l’arbre du projet ainsi qu’une partie de code. Une classe abstraite sur le coup, des démonstrations d’héritage et de polymorphisme possibles…




Mais avant de pouvoir présenter l’application j’ai été victime d’un bug que j’ai malencontreusement ajouté hier soir ! Dans le week-end j’ai voulu tester la technologie de déploiement ClickOnce de Microsoft qui se rapproche beaucoup de JavaWebStart pour les connaisseurs (quoi tout le monde est partie ? vous n’êtes pas drôles). Bon un test en partie car pour tester cette technologie entièrement il m’aurait fallu un serveur sous IIS (je dérive…), mais en gros ça me génère un exécutable qui permet d’installer (déployer) mon application sur tous les postes d’un parc (sur votre poste par exemple) à la manière d’un fichier d’installation (application présente dans le menu démarrer, dans panneaux de configuration / suppression de programmes, etc..) et permet aussi de contrôler les mises à jour enfin, un super truc (je suis fan ! nan j’déconne). En plus de ça et c’est là le problème, j’ai voulu signer mon assembly (mon application si vous voulez) avec un certificat (donc protégé avec un mot de passe) et vous savez quoi ? et bien ça marche super bien :D seulement quand on change de PC et qu’on ouvre le projet sur Visual Studio, il faut entrer le mot de passe, et justement je me suis planté de mot de passe ce matin, donc impossible de faire une build de l’application ni de l’exécuter depuis Visual Studio. J’ai alors commencé mon explication au profs d’informatique sur ma découverte du week-end et comment la désactiver (chose que j’ai faite). La présentation c’est alors bien déroulée mais ça a été vite (5 minutes c’est plus que court, pas vrai les filles ?), les profs regardaient (je pense qu’ils ont aimés) et quand je suis arrivé au menu de génération du fichier Xml ils se sont approchés de l’écran (en fait en y réfléchissant bien, qu’est ce qu’une option “exporter vers Xml…” viendrait faire dans une application grand publique ? en fait je pensais ajouter une option “importer depuis Xml…” mais je n’ai pas eu le temps).
Je saute une ligne car ça commençait à me piquer les yeux (il est 19h11 et ça fait quand même 4 heures que je suis sur ce billet, heureusement j’utilise Live Writter, un soft proposé gratuitement par Microsoft qui permet d’écrire et gérer ses blogs depuis Windows et franchement j’adhère totalement !). Un prof m’a alors demandé de choisir une zone de code à effacer, puis de la réécrire. Je ne savais pas trop (le code est assez gros, alors je commençais de me faire des scénarios genre : “La connexion sur la base de données c’est assez cool ? Non dériver une classe abstraite et implémenter ses méthodes c’est mieux ? Wai, il y a de la POO et tout… en plus ça touche directement à la base de données :O). Finalement ce même prof m’a dit “pourquoi ne pas refaire la méthode d’export Xml ?”, chose que je me suis empressé de faire mais… c’est quand même trop simple, un fichier Xml… bon, je parcours mes namespaces à la recherche de Donnees.ContactsExporter.cs je surligne la méthode ExportToXml() et je vire le contenu (elle était toute nue :O). Avant de commencer à coder je leurs demandes si ils veulent que je commente, ils me répondent “oui nous voulons bien” (les autre étudiants m’ont affirmés qu’on était tranquille à coder “seul”, mais je préfère parler, ça fait passer le temps plus vite et puis je sais ce que je fait pas de soucis). Je commence mon explication et mon codage (un des prof codait surtout en VB6 et l’autre pas mal en Java), quand j’ai dit “Bon et bien maintenant je vais parcourir ma collection de Contact de mon objet ContactsManager avec une boucle foreach” ils se sont regardés et l’un a dit “ha foreach cette structure est bizarre”, l’autre continu “Oui il faudra que j’en parle l’année prochaine […] en Java je l’utilise aussi” et là je reprend “Oui par contre c’est un for avec deux point” pour faire l’analogie entre C# et Java. Une autre chose amusante est lorsque j’ai dit “J’utilise maintenant la surcharge de l’opérateur += pour…” l’un dit “ha c’est bien du C# ça, je me rappel en C ils disaient…”' et là une mini discussion démarre entre les deux profs O_o. Pendant que je codais les profs me posait des questions sur mon stage, mes PTIs (l’un me fait “Vous savez que vous n’êtes pas obligé de tout couvrir avec une application vous savez…”, “vous travaillez en dehors ?..”), bref l’ambiance était assez conviviale (c’était presque un apéro, et les deux compères parlaient ensembles). Arrivé à la fin de l’écriture de ma méthode (franchement j’aurais pu aller plus vite mais ils me parlaient, était ce un piège ?) je bloque sur un truc, mais bête : Je ne me rappel plus de la méthode qui permet de convertir une chaine de caractère (un type string) en Xml. j’avais un objet XmlDocument d’instancié, un objet string, il fallait faire xmlDoc.[la bonne méthode et pas la mauvaise] et c’était bon. Alors je leur dit que je ne me rappel plus de cette méthode (en même temps moi je n’avais pas préparé le bout de code que j’avais supprimé ; il me manquait UNE méthode), mais que je vais tenté de la trouver, alors je test celle qui me parait la plus cohérente et manque de chance, l’export ne fonctionne pas : Exception (maintenant que j’y pense j’aurais pu mettre un bloc try {} catch {} ça aurait fait cool et puis ça aurait surtout aidé pour le debug), je vais pour en tester une autre (la panique m’envahit vous pensez) et puis je dit au profs qu’il serait préférable de chercher dans la documentation MSDN car travailler comme ça c’est “sale” et ils m’ont dit que ce n’était pas possible car il n’y avait pas de connexion internet mais que c’était une très bonne remarque, l’un d’eux à même dit “c’est noté”… Bref à 11h45 (soit 30 minutes après mon entrée) l’un me dit : aller dernier essai (c’était le troisième, j’avais démontrer que la structure de mon fichier Xml était clean) et toujours pas la bonne méthode, ils n’avaient pas l’air trop déçus (mais moi je l’étais) et ils m’ont dit c’est bon vous pouvez y aller. Je partis en disant poliment (comme quand j’étais entré) au revoir et bonne journée (quand je suis rentré par contre j’ai dit bonjour mais je pense que vous aviez compris le principe pas vrai ?).
Ce que je ne comprend pas c’est pourquoi est ce que j’ai juste eu à faire une ré-implémentation de méthode ? C’est ultra basic comme truc.. Ca revient à créer une procédure (bon ok non car j’utilisais des objets privé de ma classe mais…). Et puis c’est cours comme code (mais ça utilise l’objet à fond), est ce que cela a suffit ? et bien je n’en sais rien, je suis … dans le doute, malgré tout ça je ne pense pas avoir fait mauvaise impression, j’ai bien parlé et expliqué. Nous verrons les résultats. Mais en gros voilà comment c’est passé mon oral des PTIs. A oui, pourquoi est ce que je n’ai pas choisi le jeu ? car il y avait à dire ! et bien parce que je suis en BTS Informatique de Gestion et dans cette dénomination il y a Gestion, donc un gestionnaire de contact comme le mien était je pense tout à fait adapté (en plus il fait pleins de truc :O). J’aurais été content qu’on me demande de présenter mon jeu, sur lequel j’ai passé tant de temps, mais présenter Pcm (c’est le diminutif de Personal Contacts Manager) été clairement plus stratégique. D’ailleurs ça à marché car quand ils ont regardés le dossier ils ont vue (Objet, Triggers, SQLite, …) et ils ont appréciés je pense puisqu’ils l’ont fait remarquer.

Conclusion et fin de ce billet

J’ai passé ces deux dernières années enfermé chez moi à étudier et à pratiquer ma passion : L’informatique et surtout la programmation. J’ai appris énormément de choses et maintenant je doit faire un break avec tout ça pour me vider un peux la tête. Cela vous est-il déjà arrivé de vous réveiller à 4h00 du matin (voir avant) en trouvant la solution à un problème algorithmique ? ou alors vous réveiller avec un bout de code dans la tête (qui marche en plus :O) ? Ce que je peux dire c’est que j’ai commencé quelque chose et que je l’ai terminé, j’ai travaillé dur et j’espère franchement que ça paiera. On m’a souvent dit quand j’étais plus jeune et que j’étais un cancre qu’il fallait sacrifier des années pour réussir, je ne sais pas si on peut dire “sacrifier” dans mon cas car je me suis quand même bien amusé, mais j’ai aussi passé de très mauvais moment de solitude. En 2004 j’étais dans une formation GRETA pour faire de la maçonnerie, entre temps j’ai passé un BEP électronique en candidat libre, j’ai réintégré à 20 ans une première STI et passé avec succès un Bac STI génie électronique, j’ai fait une année de DUT que j’ai dû stopper pour raisons financières et personnelles. J’ai ensuite fait une année de BTS IRIS par correspondance par le CNED puis une deuxième année (passage directe en deuxième année car j’avais un très bon dossier) en BTS Informatique de Gestion option Développeur d’applications et maintenant à 19h58, je conclus ce billet pour vous dire : J’ai fini et je vais me reposer pour renchainer après sur d’autres “aventures” plus folles les une que les autres.
Je suis accepté en Licence Pro Informatique Embarquée et Mobile, et en Licence Pro Développement Web METINET à Bourg en Bresse, en Alternance. Je doit maintenant trouver une entreprise pour réaliser mon alternance (j’aimerais vraiment trouver quelque chose en développement embarqué/mobile).
Merci à tous, et bonne nuit ;)

Contrat Creative Commons

lundi 8 mars 2010

Passer d'élève à prof

Aujourd'hui j'ai eu la chance de me glisser pendant 2 heures dans la peau d'un enseignant, très franchement je ne suis pas déçu mais je ne m'attendais pas à ça non plus.

Contexte de départ 

Le lycée Camille Claudel de Digoin (71) accueil plusieurs fois par semaine des élèves en difficultés en provenance de différents collèges. Le but est de leur montrer que l'école ne se limite pas aux mathématiques, français et anglais, mais qu'elle permet de voir d'autres choses. Le fait de monter d'autre choses à ces jeunes leur permets de comprendre que les matières que l'ont étudies à l'école sont importantes. Dans cette optique on m'a demandé si je serais d'accord pour avoir un petit groupe de collégiens pou leurs faire un cour dans ma spécialité, qui est, qui est ?? l'informatique, et plus particulièrement le développement logiciel. Ce ne fut pas simple car après examen on m'a dit qu'en fait ce ne serait pas possible car je n'étais pas licencié et donc qu'on ne pourrait pas me payer. Je me suis alors proposé pour le faire bénévolement car d'une part cela me permet de voir ce que c'est que de transmettre sa passion à des élèves et d'autres part, cela me permet de voir comment réagissent les élèves au cour que je suis susceptible de réaliser pour eux.

Le choix difficile du programme

Après accord et quelques recherches de salles d'informatique libres, je me suis mis en quête du programme parfait pour ces jeunes élèves. La première question que je me suis posée à été : Quoi ? et j'y est naturellement répondu par : Java. Je me suis ensuite demandé : Pourquoi ? et j'ai alors pensé que c'était bien d'utiliser Java car c'est une technologie relativement simple coté base. Mais quelque chose c'est imposée à mon raisonnement, quelque chose qu'il fallait respecter.. Si je veux faire passer ce que j'aime, je ne doit pas dégouter mon publique, or commencer avec un langage de programmation typé orienté objet n'est peut être pas la meilleur solution.. bien qu'en réalité j'imaginais déjà un petit RPG textuel dans une Applet (j'avais préparé le TP sur netbeans).. Je me suis alors tourné vers python car c'est un langage simple (type de variable dynamique, tableau très simples à utiliser, un module Tkinter pour faire des petites fenêtres..). Après un week end "déménagement" et quelques courbatures plus une bonne douche, je me suis dit qu'il serait préférable de commencer par quelque chose de concret rapidement, quelque chose de tellement simple que ça serait accessible à tout le monde.. J'ai alors choisie le HTML.

Déroulement de la séance

Nous avions une séance de 2 heures de 9h00 à 11h00 dans une grande salle pleine d'ordinateur avec un tableau, un rétro-projecteur (relier à un PC) et du chauffage (c'est un point essentiel croyez moi :-) ). Lorsque les 3 élèves sont arrivés (accompagnés d'un éducateur), nous avons commencés. Le début fut assez difficile car les pauvres ne savaient pas du tout ce qui les attendaient. Je leurs ai donc expliqués grossièrement le déroulement de la séance (qui c'est presque passée comme je le voulais). Une fois la glace brisée et les présentations faites, nous attaquâmes les bases du HTML avec un document vide sans balises avec un peu de texte.
Première chose que je note : Les jeunes (2 sur 3) avaient réellement du mal avec le clavier pour trouver certaines touches comme les crochets, la tabulation, le slash, les double quottes (que j'appelais guillemets).
Deuxième chose qui m'a marqué : Aucun ne savaient ce qu'était une extension de fichier ni même un dossier.
J'ai donc dans un premier temps affiché un clavier avec les touches stratégiques au tableau via le retro-projecteur, puis j'ai fait un petit résumer sur les formats de fichiers et pourquoi ils avaient une extension (dire que sous linux les fichiers n'ont généralement pas d'extensions.. mais passons).
J'ai adapté le cour à la vitesse des élèves car le but n'était pas de les brusquer, mais de leur montrer qu'on pouvait être maitre de l'ordinateur et plus un simple utilisateur (être un créateur, un artiste, n'est pas merveilleux ?). Coté HTML nous n'avons pas vue les balises <html>, <head>, <title>, <body> pour simplifier la chose, cependant nous avons largement abordés <#h[1-6]#> (désolé pour l'expression régulière, c'était plus fort que moi ^^'), <p>, <a>, <ul>, <li>, <ol>, <strong>, <ins> et <img>. Il s'est avéré que travailler avec des images les a éveillés d'un coup car c'est graphique, c'est concret et ce n'est pas du texte. Nous nous sommes amusés avec la vielle propriété align pour centrer nos images ou les déplacer sur le coté droit ou gauche (pas de css la première fois).
Les deux heures sont passée relativement vite et je n'ai pas eu le temps de m'ennuyer, car j'étais soit sollicité à droite à gauche pour expliquer qu'il fallait fermer ces balises ou alors j'étais au tableau à expliquer la logique de certaines choses.

Conclusion

Et bien si c'était à refaire je le referais ! on me l'a d'ailleurs proposé. J'ai été agréablement surpris par les élèves qui m'ont demandés à la fin du cour où récupérer notepad++ pour qu'ils puissent essayer de refaire ce qu'ils avaient fait dans la matinée chez eux. L'éducateur qui les accompagnait à beaucoup aimé ce cour lui aussi et attend le prochain. C'est donc un bilan très positif pour une première approche d'enseignement. Il y a une chose que je tiens tout de même à signaler : Les jeunes ne savent pas ce qu'est un fichier jpeg ou comment créer un dossier par contre.. ils savent poster des images sur facebook.. Sacré génération..

Contrat Creative Commons

dimanche 7 mars 2010

Modélisation Merise : La prise de tête des logiciels

Je ne sais pas si vous avez déjà été face au problème que je vais décrire mais je vous propose un début constructif de solution. Je vais vous parler d'un projet qui me trotte dans la tête et qui a comme sujet la méthode de modélisation Merise.

Mise en situation

Vous êtes étudiant en informatique et on vous demande de modéliser un système d'information que ce soit pour un devoir, un exercice.. Vous prenez alors votre feuille et vous lisez jusqu'à l'épuisement le sujet de votre prof qui en plus de ça est un gros sadique dans ses sujets (tout les profs d'analyse que j'ai vue étaient sadiques, je finirais peut être sadique moi aussi qui sait..). Alors vous commencez par dessiner, puis gommer (car vous avez eu la bonne idée de ne pas utiliser un stylo bille, mais plutôt un crayon de papier :-D ), puis de faire des gros changements, et pour finir vous vous apercevez que la feuille n'est plus assez grande (c'est l'enfer !).

L'informatique : Un outils pratique pour économiser des feuilles

Oui, passons sur l'informatique car cela nous permettra d'économiser quelques bloc notes et nous fera aussi gagner du temps (plus besoin d'effacer et de redessiner un traitement au milieu de la feuille car il n'avait pas sa place à droite..). Pour réaliser tout ça il va nous falloir un logiciel de modélisation. Deux solutions s'offrent à nous
  1. Utiliser un logiciel payant
  2. Utiliser un logiciel gratuit
Comme nous n'avons pas les moyen d'acheter PowerAMC ou WinDesign nous regarderont du coté des logiciels gratuit et que nous propose l'offre ? Pour les MCD, MLD et MPD :
  1. Analyse SI (abandonné depuis 2008)
  2. Devaki NextObject (abandonné depuis 2004)
  3. Open ModelSphere
Pour les autres diagrammes : MOT, MCT, Diagramme acteur flux..
  1. Microsoft Viso (raté j'avais dit gratuit)
  2. Dia
  3. Inkscape
  4. The Gimp
  5. Paint..
Comme vous pouvez le constater il a quelques logiciels cependant (et j'insiste) ils ne répondent généralement pas au formalisme Merise/2.

Concernant la modélisation des données, Analyse SI est très pratique pour faire de petites modélisation mais ne gère pas les association réflexives ainsi que les extensions (premier problème). NextObject (dont j'ai réalisé la traduction et le port vers Java 1.6) est plus complet mais ne supporte pas  lui non plus les extensions de Merise/2 (deuxième problème). Open ModelSphere est ma foie assez bien fait mais là encore ... (ou alors les extensions comme les association d'ordre N (2 généralement) sont cachée et le logiciel est complètement in-intuitif).

Coté traitement c'est encore pire ! enfin il faut relativiser ce propos, pour réaliser un diagramme Acteur/Flux ont peut utiliser sans problème un soft comme Gimp ou Paint par contre pour concevoir un MCT ou un MOT c'est une autre paire de manche (dans un MCT les cases de traitement n'ont pas forcement la même taille donc faire des graphiques générique n'est pas une solution).

Qu'est ce qu'on apprend en regardant les logiciels de modélisation de données ? Ils sont tous codés en Java, n'est ce qu'une Coïncidence ? J'y reviendrais.

Est-on le mieux servie que par soie même ?

C'est pour cela que je fait des études dans le développement logiciel donc voilà ce que je propose : Concevoir un logiciel de modélisation Merise/2 avec ses extensions (ça ne servirait strictement à rien sinon) gratuit pour tous. Examinons un début de cahier des charges :

Coté données :
  1. Modèle conceptuel de données : MCD (Héritage, Associations d'ordre 2, Contraintes (exclusivité, partition, etc..)
  2. Modèle logique de données : MLD
  3. Modèle physique de données : MPD
  4. Génération de script SQL (compatible MySQL)
Coté traitement :
  1. Modèle conceptuel de traitements
  2. Modèle opérationnel de traitements
Coté graphique :
  1. Digramme Acteur/Flux
Il serait fort intéressent que le logiciel soit disponible sous Windows, Linux et Mac et bien entendu qu'il soit gratuit. Vers quelle technologie se tourner ?

Coté technologies

Java : C'est une bonne plateforme, j'étudie actuellement certaines choses mais il est claire que coté déploiement ça serait le pied et on pourrait toucher un maximum de personne (en local, sur le web via une applet ou via JavaWebStart). Je suis donc à la recherche d'une (ou plusieurs 1,n) API ou framework permettant de réaliser des dessins de manière relativement simple, souple et portable.

C#/.Net : Au risque d'en étonner plus d'un, je ne pense pas que la plateforme .Net soit un bon choix pour ce type d'application, car même si le développement serait largement facilité par le contenu du framework .Net et de ses outils (Visual Studio), un port vers Linux et Mac ne se ferait qu'avec l'utilisation de Mono et sans doutes GTK#. Les options de déploiements sont intéressantes avec .Net mais Java est encore largement supérieur sur ce point.

Python/PyQT4 : Cela pourrait être une très bonne idée car le langage python est relativement simple et souple et l'utilisation du framework Qt4 permettrais d'avoir un rendu coté fenêtre impeccable. Coté déploiement nous serons obligés de distribuer Python et PyQt4 avec la version windows ce qui à mon sens est lourd (en plus là je part du principe qu'on n'utilise que Python ET Qt4 et rien d'autre..)

C++/Qt4 : Je ferais les mêmes remarques pour le coté Qt par contre pour le coté C++ les exécutables seront compilés pour chaque plateformes et il faudra s'assurer que chaque plateformes est compatible avec le code, la difficulté est bien plus grande.

PHP/technos Web : Cela peut être encore plus intéressent car à l'heure du cloud je vois assez bien sur le net un mini AGL simple d'accès (comme le son les outils en ligne de google). On pourrais aussi l'installer en local sur un serveur apache/php. Dans tous les cas nous n'aurions pas à nous soucier du code, car ça sera au navigateur de faire le boulot de rendu ! (il faudra peut être prendre en compte de vieux navigateurs comme IE7.. mais c'est sans doute un des seuls inconvénients) 

Coté APIs/Framework j'ai déjà parlé de Qt4 mais on peut aussi penser à OpenGL et à DirectX (Une entité qu'est ce que c'est ? au final c'est 6 vertex avec une texture 2D qui contient le texte à afficher).


C'est donc un projet intéressent qui rendrait service à plus d'une personne, que ce soit un étudiant qui n'a pas les moyens de s'acheter un PowerAMC ou une jeune entreprise qui à besoin de modéliser son système d'information de manière efficace. 

N'hésitez pas à réagir !

Contrat Creative Commons

mardi 23 février 2010

Le hack sur Playstation 2



Me voici de retour avec un petit article sur le hack Ps2 et plus particulièrement, sur le hack de la carte mémoire. Grace à ce hack vous pourrez utiliser un disque dur externe en USB (mais pas que !) pour lancer vos backup ou vos homebrews. L'avantage de ce hack est qu'il ne nécessite pas de puce ou autre trucs "extra" pour fonctionner. Comme vous le savez nous sommes souvent confronté à deux gros problèmes sur consoles : 
  1. Le lecteur CD/DVD qui lâche (lentille, moteur, etc...)
  2. Le jeu sur CD ou DVD est trop rayé et il ne passe plus
Que faire dans ce cas là ? Ma foi, avec une Ps2 standard pas grand choses, avec une Ps2 Pucée et ayant un disque dur on peut allez plus loin et copier ses jeux dessus, mais avec une Ps2 sans disque dur on ne fait plus rien..



Edit du 07/08/2010 : Je vous conseil aussi de consulter mon autre article qui explique ce que vous pouvez et devez faire avec votre carte mémoire hackée.
Edit du 8 Aout 2011 : Je ne propose plus mes services de hack de carte mémoire pour l'instant, si vous avez besoin d'une carte mémoire hackée vous pouvez demander à un membre de metagame dans le forum PS2, sur le sujet ouvert à cet effet. Rassurez vous quand je le pourrais je reprendrais du service :)
Edit du 14/08/2010 : Une mise à jour de cet article à été faite et je vous recommande chaudement d'aller la lire après avoir lu cet article.


Un hack "propre" : son nom est FreeMC Boot 


J'utilise "propre" car ce hack est amovible :-D en effet, lorsque la carte mémoire est branchée sur la console vous avez accès à de nouvelles possibilités, vous pouvez par exemple lancer des fichiers elf (les exécutables pour Ps2), mais lorsque vous retirez la carte mémoire et bien la console est exactement comme avant avec son navigateur d'origine. Dingue non ? En résumé :
  • Pas de puce
  • Pas de swap magic
  • Pas de Memor32 ou autres 
De plus suivant l'installation que vous ferez sur la carte mémoire vous pourrez utiliser cette dernière sur une autre console (n'importe laquelle, sauf les dernière Ps2 Slim avec alimentation intégrés). Maintenant le plus beau c'est de voir ce qu'on peut faire avec ce hack mais avant ça, quelques liens pour que vous puissiez hacker votre carte mémoire.


Vous trouverez toutes les informations de ce hack sur des sites tels que psx-scene, metagames ou gx-mod. Le site psx-scene regorge de projets pour Psx, Ps2, Psp et Ps3 je vous les recommandes vivement.






Hacker sa carte mémoire : pré-requis et liens


Edit du 8 Aout 2011 : Une nouvelle version du hack est sortie cette année, il peut maintenant être installé par n'importe qui avec un PC et un adaptateur de carte mémoire PS3. N'ayant pas encore fait la manip je ne peux pas vous en dire plus... mais un article arrivera surement un jour :)


Pour mettre en place ce hack il vous faut :
  1. Une console Plastation 2 Fat ou Slim (non V16)
  2. Une carte mémoire de 8 Mb ou plus vide
  3. Le CD/DVD ou le fichier elf de uLaunchElf
  4. Un moyen de lancer un exécutable elf (donc uLanchElf)
  5. Une clé USB formatée en Fat32 avec l'installation de FreeMC Boot disponible sur metagames
  6. Environ 5 minutes, le temps de faire l'installation ;-)
Vous l'avez remarqué : Il faut au départ avoir une console qui lance les fichiers exécutables elf, donc une console avec une puce, un swap magic, etc... Sachez qu'il existe des moyens "gratuits" pour lancer un fichier elf (je parle de la faille Ps1, un autre hack sur Ps2), donc si vous n'avez pas à disposition une console hackée et que vous n'arrivez pas à utiliser la faille Ps1 vous devez sous traiter.


Une fois que vous avez tout ce qu'il faut vous pouvez par exemple suivre ce très bon tutoriel posté par  g.t.o. sur meta-games.



Une petite note : L'archive de FreeMCBoot proposée sur meta-games contient 3 dossiers d'installation pour FreeMCBoot, si vous voulez profiter d'un maximum d'applications je vous recommande de copier le dossier d'installation complet sur votre carte mémoire. Je vous conseil aussi de faire une installation multi-consoles comme ça, si vous allez chez un ami qui a une Ps2 vous n'aurez qu'a amener votre carte mémoire et votre disque dur externe (ou tout autre périphérique USB).

Une fois l'installation fini, votre navigateur ressemblera à la capture plus haut.



Sur cette capture vous pouvez voir uLaunchElf. C'est un explorateur de fichiers qui permet de faire des opérations comme la copie, la suppression, etc.. de fichiers et dossiers sur votre carte mémoire, votre disque dur ou votre périphérique USB. Il permet de lancer des fichiers elf et entre autre, d'installer le hack sur la carte mémoire.

Faire revivre une console avec un lecteur hors services (ou pas) 

Nous allons prendre mon cas, j'ai acheté recement une Ps2 Slim (Version 14) avec lecteur de DVD HS (quelle affaire me direz vous ! et bien je vous répondrais que c'est une des meilleurs affaire que j'ai fait !). J'ai juste eux à mettre ma carte mémoire hackée dans la console, à brancher mon disque dur externe et à lancer mes jeux et mes homebrews. Mais sachez que nous ne sommes pas que limité à un disque dur USB (ou à une clé), on peut aussi utiliser le réseau avec un partage samba pour lancer les jeux ! Cela fonctionne avec OpenPS2 Loader que nous allons voir quelques lignes plus bas. OpenPS2 Loader mériterait que je lui consacre un article entier ! mais nous ne verrons que les bases ici. Sachez qu'avec OpenPS2 Loader vous pouvez :
  1. Lancer des jeux depuis un disque dur externe (formaté en Fat32)
  2. Lancer des jeux depuis une clé USB ou un autre périphérique de stockage (formaté en Fat32)
  3. Lancer des jeux depuis... votre disque dur de PC via le réseau (Partage de samba)
  4. Lancer des jeux depuis votre disque dur interne de Ps2 (pour les Fat)
    Quand je dit "Lancer des jeux depuis...", cela peut aussi être "Lancer un émulateur de Super Nes depuis...", ou un media center (un mini hein, c'est qu'une Ps2).

    Une note : Pour utiliser la fonction réseau sur une Ps2 Fat (donc le gros modèle, jusqu'à la version 11), il faut un adaptateur ethernet (qui est relativement chère), celui ci vous permettra aussi de brancher un disque dur IDE dans votre console (c'est plus rapide qu'en USB).

    OpenPs2 Loader : Un lanceur de jeux Open Source et gratuit pour Ps2

    Ce fantastique programme vous permettra de lancer comme nous l'avons vue des backups, convertis au préalable avec USBUtil sur votre disque dur ou votre clé USB. Je n'ai pas encore testé les fonctions réseau donc j'y reviendrais dans un prochaine article. Sachez que si vous voulez formater une partition en Fat32 vous avez deux possibilités relativement simples :
    1. Passer par GParted sous Linux (c'est vraiment simple)
    2. Utiliser par exemple Fat32 Formater
    Je vous invites à suivre ce tutoriel proposé par Gn0m sur meta-games qui vous expliquera de A à Z comment mettre en place OpenPs2 Loader et l'utiliser.


    Et pour finir, les captures d'écrans habituelles




    Grâce à ScummVM vous pourrez lancer des jeux tel que Day Of The Tentacle. Dans le cas présent j'utilise mon CD original qui est dans le lecteur de la Ps2 (celui de ma Fat puisque celui de la slim ne fonctionne plus). Vous n'avez qu'à télécharger le fichier elf disponible ici et le copier sur votre clé usb, votre carte mémoire (si elle est de grosse capacité) ou votre disque dur.



    Et voici le célèbre Doom, vous le trouverez via le site dc-emu dans la rubrique Ps2. Sachez que sur ce site vous trouverez pas mal d'homebrew que ce soit des jeux, des émulateurs ou des programmes.


    Voila qui termine cet article, en fait j'aurais aimé mettre encore plus de contenu mais le temps me manque, et je me perd facilement dans mes explications. Nous parlerons plus tard du développement sur Playstation 2 avec le ps2sdk associé à son toolchain..

    A bientôt et n'hésitez pas à réagir !


    Contrat Creative Commons