Publié le 26 Février 2010

Comme je passe beaucoup de temps à développer sur Eclipse, je me suis dit qu'il pourrait être utile de partager la liste des raccourcis que j'utilise le plus souvent :

<CTRL> + click Affiche la déclaration de l'objet cliqué. Il peut s'agir d'une classe, d'une méthode, d'un attribut, d'une variable ou de son type, etc
selection + <F2> Affiche l'aide contextuelle concernant l'objet séléctionné (javadoc)
selection + <F4> Affiche la hierarchie de types (super classes, sous-classes, ...) pour la classe sélectionnée.
<CTRL> + <SHIFT> + R
Ouvre une ressource (classe, fichier, etc). Il suffit de taper le nom de la ressource et non le chemin complet pour l'ouvrir.
<CTRL> + <SHIFT> + T
Ouvre un type (classe). Il suffit de taper le nom du type pour l'ouvrir.
<CTRL> + Espace
Active la complétion automatique.
<CTRL> + K
Passe à l'élément suivant lors d'une recherche dans le fichier courant.
<CTRL> + <SHIFT> + .
Passe à l'élément suivant lors d'une recherche via le module de recherche
<CTRL> + M
Passe la fenêtre en pleine écran.
<ALT> +<SHIFT> + R
Renomme le fichier sélectionné.
<CTRL> + H
Ouvre la fenêtre de recherche
<CTRL> + O
Ouvre la popup d'outline
<ALT> + Enter
Ouvre les propriétés du fichier sélectionné
<CTRL> + PageUp / PageDown
Navigue entre les différents onglets
<ALT> + <SHIFT> + X puis M
Lance le build Maven
<ALT> + <SHIFT> + X puis J
Lance l'application JAVA
<ALT> + <SHIFT> + X puis T
Lance les test JUnit
<CTRL> + <SHIFT> + M
Effectue un import static de l'élément sur lequel se trouve le pointeur
<CTRL> + <SHIFT> + O
Range les imports java. (Organize imports)
<CTRL> + <SHIFT> + :
Commente la ligne courante (<SHIFT> + : correspond à / sur les clavier AZERTY)
<CTRL> + <SHIFT> + P
Déplace le curseur sur la parenthèse correspondante.
<CTRL> + I
Indente le code proprement.
<CTRL> + E
Permet de sélectionner une fenêtre de l'éditeur.
<CTRL> + <ALT> + A
Affiche les annotations du gestionnaire de version. 

Voir les commentaires

Rédigé par Bliz

Publié dans #Eclipse

Repost 0

Publié le 26 Février 2010

Eclipse permet de gérer une liste de tâches ou "To do list".

Pour cela il faut placer des commentaires dans le code java qui commence par //TODO, par exemple :

// TODO : Un truc à faire ici


Ensuite pour afficher la liste des taches il faut aller dans les onglets du bas et choisir celui qui s'appelle "Tasks" (généralement c'est le dernier à droite - voir la capture d'écran)

eclipse-tasks

Sinon on peut aussi aller dans le menu "Window / Show View / Tasks".

Voir les commentaires

Rédigé par Bliz

Publié dans #Eclipse

Repost 0

Publié le 25 Février 2010

Sous windows :

Les commandes du broker se trouve sous :

C:/WebMethods/Broker/bin

(Remplacer C:/WebMethods par votre répertoire WebMethods)

Ensuite pour arrêter le broker il faut utiliser la commande suivante depuis une fenêtre Dos ou Cygwin :

broker_stop.exe localhost:6843

Puis une fois arrêter, pour le redémarrer

broker_start.exe localhost:6843

