jeudi 22 novembre 2012

Transfert de fichiers via SCP et SSH

Introduction

SCP (Secure Copy Protocol) est une commande Linux qui permet le transfert de fichiers entre machines sécurisés par SSH.

L'objectif de ce post c'est pas de faire de la théorie, mais plutôt de partager une classe Java que j'ai développé et qui utilise la librairie JSch et qui permet de transférer 1 fichier entre 2 machines, et qui peut servir dans vos développements.

Je précise que la machine cible du transfert doit être sous Linux et sécurisée par SSH. Contrairement a ce programme qui est exécutable que ce soit sur Windows ou Linux :

Code


Pour pouvoir utiliser la librairie Jsch, si vous utilisez maven vous ajoutez la dépendance suivante :

 <dependency>
 <groupId>com.jcraft</groupId>
 <artifactId>jsch</artifactId>
 <version>0.1.44-1</version>
 </dependency>


Sinon vous pouvez téléchargez le JAR directement ici sur le site de JSch :

http://www.jcraft.com/jsch/

dimanche 18 novembre 2012

Les top FPS dans l'histoire des jeux

Un ami m'a montré cette image qui illustre par ordre chronologique les meilleures FPS de l'histoire, ça me rend nostalgique c'est grâce à ces titres que je suis devenu accro aux jeux vidéos et spécialement aux FPS depuis mon enfance !

Merci Ouissem pour cette image ;)
Cliquer sur l'image pour l'agrandir !


Tutoriel XText : Créer votre propre DSL

Introduction

Dans ce tutoriel nous allons présenter le framework XText et illustrer étape par étape la création d’un simple DSL.

Prérequis
Eclipse : De préférence la dernière version Eclipse Juno (4.2), j’ai rencontré certains problèmes de plantages avec des versions antérieurs d’Eclipse.


Présentation

DSL (Domain Specific Language)

Il s’agit d’un langage destiné à être utilisé dans un domaine d’application bien précis. Un DSL peut être un langage de programmation à part entière ou simplement une grammaire permettant de définir une syntaxe bien précise pour certains fichiers (exemple : fichiers de paramétrage), ce dernier exemple s’agit de mon cas d’utilisation personnel qui m’a fait découvrir ce framework.

Framework XText

XText est un framework permettant la création d’un DSL avec  un IDE Eclipse. L’atout principal de ce framework est la simplicité de son utilisation par rapport à d’autres, notamment ANTLR qui nécessite beaucoup plus de temps pour sa prise en main.
XText se base sur ANTLR pour la parsing et la génération d’artefacts relatifs à la grammaire. Ce qui lui permet de profiter de la puissance de ce framework tout en restant dans la simplicité.
Il est disponible gratuitement sous licence « Eclipse Public License ». Permettant son utilisation pour le développement des produits commerciaux.


Installation

Pour installer XText Framework rapidement, il suffit d’installer le plugin Eclipse de la manière suivante : Dans Eclipse à Help à Install New Software : saisir l’adresse de la dernière version du framework comme suit :


Dans les éléments d’installation proposés, il suffit de cocher la dernière version de XText comme indiqué dans l’écran ci-dessus. Ceci installera les éléments suivants qui sont suffisants pour créer et tester notre DSL :


Une fois le plugin est installé, nous avons tout ce qu’il faut pour commencer la création de notre DSL.

Création de la DSL

Introduction

Ce tutoriel est un exemple simplifié inspiré de mon cas d’utilisation réel de ce framework : Dans une plateforme MOM (Messaging Oriented Middleware), on a besoin de plusieurs éléments de paramétrage, notamment des fichiers de configuration contenant les adresses des machines échangeant les messages, les noms de piles et d’autres éléments. Ces fichiers sont utilisés par des applications Java permettant d’assurer cet échange.

Le besoin d’utilisation d’une DSL est exprimé par le souci d’assurer la validité des fichiers de paramétrage qui sont saisis manuellement par les administrateurs du MOM.

On prend l’exemple allégé du fichier de paramétrage suivant qui contiens la liste des machines définis chacune par une adresse IP et un numéro de port :

Création du projet XText

Maintenant nous allons procéder à la création du projet qui va définir la grammaire du fichier de paramétrage.
Créer un nouveau projet comme suit :



Choisir le nom du projet ainsi que l’extension des fichiers qui doivent respecter la grammaire :


Les projets suivants sont créés :





Dans ce tutoriel nous allons utiliser seulement le projet principal tutodsl.


Création de la grammaire

Le fichier TutoDsl.xtext contenant la grammaire est ouvert automatiquement dans l’éditeur, le fichier contiens par défaut un DSL d’exemple « Hello World » suivant :

Description de la grammaire :

grammar fr.geekplayground.xtext.TutoDsl with org.eclipse.xtext.common.Terminals

grammar : définis le nom de la DSL ainsi que le package.

with : fait appel à un DSL prédéfini dans XText "Terminals", si vous examinez le contenu du fichier et vous allez remarquer qu’il définit des éléments élémentaires tels que INT et STRING ce qui nous épargne de les définir par nous-même.

generate tutoDsl "http://www.geekplayground.fr/xtext/TutoDsl"
Cette ligne sert pour le générateur des classes Java relatifs à la grammaire, donc ne la modifier pas.

Model
greetings+=Greeting*;

Dans l’élément Model, l’élément racine de la DSL "greetings" est déclaré.

greetings += : signifie que dans cet élément ils sont affectés N éléments de type Greeting, il est important d’utiliser += et pas = pour que l’élément soit capable de stocker n occurrences de l’objet Greeting, ce qui se traduit après en Java à une Liste d’objets. Dans le cas où on a un seul objet on doit utiliser seulement =

