0

Flickr Uploader

Depuis que Flickr propose 1To de stockage gratuit, j’y met mes photos.

J’ai un vrai appareil photo reflex qui fait de magnifiques photos, mais il m’arrive aussi souvent de prendre des photos avec mon téléphone (un Samsung Galaxy S3) et ça me gonflait profondément d’envoyer les photos sur mon pc pour, ensuite, les envoyer sur Flickr. Du coup, je me suis mis à la recherche d’une application qui permet d’uploader automatiquement les photos et cette application existe : c’est Flickr Uploader.

Cette application est aussi simple d’utilisation qu’efficace. Vous choisissez les répertoires à surveiller et les albums de destinations. ET C’EST TOUT ! L’application fait tous le reste pour vous. Elle ne consomme rien comme batterie et vous permet d’avoir toujours les derniers clichés de votre téléphone sur votre compte Flickr. Que demandez de plus ?

0

Atipik-Hoa-WebSocket-Bundle

atiLa société Atipik, dans laquelle je travaille depuis maintenant 6 mois, vient de publier un nouveau Bundle Symfony2 qui permettra à chacun de développer rapidement un serveur WebSocket ou de dialoguer avec un tel serveur grâce à un client WebSocket.

Ce bundle s’appuie sur les excellentes bibliothèques Hoa\WebSocket\Server et Hoa\WebSocket\Client. (D’ailleurs, d’une manière générale, allez jeter un coup d’oeil au projet Hoa !)

Il est disponible dès à présent sur le github d’Atipik et sur packagist en utilisant composer.

N’hésitez pas à contribuer au bundle, à remonter tout ce qui vous parait perfectible, à signaler les bugs et à proposer vos patchs !

1

La 4G arrive !

4GLa société qui m’emploie depuis avril me fournit un forfait mobile illimité 3G chez Bouygues Telecom dont je suis totalement satisfait et j’ai appris que nous allons très prochainement migrer vers un forfait illimité 4G.

Mais au fait, c’est quoi la 4G ?

Ce n’est ni plus ni moins que la 4ème génération de standard de téléphonie mobile, c’est à dire la façon dont les téléphones communiquent entre eux d’une part et avec internet d’autre part.

Pour rappel, tout a commencé avec ce qu’on appela par la suite la 1G au début des années 80 puis la 2G au début des années 90. Ces 2 technologies ne permettaient que des échanges de type voix.

À partir de la fin des années 90, les technologies GPRS puis EDGE permettent enfin aux possesseurs de téléphones mobiles d’avoir un forfait data mais cela reste finalement assez anecdotique, la principale utilité étant l’accès aux mails car les débits sont assez faibles: environ 6 à 7ko/s.

Au début des années 2000, la 3G fait sa révolution et amène internet dans les téléphones qui sont devenus intelligents: les smartphones. Apple inonde le marché d’iPhone dès 2007 alors qu’Android arrive en 2008 grâce au HTC G1/Dream. Les débits sont maintenant d’environ 60ko/s alors que la 3G+, le H+ et enfin le H+ dual carrier font monter les débits à respectivement 400ko/s, 600ko/s puis 1.2Mo/s ! En ville, on s’approche d’une bonne connexion ADSL.

Alors ? À quoi peut-on s’attendre avec le réseau 4G ?

Et bien, déjà il faut savoir qu’à peine lancée en Europe, il existe 2 normes 4G : la LTE et la LTE-Advanced.

La norme LTE nous promet des débits de 4.7Mo/s. Même avec ma fibre, je n’ai pas autant de débit !

Quant à la LTE-Advanced, prévoyez 3 fois plus !

Évidemment, il faut des téléphones compatibles avec la 4G.

Si vous avez un iPhone 5, il est compatible 4G LTE uniquement chez Bouygues depuis le 1er octobre.

La boutique Bouygues propose d’ailleurs pas moins de 65 téléphones. Et vu que mon patron m’a dit qu’il allait renouveler la flotte de téléphone… je me prendrais bien un Samsung Galaxy S4. À moins que le Samsung Galaxy Note III sorte d’ici là :D

0

De l’intérêt des tests

Étant donné que Atipik, la société qui m’emploie, recrute, je suis amené à faire passer des entretiens d’embauches. Parmi la multitude de questions posées et de points abordés, je ne peux m’empêcher d’évoquer la place des tests dans le travail du postulant, étant moi-même le principal rédacteur de la documentation française d’atoum, un contributeur modeste, un utilisateur quotidien et présent tous les jours (ouvrés) sur le chan ##atoum (oui, 2 « # ») du serveur IRC Freenode. La grande majorité m’indique qu’ils ont entendu parler des tests. Ça me fait toujours penser à une lointaine légende, un monde imaginaire qu’on évoque au coin du feu. Ils continuent presque tous, en disant que c’est en haut de leurs TODO listes et qu’ils vont s’y mettre c’est promis. Et à la question fatidique « mais pourquoi ne pas en avoir déjà fait ? », une réponse vient immédiatement et systématiquement : « pas le temps ».

Soyons clairs, je ne suis pas né avec un manuel « le test unitaire et fonctionnel pour les nuls » dans les mains et je n’ai clairement pas fait des tests toute ma vie. Au début, dans le monde PHP, il n’y avait que (l’horrible) PHPUnit et son écriture d’un autre temps (mais malheureusement répandue). Les tests étaient longs, fastidieux, pénibles et si je pouvais ne pas les faire, ma vie était meilleure. Puis mageekguy est arrivé avec son atoum, un framework de test unitaire moderne, simple et intuitif pour PHP 5.3+ et tout a changé dans ma vie de développeur.

Mais revenons à cet argument du temps. Le test fait-il vraiment perdre du temps ?

Au début, il faut changer ses habitudes et apprendre un (plusieurs) nouveau(x) framework(s). N’est-ce pas ce que l’on fait tout le temps en informatique ? La découverte d’une nouvelle technologie n’est-elle pas toujours accompagnée d’un temps d’apprentissage et de remise en question de nos connaissances ? Nous pouvons donc ignorer ce « temps perdu » puisqu’il est inhérent à toute nouvelle technologie et non aux tests en particulier.

