Le blog de Fatiha

Une geek de plus !

Ma première application Android sous Linux Fedora 15

 

Dans un précédent article, je vous disais que Google avait ouvert un nouveau site internet pour apprendre aux développeurs comment développer pour Android. Maintenant passons de la théorie à la pratique. J’hésitais entre un test sous Windows et un test sous Linux, j’ai finalement choisi Linux Fedora 15. Prévoyez une heure ou deux pour ce tutoriel. Voici les étapes à suivre scrupuleusement :

Téléchargez et installez le package sdk sous Linux Fedora 15.

Décompressez le package :

tar -xvzf android-sdk_r16-linux.tgz

Mettez à jour le package, cette étape peut prendre 30 minutes ou plus :

cd android-sdk-linux

tools/android update sdk –no-ui

Téléchargez et installez eclipse (si vous ne le possédez pas déjà) :

Pour Linux Fedora 15 en 64 bits, j’ai téléchargé Eclipse IDE for Java developers (64 bits)

Décompressez l’archive et lancez eclipse de cette manière :

eclipse &

Ou bien cliquez sur l’icône Eclipse :

Ajoutez le plugin adt au logiciel eclipse en suivant les instructions de la page ADT Plugin For Eclipse :

- Sous Eclipse, sélectionnez Fenêtre > Préférences

- Selectionnez Android au niveau du panneau de gauche.

- Décochez la case où l’on vous demande d’envoyer des stats à Google, sauf si vous le souhaitez.  Cliquez sur suivant.

- Indiquez à Eclipse la localisation du sdk, téléchargé lors des précédentes étapes.

- Puis cliquez sur OK.

Je viens d’avoir l’erreur failed to get the adb version

J’interroge mon ami Google et je tombe sur un excellent site : HOWTO Setup Android Development

Ce site va me permettre de terminer le paramétrage d’Eclipse et d’exécuter par la même occasion mon 1er programme sous Android, ou plutôt avec l’émulateur Android. Je suis les étapes ci-dessous :

- Installation des librairies 32 bits packages manquantes

yum install glibc.i686 glibc-devel.i686 libstdc++.i686 zlib-devel.i686 ncurses-devel.i686 libX11-devel.i686 libXrender.i686 libXrandr.i686

- Android Virtual Device (traduction ? périphérique virtuel Android ?)

  • Allez dans le répertoire où vous avez installé le sdk et lancez tools/android pour configurer et créer votre 1er Android virtual device.
  • Allez dans  « Available Packages » et sélectionnez les composants qui vous intéressent, pour ma part je vais travailler sur Android 2.1, le version de mon Samsung Galaxy S : SDK Platform Android 2.1
  • Si vous ne l’aviez déjà pas installé, procédez à son installation. Vous vous souvenez de l’étape qui durait 30 minutes, c’est parce que j’ai installé sdk platform pour toutes les versions Android… A ne pas faire !

  • Allez dans « Virtual Devices », cliquez sur « New », une nouvelle feneêtre apparaît où vous allez précisé la taille de votre carte SD virtuelle (ex: 62MiB), nom du device ou périphérique (ex: android_dev), la cible (ex: Android 2.1).
  • Cliquez sur « Create AVD ».

- Configurez Android sous Eclipse

  • Allez dans Fenêtre -> Préférences, cliquez sur Android et positionnez le répertoire contenant le SDK et cliquez sur appliquer.
  • Choisissez la version android voulue (ex: 2.1 pour mon cas) puis cliquez sur OK.

- Créer un nouveau projet Android

Sous Eclipse, cliquez sur Fichier -> Nouveau -> Projet, cliquez sur Android puis sur Android Project. Sélectionnez Android Project puis cliquez sur Suivant.

Ensuite procédez comme suit :

- Développement et exécution

Ensuite je lance l’application avec l’option -noaudio en procédant ainsi :

Dans Fenêtre -> Préférences -> cliquez sur Android sur le panneau de gauche puis sur Launch, enfin ajoutez -noaudio au niveau des options de lancement de l’application :

- Démarrez l’émulateur

Lancez en ligne de commande :

./emulator -noaudio @android_dev

Cela peut prendre plusieurs minutes.

