Archives de l'année 2009

Quelques impressions sur l'iPhone

Ça fait bientôt deux semaines que j'ai mon iPhone 3GS 16Go tout neuf ^^ Il remplace mon vieux téléphone LG qui, s'il a un design pas trop moche, est quand même assez pourri par ailleurs (et surtout, la batterie est plus morte que vive...).

Alors que dire sur cet iPhone ? Pas mal de choses !

Déjà, premier point : taper un SMS avec un iPhone, comparé à taper un SMS sur un clavier douze touches, c'est juste environ soixante douze mille fois plus agréable :smile: C'est évidemment pas aussi pratique qu'avec un clavier d'ordinateur mais franchement, c'est top. J'avais très peu tapé de texte sur mon iPod Touch (pas trop de raison, je m'en servais essentiellement pour jouer et écouter de la musique) mais là dès les premiers SMS j'ai pris la pleine mesure de l'avantage d'avoir un clavier à plus de douze touches ! Puis accessoirement, voir les SMS en mode conversation, c'est plus sympa, vive l'écran de taille raisonnable qui peut afficher un peu plus de choses ^^

Ensuite, pouvoir passer deux appels et avoir toujours largement de la batterie, c'est un vrai bonheur \o/ Mais bon, ça c'est juste par rapport à la la batterie moribonde de mon précédent téléphone :D

Autre point : j'avais lu que les derniers modèles d'iPhone et iPod Touch étaient muni d'un revêtement spécial qui réduisait les traces de doigts... ben là clairement, c'était pas une blague ! Sur mon iPod, les traces sont largement visibles, sur l'iPhone elles sont quasi-inexistantes. Espérons que ça dure et que le revêtement en question ne s'use pas à vitesse grand V, ce serait décevant...

Puis reste l'appareil photo qui est tout à fait honorable pour un téléphone :)

Sinon, pas grand chose d'autre à en dire, si ce n'est qu'Universal Mobile fait chier à ne fournir que le 3G 8Go en renouvèlement... Du coup j'ai dû changer de numéro...

À part ça, bah j'avais déjà expérimenté une bonne partie des fonctionnalité avec mon iPod, donc pas de grosses surprises là dessus, c'est juste plus utilisable avec une connexion 3G qu'en étant limité aux réseaux WiFi ! Bref, je regrette pas mon achat, même si ça m'a couté un peu cher, je pense que l'abonnement sera plus rentabilisé avec la connexion internet qu'il ne l'était avant avec juste des communications téléphoniques ^^


Quelques jeux pour iPod Touch/iPhone #8

Rocket Bird

Rocket bird - icône

Un petit jeu excellent où il faut diriger (via l'accéléromètre) un petit oiseau qui file à toute vitesse grâce à la fusée fixée sur son dos. Éviter sapins, barrières, bottes de foins, vaches et maisons pour aller le plus loin possible. Le genre de jeu qu'on peut jouer en boucle sans s'arrêter :p

Les graphismes sont sympa quoiqu'un peu d'anti-aliasing ne ferait pas de mal. La musique par contre est sympa cinq minutes et vite lourde par la suite.

Rocket bird - 1 Rocket bird - 2

Sherk Kart (2€39)

J'ai profité d'une promo pour thanksgiving pour où il était à 0€79 pour l'acheter et je ne regrette pas mon achat : ce clone de Mario Kart est bien sympathique. Pas mal de circuits différents, des graphismes en 3D de bonne facture, une musique pas trop soulante, un mode multijoueurs, que demander de plus ?

Les contrôles sont simples : la voiture dirige via l'accéléromètre, on freine sur un bouton à gauche et on utilise les bonus et actions spéciales sur des boutons à droite.

Shrek Kart - 1 Shrek Kart - 2 Shrek Kart - 3

Pour ceux qui préfèrent tester avant d'acheter, une version démo est également disponible (je ne l'ai pas testée par contre, je ne sais pas ce qu'elle contient).

iDracula (2€39)

Lui aussi je l'ai acheté lors d'une promo mais ça fait nettement plus longtemps :p

Il s'agit là d'un brave jeu de massacre : vous êtes un chasseur de monstres et plein des bestioles vous foncent dessus : zombies, vampires, démons, etc. Par chance ils ont le bon goût de laisser tomber plein d'armes, munitions et autres bonus en mourant... et de venir gentiment par ordre croissant de puissance (comme dans Dragon Ball Z, quoi, sauf que là ils sont plus nombreux \o/). Vous l'aurez compris, iDracula n'est pas le jeu qui vous fera gagner des neurones mais ça détend ^^

Le jeu propose trois décors et quatre modes de jeux différents pour varier un peu les massacres. Et les graphismes en 3D isométrique sont du coup moins aliasés que ce qu'on peut trouver habituelle en "vraie 3D" sur l'AppStore, ce qui n'est pas désagréable non plus ^^

iDracula -1 iDracula - 2 iDracula - 3

Là aussi on peut tester avant d'acheter grâce à la version lite.


Hum, hum...

Ça fait un bout de temps que j'ai un peu laissé ce blog à l'abandon pour diverses raisons... dont un déménagement et le re-passage du permis de conduire (que cette fois j'ai eu \o/ après 3 ans il était temps !).

Dans l'intervalle les statistiques Google Analytics du site on chuté assez rapidement (environ de moitié). Rien d'étonnant : quand y a rien de nouveau, pourquoi revenir ?

Bref, je vais essayer de retrouver un rythme un peu plus rapide et régulier dans les semaines à venir. D'autant que je viens de commander mon iPhone, donc je devrais bien trouver quelques trucs à dire !


Langue par défaut de Google...

Il y a quelques temps, pour tester la fonctionnalité Wonder wheel de Google, j'avais dû switcher sur google.com. Le hic c'est qu'après ça, une recherche dans la barre de recherche me renvoyait systématiquement sur google.com et non google.fr.

Cela venait du fait qu'un cookie est posé sur le navigateur avec la langue par défaut à utiliser. Il s'agit du cookie "PREF" pour le domaine google.com et précisément de la portion "LD=en" qui est en cause. Supprimer ce cookie règle le problème.

Apparemment c'est bien google.com qui est interrogé par la recherche et qui redirige ensuite sur google.fr, mais ce que je ne saisis pas c'est pourquoi aller sur google.com depuis google.fr met à jour le cookie dans un sens alors que faire l'inverse ne le fait pas...


Petit bench sur la recherche dans un tableau PHP

Préambule...

Hier, j'avais à parcourir un tableau d'objets (pouvant avoir potentiellement des centaines voire exceptionnellement milliers d'entrée) pour rechercher si l'identifiant de l'un d'eux se trouvait dans un second tableau. J'avais commencé par utiliser pour ça la fonction in_array() à chaque itération pour voir si l'identifiant de l'objet était présent ou non dans le second tableau.

En voyant cela, un collègue m'a fait remarquer que ce serait peut-être plus performant de construire un tableau dont les clés sont les valeurs du second tableau (via array_flip()) pour pouvoir utiliser isset() au lieu de in_array() et voici les résultats obtenus :

Structure du bench

Le bench consiste à rechercher 100 000 fois la même valeur dans le tableau array('11345', '7437', '7329', '45494', '7894311', 'sdfsdg', 'qsqsdcirt', 'd787 sdfs df'), avec trois méthodes différentes :

  • in_array()
  • array_flip() suivi de isset()
  • array_flip() suivi de array_key_exists()

Le test est effectué avec deux valeurs différentes : d'abord avec la première valeur du tableau (cas théoriquement le plus favorable puisqu'on arrête la recherche une fois la valeur trouvée) puis avec une valeur qui n'est pas dans le tableau (cas théoriquement le plus défavorable puisqu'on est obligé de parcourir tout le tableau). Le résultat en conditions réelles sera donc compris dans cette fourchette.

Cas in_array()

Code exécuté :

for ($i = 0; $i < 100000; $i++)
{
	in_array($value, $values);
}

Cas favorable ($value = '11345') : ~0.33 secondes
Cas défavorable ($value = 'uottuyi') : ~0.52 secondes

Cas isset()

Code exécuté :

$keys = array_flip($values);
for ($i = 0; $i < 100000; $i++)
{
	isset($keys[$value]);
}

Cas favorable ($value = '11345') : ~0.12 secondes
Cas défavorable ($value = 'uottuyi') : ~0.09 secondes

Cas array_key_exists()

Code exécuté :

$keys = array_flip($values);
for ($i = 0; $i < 100000; $i++)
{
	array_key_exists($value, $keys);
}

Cas favorable ($value = '11345') : ~0.27secondes
Cas défavorable ($value = 'uottuyi') : ~0.24 secondes

Et pour de plus petites quantités ?

Les grands volumes c'est bien mais qu'est-ce que ça donne quand on a peu d'itérations ?

Un test à 5 itérations au lieu de 100 000 donne environ le même résultat pour les trois méthodes : avec ~6E-05 secondes pour les méthodes 1 et 3 et ~5E-05 pour la méthode 2.

Tandis qu'un test sur une unique itération donne la première méthode gagnante avec ~4E-05 secondes contre ~5E-05 pour les deux autres (à ce niveau c'est le array_flip pour transformer les valeurs en clés qui coute cher).

Conclusion

À moins d'avoir toujours très peu d'itérations (moins de 5), la méthode passant par array_flip() puis isset() est d'assez loin la meilleure (environ quatre fois plus rapide sur des grands nombres et pas plus lente sur des petits).

En passant, on remarque aussi qu'avec cette méthode, rechercher une valeur qui n'existe pas dans le tableau est plus rapide que de rechercher la première valeur du tableau, même si je ne vois pas forcément trop pourquoi :pense:


Quelques extensions pour Firefox #3

Cet article est marqué comme contenant des informations dépassées depuis le 21/10/2018.
Ces extensions n'existent plus depuis Firefox 57 et l'abandon de l'ancien système d'extensions.

OpenTabs

Une petite extension développée par l'un de mes collègues et qui ne fait qu'une seule chose mais le fait bien : elle ajoute un bouton permettant de modifier d'un seul clic l'ouverture des onglets en passant d'une ouverture en arrière-plan à une ouverture en avant-plan, et vice versa. C'est pas grand chose mais dans certains cas c'est bien pratique ^^

Regular Expressions Tester

Cette extension clairement réservée aux développeurs permet d'écrire une expression rationnelle et de tester en temps réel son application sur une chaine. C'est carrément pratique, en particulier quand on doit débuguer une expression écrite par quelqu'un d'autre et qui, forcément, est totalement incompréhensible \o/

Regular Expressions Tester

Dragdropupload

Encore une petite extension qui n'a l'air de rien comme ça mais que je trouve bien pratique ! Elle permet de renseigner un champ de formulaire de type fichier directement en "droppant" le fichier dedans plutôt qu'en étant obligé de saisir sont chemin d'accès ou de le rechercher dans l'arborescence (alors que dans certains cas on a déjà fait cette recherche préalablement dans l'explorateur windows).


