Sleeper must be awaken

mardi 21 juillet 2009

Tomcat en début de projet

Le meilleur moyen de démarrer un projet à base de JSP, Java & Co. c'est d'avoir un environnement pour travailler dessus.
Je vous propose donc de mettre en place Tomcat (petit conteneur web sympa, simple, efficace et ultra connu et reconnu).

Tomcat

Le mieux pour installer un Tomcat sans trop de problème et sous toute les plateformes, c'est de chargé le binaire. On prendra ici la version Core de Tomcat 6, diposnible en cliquant ici.
Une fois récupérée, décompresser l'archive dans le répertoire de votre choix. Il faut maintenant préciser certaines variables d'environnements d'usage pour permettre le bon fonctionnement de l'application :

  • CATALINA_HOME : Le répertoire d'installation de Tomcat (depuis Tomcat 4.1)
  • CATALINA_BASE : Une instance de Tomcat. Utile lorsque l'on a plusieurs instances et qu'on veut en utiliser une et pas une autre.
  • TOMCAT_HOME : Le répertoire d'installation de Tomcat (pourTomcat 3.3), Utile pour prévenir des soucis de compatibilité.

Vu les besoins de notre application, nous les créerons en les faisant tous pointer au même endroit : /mon/repertoire/ou/jai/installer/tomcat

Ceci fait, il faut s'attarder à créer un utilisateur qui nous permettra de gérer le serveur. Pour cela nous allons modifier le fichier conf/tomcat-users.xml de la sorte :

A noter que standard et manager sont des mots-clefs dans la configurationde Tomcat il créra donc automatiquement un compte "captain" ayant un role de manager. Les roles qui avant le lancement n'existent pas seront créé au premier lancement.

Lancer le script bin/startup.bat, et ensuite connecter vous depuis votre navigateur a l'adresse suivante : http://localhost:8080. Miracle on est devant la fenêtre d'administration de Tomcat. Mieux on peut maintenant accéder au management en utilisant le compte du "captain".

Vous pouvez vérifier que les roles ont été créés dans le fichier conf/tomcat-users.xml :

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 ?

jeudi 26 juin 2008

Bureau a Distance sous Windows 2000

Votre machine du bureau est peut être sous Windows 2000 et vous voulez accéder à une machine du réseau qui tourne sous Windows XP ou tout simplement votre machine qui est chez vous ?? Or sous Windows 2000 vous n’avez pas le module de Bureau à distance ! Vous utilisez sans doute une alternative du type de VNC ou d’autre logiciel de prise a distance…

Pour remédier à cela je vais vous donner une petite manip a effectuer pour avoir le module de Connexion Bureau à Distance sur votre Windows 2000.

Il faut récupérer les fichiers mstsc.exe et mstscax.dll présent dans le répertoire Windows\System32 d’une machine sous Windows XP.

Une fois ces 2 fichiers récupérés, coller les dans le répertoire Winnt\System32 de votre Windows 2000.

Donc par la suite il faut déclarer (DllRegisterServer) la DLL mstscax.dll pour pouvoir exploiter l’exécutable mstsc.exe .
Voici la commande que vous devez taper dans le menu "exécuter" pour déclarer mstscax.dll :

regsvr32 c:\winnt\system32\mstscax.dll

Et par la suite vous pouvez lancer mstsc depuis le menu Exécuter, pour accéder au Bureau a distance et vous connecter à d’autre machine…

mardi 13 mai 2008

Toolkit Linux : Dépôts Debian

Bon on passe tous notre temps à l'installation à se dire "Mince j'ai plus mes dépôts...". Enfin je sais pas pour vous mais moi c'est mon cas. Donc je me suis dis qu'il était temps que je fasse un petit article sur une liste de dépôts qui sert bien.
#### La base
deb http://ftp.fr.debian.org/debian/ etch main
deb-src http://ftp.fr.debian.org/debian/ etch main

#### Le plus
deb http://security.debian.org/ etch/updates main contrib non-free
deb-src http://security.debian.org/ etch/updates main contrib non-free

#### Le non-libre
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

#### Le bonus
deb http://www.debian-multimedia.org etch main 
Voilà. Il est possible que pour le dépôt multimédia il faille une clef gpg (GPG), le mieux est d'installer ce paquet-ci : debian-multimedia-keyring.