Greeting* : le * défini le nombre d’occurrences possibles de Greeting, les occurrences sont définis comme suit dans XText :

* : 0 ou N éléments
+ : 1 ou N éléments
? : 0 ou 1 élément.
Rien : 1 seul élément.

Greeting :
Déclare l’élément Greeting appelé précédemment.

'Hello' name=ID '!';
Contenu de l’élément Greeting : une chaîne en dur ‘Hello’ et un élément "name" de type ID. Type défini dans le fichier Terminals.

Pour apprendre d’avantage la syntaxe ainsi que les différentes possibilités offertes par XText pour définir une grammaire vous pouvez consulter la documentation sur le site XText :
http://www.eclipse.org/Xtext/documentation.html


On édite le fichier par notre grammaire suivante :

L’élément racine de notre grammaire est "File" pour désigner le fichier de paramétrage.
Dans cet élément on définit 2 sous éléments :

comment : élément contenant la chaine de caractères '#Host list'.
hostlist : element contenant 1 ou n elements HOST.
HOST : on declare 2 sous-éléments "address" et "port" séparés par ‘ :’
address : est de type IP : pour obliger les administrateurs a saisir des adresses IP correctes on défini le type IP comme suit :
ip=INT'.'INT'.'INT'.'INT;
port : est de type PORT : défini par un simple INT :
port=INT;

Une fois notre grammaire est définie, on génère les classes Java « Artefacts » correspondantes, en cliquant sur le fichier TutoDsl.xtext comme suit :





Dans la console vous verrai le message suivant apparaître :

*ATTENTION*
It is recommended to use the ANTLR 3 parser generator (BSD licence - http://www.antlr.org/license.html).
Do you agree to download it (size 1MB) from 'http://download.itemis.com/antlr-generator-3.2.0.jar'? (type 'y' or 'n' and hit enter)


Ce message vous demande l’installation de parser ANTLR 3, répondez par y. Le composant sera téléchargé et la compilation de la grammaire se poursuivra.
Dans le cas où il y’a des erreurs dans votre grammaire, vous verrez les erreurs dans la console, donc corrigez et répéter l’opération.
Vous verrez toutes les classes Java générés dans le Project Explorer ainsi que les éléments relatifs au Workflow MWE2 :










Une fois que votre grammaire est exempte d’erreurs, lancer l’opération suivante en cliquant sur le fichier GeneratedTutoDsl.mwe2 :


D’autres classes sont générées permettant l’utilisation de votre grammaire dans d’autres projets Java.


Tester la grammaire

Maintenant c’est le moment de tester notre DSL, pour cela sélectionner le projet tutodsl et procéder comme suit :




Une nouvelle instance d’Eclipse s’ouvrira, aucun projet dans l’éditeur pour le moment.
Créer un nouveau projet Java « Sample » comme suit :



Un message vous demande si vous voulez ajouter la nature XText au projet, répondez par Oui.
Dans le projet Sample, créer un nouveau fichier et nommez le sample.tdsl (extension définie lors de la création du projet XText).


Le fichier sample.tdsl est ouvert automatiquement dans l’éditeur, on remarque qu’il y’a une croix rouge au début du fichier, ce qui indique que notre grammaire n’autorise pas un fichier vide.
On copie le contenu suivant de notre fichier de paramétrage dans le fichier :
On remarque que le contenu est accepté parce qu’il respecte bien la syntaxe définie par notre grammaire. Je vous laisse faire joujou avec le contenu du fichier et tester le bon fonctionnement de la grammaire ;)


Conclusion

Ce tutoriel vous a permis de découvrir le framework XText, vous avez remarqué que la syntaxe est dynamique ce qui permet de créer n’importe quelle grammaire.


Perspectives

Le projet généré est un projet Java simple, donc si vous voulez qu’il soit appelé par des projets Maven, vous serez amenés à "maveniser" également le projet XText. Pour cela j’ai trouvé quelque tutoriels sur le net qui sont plus ou moins efficaces, je vais essayer de créer un petit guide dans une prochaine publication.

samedi 17 novembre 2012

De retour !

J'ai décidé de faire ressusciter ce blog qui a dormi pendant 2 ans, cette fois je vais veiller a bien l'enrichir régulièrement, il me servira principalement a historiser mes connaissances en technologies et ce que j'apprends nouvellement à travers des tutoriels tout en faisant profitant au visiteurs.
Le blog sera enrichi aussi avec des articles autours des autres catégories comme c'était déjà convenu.
Pour une belle reprise, je suis entrain de préparer un tutoriel sur la création d'un DSL (Domain Specific Langage) que je publierai dans un bref délai. D'autres tutoriels vont être publiés prochainement.

A très bientôt !

Edit :
Ajout du blog dans l'annuaire de blogs BluzzIn :
Blog Programmation

Verif proprio BuzzIn

 Meher Abdellatif


Ingénieur d'études en génie logiciel et systèmes d'informations, diplômé d'une école d'ingénieurs à Tunis en 2009.
Cadre dans une grande SSII française depuis Septembre 2010 en tant qu'ingénieur spécialisé dans les technologies JAVA J2EE.
Plusieurs mission effectués dans les domaines métier suivants : aéronautique, télécommunication et assurance maladie.

Pour plus d'informations sur mes formations, compétences ou expérience, merci de me contacter.

samedi 10 novembre 2012

Mes exploits sur Battlefied 3

Mes Dogtags actuels :
BF3 Stats

Scores du jeu :
BF3 Stats

Médailles :
BF3 Stats

Scores en véhicules blindés :
BF3 Stats

Kills en C4 :
BF3 Stats

Je suis dans le top 100 mondial du M240B :
BF3 Stats