mardi 23 septembre 2008

Une tortue avec Processing

J'ai découvert récemment Processing (parfois écrit Proce55ing), un langage de programmation/environnement pensé pour des réalisations "artistiques" : images, animations, sons et 'interactions'.

Basé sur le Java, la syntaxe semble assez proche du Javascript, assez concise et simple. Le typage est statique en revanche. Dans l'ensemble, c'est plutôt bien fait : la prise en main se fait en quelques petits essais... Par exemple :

Exemple (Le code)

Pour information, cet environnement est disponible sous toute plateforme, et en diverses implémentation (Javascript, Ruby...). Pour avoir un peu joué avec Shoes, je retrouve là une bonne partie de ce qui a inspiré _Why pour sa conception... L'un des côtés intéressant, outre l'environnement vraiment simplissime, c'est l'assez grand nombre de bibliothèques (3D, traitement du son et du signal, XML, Vidéo, PDF...) même si elles sont parfois un peu "orientée Mac" (QuickTime entre autre...). Notamment, Arduino et Wiring dans l'interfaçage physique, me paraissent particulièrement intéressants : avec un matos de base relativement abordable (à partir de 20€ pour les cartes), les possibilités sont très grandes... (Je vous laisse chercher.)

Allez, un petit code rigolo pour illustrer :

Turtle :

J'ai essayé de faire une petite version, assez simplifiée, du langage Logo (langage de programmation où l'on dessine avec une tortue).

Le "coeur" est implémenté dans un premier fichier "turtle_lib.pde".
La méthode setup(), comme son nom l'indique, est une méthode d'initialisation qui est systématiquement appelée (si existante) par Processing avant la méthode principale. Elle ne peut être rappelée par la suite. La fonction noLoop() indique à l'interpréteur que les instructions qui seront données par la suite n'auront pas à être répétées (par défaut, le contenu de la méthode draw() est exécuté de manière cyclique, notamment pour les animations et les captions diverses : souris, clic, etc... Ici, ceci est inutile et gênant).
Les méthodes suivantes sont les méthodes de base du Logo : move pour avancer le crayon d'un nombre donné de pixels, turn pour changer sa direction, changeColor pour changer sa couleur et son opacité, raisePen et putPen pour le lever le crayon (celui-ci n'écrit donc plus lorsqu'on le déplace) et le (re)poser, respectivement.

Voici un petit exemple d'utilisation : les instructions se trouvent dans la méthode draw() qui constitue la méthode "principale" de tout programme Processing.


Exemple de la tortue (turtle_ex.pde)

Non, ce n'est pas très joli... mais c'est de la faute à la tortue !

Références :

Dans le même genre...

Amusez-vous bien !

dimanche 14 septembre 2008

Se faire plaisir pour la rentrée...

Parce que parfois, se faire plaisir... ça fait plaisir...

Ceci est un PicooZ : un tout petit hélicoptère télécommandé. C'est pas très cher, assez chaud à maîtriser, sans risque et franchement marrant... Un blog avec plein de ressources, vidéos, tricks et news sur ces petits machinos.


Tiens, je crois que je n'avais pas encore parlé de jeu de plateau ici... Roma de Stefan Feld (en VF) est un jeu de carte avec dés pour 2 joueurs dans le style "stratégie conviviale" : dans la lignée de Citadelle, il associe des aspects tactiques assez simples mais parfois vicieux avec une part relativement importante de hasard qui garde le jeu assez équilibré, le tout avec des parties durant environ 30 minutes. De façon assez surprenante (pour moi) la part de chance dans ce jeu ne me paraît pas trop gênante par rapport à d'autres (Colons de Catane et Risk, entre autre) où elle peut aisément fusiller complètement une stratégie en quelques mauvaises passes. Bref, un bon petit jeu dans la tradition allemande pour 2.


Conseillé par Lefty, le dernier BB King, One Kind Favor, est un petit bijou : reprenant de bons vieux classiques de manière elle aussi classique (et peut-être limite jazzy sur les bords pour certains morceaux). On retrouve vraiment l'essence du Blues avec une combinaison chant + guitare parfaite. Un très bon album (article de Lefty sur celui-ci).

Ruby : Renommer un ensemble de fichiers

Logo Ruby Juste un petit code pour renommer un ensemble de fichiers. Sous Unix, un petit shell serait sans doute suffisant, mais étant sous Windows à la maison et n'aimant pas des masses le Batch, voici ce que ça pourrait donner... Dans cet exemple, on associe à d le répertoire dans lequel on souhaite renommer les fichiers dont le nom commence par "PICTURE_" (sortie d'appareil photo dans mon cas) en "starpics_000X" avec X s'incrémentant.


