Overlord 2, protégez votre donjon

Bon, oui, je le sais, les petits jeux flash c’est le mal. Et je ne devrais pas en parler. Parce qu’ils sont pas libre et qu’ils devraient être en HTML 5.

Mais quand même, parfois je me dis que j’ai bien envie de vous faire partager certaines de mes trouvailles. Et c’est le cas pour Overlord 2, un petit tower defense bien sympathique.

Bon, il faut savoir que j’adore les tower defense. Même si je suis assez mauvais (pour overlord 2, impossible pour moi de dépasser les lvl 20/25… ), j’adore ce type de jeux.

Et comme le thème d’overlord 2 me rappelle dungeon keeper, à savoir, vous êtes un maitre démons qui utilisent ses démons pour protéger son château, et ben, nostalgie oblige, j’accroche encore plus.

Donc voilà, ne me remerciez pas, vous allez passer quelques heures à essayer d’endiguer les hordes de paysans à fourches ou chevauchant des cochons pour protéger vos multiples trésors.

Vous voulez gagner un code de lecture Iznéo ? Alors lisez la suite

J’avais déjà fait un petit billet sur Iznéo, plateforme de BD en ligne qui s’est lancé lors du salon du livre et qui regroupe douze éditeurs. J’en avais profité pour faire un billet plus général sur la relative non-innovation des gens qui fournissent des TOD (Truc à la demande).

Cela m’avait valu d’être repéré par la chargée de communauté d’Iznéo et j’avais donc pu tester la dite plateforme. Que je trouve sympa à l’utilisation, même si elle est tout en flash (et le HTML 5 Boudiou . ..) On peut zoomer sur les pages pour les lire avec plus de facilité, le défilement se fait d’une manière agréable et la résolution des pages est suffisamment importante pour quand 1900×1200 sur un 24 pouces, les pages soit très agréables à l’oeil. J’avoue juste ne pas avoir compris l’intérêt du bouton supprimer dans la liste des albums. Ou alors c’est peut-être pour pouvoir supprimer les BD que l’on ne supportent plus de voir dans sa liste d’album tellement on ne les a pas aimé …

Bon de toute façon, la petite tablette de la société à la pomme ne supportant pas le flash et comme je suppute qu’Iznéo va vouloir être présente sur la dite tablette, peut-être que les choses changeront.

J’avais donc pu tester la plateforme, avec un code de lecture de 10 jours pour une BD. Et, il est arrivé ce qui devait arriver (promis je ne l’avais pas fait exprès). Étant parti en vacances, voyage, repas de famille, tout ça, les 10 jours se sont terminés, avant que je termine de lire la BD… Quand je vous le disais que se limiter à une formule de vente en location de 10 jours ce n’était pas bien (comment ça je suis partial ?).

Mais depuis, les choses en changeaient. Iznéo propose une nouvelle formule d’achat, à savoir un vrai achat. Pour X euros, on peut donc acheter la BD, que l’on pourra lire, lire et encore lire, même dans 10 ans. Bon ce n’est pas encore un achat de pdf sans DRM et la BD numérique est limitée (il me semble) à Iznéo,mais c’est quand même bien mieux que juste une offre de location.

Espérons que les gens qui inventent les formules de ventes pour Iznéo continuent à réfléchir et nous proposent de nouvelles manières de lire les BD (genre un abonnement mensuel, qui permet de lire toutes les bd qu’on veut, mais que tant qu’on paie l’abonnement. Le montant de l’abonnement étant divisé entre les auteurs des bd lues)

Enfin, faudrait peut-être que je revienne au sujet principal du billet à savoir, comment gagner un code de lecture de 10 jours ? Déjà cela concerne la BD Les cités obscures : Souvenirs de l’Eternel présent, de Benoît Peeters et François Schuiten. Basée sur le film de Raoul Servais, Taxandria, elle raconte l’histoire de Aimée, unique petit garçon de Taxandria, un monde dévasté, sans vrai vie ni animaux. Un monde où le temps s’est arrêté, où il n’y a plus de machine, plus d’espoir, d’avenir ou d’envie, juste un présent qui recommence, encore et encore.

Tout au long des pages, on suit Aimée dans sa quête de réponse, petit garçon curieux où l’on a pas le droit d’être curieux. Entre ruines de batiments haussmaniens et découverte des ‘machines humaines’ (j’aime beaucoup le téléphone humain de la BD) me faisant beaucoup penser à la folie de Brazil ou à la cité de l’ombre (City of Ember, sortie en 2008, avec Bill Muray), il finira par découvrir le pourquoi du comment et …. Et ben pour savoir la suite faudra lire la BD.

Et pour lire la BD, c’est tout simple, il faut gagner l’un des trois code de lectures à gagner. Et pour les gagner, c’est tout simple aussi. Il suffit de poster un commentaire sur ce billet. Et, dans une semaine, (le dimanche 13 donc), je ferrais un tirage random.org et j’enverrais les codes de lecture aux gagnants, en utilisant l’email qu’ils auront mis dans le formulaire du commentaire. Bien entendu, un seul commentaire sera pris en compte, donc si vous commentez 12 fois, ça n’améliore pas vos chances..

Reeder, enfin une alternative à Greader

Important : ceci n’est pas un billet sponsorisé. 🙂

