Sometimes I write things, sometimes I don't.

To content | To menu | To search

Programmation

Entries feed - Comments feed

Thursday 17 December 2009

Sortie de java-gnome 4.0.14

Une nouvelle version de java-gnome est disponible depuis hier. Il s'agit de la version 4.0.14 de l'API. Elle apporte notamment une intégration de la correction orthographique via l'API Enchant, une amélioration de la gestion des pointeurs (de souris) grâce à GDK. On voit apparaître de même une meilleure gestion du rendu de texte. Une autre nouveauté est l'apparition du widget LinkButton qui offre la possibilité d'ouvrir une URL grâce à un bouton (travail effectué par Serkan Kaba et moi-même).


Il est désormais possible de créer ses propres tailles de papier afin de pouvoir utiliser le format PDF via Cairo même si la taille n'est pas standard. On a également droit à un lot de corrections principalement typographiques. Comme certains le savent ou l'ont remarqué, avec GNOME 2.28, les icônes dans les menus peuvent être masquées ou non selon la configuration (elles le sont par défaut). Il est toutefois possible d'en forcer l'affichage maintenant grâce à de nouvelles méthodes dans l'API ou bien de continuer à utiliser les paramètres globaux. Au niveau de la compilation de la bibliothèque, l'utilisation de Xvfb permet aux packageurs de lancer tout de même la suite de tests et de générer la javadoc. Enfin, un bug critique a été corrigé contourné. Ce dernier faisait crasher l'application directement si l'utilisateur utilisait la version 2.22.3 de glib.

La news complète de la sortie de java-gnome 4.0.14 est ici, le téléchargement des sources lui est par . À noter que GNOME Split 0.1 utilise la version 4.0.13 et que GNOME Split 0.2 utilisera la version 4.0.14. La dernière release de java-gnome est déjà disponible sur Gentoo, Arch Linux, bientôt pour Debian, pour Ubuntu ça sera pour Lucid Lynx (mais je vais demander un backport dans Karmic Koala).

À vos codes.

Thursday 10 December 2009

GNOME Split sort en version 0.1

Comme je l'avais annoncé la semaine dernière la sortie de la première version de GNOME Split était imminente. Et bien aujourd'hui, c'est officiel, la version 0.1 est désormais disponible. Vous pouvez la télécharger sur la page du projet sur Launchpad.

Pour l'instant, il est possible de découper et assembler des fichiers au format Xtremsplit (extension en .xtm) et au format GNOME Split (extension .gsp). Pas de paquet pour les diverses distributions (en fait pour le moment j'ai du mal à packager le tout pour Ubuntu sur mon PPA). Aucun bug n'a été trouvé pour le moment (sachant que j'ai été le seul cobaye), à vous donc de me les rapporter. Pour les impatients qui n'ont pas peur de compiler, un tutoriel est disponible ici et pour ceux qui sont intéressés, il est possible de suivre le développement ici.

Wednesday 2 December 2009

GNOME Split débarque... bientôt

Ça faisait longtemps (pour ne pas dire très longtemps) que je n'avais pas parlé de mon projet de découpeur et assembleur de fichiers. En effet, gSplit est en arrêt depuis plusieurs semaines (voire mois). J'ai, en fait, décidé de le recoder en partant d'une page d'Eclipse blanche et au passage de le renommer GNOME Split.

De l'ambition ? Oh oui, il en a ! Le but est de faire un découpeur et assembleur de fichiers supportant plusieurs formats (dont le fameux Xtremsplit [ce qui est déjà fait]). Pourquoi n'est-il pas tout de suite dans sa première version ? J'ai encore un algorithme de découpage / assemblage à implémenter (j'ai implémenté celui de Xtremsplit avant celui propre à GNOME Split... Qui a dit paradoxal ?), la fonctionnalité d'arrêt en cours d'action et un léger bug à corriger. J'espère que tout ceci sera fait d'ici la fin de semaine pour que le petit outil sorte en version 0.1. D'ici là, je vous offre quelques petites captures d'écran.




Ah oui, j'oubliais ! Une chose qui serait très sympa serait d'avoir un nouveau logo. Donc si vous en avez l'envie et le temps, n'hésitez pas à m'envoyer vos créations (le must serait que celles-ci respectent les conventions du Tango Desktop Project). L'auteur du logo retenu aura bien évidemment sa place dans les crédits du projet. Merci d'avance.

Wednesday 9 September 2009

Exploitez vos codes C grâve à Java et sa JNI