lundi 12 mai 2008

Programmation C : Toolkit Linux

Pour développer en C sous Linux (enfin chez moi sous Debian surtout) ils nous faut tout une flopée de paquets qui bien évidement de base ne sont pas inclus. Donc je vous invite donc à installer ces paquets-ci si vous tenez à travailler en C :
  • build-essential
  • manpages-dev
  • gcc
  • make
  • automake
  • autoconf
Bon les deux derniers sont assez facultatifs... Ils servent plus pour les geeks et ceux qui tiennent à faire de super programme qu'ils laisseront gentiment sur des sites de programmeurs chevelus et passionnés (qui a dit sourceforge ?), ou dans le pire des cas, pour les plus atteins, sur des sites développements intenses avec management de bénévoles (au hasard mais vraiment debian.org), licenses GPL (non pas l'essence, non) et tutti quanti ... Pour ce qui est des logiciels, la par contre le choix est franchement vaste. On retiendra ceux-ci :
  • vi ou vim : là faut être franchement dépressif
  • emacs : Faut aimé...
  • anjuta : très bon IDE, le paquet .deb porte le même nom : apt-get install anjuta
  • eclipse : oui le fameux IDE a fait un excellent plug-in pour le C, et une distribution juste pour lui. Par contre pas de dépôt, donc --> Eclipse Official Website
Si jamais vous rencontrez des soucis, il se peut que ça soit dû aux dépôts. J'ai fait un article sur ma liste de dépôts perso, ils sont stable et les paquets cités sont installables.

vendredi 9 mai 2008

Vidéo et Audio sous Linux : le nécessaire

C'est bien mignon de faire style "Je suis sous Linux", mais bon finalement si on peut pas écouter sa musique ou se faire un petit DVD tranquillement et simplement, ça devient vite ennuyeux, et on commence presque a regretter nos fenêtres bleues... Donc autant y remédier de suite.
Je rappelle à toute fin utile que personnellement je suis utilisateur Debian...
La première chose à faire est de bien vérifier que vous avez vos dépôts correctement configurés (/etc/apt/sources.list):
# multimedia
deb http://www.debian-multimedia.org etch main
Voici une liste non-exhaustive (qui sera certainement mise à jour) de paquets nécessaires ou utiles pour lire des fichiers vidéos ou audio sous Linux :
  • ffmpeg
  • libfaac0
  • libmp4v2-0
  • libswfdec0.3 (remplacé par libswfdec0.5-2 sous Debian Lenny)
  • libwavpack0 (remplacé par libwavpack1 à partir d’Ubuntu Feisty (merci Skankarius)
  • libxine-extracodecs (Ubuntu)
  • mimms
  • lame et lame-extras
  • faad
  • sox
  • mjpegtools
  • vorbis-tools
  • xvid4conf
  • libxvidcore4
  • libpng3
Ceux-ci fait ajouter aussi ces deux là ils peuvent etre bien utile :
  • w32codecs
  • libdvdcss2
Et enfin pour les utilisateurs de Gnome :
  • gstreamer0.10-ffmpeg
  • gstreamer0.10-fluendo-mp3
  • gstreamer0.10-gl
  • gstreamer0.10-pitfdll
  • gstreamer0.10-sdl
  • gstreamer0.10-plugins-ugly
  • gstreamer0.10-plugins-ugly-multiverse (Ubuntu)
  • gstreamer0.10-plugins-bad
  • gstreamer0.10-plugins-bad-multiverse (Ubuntu)
Voilà normalement avec tout ca vous avez de quoi faire. Pour ceux qui sont avides d'en avoir plus je vous renvoie vers le site : Linux on the root

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

Bienvenue

Ceci est donc mon blog personnel. Je vous souhaite donc la bienvenue et espère que ce que je met dessus servira à d'autres.

Ce blog illustre mes premiers pas dans le monde des CMS au travers de DotClear. Je profite de cette technologie pour archiver mon expérience de développeur, au travers de minis HOWTOS et Tutoriaux sur le monde de l'informatique et de la programmation. Il se peut également que vienne s'ajouter à cela des articles plus personnels sur des jeux videos, des groupes musicaux ou encore des endroits que j'aime.