Archive for the ‘Uncategorized’ Category.

Fédérer la communauté Indy

Pendant le GameCampParis (voir ici, , et ) j’ai essayé d’initier une session qui avait pour thème : Fédérer la communauté indy (par provoc’ j’avais aussi appelé ça PlayAll Indy). Le constat c’est qu’il avait pas mal de monde qui était intéressant par savoir comment mener un projet perso ou en petite équipe à son terme, comment en faire la promotion, voir comment le financer. De plus quand on veut  vraiment faire un jeu on ne cherche pas à écrire un nième moteur 3D, éditeur de niveau, … si on le fait c’est peut être que le besoin s’en fait sentir (pour de bonnes ou mauvaises raisons) mais dans ce cas pourquoi ne pas essayer d’en faire profiter les autres voir mutualisé le travail car dans le fond il y a peut de chance qu’un jour on en fasse un produit à part entière.

Je pense qu’il doit exister pas mal de sites répondant plus ou moins à ce genre de besoin (j’ai d’ailleurs découvert pendant le gamecamp l’existence du Games Creators Network) … pourtant on dirait qu’il existe un besoin (peut être que je me trompes). Peut être que le besoin est juste d’avoir ce qui existe ailleurs mais en plus localisé (France), plus spécifique à un domaine …

De plus lors de la session “Fédérer la communauté indy” on est plus ou moins arriver à la conclusion que si on voulait partager du code, de la techno, la solution la plus viable est l’opensource. Il existe déjà des projets opensource lié au jeu vidéo tel que Ogre3D, Bullet, Box2D, Cocos2d iPhone … mais par contre on ne trouve pas beaucoup de moteur de jeu, éditeur de niveau, …. autour de ces projets (encore une fois peut être que je me trompes). De plus la communauté opensource dans ce domaine ne me semble pas aussi regrouper, rassembler que celle qu’on peut trouver sur les technos web. Ici on a des groupes de gens qui semblent bosser sur un projet (c’est déjà pas mal) mais il n’y a pas l’air d’avoir beaucoup de discussion entre les projets (par exemple Blender aurait pu devenir le modeler/level editor pour Ogre3D plutôt que devenir aussi un autre moteur 3D, moteur de jeu).

En dehors de l’opensource il existe aussi des produits tel que Unity qui devienne de plus en plus abordable (financièrement et techniquement). Il existe déjà des sites dédiés à l’échange de scripts, techniques autour de Unity mais ils sont généralement restreint à Unity.

Et puis pour l’instant on ne parle que de techno/code mais il n’y a pas que ça : quid de conseil en ergonomie, interface utilisateur, focus groupe, communication, marketing (virale ou pas), …

Encore une fois l’idée est justement de ne pas réinventer la roue … donc est ce que j’essaie d’expliquer à un sens, un intérêt ou est ce que je vois des besoins/problèmes là où il n’y en a pas parce que je cherches à m’occuper (plutôt que de coder). Malgré tout j’ai l’impression qu’avoir une communauté plus locale, avec des gens identifié pour être intéressant.

Juste pour finir : c’est quoi un développeur indy ? :)

(écrit un peu à la va vite mais je voulais cracher ce que j’avais en tête rapidement … quitte à murir ça dans d’autres postes).

GameCampParis (5 décembre 2009) : feedbacks / retours

La 1ère GameCampParis a donc bien eu lieu hier dans les locaux de notre généreux sponsor PlayAll.

PlayAll logo

Globalement c’était très sympa, intéressant et je suis impatient de participer à la prochaine. Avant d’essayer de faire un (bref) compte rendu des sessions que j’ai réussi à suivre on va peut être parler des quelques points qui m’ont déçu :

  • on avait 2/3 salles pour gérer 4/5 sessions en parallèles donc des fois c’était dur de s’entendre. avec les locaux qu’on avait c’était dur de faire mieux, on nous les prêtaient gratuitement donc on ne va pas trop se plaindre.
  • l’hétérogénéité des participants (qui est un point positif) pouvaient être des fois perturbantes sur l’interprétation du sujet des sessions. En gros les sujets des sessions étaient suffisamment vague pour que chacun voit la chose à ça façon. alors oui c’est bien de mélanger les genres, mais des fois ça pouvait prendre une direction assez différente de ce à quoi je m’attendais … pas de souci dans ce cas … hop on se lève et on va voir ailleurs … mais des fois ça fait bizarre. bon ce n’était pas très génant non plus mais ça me l’a fait une fois (et demie) quand même. en gros j’ai l’impression qu’on avait les oppositions suivantes
    • codeurs (qui ont tendance à trop partir de / ramener à la technique/techno/moteur) VS graphistes/level designers/game designers
    • je veux monter mon petit projet perso, monter ma boîte, être mon compte ….. VS je veux comprendre, améliorer, …. le travail dans une structure importante
  • je schématise un peu et je ne sais pas si j’emploie les bons pour expliquer mon ressenti … en tout que personne n’y voit une attaque contre tel ou tel camp