J’utilise google reader pour lire mes rss, ca me permet de synchroniser d’une manière simple ma lecture de RSS. Que je soit sur mon PC, un PC quelconque ou mon iphone, j’ai toujours tout mes RSS favoris, les lus et mes non lus.

La question de la synchro étant résolu, il me restait la question de comment lire mes RSS. Sur PC, j’ai rapidement abandonné, aucun lecteur RSS ne vaut l’interface web de greader. C’est bien dommage, mais c’est comme ça (bon mes derniers tests avec rssowl datent de quelques mois, faudrait peut-être que je retente).

Sur iphone, j’en ai testé plusieurs, des payants et des gratuits, mais pareils. Aucun n’était mieux que l’interface web de greader. Donc je m’étais finallement résolu à lancer safari à chaque fois que je voulais lire mes RSS.

Enfin ça, c’était avant d’installer (et de payer parce qu’il est payant, 2 euros et des brouettes) Reeder.

Parce que clairement, cette petite iphone app, c’est de la bombinette en barre. Bon déjà, elle est jolie. Mais ça clairement, c’est le moins important. Mais ensuite, elle est super efficace et rapide.

1- Vue de flux, vue de liste de billet et vue de billet détaillé.

Reeder se découpe en trois grande vues :

  • les vue de flux sur lequel seul les noms des flux ou de répertoire de flux sont affichés (ainsi que quelques infos en rapport avec)
  • les vues de liste de billets ou l’on voit les titres des billets avec leurs chapeaux
  • les vues de billet détaillé où l’on peut lire la totalité d’un billet.

On verra en détail, chacune de ces types de vues, mais avant, il faut que je vous présente le mode de filtrage des billets.

2- Mode de filtrage des billets affichables.

Lorsque l’on est sur une page qui affiche des flux (et pas le contenu des flux), on peut choisir un mode de filtrage des billets. Le choix se fait grace aux 3 petites icones de la barre du bas, l’étoile, le rond ou le symbole de liste.
L’étoile correspond aux billets favoris, le rond aux billets non lus, le symbole de liste corresponds  lui à pas de filtre soit tout les billets.

La page d’accueil est bon exemple de cette possibilité de filtrage. Mais on retrouvera ces options de filtrage sur tout les vues flux.

Ce qu’il faut bien comprendre, c’est que ces options de filtrages ne sont accessible que dans les vues flux. Lorsque l’on va basculer sur une vue liste de billet ou billet détaillée, on ne peut plus changer les options de filtrage, mais elles sont toujours actives. Si l’on est dans un mode unread only, on ne verra que les billets lus, ni les mis en favoris ou les billet lus toujours stockés (parce que oui les billets lus restent stockés et on peut configurer combien de temps on peut les garder sur l’iphone).

3- Vue de flux

La vue de flux affiche les flux directement contenus dans le répertoire où l’on se trouve ainsi que les sous répertoire de celui-ci.
Sur la même ligne que le nom du flux ou du répertoire, on trouve un chiffre et une fléche. Le chiffre donne soit le nombre de mis en favoris du flux ou du répertoire, soit le nombre de non lus, suivant le critère de filtrage choisi (si l’on choisit le filtrage Tous, c’est le nombre de non lus qui est affichés). La fléche lorsqu’elle est en relation avec un flux,  permet de passer en vue liste de billet. Si elle est en relation avec un répertoire, elle permet d’aller dans la vue de flux du contenu du répertoire.

4- Vue de liste de billet.

Cette vue, permet de lister tout les titres / chapeau de billet d’un flux. A gauche une icône étoile ou rond permet de renseigner sur l’état favoris / non lus. Lorsque le billet a déjà été lu, la couleur de la police est plus claire. Les filtres mis en place dans la vue de flux, sont bien entendu, actifs.

5- Vue détaillée des billets.

C’est la vue que vous allez utiliser. Celle qui permet de lire un billet. Claire, facile d’utilisation, je la trouve tout simplement géniale. Deux petites icônes en forme de flèches en bas permettent de passer à l’article suivant ou précédent. On peut également changer l’état lu / non lu ou passé le billet en favori. Enfin, un peu envoyer l’article sur plein d’applications tierces que ce soit du twitter, du facebook, du instantpaper, du delicious, ou plein d’autre trucs (et envoyer par mail).

6- Le reste

L’un des trucs qui m’insupportais avec greader c’était les flux avec les articles tronqués. Du coup pour lire le billet complet, j’étais obligé de sortir de greader pour aller sur le site. Là, un browser est intégré dans Reeder, on n’a donc pas l’impression de quitter l’application.

Ensuite, on peut conserver les articles un certains temps, configurable bien entendu. Et on peut configurer des durées différentes pour les nonlus, les lus et les favoris.

Le thème de couleur est très reposant visuellement. Ni trop clair, ni trop foncé, dans les tons de beiges, ça repose les yeux. C’est carrément un plus pour moi (comparé par exemple à NetNewsWire) surtout quand je commence à lire quelques dizaines de billets d’affilés.

7- Conclusion

J’ai cherché longtemps une appli iphone acceptable pour lire mes RSS. Je pense que je l’ai envie trouver. Et comme en plus elle est plutôt jolie et visuellement reposante, je pense que je vais la garder (et sincèrement, elle vaut bien les 2,des brouettes euros qu’elle coute).

Django-samaritan, parce que tout le monde a le droit d’aimer Bruce Willis

