Java, Ubuntu, ...

Aller au contenu | Aller au menu | Aller à la recherche

jeudi 31 juillet 2008

How to speed up the GWT compiler ? (Part I)

English version

I am working on an international CRM project based on JDK 6, GWT 1.5, MyGWT/Ext GWT, tomcat 6, maven, hibernate, spring, Oracle, ...

This business application must worked with Firefox 2, IE 6/7 and 9 locales (the target is about 15 locales).

This a very large GWT application and it takes a long time to compile, about 12 mn "only" for GWT maven module : this is a long time in development mode.

GWT spends time to compute permutations : create javascript file per browser/locale. With this kind of application, GWT produces 50 permutations :

  • 5 browsers : ie6, opera, gecko1_8, safari, gecko
  • 10 locales : default, de_DE, en_UK, fr_FR, hr_HR, hu_HU, it_IT, nl_NL, pl_PL, pt_PT

This is my module.gwt.xml :

<module>
    <!-- Inherit the core Web Toolkit stuff. -->
    <inherits name="com.google.gwt.user.User" />
    <inherits name="com.google.gwt.i18n.I18N" />

    <!-- Add support -->
    <inherits name="com.aaa.bbb.ccc.XXXCore" />
    <!-- Add mygwt support -->
    <inherits name="net.mygwt.ui.MyGWT" />
    <!-- Add hibernate4gwt support -->
    <inherits name="net.sf.hibernate4gwt.Hibernate4Gwt" />
    <inherits name="net.sf.hibernate4gwt.SqlDates"/>
    <!-- Add gwt-log support -->
    <inherits name="com.allen_sauer.gwt.log.gwt-log" />

    <!-- Add ftr-gwt-library-date -->
    <inherits name='org.cobogw.gwt.user.User' />
    <inherits name="eu.future.earth.gwt.FtrGwtLibrary" />

    <!-- GWT locale -->
    <extend-property name="locale" values="de_DE" />
    <extend-property name="locale" values="en_UK" />
    <extend-property name="locale" values="fr_FR" />
    <extend-property name="locale" values="hr_HR" />
    <extend-property name="locale" values="hu_HU" />
    <extend-property name="locale" values="it_IT" />
    <extend-property name="locale" values="pt_PT" />
    <extend-property name="locale" values="pl_PL" />
    <extend-property name="locale" values="nl_NL" />

    <!-- Logging -->
    <extend-property name="log_level" values="DEBUG,INFO,WARN,FATAL,EROR,OFF" />
    <set-property name="log_level" value="INFO" />

    <!-- Turn off "DivLogger" -->
    <set-property name="log_DivLogger" value="DISABLED" />

    <!-- Specify the app entry point class. -->
    <entry-point class="com.aaa.bbb.ccc.XXXEntryPoint" />

</module>

The main idea is to reduce permutations.

How to speed up the GWT compiler ? (Part II).

How to speed up the GWT compiler ? (Part III).

French version

Coming soon.

dimanche 15 juin 2008

ViewSVN en ligne de commande

Lancer mon navigateur et cliquer sur chaque répertoire de l'arborescence et enfin choisir le fichier pour voir les diffs, c'est un peu lourd. Bien sûr on peut faire des svn diff entre révision. Mais, sachant qu'en général on a un checkout local, pourquoi ne pas faire un petit script ?

Soit le repository svn : subversion.bazoud.com.

Et le viewsvn : viewsvn.bazoud.com

sudo vi /usr/local/bin/viewsvn :

#!/bin/sh

firefox `svn info $1 | awk  '/^URL/ { print $2 }' | sed 's/subversion.bazoud.com/viewsvn.bazoud.com\/viewvc/g'`
sudo chmod +x /usr/local/bin/viewsvn

Et là, on tape :

viewsvn path/to/my/file

Et firefox s'affiche avec la bonne page de viewsvn :)

vendredi 30 mai 2008

SVN Diff en couleur

Pour mieux visualiser les diff svn, vous pouvez les coloriser.

vi svndiff

Copier/coller le script dans svndiff

#!/bin/sh
svn diff $@ 2>&1 | colordiff

Et le placer dans /usr/local/bin

mv svndiff /usr/local/bin
sudo chmod +x svndiff

Et voilà, maintenant plus d'excuses pour louper un merge.

mardi 8 mai 2007

Commandes utiles SVN

Quelques commandes utiles pour SVN à garder sous le coude :

1. Edite le svn:ignore du répertoire courant :

svn propedit svn:ignore .

2. Affecte les mots clés 'Id' et 'Author' au fichier Test.java :

svn propset svn:keywords "Id Author" Test.java

3. Pour faire la même chose mais sur un existant :

find . -name "*.java" | grep -v '\.svn' | while read n; do svn propset svn:keywords 'Id Author HeadURL Revision Date' $n; done