Alors c’est l’écriture de tests qui ferait perdre du temps. Et à première vue, ça paraîtrait logique. Le temps que l’on met à écrire une ligne de test, on aurait pu le passer à écrire une ligne de code. Du moins, si vous estimez que les tests ne font pas partie de votre travail de développeur. Mais admettons. Sauf que c’est oublier que l’écriture de tests, particulièrement lorsqu’il dirige le développement comme lorsque l’on pratique le TDD ou le BDD (je vous laisse le soin de lire cet article qui compare le TDD au BDD et qui vous permettra de comprendre que ce n’est ni plus ni moins que la même chose), permet de mieux penser son code et fait, très souvent, gagner du temps plus qu’il n’en fait perdre. En revanche, c’est difficilement quantifiable et ça dépend également du niveau. Un débutant mettra plus de temps qu’une personne habituée à l’écriture des tests.

Puisqu’on ne peut pas vraiment quantifier le temps gagné, les tests ne servent-ils donc à rien ?

Penchons-nous quelques instants sur notre projet. Nous l’avons commencé il y a plusieurs mois, plusieurs années peut-être et, même en admettant que nous ayons écrit chaque ligne de chaque fichier de ce projet, il est totalement illusoire de penser qu’on en maîtrise parfaitement chaque fonction, en tout cas, pas au point de savoir prédire quelles sont les retombées de ce qu’on s’apprête à modifier. Par expérience, c’est toujours dans la partie du code la plus improbable, la plus éloignée de ce que vous venez de modifier que le bug se situera. Encore un coup de la loi de Murphy.

Et si, finalement, c’était dans ces moments-là que le temps gagné était le plus important ? Je fais ma modification, je lance les tests, je vois que ça plante dans tel fichier, je corrige, je relance les tests, tout est au vert et je peux mettre en production l’esprit tranquille.

Si vous ne voyez le test que dans le présent, alors vous pouvez le ranger à côté de tout un tas de méthodes de travail et d’aide au développement. C’est intéressant à utiliser, mais on peut raisonnablement se poser la question du taux efforts/résultats. En revanche, si vous vous projetez dans le futur et que vous voyez les tests comme une multitude de super héros qui vous accompagnent durant toute la vie de votre projet et qui sont les garants de la fiabilité de votre code, alors vous comprenez tout de suite que le test n’est pas une possibilité, mais une nécessité. Ce sont vos tests qui, demain, vont vous sauvez lorsque, en modifiant une méthode anodine dans une classe perdue au fond de votre projet, vous laisserez passer un bug monstrueux qui interdit à chacun de se connecter à votre site ou pire, qui permet d’accéder à la totalité de votre catalogue sans l’acheter.

Tout ce « temps perdu » vous en fera gagner tellement lors de l’écriture et surtout lors des futures modifications que vous ne voudrez plus revenir en arrière une fois que vous aurez goutté aux tests. Sans parler de la sérénité que vous aurez à faire des modifications, même profondes.

13

Désimlocker son Samsung Galaxy S3

galaxy-s3-note-2-permanent-unlockPour commencer, voici une liste des applications que j’ai utilisées:

  • ES Explorateur de Fichiers, pour manipuler les fichiers et les répertoires (pensez à activer les fonctionnalités root dans les paramètres) ;
  • Hex Editor, pour modifier le fichier nv_data.bin

Les manipulations suivantes seront faites avec ces logiciels, mais il suffit de les adapter aux logiciels que vous souhaitez utiliser.

Voilà, maintenant que vous avez ce qu’il faut, passons aux choses sérieuses:

  1. Rootez votre téléphone
    1. Cherchez sur internet pour trouver un tuto.
    2. En voilà un qui semble fonctionner: http://www.planetetactile.com/viewtopic.php?f=169&t=933)
  2. Lancez ES Explorateur et faites un backup du répertoire /efs (on sait jamais)
    1. Appui long sur le répertoire puis « copier »
    2. Allez dans /sdcard et « coller » (en haut  à droite)
  3. Modifiez les droits du fichier /efs/nv_data.bin pour ajouter les droits de lecture et d’écrire au groupe et aux autres
    1. Appui long sur le fichier puis « propriétés »
    2. Appuyez sur « Changement » et cochez les cases « lecture » et « écriture » pour la ligne « autre »
    3. Appuyez sur « ok » pour sortir de la fenêtre des droits du fichier
    4. Appuyez sur « ok » pour sortir des propriétés du fichier
  4. Modifier le fichier /efs/nv_data.bin
    1. Appuyez sur le fichier puis « Texte »
    2. Choisissez « Hex Editor » dans la liste des programmes pour éditer le fichier
    3. Allez à l’adresse 181469
      1. Appuyez sur le bouton à en bas à droite (une flèche vers un point)
      2. Dans la fenêtre qui s’ouvre tapez « 181469″
      3. Appuyez sur « ok »
    4. Sur la première ligne il y a une série de « ff » puis un « 01″. Cliquez sur ce « 01″
    5. Une fenêtre s’ouvre avec « 01″. Remplacez par « 00″ puis « ok »
    6. Appuyez sur l’icone de la disquette en bas pour sauvegarder le fichier
    7. Sortez de Hex Editor en appuyant sur le bouton « retour » de votre téléphone.
  5. Faites une copie du fichier /efs/nv_data.bin dans le répertoire /sdcard (voir l’étape 2)
  6. Remettez les droits du fichier /efs/nv_data.bin comme à l’origine c’est à dire en ne laissant que les cases cochées sur la line « propriétaire » (voir l’étape 3)
  7. Redémarrez votre téléphone
  8. Une fois redémarré, lancez ES Explorateur pour récupérer le md5 du fichier
    1. Appuyez sur le fichier /efs/nv.log puis « Texte »
    2. Choisissez « ES Éditeur de notes » dans la liste des programmes pour éditer le fichier
    3. Descendez tout en bas du fichier
    4. L’avant dernière ligne devrait contenir quelque chose comme ça « MD5 fail. original md5 ’1234567890abcdef’ computed md5 ’9876543210fedcba’
    5. Copiez le 2ème md5 (par exemple, dans l’exemple précédent, c’est « 9876543210fedcba »)
      1. Appui long sur le md5
      2. Une fois le md5 sélectionné, appuyez en haut à droite sur le bouton « copier » (2 feuilles l’une sur l’autre)
    6. Sortez du fichier
  9. Changez les droits du fichier /efs/nv_data.bin.md5 (voir l’étape 3)
  10. Éditez le fichier /efs/nv_data.bin.md5 et remplacez l’ancien md5 par celui que vous venez de copier
    1. Voir l’étape 8
    2. Pour coller, faites un appui long puis appuyez sur « coller »
    3. J’ai remarqué qu’il y a un retour à la ligne après le md5 dans le fichier original. J’ai l’impression qu’il est important alors faites attention à ce qu’il y ait un retour à la ligne après le checksum
  11. Remettez les droits du fichier /efs/nv_data.bin.md5 comme à l’origine c’est à dire en ne laissant que les cases cochées sur la line « propriétaire » (voir l’étape 3)
  12. Supprimez le fichier /efs/nv_data.bin
    1. Appui long sur le fichier
    2. Choisissez « Supprimer » puis « ok »
  13. Copiez le fichier /sdcard/nv_data.bin vers /efs (voir l’étape 2)
  14. Changez les droits du fichier /efs/nv_data.bin comme dans l’étape 6
  15. Redémarrez une nouvelle fois votre téléphone.
  16. Vérifiez que c’est désimlocké
    1. Dans la partie « téléphone » (comme si vous appeliez quelqu’un !), tapez *#7465625#
    2. Dans la fenêtre qui apparait, vous devriez avoir « Network Lock: OFF »
