Home CV Coding Général Linux Nokia 770 Windows WRT54G

26 dec.

Debian GWT - Exception lors du lancement du debugger

Je m'amuse depuis peu sur ma Debian Testing avec la librairie GWT, le bonheur de faire du web par le java :p

Pour lancer le debugger par le mode console avec la commande du type MyApplication-shell, j'obtenais une erreur qui m'empêchait de lancer le navigateur intégré pour tester mon appli:

** Unable to load Mozilla for hosted mode ** java.lang.UnsatisfiedLinkError: /home/xxx/mozilla-1.7.12/libxpcom.so: Can't load IA 32-bit .so on a IA 32-bit platform

On peut résoudre ce désagrément en réinstallant la lib stdc++ en version 5:

apt-get install libstdc++5

Tout devrait rentrer dans l'ordre :)


24 nov.

Java - Test de performance (profiling)



Petit dépoussiérage du blog pour vous présenter un profiler, ou outil de test de performance pour des applications Java: Profiler4j.

Très simple d'installation, vous pourrez paramétrer des règles de filtrage de packages et ainsi surveiller des classes précises et leur fonctions dans votre programme.

Les graphiques générés permettent de rapidement détecter les méthodes gourmandes en temps et en mémoire. Bref que du bon !

Le site: profiler4j.sourceforge.net


26 mai.

Fondation Good Fun pour le Cambodge

Je vous présente l'association humanitaire fondée par mon oncle et ma tante afin d'aider les enfants du Cambodge. La fondation leur offre des soins médicaux de première nécessité ainsi qu'une scolarité normale.
Un grand bravo à tous les acteurs de ce projet pour leur inlassable dévouement envers les plus défavorisés.
Le site Web: Fondation Good Fun pour le Cambodge.

N'hésitez-pas à les soutenir !


13 avr.

WRT54G - Client DynDns avec interface WAN en DHCP



Dans un de mes précédents billets, j'expliquais comment installer un client DynDns sur le routeur WRT54G ayant le firmware Openwrt WhiteRussian (cf: openWRT: Installer un client dyndns ).

J'ai changé de FAI (le câble) et me voilà avec un modem qui n'utilise plus le protocole pppoe pour la communication routeur/modem, mais fait office de serveur DHCP afin d'attribuer l'adresse Ip public à l'interface WAN du WRT54G. J'ai donc désactivé le pppoe sur le WAN pour passer en DHCP. Bilan des courses, mon routeur n'arrivait plus à communiquer avec dyndns.org suite à une option dans le fichier ip-up (les détails dans le lien vers le tuto au dessus) précisant l'interface. En DHCP ppp0 n'existe plus, il faut préciser directement l'interface du WAN, pour ma version de routeur j'ai ceci:

/usr/sbin/ez-ipupdate -S dyndns -u USER:PASSWORD -h DOMAINE.dyndns.org -i vlan1

Pour vérifier quelle est votre interface WAN, consultez le tableau sur le wiki OpenWrt: OpenWrtDocs/Configuration et adaptez votre fichier.

:)

Edit: Petit soucis pour cette astuce, le script ip-up n'est plus exécuté car on n'est plus en pppoe. Il faudrait qu'il soit lancé lors de la demande de bail pour l'ip. En attendant je lance le script toute les 12h avec cron. A suivre.


25 jan.

Java J2EE Struts - InvalidCancelException



Si vous utilisez le bouton cancel pour annuler un formulaire et que vous avez par exemple dans le fichier struts-config.xml:

<action input="/loginForm.jsp"
name="NewStrutsActionForm"
path="/login"
scope="request"
type="com.myapp.struts.NewStrutsAction">
<forward name="success" path="/loginSuccess.jsp"/>
<forward name="cancel" path="/loginCancel.jsp"/>
</action>

Vous avez peut-être obtenu en cliquant sur ce bouton une erreur:

Exception: org.apache.struts.action.InvalidCancelException