Le mois de mai est toujours un mois compliqué. Normalement c’est à cause de tout ces jours fériés qui sont autant d’obstacle au travail et qui nous oblige à être tout le temps en retard en mai. Pourtant, cette année, malgré que deux des jours fériés de mai tombent un samedi et que le dernier (demain) soit un jour travaillé pour moi, la malédiction du mois de mai a encore frappé et je n’ai de temps pour rien… A croire que c’est le mois de mai lui-même qui a pour conséquence que l’on soit en retard. La malédiction sanglante du mois de mai … (tiens on pourrait faire un bon film de série B avec ça). Enfin, tout ça pour expliquer le fait que l’application du mois que j’ai choisi est une toute petite application, que je n’ai en fait pas eu l’occasion d’essayer ‘en vrai’. (et puis bon, je n’allais pas cracher sur la possibilité de faire un jeu de mot coolos en parlant d’un film que j’adore …)

1- Où on le trouve, comment on l’installe, tout ça quoi (et la doc) ?

On le trouve sur la page github qui va bien et c’est tout. Quand à la doc, elle est, elle aussi uniquement sur le github

La doc se découpe d’ailleurs entre :

  • le Readme
  • le Install
  • les commentaires dans le code.

C’est peu vous aller me dire, mais vu que l’app fait, en tout et pour tout, moins de 200 lignes, c’est suffisant.

2- A quoi ca sert ?

A remplacer le model django.contrib.auth.models.User par un des siens, d’une façon propre. Pour aider encore plus, des models spéciaux de M2M, de OnetoOne et de FK sont fournis pour quand on voudra créer des références vers nos nouveaux users.

3- Comment ça marche ?

Il y a deux façons possibles de le faire marcher.

En l’installant puis en l’utilisant. Tout simplement.. On créé son model, on utilise la fonction get_user_model() qui est fournit avec django-samaritain (ou en utilisant directement notre model d’ailleurs). Et on utilise les spécialisations des FK,OtO et M2M.

En utilisant la méthode de Monkey Patching pour injecter à la volée le comportement de django-samaritan dans un projet existant. Cette deuxième méthode est déconseillée pour une utilisation à long terme,dixit l’auteur de l’app lui même.

3- Retour ?

Et oui, je sais, c’est un comble. Mais bon, c’est mes billets, alors je fais ce que je veux. Donc, si l’un de vous a des retours sur l’utilisation de cette app, je suis bien entendu preneur, ne vous gênez surtout pas.

Anki, l’apprentissage par les cartes.

J’ai découvert Anki il y a quelques mois déjà et je voulais absolument en parler ici pour vous le faire découvrir. Mais bon, au final, j’ai trainé et ce n’est qu’aujourd’hui que j’utilise ma pause déjeuner pour écrire ce petit billet.

Anki est un logiciel d’apprentissage sympa qui se passe sur des cartes. Et en plus il est libre et multi-plateforme. On peut même l’utiliser sur des smartphones.

Le principe est super simple. Quand on commence une session, l’écran d’Anki se divise en deux parties. La question sur la partie haute (la carte question) et la réponse sur la partie basse. Au départ seul la question est affichée. Quand on pense avoir trouvé la réponse, on clique. La réponse s’affiche alors et on voit si on a bon ou pas. Pour chaque réponse, anki nous demande alors si la réponse était difficile, facile, très facile à trouver. En fonction de notre réponse, la question reviendra plus ou moins vite. C’est là le mécanisme central d’Anki. La répétition des questions jusqu’à ce que la réponse nous rentre dans la tête. Et plus on indique à Anki que la réponse a été dure à trouver, plus il nous redemande la question.

Les questions que l’on note facile, reviennent elles aussi, pour ne pas qu’on oublie les réponses, mais avec un temps de répétition très long.

Le principe a l’air tellement bateau que l’on pourrait croire que bon, c’est de la connerie. Mais en fait non, ça marche. Enfin, ça marche si c’est fait convenablement, c’est à dire, une session minimum par jour, tout les jours.

Pour finir deux petites vidéos youtube qui expliquent bien le truc :

Ubuntu 10.04

J’ai finalement fait la mise à jour vers ubuntu 10.04. Ce billet, que j’éditerais au fur et à mesure de mes découvertes avec cette nouvelle version d’ubuntu sera mon ‘live test’ ubuntu.

Pour l’instant je reste dans l’expectative. La distro est pas mal, mais il y a plein de petits points ennuyeux.

Déjà, alors que l’assistant de mise à jour m’indiquait 2h pour mettre à jour ma Karmic, j’ai du patienter presque 3h30. Si les barres de progression Ubuntu deviennent aussi viable que celle de windows, où va-t-on ?

Ensuite, le thème que je trouve assez moche cette fois-ci. Et surtout, surtout qui donc a eu l’idée de mettre les boutons de fenêtre (réduire, maximiser,fermer) à gauche et pas à droite ???

Enfin, rien de non modifiable, mais bon …

Concernant les logiciels fournis avec cette dernière version, déjà deux premiers bugs :

  • la version de gwibber embarqué dans Lucid ne gère pas FriendFeed (alors que l’on peut créer son compte et tout, mais non, il veut pas).
  • Chez moi, mais apparemment je ne suis pas le seul, empathy refuse de se connecter à msn. Pour que ca fonctionne, il faut désinstaller telepathy-butterfly, supprimer tout ses comptes msn d’empathy et les récréer. Et là miracle, ça fonctionne.