2

Écouter vos mp3 avec Spotify sur Ubuntu 11.10

spotify_linux_promoDepuis le passage à Ubuntu 11.10, impossible de lire ses fichiers mp3 locaux. Spotify nous gratifie d’un joli message nous indiquant qu’il y a une erreur avec le décodeur audio.

Attention, même si ce sont des paquets issues des dépôts officiels d’Ubuntu, le fait d’installer des paquets des paquets d’une ancienne version n’est pas supporté par Ubuntu. Vous êtes seul responsable de vos agissements, ne venez pas vous plaindre si vous avez tué un manchot sans défense (ben oui, ce sont les morses qui ont des défenses).

Pour régler ce problème, télécharger les 3 fichiers suivants:

OS 32bits:

wget https://launchpad.net/~ubuntu-security/+archive/ppa/+build/2789249/+files/libavcodec52_0.6.2-1ubuntu1.1_i386.deb
wget https://launchpad.net/~ubuntu-security/+archive/ppa/+build/2789249/+files/libavformat52_0.6.2-1ubuntu1.1_i386.deb
wget https://launchpad.net/~ubuntu-security/+archive/ppa/+build/2789249/+files/libavutil50_0.6.2-1ubuntu1.1_i386.deb

OS 64bits:

wget https://launchpad.net/~ubuntu-security/+archive/ppa/+build/2789247/+files/libavutil50_0.6.2-1ubuntu1.1_amd64.deb
wget https://launchpad.net/~ubuntu-security/+archive/ppa/+build/2789247/+files/libavcodec52_0.6.2-1ubuntu1.1_amd64.deb
wget https://launchpad.net/~ubuntu-security/+archive/ppa/+build/2789247/+files/libavformat52_0.6.2-1ubuntu1.1_amd64.deb

Ensuite, installez-les:
sudo dpkg -i libav*

Et relancez Spotify :)

0

Une (des nombreuses) bizarrerie de PHP

phpJe viens de tomber sur un « bug » qui m’a paru assez étrange au premier abord, mais qui, après réflexion est tout a fait « normal ».

Dans mon code, je testais l’égalité entre 2 chaines de caractères ("0000000123" et "000123") et ça me retournait true alors que j’attendais false.

En réfléchissant 2 minutes, voici ce que php effectue:

  1. est-ce que la chaine A est identique à la chaine B: non
  2. est-ce qu’en castant la chaine A et/ou B, j’arrive à trouver une égalité: oui

En effet, en castant les 2 chaines en entier, on obtient 123 et l’égalité est trouvée.

Comment faire alors pour que PHP retourne false ? En utilisant l’opérateur === qui teste non seulement l’égalité mais vérifie également qu’ils sont de même type. En réalité, ça teste l’égalité sans faire de cast. En conséquence de quoi, == est très légèrement plus lent que ===. En d’autres termes, si vous codez bien connaissez exactement le type de vos données, préférez === car il est plus rapide.

50

Fire in the hole !

Casque, gilet pare-balles, maquillage noir sur le visage pour se camoufler. La guerre a commencé. Tous aux abris.

Et si les noms des communautés nous indiquaient ce qu’elles ne sont pas ? Et si, comme la République Démocratique du Congo qui est tout sauf une démocratie, le monde du libre était tout sauf libre ?

Je rampe à travers les billets qui explosent à deux pas de moi. Il y a bien-sûr ceux qui visent l’ennemi, les anti-microsoft ou les anti-Apple. Je les vois lancer leurs grenades, elles explosent au loin. Ouf, je ne suis pas touché. Mais il y en a qui ne tirent pas au loin, mais entre nous.

Je ne comprends pas. Y a-t-il une guerre civile ou chacun taperait sur son voisin pour la seule raison qu’il ne porte pas le bon logo sur son t-shirt ?

Je me cache derrière un mur et entends des explosions proches. Le monde du libre ne laisse pas la liberté à chacun d’utiliser ce qu’il veut. Nom de Dieu, c’est donc ça. Le commandement du libriste serait donc « Tu dois utiliser un logiciel libre… qui me plait ».

Je vois un sniper sur un toit. Ce soldat-là est formé à tirer sur tout ce qui bouge un peu trop. Un logiciel a du succès ? Descendu. Une distribution est majoritaire ? Abattue. Rien ne doit sortir du lot. Le nivellement par le bas. Les services de renseignements l’aideront à trouver la faille: les rumeurs à très long terme (« Un jour Mark Shuttleworth rendra Ubuntu totalement propriétaire ! », c’est un génie quand j’y pense. Arriver à rendre une distribution GNU/Linux propriétaire, c’est quand même pas rien !), les trolls velus (« Toute façon, cette distribution, c’est un clickodrome, c’est pour les n00b ») et j’en passe et des meilleurs.

Mon Dieu, cette guerre est sans fin. Elle se nourrit des succès actuels et à venir. Lors de la sortie d’Ubuntu, cette distribution a été saluée unanimement et tout le monde se plaisait à citer son bug #1. Mais elle a pris trop d’importance, ce n’est pas bon pour les autres. Un peu comme si on ne parlait plus que de Lancelot du Lac en occultant tous les autres grands chevaliers. À coup sûr, on voudrait l’éliminer d’un bon coup de couteau dans le dos.