d = Dir.new("C:/Documents and Settings/utilisateur/Photos/Star")
Dir.chdir("C:/Documents and Settings/utilisateur/Photos/Star")
i = 1
d.each do |file|
if file.to_s[0..7] == "PICTURE_" then
File.rename(file.to_s, "starpics_000#{i}.jpg")
i += 1
end
end
Rien de bien méchant dans ce court code. Quelques remarques cependant : on remarque que même sous Windows, les séparateurs dans le chemin du répertoire est un slash et non pas un anti-slash... Il me semblait qu'il y avait une méthode de base pour faire cette conversion un peu pénible mais je ne l'ai pas retrouvée... Une chose un peu pénible avec cette partie du core de Ruby, sur les fichiers et répertoires, c'est que c'est assez peu homogène : ici, on itère sur les fichiers grâce à la méthode d'instance each de la classe Dir (Directory), on change le répertoire courant grâce à la méthode de classe chdir, mais la méthode de renommage de fichier est une méthode de classe ! Pourquoi pas une méthode d'instance sur sa cible ?

Au passage, il est possible de renommer plusieurs fichiers en même temps sous Windows via l'explorateur : les sélectionner puis faire F2. On en renomme un, les autres prennent le même nom, suivi de " (X)" avec X s'incrémentant. La beauté de Windows ? Des anti-slashs dans les chemins et surtout de superbes espaces et parenthèses dans les noms de fichiers...

Un bon tutoriel sur Ruby pour la partie "Manipulation de fichiers", par JB Naigeon (:fr).
Blogged with the Flock Browser

mardi 2 septembre 2008

Essai de Google Chrome en Live !

Après l'annonce hier de sa sortie imminente, Google Chrome, le navigateur web made in Google, est disponible depuis quelques (petites) heures en téléchargement (ici). Le géant du web diffusait déjà aujourd'hui cette BD (en anglais), expliquant par
 la voix de ses développeurs l'intérêt de ce logiciel et détaillant techniquement (parfois de manière assez poussée !) ses caractéristiques diverses.

Après mon dernier article sur le navigateur orienté social Flock, je ne résiste pas à vous refaire le coup du post écrit en live depuis ce nouveau browser.

De l'importance de la première impression...


Ce qui saute aux yeux à l'ouverture du soft, c'est la sobriété et la clarté de l'interface. Comme sur la plupart des applications Google (je pense surtout à Gmail et Google Reader), c'est une réussite : du bleu clair et du blanc, des icônes claires et populaires, etc... Le design de l'interface est entièrement tourné vers l'onglet, et non pas vers la fenêtre. Pour celle-ci, on oscille entre un visuel rappelant la dernière version de GTK, et l'interface de Windows Vista... pour le peu qu'on la remarque ! En effet, et comme annoncé, ce sont les onglets qui gouvernent ici, et donc, ceux-ci atteignent le haut de l'écran, un peu comme en mode plein écran sur d'autres navigateurs.

La barre principale est minimaliste, dans un style rappelant assez Safari : 4 boutons, la barre d'adresse et 2 icônes de menu déroulant ("contrôler la page actuelle" et "personnaliser et contrôler Google Chrome"). Même la barre de favori en dessous peut être enlevée (on y retrouve en coin le dossier des favoris sous forme de menu déroulant). Tout  à manifestement été fait pour que l'on oublie le navigateur lui même : clairement, on ne voit que sa page web.

Au niveau de l'affichage, c'est WebKit, le moteur de rendu utilisé par Safari (et dérivé du KHTML de Konqueror) qui est utilisé. J'avoue être très agréablement surpris par les progrès de celui-ci... même si c'est un peu déstabilisant lorsqu'on est "trop" habitué au moteur Gecko (employé par Firefox).

Oh, et un détail : il n'y a pas de panneau latéral !


Vite vite ?