Quelques petites remarques diverses :

  • Ca fait tout drôle de voir Oracle sur le splashscreen d’openoffice.
  • J’aime bien le truc gnome pour gérer les écrans et le bi-écran
  • thunderbird est enfin en version 3

je n’ai pour l’instant pas encore eu le temps de tester Ubuntu One, j’en parlerais dés que j’aurais fait.

Premier rajout, problème de ventilateur.

Je n’ai eu ce problème qu’après la mise à jour de hier . Les ventilateurs de mon Lenovo W500 étaient ‘bloqués’ à 3000, 3200 tr/min.

Ce qui a donné, deux pointes de températures à 100 degrés, donc deux arrêt de la machine hard et une belle frayeur pour ma part.

Après quelque recherche web sur un autre PC, j’ai trouvé ce lien sympa pour les lenovo qui permet d’installer, entre autre, un truc de contrôle des ventilateurs. Pour les contrôler à la main.

Et je me suis donc rendu compte que quand les ventilos étaient réglés en 100% ou en hw-ctrld, ils ne dépassaient pas les 3200 tr donc. Mais si je les réglais en full, ils montaient à 4800tr/minute, ce qui suffisait à faire en sorte que mon processeur ne dépasse jamais les 60 degrés.

Je ne sais pas si cela provient directement de Ubuntu, ou d’une autre cause, mais bon… Si vous avez un lenovo faites attention (et je suis preneur d’un retour par commentaire, si vous avez eu le même problème).

Osmos

Osmos est un jeu développé par un studio indépendant Hemisphere Games. Ce n’est pas un jeux libre, mais il ne coute que 10 dollars et il fonctionne sous Linux / Mac / Windows. On peut même le tester avec une petite démo sympatoche.

Le principe du jeux est très simple. On contrôle une petite boule, qui ressemble à une bactérie.

On la déplace suivant le principe tout simple de réaction. Notre boule quand on clique éjecte une petite boule d’elle même, ce qui induit un déplacement dans la direction opposée. Un peu comme une fusée quoi.

Donc forcément plus on se déplace plus on ‘maigrit’. Si on rentre en collision avec une boule plus petite que nous, on la mange et on grossit. Si on rentre en collision avec une boule plus grosse que nous, elle nous mange et on meurt.

L’inertie et l’accélération sont bien entendus gérés.

Le but sera donc au final de grossir suffisamment pour pouvoir accomplir une mission, sans se faire manger. Le tout étant accompagné d’une musique minimaliste tout simplement envoutante.

Allez op, je vous met une petite vidéo pour vous allécher. (Sincèrement, récupérer la démo et tester là, vous ne serez pas déçu).

Osmos Trailer from hemisphere games on Vimeo.

Djangocong ,bilan perso d’un gentil organisateur.

Poussé par les nombreux bilans que je vois fleurir sur le hastag #djangocong, je ne peux que participer et faire mon bilan perso de ce week-end de folie, (et comme je suis à la bourre, je le fais en dégustant mon jambon-beurre salé du midi).

Je ferrais un bilan plus ‘du coté de l’organisateur’ parce que des bilans ‘coté public’ il y en a déjà eu plein et des super complets, bien plus que ce que je pourrais faire (comme celui de laurent mais aussi de tous les autres présents, une simple recherche sur le hastag donnera tout les liens).

Pour commencer, les remerciements :

  • à David bien entendu, parce que voilà, y aurait pas eu de djangocong sans david.
  • à Samuel pour la vidéo et les bières belges, toujours aussi bonnes (je ne citerais pas de noms, même sous la torture (je dirais juste qu’il sait super bien manier un aspirateur), mais certains présents sont d’ailleurs tombés amoureux de certaines bières …)
  • à Fred, pour avoir transporter son matos depuis la Belgique et nous avoir permis d’avoir des prises sons pour toutes les confs.
  • à Laurent pour les photos, très réussies,
  • à Johann qui oui a milité pour la création d’une asso, a réalisé de super tee-shirt dans un délai plus que court. (d’ailleurs il en reste quelqu’un à vendre, si vous voulez….)
  • à Matthieu qui s’est occupé de tout plein de petits trucs tout le temps, quand on se demandait bien comment on allait faire, comme par exemple des badges (qui a remarqué que le poney django était en filigramme très clair sur la partie blanche des badges?), mais qui aussi passe l’aspirateur comme personne.
  • À Daks pour avoir bossé sur le petit feuillet programme/info importantes et l’avoir imprimé en nombre.
  • à la chérie de David qui a réalisé la mascotte des Congs
  • à ma chérie qui m’a aidé sur les recherches de lieu (si vous avez eu des hotels où dormir, c’est grâce à elle 🙂 ).
  • à Marseille Innovation, le propriétaire des salles qui m’a fait confiance (bon j’ai du un peu jouer au chat de Shrek) et nous a permis d’avoir un événement gratuit en me prêtant les salles pour le week-end avec pour seule condition de ne rien dégrader et de les rendre aussi propre que ce que je les avais reçu.
  • Aux généreux donateurs
  • À tout les conférenciers pour avoir fait des conférences de qualité, vivantes, et carrément cools.
  • À tout les présents, pour avoir été là, avoir donné la chance à cette première fois, avoir fait des centaines de kilomètre en train, voiture,  avions, vélos.
  • à la météo de dimanche qui nous a permis de manger au soleil.

Pour le reste.

