Afficher du debug sous Android

Habitiuellement quand on fait du java on utilise system.out.println pour afficher notre debug sur la console. Sous Android cela n’est pas possible.

Le système qui le remplace est l’API android.util.Log.

Cette API vous permet d’envoyer des messages avec différent niveau de visibilité:

  • VERBOSE
  • DEBUG
  • INFO
  • WARN
  • ERROR

#Utilisation de l’API La première chose à faire est de charger le code nécessaire à l’API.

 import android.util.Log;

Vous pouvez ensuite envoyer votre message.

Log.v("ListLevels", "create");

Le premier argument est le TAG qui permet de savoir qui est l’émetteur. Généralement c’est le nom de l’activité.

Le deuxième argument est le message en lui même.

Vous disposez de différentes méthodes pour envoyer des messages pour chaque niveau:

  • VERBOSE: Log.v
  • DEBUG: Log.d
  • INFO: Log.i
  • WARN: Log.w
  • ERROR: Log.e

#Affichage du debug dans eclipse

Pour afficher les logs une fois l’émulateur lancé cliquez sur la perspective DDMS.

<170 center>

Les logs s’affichent dans la zone du bas. <171|center>

Vous pouvez filtrer en fonction du niveau du message ou du texte du message.

#Bon à savoir Le niveau debug est automatiquement supprimé au moment de l’exécution si vous n’êtes pas en mode debug.

#Plus d’informations http://developer.android.com/reference/android/util/Log.html

Les variables spéciales en shell

#$# $# Contient le nombre d’arguments passe a votre script

#$* *$** Contient la liste des paramètres passée au script

#$@ Comme *$** mais il prend en compte les espaces, on récupère donc les arguments sous forme de tableau.

Par exemple pour ce code:

for var in "$*"
do
	echo $var;
done
test.sh "toto tata" tutu

Donnera:

toto tata tutu

Alors que pour ce code:

for var in "$@"
do
	echo $var;
done
test.sh "toto tata" tutu

Donnera:

toto tata
tutu

#$? $? Contient le résultat de la dernière commande exécuté

#$$ Le PID du shell

#$! Le PID de la dernière commande mise en background.

#$_ Contient le dernier argument de la précédente commande.

Exemple:

# echo toto
toto
# echo $_
toto

#$0 $1 $2 Ces variables contiennent les arguments passés en paramètre à votre script shell.

Lire les IPTC en Python

Pour récupérer les IPTC en Python vous avez plusieurs choix dont PIL.

Le support des IPTC de PIL étant incomplet je me suis rabattu sur le module IPTCInfo.

Voici un exemple d’utilisation:

from iptcinfo import IPTCInfo
import sys

info = IPTCInfo('test.jpg')
# Affiche la liste des mots clef
print info.keywords

GetText

La traduction d’une application est un vrais problème car il faut une méthode qui rajoute peu de travail au développeur et qui permettent une traduction facile.

On peut bien sur bricoler un système personelle pour gérer ce problème mais il faudra aussi dévelloper les outils annexe permettant de maintenir à jours les différentes traduction

GetText est un outils très utilisé dans le monde de l’open source et disponible pour de nombreux languages. Il est très discret à utiliser puisqu’il suffit de remplacer:

echo "Hello World";

par

echo _("Hello World");

La chaine hello world sera ensuite extraite automatiquement de votre code source par les outils de gettext. Les développeurs n’ont donc pas à se soucier de maintenir à jour le fichier de traduction.

#Extraction des chaines à traduire Pour extraire les chaines à traduire de vos fichier php il suffit d’utiliser la commande:

xgettext *.php

Cela va vous générer un fichier messages.po.

Il faut ensuite le compiler en fichier .mo utilisable par gettext.

msgfmt messages.po

L’un des principeaux problème avec beaucoup de méthode est la mise à jour des fichier de traduction. Et c’est là où à mon gout gettext trouve tout son intêret.

  • Commencez par renommer le fichier messages.po en old.po.
  • Générez le fichier messages.po
  • Mergez les deux fichier grace à cette commande:
msgmerge old.po messages.po --output-file=messages.po

#Quid des performances? GetText est puissant et on pourrait penser que cette solution est plus lente que un $lang[$language][‘welcome’]. Et bien non l’extension gettext est écrite en C et ses performance sont meilleur que le simple tableau de string.

Un benchmark

#Bibliographie Un article intérressant sur gettext et php: http://www.onlamp.com/pub/a/php/2002/06/13/php.html

Le site de gettext: http://www.gnu.org/software/gettext/

Annuler une revision

Dans subversion pour annuler une modification en ligne de commande.

Ce placer dans le répertoire.

A l’aide de la commande svn info récupérez l’URL du dépots.

Chemin :

noplay# svn info
Chemin: .
URL : http://svn.noplay.net/
Racine du depot : svn://svn.noplay.net
UUID du depot : 9e0b0c50-2be5-40e4-8cd1-2e3fc7b79647
Revision : 42
Type de noeud : repertoire
Tache programme : normale
Auteur de la derniere modification : noplay
Revision de la derniere modification : 42
Date de la derniere modification: 2008-07-18 21:09:59 +0200 (ven 18 jui 2008

A l’aide de la commande svn log récupérez la revision que vous souhaitez annuler:

noplay# svn log | head
------------------------------------------------------------------------
r42 | noplay | 2008-07-18 21:09:59 +0200 (ven 18 jui 2008) | 1 line
Je casse tout

Dans notre exemple c’est 42

Puis on repart en arrière:

svn merge -r 42:41 http://svn.noplay.net
svn commit