Publié le 30 Septembre 2011

Juste un lien vers un tutoriel particulièrement intéressant sur le design d'application GWT en utilisant le pattern MVP (Model, View, Presenter).

Le tutoriel est très bien fait en commençant par une application simple, en abordant les stratégies d'optimisation des tests puis viennent des notions plus complexes (dans la 2e partie notamment) fortes utiles dans une application "real life".

http://code.google.com/webtoolkit/articles/mvp-architecture.html

Voir les commentaires

Rédigé par Bliz

Publié dans #GWT

Repost 0

Publié le 26 Septembre 2011

Par défaut le driver JDBC pour MySQL charge toutes les lignes retournées par une requête SQL.

Ce comportement convient parfaitement pour les requêtes qui retourne un nombre de ligne assez restreint. Leur accès sera ainsi plus rapide.

 

En revanche pour les requêtes qui retournent plusieurs milliers de lignes, ce comportement n'est pas du tout souhaité. Le chargement de plusieurs Mo d'un coup en mémoire peut entrainer un ralentissement de toute l'application.

Dans ces cas il est préférable de ne charger les lignes en mémoires qu'au fur et à mesure qu'on en a besoin dans notre code.

C'est possible mais pas du tout évident. Il faut passer les bons flags au driver JDBC lors de la construction de la requête:

CallableStatement statement = mySqlConnection.prepareStatement("SELECT * FROM une_grosse_table", ResultSet.TYPE_FORWARD_ONLY,  ResultSet.CONCUR_READ_ONLY);
statement.setFetchSize(Integer.MIN_VALUE);

if(statement.execute()){
   ResultSer rs = statement.getResultSet();
   // parcourir le result comme habituellement
}

Cela s'effectue dont grâce à la méthode setFetchSize() en lui passant la valeur spéciale Integer.MIN_VALUE.

Mais il faut également passer les flags TYPE_FORWARD_ONLY et CONCUR_READ_ONLY pour pouvoir modifier le fetch size.

Voir les commentaires

Rédigé par Bliz

Publié dans #Java

Repost 0

Publié le 23 Septembre 2011

Maven est surtout utilisé pour compiler des projets java mais on peut aussi l'utiliser pour les exécuter avec la commande suivante:

mvn exec:java -Dexec.mainClass=com.myProject.myMainClass -Dexec.args="arg0 arg1"

Bien sûr l'option -Dexec.args n'est pas nécessaire s'il n'y a pas d'argument à passer.

Voir les commentaires

Rédigé par Bliz

Publié dans #Maven

Repost 0

Publié le 21 Septembre 2011

La commande wget est un client pour les protocoles HTTP, HTTPS et FTP.

Elle permet de tester facilement des services web en envoyant une requête post.

Le plus simple est d'écrire le contenu de la requête dans un fichier texte (ma_requete.xml par exemple).

Puis de lancer la commande:

wget -qO- --post-file ma_requete.xml http://mon.web.service.com/

(l'option -qO- permet de rediriger le contenu de la réponse vers la sortie standard)

Voir les commentaires

Rédigé par Bliz

Publié dans #Linux

Repost 0

Publié le 5 Septembre 2011

Après avoir récemment migrer vers GWT 2.3 je me suis aperçu que les actions déclenchées par des pressions de la touche Entrée ne fonctionnait plus sous Firefox.

Voici le code que j'utilisait:

 

myTextField.addKeyPressHandler(new KeyPressHandler(){
    @Override
    public void onKeyPress(KeyPressEvent event)    {
        if (KeyCodes.KEY_ENTER == event.getCharCode())        {
            // do something
        }
    }
});

 

Le problème est que sous Firefox event.getCharCode() retourne 0 au lieu de 13.

La solution consiste a passer par un NativeEvent comme ceci:

if(KeyCodes.KEY_ENTER == event.getNativeEvent().getCharCode())

et là tout remarche comme avant!

Voir les commentaires

Rédigé par Bliz

Publié dans #GWT

Repost 0