Ensuite, je reviens sous Eclipse et je lance le programme en cliquant sur Run puis Exécuter en tant que Android Application :

Voilà le résultat :


A vous de jouer !

Utilisation de fonctions prédéfinies en python

 

Nous allons apprendre aujourd’hui comment utiliser les fonctions prédéfinies en python. C’est le 4e article de la série consacrée à l’apprentissage du langage python (lire le 1er article, le 2e article et le 3e article). Nous allons prendre deux exemples : les fonctions mathématiques et les fonctions de date.

Le 1er exemple consiste à demander à l’utilisateur de saisir un nombre au clavier puis le programme lui calcule la racine carrée de ce nombre. Nous utilisons ici le module math.

from math import *

print "Tapez un nombre :",
nombre = int(raw_input())
print 'La racine carree de ', nombre, 'est : ', sqrt(nombre)

En indiquant from math import * nous lui demandons d’importer toutes les fonctions du module math. Nous pouvions aussi lui demander uniquement la fonction sqrt en tapant : from math import sqrt

Lançons le programme et voyons ce que ça donne :

 

Maintenant que nous avons compris le principe, passons maintenant aux fonctions de date en important le module datetime.

from datetime import *

# je cree ma variable contenant la date du jour
dateDuJour=datetime.now()

print 'Date du jour avec la fonction today :', date.today()
print 'Date du jour avec la fonction now :', datetime.now()
print 'Formatage de la date du jour avec la fonction strftime qui prend en parametre le format de la date :', dateDuJour.strftime("%d %B %Y %I:%M%p")

Dans un prochain article, nous verrons comment créer nos propres fonctions.

Sources :

Améliorez les performances de votre site web avec Page Speed pour Firefox et Chrome

 

En analysant les statistiques de mon site web sur Google Analytics, je remarque que le temps moyen de chargement de page est très élevé, près d’une vingtaine de secondes. Afin d’optimiser le temps de chargement de page, j’ai trouvé une extension pour Mozilla Firefox qui va m’aider à réduire le temps de chargement de ma page. J’ai trouvé l’extension qu’il me faut : Page Speed. C’est un projet open source qui a débuté chez Google, il y a même une vidéo complète de présentation de l’outil (durée : 59 min). Cette extension analyse les élements de la page et m’explique comment optimiser concrètement les performances de ma page via des suggestions d’amélioration.

Passons aux choses concrètes !

Je procède à l’installation de cette extension sous Firefox en cliquant sur Tools au niveau du meu puis sur Add-ons puis je recherche l’extension Page Speed au niveau du moteur de recherche. Je l’installe, je redématrre mon navigateur et là j’ai une erreur sous Linux Fedora 15 :

