Savoir quelle DLL sont chargées par un programme

Il est parfois nécessaire de connaître la liste des DLL utilisés par un programme . Il existe plusieurs méthodes pour le savoir. Cette méthode à l’avantage de ne pas demander l’installation de logiciels extérieurs.

Il suffit de lancer cmd.exe.

On utilise ensuite la commande:

 tasklist 

Cette commande vous permet de lister les processus qui tournent actuellement. On peut ainsi repérer le nom du processus qui nous intéresse.

On va ensuite afficher la liste des Dlls liées au programme via cette commande:

 tasklist /m /fi "imagename eq PROGRAMME" 

L’option /m nous donne la liste des modules. L’option /fi permet de filtrer la sortie.

Par exemple pour Firefox:

 tasklist /m /fi "imagename eq firefox.exe" 

<179|center>

Changer de version de SDK android dans Eclipse

Généralement quand on débute avec android on commence à développer avec la dernière version du SDK. Malheureusement lorsque l’on veut publier son application on s’aperçoit que le marché est resté sur les anciennes versions.

Par exemple au jour d’aujourd’hui il y a encore 38% du marché sous android 1.5. Il ne faut donc pas négliger ces utilisateurs: http://developer.android.com/resources/dashboard/platform-versions.html

#Installer le SDK Via la commande android vous pouvez gérer les versions de SDK installé et installable.

<176|center> #Modification de la version dans eclipse Tout d’abord, il faut aller dans les propriétés du projet: <172|center>

Dans la section Android choisissez le SDK ciblé: <177|center>

Puis avec un clic droit sur le projet/Android Tools/Fix project properties: <172|center>

Cela corrige notamment le .jar du SDK qui sera chargé.

#Changer de version dans le manifest Pour que votre application soit toujours valide, il ne faut pas oublier de changer la version minimum de l’OS requise dans le fichier AndroidManifest.xml.

Par exemple pour Android 1.5:

   <uses-sdk android:minSdkVersion="3" />

#Retourner en 1.5 Si vous venez d’une version supérieure à la 1.5 lorsque vous allez repartir en arrière votre fichier R.java ne sera plus généré correctement cela est dû à la présence des dossiers:

  • res/drawable-hdpi
  • res/drawable-mdpi
  • res/drawable-ldpi

Ces dossiers sont apparus dans android 1.6. Pour que cela marche en 1.5 il ne vous faut que le dossier res/drawable.

Afficher du debug sous Android

Habituellement 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/