De derrière mon mur, j’entends une radio au loin qui crie à tue-tête ce qui ressemble fort à de la propagande: « Ubuntu a des armes de destructions massives ! Avec la grâce de Richard Stallman, nous allons régler ce problème. »

Je ne sais plus contre qui me battre et s’il faut que je me batte. Je croyais que notre ennemi commun était la privation des libertés (dont les logiciels propriétaires) or les gens se battent entre eux parce qu’ils ne supportent pas l’idée que les autres n’utilisent pas les mêmes logiciels et ne partagent pas exactement les mêmes idées.

Ce n’était pas l’idée de la liberté, du monde libre et du monde des logiciels libres que je m’en faisais.

Que faire? Attendre derrière mon mur que tout s’arrête ?.. si un jour ça s’arrête… Ou capituler et abandonner une distribution qui me plait, qui me convient juste parce que des groupes de plus en plus virulents s’en plaignent ? Pourquoi veut-on me forcer à quitter une distribution (de préférence pour la leur) alors que je ne force personne à utiliser la mienne ?

C’est décidé, je continue à ramper afin d’éviter les balles perdues et les grenades qui sifflent à mes oreilles… mais je lance cette bouteille à la mer, ce drapeau blanc de paix et de réconciliation. Peut-être trouvera-t-il un écho chez certaines personnes ? Peut-être arrivera-t-on à stopper cette guerre interne pour se consacrer sur ce qui ne va vraiment pas ? Peut-être arrivera-t-on à faire comprendre à ceux qui l’ignorent encore que les logiciels propriétaires ne sont pas bons pour leur libertés sans pour autant imposer le point d’entrée dans le monde du libre ?

0

Jimdo: créez votre site gratuitement et simplement

creer-son-site-avec-jimdoJ’ai été contacté pour tester le service jimdo. Voici comment il m’a été présenté:

Jimdo offre un service de qualité qui a déjà conquis plusieurs milliers d’utilisateurs à travers le monde. Ce site a été créé par un groupe de passionnés autour d’une philosophie simple: ouvrir l’accès aux outils web au plus grand nombre, qu’ils soient des « amateurs éclairés » ou non.

Allons-y testons !

L’inscription est simple. On choisi une adresse (totalement-geek.jimdo.com), on saisit son adresse mail et c’est parti. Seul bémol, impossible de choisir le sous-domaine totalement.geek, puisque ça n’accepte pas les « . »

Le site indique qu’un mail vient de m’être envoyé et qu’il faut que j’aille le lire. Malheureusement, il aura fallu que j’attende presque 5 minutes pour que gmail le reçoive… peut-être une surcharge passagère du serveur ?

Un mot de passe m’a été généré automatiquement. Le service étant destiné à des amateurs, cela me semble une très bonne chose. Ça évitera les mot de passe du genre azerty ou 123456.

Le thème par défaut est moche mais pro, mais après tout, tous les goûts sont dans la nature.

Le contenu par défaut invite l’utilisateur à se connecter. En revanche, une fois connecté, on est un peu perdu. Soit je ne suis pas doué, soit mon écran wide ne m’a pas aidé, mais il m’a fallu 2 bonnes minutes pour apercevoir une barre flottante sur la droite de l’écran qui sert d’administration. A partir de cette barre, vous pouvez modifier le contenu de votre site.

Commençons par changer le design qui ne me plait pas du tout. Il y a un certain nombre de template et pour les plus exigeant, on peut même taper directement dans le code html, éditer le css et ajouter des fichiers (comme des images par exemple). Bref ça conviendra aux amateurs qui n’auront qu’à cliquer sur le thème désiré ainsi qu’aux gens qui s’y connaissent un peu plus. Une fois le thème choisi, vous pouvez encore paramétrer la typo.

Après avoir fait joujou avec le design de votre site, vous aurez peut-être envie de le remplir, non ? Et bien la section suivante permet de créer un blog. Malgré le message suivant qui apparaissait systématiquement, j’ai pu créer un blog: « Un problème est survenu. L’action demandée a été annulée. Veuillez réessayer dans quelques minutes ». La création est très rapide et on vous invite d’ores et déjà à écrire votre premier article.

La création d’un article est atypique. Que ce soit sous dotclear ou wordpress, j’ai toujours eu l’habitude d’écrire dans un vaste textarea et de mettre plus ou moins en forme grâce à une barre d’outils. Ici, il vous faut ajouter des éléments: titre, texte, tableau, lien de téléchargement, un widget flickr ou twitter, une image, un article ou un catalogue, une vidéo youtube, bref énormément de choix. Une fois compris le fonctionnement, c’est assez puissant. Par contre, une fois créé mon premier article… rien ne dit s’il est enregistré ou non et rien n’indique comment en créer un 2ème… En fait, il faut re-cliquer sur blog dans la barre de droite pour avoir accès aux articles, les publier, en créer des nouveaux. A coté de mon article est écrit « Entwurf » ce qui veut dire « projet » en allemand. Comprenez par là que c’est un brouillon non publié et que toutes les traductions françaises ne sont pas encore en place. Pour publier un article il faut cliquer sur son titre et le passer en « Public ». Pas très user-friendly, un statut/bouton dans l’admin aurait peut-être été plus simple à appréhender.

La barre d’admin propose d’ajouter des amis. Je n’ai pas plus approfondi cette partie.

Vous pouvez lier automatiquement votre blog à votre compte twitter de telle sorte que chaque nouveau billet sera publié sur twitter. Une fonctionnalité qui en intéressera plus d’un.

Un bouton paramètre vous permet d’accéder à une quantité impressionnante de trucs en tout genre allant de la gestion des utilisateurs à la gestion de la boutique en passant par le moteur de recherche. Vous trouverez sans aucun doute votre bonheur là dedans.

Enfin, the last but not the least, vous avez accès à des statistiques détaillées que vous pouvez même  lier à Google Analytics.

En conclusion, jimdo est un outil qui ravira sans aucun doute un panel varié de personnes. Pour un simple blog ou une boutique en ligne (ou bien encore un mélange des deux) vous serez comblé par ce service, malgré quelques imperfections.

5

Joyeux anniversaire Google Chrome

google-chromeLe 2 septembre 2008 sort la première beta de Google Chrome, alors uniquement sur Windows XP SP2 et ultérieur.

Depuis le navigateur de Google a fait du chemin. Tantôt critiqué, tantôt encensé, sa part de marché ne fait qu’augmenter.