Au démarrage, Chrome va vite. Chez moi (c'est important), il est à priori plus rapide que Flock (équivalent à un Firefox 2 dernière version avec quelques extensions) et plus rapide que Firefox 3... Au chargement, c'est assez difficilement mesurable à l'oeil nu, et surtout, ça me paraît plus "variable" qu'avec mes autres navigateurs (hormis peut-être Opera...) : sans doute un poil plus long, mais à faire vérifier par de vraies mesures. Par contre, le navigateur est impressionnant pour le javascript : Gmail et Google Reader (tiens des applis Google, comme par hasard...) sont extrêmement rapides (si vous n'êtes pas convaincus, à tester sur cet interpréteur online de Brainfuck... qui n'a pas été codé par Google...).

Au niveau de la consommation mémoire, chaque onglet est un processus séparé. Pour résumer pour les moins informaticiens d'entre nous, c'est à dire qu'ils se comportent comme étant chacun "un programme à part" : notamment, si l'un d'entre eux bugge, le programme dans son ensemble ainsi que les autres onglets continuent de fonctionner. Cela veut également dire que l'on peut surveiller la conso de chaque onglet : le programme propose un gestionnaire de tâches séparé de celui de l'OS ainsi qu'une page spéciale about:memory afin de gérer sa consommation.

A titre purement indicatif, sur ma modeste bécane (avec les mêmes pages ouvertes bien sûr mais probablement avec des différences de cache) :
  • Chrome : 131 M
  • Firefox 3 : 97 M
  • Flock 1.2.4 : 115 M
Chrome est donc encore assez loin des efforts de Mozilla pour diminuer la consommation mémoire.

J'ai par ailleurs l'"impression" que l'intégration du Flash est d'avantage réussi que dans mes autres navigateurs... Illusion d'optique ?

Clarté et Opacité


Parmi les exemples et fonctionnalités qui font la clarté de Chrome on a une barre d'état... inexistante : celle-ci apparaît uniquement au besoin, pendant le chargement d'une page ou lorsque l'on passe sur un lien. La barre d'adresse met également en relief le nom du site plutôt que l'adresse complète de la page courante. Les options sont également très claires. Et les principaux raccourcis de Firefox fonctionnent... La page d'acceuil est une sorte de Fast-Dial en mieux : il propose les pages les plus visitées par l'utilisateur mais aussi les favoris récents ou encore d'afficher l'historique : très bien conçu.

Cependant, certaines fonctionnalités me paraissent d'un accès assez difficile, comme le gestionnaire de tâches, le passage en mode "navigation privée" ou encore le gestionnaire d'extensions/plug-ins (pas trouvé). Par certains côté, Chrome me rappelle beaucoup les produits Mac de par son "opacité" sur les fonctions les moins employées par les utilisateurs (demandez donc à un Mac-User basique d'ouvrir un terminal et un éditeur de texte...).


Et Tic et Tac ?


Fini le live, parlons éthique... Ou plutôt, posons-nous quelques questions...

  • Est-il raisonnable d'utiliser un navigateur produit par l'entreprise leader (incontestée) du web ?
  • Quel est l'intérêt pour Google de financer ce navigateur ?
  • Celui-ci intègrera-t-il une forme de publicité ? (autre que pour la marque Google en elle-même)
  • Google finançant la fondation Mozilla, qu'en est-il de l'avenir des relations entre ces 2 entités ?
  • Faut-il craindre l'avènement du Big Browser ?
  • Si Google Chrome est open-source, n'est-ce pas en partie pour favoriser l'adoption des technologies "Google-made" par les autres grands acteurs du monde libre (Mozilla entre autres) ?
  • Quid du service de mise à jour de ce navigateur ? (élément de sécurité critique)
  • Quel sera l'impact de cette nouveauté sur le marché des navigateurs web ?
  • Qui vise Google ? Microsoft et/ou Mozilla ? (et/ou Apple ?)
  • Chrome ne sera-t-il que le navigateur d'Adroid ? (pour téléphones portables)
  • Pourquoi Chrome n'est-il disponible que sous Windows !!!? (pour l'instant...)
  • Où sont les extensions et les plug-ins ?
  • Juste un buzz ?

A chacun de répondre, pronostiquer et choisir.

Conclusion

Google Chrome est prometteur. Tous les paris ne sont pas encore gagnés pour lui, loin de là : performances, consommation mémoire, ouverture, sécurité et maintenance... Cependant, sa conception  relativement neuve (relativement car WebKit n'est pas non plus une révolution...), ses objectifs techniques et son originalité lui assureront inévitablement des adeptes. Cela suffira-t-il a changer significativement la donne dans le marché des navigateurs web, toujours (mais de moins en moins) dominé par Internet Explorer ? Rien n'est moins sûr... mais c'est Google, on ne sait jamais...
Par ailleurs, il soulève bien des interrogations, et même des inquiétudes, notamment dans le monde du libre. Sans sombrer dans la paranoïa et la suspicion pour toute société possédant plus de 4$, il est nécessaire de continuer à rester prudent vis-à-vis des pratiques de Google.


Ressources :


Note : Les images de cet article appartiennent à leurs propriétaires respectifs.