J’ai adoré ces deux jours de conférences. Et j’ai vraiment adoré les organiser. Que ce soit avant ou pendant. Plein de moment de stress (‘mais où va-t-on trouver un resto pour ce soir?’) ou de petits moment fun (comme appeler un resto pour lui dire ‘bon je vous réserve l’intégralité de vos couverts’ ).

Effectivement vouloir être intervenant en étant organisateur, ce fut une gageure qui fut difficile à tenir. Faire des slides entre minuit et deux heures du mat, pendant la nuit de samedi à dimanche (vous pouvez les trouver là ou sur slideshare), c’était rigolo mais fatiguant. Mais d’un autre coté, je suis content d’avoir pu parler un peu, d’un sujet qui me tenait à cœur, même si j’aurais voulu faire mieux, pour le coup.

Donc oui, voir que tout ce passait plutôt bien, que tout le monde était content, heureux d’être venu, fut une vraie joie et autant le dire tout de suite, une vraie motivation pour se dire qu’il faut faire un truc l’année prochaine (oui, je sais david, il faut débrieffer et qu’on en discute, tout ça,…. 🙂 )

Bien entendu il y a des choses à améliorer. Pour les repas, on a dérapé à chaque fois au niveau du planning prévu. Faut il passer sur une pause de 2h pour le repas, prévoir un traiteur ou trouver une troisième solution, il faudra étudier le truc.

Pour les conférences, elles furent effectivement super denses, s’enchainant à toute allure sans trop de pause. Est ce qu’il faut réduire le temps des confs, en faire moins, prévoir plus que deux jours de congs.. là aussi il y a plein de pistes à explorer (l’idée de david de partir sur un format un peu plus barcamp me semble une idée très intéressante) .

Laisser plus de place à des sprint code pourrait être intéressant aussi, à voir comment on mixe les eux. Plein de possibilité donc, pour la prochaine édition, si elle a lieu (ben quoi laissons un peu le suspense planer:) )

Au niveau logistique, plein de petit truc à améliorer pour la prochaine, David en a listé par mal, je rajouterais de prévoir plus de cafetière (au moins deux) pour pouvoir étancher plus facilement la soif des intervenants et ne pas faire confiance aux bus marseillais le dimanche matin :). Je suis sur qu’en se posant et en réfléchissant on trouvera d’autre petit trucs pour améliorer la logistique.

Créer l’asso, on s’y est un peu engagé au tout début des deux jours, et ça sera un pré-requis obligatoire, pour la deuxième édition, je pense.

Donc voilà, pour moi, c’est deux jours furent vraiment un plaisir de chaque instant.

Le dimanche soir, lorsque je me suis retrouvé seul dans le bâtiment, à vérifier une dernière fois que tout était niquel, en ordre, bien rangé, juste avant de charger le carton de cadavre de bière pour aller le jeter au recyclage, il faut bien avouer que j’ai eu un petit pincement au coeur en me disant ‘c’est déjà fini’.

Et puis je me suis dit ‘vivement l’année prochaine pour la deuxième édition’.

Alors voilà.

A l’année prochaine, pour de nouvelles aventures, qu’elles qu’en soient leur formes.

Concours H2R et idée géniale ou presque

Comme je l’ai annoncé sur le blog de h2r, j’ai lancé un concours pour récompenser, quelque peu, les gens qui auront la gentillesse d’écrire un billet pour parler d’histoiresderolistes.com. Le principe étant de tirer au sort dans un mois, un des auteurs de billets en question et de lui offrir un abonnement à jeux de rôle magazine, le magazine qui est bien et qui parle de jeux de rôle et une surprise offerte par moi même (et je tiens à noter, dans ce billet aussi, que l’abonnement est gracieusement offert par la structure qui édite jdr mag, voilà c’était important de le dire).

Pourquoi est ce que je parle de ça ici ? Et pourquoi le titre du billet c’est concours et idées ? Parce que hier, pendant mon trajet de retour de vacances, 850 km, ça donne du temps pour réfléchir, j’ai eu une idée géniale.

Et oui, ça m’arrive parfois.

Donc, mon idée. J’ai lancé h2r, tout le monde (enfin tout ceux qui lisent ma prose ici) le sait, ou presque maintenant.

Maintenant, c’est pour moi une grande nouveauté de lancer un site comme ça, d’essayer de le faire démarrer, de trouver des utilisateurs, etc etc. Je tâtonne, je bidouille, je fais des choses aux hasards.

J’avais déjà dit, dans le billet parlant de h2rolistes, que je ferrais des retours sur tout ce qui était retour des utilisateurs en ce qui concerne le système des badges et les autres idées que je mettrais en place, dés que j’aurais le temps. Sauf que ça, c’est de la ‘technique’. Et donc je me suis dit que faire la même chose pour tout le reste, à savoir mes tentatives pour faire vivre le site, proposer des choses autour, etc… Ce serait intelligent.

Et puis en plus, peut-être du coup vous aurez des retours sur mes initiatives (du style ‘ton concour il put, c’est merdique) ou même des idées que vous pourriez avoir comme truc à faire.

Donc voilà, cette fois-ci, se sera un concours pour remercier les gens qui écriront un billet (et donc oui, c’est vrai, inciter les gens à écrire un billet).

Bilan des vacances