Dans la plupart des distributions Linux, Google Chrome n’est pas accessible directement dans les paquets mais c’est le projet open source Chromium qui est proposé.

Installation

Sur Ubuntu 10.04, il suffit d’installer chromium-browser et chromium-browser-l10n pour avoir le navigateur sur votre machine en version 5.x et dans la langue de votre système. C’est la dernière version stable à ce jour.

Vous avez également la possibilité d’utiliser les PPA pour avoir réellement la dernière version. Attention, l’utilisation de dépots non-officiels n’est pas supporté par Canonical. En utilisant ces dépots tiers, vous vous exposez à des risques plus ou moins graves pouvant aller de l’extermination des castor-lapons à la destruction totale de la Terre par les Vogons pour construire une voie express hyperspatiale en passant par des problèmes sur votre machin. Vous les utilisez donc en connaissance de cause.

Stable

Pour avoir la dernière version stable, ajoutez le dépot stable avec la commande suivante:
sudo apt-add-repository ppa:chromium-daily/stable

Beta

Pour avoir la dernière version beta, assez stable, ajoutez le dépot beta avec la commande suivante:
sudo apt-add-repository ppa:chromium-daily/beta

Dev

Pour avoir la dernière version de dev, non-stable et destinée aux développeurs, ajoutez le dépot dev avec la commande suivante:
sudo apt-add-repository ppa:chromium-daily/dev

Daily

Pour avoir la dernière version compilée, instable, ajoutez le dépot daily avec la commande suivante:
sudo apt-add-repository ppa:chromium-daily

Une fois le dépôt ajouté, il suffit donc d’installer les paquets chromium-browser et chromium-browser-l10n:
sudo aptitude install chromium-browser chromium-browser-l10n

Plugins

Une fois Chromium d’installé, vous pouvez également installer certains codecs grâce à 2 paquets qui les regroupent en fonction de leurs licences:

Pour flash, il suffit d’installer flashplugin-nonfree pour que cela fonctionne sans problème dans Chromium.

Extensions

Les extensions de Google Chrome fonctionne évidemment sur Chromium. Vous avez donc accès à l’intégralité du catalogue afin d’augmenter les capacités de votre nouveau navigateur.

Tout d’abord, voici comment personnaliser Chromium afin qu’il s’intègre mieux dans Ubuntu:

Avec ça, vous avez un Chromium aux couleurs de votre Ubuntu !

Pour finir, quelques extensions de bases:

  • Google Mail Checker qui permet d’afficher uni icone avec le nombre de mail non lu dans gmail ;
  • Google Reader Notifier qui permet, aussi, d’afficher une icone avec le nombre de flux RSS non lu ;
  • Facebook Notifier qui permet, encore, d’afficher une icone avec le nombre de notification non lue ;
  • AdBlock qui permet de bloquer certaines publicité envahissante.

Voilà, avec tout ça, vous avez maintenant un navigateur opérationnel et aux couleurs de votre distribution préférée !

5

OpenTTD passe (enfin) en version 1.0.0

20091018_panswat_tongvoraratDepuis 6 ans, une bande de fou furieux s’est mise en tête de redonner une vie libre au cultissime Transport Tycoon de 1995.

Pour les plus jeunes ou les plus ignares, c’est un jeu où l’on prend le contrôle d’une société de transport et où l’ont doit transporter des marchandises d’un point A à un point B afin de gagner de l’argent et devenir le maître du monde (un peu comme Minus et Cortex, donc). Le jeu est en 3D isométrique comme on les faisait à l’époque, le tout sur un fond de musique jazzy bien sympathique.

Depuis mars 2004 et la toute première version 0.1 d’OpenTTD (« Open » car OpenTTD est open source et « TTD » pour Transport Tycoon Deluxe, une version sortie 1 an après la version originale et qui apporte quelques améliorations), des centaines de personnes ont contribué non seulement à réécrire le jeu original, mais en plus à l’améliorer, apportant de nouveaux graphismes, sons et, tout dernièrement, musiques. De plus, OpenTTD est multijoueur.

Le 1er avril 2010, au milieu de tous les poissons plus ou moins gros est sorti discrètement la première version finale et entièrement libre d’OpenTTD. Jusqu’à présent il fallait encore quelques fichiers de données du jeu original, mais plus maintenant. Presque 20 000 commits auront été nécessaire pour sortir cette version finale. Quel travail et quelle réussite !!! Cerise sur le gâteau, le version 1.0.0 s’accompagne (enfin) d’un paquet natif pour Ubuntu (32/64 bits, Karmic/Lucid).

Vous pouvez allez voir quelques screenshots d’OpenTTD v1.0.0 ou bien aller le télécharger sur le site officiel.

Attention, OpenTTD est disponible dans les dépôts mais n’est pas à jour (v0.7.5 dans les dépôts Lucid). Si vous installez OpenTTD depuis le site officiel, sachez que ce paquet provient d’un dépôt tiers et ne fait donc pas parti de la distribution officielle. Il peut entrainer des problèmes plus ou moins graves sur votre ordinateur et la mort de petits poussins nains. Vous l’installez en connaissance de causes.

Pour installer OpenTTD, il suffit donc de télécharger le paquet Ubuntu depuis le lien ci-dessus. Installez-le grâce à GDebi. Ensuite, il faut télécharger les graphismes en allant sur http://bundles.openttdcoop.org/opengfx/releases/. Prenez la dernière version du zip (actuellement la 0.2.3) et décompressez le dans le répertoire ~/.openttd/content_download/data/. Enfin, lancez-le (Applications > Jeux > OpenTTD). Fermez le message qui vous dit que les effets sonores de secours ont été chargés. Cliquez sur « Vérifier le contenu en ligne ». Une fois la mise à jour de la liste effectuée, cherchez et cochez « Musique de base OpenMSX » et « Sons de base OpenSFX » et cliquez sur « Télécharger » en bas à droite. Fermez la fenêtre de téléchargement puis de mise à jour et allez dans « Options ». Sélectionnez OpenSFX dans « Sons de base ». Fermez cette fenêtre et voilà :)

Amusez-vous bien !

13

Installation de Spotify sous Ubuntu Karmic Koala 9.10

