vendredi 13 novembre 2009

TGITS sur Google Sites

Le format billet de blog n'étant pas toujours adéquat de mon point de vue pour faire de petits articles sur la programmation, j'ai créé un site compagnon (aussi nommé TheGeekInTheShell) à ce blog sur Google Sites.
Je réserve le blog pour mes billets d'humeur et les informations que je souhaite relayer.
Le site sera plus pour des "articles" (c'est un grand mot !) sur la programmation.

mardi 10 novembre 2009

Le Projet Euler

Une initiative intéressante qui intéressera les amateurs de problèmes mathématiques et informatiques : le "Projet Euler".

Le projet Euler propose un ensemble de petits (par la taille de l'énoncé ;-) ) problèmes qui demandent à la fois réflexion mathématique et mise en oeuvre informatique afin d'être résolus. En effet, il s'agit bien de programmer la solution en utilisant l'ordinateur pour ce qu'il est : une super calculatrice programmable !
Il est possible de s'enregistrer gratuitement sur le site pour pouvoir tenir le compte des problèmes pour lesquels vous avez trouvé une solution.

Il y a bien sûr le côté récréatif pour ceux qui aiment ce genre de petits défis qui active les neurones. C'est aussi à mon sens une mine d'or pour les enseignants d'algorithmique et d'initiation à la programmation.

Bon par contre, tout est en anglais, ce qui est parfois un problème pour certains...

Je suis tombé un peu par hasard sur ce site, à la lecture d'un article de DeveloperWorks sur le langage Clojure dans lequel quelques problèmes du Projet Euler sont résolus avec ce langage.

http://projecteuler.net/

dimanche 18 octobre 2009

IntelliJ IDEA vient de passer en OpenSource

Cela fait pas mal de temps que j'entends souvent des commentaires élogieux sur IntelliJ IDEA... néanmoins comme je n'ai jamais eu l'opportunité de l'utiliser dans un contexte professionnel et que ce dernier était payant, je n'avais jamais pu vérifier ces dires par moi-même.

Jeudi dernier, en jetant un oeil aux derniers podcasts disponibles, je suis tombé sur le dernier en date de l'excellent JavaPosse (épisode #283) qui parle du passage en Open Source d'IntelliJ IDEA.
Ainsi une version "Community" est disponible gratuitement pour Windows/Mac/Linux. Cette propose tous les plugins pour le développement Java hors JEE et pour différents language de la JVM (Groovy, etc.). La version Ultimate avec tout le nécessaire pour faciliter le développement JEE reste quant à elle payante.

Dans tous les cas, c'est une excellente nouvelle et va permettre à un large public de développeurs de tester cet IDE.

Rendez-vous sur le site de JetBrains dédiés à IntelliJ : www.jetbrains.org.
Des informations et des liens sur le site de l'épisode #283 du JavaPosse (ainsi que le Podcast qui est également disponible sur iTunes) et sur le site d'Artima.

Bien sûr il doit y avoir bien d'autres des sites et blogs qui doivent désormais relier la news !

A vos claviers !

dimanche 21 juin 2009

Les Cast Codeurs Podcast

En attendant d'avoir le temps et le courage de publier la suite de l'échiquier en JavaFX, voici un petit billet pour parler d'un podcast sur la plateforme Java que j'ai découvert récemment, qui est très intéressant et surtout - ce qui n'est pas si commun - en français !
Je veux parler des Cast Codeurs Podcast. En allant sur leur site à l'occasion de ce billet, j'ai vu que le sixième épisode était sorti aujourd'hui. J'étais tombé dessus un peu par hasard sur iTunes, lors d'une recherche sur Java il y a peut-être 3 semaines. Cela m'a fait pensé à une version française de the JavaPosse (et je le pense comme un compliment) : les participants savent de quoi ils parlent (du beau monde de la communauté Java française : Emmanuel Bernard, Guillaume Laforge, Antonio Goncalves, Vincent Massol), cela se passe dans la bonne humeur, les informations techniques et les news sur la plateforme Java sont réellement intéressantes pour un développeur Java. Bref un podcast indispensable qui a pour une fois la bonne idée d'être en français !
Le site : http://lescastcodeurs.com/

dimanche 17 mai 2009

Un échiquier en JavaFX

Dans ce billet, un petit programme en JavaFX qui dessine en un échiquier. Ce petit programme était l'occasion de s'essayer à utiliser un CustomNode (qui ici correspondra à l'échiquier). Et quand il y a quelques années j'enseignais la programmation en Java, le dessin d'un échiquier était un des premiers TP que je donnais aux étudiants quand nous abordions AWT/Swing, parce que c'est simple à mettre en oeuvre.

Ci-après la copie d'écran du programme :



Ce programme est composé de 2 fichiers : ChessBoardNode.fx qui contient la classe ChessBoardNode qui étend la classe CustomNode et Main.fx qui contient notre Stage et utilise le ChessBoardNode.

Tout d'abord ChessBoardNode.fx :

Tout ceci est assez simple, mais revenons sur quelques points :
- La classe CustomNode est une classe abstraite et il faut redéfinir la fonction "create" ; attention en JavaFX quand on redéfinit il faut utiliser le mot clé override.
Cette fonction create est un peu comme la méthode paint pour les composants graphiques en Java/Swing : en la redéfinissant on indique comment le composant doit être "peint". Cette méthode doit retourner un objet de type Node. Ici on créé plusieurs Rectangle (en fonction du nombre de lignes et du nombre de cases par ligne, valeurs définies dans les attributs) pour lesquels on alterne les couleurs parmi 2 et qui forment un Group, sous-classe de Node.

On remarquera qu'un certain nombre d'attributs ont été définis pour rendre l'échiquier plus facilement paramétrable.

Autre point, on notera ici l'utilisation du for et du if : il faut rappeler qu'en JavaFX, ce sont des expressions et qu'ils retournent un résultat.
A part cela, ce code ne pose pas de difficultés particulières.

Maintenant utilisons cette classe dans Main.fx :

On utilise directement un objet ChessBoardNode, en renseignant certains de ces attributs. On notera que l'abscisse et l'ordonnée de l'échiquier ne sont pas renseignées, pas plus d'ailleurs que la largeur ou la hauteur de la Scene ou du Stage : c'est JavaFX qui détermine tout cela en prenant les valeurs au plus juste.

Initialement, je voulais proposer une suite à ce billet sur JavaFX, en repartant de cet exemple et en l'améliorant un peu par la mise en oeuvre du "binding" de JavaFX pour obtenir simplement des petits effets sympathiques. Cependant je trouve que le format "billet de blog" n'est pas toujours idéal pour faire un texte comportant du code.

Entretemps j'ai donc créé un petit site sur Google Sites, dans lequel je reprends et complète ce billet.

jeudi 14 mai 2009

Cours d'introduction au SGBD

Un cours d'introduction au SGBD avec MySQL. Cela s'adressait à des étudiants n'ayant pas de connaissances particulières sur les bases de données mais ayant un background informatique. Ce cours n'a pas connu de mise à jour significative depuis 2005-2006. Elle est également disponible directement sur SlideShare.

mercredi 13 mai 2009

Cours d'introduction à C++

Voici un cours d'introduction à C++, s'adressant à un public type bac +3 connaissant ayant des connaissances minimum en algorithmique et connaissant le C. Cette présentation est également disponible sur SlideShare.

mardi 12 mai 2009

Cours d'introduction à Java

Voici un cours d'introduction à Java qui date un peu (dernière mise à jour significative en 2005-2006), mais qui sait cela peut servir. La présentation est également disponible sur SlideShare. Ce cours s'adresse à des étudiants niveau Bac +3/Bac +4 connaissant déjà C et C++.

lundi 11 mai 2009

Cours d'introduction à UML

Ci-après un cours d'introduction à UML que j'ai donné en 2005-2006 à l'ISAIP Dijon quand j'y étais responsable de la formation & enseignant.

Cela date un peu et cela fait un moment que cette présentation est sur SlideShare... mieux vaut tard que jamais, je la mets également sur mon blog.

D'autres présentations correspondant à d'anciens cours que j'ai donnés devraient suivre petit à petit. En espérant que cela puisse être utile.

dimanche 3 mai 2009

Une cardioïde en JavaFX (bis)

Quand en 2007 j'avais regardé pour la première fois JavaFX, j'avais fait un petit programme qui affichait une cardioïde.

Entre temps, JavaFX a changé (moi aussi d'ailleurs mais c'est une autre histoire :-P) et comme je suis en train de m'essayer à nouveau à JavaFX, voici une nouvelle version d'un dessin de cardioïde avec JavaFX.


Cela donne cela :


Rien de bien extraordinaire dans le code. Le Slider permet de modifier la taille du cardioïde. Sont utilisés ici les capacités de binding de JavaFX (entre le paramètre rho de la courbe paramétrique et la valeur sélectionnée par le Slider ; pour plus d'information sur la cardioïde voir http://fr.wikipedia.org/wiki/Cardio%C3%AFde).

La fonction generatePath retourne une séquence de coordonnées x et y correspondant à la cardioïde par rapport à la valeur du paramètre rho. Cette séquence de coordonnées est utilisée par la Polyline.

samedi 2 mai 2009

Introduction à JavaFX (3)

Désolé, en ce moment je m'intéresse à JavaFX et après une longue période d'inactivité sur ce blog qui faisait elle-même suite à une période d'activité très modérée, je publie coup sur coup plusieurs vidéos de Sun sur JavaFX... Je trouve que cette technologie est vraiment devenue intéressante et qu'elle mérite qu'on y jette un oeil, voire plus si affinité. Sun a quand même mi presque 2 ans à proposer quelque chose qui tienne la route face à Flex ou à Silverlight mais là la technologie commence à être mature et utilisable. L'intérêt est quand même de rester sur une plateforme Java.

Cette vidéo n'est pas vraiment une introduction. C'est plutôt une vidéo de présentation du concept de "Scene Graph", élément essentiel de JavaFX. La vidéo est courte et complète bien les 2 vidéos d'introduction de Sun publiées dans mes 2 derniers billets sur JavaFX.



La présentation dure environ 6 minutes, dont seule les 5 premières minutes ont réellement un intérêt pédagogique (c'est de bonne guerre, la fin de la présentation donne des informations sur le site www.javafx.com, et comment retrouver les informations et exemples dont il est question dans la présentation).

Cette courte vidéo présente les classes et concepts fondamentaux pour réaliser des applications graphiques avec JavaFX (ce qui est il faut bien l'avouer la raison pour laquelle en général on se penche sur JavaFX :-P).

La classe Stage représente le conteneur de haut-niveau (top-level container) qui correspond à une fenêtre classique par défaut mais peut être transparente ou sans la bordure et les autres "décorations" associées.

Un objet Stage contient un attribut scene de classe Scene. La classe Scene correspond à une surface de dessin pour y placer le contenu graphique. Un objet Scene a un attribut content qui est une séquence d'élément dans le Graph Scene (La traduction en graphe de la scène ne me plait guère est à défaut d'une qui me satisfasse, je préfère utiliser le terme anglais).

Le Graph Scene est un concept important de JavaFX : le contenu graphique est considéré comme un graphe d'éléments. Attention, il s'agit bien d'un graphe et non d'un arbre, il n'y a donc pas d'élément racine. C'est pour cela que l'on a une séquence d'éléments, pouvant eux-mêmes être constitués de séquence d'éléments.

Ces éléments graphiques peuvent être des classes Node, Group ou CustomNode.
Un Node est une feuille du graphe, c'est-à-dire qu'il ne peut pas avoir de noeud graphique fils. Par contre, tout comme les 2 autres classes, un objet Node peut avoir 0 ou 1 parent.
Les formes (Shape) et les éléments d'interface venant de Swing (slider, label, etc.) sont par exemple des Node.

Un Group est un regroupement de plusieurs Node, Group ou CustomNode. Un Group peut ainsi permettre de créer des formes complexes en regroupant plusieurs formes. De plus un objet Group permet d'appliquer un même effet à tous les élément du groupe en question. Ainsi un objet Group permet de manipuler un ensemble d'éléments graphiques comme un élément unique.

Enfin, la classe CustomNode est une classe abstraite que l'on sous-classe et dont on redéfinit (utilisation du mot clé override) la fonction create() qui définit le contenu de cet élément.

vendredi 1 mai 2009

Introduction à JavaFX (2)

Voici une vidéo d'introduction à JavaFX qui fait suite à celle que j'ai posté dans mon billet précédent sur ce sujet.

Toujours en une quinzaine de minutes, cette vidéo présente des fondamentaux de JavaFX, en ce concentrant cette fois-ci sur les éléments de base pour produire des graphiques avec JavaFX alors que la première vidéo de cette série se focalisait sur les fondamentaux du langage.

Sans remplacer les tutoriaux, ces vidéos donnent une vision synthétique et rapide des différents aspects et peuvent ainsi servir de mise en jambe ou d'aide-mémoire.



Si vous souhaitez avoir une meilleure qualité de vidéo, je vous invite à la récupérer via Miro, une petite recherche sur "JavaFX" devrait vous permettre de les trouver facilement.

dimanche 26 avril 2009

Introduction à JavaFX (1)

Voici une présentation des bases de JavaFX par Robert Eckstein de Sun.
La présentation est bien faite et en 15 minutes donne tous les éléments de base nécessaire à un développeur Java pour se faire une idée sur ce nouveau langage.



Je m'étais intéressé à JavaFX en 2007. Je n'avais pas été convaincu à l'époque par la le langage et la plateforme qui - il est vrai - venait de sortir et manquait probablement de maturité.

Récemment (on va dire que cela fait un petit mois), j'ai ré-essayé et je suis par contre cette fois séduit. De gros progrès ont été réalisés, avec Netbeans vous avez maintenant un vrai IDE pour travailler avec JavaFX (il existe également un plugin Eclipse mais je ne l'ai pas essayé). Cette fois-ci je pense que cette plateforme "RIA" devient crédible par rapport à la concurrence. Bien sûr qu'elle s'impose c'est une autre histoire mais elle a des atouts indéniables. Reste à voir également comment le rachat de Sun par Oracle fera évoluer la stratégie par rapport à cette plateforme.

Le site officiel de JavaFX, point de passage obligé, est http://www.javafx.com/.