Je m’étais promis, au début de mes vacances (donc le premier avril au matin, premier jour officiel, passé sur la route, ben oui l’alsace c’est loin de Marseille), de faire un petit bilan une fois ces trop courtes (c’est toujours trop court) vacances.

Pour voir, si pour une fois, je tenais ma todo list.

Les vacances touchant à leur fin, il reste exactement 1 heure et 58 minutes à cet instant, c’est donc le moment de faire un petit bilan. Et comme je me sens l’humeur partageuse, j’en fait un billet.

Alors déjà, première remarque, être malade, c’est une connerie à ne pas faire. Parce que ça te nique ton énergie et du coup voilà quoi. Et puis mince, y a le boulot pour être malade, à quoi ça sert sinon les arrêts maladie hein ??)

Bon sinon, je me suis étonné. J’avais comme objectif de lancer h2rolistes et ça, je l’ai fait.
De poster pas mal de billet sur ce blog et sur celui dédié aux jdr et je l’ai fait aussi (7 billets (et pas des petits, y a même le billet django app du mois) ici, sans compter celui que je suis en train de taper et 3 sur celui dédié aux jdr).

Je voulais tester quelques trucs nouveaux et op, j’ai testé Titanium, ce qui a même donné lieu à un billet ici(que j’espère intéressant).

Et surtout, surtout, j’avais décidé de ne pas, pour une fois, cramer mes vacances en bossant non stop pour le boulot. Je m’étais fixé comme objectif maximal 3h de boulot par jour. Et pour la première fois depuis… peut-être depuis 5 ans en fait et le début de l’aventure entreprenariale, j’ai réussi à tenir le cap. Le prochain objectif, c’est d’arriver à tenir le cap sans culpabiliser parce que je ne bosse pas. (rigolo ça d’ailleurs les vacances précédentes, c’était parce que je me rendais bien compte en fin de vacances que j’avais cramé mes vacances, cette fois-si c’est parce que j’ai presque réussit à faire que mes vacances soient de vraies vacances).

Bon par contre, je voulais absolument avancé sur la conf que je donne aux djangocong.. Autant dire que pour l’instant, je sais juste que je vais commencer ma conf en disant bonjour.. Pour la suite.. ben on verra ça pendant le week-end.

Je voulais aussi tester mongobd, ça sera pour une prochaine fois. Mon scénar de campagne de jdr, pas avancé d’un pouce, et au niveau billets, j’ai même pas tellement dépilé ma liste de sujet, vu que j’ai eu de nouvelles idées…

Mais bon, dans l’ensemble, je suis plutôt content.

Titanium par l’exemple, un client twitter en dix minutes.

Bon, bien entendu mon titre est volontairement accrocheur. Et complètement mensonger. Mais il faut bien appâter le chaland un peu. Sinon, je ne serais jamais un blogueur influent.. Alors vive les titres accrocheur 🙂

Mais avant de commencer, il faut peut-être que j’explique ce que c’est que Titanium. Titanium c’est un framework assez génial (et libre) qui permet de faire du dev iphone/android en html/javascript. Histoire que ceux qui n’aiment ni l’objective-C, ni le Java puisse tout de même coder sur ces plateformes là. Histoire aussi de coder qu’une fois son appli et de la voir tourner sur les deux.

Là, vous devez être en train de vous demander : ‘Il va nous parler de dev iphone/android en js ? ‘

Et ben en fait, pas du tout.

Parce que là où Titanium est encore plus génial, c’est que l’on peut coder pour le Desktop aussi, en multiplateforme à savoir Linux, OSX et Windows. Sympa, vous aller me dire, mais bon faire toute une appli desktop en js, voilà quoi …

Oui, mais non, parce que pour le desktop, on peut coder en python (attention en python 2.5 uniquement), en ruby ou.. misère, en php. Et là, ça devient carrément miam.

Ca faisait donc plusieurs mois que j’avais envie de tester le bouzin, mais bon, j’avais déjà pas le temps de bosser sur histoiresderolistes.com alors tester un truc en plus… Et puis les tests c’est bien joli mais pour faire des Hello World! Merci.

Mais comme les vacances, ce n’est pas fait que pour travailler sur le boulot en retard, j’ai pu m’y mettre, un peu. (et puis faut avouer que le billet de @popofr13 sur le dev titanium iphone m’a boosté à écrire le mien). Restait alors le problème du Hello World. Après 30 secondes de réflexion je me suis dit que bidouiller des trucs avec twitter, ça serait rigolo. Et en plus comme c’est bien buzz word twitter, ça plaira, c’est sur.

Et c’est ainsi qu’un froid jour d’avril, une nouvelle catégorie d’article naquit sur le j-mad blog. Une catégorie dédiée aux bidouillages avec Titanium et ayant pour fil rouge le dev d’un client twitter basique (type Pino quoi). Et comme pour chaque projet, il faut un nom, j’en ai trouvé un TwittPouick. Oui je sais. Non, pas de commentaires sur le nom.

1- La genèse, installation et création du projet.

Alors c’est tout simple, pour télécharger Titanium, on va sur le site et on clique sur téléchargement.

Ensuite il n’y a qu’à décompresser l’archive et lancer l’installateur. Petite précision, il y a assez régulièrement de nouvelle version, qui sont indiqués directement dans l’interface de Titanium. Il suffit alors de relancer le cycle dl/décompression/installation.

