Sleeper must be awaken

mercredi 17 juin 2009

Outils de développement d'applications (JEE)

Une bonne application est une application qui fonctionne et dont la maintenance est simple. Mais pour fabriquer un logiciel de ce type, il est nécessaire de travailler avec les bons outils. Ces outils doivent permettre :
  • Développer efficacement (IDE)
  • Respecter des standards (UML, Design Pattern)
  • Identifier les bugs rapidement (Tests unitaires, Intégration continu)
  • Suivre les changements (Version)
  • Séparer les environnements (développement, recette, production)
  • Analyser son code (audit)
Conscient qu'énumérer une énième fois ces évidences ne sert strictement à rien (le net étant déjà bien fourni en la matière), je vais proposer une liste d'outils qui à mon sens permettent de retrouver ces idées.
  • Eclipse - Lien
    L'IDE java par excellence. Bon pour les vrais parait que "vi" c'est le top, je suis d'accord, si on code depuis un PDA...
  • Subversion - Lien
    L'utilisation du standard SVN permet de sauvegarder ce qu'on développe, d'avoir un historique du développement, et de lier des modules du logiciel à une version spécifique.
  • Maven - Lien
    Maven c'est comment organiser gérer et automatiser les productions de son logiciel. Plusieurs environnement ? pas de soucis Maven est la et build en fonction. A l'instar d'ant, mais en plus simple.
  • JUnit - Lien
    Bien maitrisé et couplé avec des méthodes de gestion type TDD, l'outil JUnit permet de tester rapidement ce que l'on code pour éviter des erreurs d'interactions entre objets.
  • Hudson - Lien
    Coder c'est bien mais quand il y a plusieurs modules, tôt ou tard faut bien tout regrouper. Hudson son job c'est de tout rassembler et de compiler histoire de voir si ça passe... ou pas !
  • Sonar - Lien
    La Roll's Royce du suivi d'application. 6 mois que mon application est en production, comme je suis fier. Comment ça je sais pas coder ? Comment ça mes algorithmes sont complexes et le code a une maintenabilité exécrable ?

mercredi 30 avril 2008

Création de repository debian

Dans le billet précédent nous avons vu comment créer un paquet debian. Nous allons maintenant voir comment le placer dans repository de votre conception. Votre programme sera donc accessible en tant que ressource web, et via apt-get; l'installation n'en sera que plus simplifiée pour les utilisateurs de votre programme.

Attention : dans ce billet nous ne détaillerons pas comment installer un serveur web. Nous partons du principe que vous en avez déjà un pré-configuré, ou que vous utilisez un hébergeur pour accueillir vos fichiers.

Étape 1 - Préparation

Commençons d'abord par créer une arborescence correcte pour notre repository :

$>mkdir repository
$>mkdir -p repository/dists/unstable/main/binary-i386
$>mkdir -p repository/dists/unstable/main/sources

Ceci étant copions les fichiers que nous avions préparés :

$>cp helloworld_1.0-1.dsc repository/dists/unstable/main/binary-i386
$>cp helloworld_1.0-1_all.deb repository/dists/unstable/main/binary-i386
$>cp helloworld_1.0-1.diff.gz repository/dists/unstable/main/source
$>cp helloworld_1.0-1.dsc repository/dists/unstable/main/source
$>cp helloworld_1.0.orig.tar.gz repository/dists/unstable/main/source

Etape 2 - Création du repository

$>cd repository/dists/unstable/main
$>dpkg-scanpackages binary-i386 /dev/null dists/unstable/main/ | gzip -f9 > binary-i386/Packages.gz
$>dpkg-scansources source /dev/null dists/unstable/main/ | gzip -f9 > source/Sources.gz

Il faut maintenant créer deux fichiers qui serviront à décrire nos repository :

binary-i386/Release

Archive : unstable
Version : 1
Component : main
Origin : Test
Label : helloworld
Architecture : i386

source/Release:

Archive : unstable
Version : 1
Component : main
Origin : Test
Label : helloworld
Architecture : source

Étape 3 - Dépôts des fichiers

Vos fichiers et votre arborescence sont maintenant créés. Il ne reste plus qu'à les mettre sur votre hébergeur ou sur votre serveur personnel l'arborscence créée.
Vous devez donc copiez toute l'arborescence repository sur votre serveur.

http://www.votresite.fr/repository/dists/unstable/main/binary-i386
http://www.votresite.fr/repository/dists/unstable/main/source

Etape 4 - Utilisation du repository

Modifier maintenant le fichier /etc/apt/sources.list et rajoutez ces deux lignes avant de pouvoir utilisez votre commande apt-get.

deb http://www.votresite.fr/repository unstable main
deb-src http://www.votresite.fr/repository unstable main