(remplacer localhost:6843 par l'adresse et le port sur lequel tourne votre broker)

Sous Unix/Linux:

C 'est le même principe:

Il faut se placer dans le répertoire du broker WebMethod:

cd /usr/WebMethods/Broker/bin

puis lancer les commandes

./broker_stop localhost:6843 pour l'arrêt

./broker_start localhost:6843 pour le démarrage


On peut aussi utiliser la commande

./broker_status localhost:6843 pour obtenir plus d'information sur le broker.

Voir les commentaires

Rédigé par Bliz

Publié dans #Webmethods

Repost 0

Publié le 24 Février 2010

Pour obtenir la liste des package Oracle, il faut utiliser la commande SQL suivante (sous SQL*Plus par exemple):

SQL> select * from user_objects where object_type='PACKAGE';

Voir les commentaires

Rédigé par Bliz

Publié dans #Oracle

Repost 0

Publié le 23 Février 2010

Il y a une fonctionnalité très pratique dans Excel qui permet d'insérer la valeur d'une cellule à l'intérieur du contenu d'une autre cellule.

Nous allons utiliser cette fonctionnalité pour générer du xml à partir d'un tableau Excel.

Le tableau Excel que nous allons utiliser contient 3 colonnes et présentent des informations cinématographiques :

ID Titre Realisateur
1 Invictus Clint Eastwood
2 Sumo Sharon Maymon
3 Gainsbourg Joann Sfar
4 Lebanon Samuel Maoz
5 Planete 51 Jorge Blanco

Nous allons générer le xml dans la colonne suivante, où nous allons transformer chaque ligne du tableau en :

<film id='1' titre='Invictus' realisateur='Clint Eastwood' />

Pour cela nous allons utiliser la valeur de la colonne A pour l'id, B pour le titre et C pour le réalisateur. Ainsi il n'y aura qu'une ligne à écrire. Après nous utiliserons les fonctionalités d'Excel pour générer les lignes suivantes.

Le code de la première ligne est donc :

="<film id='"&A2"' titre='"&B2"' realisateur='"&C2"' />"

Ensuite il suffit d'utiliser Excel pour générer les lignes suivantes en décalant les numéros de lignes comme sur la photo:

excel-generation-xml

Il ne reste plus qu'a rajouté la balise de début <listeFilms> et de fin </listeFilms> ... et notre XML est prêt! Plus qu'à le copier-coller dans un fichier et le tour est joué !!

Voir les commentaires

Rédigé par Bliz

Publié dans #Office

Repost 0

Publié le 22 Février 2010

Lors de l'exécution d'un script on peut avoir besoin de récupérer certains paramètres.

ou encore quand un script appelle un autre script il peut être utile de lui repasser les paramètres d'appel du premier.

On peut avoir besoin de savoir si la dernière commande c'est bien exécuter pour poursuivre le traitement, etc ...

Bref pour toutes ces opérations il existe des variable shell un peu spéciales. En voici donc un résumé :

$0 le nom de la commande en train d'être executer
$1 ... $9 ... contient chacun des paramètres spécifiés lors de l'exécution de la commande
$* contient tous les paramètres spécifiés lors de l'exécution de la commande.
C'est l'équivalent de $1 $2 $3 ....
$@ contient tous les paramètres spécifiés lors de l'exécution de la commande.
C'est l'équivalent de $1 $2 $3 .... mais prend en comptes les quotes "
$# contient le nombre de paramètres spécifiés lors de l'exécution de la commande
$? le code de retour de la dernière commande exécutée.
Permet de détecter si la commande c'est exécutée correctement ($? = 0) ou pas.
$$ le numéro de processus du shell.
C'est utile pour former des noms de fichiers uniques.
$! le numéro de processus de la dernière commande lancée en arrière-plan
$- les options courantes utilisées lors de l'invocation de ce shell.

Voir les commentaires

Rédigé par Bliz

Publié dans #Script

Repost 0

Publié le 19 Février 2010

L'article du jour est une petite introduction à XSLT.

XSLT est un outils de transformation de document. On l'utilise surtout (en tout cas dans la plupart des cas que j'ai rencontrés) pour faire des transformations à l'intérieur d'un document XML, mais il peut aussi servir à générer d'autre types de document.

Ici, en guise d'introduction à XSLT nous allons transformer un document XML en un document texte tout simple.
Et cerise sur le gâteau, notre document texte sera au format CSV (c'est à dire qu'il utilise des "," ou ";" comme séparateur de  champs) et donc on pourra l'ouvrir directement dans Excel.
Donc tout d'abord voilà le fichier XML source que nous allons transformer:

Contenu du fichier films.xml :
<?xml version="1.0" encoding="utf-8"?>
<ListeFilm>
 <Film id="1">
  <Titre>Invictus</Titre>
  <Realisateur>Clint Eastwood</Realisateur>
 </Film>
 <Film id="2">
  <Titre>Sumo</Titre>
  <Realisateur>Sharon Maymon</Realisateur>
 </Film>
 <Film id="3">
  <Titre>Gainsbourg</Titre>
  <Realisateur>Joann Sfar</Realisateur>
 </Film>
 <Film id="4">
  <Titre>Lebanon</Titre>
  <Realisateur>Samuel Maoz</Realisateur>
 </Film>
 <Film id="5">
  <Titre>Planet 51</Titre>
  <Realisateur>Jorge Blanco</Realisateur>
 </Film>
</ListeFilm>


A partir de ce fichier, nous allons générer un fichier texte avec une ligne par film au format suivant:

ID;Titre;Réalisateur

Pour ce faire nous avon besoin de définir quelques règles à appliquer pour effectuer cette transformation. Ces règles doivent être définies dans un fichier .xsl. Ce fichier n'est rien d'autre qu'un document XML. Dans notre cas il se présente de la manière suivante:

Contenu du fichier films.xsl:
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:date="http://xml.apache.org/xalan/java/java.util.Date"
    xmlns:java_lang="http://xml.apache.org/xalan/java/java.lang"
    exclude-result-prefixes="date java_lang">

 <xsl:output method="text"/>
 
 <xsl:variable name="newLine" select="translate('&#xa;','','')"/> 
 
 <!-- ListeFilm transformation -->
 <xsl:template match="ListeFilm">
 
<!-- Affichage de l'entête (nom des champs) -->
  <xsl:text>ID;Titre;Realisateur</xsl:text>
  <xsl:value-of select="$newLine" />

  <xsl:apply-templates select="*" />
 </xsl:template>
 
 <!-- Film transformation  -->
 <xsl:template match="Film">
   <!-- Recuperation des informations du fichier XML -->
   <xsl:variable name="identifiant" select="@id" />
   <xsl:variable name="titre" select="./Titre" />
   <xsl:variable name="realisateur" select="./Realisateur"/>  
   <!-- Generation du contenu -->
   <xsl:value-of select="$identifiant" />
   <xsl:text>;</xsl:text>
   <xsl:value-of select="$titre" />
   <xsl:text>;</xsl:text>
   <xsl:value-of select="$realisateur" />
   <xsl:value-of select="$newLine" />
 </xsl:template>

</xsl:stylesheet>


Voilà maintenant nous avons notre fichier source et les règles à appliquer pour effectuer la transformation. Nous sommes prêts à passer à l'action. Et pour ce faire nous allons utiliser "ant" qui est plus ou moins un équivalent de "make" et qui est très utilisé pour compiler des applications (java notamment).

Nous allons l'utiliser ici pour effectuer une transformation XSLT.

"Ant" se base sur un fichier xml, généralement appelé "build.xml", dans lequel on définit les actions (ou tâches) à effectuer.
Ici nous allons réaliser une seule tache : la transformation XSLT. Donc notre fichier build.xml doit ressembler à ça:

<?xml version="1.0" encoding="utf-8"?>
<project name="Films-XSLT" default="run">
 <target name="run">
    <!-- transformation de films.xml en films.txt -->
    <!-- en appliquant les règles xsl définies dans films.xsl -->
    <xslt style="./films.xsl" in="./films.xml" out="films.txt" />
  </target>
</project>


Pour effectuer la transformation, on lance la commande (dans cygwin par exemple):

ant

tout simplement !

Et voilà le résultat:

ID;Titre;Realisateur
1;Invictus;Clint Eastwood
2;Sumo;Sharon Maymon
3;Gainsbourg;Joann Sfar
4;Lebanon;Samuel Maoz
5;Planet 51;Jorge Blanco

Et comme je l'ai dit plus haut, on peut ouvrir ce fichier avec Excel. Il suffit de le renommer en "films.csv" et le tour est joué!


Voir les commentaires

Rédigé par Bliz

Publié dans #XSLT

Repost 0

Publié le 18 Février 2010