spotify_linux_promoPour ceux qui ne connaissent pas Spotify, c’est une application que l’on peut télécharger et installer sur sa machine afin d’écouter gratuitement et en toute légalité de la musique en streaming moyennant quelques pages publicitaires tous les quarts d’heure environ ou bien sans publicité, avec une meilleure qualité (320k) et un mode hors connexion pour la modique somme de 9,99€ par mois. Le catalogue est énorme et s’agrandit tous les jours. Last.fm est géré et pour chaque artiste, une liste conséquente d’artistes similaire vous aide à découvrir de nouveaux artistes ou à en retrouver des anciens oubliés.

Bref, une application que je recommande fortement à tous les amoureux de musique et ceux qui n’ont pas/plus envie d’utiliser eMule, BitTorrent ou les newsgroups. De plus, depuis peu, vous pouvez vous créer un compte librement alors que jusqu’à présent il fallait une invitation. Ça se passe sur http://www.spotify.com/fr/.

Maintenant que les présentations sont faites, intéressons-nous à son installation sur Ubuntu 9.10.

Tout d’abord il faut savoir que, pour le moment, il n’y a pas de version native linux, mais que cela fonctionne très bien avec wine… pour peu que l’on installe ce qu’il faut.

La documentation de Spotify pour l’installation de leur logiciel sous wine date un peu et, surtout, n’est pas spécifique à Ubuntu et n’indique donc pas un petit patch à installer.

Trêves de bavardages et préparons notre machine à recevoir Spotify.

Tout d’abord, il faut installer wine, mais comme je l’ai dit, il faut un petit patch. Attention, ce patch provient d’un dépôt tiers et ne fait donc pas parti de la distribution officielle. Il peut entrainer des problèmes plus ou moins graves sur votre ordinateur et la mort de petits poussins nains. Vous l’installez en connaissance de causes.

Ajoutez à vos repository le dépôt ppa suivant:
deb http://ppa.launchpad.net/neil-aldur/ppa/ubuntu karmic main

Récupérez ensuite sa clef:
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com D3E49C82

Maintenant, on fait une petite mise à jour et on installe wine:
sudo aptitude update && sudo aptitude install wine1.2

Une fois wine installé, il faut le configurer. La version patchée de wine que l’on vient d’installer nous permet de bénéficier du driver PulseAudio et donc, de ne pas avoir tout un tas de problème de son que l’on aurait avec le driver ALSA par exemple.

Lancez la configuration de wine:
winecfg

Vous aurez probabement un message d’alerte vous indiquant qu’il n’y a pas de driver audio configuré. C’est précisemment ce que nous sommes venu faire. Allez dans l’onglet audio, vérifiez bien que seul le pilote PulseAudio est coché, puis tout en bas dans « DirectSound » > « Accélération matérielle », choisissez « Émulation ». Appuyez sur le bouton « Appliquer » puis « Tester le son » afin de voir si ça fonctionne (n’oubliez pas de régler le volume :D). Vous pouvez cliquer sur « Ok » pour fermer la configuration.

Maintenant passons à l’installation de Spotify. Il suffit d’aller sur le site prendre la version windows de Spotify et de lancer le programme grâce à wine. Par défaut, firefox prend en charge les .exe et vous propose automatiquement de les ouvrir avec wine. Sinon, téléchargez le fichier quelque part et lancez-le en tapant
wine "Spotify Installer.exe"

L’installation en elle-même n’est pas compliquée. Une fois installé, une petite fenêtre vous demander vos identifiants… que vous avez dû créer ou que vous pouvez créer maintenant sur le site.

Amusez-vous bien !

Cadeau bonus: si vous souhaitez que votre navigateur fétiche gère les liens Spotify, suivez le tuto officiel.

15

Mon lecteur audio idéal: MPD et ses copains

mpdOn est geek ou on l’est pas. Moi pareil, des fois je suis un bon gros geek, parfois non.

Bon ben là, je pense que je penche plus du côté geek que du côté de la population qui a un cerveau sain.

Je ne peux pas vivre sans musique. Mon autoradio a un port USB pour que j’y mette ma clef USB de 8Go avec mes mp3 choisis consciencieusement. J’ai constamment de la musique dans les oreilles au boulot. Idem à la maison où je peux également pianoter sur mon clavier ou grattouiller la guitare électrique de ma chère et tendre. Parfois je crée de la musique aussi… mais c’est une autre histoire.

Depuis que j’ai quitté KDE (depuis Ubuntu 8.10) et l’arrivée d’Amarok 2, je n’ai jamais trouvé de lecteur audio qui me convenait. J’en ai essayés pourtant. J’ai finalement choisi Exaile que je pensais prometteur (qui l’est peut-être toujours, mais le développement est trop lent à mon goût).

Je viens de tester MPD et je l’ai adopté.

MPD ? C’est quoi ça ?

MPD (Music Player Daemon) est, comme son nom l’indique, un démon qui sert à jouer de la musique. Et ma foi, ça le fait très bien.

L’approche de MPD est particulière. Contrairement à tous les autres lecteurs, MPD est constitué d’au moins 2 logiciels: 1 serveur et au moins 1 client.

Le serveur s’occupe de gérer la bibliothèque de fichiers musicaux, les playlists, d’envoyer sur la sortie la musique jouée et de mettre à disposition une API qui permet à qui le veut de communiquer avec ce serveur.

Du coup, il existe tout un tas de clients plus ou moins complets, plus ou moins jolis, certains même sont en ligne de commande.

Ma configuration

J’ai réfléchi (oui, ça m’arrive) et je me suis posé la question suivante: qu’est-ce que j’attends de mon lecteur audio:

  • il doit lire ma musique (oui… c’est curieux, hein?), dans l’ordre ou aléatoirement,
  • il doit gérer les queues de plusieurs titres que je souhaite écouter à la file,
  • il doit me permettre de faire des recherches dans ma bibliothèque facilement,
  • il doit me permettre de faire play/pause/suivant/précédent grâce à des raccourcis clavier globaux, c’est à dire depuis n’importe quelle application sans avoir besoin d’utiliser ma souris et sans avoir besoin d’afficher mon lecteur audio à l’écran,
  • il doit utiliser les notifications du système pour m’avertir du titre écouté,
  • Il doit afficher mes fichiers musicaux comme je le désire, c’est à dire par le nom du fichier car j’ai déjà renommé mes fichiers comme je veux,
  • il doit envoyer les titres que j’écoute sur ma page last.fm.

En résumé, je n’ai pas besoin d’avoir une interface lourde. Le choix de MPD me parait pertinent. En avant l’installation.

Tout d’abord, installons le serveur:

sudo aptitude install mpd

