Skip to content

Date archive for: février 2008

Compiler du source Java dans un programme Java

Avec Java 6, il est possible de compiler un source Java directement depuis vos programmes.

Voici la marche à suivre :

Créez des instances de JavaCompiler et StandardJavaFileManager.

JavaCompiler jc = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager sjfm = jc.getStandardFileManager(null, null, null);

Ensuite, ajoutez une tâche de compilation au compilateur Java. La méthode getJavaFileObjects accepte plusieurs paramètres qui permettent de soumettre plusieurs compilations simultanément.

File javaCode = new File(« c:/java/fr/toto/CompilerTest.java »);
String[] opts = new String[]{« -d », « c:/classes »};
Iterable codeObject = sjfm.getJavaFileObjects(javaCode);
jc.getTask(null, sjfm, null, Arrays.asList(opts), null, codeObject).call();
sjfm.close();

S’il n’y a pas d’erreurs, la classe compilée est générée dans c:/classes.

Après cette compilation, cette classe est prête à être chargée dans le programme.

File classesMap = new File(« c:/classes »);
URL[] urls = new URL[]{classesMap.toURL()};
URLClassLoader ucl = new URLClassLoader(urls, cl);
Class clazz = ucl.loadClass(« fr.toto.CompilerTest »);

Et ça roule !  Magique !!

[ Compile Java code in a Java program ]

Trier des données numérique dans un VARCHAR

Sous MySQL, voici une petite astuce rapide quand on ne se souvient plus de la syntaxe de la commande CAST.

Pour trier une colonne de type VARCHAR avec un tri standard, on obtient :

mysql> SELECT colonne FROM ma_table ORDER BY colonne;

colonne
=======
100
1000
10000
200
2000
20000

Maintenant, si on souhaite faire un tri numérique sur cette colonne, il existe une méthode très simple :

mysql> SELECT colonne FROM ma_table ORDER BY colonne+0;

colonne
=======
100
200
1000
2000
10000
20000

Vous avez repéré la différence ? Vous faites un order by colonne+0, qui déclenche automatiquement un CAST.

[ Sorting VARCHAR data in mysql ]

Des onglets avec Putty

Putty, voici une application qui est pratique pour travailler sur des serveurs distants (je parle de serveurs dignes de ce nom, pas de serveurs Windows 😉 ).

Seul « problème » : Il n’est pas possible d’avoir des onglets pour chaque session ouverte.

Et bien maintenant, si, grâce à Putty Connection Manager.

PuttyCM

Putty Connection Manager encapsule les instances de Putty que vous lancez dans un environnement gérant les onglets et les connexions que vous avez enregistrer (il est compatible avec les sessions définies sous Putty).

C’est sous Windows et c’est gratuit !

[ PuTTY Connection Manager ]