Quelques trucs sur Mac OS #1

Comment saisir certains caractères ?

Certains caractères sont bien compliqués à saisir sur un mac et notamment pas forcément visibles sur le clavier (de mon macbook pro en tous cas, pour les autres j'en sais rien). Or quand on fait de développement, c'est caractères sont très souvent utiles :

  • ~ (la tilde) : alt+N
  • { (l'accolade ouvrante) : alt+(
  • } (l'accolade fermante) : alt+)
  • [ (le crochet ouvrante) : alt+shift+(
  • ] (le crochet fermante) : alt+shift+)
  • \ (le backslash ou antislash) : alt+shift+/
  • | (la barre) : alt+shift+L

Faire une capture d'écran

Je ne sais pas si par hasard les iMac ont une touche équivalente à "Impr. écran" qu'on trouve sur PC mais en tout cas ce n'est pas le cas du MacBook pro. Leopard permet de capturer soit tout l'écran (cmd + maj + 3), soit une sélection (cmd + maj + 4), soit une fenêtre (cmd + maj + 4 puis espace). Dans tous les cas la capture sera automatiquement enregistré en PNG sur le bureau.

Forcer l'éjection du CD depuis un terminal

Après insertion, mon CD n'apparaissait pas dans l'interface (ni dans iTunes, ni dans le finder). Une courte recherche sur Google m'a sorti une panoplie de solutions possibles, la plus simple (et qui a marché dans mon cas) était de forcer l'éjection depuis le terminal via la commande drutil eject.


Altération des archives gzip lors d'un téléchargement

Il y a quelque temps, j'ai mis en ligne un pack de smileys pour le logiciel de messagerie instantanée Pidgin. Ce pack contient les smileys utilisés sur mes forums, comme je l'avais déjà fait pour Adium (car oui, Adium est excellent mais ne tourne que sur Mac, donc quand on est sous Windows, il faut se rabattre sur autre chose et Pidgin reste le moins mauvais que j'ai pu trouver...).

Pour générer ce pack, j'ai utilisé le convertisseur que j'avais déjà codé pour le pack Adium et qu'il serait temps que je finalise pour le publier...

Mais là n'est pas le propos de cette note. En effet, j'ai constaté plus tard, quand certaines personnes ont voulu exploiter ce pack, que le pack ne s'installait pas systématiquement. En fait le problème vient du fait que Firefox (de même qu'Opera et Safari dans leurs dernières versions) altère légèrement le fichier du pack qui est une archive gzip.

En effet quand j'ouvre le fichier téléchargé, au lieu de trouver directement dedans le fichier .tar que je devrais y trouver, je tombe sur une sorte de dossier intermédiaire du nom du fichier. Ce "dossier" apparait lors du téléchargement uniquement puisqu'il n'est pas présent sur le fichier avant l'envoi, pas plus que lors d'un téléchargement via IE6 (eh oui, j'ai encore de vieux trucs sur mon PC, même si je ne m'en sers que pour des tests :p).

Je n'ai testé ça que sous Windows et je ne sais pas ce qu'il en est des versions Linux et Mac de ces différents navigateurs mais sur Windows le problème est réel (du moins pour des archives publiées via un site tournant sous WordPress, mais je ne pense pas que ça vienne de là).

Je soupçonne que ça puisse venir de l'aptitude qu'ont les navigateurs à recevoir de pages compressés en gzip par le serveur et de les décompresser à la volée : l'archive étant dans ce format, peut-être le navigateur fait-il un truc pas net avec ? Peut-être aussi qu'il y aurait des en-têtes particuliers à envoyer pour résoudre le problème... ou peut-être pas.

Quoiqu'il en soit, la solution la plus simple que j'ai trouvée pour l'instant reste de fournir une archive .zip contenant l'autre archive. Là, pas de problème, il n'y a pas d'altération.


Quelques bannières de séries TV

Ça faisait un bout de temps que je n'avais plus fait un article sur mes créations graphiques, notamment parce que j'en fais assez peu...

Voici une série de bannières réalisées pour le concours organisé sur EDForum destiné à illustrer les nouvelles sections sur les séries TV :

24
24
Alias
Alias
Battlestar Galactica
Battlestar Galactica
Bones
Bones
Fullmetal Alchemist
Fullmetal Alchemist
Heroes
Heroes
Lost
Lost

Il est clair que certaines sont plus réussies que d'autres mais globalement je ne suis pas mécontent du résultat ^^


Boulder Dash sur iPod Touch/iPhone

Il y a peu est sortie le portage sur iPod Touch et iPhone d'un jeu des années 80 que j'affectionne particulièrement : Boulder Dash.

Y ayant joué des centaines (voire milliers) d'heures sur Commodore 64 à l'époque (entre les différentes version et l'éditeur de niveau), je me suis empressé de l'acheter dès sa sortie, malgré le prix relativement élevé (4€) pour un portage d'un jeu ayant 25 ans.

Boulder dash, qu'est-ce que c'est ?

Pour ceux qui ne connaitraient pas, dans ce jeu, on incarne un petit bonhomme qui se balade dans des "cavernes" et doit collecter assez de diamants pour ouvrir la sortie et passer à la caverne suivante, tout cela en temps limité. Les cavernes comportent différent types d'objets : diamants, monstres... Un principe simple mais comme dans pas mal de domaines un bon principe simple vaut bien mieux qu'un mauvais principe complexe !

La version iPhone et iPod Touch

A priori le descriptif est alléchant puisque cette version est annoncée comme très proche de l'original : possibilité de prendre les graphismes d'origine, les bruitages sont les mêmes et les niveaux sont ceux du numéro 1, soit 80 cavernes à explorer si l'on considère les 5 niveaux de difficultés (on peut effectivement considérer qu'il y en a bien 80 car les cavernes des différents niveaux de difficultés sont différentes : les cavernes A1 à A5 suivent le même schéma mais ne sont pas identiques).

Boulder Dash - menu principal Boulder Dash - choix des graphismes
Boulder Dash - menus

De plus ce portage apporte ses propres améliorations avec des graphismes alternatifs plus modernes, la gestion dynamique des modes portrait et paysage et la gestion du zoom notamment.

Oui mais...

Descriptif alléchant, disais-je, mais la réalité n'est pas aussi réjouissante... Ayant joué très longtemps la version, d'origine, j'ai assez vite remarqué des détails qui changeaient sans raison apparentes :

  • là où le jeu d'origine était assez rapide, ce portage est assez lent. Mais surtout la vitesse variable selon le niveau de zoom c'est assez chiant surtout que le temps, lui ne change pas de vitesse de défilement... Porter un jeu 25 ans plus tard sur une machine incroyablement plus puissante que les Commodore 64 et autres Amstrad de l'époque et aboutir à un résultat plus lent c'est quand même un exploit ! On en rêvait (ou pas), Chillingo l'a fait \o/
  • les boules n'ont pas de résistance : on pousse et elles se déplacent direct. Dans la version d'origine, elles "résistaient" pendant un temps aléatoire, ce qui introduisait une difficulté supplémentaire à gérer.
  • on ne peut plus libérer un groupe de monstre en les longeant. Sur la version d'origine, on pouvait longer un groupe de papillons sur la gauche ou un groupe de carrés sur la droite pour les libérer, sans mourir. C'était très pratique comme alternative à l'utilisation du bouton d'action :(

Ça c'est pour les différences.

Boulder Dash - graphismes classiques - 1 Boulder Dash - graphismes classiques - 2 Boulder Dash - graphismes classiques - 3
Boulder Dash - graphismes classiques

Et ce n'est pas tout...

Après y a les bugs/défaut d'ergonomie :

  • le zoom qui s'active même quand on bouge les doigts sur les zones de contrôle : dans le mode où l'on a les contrôles partagés entre la gauche et la droite, si l'on ne fait pas gaffe sur les enchainements de mouvements, on déclenche souvent involontairement un zoom. C'est déjà chiant à la base mais en plus, comme dit plus haut, ça modifie la vitesse de déplacement !
  • le système de zoom à deux doigts comme dans Safari, c'est bien pour une page web mais pour un jeu d'adresse où il faut être rapide et précis je trouve ça nettement moins adapté : j'aurais mieux vu deux zones "cliquables" pour le zoom avant et le zoom arrière plus classique mais probablement plus efficace dans ce contexte. Et ça règlerait du même coup le point précédent. C'est toujours un plaisir de clôturer deux tickets en même temps \o/
  • globalement je trouve la gestion des contrôles moyenne (mais ça en fait on le retrouve sur la plupart des jeux qui simulent un joypad) : pourquoi ne pas faire un écran de préférences qui permettrait de placer les éléments où on veut ? Par exemple, moi j'aurais bien mis en mode paysage avec les contrôle de mouvement à gauche et le bouton d'action à droite (comme sur un joypad, quoi) mais non, ce mode met tout au milieu... Pas très pratique pour garder un minimum une vue sur l'écran. Personnellement j'ai pas les doigts transparents !
  • quand on quitte l'application, la partie n'est pas sauvegardée... c'est con quand on pense que par ailleurs il y a une option pour justement suspendre le jeu et le reprendre plus tard !
Boulder Dash - graphismes modernes - 1 Boulder Dash - graphismes modernes - 2 Boulder Dash - graphismes modernes - 3
Boulder Dash - graphismes modernes

Quelques points positifs quand même...

Beaucoup de points négatifs, donc mais tout n'est pas noir, hein, globalement c'est quand même assez ressemblant et le fait d'avoir le choix des graphismes d'origine est vraiment une très bonne chose. C'est un plaisir de retrouver l'ambiance que l'on connaissait quand on était gamin !

Les défauts relevés, même s'ils gâchent un peu le plaisir, sont plutôt des détails et le principe du jeu fonctionne toujours bien ^^

Conclusion

Conclusion, ben 4€ c'est cher quand même pour un portage loin d'être parfait qui a un peu l'allure d'une beta (un beta Microsoft, hein, pas une beta Google :o). Et pour le prix ils auraient pu inclure plus de niveaux (au moins 4 ou 5 jeux étaient sortis à l'époque, plus l'éditeur de niveaux, donc c'est pas ce qui manque !).

Mais en fait le plus gênant c'est l'aspect ergonomique, parce qu'un jeu peut être bourré de qualités, si l'interface n'est pas pratique, c'est mort, on tient pas longtemps...

Et là y a quand même des points vachement pas cool. À l'usage on doit pouvoir s'y habituer mais bon, un appareil du format de l'iPhone (ou de l'iPod Touch dans mon cas) c'est pas fait pour jouer des heures durant... c'est plutôt pour jouer de temps en temps quand on a un peu de temps à tuer... Donc la prise en main doit être la plus immédiate possible !

Le bon côté des choses c'est qu'a priori, c'est largement améliorable sans révolutionner l'appli. Pas mal de points doivent pouvoir être revus par les développeurs sans y consacrer des mois à coder. Donc on a des chances qu'une version future les corrigent. En tous cas, ils ont intérêt s'ils veulent me vendre la suite ! Parce qu'en l'état, c'est totalement exclus...


Quelques jeux pour iPod Touch/iPhone #7

Realmaze 3D (0€79)

Realmaze 3D - 1 Realmaze 3D - 2

Le but du jeu est simple : un labyrinthe est généré au début de chaque partie et il suffit d'en sortir. Le labyrinthe est en 3D (dans un cube) et graphiquement de bonne facture. Ici il n'y a pas de monstres à tuer, juste une sortie à trouver. Un jeu sympathique qui pour une fois ne demande pas de réflexes, juste un peu de mémoire et de méthode.

Realmaze 3D - 3 Realmaze 3D - 4

Dreams Lite

Un petit jeu des 7 erreurs. Rien de bien compliqué mais des illustrations de toute beauté :) Dommage que la version lite ne compte que si peu d'images... Et que la version complète soit si chère : 2€39 pour ce genre de jeu, ça fait un peu beaucoup quand même...

Dreams - 1 Dreams - 2

Critter Crunch Lite

Un petit jeu dans la catégorie de Tetris ou Puzzle Bobble : ici on doit nourrir des petites bestioles en leur donnant à manger des bestioles de taille inférieure. On peut faire des enchainements et combinaisons pour gagner plus de points et le niveau se termine quand on atteint le score demandé.

Critter Crunch - 1 Critter Crunch - 2 Critter Crunch - 3

La version lite comporte 8 niveaux assez faciles introduisant le jeu. La version complète (0€79) propose bien plus de niveaux qui deviennent rapidement plus difficiles.

Critter Crunch - 4 Critter Crunch - 5

Quelques jeux pour iPod Touch/iPhone #6

Alien abuse (0,79€)

Alien abuse - 1 - menu principal Alien abuse - 2

Adaptation d'un jeu PC datant de 1996, Alien abuse est un jeu de plateformes où l'on parcourt un labyrinthe en massacrant des aliens. Les contrôles ne sont pas évidents à prendre en main : les monstres vont très vite et il est parfois difficile de diriger le tir sans se déplacer mais les points de sauvegarde sont fréquents, donc on avance progressivement (il faut des fois retenter un bon nombre de fois une zone avant de la passer).

Alien abuse - 3 Alien abuse - 4

iFighter Lite

Il s'agit là d'un Shoot'em up assez classique mais de bonne facture : aux commandes d'un petit avion vu du haut, il vous faut tuer le maximum d'ennemis sans vous-même vous faire détruire. La musique est sympa et les graphismes propres qui rappellent beaucoup les jeux de ce genre qu'on avait sur Amiga dans l'temps (c'est quand on commence à utiliser ce genre d'expressions qu'on se rend compte qu'on vieillit :D).

iFighter - 1 - écran d'accueil iFighter - 2 - écran de chargement iFighter - 3

Après une quinzaine de parties au moins, je n'ai toujours pas survécu jusqu'à la fin de la démo mais pour ceux qui arriveraient au bout, la version complète ne semble pas (pas encore ?) disponible. Donc ne vous laissez pas avoir par l'application homonyme à 3,99€ qui n'a rien à voir ;)

Strategery Lite

Ce petit jeu de stratégie n'est pas sans rappeler le jeu en flash Dicewars dont il reprend le principe : chaque joueur contrôle différentes zones et dispose dessus d'un certain nombre de dés. Il peut attaquer les zones voisines avec ses dés. Dans ce cas les deux joueurs lancent l'ensemble des dés et le plus haut total l'emporte. Le but étant bien entendu de conquérir toutes les zones du jeu.

Strategery - 1 - menu principal Strategery - 2

Cette version se démarque de son homologue en flash par plusieurs points de vue : des graphismes toujours simples mais plus agréables (à mon goût du moins) le jeu est plus paramétrable, notamment sur la taille de la carte et on n'a pas ici le principe du "tout ou rien" : lors d'un combat chaque camp perd plus ou moins de troupes selon l'écart de total, alors que dans Dicewars, le gagnant ne perd rien.

Strategery - 3 Strategery - 4 - les options

Pour ceux qui, comme moi, y auront pris goût, la version complète (avec plus de paramétrages disponibles et des cartes plus grandes) ne vous coutera que 1,59€.


Quelques trucs sur l’iPod Touch #2

Faire une capture d'écran

C'est simple : il suffit de cliquer simultanément sur le bouton du menu (le rond en bas) et le bouton d'allumage (en haut sur la tranche) pour déclencher un petit flash signalant qu'une nouvelle capture d'écran vient d'être envoyée dans l'application de gestion des photos.

Placer le curseur dans un texte

Pas évident de placer précisément le curseur dans le texte d'une application comme Notes ou Mail. Du moins quand on ne connait pas ce petit truc : en gardant le doigt immobile sur l'écran pendant quelques secondes, une loupe apparait au-dessus du doigt permettant d'effectuer le positionnement.

iPod Touch/iPhone - loupe
iPod Touch/iPhone - loupe

L'air de rien ils ont prévu pas mal de choses et une fois qu'on le sait on se demande pourquoi on n'a pas pensé à essayer plus tôt tellement c'est évident :p

Savoir où mène un lien dans Safari

Sur l'iPod, pas de barre d'état pour voir où mène un lien avant de cliquer dessus... pourtant, dans certains cas c'est intéressant de pouvoir vérifier qu'on va bien là où on croit aller. Pour cela il suffit de maintenir quelques secondes le doigt sur le lien en question, une infobulle apparait alors avec l'URL du lien. Ensuite, deux solutions : relever le doigt pour suivre le lien, glisser le doigt hors du lien pour fermer l'infobulle sans suivre le lien.


Quelques trucs sur Javascript #1

Packed VS minified

Il existe deux méthodes couramment utilisée pour alléger les javascripts :

  • En les "compactant" : le code est alors ré-écrit en une version nettement plus compacte et surtout nettement moins lisible.
  • En utilisant jSmin : là le script est juste allégé de tous ses commentaires et espaces superflus. Il est moins compact mais reste cependant relativement lisible.

En général la version "compactée" est environ un tiers moins lourde que la version "minifiée" mais en contrepartie, l'exécution est presque deux fois plus lente. Et donc le ressenti côté utilisateur est nettement dégradé dans la version compactée. La version minifiée est donc en général préférable, d'autant que pour le debug c'est nettement plus pratique !

La fonction parseInt

Cette fonction permet, comme son nom l'indique, de convertir une chaine en entier. A priori rien de bien compliqué. Son deuxième paramètre permet de spécifier la base dans laquelle on se place. Rien de compliqué non plus.

Là où ça peut un peu plus surprendre si on lit la doc trop rapidement, c'est qu'en l'absence du deuxième paramètre, si la chaine commence par un zéro, la conversion se fait en octale, soit en base huit et non dix. Cette fonctionnalité semble être dépréciée mais elle est toujours prise en compte.

On a donc les résultats suivants :

  • parseInt("000") -> 0
  • parseInt("001") -> 1
  • parseInt("002") -> 2
  • parseInt("003") -> 3
  • parseInt("004") -> 4
  • parseInt("005") -> 5
  • parseInt("006") -> 6
  • parseInt("007") -> 7
  • parseInt("008") -> 0
  • parseInt("009") -> 0
  • parseInt("010") -> 8
  • parseInt("011") -> 9
  • ...

La console d'erreur de Firefox

Dans un contexte d'extension (ou au moins dans un contexte signé il me semble), il est possible d'écrire des messages dans la console d'erreur de Firefox via JavaScript.

Par contre (du moins dans certaines versions), tenter de loguer un message vide fait planter la console. Elle continue à accumuler les message mais il faut la fermer et la rouvrir pour les voir. Chose très agaçante quand on ne sait pas d'où ça vient...


Quelques trucs sur l'iPod Touch #1

Quelques petits trucs que je n'ai pas trouvé tout de suite sur mon iPod Touch (et qui valent aussi pour l'iPhone).

Ré-organiser les applications

Pour activer le mode permettant de réorganiser les applications, il suffit de maintenir le doigt posé sur l'une d'elles durant quelques secondes. Les icônes se mettent alors à "flotter" et sont déplaçables par simple glissade. On peut également les déplacer d'une page à l'autre mais c'est assez laborieux... Dans ce mode on peut aussi supprimer les applications télécharger, par contre impossible de supprimer ou ne serait-ce que masquer les applications présentes par défaut.

Stopper la musique ou changer de morceau alors que l'iPod est verrouillé

C'est dans le manuel utilisateur, mais qui lis les manuels utilisateurs jusqu'au bout ? Pas moi en général...

Donc il est possible d'accéder aux fonctions lecture, pause, piste suivante et piste précédente alors que l'iPod est verrouillé. Pour faire apparaitre ces options, il suffit de double-cliquer sur le bouton de menu principal. Voilà qui m'évitera de retaper mon code à chaque fois ^^

Des caractères cachés !

Un truc que je viens d'apprendre aujourd'hui, ce qui me permet de clôturer cet article avec un troisième point et donc de le publier (les deux autres étant en attente depuis bien longtemps) : certains caractères apparemment absents du clavier de l'iPod Touch et de l'iPhone sont en fait disponibles en maintenant le doigt quelques secondes sur un caractère "approchant".

Par exemple les accents sont accessibles sur les lettres associées (a,e, i, o, u), mais on trouve également la cédille sur le c, les signes inversés (pour l'espagnol notamment) sur les points d'interrogation et d'exclamation, d'autres symboles monétaires sur l'€... Bref, pas mal de choses qui peuvent manquer si on ne connait pas le truc.


Quelques jeux pour iPod Touch/iPhone #5

Jelly car

Dans ce jeu on dirige une petite voiture ayant la consistance de la gelée. Le but du jeu est de la conduire le plus rapidement possible vers le point rouge symbolisant l'objectif. Pour cela on peut la faire avancer vers la gauche ou la droite, incliner l'iPod dans un sens ou dans l'autre pour la faire pivoter et cliquer dessus pour la faire grandir (pour une durée limitée).

Jelly car - 1 Jelly car - 2 Jelly car - 3

Un petit jeu bien sympathique composé de 28 tableaux répartis sur trois niveaux de difficulté.

Cubic man Lite

Il s'agit là d'un jeu de réflexion où l'on doit déplacer un parallélépipède d'un point à un autre, sans le faire tomber en dehors des dalles. Pour cela on peut le renverser en haut, en bas, à droite ou à gauche.

Cubic man - 1 Cubic man - 2 Cubic man - 3

Dans cette version gratuite il n'y a que dix niveaux, ce qui est un peu peu, mais ça reste intéressant à essayer.

Tower Bloxx Deluxe 3D Free

Le but de ce jeu, disponible également en version Flash jouable sur n'importe quel ordinateur est d'empiler des blocs pour former des immeubles. Plus la tour devient haute, plus elle bouge et plus il est difficile d'empiler les blocs de façon bien alignée (ce qui rapporte bien entendu plus de points).

Tower bloxx - 1 Tower bloxx - 2 Tower bloxx - 3

La version gratuite contient un tutoriel, un mode entrainement et un mode à deux joueurs simultané sur un même iPod. Ce dernier mode ne doit pas forcément être très facile à jouer vue la taille de l'appareil, mais pourquoi pas...


L'AppStore, impressions après quelques mois d'utilisation

Ça fait maintenant un peu plus de deux mois que j'ai mon iPod Touch et donc que j'utilise l'AppStore d'Apple pour télécharger mes applications. Un temps largement suffisant pour relever bon nombre d'imperfections, voire de gros défauts à ce système qui pour l'instant n'a pas de concurrence possible (Apple n'autorisant que ce seul et unique mode de téléchargement).

La recherche d'applications

Ce point là est assez pauvre : on peut rechercher par mot-clé et c'est bien quand on a un besoin précis, en gros quand on cherche une application utilitaire. Mais quand veut juste flâner un peu pour trouver des applications intéressantes, là c'est nettement moins pratique.

Il y a bien les "classements" mais ils me semblent assez bizarrement organisés : les top 100 ne bougent pas tellement et ne sont réellement intéressant que quand on vient pour la première fois ou alors rarement. Les listes de nouveautés sont assez bizarrement agencées avec des applis des 3 ou 4 derniers mois dans une liste de moins de 4 entrées pour les jeux : puis mystérieusement d'une visite à l'autre, certaines applis disparaissent remplacées par d'autres qui ne sont pas forcément plus récentes... Bref, c'est peu compréhensible et pas très fonctionnel si on veut régulièrement passer voir ce qu'il y a de nouveau.

Les commentaires

Là aussi c'est très peu fonctionnel on a uniquement des commentaires, avec systématiquement une note.

On n'est pas gâtés entre les innombrables utilisateurs qui commentent "Super appli !" puis mettent une seule étoile (l'erreur est humaine mais quand on voit ça pour une appli sur deux ou trois... on se dit que peut être l'interface de saisie de la note est à revoir) et les commentaires dénotant d'un QI proche de 0 du style "Sur iPod mais pas pour Mac ! Incroyable, ce truc ne marche qu'avec les PC sous ouin-dose => corbeille" (avec une seule étoile du coup), pour une appli dont la première phrase du descriptif indique "allows you to remote control your home theater PC running Windows"... forcément, faut lire le descriptif, hein. Pourquoi pas foutre aussi une seule étoile à une appli de dictionnaire avec pour commentaire "Wesh tro nul y fai pas le brui du sabre lazer !!! poubelle !!!!!" ?

Mais outre ces problèmes liés aux utilisateurs et sur lesquels Apple ne peut pas forcément faire grand-chose, il y en a d'autres qui sont nettement plus de son ressort, comme le fait que l'AppStore propose des commentaires mais absolument pas de support technique, FAQ ou autres. Du coup beaucoup d'utilisateurs se contentent de poster un commentaire à 1 étoile pour demander comment faire tel ou tel truc... C'est con, ça pourrit grandement la lisibilité de la chose.

On pourrait objecter que c'est une boutique et que la Fnac ou Amazon ne propose pas de section support sur les logiciels qu'ils vendent, ce qui est tout à fait vrai. Sauf que là il y a une différence de taille : l'AppStore est un canal de diffusion exclusif. Et ça, ça change tout. En effet, il est là en tant qu'unique interface entre l'utilisateur et une bonne part des développeurs d'applications : c'est un peu plus qu'une boutique. Certes, il n'est pas rare que les développeurs fassent également un site par ailleurs pour parler de leur appli (et heureusement) mais c'est quand même par l'AppStore que beaucoup de gens trouvent leurs applications et les achètent.

Dans ce contexte où Apple se pose en point central, on pourrait attendre d'elle qu'elle mette en place ce qu'il faut pour que les choses se déroulent correctement. Mais ce n'est pas trop le cas...

Conclusion

Bref au final, si je suis très satisfait de mon iPod (même si comme le prévoyait Nikohk dans un commentaire, effectivement, je commence à lorgner un peu du côté de l'iPhone, parce que le Wifi c'est quand même très limité... mais j'attendrai au moins la sortie du prochain modèle pour me poser sérieusement la question), concernant l'AppStore, je suis nettement moins enthousiaste.


Quelques jeux pour iPod Touch/iPhone #4

Diamond hunter

Il s'agit d'un jeu de réflexion où il faut placer les bons objets aux bon endroit pour ramasser toutes les "étoiles" avec le diamant avant de le faire atterrir sur son socle. Il y a vingt niveaux et si les premiers sont assez simple, ça se complique assez rapidement ^^ Bon, 20 niveaux ça reste peu mais vu que le jeu est gratuit, on ne va pas se plaindre...

Diamond Hunter - 1 Diamond Hunter - 2

Touch Physics Lite

Dans le même style, Touch Pysics consiste à dessiner des formes qui interagissent avec une petite balle, le but étant de déplacer ladite balle jusqu'à l'étoile. La version gratuite est très courte (5 niveaux si je me souviens bien) mais vaut le coup d'œil ne serait-ce que pour le graphisme assez original.

Touch Physics - 1 Touch Physics - 2

MotionX Dice

Il s'agit là d'un simulateur de dés à six faces de très bonne facture permettant de lancer un a six dés à là fois, en sélectionnant leur apparence ainsi que l'arrière plan parmi une panoplie de visuels relativement variée. Idéal quand on a perdu les dés d'un jeu de société... ou bien quand on doit faire un chiffrage en vitesse :we:

MotionX Dice - 1 MotionX Dice - 2 MotionX Dice - 3

Quelques trucs sur PHP #2

Une deuxième série de petits trucs sur PHP...

Page blanche

Plus j'utilise PHP, plus je me rends compte qu'il y a quand même des trucs bien foireux dedans... Notamment ceci : lorsqu'une classe contient deux définitions de la même méthode (du moins dans certains cas, j'ai pas trop approfondi pour voir si c'est vraiment systématique), on n'obtient pas d'exception, ni même la traditionnelle "fatal error" non-catchable et sans trace, mais bel et bien une page blanche sans aucune explication \o/ J'imagine que derrière PHP doit mourir lamentablement sur un "Segmentation fault"... Bref, quand vous obtenez une page blanche, pensez à vérifier si vous n'avez pas raté un copier/coller quelque part...

Duplication de tableaux

Après avoir tenté en vain de dupliquer un tableau avec le mot-clé clone (qui retourne null), j'ai cherché un peu et je suis tombé sur cet article. Donc apparemment une simple affectation suffit à dupliquer un tableau (ce qui explique au passage certaines choses concernant la quantité astronomique de mémoire qu'arrive à bouffer PHP dans certains cas) ! Comme quoi même en utilisant un langage pendant des années, on peut passer à côté de certains trucs de base...

L'instruction continue

Je parlais il y a quelque temps de l'instruction break qui admet un paramètre permettant de sortir de plusieurs boucles imbriquées d'un coup, eh bien l'instruction continue se comporte de la même façon.

Je n'avais pas insisté dessus à l'époque (parce que dans le cas du break, c'est évident) mais dans les deux cas, un switch est considéré comme une boucle. Donc si vous êtes dans un switch contenu dans une boucle et que vous voulez passer à la prochaine itération de la boucle il faut appeler un continue 2;.

Pour plus de détails sur l'instruction continue, rendez-vous sur le manuel officiel de PHP.


Quelques jeux pour iPod Touch/iPhone #3

Lux Touch

Lux Touch

Un clone du Risk plutôt agréable. Avec des parties courtes : entre 5 et 10 minutes environ. Un peu facile peut-être : sur les quelques parties que j'ai faites, je n'en ai perdu aucune... Mais ça reste distrayant quand on a quelques minutes à occuper ^^

Apparemment l'éditeur propose également des versions PC et Mac avec différentes variantes (la version iPod gratuite ne propose que la carte du monde et pas de sauvegarde de la partie en cours) mais ça me semble un peu cher (plus de 10$ à par jeu)...

Alien Breaker Lite

Un casse brique sympathique proposant une bonne dose d'options différentes et surtout une bonne exploitation de l'accéléromètre. Pas facile à diriger au début puisqu'il faut incliner l'iPod vers la gauche ou la droite pour se déplacer, on prend assez vite les choses en mains.

Alien Breaker - 1 Alien Breaker - 2 Alien Breaker - 3

Deux reproches cependant :

  • dans le bus, l'accéléromètre c'est décidément pas cool comme interface
  • comme on touche assez peu l'écran (uniquement pour lâcher la balle quand on a l'aimant ou qu'on vient de perdre une vie) il lui arrive par moment de s'assombrir, prenant ça pour une inactivité...

Bomber Online (0,79€)

Il s'agit là du deuxième jeu payant que j'ai testé sur l'iPod Touch, mais on ne peut pas dire qu'à ce prix là je me sois ruiné :p Ce clone du classique Bomberman a pour lui d'être nettement moins cher que son concurrent Bomberman Touch et en plus il est en français, ce qui n'est de loin pas le cas de tous les jeux du marché.

Bomber Online - 1 Bomber Online - 2 Bomber Online - 3

On a le choix entre deux mode de contrôles : soit via des flèches en bas à gauche (comme sur un joypad), soit en déplaçant le doigt sur l'écran. Le jeu propose un mode "aventure" solo (bon là le scénario est la juste pour faire joli...) et un mode multi-joueur (que je n'ai pas testé vu que j'ai rarement le WiFi à portée quand je joue. Mais pour les possesseurs d'iPhone, ça doit surement être sympa ^^


Plugin Post-lister pour Wordpress - version 0.4

Je viens de taguer la version 0.4 de mon plugin Post-lister avec pas mal de petites nouveautés.

La première et la plus importante fait suite à la demande d'Adrian et ajoute de deux nouveaux paramètres permettant d'afficher le contenu des articles et commentaires listés ainsi que l'avatar de l'auteur.

On a ensuite plusieurs améliorations plus mineures :

  • suite à la question de Sandrine, j'ai mis à jour la documentation en listant les options de tris propres à chaque liste et pour faciliter la configuration des widgets, j'ai remplacé le champ texte par un menu déroulant, ce qui évite d'avoir à retenir lesdits paramètres.
  • comme je trouvais les formulaires de configuration des widets un peu hauts, je les ai tous les deux découpés en deux colonnes ce qui évite d'avoir à "scroller" pour en voir le bout.
  • j'ai également complété les liens vers les commentaires dans les listes de commentaires pour qu'ils pointent sur le commentaire en lui-même (via l'ancre prévue à cet effet dans les thèmes bien faits) plutôt que bêtement vers le haut de la page de l'article associé.
  • j'ai enfin corrigé un bug qui faisait que si l'on cliquait sur le bouton "annuler" du formulaire de l'un des widgets puis qu'on enregistrait les modifications, le widget perdait l'ensemble de ses configurations.

Par ailleurs j'ai également un peu revu la doc et rajouté un fichier readme en français.

Voilà voilà, c'est tout pour cette mise à jour mais ça me semble déjà pas mal ^^


Un peu plus de place...

Cela faisait un bout de temps que je trouvais le design de ce site un peu trop étroit, ce qui engendrait en particulier des pages beaucoup trop hautes pour les articles un peu longs. De plus, à l'origine je l'avais fait pour qu'il s'affiche parfaitement avec une résolution 800x600 mais ce n'est plus forcément d'actualité : d'après Google Analytics, seules 8 visites (soit 1.24%) ont été faites avec cette résolution, ce qui est bien peu.

Faire un design flexible serait pas mal mais ça interdit de mettre une bannière très travaillée en haut. De plus, sur un écran très large, ça donne des lignes vraiment trop longues (un écran panoramique c'est bien pour un film, vu que c'est le format utilisé et pour un ordinateur portable pour réduire l'encombrement mais dans tous les autres cas, ça me semble plus emmerdant qu'autre chose...).

En conséquence, j'ai retouché un peu le thème en sortant la "sidebar" : la partie principale reste toujours consultable sans problème en 800x600 et l'ensemble s'affiche entièrement en 1024x768, donc ça me semble un bon compromis. Et on évite de "scroller" inutilement sur les articles longs ^^

Avant
Avant
Après
Après

En tous cas, c'est fou le temps qu'on peut perdre sur des CSS... et une fois qu'on croit en être sorti, on regarde ce que ça donne sous IE et c'est reparti pour un tour :tired: Vivement que cette brave merde d'IE6 disparaisse du marché... Bon en même temps, je pourrais décider de laisser tomber la compatibilité avec cette antiquité, d'autant que seul 25% des visites sur ce site se font avec IE (toutes versions confondues, dont un tiers avec IE6) mais j'essaie de faire en sorte d'avoir quand même un truc regardable et rien que ça c'est pas toujours évident.