Maintenant que je travaille depuis quelques semaines sur java-gnome, j'ai eu l'occasion (à plusieurs reprises) d'utiliser la JNI (pour Java Native Interface). Cet aspect de Java permet notamment d'exploiter du code C et C++ sans avoir à le réécrire totalement en Java ce qui n'est pas toujours possible (java-gnome n'est déjà pas complet alors réécrire GNOME en Java... on n'en parle même pas). Jusqu'à maintenant, je n'ai jamais vraiment cherché à comprendre comment la JNI fonctionnait, je me contentais de l'exploiter en me basant sur les divers codes déjà présents. Si j'écris cet article, on peut donc se douter que je suis allé un peu plus loin dans le sujet.

En effet, en recherchant une solution pour un problème (récupérer la taille de l'espace disque restant), je suis tombé sur de nombreux résultats dans lesquels les utilisateurs conseillaient d'utiliser un code natif via la JNI. C'est donc grâce à ça que j'ai décidé de comprendre comment la machine fonctionne (le côté JNI de java-gnome étant généré automatiquement, on ne le touche pas souvent). Pour comprendre comment utiliser la JNI, nous allons donc utiliser 3 méthodes que je qualifierais d'exemplaires. Pas parce que le code est impeccable, mais plutôt car on pourra voir comment gérer les paramètres et les types de retour.

Continue reading...

Sunday 16 August 2009

java-gnome's cool new stuffs

C'est vrai, c'est génial ! Ce que j'ai toujours aimé dans le projet java-gnome, c'est sa facilité d'accès lorsque l'on connaît un peu le langage Java. Je préfère de loin réaliser une interface graphique avec java-gnome qu'avec Swing. Pourquoi ? Déjà parce que c'est plus beau et surtout parce que c'est plus simple.

Bon trêve de compliments, je ne suis pas là pour expliquer à quel point écrire des applications avec java-gnome c'est bien. Quoi que ça serait presque çamais bon...

Depuis la version 4.0.12 de l'API, j'essaie de contribuer pas mal à son développement même si avec mon travail qui n'a rien à voir avec l'informatique je suis plutôt crevé en rentrant. Cependant, je prends quand même le temps de développer plusieurs branches. J'avais donc envie de faire un petit point sur les nouveautés qui arriveront (j'espère) pour la version 4.0.13 de java-gnome.

Je commence par la première branche que j'ai codé seul et qui est terminée (elle est en attente d'intégration défintive dans l'API). Cette branche est nommée entry-gtk-2.16. Elle a pour but d'ajouter les fonctionnalités arrivées pour les GtkEntry avec GTK 2.16 dans la classe Entry de java-gnome. Ainsi tout comme avec la bibliothèque de développement en C, on pourra mettre des icônes des deux côtés de l'entrée de texte ou encore se servir de l'indicateur de progression qui y est intégré. Voici une démonstration :


Les branches suivantes que je développe étaient auparavant codées par Serkan Kaba qui depuis a lancé un appel afin que quelqu'un reprenne son travail. C'est donc ce que j'ai fait avec 3 de ses branches.

Je me suis intéressé pour commencer à l'intégration de libsexy dans java-gnome. Cette bibliothèque apporte quelques widgets intéressants en plus à GTK. Je peux à présent considérer mon travail sur l'intégration de libsexy presque terminé puisque tout a été implémenté par Serkan et moi. On pourra, donc une fois le merge avec le code l'API fait, utiliser des Labels contenant des liens,


