jan 05

Suite à mes tests avec les AVR d’ATMEL et l’implémentation logicielle USB, j’ai testé l’interface avec la plateforme hardware via un script python s’appuyant sur le module python usbtiny fourni avec l’implémentation logicielle USB.

Un problème qui me bloque actuellement est l’utilisation de cette interface de communication sous Mac OS X.

J’ai installé la libusb (téléchargée depuis un projet développé pour utiliser des scanners sous Mac OS X). Les fichiers installés semblent se trouver dans  /usr/local/lib, /usr/local/include. Dans la version linux, le wrapper utilisé pour communiquer entre le module python et la libusb avait été généré automatiquement par Swig. Le fichier libusb.py généré contient la ligne “import _libusb” qui doit faire référence au fichier _libusb.so dont le type ne correspond pas à une librairie sous Mac OS X :

ImportError: dlopen(./_libusb.so, 2): no suitable image found.  Did find:
./_libusb.so: unknown file type, first eight bytes: 0×7F 0×45 0×4C 0×46

Une piste qui explique comment générer un wrapper avec Swig sous Mac OS X (et les différences avec la génération du wrapper sous Linux).

Suite au prochain épisode…

written by Mathias

déc 03
  1. Identifier les tâches chronophages
  2. Associer à chaque tâche une liste de solutions
  3. A chaque solution sont associés:
  • les besoins (métier)
  • les contraintes (techniques)
  • les bénéfices supplémentaires (directs / indirects = solution fille)
  • les moyens à mettre en oeuvre
  • les points positifs/négatifs

    Exemple:

    • Tâche: changement d’environnement local distant

    Solution 1: rendre le changement d’env transparent

    • Accéder depuis le réseau interne à la même adresse que depuis l’extérieur
    • Conf réseau du Cisco à adapter
    • Mise en place d’un proxy pour rediriger correctement en intern les requetes d’acces à l’adresse externe

    Solution 2: automatiser le changement d’env (réduire le nombre d’opérations à effectuer)

    • Script automatisant le changement d’environnement (automatiser le switch –relocate)

    written by Mathias

    nov 20

    Les cookies c’est le mal mais des fois ça peut sauver la vie… ou presque :)
    Sur certains sites, les champs login et password sont pré-remplis (j’imagine grace aux données récupérées dans des cookies)… On perd donc l’habitude de taper ce password et le jour où on change de machine… impossible de s’en souvenir.
    Le code javascript suivant permet de révéler le password affiché en toutes lettres à la place des gros points noirs.


    var allElements = document.getElementsByTagName("*");
    for (var i = 0; (element = allElements[i]) != null; i++) {
    if ("password" == element.type){
    $('PASSWD').type="text"
    }
    }

    written by Mathias

    août 25

    Quelques idées de trucs sympas (et complètement inutiles) qui peuvent donner un joli bureau sous Linux/Ubuntu :

    • AWN avant-window-navigator Barre de lancement animée (cf Dock de Mac OS)
    • Compiz on ne le présente plus / Fusion 3D
    • Plymouth qui donne un rendu graphique pendant le boot (ou grub-gfx …)
    • gDesklets à retester pour voir si c’est plus stable qu’à l’époque de mes premiers tests…
    • adesklets / screenlets
    • Conky A interfacer avec des scripts sur un serveur pour monitorer l’etat des disques… (cf ici) avec une connection ssh sans password au serveur + qq scripts pour récupérer les principales infos pour pouvoir les afficher sur mon poste (ou à défaut, un truc du style Eterm -O0xqC –buttonbar 0 –scrollbar 0 –no-cursor -f green –exec ssh login@serveur “/usr/bin/tail -f /var/log/syslog”)
    • GKrellM (a l’air moins configurable niveau visu… à tester)
    • Tilda

    Dans les autres trucs à installer/tester :

    • Dropbox pour partager les fichiers entre Mac Linux & Windows
    • gnome-do

    Ca peut toujours etre utile :

    Une distrib à tester : ELive (Debian + e17)

    written by Mathias

    août 20

    Juste une idée d’un petit projet qui pourrait prendre quelques soirs dans la semaine (ou plus si affinité) : à la suite de la lecture d’un article sur l’organisation de la fuite d’informations depuis un poste distant dans le MISC n°44 de cet été (juillet/aout 2009), je me dis que pour tester, il pourrait être intéressant d’utiliser une broche d’un AVR typiquement reliée à une led pour lui permettre de communiquer avec le monde qui l’entoure. En résumé utiliser les 2 états (éteint/allumé) et/ou le temps d’allumage (…) pour transmettre des bits à l’environnement extérieur.

    Cette petite expérience ne nécessite pas beaucoup de matos (voire même aucune modification matériel sur du matos existant) mais nécessite néanmoins quelques tests pratiques pour définir des valeurs correctes.

    L’autre partie intéressante de cette expérience serait d’utiliser un capteur (iSight, photodiode/photorésistance voire pourquoi pas LED…) pour pouvoir décoder en temps réel les informations transmises par le montage.

    Ce principe serait/devrait aussi être applicable en utilisant le son comme media de communication…

    Le dévéloppement d’une petite bibliothèque AVR et de petits utilitaires côté hôte pourrait être très pédagogique.

    written by Mathias

    oct 23

    Après quelques rapides recherches sur Google, il s’avère que certains ubunteros ont fait fonctionner ce lecteur d’empreintes digitales sur des configurations matérielles proches de la mienne. Donc pourquoi pas moi ? :)

    Le site de référence.

    1. Téléchargement des sources de libfprint et tentative de configuration…
    2. Manque libcrypto
    3. Pas de réponse de yum à ce sujet
    4. Installation d’un nouveau repository :
    5. Finalement pas mieux, mais un doute s’empare de moi :
      • [mathias@localhost libfprint-0.0.6]$ ls /lib/libcrypt*
        /lib/libcrypt-2.5.so      /lib/libcrypto.so.6
        /lib/libcrypto.so.0.9.8b  /lib/libcrypt.so.1
    6. "you might have missed to install the -dev or -devel package (like
      libssl-dev) which provides the pkg-config file (ie
      /usr/lib/pkgconfig/libcrypto.pc and the like)."
    7. sudo yum install openssl-devel
    8. pkg-config –exists –print-errors openssl; echo $? –> 0  \o/
    9. sudo yum install ImageMagick-devel
    10. ./configure
    11. make
    12. sudo make install
    13. Téléchargement de fprint-demo
    14. ./configure && make && sudo make install
    15. Téléchargement pam_fprint
    16. ./configure && make && sudo make install
    17. pam_fprint_enroll –enroll-finger 7
    18. sudo vim /etc/pam.d/system-auth
      • auth        required      pam_env.so
        > auth       sufficient   pam_fprint.so
        > auth       sufficient   pam_fprint.so
        > auth       sufficient   pam_fprint.so
      • 3 tentatives de fingerprint successives au cas où la première ne suffirait pas
    19. Test…. OK \o/

      written by Mathias

    sept 30

    Pour éviter de partir dans plein de projets différents sans jamais rien finir, je me dis que le concept de “Projet de la semaine” pourrait être simpa : énoncé du projet le lundi soir, étude, implémentation/prototype dans la semaine (voire 2 semaines pour les projets un peu plus conséquents) et publication d’un résumé et mise à disposition des sources le dimanche soir…

    Pour le moment, le projet DeezerNotifier n’est pas terminé donc pour cette semaine, ça restera le fil rouge.

    En ce qui concerne la suite, quelques idées qui me passent par la tête :

    • Interfacer un AVR avec un écran de 3310 (ce qui nécessitera je pense une semaine pour voir comment organiser les projets AVR avec X-Code, comment rendre les sources accessibles depuis le net…)
    • Interfacer un AVR avec un GPS (…)
    • Page récapitulative des projets tracs hébergés sur une même machine (1 dev doit pouvoir consulter rapidement tous les tickets le concernant, doit pouvoir voir tous les tickets récemment saisies mais non affectés, etc)
    • Interface IR pour commander mon APN.
    • Interfacer un AVR avec un moteur pas-à-pas (type lecteur de disquette)
    • Interfacer un AVR avec un moteur CC via LN297 ou autre (nécessitera du matos que je n’ai pas…)
    • Interfacer un AVR avec une carte mémoire (SD ? pour limiter l’investissement dans la connectique)
    • Interface FM pour sortie audio d’un PC –> broadcast de mes playlist dans les pièces de l’appart
    • Interface AVR pour radio traffic ?
    • Mettre en place les différents modules nécessaire à la réalisation du “radio réveil” évoqué dans un post précédent.
    • Notifier gmail pour Gnome (via send-notify || zenity) & Mac OS via (Growl)
    • JTAG pour AVR
    • Et plein d’autres encore…

    written by Mathias

    sept 19

    Depuis quelques temps, le fonctionnement de Deezer a changé : il ne lit pas automtiquement tous les résultats d’une recherche, il faut clicker sur chaque résultat…

    Du coup, j’écoute plus les radios (avec une préférence pour la radio Covers), mais à chaque nouvelle chanson, je suis obligé d’arrêter ce que je fais pour revenir sous Firefox et voir sur Deezer le titre et l’artiste du morceau en cours de lecture. Je me demandais donc s’il n’était pas possible d’avoir une notification avec les informations relatives au morceau en cours (comme le font rythmbox & consort).

    Après une recherche rapide et infructueuse, je me suis orienté vers le développement d’une solution perso, j’ai donc installé wireshark (tcpdump/ethereal/… ce que vous voulez) et sniffé mon interface réseau pendant que je jouais quelques morceaux sous Deezer : les informations concernant le morceau en cours de lecture transitent en clair.

    J’ai ensuite codé un morceau de code en C à grands renforts de tutoriaux libpcap et de sites internets dédiés à la programmation en C : lecture des trames réseaux concernées et extraction de certaines infos de ce paquet (via une routine roulée à la main sous les aisselles) : titre, artiste et album, et utilisation d’un outil system “send-notify” pour afficher ces infos.

    Bon j’ai pas fait des miracles : je n’ai pas fait de C depuis plus de 10 ans (hormis quelques manipulation de bits dans des “hello world” embarqués… résultat : des segfaults :) mais un début de proof of concept !

    Next step : meilleur filtrage des trames,  ne pas se concentrer sur l’analyse trame par trame mais envisager les communications dans leur ensemble (requete + reponse), utilisation de musicBrainz pour obtenir d’avantage d’infos ? Récupérer aussi l’image de la couverture de l’album en cours pour affichage dans la notif…

    A suivre.

    written by Mathias

    juin 05

    Une note dans le cadre de développement Java sous Eclipse (3.3) :

    Pour se conformer à des coding conventions précises, il peut être intéressant d’utiliser des plugins visant à améliorer la qualité du code java (je pense notamment à CheckStyle et PMD), il y a cependant parfois certaines mauvaises pratiques pas facile à détecter avec ces outils (bien qu’en se penchant un peu plus sur PMD et son AST, je pense qu’il est possible de faire pas mal de choses…).

    Dans mon cas, je recherchais un moyen de détecter des patterns particuliers, en gardant à l’esprit l’idée de ne pas se focaliser sur un plugin Eclipse pour pouvoir intégrer cette détection dans un processus automatique (scripté autour de ANT). Je me suis donc tourné vers Spoon qui permet d’écrire ses propres Processor qui peuvent alors être [packagés en spoonlets pour être] utilisés par le plugin Eclipse qui va bien ou bien par un script sans interaction utilisateur.

    En cas de panne ou d’hésitation lors du développement d’un nouveau spoonlet, les sources des spoonlets existants peuvent [beaucoup] aider.

    written by Mathias

    mai 09

    L’idée : faire un radio réveil avancé à partir d’un PC.

    Bios : wake up automatique à 6h00 tous les matins.

    Lancer la tache “réveil” avec un crontab.

    La tach réveil:

    1. Détecter présence sur place (mode local/distant) via bluetooth du tel en attendant de trouver mieux.
    2. Syncronisation du calendrier interne avec calendrier publié sur le net (Google Calendar) qui doit etre à jour (ou avec calendrier téléphone via bt ?)
    3. Récupération heure de réveil pour le jour de la semaine (fichier de configuration par défaut)
    4. Recherche d’événement spécifique pour la journée d’aujourd’hui (chaque jour de la semaine, vacances scolaires, jour férié…)
    5. A partir du calendrier + hre par défaut (+ jour férié ?) –> détermination de l’hre du réveil
    6. Réveil :
      • Si mode distant : mise à jour calendrier google pour etre prévenu par sms du réveil (avec récapitulatif événements de la journée ?… pas forcément utiles car un sms envoyé par google X minutes avant chq événement)
      • Si mode local : allumage de la chaine (envoi signal IR via un boitier USB ?) mesure du bruit local, lancement lecteur musique au volume le plus bas, puis augmentation du volume progressive (rapide au départ jusqu’à ce que la valeur mesurée atteigne un seuil fixé (fichier de propriétés), ensuite augmentation progressive. Lors de la réception d’un signal IR (de la télécommande) ou clavier () interruption de la lecture (voire, si aucune autre action prévue, arret du PC / mode veille prolongée pour réveil plus rapide).

    Reste à faire : tout.

    Problèmes potentiels :

    • lancement de taches alors qu’aucun user n’est loggé (sauf peut etre en cas de wake up suite à une veille prolongée…)
    • Sécurité : hébergement chez hébergeurs gratuits (eg free) => http… voir possibilité hébergement https ou autres options pour sécuriser les transactions

    A lire :

    written by Mathias