Une fois Titanium installé et lancé, il suffit de cliquer sur New Project pour voir la fenêtre ci dessous apparaître. Rien de bien difficile à comprendre, il suffit de remplir les champs et de cliquer sur create project (N’oubliez pas de cocher en vert la petite case python tout de même).

Vous arrivez ensuite sur la fenêtre principale composé d’à gauche la liste de vos projets (sur mon screen on voit d’ailleurs mon projet twittpouick) et à droite ben la zone de droite avec un menu horizontal en haut Dashboard / Edit / Test & Package.

  • Le premier ne sert à rien, c’est simplement la liste des options en fonction de si on a un abonnement payant ou pas.
  • L’onglet Edit sert un peu plus, il permet de modifier les infos que l’on a saisit à la création du projet
  • Enfin Test & Package sera celui sur lequel vous allez passer le plus de temps, vu que c’est à partir de là que vous lancerez votre projet. (et qu’un jour quand il sera fini vous le packagerait et tout et tout)

2- Et ensuite ?

Ben ensuite, on prend son navigateur de fichier favori et on va voir ce qu’il nous à générer le tonton Titanium.
Et l’on voit ça :

Bon le fichier jquery n’est pas là de base, c’est moi qui l’est rajouté. Vous comprendrez pourquoi par la suite.

Donc il ne devrait y avoir quasiment que le fichier index.html. Qui correspond à notre fenêtre principale. Avant de partir pour de vrai dans des vrais choses rigolotes (comprendre le client twitter), on va tout de même faire un hello word. Et oui.

Ouvrez le fichier index.html et remplacez son contenu par celui-ci

<html>
    <head>
        <script type="text/python">
      def hello_python():
          return "Hello World"
        </script>
    </head>

    <body >
        <div >
            <div >Le Hello World</div>
            <button onclick="alert(hello_python())">Bouton Hello</button>
        </div>
    </body>
</html>

Allez dans Test & Package, cliquez sur Launch App, une fenêtre blanche se lance avec un bouton, cliquez sur le bouton et mirage, une fenêtre Alert javascript s’affiche avec un Hello World dedans.

Ce qui est logique, si on regarde le code au dessus. On crée une section de code python, on définit une fonction que l’on appelle sur le onclick du bouton, dans un code js donc, et on passe le retour de la fonction python (je le rappelle) en paramètre à la fonction alert js.

En fait cet exemple, bien que très simple, montre la plupart des trucs génials de Titanium.

On peut déclarer des sections de code python, directement dans les fichiers html (mais on peut le faire proprement en dehors aussi, ça sera l’objet d’un prochain billet) et on peut accéder au python du js.

Et c’est aussi valable dans l’autre sens. On peut accéder du python, à du code JS. Que ce soit accéder à des fonctions ou à des variables, que l’on peut modifier, bien entendu (à ce propos, cette page de la doc officielle explique la conversion entre les types python / javascript.

3- Et TwittPouick naquit.

Pour clore ce premier billet, déjà bien long, et justifier un peu, le titre du billet, on va faire une premier truc, c’est récupérer, après clic sur un bouton, sa timeline, dans un mode code grouirk, parce que c’est juste pour finir en beauté ce billet.

3.1 Récupération de sa timeline.

Je ne connais pas les librairies twitter en python. Et je n’ai pas vraiment le temps de me plonger dedans pour voir laquelle est la mieux. Par contre je connais bien restkit, une librairie bien bien sympa de @benoitc et qui marche plutôt bien.

On va donc l’utiliser pour récupérer sa timeline.

3.2 Affichage de sa timeline.

On à une interface HTML. On veut modifier le dom. Moi j’aime bien jquery. Donc on va utiliser Jquery. Directement dans du code python. Et oui. Comme si on était en Js. Sauf que l’on ne pourra pas utiliser le raccourci $ , vu qu’on est en python. On va donc simplement utiliser le vrai objet JQuery.

3.3 Utilisation des API Titanium

On peut bien entendu, encore heureux, utiliser directement les API titanium qui sont en Js. Pour l’exemple, j’utilise Titanium.API.info qui permet d’afficher une chaîne de caractère dans la console.

Bon et maintenant le code, complet, du fichier index.html

<html>
    <head>
   
    <link rel="stylesheet" type="text/css" href="style.css" />
    <link rel="stylesheet" type="text/css" href="color.css" />    
   
    <script type ="text/javascript" src="jquery-1.3.2.js"></script>


    <script type="text/python">
        def getTimelineJquery():
            from restkit import Resource, BasicAuth
            from pyquery import PyQuery as pq
           
            try:
                import simplejson as json
            except ImportError:
                import json # py2.6 only
   
            class TwitterTimeline(Resource):
   
                def __init__(self, pool_instance=None, **kwargs):
                    search_url = "https://api.twitter.com/1/statuses/"
       
                    auth = BasicAuth("TwitterUserName", "TwitterPassword")
       
                    super(TwitterTimeline, self).__init__(search_url, follow_redirect=True,
                                    max_follow_redirect=10,
                                    pool_instance=pool_instance,
                                   filters=[auth],
                                    **kwargs)
       
                def get_timeline(self):
                    return self.get('home_timeline.json')
       
                def request(self, *args, **kwargs):
                    resp = super(TwitterTimeline, self).request(*args, **kwargs)
                    return json.loads(resp.body)
   
            s = TwitterTimeline()
            tl = s.get_timeline()

            for item in tl :
                element = u"""<p class="p_tweet color_p_tweet"> %s :  %s</p>""" % (item['user']['screen_name'], item['text'] )
                Titanium.API.info (element)
                jQuery("#timeline").append(element)

    </script>

    </head>
    <body class="body color_body">
         <div>
           
            <h1>Votre timeline avec TwittPouick</h1>
            <button onclick="getTimelineJquery()"> Get Timeline Jquery </button>
           
            <div id="timeline">

            </div>
        </div>
    </body>
</html>

Vous n’avez plus qu’à installer restkit (avec easy_install), pour python 2.5 N’OUBLIEZ PAS !!!, mettre jquery à coté de votre fichier index.html, mettre votre login / mot de passe twitter et puis lancer l’appli twitter.

Cliquer sur le bouton, quelque seconde après .. miracle les tweets apparaissent. Recliquez sur le bouton, les nouveaux twitts s’ajoutent en bas de liste….

Et voilà, même pas 10 minutes et déjà vous avez un début de client. Comme quoi, je ne vous avais pas tant mené en bateau que ça, dans mon titre, finalement.

4- Conclusion.

Ce premier billet, n’est qu’un premier billet. Il ne va pas très loin dans la présentation de Titanium, parce que je n’ai pas vraiment eu le temps de moi même faire plus. Vivement les prochains billets donc. Enfin, j’espère que c’est ce que vous vous dites en ce moment :).
Pour la suite, je mettrais en place un repository mercurial sur bitbucket où je déposerais les différentes étapes de la création de TwittPouick.