Avant de commencer, il se peut que ma vision de certaines soit biésée dans une certaine direction du fait que je suis un programmeur et que je réfléchis à des projets peros (donc tout le coté indie, fait à la maison, …).

Les sessions aux quelles j’ai participé :

Indie : faire un jeu tout seul

Ce barcamp était quand même globalement assez orienté développement indépendant / indie, projet perso, … Cette première session ouvrait un peu la voie aux autres. C’était la première session on était donc par encore très chaud … en plus un barcamp c’était un peu nouveau pour nous mais on s’est un peu dérouiller au fur et à mesure.

Dans le thème il y a indie et seul.

  • Faire un projet seul, cela veut dire que l’on maitrise différent corps de métier (code, gfx, gd, son, …) ce qui est quasiment à la porter de personne. Certains parti pris artistique peuvent permettre à un codeur de tout faire : on a cité l’exemple de Love (http://www.quelsolaar.com/love/index.html).
  • Indie ? ça veut dire quoi indie … dans cette session on n’a pas trop disserté sur le sujet mais en fait la définition reste assez floue (projet perso qui devient un truc a visé commercial, projet fait en très petite équipe, projet faire par une équipe indépendante quelques soit ça taille, ….)
  • On peut être seul à l’origine du projet et à gérer/contrôler le projet mais faire appel à d’autres personnes pour certaines partie que l’on ne maitrise pas. Cela parait plus réaliste : à coder aura surement besoin d’au moins un graphiste, …
  • On tombe donc sur la problème d’être plusieurs, surement distant … et qu’il va falloir gérer tout ça ? existe-t-il de plateforme facilitant se travail collaboratif … on a cité trac (http://trac.edgewall.org/) il me semble. Quelqu’un a cité une plateforme communautaire où l’on peut noté les gens, ce qui permet de simplifier le passage de quelqu’un à un autre.
  • A un moment on a un peu dérivé car on est partie sur les projets perso qui ne sont plus vraiment des projets indie de mon point de vue. même si un projet perso (à coté de son travail) peut finir en vraie projet un plein temps (indie ou pas … encore ce problème de définition du mot indie). Un projet perso dans un contexte jeu vidéo peut être une démo technique, un petit jeu (mobile ou pas), un mod (half life 2 et autres) … avec différents buts (carte de visite, purement loisir, basculer en projet principale, …).
  • Quand on fait un projet à un (ou en petite équipe) le risque est partir sur un projet trop ambitieux et de ce noyer. Le plus important est donc de fixé un cadre très précis : thème, objectifs, durée. Cette notion de durée est très importante en fait pour bien cadré le projet. On a un peu parlé des différents concours/expériences/festival qui propose de faire un jeu sur une semaine, un week end … le fait de contraindre la durée force à faire beaucoup de choix/concessions ce qui peut être bénéfique au final.
  • Cette notion de durée très courte nous a amené à parler de projets tel que world of goo.  Ce jeu est issue d’un projet qui s’appelle tower of goo qui a vu le jour via le “projet” Experimental Gameplay (http://experimentalgameplay.com/). De là on a dérivé sur l’aspect promotion de son jeu indie … en fait différent jeu tel que word of goo, crayon physic, … si issue de prototype qui ont été médiatisé. il y avait donc une attente autour du jeu. Certains font aussi du merchandising pour promouvoir leur jeu (Castle Crusher).

Gameplay : bottom up – top down

Un sujet sur le gameplay. Discipline que ne connais pas du tout. J’étais donc plutôt de curieux de voir de quoi on allait parler. (seul bémol … à cause de acoustique du lieu ce n’était pas facile d’entendre tout le monde).

  • déjà c’est quoi cette histoire de bottom up – top down. en gros si j’ai bien compris il y aurait du façon de concevoir un jeu :
  1. soit on part d’un point/contrainte technique : idée de contrôle, parti pris visuel, avancé technologique et on cherche à construire un jeu (univers) autour de cette idée : c’est le bottom up.
  2. soit on part d’une univers et on descend vers la technique, le gameplay : c’est le top down.
  • le bottom up on n’a pas d’univers dès le départ donc on est moins cadré. par contre ça oblige quasiment systématique de faire un proto ce qui n’est pas une mauvaise chose. on pourrait croire qu’il est plus dure de “vendre” un projet construit en bottom up mais ce n’est pas forcément vrai. on peut vendre un projet autour d’une “technique” particulière. genre on va faire un RTS qui gèrera des univers énorme comme on en a jamais vu.
  • le projet top down qui parte d’un univers sont souvent des commandes éditeurs ou liés à une licence. le problème de ce type de projet est qu’on met du temps à définir le gameplay et donc le fun du jeu.

Logiciels libres

globalement les participants a cette session était plutôt pro libre donc il n’y a pas eu de contradicteurs.

  • le premier problème avec les logiciels s’est qu’on se rend compte que les gens comprennent rarement ce que s’est. générale ils retiennent que c’est gratuit (on verra que c’est en partie faux).
  • cette incompréhension amène des sociétés à bannir purement et simplement l’utilisation de soft/librairie open source.
  • on a aussi cité le cas de Nintendo qui récemment à banni l’utilisation de code open source dans les jeux wiiware (si j’ai bien compris). ce qui veut dire qu’on ne peut même pas utiliser la zlib par exemple :( . cette situation semble temporaire en attendant que le légal de chez Nintendo clarifie la situation.
  • les arguments classiques employés contre l’opensource sont
    • c’est gratuit donc pas sérieux (quid de soft comme apache, gcc, firefox, …).
    • il n’y a pas de support.
  • à l’opposé un middleware commercial a un support. le problème c’est que le support n’est pas toujours de qualité. que se passe-t-il en cas de liquidation/rachat de la société (on a parlé de l’expérience renderware de certains).
  • globalement il faudrait éduquer les décideurs aux logiciels libres, leur faire comprendre que ça un coup (maintenance, intégration, suivi de la communauté, intégration de patch, ….) mais qu’on n’a pas à faire à une boite noir. de plus le métier d’un éditeur de jeu n’est pas de faire un moteur 3D, donc utiliser un moteur free (tel que ogre3d), voir y participer n’est pas se tirer une balle dans le pied.
  • au final il faut être pragmatique est utilisé le meilleur outil pour faire le job, commercial ou opensource.
  • il y a aussi la distinction outils/libs à faire. généralement les “gens” sont moins retissant à utiliser des outils opensource pour leur prod (cvs/svn, ….). malgré tout on a eu un témoignage d’un switch cvs -> perforce pour cause de crash cvs qui a entrainer le perte de données (car il n’y avait pas de backup sérieux). pas évident que perforce aurait récupéré leurs données en cas de crash sans backup correct.

- logiciel libre : maitrise du code qu’on a pas avec une boite noir tel qu’un middleware
- mais ça a un coup quand même (le libre) …ne pas le cacher

Prototypage

pas trop suivi …. on est partie sur plus de proto avant une grosse prod … pas mal d’expérience de l’équipe de Darkworks. je m’attendais plus à du proto pour petit projet (même si en fait il n’y a pas trop de différence).

travailler chez soi – projet perso

trop de monde dure à suivre … globalement c’est super dur de se motiver. le travail en équipe peut aider. définir des cycles court. aller le plus vite possible à quelque chose de visible (ça rejoins à un peu ce qu’on disait le matin). certains remarque que pour y arriver il faudrait mettre en place des méthodes de gestion de projets aussi rigoureuse qu’au boulot alors que des fois on voudrait faire ça à la cool (moi j’aurais tendance à dire qu’il faudrait des fois être encore plus rigoureux qu’au boulot car on a encore moi de temps).

fédérer partage de techno et autres (indie ?)

  • session que j’ai initié … naïvement (et/ou par provocation) je voulais appeler ça “playall indie”. en gros l’idée était de dire qu’au final si on veut faire un jeu le moteur 3D, réseau, son, …. n’est qu’un outil donc autant ne pas perde de temps dessus. pareil pour les éditeurs de niveau, ressources, exporteurs, …. et autant se concentrer sur l’histoire, le gameplay, le visuel, …
  • donc est ce qu’il ne serait possible de mettre des “ressources” en commun. on a surtout parlé ressources techniques (code) mais on pourrait très bien étendre ça à d’autres sujets (focus groupes, markcom, …).
  • le premier constat est que si il y a partage de ressources il “faut” se mettre d’accord sur les règles du jeu. c’est à dire avec qui on partage, comment, les conditions, … le risque est qu’au final les différents participants se tire dans les pattes à coup de “moi j’en fais plus que toi, mon truc est mieux, ….”.
  • la solution la plus simple semblait de se dire qu’il fallait que tout soit opensource. n’importe qui participe, n’importe qui en profite.
  • on a donc besoin de créer/gérer une communauté : on a pris l’exemple de boost. l’intégration de modification, évolution est valider par un comité qui intègre dans la “branche” officielle. ce qui nous a amené à un peu parler de git (qui avait été le sujet d’une autre session du matin). git (et les outils de gestion de code décentralisé) semble intéressant pour gérer ce genre de projet.
  • on n’a pas conclu sur un truc clair mais (conclusion perso) il me semble intéressant de creuser l’idée de fédérer une communauté opensource pour le monde du jeu. il existe déjà des projets “sérieux” (ogre3d, bullet, box2d, cocos2d, …) ça manque peut être un peu d’outils et de personne s’investissant (plus facile à dire qu’à faire)
  • petit point important qu’on a abordé au début en fait : ça veut dire quoi indie. ou s’arrête la limite ? l’utilisation de l’opensource aurait aussi cet avantage : on ne met pas de barrière.

GameCampParis : 5 décembre 2009

Pour essayer de faire genre ce blog n’est pas mort un petit post (pas en avance).

A l’initiative de Mustapha Bismi et Stéphane Becker le premier “French Video Game Bar Camp” qui se passera à Paris … ou plus simple le GameCampParis. Pour vous inscrire c’est ici (mais il ne reste plus beaucoup de place car on risque d’être limité à 50) : http://www.gamecamp-paris.org/.

PlayAll logo

  • Ça sera passera le Samedi 5 Décembre dans les locaux de PlayAll.
  • De quoi on va parler ? On ne le sait pas trop à l’avance car c’est un barcamp. Pour simplifier un barcamp c’est une espèce de non conférence où tout le monde participe. Donc les sujets de discussions se décident en fonction des participants. Mais quelques discussions on permis de dégager des sujets (trop) de discussions pontentiels :
    • Rester dans la technique après 35ans sans qu’on nous jette des pierres.
    • Comment devenir développeur indépendant
    • Comment ne pas tout le temps réinventer la roue : utiliser à max ce qui existe déjà sur le marché …. libre/opensource car c’est moins “cher” ?
    • Création d’un playall indé ? :)
    • Service / création : la création c’est sympa mais ça paye pas tout de suite …. donc je veux faire du service (lequel) pour vivre et manger (bon c’est pas si technique) ça
    • Open source en terme d’outils, ce qui a été testé grandeur nature
    • Comment vendre son savoir faire qui peut se décliner en 2 parties l’une de vente vis à vis des professionels et l’autre vis à vis du public.
    • Comment s’entraider entre équipes/studios/indépendants ? Partage de savoir faire ? (rejoint l’idée du Play All).
    • Comment promouvoir ses produits quand on est independant ? (valable pour tout le monde remarque).
    • L’auto édition étant en développement, que va t il se passer de nos pauvres éditeurs ? vont il devenir des producteurs ?
    • Quels sont les tendances à venir, comment se positionner pour avoir une chance de se démarquer ? Les machines “à tout faire” (IPhone) ont elle vraiment une chance de détrôner les consoles portables ?
    • Comment être efficace quand on est tout petit ? (inspiré de l’article “9 paths to greatness for Indies” publié sur Gamasutra).
    • La sous-traitance dans le jeu-vidéo?
    • Le type de société le plus souvent utilisé dans le secteur mais aussi par rapport à d’autres critères? Par exemple est-il bien vu qu’une développeur soit une société Offshore à l’étrangé et travaillant en France mais ne vendant ses produits que par le biais de plateforme comme Steam, l’App Store, … (Donc légal bien-entendu)
    • L’importance des DLC payants dans la santé financière de sa société?
    • Comment protégé une idée, une marque, une licence, …?
    • Comment bien lutter contre le piratage?
    • La bonne stratégie à adopter par rapport à l’évolution des technologies Hardware et Software?
    • L’industrie et les pays en voie de développement comme la Chine? Quel serait les risques que l’industrie du jeu-vidéo se délocalise dans un futur proche?
    • On pourrait aussi faire un topo sur les plateformes existantes et les solutions techniques (middleware,sdk,libs) qui leur sont associées (pc/mac, web (flash, facebook, …), console salon/portable, téléphone/mid, ….)
    • “la french touch”, grosse intox ou réalité? j’en ai marre d’entendre ce mot…mais si ça existe vraiment ce serait intéressant de la définir et de la promouvoir pour attirer de l’investissement en france (ou faciliter l’expatriation en rendant notre savoir faire plus attractif)
    • Le télétravail (cf article récent sur gamasutra): une solution pour encourager l’embauche? parler des outils qui fonctionnent et des comportements nécessaires pour que l’expérience soit positive.
    • Un “steam-like” frenchie pour jeux indés?
    • La presse peut-elle remplacer les “tests” censés être objectifs par des “critiques” subjectives ?
    • Le statut juridique idéal des salariés du Jeux Vidéo
    • To crunch or not to crunch: retour sur expérience, ce qui marche et ce qui ne marche pas.
    • Formation et auto-formation: Comment on se forme, quels dispositifs à -t-on a disposition, comment valoriser l’effort d’auto formation.
    • Etre Agile: Depuis quelques années, agile est devenu très à la mode. Comment est ce que ça marche (ou pas) pour vous.
    • The X: Comment définir l’expérience de jeu du produit et s’assurer que tout le monde est sur la même page.
    • The Elevator Pitch: Souvenirs, anectodes et conseils pour bien pitcher ses projets.
    • Project bootstraping: Démarer un nouveau projet, quel taille d’équipe, partager vos conseils.
    • Pet Project, ou encore “le projet de la maison”: Quel statut à le projet qui est entreprie par l’employé dans son temps libre: status juridique, valorisation de l’autoformation, mythes et réalités
    • Le status autoentrepreneur: si il y en a dans la salle, ça serait sympa d’avoir un retour sur l’expérience acquise via ce statut
    • Le développeur social: Blog, twitter, LinkedIn… Quel est la valeur de ces réseaux et de la parole de l’employée dans sa vie privée, le tout dans une perspective 2.0 ^_^
    • Expat and back: Partir à l’étranger (et en revenir!), tips et retour sur expérience
    • Execution vs Innovation: Ce qui relève d’une logique d’innovation, et ce qui relève de la qualité de l’exécution, bref, ce qui fait la différence
    • Certification des jeunes sociétés : moi aussi je veux bosser pour Sony/Nintendo etc. et j’aimerais bien savoir comment ça se passe (inscription, coût du support…)
    • Comment promouvoir ses produits quand on est indépendant ?
    • Les outils à la unity vous en pensez quoi ? expérience .. retour …
    • Que pensez vous d’un projet “communautaire” visant à la création de cette chose qui n’existerait pas ? rejoint un point le sujet playall indy cité plus haut il me semble
  • si je suis pas trop flemmard j’essaierai de faire un compte rendu des discussions que j’arriverais à suivre.

expérience musicale de présence en ligne

Je suis le blog d’Archiduchesse de Patrice Cassard et ça fait 2 mois qu’il s’amuse à créer un liste spotify collaborative et je trouves assez marrant alors j’ai fait le même chose.

Pour essayer de découvrir de nouveau truc.

Pour voir si mes potes n’ont pas des gouts de chiotes.

Pour voir si via Facebook/Twitter et ce blog naissant je touches plus que 2 potes de facs et 1 collègues :) .

Donc la liste est là : RXRA – Liste Communautaire 1.

Mettez dans les commentaires ce que vous avez mis car sur spotify on ne sait pas qui fait quoi c’est bête.

Pas besoin d’invitation pour spotify, il suffit d’aller là : https://www.spotify.com/fr/get-started/

1-2-3 versus 1-3-2

Eric Viennot a publier récemment un interview (en deux parties : partie 1 et partie 2) de messieurs Éric Chahi (Another World) et Jordan Mechner (Prince Of Persia, l’original). C’est un peu l’interview des vétérans (ou des légendes). Interview qui peut être intéressant car on se demande bien ce qu’ils deviennent et ce qu’ils pensent de l’industrie du jeu vidéo. Personnellement j’ai été un peu déçu car j’ai eu l’impression de ne pas apprendre grand chose.

Malgré tout une partie à retenue mon attention car je me suis senti concerné/visé. Dans la deuxième partie de l’interview, Jordan Mechner explique quelque chose qui peut paraitre tout bête mais qui n’est pas si évident à mettre en œuvre (en tout cas pour moi). Appelons ça la théorie du 1-3-2.

Un projet est divisé en 3 grandes étapes

  1. l’idée : la partie la plus importante car c’est le début de tout projet.
  2. les problèmes que l’on rencontre pour mettre en œuvre (réaliser) cette idée : les difficultés techniques et financières, le cible visé n’est pas la bonne ou ne comprend pas le projet/produit, …
  3. la réalisation/finalisation du projet.

En général les gens on tendance à passer l’étape dans l’ordre, c’est à dire 1 puis 2 puis 3.

  • 1 – On a l’idée.
  • 2 – On commence à envisager tout les problèmes qu’on peut rencontrer. On envisage les solutions. On trouve d’autres problèmes … Et on finit par abandonner le projet
  • 3 – On réalise finalise le projet. Mais comme il y a des chances qu’on ai déjà arrêter en 2, l’étape 3 existe rarement en fait.

L’idée est donc de faire ça dans le sens 1-3-2. C’est à dire :

  • 1 – On a l’idée … ça commence toujours par là.
  • 3 – On donne réalité à l’idée le plus rapidement possible en essayant d’aller le plus loin possible. Ça ne veut pas dire quoi doit déjà finir complètement le projet mais qu’on doit avoir le plus possible de bouts représentant cette idée. Pour un logiciel je dirais qu’on doit avoir le plus de fonctionnalités même si elle sont partielles. L’idée étant de faire une réalisation partielle avant de commencer à chercher les problèmes et à les résoudre.
  • 2 – On résout les problèmes pour finir de réaliser l’idée. Peut être qu’on devra remettre en cause beaucoup de choses faites à l’étape 3 mais on aura pu tester l’idée en conditions réelles.

Dit comme ça parait bête voir évident. Mais j’ai l’impression que c’est plus facile à dire qu’a faire. En tout cas moi personnellement j’ai du mal même si ça fait longtemps que cette façon de faire me semble évidente. Étant un développeur j’ai une approche technique de mes idées/problèmes :

  • comment je vais faire pour que ça fonctionne
  • prise de tête sur les outils pour le réaliser
  • qui finisse des fois par m’amener à vouloir réaliser les outils qui vont me permettre de réaliser mon idée
  • je commence à envisager des problèmes qui arriveront que si le projet passe suffisamment d’étapes (ne comptez pas sur moi pour penser faire un truc genre flickr ou youtube car je serais déjà entrain de me demander comment on fera pour avoir les machines pour gérer 5 millions de connexions par jour alors qu’on aura même pas commencer à coder une ligne … oui il faut y penser mais pas trop quand même sinon on ne démarre jamais).

Alors que si j’allais droit au but : je veux faire ça … je le fais … je peux le tester … l’éprouver … après il sera toujours temps de repenser des choses.

En ce moment sur mon temps libre j’essaie de bosser sur une petite application mobile avec un serveur et de la géolocalisation. Au final je perds du temps a essayer de faire une interface graphique jolie car j’ai l’impression que si elle n’a pas un minimum de gueule je n’arriverais pas moi même à me motiver pour continuer le projet. Le problème c’est qu’avec mon gout pour l’esthétique je ne ferais jamais une GUI jolie et donc je suis entrain de bloquer sur un problème qui pourrait bien sonner la mort des maigres espoir que j’ai de mener ce projet à son terme (ou du moins à la première étape qui de pouvoir tester l’application dans sa version minimale : l’ensemble des fonctionnalités de bases pour répondre à l’idée de départ). Ce problème de look de GUI il sera toujours temps de le résoudre (avec de l’aide) plus tard.

Même si je le pensais déjà le fait d’avoir lu cette interview m’a éclairé sur le fait qu’il fallait que j’aille le plus simplement possible à la fin de cette première version minimale de mon idée avant de me prendre la tête sur tous les détails qui feront que ce projet aura à quelconque intérêt pour les autres.

Ça fait une semaine que j’ai lu cette interview et je n’ai pas avancer … mais au moins je n’ai pas fait sembler d’avancer et je ne me suis pas pris la tête sur des problèmes inutiles (pour le moment).

Premier post d’une longue série d’auto psychanalyse sur ma méthodologie de travail sur mes projets perso ?

Canabalt Best Runs

Bon je suis encore loin de ça : http://capndesign.com/canabalt/

canabl best runs

Configuration d’un accès svn+ssh chez OVH

Même si j’utilise un ordinateur en tant que développeur depuis longtemps, la configuration et l’administration de serveur n’est pas ma spécialité même si j’ai quelques notions (en plus je sais aussi lire les explication des autres).

Depuis quelques temps je me suis pris un abonnement pour un hébergement mutualisé chez OVH. Ce qui me fait choisir OVH, entre autre, est la possibilité d’avoir accès à un serveur svn (Subversion). Bien sur ce serveur svn n’est accessible que via un tunnel ssh car le connexion entre mon ordinateur et mon serveur se feront via Internet, qui n’est pas le meilleur endroit pour laisser trainer son code source, et non un réseau local (fermé par définition).

OVH a bien un tutoriel sur le sujet mais il est suffisamment léger pour que je me sois cassé les dents sur le sujet (moi et quelques personnes que je connais). L’une de ces personnes (mon frère) avait plus de temps que moi pour creuser le sujet et nous a fait un petit email pour résumé la procédure à suivre. Voici ses explications adapté a ma sauce après les avoir mis en œuvre.

Avant de commencer quelques explications :

  • un texte comme ça correspond à une commande exécutée sur le client
  • un texte comme ça correspond à une commande exécutée sur le serveur

De plus ces explications sont issus de tests effectués sous MacOSX. Ces explications sont donc valables pour tous systèmes Unix.

1. première connexion en ssh :

> ssh login_ssh@votredomaine.com

La première fois qu’on se connecte à un site en ssh, on a un message du genre

The authenticity of host 'votredomaine.com (213.186.33.4)' can't be established.
RSA key fingerprint is a1:b4:fa:5a:6d:80:00:2a:7c:fa:ec:27:7a:de:1d:17.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'votredomaine.com,213.186.33.4' (RSA) to the list of known hosts.
login_ssh@votredomaine.com's password:

En tapant “yes” et en entrant le mot de passe que vous avez reçu d’OVH une entrée est ajoutée dans le fichier ~/.ssh/known_hosts. Et normalement la question ne sera plus jamais posée. Vous pouvez effacer ce fichier ou bien l’éditer pour réinitialiser votre connexion à votre serveur ssh.

2. création du repository svn sur le serveur :

> mkdir svn
> svnadmin create svn/test

Si vous tappez la commande suivante :

> ls -al svn/test

Vous vevriez voir le résultat suivant :

drwxr-xr-x+ 7 hognon users   9 2009-10-12 22:37 .
drwxr-xr-x+ 3 hognon users   3 2009-10-12 22:37 ..
drwxr-xr-x+ 2 hognon users   5 2009-10-12 22:37 conf
drwxr-xr-x+ 2 hognon users   2 2009-10-12 22:37 dav
drwxr-sr-x+ 5 hognon users  10 2009-10-12 22:37 db
-r--r--r--+ 1 hognon users   2 2009-10-12 22:37 format
drwxr-xr-x+ 2 hognon users  11 2009-10-12 22:37 hooks
drwxr-xr-x+ 2 hognon users   4 2009-10-12 22:37 locks
-rw-r--r--+ 1 hognon users 229 2009-10-12 22:37 README.txt

Pour l’instant on laisse la configuration du serveur svn telle quelle.

3. création des clés publique/privée sur le client :

Maintenant il va falloir créer 2 clés : une pour la connexion ssh et une pour l’éxécution de svn via ssh. Pour créer les clés on utilise la command ssh-keygen. Lors de la génération d’une clé on vous demande d’entrer une passphrase. Pour mon test je n’en ai pas mis. Je penses qu’on peut en mettre une pour la clé utilisée pour la connexion ssh. Par contre svn via le tunnel ssh ne semble pas supporté d’avoir une passphrase sur la clé car dans ce cas les commandes svn ne passe (ssh doit attendre le passphrase et svn ne transmet pas le demande). Donc pour la 2ème clé il ne faut pas mettre de passphrase.

  • la clé pour la connexion ssh :

> ssh-keygen -t dsa

Au final 2 fichiers sont créés : ~/.ssh/id_dsa et ~/.ssh/id_dsa.pub

  • la clé pour svn :

> ssh-keygen -t dsa -f ./ssh/id_dsa_svn_ovh

Au final 2 fichiers sont créés : ~/.ssh/id_dsa_svn_ovh et ~/.ssh/id_dsa_svn_ovh.pub

4. ajout des clés sur le serveur :

Ces clés doivent être stockées dans le fichier .ssh/authorized_keys2 sur le serveur. Le créer si il n’existe pas.

> mkdir .ssh

> chmod 700 .ssh


On créé et on édite le fichier authorized_keys2 :
> vi .ssh/authorized_keys2

On insère les 2 clés publiques créées précedement. Chaque clé doit tenir sur une seule ligne.
1ère ligne:
mettre le contenu intégral du fichier id_dsa.pub qui se trouve chez le client
2ème ligne:
command=”/usr/bin/svnserve –root=/homedirectory/login_ssh/svn –tunnel –tunnel-user=login_local”,no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty
suivi (sur la même et sur une seule ligne) du contenu intégral du fichier id_dsa_svn_ovh.pubqui se trouve chez le client.

  • /homedirectory/login_ssh/ correspond au chemin ou se trouve votre compte chez ovh. Pour connaitre le votre il suffit de taper pwd sur le serveur.
  • –tunnel-user=login_local : je vous conseils d’utiliser le login avec lequel vous êtes connecté sur votre machine qui sera de client svn.

5. Demander à svn d’utiliser une clé bien spécifique pour ses connexions ssh :

A ce stade, on devrait déjà pouvoir faire une connexion ssh sans demande de password par le serveur ssh. Par contre si lors de la génération de la clé vous avez entrez une pass phrase il faudra la rentrez maintenant. On peut la stocker dans le trousseau de MacOSX, c’est ce que j’ai fait.

ssh login_ssh@votredomaine.com

Quand on fait une connexion ssh, le client va voir s’il y a des clés registrées dans ~/.ssh/ Par défaut il va chercher id_dsa (clé qu’on a créé)

Pour dire à svn d’utiliser l’autre clé il faut register une variable d’environnement. Pour cela il suffit de taper

open ~/.MacOSX/environment.plist
Une fois dans l’interface ajouter une variable SVN_SSH dont la valeur est ssh -i ~/.ssh/id_dsa_svn_ovh (ici il faut peut être plutôt avoir un chemin absolue ssh -i /Users/login/.ssh/id_dsa_svn_ovh)
Pour que la variable soit effectivement affectée il faut fermer et relancer votre shell. On doit pouvoir aussi utiliser un .bash_profile ou autres en fonction de votre shell.

On devrait maintenant taper la commande suivante sur le client :
svn checkout svn+ssh://login_ssh@votredomaine.com/test/

6. Explications :

Dans le cas de la clé id_dsa_svn_ovh, on lui associe une commande sur le serveur. Ça veut en gros dire qu’un client qui se connecte avec cette clé aura un accès svn qui cache le chemin complet du répertoire svn et qui ne permet de rien faire d’autre. C’est pour ca que si on a que cette clé, une simple connexion ssh va foirer. Donc il a fallu créer une autre clé qui est celle utilisée par défaut pour la connexion ssh.
On sait jamais, si à un moment donné il y a un problème qui fait que vous n’arrivez plus du tout à vous connecter sur le serveur en ssh, pas de panique. Il suffit d’effacer tout le contenu du répertoire ~/.ssh/ sur le client. Et dans ce cas, ce sera comme si rien ne s’était passé.

7. Ouvrir l’accès svn pour d’autres utilisateur

Pour que d’autres utilisateurs aient accès à votre serveur svn via ssh chez ovh il suffit d’ajouter une ligne command par utilisateur supplémentaire. Par exemple si je veux ajouter un utilisateur “julien” j’ajouterais  :

command=”/usr/bin/svnserve –root=/homedirectory/login_ssh/svn –tunnel –tunnel-user=julien“,no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty
suivi (sur la même et sur une seule ligne) du contenu intégral de son fichier id_dsa_svn_ovh.pub.

Ensuite pour que julien accède à votre svn il lui suffira de faire comme vous :

svn checkout svn+ssh://login_ssh@votredomaine.com/test/

Avec le même login_ssh que vous. Il ne vous reste plus que correctement paramétrer vos différents dépôts svn pour que les différents utilisateurs n’accède que ce à quoi ils ont le droit. Pour cela il faudra utiliser les différents tunnel-user et leur attribuer des droits d’accès différents si nécessaire.

8. Et sous Windows, on fait comment ?

Mes explications pour la passage sous Windows sont un peu limite. Je suis tombé sur un tutorial pas mal ici :  http://www.vectorns.com/blog/11-tortoisesvn-over-ssh-on-windows-via-putty http://www.vectorns.com/blog/11-tortoisesvn-over-ssh-on-windows-via-putty

Mes explications un peu limite :

Avant de commencer, sous Windows il vous faudra PuTTY et TortoiseSVN. Ici je ne vais expliqué car la partie concernant SVN. Pour ce connecter en SSH avec PuTTY ce n’est pas très compliqué donc je vous laisse chercher ;) .

Comme sous MacOSX/Unix on va générer une couple clef public/privée : on le fait à l’aide de PuTTY Key Generator. Choisir SSH-2 DSA en bas à droite. Puis cliquer sur Generate. Ensuite vous générez une clef public (svn_ovh_pub) et une clef privé (svn_ovh.ppk). Avant de générer les clefs vous pouvez indiquer un mot de passe (passphrase). Je ne l’ai pas fait mais il me semble qu’avec TortoiseSVN et PuTTY il y a possibilité d’en utiliser un (sous Unix/MacOSX ça doit être possible aussi mais on n’a pas creuser le sujet pour l’instant).

Maintenant il faut copier la clef public sur votre serveur dans le fichier .ssh/authorized_keys2 (j’ai utilisé un login différent dans ce fichier mais je suis pas sur que ce soit utile). Puis en double cliquant sur le fichier ppk vous lancez Pagent (PuTTY authentication agent). Je ne sais pas encore si il y a une méthode particulière pour les démarrer automatiquement. Pour l’instant je le fais manuellement.

Pour finir assurer vous que votre client TortoiseSVN est bien configuré pour utiliser TortoisePlink.exe (TortoiseSVN -> Settings -> Network -> SSH Client -> indiquer le chemin vers TortoisePlink.exe qui se trouve dans le répertoire d’installation de TortoiseSVN). Ensuite il ne vous reste plus qu’à faire votre checkout avec l’url suivante :  svn+ssh://login_ssh@votredomaine.com/test/.

On n’est pas à une contradiction prêt

Prévention routière et Jaguar & co

Bon la photo est bien pourrie car sortie tout droit de mon vieux HTC dont je ne me sers jamais pour prendre des photos (donc il ne devait pas être dans le bon mode ou autre) … enfin en attendant que ma voiture passe son contrôle technique et entre deux partie de Canabalt (encore) j’ai pas pu m’empêcher de sourire devant cette vitrine.

UITableViewCell with a multiline UILabel

I am playing with the iPhone UIKit to understand what I can do before starting some little projects. In one of my project idea I want to have a multiline cell in a UITableView. I look around on the web, found different solution. Here is the simplest I found: iProgrammer Tip #3: Multiline text in UITableViewCell (without custom view) by Prakash.

As explained in Prakash post there is two steps to set up a multiline cell.

  1. calculate the height of the cell through heightForRowAtIndexPath from UITableViewDelegate Protocol (I will not copy and past Prakash post).
  2. In is post Prakash create a new UILabel, setup it so it support multiline text and add it to the cell. But it seems we can simply use the existing UILabel from UITableViewCell. So I just avoid of creating a new label.

Here is a project showing how I did it : SampleMultiLineUITableViewCell. To create this project I use the Navigated-based Application XCode template.

Jouer à Canabalt en sortant d’une rame de Metro c’est pas facile!

Premier post … encore un soir ou j’aurais voulu bosser sur un projet perso et j’ai préféré allez au cinéma (500 jours ensemble …. mouaif). En chemin j’ai joué à Canabalt su mon iPod Touch … et j’ai battu mon meilleur score (4296m) tranquillement assis dans une rame de ligne 1 (à Paris).

Tout ça pour dire que j’ai du ma à me motiver / m’organiser pour bosser sur des trucs persos chez moi après le boulot et ou le week end. Procrastination ? Peut être … ça me fait aussi à un article que j’ai lu récément “Comment Google contribue au rétrécissement du savoir“. Je sais pas si je suis d’accord avec l’auteur mais ça m’a un peu fait penser à moi devant mon ordinateur … plein de fenêtres ouvertes, toujours l’impression que je vais manquer une news ou un truc essentielle et au final je ne fais rien de constructif, juste survoler des bouts d’articles tous plus ou moins intéressants (plutôt moins que plus).

Ce blog pourrait être une raison de plus de ne pas bosser sur mes projets … mais je me dis que ça pourrait être aussi le contraire …. on verra bien.

Pour un premier post je trouve qu’il est suffisamment pas clair pour tous vous faire partir …. ça commence bien.

Nation RER A