Maintenant vous pouvez tranquillement utiliser le fameux : apt-get install helloworld

mardi 29 avril 2008

Fabrication d'un paquet debian .deb

Suite à de nombreuses recherches en anglais et bien souvent assez hard, je me suis dis qu'expliquer mes nombreuses heures de déboires pourraient en aider plus d'un.

Les paquets utiles

  • dpkg-dev
  • gcc
  • make
  • patch
  • perl
  • dh-make et debhelper
  • autoconf et automake
  • fakeroot
  • gnupg

Voila normalement si vous utilisez correctement apt-get vous devriez avoir une belle config a ce stade, donc on peut démarrer le plus marrant : la création du paquet.

Préambule

Dans un soucis de compréhension, mettons que nous avons de base l'architecture ci-contre :
-helloword-1.0/
+-- helloworld.c
+-- Makefile

Nous passerons sur le codage d'un helloworld, et voyons plutôt le Makefile :
DESTDIR=
BINDIR=/usr/bin
all: oldboy 

oldboy : helloworld.c
  gcc helloworld.c -o helloworld

clean:
  rm -f helloword

install:
  install -d -m 0755 -o root -g root $(DESTDIR)/$(BINDIR)
  install -m 0755 -o root -g root helloworld $(DESTDIR)/$(BINDIR)

Le répertoire d'installation doit être DESTDIR

Étape 1 - Compression

On crée un tar.gz du programme. La forme du nom est extrêmement importante

Makefile helloworld.c
$>tgz helloworld_1.0.orig.tar.gz helloworld-1.0/
Writing gzip'd tar archive to "helloworld_1.0.orig.tar.gz".
...

Étape 2 - Création

On crée un squelette de paquet avec dh_make.

$>cd helloworld-1.0/
$>dh_make
ldap_sasl_interactive_bind_s: No such attribute (16)
Type of package: single binary, multiple binary, library, kernel
module or cdbs?
[s/m/l/k/b] s
Maintainer name : OLD boy
Email-Address : oldboy@fai.fr
Date : Wed, 7 Nov 2007 15:51:18 +0100
Package Name : helloworld
Version : 1.0
License : blank
Type of Package : Single
Hit  to confirm:

A ce stade vous vous apercevez que dh_make a crée pour vous tout un tas de fichiers dans un répertoire nommé debian. La moitié de ces fichiers sont des exemples ".ex" donc vous pouvez allègrement les détruire. Le même sort peut être appliqué au fichier dirs, docs et README.debian

Étape 3 - Édition

Nous allons maintenant pouvoir éditer les fichiers importants.

control

Source: helloworld
Section: misc
Priority: optional
Maintainer: OLD boy 
Build-Depends: debhelper (>= 5)
Standards-Version: 3.7.2
Package: helloworld
Architecture: all
Depends:
Description: program that displays hello world.

copyright

This package was debianized by OLD boy 
 on Thu, 30 Apr 2008 14:12:07 +0100.
Upstream Author: OLD boy 
Copyright: 2007 OLD boy
License: public domain
The Debian packaging is (C) 2007, OLD boy  and
is licensed under the GPL, see `/usr/share/common-licenses/GPL'.

changelog

helloworld (1.0-1) unstable; urgency=low
* Initial release.
-- OLD boy  Thu, 30 Apr 2008 14:12:07 +0100

Étape 4 - Construction

Bien nous allons maintenant pouvoir passer à la dernière étape qui consiste en la construction de notre paquet .deb.
Pour se faire nous allons nous placer dans helloworld-1.0 et utiliser dpkg comme suit :

$>cd helloworld-1.0
$>dpkg-buildpackage -rfakeroot

Laissez le gentiment travaillez ca ne devrait pas être long du tout. Une fois terminé vous pourrez alors admirer le travail. :)

$>ls .. -l
total 32
drwxr-xr-x 3 oldboy oldboy 4096 2007-11-07 16:06 helloworld-1.0
-rw-r--r-- 1 oldboy oldboy 2856 2007-11-07 16:06 helloworld_1.0-1_all.deb
-rw-r--r-- 1 oldboy oldboy 1392 2007-11-07 16:06 helloworld_1.0-1.diff.gz
-rw-r--r-- 1 oldboy oldboy 329 2007-11-07 16:06 helloworld_1.0-1.dsc
-rw-r--r-- 1 oldboy oldboy 733 2007-11-07 16:06 helloworld_1.0-1_i386.changes
-rw-r--r-- 1 oldboy oldboy 526 2007-11-07 15:49 helloworld_1.0.orig.tar.gz
Et voilà le travail !

Informations supplémentaires

Vous pouvez toujours voir la référence debian en la matière pour plus amples informations notamment concernant les options du fichier control : Guide du nouveau responsable Debian