La cause est qu'à partir de la version 1.2.9 de Struts, pour des raisons de sécurité une propriété à été ajoutée: cancellable qui est à false par défaut et n'autorise donc pas l'annulation d'un formulaire.

Pour y remédier il faut donc mettre cette propriété à true comme ci-dessous:

<action input="/loginForm.jsp"
name="NewStrutsActionForm"
path="/login"
scope="request"
type="com.myapp.struts.NewStrutsAction">
<forward name="success" path="/loginSuccess.jsp"/>
<set-property property="cancellable" value="true"/>
<forward name="cancel" path="/loginCancel.jsp"/>
</action>


04 jan.

Xfce4 - Autoriser l'utilisateur d'éteindre le pc


Pour donner le droit d'extinction ou de redémarrage de l'ordinateur à un utilisateur, la façon la plus simple (et qu'il faut donc utiliser !) est d'ajouter ce user dans le groupe shutdown.

Par exemple pour rajouter notre célèbre toto, tapez cette commande en Super utilisateur ou en Root:

adduser toto shutdown

:)


25 dec.

Xfce4 - Programme au démarrage


On voit sur beaucoup de sites que pour lancer un programme au démarrage sous Xfce, il faut ajouter un fichier script qui démarrera l'application dans le répertoire ~/.config/autostart. Néanmoins il existe un utilitaire graphique: xfce4-autostart-editor qui vous permet facilement d'ajouter une application à exécuter à l'ouverture de votre session.
Vous obtiendrez un fichier .desktop dans le répertoire ~/.config/autostart.

Si vous souhaitez que votre application démarre quelle que soit la session, copiez le fichier .desktop dans le répertoire /etc/xdg/autostart :)


03 dec.

Réouverture des commentaires

Allez hop, les commentaires sont de nouveau disponibles, je vais tester un nouveau filtre de spams: spamclear.
Merci à son auteur et à Pthichat pour l'info ;)


23 nov.

Mutex - Zone critique et rendez-vous

Petit pense bète sur ce concept très pratique, mais qui peut parfois s'oublier très facilement. Pour ceux qui ne connaissent pas, il s'agit de gérer une zone partagée entre différents processus, pour notre cas, il y en a 2, un lecteur et un rédacteur. Le mutex permet de protéger cette zone critique afin que le lecteur ne lise pas la donnée en même temps que le rédacteur y écrive une information. Nous avons également besoin de savoir quand est-ce que le rédacteur a modifié la donnée protégée, on utilise pour cela le concept du rendez-vous.

Comme convention:

  • P(x) signifie que nous prenons le mutex, ici cette fonction sera bloquante (on ne progresse pas tant qu'on n'a pas reçu le mutex).
  • V(x) signifie que nous relâchons le mutex.

Nous aurons besoin de 2 mutex: m1 et m2, ils sont tout les 2 initialisés à l'état "pris".

Processus 1: Le rédacteur

Ecriture dans la zone critique
V(m1)
P(m2)
V(m1)
P(m2)

Processus 2: Le lecteur

P(m1)
V(m2)
Lecture dans la zone critique
P(m1)
V(m2)

Voilà, ce n'était pas plus compliqué que ça ;)


20 nov.

OpenWrt RC6 - La release disponible


La release du firmware OpenWrt RC6 est enfin disponible depuis le début de ce mois. cette version sera la dernière dans la branche de développement nommée whiterussian, l'équipe de développement rentre dans une nouvelle branche nommée kamikaze.


Les changements majeurs:

  • mini_fo

The symlinks from jffs2 to squashfs are gone, now squashfs is mounted on /rom and jffs2 is mounted on /jffs. The / is a virtual directory containing the combined contents.

  • timing fixes

The bogomips calibration on some routers was wrong, leading to long delays and poor performance; this should be fixed in rc6.

  • New diag module

This is what controlls the leds and the buttons; now leds are /proc/diag/led and buttons trigger hotplug scripts in /etc/hotplug.d/button. (Now you can also press any button at startup to enter failsafe mode)


Release notes
Download
ChangeLog