En attendant mon prochain billet, amusez vous bien avec Titanium.

Django-request , ne partez plus en quest de vos stats

Et non, vous ne rêvez pas, on est même pas le 15 avril et déjà, déjà, le billet de l’app django du mois est là. Mais bon, les rencontres django ayant lieu dans maintenant 14 jours et n’ayant pas encore commencer à préparer ma conf, même pas le premier mot (enfin si, bonjour), ce qui fait que je suis ‘dans la banade’, comme l’a fait si justement remarquer il y a peu @daks_

Donc, je préfère me ‘débarrasser’ tout de suite de l’app du mois, comme ça, ça sera au moins une chose de faite.

Ce mois-ci, je vais donc vous présenter django-request, une app pour faire des stats sur la fréquentation de votre django. Oui je sais il y a google analytics pour ça. Mais bon, on sait jamais, ça peut être utile quand même.

1- Où on le trouve, comment on l’installe, tout ça quoi (et la doc) ?

On le trouve à deux endroits :

A noter que quasiment toute la doc se trouve être sur la partie dédiée à django-request sur le site de son auteur.

Pour l’installation, facile, un git clone, un téléchargement de source ou alors pip et easy_install.

Quand à la doc, elle est vraiment très fournie et complète, permettant d’installer, de configurer, d’utiliser, la totale quoi.

2- A quoi ca sert ?

Ben à faire des stats, je l’ai déjà dit. Qui ne seront visibles que dans la partie admin.

On peut avoir de jolis graphiques concernant :

  • les visiteurs uniques
  • les visites basées sur des referrer différents
  • les requêtes reçues par le serveur
  • les requêtes venant des moteur de recherches
  • les requêtes provenant du javascript
  • les requêtes en SSL
  • les requêtes faites par un utilisateur
  • le nombre d’erreur 404
  • le nombre d’erreur, toutes erreurs comprises
  • le nombre d’utilisateur enregistré sur le site qui ont fait des requêtes

Par défaut les calculs seront fait pour les visiteurs uniques, les visites en fonctions des referrers et le nombre global de requêtes.

On obtient ensuite un joli petit graphique qui nous donne tout plein d’infos. Et plein de petits tableaux pour en avoir encore plus.

Et on peut même avoir, des petits templates tags pour voir les users actifs sur le site

3- Comment ça marche ?

Il suffit d’ajouter ‘request’ dans ses installed_apps et d’ajouter le middleware qui va bien. (Attention suivant les middlewares déjà installés, la position du middleware de django-request, dans le tuple des middleware est importantt, mais c’est bien expliqué dans la doc).

Ensuite, tout ce passe dans l’interface d’admin

4- Tips de chez Jmad.

Quand j’ai installé le tout avec easy_install, j’ai oublié de rajouter les chemins pour avoir les templates admins de l’app. Résultat je n’avais rien dans l’admin. Faites y attention ou alors installez request directement dans votre projet django, comme une de vos apps.

Le model Request présente un champ language qui est modélisé en bd par un varchar de 25. Avec mes tests, cette longueur était bien trop petite pour mon firefox. Du coup boum une erreur BD a base de ‘machin qui a été truncated’. J’ai passé la taille du champ à 200 pour être tranquille.

Les différents fichiers js qui sont utilisés sont bien entendu fournis. Pourtant par défaut, les templates vont utilisés ceux hostés ailleurs (sur le site web de l’auteur par exemple). N’oubliez pas de changer cette option si cela vous dérange.

C’est expliqué dans la doc, mais je le redis ici. Une fois que tout est bien configuré, pour aller voir ces stats, vous allez dans l’admin, vous cliquez sur la ligne Request de l’app Request. Là vous avez la liste de toutes les requêtes. (pas très utile là comme ça, vous me direz). Levez les yeux, en haut à droie, à coté du bouton Add Request, vous avez un bouton Overview. Et voilà, cliquez, vous avez vos stats.