mais aussi, des Entrys supportant les corrections orthographiques (truc dont j'ai besoin),


des textes d'astuces (tooltips) différents selon les lignes des TreeViews et enfin, des widgets Tooltip pouvant contenir des choses plus complexes que des simples lignes de texte.


J'ai également décidé de ne pas implémenter le SexyIconEntry puisque la classe Entry de GTK 2.16 offre encore plus de fonctionnalités.

J'ai aussi travaillé sur une branche visant à implanter le widget offert par la bibilothèque nommée VTE (pour Virtual Terminal Emulator). Les amateurs de GNOME connaissent probablement ce widget puisque c'est lui qui est utilisé par l'émulateur de terminal de GNOME.


Enfin, pour terminer, j'ai terminé le code d'une branche dédiée à ajouter les fonctionnalités liées au LinkButton (bouton contenant un lien). On pourra donc alors profiter de ce widget dans java-gnome mais également profiter de ses nouveautés dans la boîte de dialogue AboutDialog. En effet, jusqu'à présent, on ne pouvait qu'insérer un lien et l'afficher afin de spécifier le site web de l'application à laquelle cette boîte de dialogue était attachée. Maintenant, ce lien devient intéractif, c'est-à-dire qu'un clic dessus permettra d'ouvrir le navigateur web à l'adresse donnée.


C'est tout pour le moment, j'espère que chacune de ses branches sera intégrée dans java-gnome avant la sortie de la version 4.0.13 (qui sera d'ailleurs peut-être estampillée 4.1.1) et qui promet encore de belles choses.

Ah oui j'oubliais, on m'a des fois fait la remarque suivante : "Wa pour développer java-gnome faut connaître le C et la JNI non ?". Et bien en fait non, il n'y a pas besoin de savoir manipuler le C et la JNI. En effet, tout ce qui est code C / JNI est automatiquement généré par un ... générateur ... qui grâce à des fichiers de types .defs et les .h des bibliothèques génère le code C / JNI automatiquement. Il ne reste donc que l'API public (haut niveau si je peux dire ça comme ça) à écrire. Bien entendu, il y a toujours des cas particuliers (comme je suis un grand chanceux, je suis tombé dessus...) où il faut écrire quelques bouts de code en C pour contourner certains "manques" de Java (comme les callbacks).

Saturday 4 July 2009

Conception : architecture Model View Controller avec java-gnome

Je suis actuellement en train de repenser pas mal gSplit en particulier sur son architecture. En effet, je trouve qu'il souffre de pas mal de défaut de jeunesse, probablement dûs au manque d'expérience et également au fait que c'est mon premier projet avec java-gnome.

Au niveau architectural, je me suis dit qu'il serait très sympa de séparer les données et actions de l'interface graphique. Pour le moment, l'interface graphique est appelée directement depuis les actions et les données directement depuis l'interface. L'idéal serait donc d'avoir 2 parties indépendantes qui communiqueront via une 3ème partie. Ça permet entre autre de simplifier la migration vers une autre interface, de rendre le code plus clair. En revanche, le temps de développement est plus important et la complexité peut également être revue à la hausse.

C'est donc dans cette optique d'améliorer gSplit que j'ai tenté d'implémenter le pattern MVC (Model View Controller) avec la bibliothèque java-gnome. Je me suis basé sur l'exemple de Baptiste Wicht et je l'ai modifié pour utiliser GTK au lieu de Swing.

Continue reading...

Tuesday 31 March 2009

Serveur HTTP en Python en 1 minute

Encore une preuve que Python ça se code facilement et que ça veut simplifier la vie du programmeur un maximum. Faire un serveur HTTP en C, C++, Java, etc... ça peu prendre du temps, pas mal de temps même. Le faire en Python ça prend en gros 10 lignes. Bien sûr ça reste un support "simple" du protocole HTTP 1.1 mais ça reste quand même très très pratique.

On crée un fichier server_http.py puis on l'édite et on y insère le code suivant.
#!/usr/bin/env python

import os

from BaseHTTPServer   import HTTPServer
from SimpleHTTPServer import SimpleHTTPRequestHandler

os.chdir(os.path.expanduser("~/dossier_de_base/"))

httpd = HTTPServer(('', 8080), SimpleHTTPRequestHandler)
httpd.serve_forever()


On peut ensuite lancer le script via la commande :
user@computer:~$ python server_http.py

Et après, on ouvre son navigateur web et on peut accéder à son serveur en entrant l'adresse http://localhost:8080/

Thursday 5 March 2009

java-gnome 4.0.10 est de sortie

Depuis le temps que je l'attendais, et après nous avoir fait patienter avec 3 releases candidates, la version 4.0.10 de java-gnome est enfin disponible. Comme son nom l'indique, le but de cet API est d'offrir la possibilité aux programmeurs utilisant le langage Java de développer des applications en profitant d'une interface GTK parfaite pour GNOME. Si vous hésitez à vous lancer, il doit y avoir un tutoriel rapide qui traine par ici. Pour voir les nouveautés, vous pouvez vous diriger sur cette page qui offre un résumé complet des changements effectués depuis la version 4.0.9. Pour en faire le tour rapidement, on y trouve un support grandissant pour l'utilisation de Cairo, des améliorations au niveau des widgets tels que les vues arborescentes (treeview) ou les vues textes (textview), le support du presse-papier (clipboard) et je passe sur le reste. Je vous rappelle que si vous voulez avoir un exemple d'une application, vous pouvez toujours faire un tour du côté de gSplit en plus de la consultation des exemples proposés dans l'API. Au niveau du téléchargement, vous pouvez désormais jeter un coup d'oeil sur le FTP, ou alors profiter des paquets déjà disponibles sur mon PPA (dépôt non officiel, attention au chien). En cadeau bonux, un screenshot de gSplit ^^

- page 2 of 5 -