« The following extension(s) are required by Page Speed and must be installed before it can run : Firebug (http://getfirebug.com/) »

L’erreur en elle-même est claire, il faut ajouter l’extension Firebug à son navigateur Firefox. Mais comment ? Au niveau de Firefox, vous cliquez sur Tools puis sur Add-ons. Vous cliquez sur Extensions au niveau de la barre de gauche. Ensuite, au niveau de la barre de recherche en haut à droite, vous tapez Firebug. Ainsi, vous obtenez l’écran suivant :

Il vous suffit de cliquer sur le bouton Install situé à droite de Firebug puis de redémarrer Firefox. Quand vous ouvrez votre navigateur vous n’aurez plus l’erreur javascript concernant l’extension PageSpeed.

Je vais prendre comme exemple mon site web.

Comme Page Speed est une composante de Firebug, j’ouvre Firebug tout d’abord en cliquant sur Tools -> Web Developer -> Open Firebug :

Je clique sur Analyze Performance, l’analyse de ma page web prend quelques secondes, Page Speed m’affiche un rapport de performance avec en rouge ce qui est à améliorer et en vert ce qui est déjà optimisé sur mon site :

J’ai un score de 80/100, j’ai 6 points à améliorer. Quand je clique sur un des points à améliorer, je suis redirigée vers le site des développeurs Google qui me donne des conseils concrets. Voyons ce que nous conseille Google :

Je dois absolument améliorer la gestion des images, choisir le bon format et surtout compresser mes images, qui sont beaucoup trop lourdes. C’est probablement ce point négatif qui explique le temps de chargement médiocre de ma page. Bon j’ai du travail !

A vous d’installer l’extension Page Speed pour Firefox ou pour Google Chrome maintenant.

Logiciels libres, essayez la liberté !

 

Sur le site toolinux.com j’ai vu une affiche qui m’a tout de suite interpellée. Elle disait « Logiciels libres, essayez la liberté ».

 

Cette affiche provient en fait du site APRIL, une association qui a pour but de promouvoir et de défendre le logiciel libre. C’est la pionnière du logiciel libre en France. Elle est constituée de plus de 5433 adhérents (4952 individus, 481 entreprises, associations et organisations) et elle est depuis 1996 un acteur majeur de la démocratisation et de la diffusion du logiciel libre et des standards ouverts auprès du grand public, des professionnels et des institutions dans l’espace francophone.

Le logiciel libre offre quatre libertés à ses utilisateurs : la liberté d’utiliser le logiciel pour n’importe quel usage, la liberté de le distribuer à son entourage, la liberté d’étudier son fonctionnement et la liberté de le modifier pour l’améliorer.Il existe des logiciels libres pour accomplir presque toutes les tâches informatiques.

Utilisez-vous des logiciels libres sans le savoir ? Je vous en ai listé quelques uns, cela vous rappelle peut-être quelque chose ?

Copie d’écran de GIMP, logiciel de retouche d’images que j’ai utilisé à l’instant pour compresser l’image de l’affiche :

Sources :

Sondage informatique du jour : quelle est votre distribution Linux ?

 

Pour ma part, j’utilise Fedora 15 sur mon ordinateur portable personnel avec son interface graphique Gnome 3.  Et vous ? Quelle est la distribution Linux que vous utilisez, en poste de travail ?

Quelle distribution Linux utilisez-vous ? (Poste de travail)

View Results

Loading ... Loading ...

Je vous conseille un très bon site pour choisir votre distribution Linux en fonction de vos besoins : Linux distribution chooser

Installer le lecteur de flux RSS Liferea sous Linux

 

En lisant un article sur les lecteurs de flux RSS sur le site linuxaria, je me suis dit qu’il serait grand temps que j’en installe un sur mon Linux Fedora 15. Figurez-vous que j’ai mis 10 minutes, exportation de mes abonnements Google Reader compris !

Allez c’est parti. Tout d’abord, je vais sur le site sourceforge.net pour lire les procédures d’installation. La dite procédure est très simple car elle se limite à la ligne :

yum install liferea

On continue :

Ensuite, je lance l’application en cliquant sur l’icône de l’application cf. image ci-dessous :

J’obtiens l’écran suivant, une interface simple, sans fioritures, agréable et minimaliste :

Nous voyons que des flux rss sont chargés par défaut. Pour ajouter un flux rss, je n’ai pas le courage de les ajouter un à un d’autant plus que j’ai déjà Google Reader. Ce que je vais faire c’est exporter la liste de mes abonnements Google Reader au format OPML.

 

Ensuite je retourne sur l’application et là je clique sur Subscriptions -> Import Feed List. Je charge le fichier google-reader-subscriptions.xml.

Je retrouve la liste de mes abonnements avec le nombre d’articles non lus entre parenthèses. Liferea affiche notamment l’icône du site d’où provient le flux.

La fenêtre de lecture est pratique et réglable en hauteur et en largeur.

En conclusion, c’est un logiciel que je conseille, car c’est nettement plus confortable de lire ses flux rss dans liferea.

Commande nohup sous Linux

 

Qu’est-ce que la commande nohup sous Linux ? Dans quels cas est-elle utilisée ?

J’ai entendu parler de la commande nohup dans le domaine professionnel. Cette commande est utilisée souvent sous Linux lors de lancement de scripts.

nohup – Exécuter un programme en le rendant insensible aux déconnexions

La syntaxe est la suivante :

nohup COMMAND [ARG]…
nohup OPTION

Rien ne vaut une exemple avec le lancement d’un script shell /tmp/testShell.ksh :

#!/bin/ksh

echo "test 1" >> /tmp/testShell.log
sleep 10
echo "test 2" >> /tmp/testShell.log
sleep 20
echo "test 3" >> /tmp/testShell.log
sleep 30
echo "test 4" >> /tmp/testShell.log
sleep 40
echo "fin" >> /tmp/testShell.log

Après quelques secondes je ferme mon terminal. J’ouvre un nouveau terminal et je vérifie si le script a continué de tourner :
Nous remarquons que dès que j’ai fermé mon terminal, quand je me suis déconnectée, le script s’est arrêté avant la fin. Ce qui est très problématique.

C’est là que la commande nohup entre en jeu ! Je lance exactement le même script avec nohup, puis je me déconnecte.

Je me reconnecte pour vérifier que le script a continué à tourner :

Je vais vérifier que le fichier de log généré par le script est correct :

 

Supprimer une ligne précise dans l’historique sous Linux

 

L’histoire commence ainsi, je me connecte avec un utilisateur applicatif sous Linux et ensuite je tape la commande :

[user@monserveur] su -

Et sans regarder mon écran, machinalement je tape le mot de passe root. Le problème c’est que j’ai oublié que cet utilisateur applicatif n’a pas le droit d’utiliser la commande su. Du coup je me retrouve avec l’écran suivant :

[user@monserveur] su -
su: incorrect password

[user@monserveur] PASSWD_ROOT

Oui vous avez bien vu, j’ai tapé mon mot de passe en clair ! Je souhaite à présent effacer l’historique mais pas tout l’historique, uniquement la ligne où le mot de passe apparaît en clair.

Mon premier réflexe :

[user@monserveur]  man history

Ce qu’il me reste à faire c’est de taper la commande :

[user@monserveur]  history

et de repérer le numéro de la ligne incriminée puis de faire :

[user@monserveur]  history -d num_ligne

Voilà, me voilà sauvée.

Commande ping sous Linux (partie 1)

 

A quoi sert la commande ping et de quelle manière pouvons-nous l’utiliser sous Linux ?

D’après linux-ip.net, « The ping tool, designed to take advantage of Internet Control Message Protocol (ICMP), can be used to
test reachability of IP addresses. » soit « la commande ping, conçue pour tirer parti de l’ICMP, peut être utilisée pour tester la joignabilité d’une adresse IP ».

Le protocole ICMP (Internet Control Message Protocol) est un protocole qui permet de gérer les informations relatives aux erreurs aux machines connectées. Etant donné le peu de contrôles que le protocole IP réalise, il permet non pas de corriger ces erreurs mais de faire part de ces erreurs aux protocoles des couches voisines. Ainsi, le protocole ICMP est utilisé par tous les routeurs, qui l’utilisent pour signaler une erreur (appelé Delivery Problem). (extrait de commentcamarche.net.)

Nous allons comprendre comment fonctionne la commande ping via quelques exemples.

Tout d’abord, nous allons lancer une commande ping sans option.

ping localhost

Nous remarquons que nous sommes obligés d’arrêter la commande en tapant les touches Ctrl + C.

Un autre exemple en pinguant l’ip de la gateway, l’ip peut être obtenue de différentes manières, en tapant la commande netstat -rn.

Voyons maintenant quelques options de la commande ping.

Option -c :
-c count => le ping s’arrête après x paquets envoyés
Exemple :

ping -c 5 mon_IP

Le test s’arrête après l’envoi de 5 paquets.

Nous allons voir le message d’erreur que nous obtenons quand une adresse IP n’est pas joignable de notre réseau :

ping 10.170.100.200

L’erreur la plus significative est : 100% packet loss => 100% de paquets perdus.

Le code retour de l’erreur est 1, nous le savons en tapant echo $? juste après avoir tapé notre commande ping. Pour en savoir plus sur les codes retour, vous pouvez aller lire l’article sur le protocole ICMP sur commentcamarche.net.

Passons maintenant à l’option -R.

Option -R :
-R Record  route => Cela nous affiche les routes utilisées par le paquet envoyé à l’hôte.

Dans notre exemple, ping de la gateway, nous avons le chemin suivant :
monIP => gateway (chemin aller)
gateway => monIP (chemin retour)

ping -R IP_GW

Nous verrons plus tard comment tester la joignabilité d’un serveur quand le protocole ICMP est bloqué sur un serveur pour des raisons de sécurité. Nous analyserons aussi d’autres options de la commande ping.

Configurer ntpd sous linux fedora 15

 

Oups, ma date est incorrecte sous Linux Fedora 15, peut-être le passage à l’heure d’hiver qui s’est mal passé. Est-ce que j’ai installé ntp sur mon ordi ?

ps -aux | grep ntp

Non aucun résulat ! Il est grand temps de configurer ntp et de le synchroniser avec un serveur ntp.

Je vais rechercher le programme ntp, je vais voir s’il est déjà installé ou pas.

find . -name « ntp »

Résultat :
/var/lib/ntp
/etc/ntp

En effet, il est déjà installé. Peut-être que c’est juste le service qui n’est pas démarré dans ce cas. Je vais vérifier :

service ntpd status

Résultat : « inactive »

Je vais donc le démarrer :

service ntpd start

Puis je vais vérifier quels sont les serveurs ntp configurés dans le fichier de configuration /etc/ntp.conf. Voilà les lignes qui m’intéressent :

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.fedora.pool.ntp.org iburst
server 1.fedora.pool.ntp.org iburst
server 2.fedora.pool.ntp.org iburst
server 3.fedora.pool.ntp.org iburst

C’est parfait mon client ntp est bien configuré avec les serveurs ntp proposés par fedora.

Dernière chose à faire : configurer ntpd pour qu’il redémarre automatiquement au démarrage de Linux.

Le script de démarrage de ntpd existe déjà dans /etc/init.d/ntpd

Il ne me reste plus qu’à ajouter les liens qu’il faut dans /etc/rc*.d afin d’activer le redémarrage automatique.

ln -s /etc/init.d/ntpd /etc/rc3.d/S74ntpd
ln -s /etc/init.d/ntpd /etc/rc2.d/S74ntpd
ln -s /etc/init.d/ntpd /etc/rc4.d/S74ntpd
ln -s /etc/init.d/ntpd /etc/rc5.d/S74ntpd

Pour quelque chose de plus propre il faut faire de même en créant des liens pour l’arrêt de ntpd à l’arrêt de l’ordinateur. Chose qui est déjà configurée sur mon linux.

Cela donne :

[root@localhost ~]# ls -l /etc/rc*.d/*ntpd
lrwxrwxrwx. 1 root root 14 12 nov.  00:16 /etc/rc0.d/K74ntpd -> ../init.d/ntpd
lrwxrwxrwx. 1 root root 14 12 nov.  00:16 /etc/rc1.d/K74ntpd -> ../init.d/ntpd
lrwxrwxrwx. 1 root root 14 12 nov.  00:16 /etc/rc2.d/K74ntpd -> ../init.d/ntpd
lrwxrwxrwx. 1 root root 16 12 nov.  00:17 /etc/rc2.d/S74ntpd -> /etc/init.d/ntpd
lrwxrwxrwx. 1 root root 14 12 nov.  00:16 /etc/rc3.d/K74ntpd -> ../init.d/ntpd
lrwxrwxrwx. 1 root root 16 12 nov.  00:17 /etc/rc3.d/S74ntpd -> /etc/init.d/ntpd
lrwxrwxrwx. 1 root root 14 12 nov.  00:16 /etc/rc4.d/K74ntpd -> ../init.d/ntpd
lrwxrwxrwx. 1 root root 16 12 nov.  00:17 /etc/rc4.d/S74ntpd -> /etc/init.d/ntpd
lrwxrwxrwx. 1 root root 14 12 nov.  00:16 /etc/rc5.d/K74ntpd -> ../init.d/ntpd
lrwxrwxrwx. 1 root root 16 12 nov.  00:17 /etc/rc5.d/S74ntpd -> /etc/init.d/ntpd
lrwxrwxrwx. 1 root root 14 12 nov.  00:16 /etc/rc6.d/K74ntpd -> ../init.d/ntpd

Rien de mieux qu’un test grandeur nature. Allez je redémarre l’ordi :
init 6

Je vérifie que le service ntpd tourne :
service ntpd status

Résultat : « active »

Un coup d’oeil au fichier /var/log/messages pour être sûre. C’est bon, je lis bien les lignes mentionnant le démarrage de ntpd au reboot de l’ordinateur.

Cet article n’est pas exhaustif. Pour en savoir plus, visitez le site ntp.org.