Une fois installé, modifions le fichier de configuration (/etc/mpd.conf) afin qu’il trouve nos fichiers:

music_directory    "/media/data/audio"
playlist_directory "/media/data/audio"

De plus, il faut configurer la sortie audio. Sur Ubuntu 9.10, commentez les lignes « audio_output » concernant ALSA et décommentez les lignes pour Pulse Audio pour avoir ceci:

#audio_output {
#       type            "alsa"
#       name            "My ALSA Device"
#       device          "hw:0,0"        # optional
#       format          "44100:16:2"    # optional
#       mixer_device    "default"       # optional
#       mixer_control   "PCM"           # optional
#       mixer_index     "0"             # optional
#}
...
audio_output {
        type            "pulse"
        name            "My Pulse Output"
#       server          "remote_server"         # optional
#       sink            "remote_server_sink"    # optional
}

Sauvegardez le fichier et relancez le serveur:

sudo /etc/init.d/mpd restart

Il faut également installer un petit logiciel qui permet de paramétrer Pulse Audio, puis le lancer:

sudo aptitude install paprefs
paprefs

Puis, dans l’onglet « Network Server », cochez « Activez l’accès réseau aux périphériques de son locaux » et enfin « Don’t require authentification ».
Enfin, relancez pulse audio pour que ces paramètres soient pris en compte:

sudo /etc/init.d/pulseaudio restart

Maintenant, nous allons installer un client. C’est peut-être là que nos chemins se séparent. Une liste de clients MPD existe sur le wiki du logiciel.

Moi, je vais vous parler de ncmpcpp un client ncurses écrit C++ qui fait (presque) tout ce que je veux. La version des dépôts n’est pas franchement à jour, aussi, si vous savez ce que vous faites, vous pouvez configurer ce PPA qui propose la dernière version, sinon contentez-vous de la version (tout a fait fonctionnelle) des dépôts.

sudo aptitude install ncmpcpp

Une fois installé, vous pouvez lancer le client en tapant:

ncmpcpp

Pour commencer, il faut faire une mise à jour de la bibliothèque musicale de MPD en tapant sur la lettre U de votre clavier. « Database update started » s’affiche dans le coin inférieur gauche. Une fois la mise à jour terminée, vous verrez « Database update finished ! » apparaitre au même endroit. La mise à jour de la bibliothèque dépend évidemment de la taille de celle-ci. Plus vous avez de fichiers musicaux, plus ça prendra de temps.

En appuyant sur F1, vous aurez la liste intégrale des raccourcis claviers de ncmpcpp.

Appuyez maintenant sur F3 pour parcourir votre bibliothèque. Vous pouvez naviguer avec les flèches et la touche entrée (pour rentrer dans un répertoire) et enfin ajouter le répertoire ou le fichier musical sélectionné, dans la playlist courante, en appuyant sur la barre espace.

Appuyez sur F2 pour revenir à la playlist courante. Vous pouvez trier les fichiers musicaux grâce à CTRL+V, écouter un titre en appuyant sur entrée, aller au suivant grâce à > et au précédent grâce à <.

Vous pouvez modifier quantité de paramètres de ncmpcpp en créant/modifiant le fichier de configuration ~/.ncmpcpp/config. Vous pouvez récupérer un fichier de config exemple depuis /usr/share/doc/ncmpcpp/config.gz:

cp /usr/share/doc/ncmpcpp/config.gz ~/.ncmpcpp/
gunzip ~/.ncmpcpp/config.gz

Voici, d’ailleurs, mon fichier de configuration (mes fichiers musicaux sont renommés exactement comme je le désire, je ne m’embête donc pas des tags pour l’affichage, mais vous pouvez configurer comme bon vous semble ou laisser la configuration par défaut):

mpd_music_dir = "/media/data/audio"
mpd_crossfade_time = "0"
song_list_format = "%f$R$3%l$9"
song_status_format = "%f"
song_library_format = "%f"
song_window_title_format = "%f"
song_columns_list_format = "(25)[cyan]{a} (40)[]{t} (30)[red]{b} (7f)[green]{l}"
autocenter_mode = "yes"
clock_display_seconds = "yes"
display_bitrate = "yes"

Bien, maintenant que nous avons un lecteur audio, configurons nos raccourcis clavier en lançant les commandes suivantes:

gconftool -s /apps/metacity/keybinding_commands/command_1 -t string "ncmpcpp toggle"
gconftool -s /apps/metacity/keybinding_commands/command_2 -t string "ncmpcpp next"
gconftool -s /apps/metacity/keybinding_commands/command_3 -t string "ncmpcpp prev"
gconftool -s /apps/metacity/keybinding_commands/command_4 -t string "gnome-terminal --maximize --hide-menubar --window -e ncmpcpp"
gconftool -s /apps/metacity/global_keybindings/run_command_1 -t string "<Super>c"
gconftool -s /apps/metacity/global_keybindings/run_command_2 -t string "<Super>b"
gconftool -s /apps/metacity/global_keybindings/run_command_3 -t string "<Super>z"
gconftool -s /apps/metacity/global_keybindings/run_command_4 -t string "<Super>p"

Vous pouvez maintenant faire play/pause avec Super+C, passer au titre suivant avec Super+B, au précédant avec Super+Z et afficher le lecteur dans un nouveau terminal grâce à Super+P. « Super », c’est la touche « windows », le drapeau entre Ctrl et Alt.

Installons maintenant de quoi envoyer nos écoutes à last.fm:

sudo aptitude install mpdscribble

Éditez le fichier /etc/mpdscribble.conf afin de mettre vos login/pass last.fm, puis éditez le fichier /etc/default/mpdscribble en mettant 1 à MPD_SYSTEMWIDE. Enfin, relancez le client:

sudo /etc/init.d/mpdscribble restart

Pour finir, nous allons faire afficher une notification à chaque modification de titre. J’ai créé 1 petit script qui va faire tout ça pour nous. Il y a également quelques dépendances à installer et le démarrage automatique à l’ouverture de la session à paramétrer:

sudo aptitude install python-mpd python-notify
wget http://dl.mattlab.com/mpdnotify/mpdnotify.desktop -O ~/.config/autostart/mpdnotify.desktop
sudo wget http://dl.mattlab.com/mpdnotify/mpdnotify -O /usr/bin/mpdnotify
sudo chmod +x /usr/bin/mpdnotify
mpdnotify &