Et oui, ça y est! J'avoue, je suis un peu à court d'inspiration aujourd'hui pour un nouvel article!
 
Mais heureusement j'ai eu une idée qui apportera un peu d'intéractivité à blog (j'espère) :

Envoyez-moi des sujets, des questions ou des problèmes que vous avez envie que je traite.

Et j'essaierai d'y répondre, dans la mesure du possible bien sûr!
(Et oui j'ai quand même un boulot en dehors de ce blog !!)

Vous pouvez utiliser la rubrique "contact" ou bien me laisser directement des commentaires.

Merci les amis !!

Voir les commentaires

Rédigé par Bliz

Repost 0

Publié le 17 Février 2010

Lors de l'utilisation de Cygwin sous windows je rencontre parfois l'erreur suivante:

./myScript.sh: line 11: $'\r': command not found
./myScript.sh: line 38: syntax error near unexpected token `$'in\r''


Cette erreur ce produit uniquement avec l'utilisation du shell: "sh"
Lorsque la première ligne du fichier .sh commence par #!/usr/bin/sh

En fait cette erreur est due à la différence d'encodage des caractères entre Unix/Linux et Windows, notamment sur les caractères de retour à la ligne:

windows \r\n retour charriot + saut de ligne
linux/unix \n saut de ligne uniquement

Cygwin, lors de l'execution du shell "sh", attend un script au format Unix (avec des retour à la ligne de type "\n").

Hors Cygwin fonctionne sous Windows et donc notre script "myScript.sh" contient des retour à la ligne sous la forme "\r\n".

Et donc le shell "sh" ne sait pas comment interpréter les caractères "\r".

Voilà pour l'analyse. Maintenant la solution :

Il faut passer notre script du format "Windows" au format "Unix" avec la commande:

dos2unix myScript.sh

puis il suffit de relancer le script :

./myScript.sh

Voir les commentaires

Rédigé par Bliz

Publié dans #Script

Repost 0

Publié le 16 Février 2010

En temps normal Maven télécharge et installe automatiquement toutes les dépendances spécifiées dans un fichier POM.

Cependant si vous êtes derrière un proxy, il se peut que le téléchargment échoue avec l'erreur suivante:

Downloading: http://repo1.maven.org/maven2/net/sourceforge/jexcelapi/jxl/2.6.12/jxl-2.6.12.pom
[INFO] Unable to find resource 'net.sourceforge.jexcelapi:jxl:pom:2.6.12' in repository central (http://repo1.maven.org/maven2)
Downloading: http://repo1.maven.org/maven2/net/sourceforge/jexcelapi/jxl/2.6.12/jxl-2.6.12.jar
[INFO] Unable to find resource 'net.sourceforge.jexcelapi:jxl:jar:2.6.12' in repository central (http://repo1.maven.org/maven2)
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to resolve artifact.


En fait Maven ne sait pas que vous vous trouvez derrière un proxy et il essaie de télécharger le fichier directement sans passer par le proxy ce qui échoue.

Pour que ça marche il faut indiquer à Maven le proxy à utiliser. Cela se fait en modifiant le fichier "settings.xml" qui se trouve dans votre répertoire ".m2".

Le répertoire ".m2" se trouve dans votre répertoire utilisateur. Normalement ça ressemble à quelque chose comme ça sous windows :

C:\Documents and Settings\patatos\.m2

Ensuite il faut éditer le fichier settings.xml et chercher la balise :

<proxies>

A l'intérieur de cette balise il faut définir un proxy de la manière suivante:

        <proxy>
      <id>monProxy</id>
      <active>true</active>
      <protocol>http</protocol>
      <username>proxyuser</username>
      <password>proxypass</password>
      <host>proxy.host.net</host>
      <port>80</port>
      <nonProxyHosts>localhost|some.host.com|*.mondomaine.com</nonProxyHosts>
    </proxy>


Seules les lignes en gras sont nécessaires. N'oublier pas de préciser un utilisateur et un mot de passe si votre proxy en utilise.

Enregistrer le fichier et relancer la compilation avec Maven : Les dépendances doivent maintenant être téléchargées automatiquement.

Voir les commentaires

Rédigé par Bliz

Publié dans #Maven

Repost 0