ZeServeur

La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information…

Affichage des articles dans Dev

computing_occurs

Depuis longtemps, je sais qu’il faut bufferiser ses fluxs lorsqu’on lit ou qu’on écrit… oui, mais la question qui m’a souvent été posée, c’est « dans quelle mesure ? quelle est l’ordre de grandeur ? ».

J’ai donc fait un petit benchmark pour avoir, des mesures, de ce gain de performance… et c’est assez hallucinant! J’obtiens des facteurs de 22 en lecture et 35 en écriture!

poursuivre la lecture…

Une nouvelle version (0.2.7) du connecteur Mylyn pour Quality Center est disponible en téléchargement.

Cette dernière corrige essentiellement des bugs/évolutions autour des liens et des pièces jointes.

Update Site : http://qcmylyn.sourceforge.net/update/

Homepage: http://qcmylyn.sourceforge.net/

cleanupC’est un fait: sur une grosse application développée puis maintenue par plusieurs personnes, on finit pas avoir pas mal de code mort…

Une première solution est d’utiliser le clean up d’Eclipse ; on arrive ainsi à supprimer certains attributs non utilisés… mais ça ne va guère plus loin.

L’idée serait donc beaucoup plus radicale: passer un outil sur tout le code.

Heureusement (encore), Eclipse vient nous sauver la vie :)

  1. Commençons tout d’abord par télécharger Eclipse Core Tools: http://www.eclipse.org/eclipse/platform-core/updates/
  2. Sélectionner le projet/package/classe sur lequel passer l’outil
  3. Via le menu contextuel, cliquer sur Find Unreferenced Members. Le résultat de la recherche s’affiche dans la Search View
  4. Sortez la hâche…

Par contre, attention: il est possible que certaines classes apparaissent comme non utilisées alors qu’elles sont appelées par un point d’extension!

Le problème avec les Table SWT, c’est qu’il y a toujours une colonne bien moche à droite de la table…

Pour se passer de cette foutue colonne vide, il suffit d’utiliser le TableColumnLayout pour avoir un rendu de ce genre:

Voilà un petit bout de code qui peut aider:

  1. // Création d'un composite qui contiendra la table
  2. Composite lComp = new Composite(shell, SWT.NONE);
  3. Table lTable = new Table(lComp , SWT.BORDER SWT.V_SCROLL);
  4. lTable .setHeaderVisible(true);
  5. lTable .setLinesVisible(true);
  6. // Création des colonnes
  7. TableColumn lCol1 = new TableColumn(lTable, SWT.NONE);
  8. lCol1 .setText("Colonne 1");
  9. TableColumn lCol2= new TableColumn(lTable, SWT.NONE);
  10. lCol2.setText("Colonne 2");
  11.  
  12. // Création du layout
  13. TableColumnLayout lLayout = new TableColumnLayout();
  14. lComp.setLayout( lLayout );
  15. // Définition du poids des colonnes
  16. lLayout .setColumnData( lCol1, new ColumnWeightData( 40 ) );
  17. lLayout .setColumnData( lCol2, new ColumnWeightData( 100 ) );

Voilà un petit problème qui arrive de temps en temps avec Eclipse et ses classloaders:

Supposons que un plugin A ait déclaré une dépendance vers un plugin B.

Question: comment on fait pour que B ait quand même visibilité sur A?

La, vous allez me dire: c’est un peu tordu quand même… c’est que ton découpage de plugins est mal foutu! Et bien non, ça peut arriver lorsque par exemple on utilise des fichiers de configuration qui sont déclarés dans A, mais qui sont utilisés par B.

Solution:

Il suffit de déclarer ce mécanisme dans les fichiers MANIFEST.MF :

  • dans le plugin partagé qui a besoin d’accéder aux classes externes (B) :
    Eclipse-BuddyPolicy: registered
  • dans le (ou les)  plugin(s) qui utilise(nt) B (A dans notre cas):
    Eclipse-RegisterBuddy: <nom du plugin partagé>

C’est une manière implicite (qui s’appelle du « Buddy Class Loading« ) de déclarer la relation dans l’autre sens.

De manière à faciliter la gestion des bugs dans Quality Center et pour palier au manque d’un connecteur Mylyn, j’ai écrit mon propre plugin pour accéder à QC depuis Eclipse (au travers de Mylyn).

L’update site Eclipse (3.4.2 / 3.5) est disponible ici: http://qcmylyn.sourceforge.net/update/

Le site officiel est disponible ici: http://qcmylyn.sourceforge.net/

Note: C’est une version alpha ; il convient donc de ne pas l’utiliser dans un environnement de production!

Voilà quelques semaines que les fameuses newsgroups d’Eclipse ont fait leur apparition sous la forme d’un forum (qui, soit dit en passant, est carrément plus agréable à lire!).

On y retrouve les divers projets Eclipse, les IDE pour les différents langages…

Pour le moment, ce n’est qu’en beta (par exemple, à l’heure où j’écris ses lignes, la fonction de recherche ne fonctionne pas)

Ca se passe là: http://www.eclipse.org/forums/

imagesJe me suis toujours demandé comment faire pour, dans une appli « ligne de commande » Java, cacher son mot de passe (comme par exemple ssh).

La solution vient avec la JDK 6 et la classe Console qui permet (entre autre) de récupérer une saisie sans afficher ce qui est entré…

Voila un petit bout de code mettant en pratique cette classe:

import java.io.Console;
  1.  
  2. public class TestConsole {
  3.     public static void main(String[] args) {
  4.         Console lConsole = System.console();
  5.  
  6.         System.out.print("Username: ");
  7.         String username = lConsole.readLine();
  8.  
  9.         System.out.print("Password: ");
  10.         String password = new String(lConsole.readPassword());
  11.  
  12.         System.out.println("Username: " + username);
  13.         System.out.println("Password: " + password);
  14.     }
  15. }

Attention: le System.console() peut renvoyer null (ça dépend de la plateforme)… notamment avec la console Eclipse…

Habitué au XML pour gérer le stockage de mes modèles de données, je me suis dit « Tiens, pour une fois, regarde ce que donne l’EMF »…
Et je ne suis pas du tout deçu!!! Ca m’a fait gagné pas mal de temps :)

EMF, kesako?

D’après le site officiel, « The EMF project is a modeling framework and code generation facility for building tools and other applications based on a structured data model. From a model specification described in XMI, EMF provides tools and runtime support to produce a set of Java classes for the model, along with a set of adapter classes that enable viewing and command-based editing of the model, and a basic editor. »

poursuivre la lecture…

Question du jour: Comment lancer des tests unitaires JUnit quand on a une architecture basée sur des plugins??

Réponse: avec un Headless mode monsieur!

Dans une appli architecturée en couches (UI/Business/IO), il arrive très souvent qu’on souhaite tester les couches basses (Business/IO) de manière unitaire.

Oui mais voilà, si on fait du RCP et donc qu’on travaille avec des plugins, c’est un peu la galère de faire des TU car il faut charger les plugins pour lancer le test correctement…
poursuivre la lecture…