Vous devriez voir apparaitre une belle notification du titre en cours :)

Pour plus d’informations, sur l’affichage des jaquettes par exemple, allez sur la page du projet.

Ce petit script permet également d’afficher une notification en lançant:

mpdnotify notify

Nous allons d’ailleurs nous en servir pour afficher une notification sur le raccourci Super+O en exécutant ces 2 lignes:

gconftool -s /apps/metacity/keybinding_commands/command_5 -t string "mpdnotify notify"
gconftool -s /apps/metacity/global_keybindings/run_command_5 -t string "<Super>o"

Voilà, vous avez maintenant un lecteur audio léger mais pleinement fonctionnel… ou presque… en effet, MPD n’implémente pas un système de queue. Les développeurs ne souhaitent d’ailleurs pas l’implémenter car ils estiment que c’est très similaire aux playlists déjà implémentées.

Bonne écoute !

40

Flasher un mobile Android sous linux

android_linuxJe suis, depuis quelques jours, l’heureux propriétaire d’un HTC Magic, un mobile tournant sous Android le système made in Google !

Oui, mais voilà, comme tout geek qui se respecte le firmware de base ne me suffit pas et je suis donc amené à installer des firmwares concoctés par des bidouilleurs fous.

Les tutos ne manquent pas pour Windows mais je n’ai rien trouvé pour Linux. Voilà ce que j’ai pu glaner ici et là et qui m’a permit de flasher mon téléphone depuis mon Ubuntu 9.04.

Attention, les différentes images en lien sont pour le HTC Magic, si vous avez un autre téléphone Android, ça risque de ne pas fonctionner, mais les manipulations sont sensiblement les mêmes.

Note:

J’indique dans le tuto qu’il faut installer le sdk et qu’il faut tout faire dans le répertoire tools car c’est ce que j’ai lu… mais je ne suis pas convaincu de l’utilité de ces étapes. Si des gens veulent bien tester sans le SDK et/ou ailleurs que dans le répertoire tools du SDK, je suis preneur des retours :)

Préparation du PC (Si vous l’avez déjà fait, passez à la préparation du firmware):

  1. Si vous avez déjà le SDK Android sur votre machine, allez directement à l’étape 4.
  2. Téléchargez le SDK Android depuis le site dédié à Android.
  3. Dézippez l’archive où bon vous semble, ça n’a strictement aucune importance. Pour la suite de ce tuto, nous dirons que vous l’avez dézippé dans /home/user/bin. Vous avez donc maintenant le SDK dans /home/user/bin/android-sdk-linux_x86-1.5_r2.
  4. Téléchargez l’application fastboot depuis le site HTC.
  5. Dézippez fastboot (contenu dans l’archive que vous venez de télécharger) dans le répertoire tools du SDK, soit /home/user/bin/android-sdk-linux_x86-1.5_r2/tools (si vous avez suivi ce tuto depuis le début).
  6. Ouvrez une console, allez dans le répertoire tools (cd ~/bin/android-sdk-linux_x86-1.5_r2/tools) et donnez les droits d’exécution (chmod +x fastboot)

Préparation du firmware:

  1. Téléchargez le firmware que vous désirez: SPF, Fatal1ty Hero, etc…
  2. Ouvrez le fichier zip et faites l’une des 2 étapes ci-dessous en fonction de son contenu:
    1. Si l’archive téléchargée contient un fichier recovery-magic.img et un fichier update.zip (cas du firmware SPF, par exemple):
      1. Décompressez le fichier recovery-magic.img dans le répertoire tools du sdk
      2. Décompressez le fichier update.zip sur la SD card de votre téléphone (via USB ou un lecteur de carte)
    2. Si l’archive contient les répertoires data, META-INF, system et le fichier boot.img (cas du Fatal1ty Hero, par exemple):
      1. Renommez ce fichier zip en update.zip
      2. Envoyez le fichier update.zip sur la SD card de votre téléphone (via USB ou un lecteur de carte).
      3. Téléchargez l’image recovery disponible sur ce thread. Faites bien attention à prendre la bonne image en fonction de votre téléphone.
      4. Renommez le fichier en recovery-magic.img.
  3. Dans tous les cas, vous devez maintenant avoir un fichier update.zip sur la SD card de votre téléphone et un fichier recovery-magic.img dans le répertoire tools du SDK.

Préparation du téléphone:

  1. Activez le debug USB en allant dans Paramêtres > Applications > Développement > Débogage USB
  2. Veillez bien à ce que votre mobile ne soit pas branché en USB.
  3. Éteignez votre mobile.
  4. Appuyez simultanément sur les touches Volume- et Power.
  5. Une fois le mobile démarrer sur un écran blanc avec écrit « <BACK> FastBoot Mode », branchez votre mobile à votre PC grâce au câble USB.
  6. Le menu devrait légèrement changer et « FASTBOOT USB » devrait apparaitre en rouge. Ouvrez une console (si ce n’est pas déjà fait) et rendez-vous dans le répertoire tools de votre SDK (normalement, vous devriez déjà y être si vous avez suivi toutes les explications depuis le début).
  7. Tapez ./fastboot boot recovery-magic.img
  8. Le téléphone redémarre et vous arrivez enfin à un menu qui vous propose plein de choses. Nous allons commencer par faire un backup au cas où.
  9. Avec la molette, descendez sur Nandroid backup et appuyez sur la molette pour lancer un backup. Les données sont sauvegardées sur la SD card.

Flash du firmware:

  1. Faites un backup (voir étape 9 ci-dessus). Si vous n’en avez pas fait et que ça se passe mal, faudra pas venir pleurer !
  2. Suivant les firmwares vous pouvez faire un simple update ou il faut tout formater (faire un wipe). S’il faut faire un wipe, choisissez Wipe data/factory reset avec la molette et appuyez sur la molette pour lancer le wipe
  3. Vous pouvez maintenant lancer le flash en choisissant Apply sdcard:update.zip avec la molette et en appuyant à nouveau sur la molette.
  4. Une fois le flash terminé, choisissez Reboot system now avec la molette pour redémarrer votre mobile.
  5. Priez pendant le reboot… mais normalement ça se passe toujours bien :)

En cas de problème lié à Android, je ne suis clairement pas le mieux placé pour vous aider. Allez plutôt sur le forum de SmartPhoneFrance.

Pour trouver des firmwares, des thèmes ou des applications, allez faire un tour sur le forum XDA-Developpers.