Thursday, September 27, 2012

Liens pratiques de la semaine

Vous trouverez dans ce billet une s�lection de liens pratiques autour des technologies Java qui m'ont particuli�rement int�ress�es ces derni�res semaines. 

Eclipse
  • Critiques li�es aux performances d'Eclipse JUNO, Mike Milinkovich tente de r�pondre
  • Un petit billet de Paul-Emmanuel qui explique comment cr�er un Splash-Screen dynamique.
  • �galement propos�e par Paul-Emmanuel, une s�rie de liens pour conna�tre ce que vos applications RCP consomment en m�moire ou comment activer les logs.
  • Une s�rie de billets (billet 1, billet 2 et billet 3) concernant les sp�cificit�s d'Eclipse 4 (mod�le d'application, injection...).
  • Eclipse Kepler, la prochaine version d'Eclipse, sort en 4.3 Millestone 2 (page des nouveaut�s et page de t�l�chargement).
  • Orion (l'IDE dans le navigateur) sort en 1.0 M2 (page des nouveaut�s et page de t�l�chargement).
Java
  • P6Spy est un proxy de pilote JDBC qui facilite la trace des requ�tes JDBC. Peut s'employer partout o� il est possible de d�finir un driver JDBC (Hibernate...). Ce billet d�taille les grandes lignes.
  • Un billet int�ressant qui montre comment mettre en �uvre du multidispatch en Java.
  • Participer au sondage sur le futur de GWT (�a prend 10 minutes)
Divers
  • D�sireux de conna�tre le jargon des programmeurs (Yoda Conditions, Gotcha...), un billet qui s'y int�resse.
  • Jetstrap un �diteur WYSIWYG pour �diter des pages bas�es sur le CSS Bootstrap.

Sunday, September 9, 2012

Liens pratiques de la semaine

Vous trouverez dans ce billet une s�lection de liens pratiques autour des technologies Java qui m'ont particuli�rement int�ress�es ces derni�res semaines.

Eclipse
  • Opal une biblioth�que de composants pour la plateforme Eclipse. Certains des composants sont un portage de la biblioth�que graphique Swing.
  • Un billet qui explique comment utiliser des biblioth�ques tiers lors d'un d�veloppement Eclipse RCP.
  • Un billet qui explique comment utiliser efficacement les validators de JFace Data Binding.
  • Ce billet d�taille comment utiliser SWT/JFace dans une application qui n'est pas bas�e sur OSGi.
  • Un retour d'exp�rience sur Tycho afin de construire des applications bas�es sur Eclipse.
  • Une astuce qui permet de supprimer les lignes vides des codes Java (id�al pour les monomaniaques).
Java
  • Une analyse sympathique sur le devenir de GWT donn�e par un contributeur Eclipse. Il cite que la d�cision de Google de lib�rer GWT � la communaut� Open Source serait comparable � la d�cision d'IBM d'offrir Eclipse � la communaut� en 2001. GWT connaitra-t-il le m�me succ�s ?
  • Un composant de s�lection pour GWT bas� sur Chosen, un plugin Javascript pour jQuery.
  • Utiliser Bootstrap avec GWT depuis ce projet.
  • Atmosphere, la biblioth�que pour faire du Push Serveur, est disponible en 1.0. Elle propose diff�rents supports (Web Sockets, SSE, Long-Pollings, HTTP-Streaming et JSONP).
  • Un petit billet qui expliquer comment commencer avec Hibernate, c'est toujours pratique d'avoir ce type d'article.
  • f5less permet de reconstruire et recharger une application Web en cours de d�veloppement lorsque vous faites un ctrl + s. N�cessite d'apr�s la documentation, une JVM assez r�cente.
  • L'arriv�e de Jetty 9 est proche, un billet qui explique les impacts n�cessaires (GWT et  GAE devront y passer un jour).
  • Jnario fournit un DSL pour l'�criture de test unitaire. C'est assez sympathique les diff�rents niveaux de langage (de la sp�cification � l'impl�mentation).
  • Un billet qui fait partie d'une s�rie sur Spring Roo. Dans celui-ci il y a une tr�s bonne pr�sentation sur le NoSQL MongoDB orient� document.
Divers
  • Bootstrap 2.1.0 est disponible. Voici la page des nouveaut�s. 
  • USB Disk Access Manager est un utilitaire qui permet de prot�ger ses ports USB.
  • La boite � outils ViewDNS propose des outils concernant la gestion des noms de domaine.
  • Un ensemble d'API en relation avec des services de m�t�o, trouv�e � l'occasion du service Google qui a disparu.
  • Une astuce qui montre comment envoyer automatiquement un email quand un utilisateur se connecte sur une machine Windows.

Wednesday, September 5, 2012

J'ai besoin ... de construire une PirateBox

Suite � un article publi� sur Le Monde, j'ai d�couvert une conf�rence vid�o de Ga�l Musquet donn�e � l'occasion du festival Pas Sage en Seine et qui pr�sentait le principe de la PirateBox. Une PirateBox est un r�seau sans fil, local qui permet d'�changer des fichiers de mani�re anonyme. L'id�e m'est alors venue de cr�er une PirateBox afin de pouvoir partager mes diff�rents outils de d�veloppements pr�f�r�s (Eclipse, Java...). Cela est aussi une occasion de d�couvrir des choses int�ressantes sur l'installation et la configuration d'un syst�me embarqu� comme OpenWRT.

L'objectif de ce billet et donc de vous pr�senter une installation d'une PirateBox. A vrai dire il s'agit d'une installation un peu particuli�re puisqu'elle ne s'est pas d�roul�e correctement. En effet, la mise � jour du firmware du routeur n'a pas r�ussi et j'ai du passer par une communication port s�rie pour r�soudre le probl�me.

Dans le cas o� vous souhaitez des tutoriels plus concis et qui montrent les �tapes pour installer une PirateBox dans les cas classiques, je vous conseille les suivants :
Pour cr�er une PirateBox, j'ai utilis� le mat�riel suivant :
  • Router TP-Link MR3020 V1.7 disponible sur Amazon,
  • Batterie Tecknet 7000 mAh pour �tre autonome au niveau de l'alimentation �lectrique. Pr�voir une capacit� �lev�e pour augmenter la dur�e ~ 14 heures disponible sur Amazon,
  • Cl� USB 32 GO pour stocker les donn�es. Il est possible d'utiliser une disque externe mais il faudra penser � l'alimenter ce qui pourra r�duire consid�rablement l'autonomie de la batterie.

Concernant le mat�riel pour la communication port s�rie, j'y reviendrai plus tard. C'est un passage oblig� s'il ne vous est plus possible de passer par la voie Ethernet.

Au niveau logiciel, j'ai utilis� :
  • Windows 7,
  • Putty pour la communication Telnet, SSH et COM,
  • le firmware OpenWR,
  • le package PirateBox.

Pour les diff�rentes �tapes, je vais suivre un ordre chronologique.

�tape 1 : d�ballage du routeur TP-Link MR3020

Ayant re�u rapidement mon routeur TP-Link MR3020 command� sur Amazon, je d�cide de me lancer dans la cr�ation de ma PirateBox. Premier constat, j'ai l'impression de d�baller un produit Apple (IPod, IPhone). L'emballage est tr�s ressemblant. Le contenu contient un routeur, une alimentation un cable USB et un c�ble Ethernet.
Emballage du TP-Link MR3020
Contenu de l'emballage du TP-Link MR3020

�tape 2 : connexion au routeur TP-Link MR3020

Je m'assure avec tout que l'interrupteur du routeur est en mode "Wisp". Je branche ensuite l'alimentation du routeur via le micro USB vers le port USB de mon portable. De m�me, je branche le c�ble Ethernet du routeur � mon portable. Enfin, je passe en WIFI afin de conserver la connexion internet sur mon portable PC.
Connexion du TP-Link MR3020
Ouvrir l'URL suivante http://192.168.0.254 � partir de n'importe quel navigateur.
Le nom d'utilisateur et le mot de passe sont 'admin'.

�tape 3 : mise � jour du firmware du routeur

Depuis le menu de gauche, choisir l'�l�ment System Tools ;
Choisir alors l'entr�e Firmware Upgrade puis s�lectionner le fichier openwrt-ar71xx-generic-tl-mr3020-v1-squashfs-factory.bin (t�l�charg� ici).
Faire la mise � jour en cliquant sur Upgrade. L'installation va proc�der et aucun message d'erreur ne devrait apparaitre. Il est ensuite indiqu� que le routeur va red�marrer.
Historiquement il ne s'agit pas du m�me fichier que j'avais utilis�. Le pr�c�dent concernait la version 1.6 du routeur et l'installation sur la 1.7 (la version de mon routeur) a abouti � un probl�me d'activation du r�seau. On va donc consid�rer par la suite que le connexion r�seau vers le routeur ne fonctionne pas.

�tape 4 : le blackout, le d�but des probl�mes

Le routeur red�marre et d'apr�s les diff�rents tutoriels que j'ai suivis, l'�tape suivante consistait � se connecter en Telnet au routeur. J'ai utilis� le Telnet de Putty via la configuration suivante :
Configuration Telnet avec Putty
Le probl�me c'est que rien ne se produisait, le routeur ne r�pondait pas. Un test ping pour s'assurer de l'existence d'une connexion active n'a rien donn�. Comme j'�tais en DHCP sur ma configuration r�seau, j'ai configur� en IP fixe pour avoir une classe d'adresses identique au routeur. Cela n'a �galement rien donn�. J'ai d�cid� de rebooter le routeur et r�it�rer les diff�rentes commandes pr�c�dentes, mais pas plus de changement.

J'ai d�couvert sur les diff�rents forums qu'il existait un Safe Mode sur le routeur. Pour l'activer, il faut �teindre le routeur et le rebrancher. D�s que la premi�re LED s'allume, il faut appuyer longtemps sur le seul bouton du routeur. Le r�sultat que vous devez obtenir est que la premi�re LED clignote tr�s rapidement. Mais le Safe Mode n'a rien chang� non plus. A cette �tape, j'ai bien pens� que mon routeur �tait mort.

�tape 5 : les forums PirateBox et le WIKI OpenWRT

Le site PirateBox contient un forum que j'ai parcouru pour tenter de trouver un message qui d�crirait � peu pr�s mon probl�me. C'�tait pas glorieux, il n'y avait pas grand chose. En fait, je me rendais compte que la version du routeur que je poss�dais �tait r�cente. J'ai donc d�cid� apr�s m'�tre assur� que le probl�me n'�tait pas r�solu de poster un message sur ce forum (Cannot connect in telnet after the OpenWRT firmware installation). Apr�s plusieurs All� / Retour sur cette discussion et sur le forum OpenWRT, j'en suis venu � la conclusion que seule une connexion via le port s�rie �tait possible.  

�tape 6 : achat du module s�rie

Depuis le WIKI d'OpenWRT pour le MR3020, une section d�crit comment communiquer via le port s�rie. Il est pr�conis� d�acheter un composant tout pr�t qui permet d'utiliser le port s�rie via une entr�e USB. En fait je ne me sentais pas capable de monter un circuit from scratch. Je me suis donc orient� vers ce module FTDI Basic Breakout - 3.3V. J'ai �galement pris cela pour que les branchements soient plus faciles.

�tape 7 : le bricolage et la soudure

Tout d'abord il faut acc�der � l'int�rieur du routeur. Pour cela il faut vous munir d'un petit pied de biche en plastique et ouvrir le couvercle c�t� LED (vous pouvez essayer avec un tournevis au risque de rayer le plastique).
Outil pour ouvrir le dessus du routeur
Il n'y a aucune vis pour retenir le circuit imprim� du routeur, retirer donc le de son logement en plastique afin de faciliter les op�rations de soudure. 

Le port s�rie est identifiable via les quatre petits fiches / trous plac�(e)s en ligne.
Identification des fiches du port s�rie du TP-Link MR3020
Deux solutions s'offraient � moi pour connecter les fils sur le circuit imprim�. La premi�re �tait de d�nuder 4 fils et d'effectuer un point de soudure pour chaque trou. Le probl�me s'est la fragilit� des fils. La seconde s'�tait d'essayer de reproduire une fiche m�le. C'est la seconde solution qui a �t� choisie. 
Pour trouver la bonne taille de connectique, j'ai utilis� des aiguilles � coudre. Pour les points de soudure, faites les par le dessous du circuit imprim�. Vous devriez obtenir le r�sultat suivant. J'ai fait un test au voltm�tre pour m'assurer que les points de soudure �taient correctement r�alis�s.

�tape 8 : connexion via le port s�rie du routeur TP-Link MR3020

Sur le routeur, la premi�re fiche est identifi�e par p1. Les fiches d�signent dans l'ordre :
  • p1 : TX
  • p2 : RX
  • p3 : GND (masse)
  • p4 : VCC
 Sur le module USB/S�rie, le r�le des fiche est directement imprim� :
  •  p1 : GND (masse)
  •  p2 : CTS
  •  p3 : Power 3.3V
  •  p4 : TX
  •  p5 : RX
  •  p6 : DTR  
Naturellement j'ai fait correspondre les TX, RX et GND. Pour le VCC, j'ai branch� l'alimentation. Toutefois, �a ne fonctionnera pas. Suivre alors les modifications suivantes.

Il faut supprimer l'alimentation (VCC) pas de p4 et intervertir TX et RX. Vous obtiendrez le r�sultat suivant :
Connexion TP-Link MR3020 avec le module FTDI Basic Breakout - 3.3V
Il faut ensuite connecter le module USB/S�rie sur votre PC et alimenter le router via le mini USB.
Il faut par ailleurs identifier le port virtuel COM employ� par le module USB/S�rie. Dans mon cas c'�tait le COM5.

Depuis l'application Putty, param�trer les informations afin d'effectuer une connexion en port s�rie en s'assurant que les param�trages suivants sont respect�s :
  • Bits per second: 115200
  • Data bits: 8
  • Stop bits: 1
  • Parity: None
  • Flow control: None
Faire Open, vous devriez maintenant obtenir une communication avec OpenWRT. Si �a ne fonctionne pas assurez-vous que lorsque vous tappotez sur le clavier de votre PC les LED du module USB/S�rie clignotent. V�rifier �galement les points de soudure et contr�ler enfin les branchements.

�tape 9 : mise � jour du firmware

A cette �tape, j'arrive � me connecter au routeur. Je peux parcourir le contenu et m'apercevoir que tout le contenu de l'OpenWRT a l'air correcte. Un reboot du routeur me permet de remarquer que le configuration r�seau pose probl�me. Il fallait donc que je trouve un moyen de mettre � jour ce firmware en m'assurant d'utiliser une version correcte pour mon routeur. J'ai pris le parti d'utiliser une cl� USB et de d�poser le firmware d�zipp� dedans.

Depuis Windows, copier le nouveau firmware d�-zipp� sur une cl�.

Brancher cette cl� sur le routeur et proc�der � son montage
 mount /dev/sda1 /mnt/usb
Copier le firmware dans le r�pertoire /tmp

Ex�cuter cette instruction et attendez que la mise � jour soit termin�e
mtd -r write openwrt-ar71xx-generic-tl-mr3020-v1-squashfs-factory.bin firmware

�tape 10 : installer PirateBox

Pour le reste de l'installation de la PirateBox, je ne vais pas faire un copier/coller des nombreux tutoriels qui existent. Vous pouvez suivre celui-ci qui est tr�s bien fait.

Conclusion

Au d�but de ce challenge, je ne pensais pas qu'il allait m'arriver ce genre de m�saventure. En y r�fl�chissant, je ressentis lors du plantage une certaine frustration du fait que j'avais achet� le routeur et que peut �tre il ne me servirait pas � grand chose. Un peu de patience, des recherches sur Internet, des gens motiv�s et le tour est jou� : j'ai maintenant ma PirateBox.