Open Source

25.08.2009 Entreprise, Open Source 2 Comments

Tutorial installation d’OpenERP sous Ubuntu

Scub a commencé sa migration vers Open ERP ! Voici un petit tutorial que nous avons écrit sur l’installation du produit pour tester.

Installation de Ubuntu 9.04
Télécharger l’image ubuntu-9.04-desktop-i386 depuis le site de Ubuntu : http://www.ubuntu.com/getubuntu/download
Installer cette version. Nous conseillons fortement l’utilisation d’un outil de virtualisation type : http://www.virtualbox.org/

Installation de packages utiles
Lancer un shell et lancez la commande suivante pour installer les packages vim et java :
sudo apt-get install vim sun-java6-jdk

Installation de Python
Un certain nombre de packages Python sont nécessaires, vous pouvez les installer avec la ligne de commande suivante :
sudo apt-get install python python2.5 python-psycopg2 python-reportlab python-egenix-mxdatetime python-xml python-tz python-pychart python-pydot python-lxml python-libxslt1 python-vobject

Installation de PostgreSQL
Nous allons installer PostgreSQL avec la commande :
sudo apt-get install postgresql

Puis nous allons créer un utilisateur avec les commandes suivantes :
sudo su – postgres
createuser createdb no-createrole –pwprompt openerp
exit

Pour régler les problèmes de connexion, éditer le fichier de configuration de PostgreSQL :
sudo vim /etc/postgresql/8.3/main/pg_hba.conf

Pour avoir cette configuration :
local all postgres md5
local all all md5
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
Pour finir, redémarrer PostgreSQL avec la commande :
sudo /etc/init.d/postgresql-8.3 restart

Installation du serveur OpenERP
Lancer la commande :
sudo apt-get install openerp-server

Modification avant lancement
Il y a un petit problème de compatibilité avec Python sur cette version d’Ubuntu, nous devons donc faire les manipulations suivantes :
sudo vim /usr/bin/openerp-server
remplacer exec /usr/bin/python ./openerp-server.py par exec /usr/bin/python2.5 ./openerp-server.py
puis faites : sudo cp /usr/lib/python2.6/dist-packages/oldxml/_xmlplus/utils/boolean.so /usr/lib/python2.5/site-packages/oldxml/_xmlplus/utils

Installation du client lourd
Pour installer le client OpenERP, lancer la commande :
sudo apt-get install openerp-client

Lancement du serveur
Dans une console, nous allons lancer le serveur avec la commande :
openerp-server -r openerp -w pass
note : dans la commande précédente, remplacer pass par le mot de passe que vous avez entré lors de la création du compte dans PostgreSQL.

Configuration du client lourd
Le client OpenERP se trouve dans le menu Application / Internet / Client Open ERP.
Lancer le, passer la page d’enregistrement et aller dans Fichier / Base de données / Nouvelle base de données.
Renseignez les éléments suivants :
Mot de passe administrateur : admin
Nom de la nouvelle base de données : scub
Langue par défaut : French
Mot de masse : le mot de passe de votre choix.

10.04.2009 Java, Open Source No Comments

Développement de webservices avec Java, Maven, Axis et Jetty

Voici un petit tutorial sur la création de webservices avec Maven, Axis et Jetty. Vous allez voir, c’est simple et ça brille ! Ce document vous guidera de la création du projet à son déploiement. note : je pars du principe que vous avez déjà le JDK, Maven et Eclipse.


Étape 1 – En ligne de commande (MS-DOS ou Bash), on se place dans le répertoire du workspace d’eclipse.

Étape 2 – On utilise Maven pour créer un projet « web » qui se nommera scub-sw-test et qui se basera sur le modèle de projet Maven pour les webapps. En ligne de commande, on va donc taper : mvn archetype:create -DgroupId=com.scub.webservices.test -DartifactId=scub-ws-test -DarchetypeArtifactId=maven-archetype-webapp

Étape 3 – On se place dans le répertoire du projet scub-sw-test avec un simple cd scub-sw-test.

Étape 4 – On va demander à Maven de générer le fichier de configuration Ecllipse du projet avec la commande mvn eclipse:eclipse.

Étape 5 – On importe le projet dans Eclipse. Pour se faire, il suffit de lancer Eclipse, de faire File / Import / General / Existing projects into workspace.
Mettre dans Root directory le répertoire du workspace d’eclipse, puis, choissez le projet scub-sw-test et cliquez sur Finish.

Étape 6 – On crée le répertoire pour les sources Java.
On clique avec le bouton de droite sur le projet scub-ws-test puis New / Source Folder.
Choisissez le nom : src/main/java (attention, vous n’avez pas le choix, ce nom est obligatoire)
Les deux fichiers sources Java que vous allez créer par la suite devront forcement être dans ce répertoire.

Étape 7 – Nous allons créer une classe simple qui représente une personne.
Il s’agit donc d’une classe Personne avec trois propriétés : civilite, nom et prenom.

package com.scub.webservices.test;

public class Personne {
private String civilite;
private String nom;
private String prenom;
public String getCivilite() {
return civilite;
}
public void setCivilite(String civilite) {
this.civilite = civilite;
}
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public String getPrenom() {
return prenom;
}
public void setPrenom(String prenom) {
this.prenom = prenom;
}

}

Java2html


Étape 8 – On va maintenant créer notre service qui prendra en paramètre d’entrée une instance de l’objet Personne et retournera la désignation de la personne.

package com.scub.webservices.test;

public class PersonneService {

public String getDesignation(Personne p) {
return p.getCivilite() + " " + p.getNom() + " " + p.getPrenom();
}

}

Java2html


C’est cette fonction, getDesignation, que nous allons exporter en webservice.

Étape 9 – On va paramétrer le fichier web.xml du projet pour qu’il prenne en charge Axis.
On ouvre donc le fichier src/main/webapp/WEB-INF/web.xml et on met le contenu suivant :

<web-app>
<display-name>Archetype Created Web Application</display-name>

<servlet>
<servlet-name>axis</servlet-name>
<servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
<init-param>
<param-name>axis.ServerConfigFile</param-name>
<param-value>server-config.wsdd</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>axis</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>

</web-app>

Étape 10 – Dans l’étape précédente, nous avons paramétré la servlet Axis et nous lui avons demandé d’utiliser le fichier de configuration server-config.wsdd.
Dans le répertoire WEB-INF, nous allons donc créer le fichier server-config.wsdd comme suit :

<deployment xmlns= »http://xml.apache.org/axis/wsdd/«  xmlns:java= »http://xml.apache.org/axis/wsdd/providers/java« >

<globalConfiguration>
<parameter name= »adminPassword » value= »admin » />
<parameter name= »sendXsiTypes » value= »true » />
<parameter name= »sendMultiRefs » value= »false » />
<parameter name= »sendXMLDeclaration » value= »true » />
<parameter name= »axis.sendMinimizedElements » value= »true » />
<requestFlow>
<handler type= »java:org.apache.axis.handlers.JWSHandler« >
<parameter name= »scope » value= »session » />
</handler>
<handler type= »java:org.apache.axis.handlers.JWSHandler« >
<parameter name= »scope » value= »request » />
<parameter name= »extension » value= ».jwr » />
</handler>
</requestFlow>
</globalConfiguration>

<handler name= »Authenticate » type= »java:org.apache.axis.handlers.SimpleAuthenticationHandler » />
<handler name= »LocalResponder » type= »java:org.apache.axis.transport.local.LocalResponder » />
<handler name= »URLMapper » type= »java:org.apache.axis.handlers.http.URLMapper » />

<service name= »Version » provider= »java:RPC« >
<parameter name= »allowedMethods » value= »getVersion » />
<parameter name= »className » value= »org.apache.axis.Version » />
</service>

<service name= »PersonneService » provider= »java:RPC« >
<parameter name= »allowedMethods » value= »* » />
<parameter name= »className » value= »com.scub.webservices.test.PersonneService » />
<beanMapping xmlns:actunet= »urn:personne.test.webservices.scub.com » qname= »actunet:PersonneDTO » languageSpecificType= »java:com.scub.webservices.test.Personne » />
</service>

<transport name= »http« >
<requestFlow>
<handler type= »URLMapper » />
<handler type= »java:org.apache.axis.handlers.http.HTTPAuthHandler » />
</requestFlow>
</transport>
<transport name= »local« >
<responseFlow>
<handler type= »LocalResponder » />
</responseFlow>
</transport>
</deployment>

La seule chose spécifique dans ce fichier est :

<service name= »PersonneService » provider= »java:RPC« >
<parameter name= »allowedMethods » value= »* » />
<parameter name= »className » value= »com.scub.webservices.test.PersonneService » />
<beanMapping xmlns:actunet= »urn:personne.test.webservices.scub.com » qname= »actunet:PersonneDTO » languageSpecificType= »java:com.scub.webservices.test.Personne » />
</service>

Cette partie définie que nous souhaitons exporter toutes les méthodes de PersonneService en webservices. Nous demandons aussi à Axis de prendre en charge l’objet Personne.

Étape 11 – Nous avons paramétrer Axis mais pour le moment, nous n’avons pas mis en place les librairies nécessaires dans notre projet ! Et nous n’avons pas non plus mis en place de conteneur web.
Nous allons donc modifier le fichier pom.xml pour inclure les librairies Axis ainsi que le plugin qui permet de lancer le conteneur Jetty et de déployer l’application.

Voici le fichier une fois modifié :

<project xmlns:xsi= »http://www.w3.org/2001/XMLSchema-instance«  xmlns= »http://maven.apache.org/POM/4.0.0 » xsi:schemaLocation= »http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd« >
<modelVersion>4.0.0</modelVersion>
<groupId>com.scub.webservices.test</groupId>
<artifactId>scub-ws-test</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>scub-ws-test Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.xml</groupId>
<artifactId>jaxrpc</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.apache.axis</groupId>
<artifactId>axis</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>axis</groupId>
<artifactId>axis-wsdl4j</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>commons-discovery</groupId>
<artifactId>commons-discovery</artifactId>
<version>20040218.194635</version>
</dependency>
</dependencies>

<build>
<finalName>scub-ws-test</finalName>

<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
</plugin>
</plugins>

</build>
</project>

Étape 12 – Dans le répertoire de votre projet, en ligne de commande, lancez : mvn jetty:run.

Votre service devrait désormais etre disponible, il vous suffit de vous connecter à l’adresse http://localhost:8080/scub-ws-test/PersonneService?wsdl ! Si vous souhaitez le tester, je vous conseille d’utiliser SOAPui.

22.01.2009 Open Source 1 Comment

Migrer Firebird 1.5 vers 2.1

J’ai eu récemment à migrer Firebird de la version 1.5 vers la 2.0, et la documentation ne regorge pas à ce sujet, qui plus est en français. Voici donc la procédure à suivre pour une migration sans encombre :

  1. Sauvegarder vos bases de données

    Il faut pour cela utiliser la commande de sauvegarde gbak : gbak -user -password

    ex : gbak -v -t -user SYSDBA -password « masterkey » 127.0.0.1: »c:\Program Files\Firebird\Firebird_1_5\warehouse.fdb » c:\backups\warehouse.fbk

    Si vous possédez plusieurs bases de données, le plus simple est de créer un fichier bat contenant les multiples commandes.

  2. Sauvegarder la bases de sécurité

    Cela vous permettra de restaurer facilement vos utilisateurs et leurs mots de passe. Cette base s’appelle security.fdb et la sauvegarde se fait toujours à l’aide de gbak.

    ex : gbak -v -t -user SYSDBA -password « masterkey » 127.0.0.1: »c:\Program Files\Firebird\Firebird_1_5\security.fdb » c:\migrationFirebird\security.fbk

  3. Sauvegarder la librairie cliente pour Interbase

    Il est préférable de sauvegarder votre version actuelle de la librairie cliente pour Interbase, qui permettra à vos applications de se connecter à la base de données. Cette librairie se nomme GDS32.DLL et elle est normalement située dans le dossier système de Windows : c:\Windows\System32.

  4. Désinstaller Firebird 1.5

    La désinstallation peut se faire soit via le raccourci dans le menu démarrer, soit via le panneau de configuration -> « Ajout / Suppression de programmes »

  5. Effectuer les mises à jour Windows Update

    Il peut être nécessaire de faire les dernières mises à jour de Windows Update, notamment pour être sur d’avoir la bonne version de Windows Installer. Cette étape n’a pas été nécessaire pour ma part.

  6. Installer Firebird 2.1

    Il vous suffit d’installer Firebird à partir de l’éxécutable de la version 2.1 disponible sur leur site. Conservez toutes les options par défaut lors de l’installation.

  7. Restaurer la base de sécurité

    Un changement de stratégie a eu lieu pour la base de sécurité à partir de la version 2.0 de Firebird. Il n’est donc pas possible de restaurer directement la base de sécurité, qui se nomme maintenant security2.fdb. Et c’est surtout pour cette manip que j’ai eu du mal à trouver la documentation nécessaire, mis à part la simple instruction « convertisser la base de sécurité » présente dans leur documentation pdf.

    Il vous faut donc créer un fichier bat, y insérer le code suivant (à adapter à votre configuration) et l’éxécuter :

    # on demarre le service de firebird
    net start FirebirdServerDefaultInstance
    # on restaure simplement la base de sécurité
    "C:\Program Files\Firebird\Firebird_2_1\bin\gbak" -c -r -v -t -user SYSDBA -password "masterkey" c:\migrationFirebird\security.fbk 127.0.0.1:"c:\Program Files\Firebird\Firebird_2_1\security.fdb"
    # on execute le script de migration fourni par Firebird
    "C:\Program Files\Firebird\Firebird_2_1\bin\isql" -user SYSDBA -password "masterkey" -i "C:\Program Files\Firebird\Firebird_2_1\misc\upgrade\security\security_database.sql" "c:\Program Files\Firebird\Firebird_2_1\security.fdb"
    # on stoppe le service de firebird
    net stop FirebirdServerDefaultInstance
    # on ecrase la base de securité avec celle que l'on vient de migrer
    copy "c:\Program Files\Firebird\Firebird_2_1\security.fdb" "c:\Program Files\Firebird\Firebird_2_1\security2.fdb"
    # on supprime la base migrée
    del "c:\Program Files\Firebird\Firebird_2_1\security.fdb"
    pause
  8. Restaurer vos bases de données

    Vous pouvez maintenant restaurer vos bases de données, en utilisant à nouveau gbak.

    NOTE : La structure de la commande gbak a changé. Il ne faut plus utiliser l’option « -r » pour écraser une base existante mais « -REP ». Il faudra donc penser à migrer vos scripts de sauvegardes.

    ex : « C:\Program Files\Firebird\Firebird_2_1\bin\gbak » -c -REP -v -t -user SYSDBA -password « masterkey » c:\backups\warehouse.fbk 127.0.0.1: »c:\Program Files\Firebird\Firebird_2_1\warehouse.fdb »

  9. Migrer vos clients Interbase

    J’utilise IBExpert pour me connecter à mes bases Interbase. Il a fallu que je reselectionne ma librairire cliente pour pouvoir accèder aux bases. Pour chaque base configurée, aller dans « Database Registration Info » et sélectionner pour le « Client Library File », la librairie « C:\Windows\system32\GDS32.DLL ».

Voilà ! C’était pas plus compliqué que ça, mais c’est quand même plus facile quand c’est bien expliqué… et quand c’est en français pour certains ;)

25.11.2008 Open Source 2 Comments

[Ubuntu] Installer un pont réseau wifi avec Virtualbox (Bridged Networking Wireless)

Chez Scub, nous travaillons tous sous Ubuntu, nous développont avec Eclipse sur lequel se base notre socle technique, et on utilise Firefox pour les tests d’interfaces. Seulement, il nous est aussi nécessaire de tester nos applications sous un environnement Windows / Internet Explorer, qui correspond à la majorité des parcs informatiques de nos clients. Plutôt que d’utiliser une solution existante d’émulation du moteur de rendu d’Internet Explorer (IE4Linux par exemple) dont on est pas sur à 100% de l’exactitude du rendu, nous avons opté pour utiliser une solution de virtualisation de l’OS Microsoft. Bien que nos machines soient souvent équipées d’un dualboot Ubuntu / XP (ou Vista pour nos machines récentes), il n’est pas envisageable de devoir rebooter pour effectuer nos différents tests. Une autre solution que nous utilisons, est d’avoir une machine Windows sur laquelle on se connecte via VNCViewer, mais cette méthode pose des soucis lorsque l’on est plusieurs à en avoir besoin en même temps.

VMware Server (ou simplement VMware Viewer) est surement la solution la plus utilisée pour virtualiser un OS, mais un nouveau concurrent commence vraiment à se faire sa place : il s’agit de Virtualbox. J’ai donc voulu tester cette nouvelle solution, qui d’après les nombreux avis est très prometteuse, et offre surtout l’avantage d’être moins lourde que VMware Server. Seul mauvais point, la configuration semble être moins facile qu’avec VMware, notamment pour la reconnaissance des ports USB, la configuration du réseau, et quelques autres points…

Ce qui m’intéressait particulièrement dans l’utilisation d’un OS virtualisé, c’était la possibilité de faire communiquer l’OS hôte (ici Ubuntu) et l’OS invité (ici Win XP), afin de pouvoir tester rapidement mes developpements sous Internet Explorer. Par défaut, la configuration réseau (NAT) permet à l’OS invité d’avoir accès à internet en se faisant passer pour l’OS hôte. Le seul moyen de les faire alors communiquer entre eux est alors un dossier de partage ou une liaison Samba. Les deux OS ne sont donc pas reconnu comme des machines distinctes sur le réseau et elles ne peuvent pas se pinguer. Pour que ça soit le cas, il faut passer par la création d’un pont réseau (bridge) entre les deux machines (Host Interface Networking).

Mais autant la configuration d’un bridge sur une connexion ethernet est simple, autant sur une connexion wifi cela relève du parcours du combattant, notamment car certains chipsets wifi ne supportent pas du tout le bridge. J’ai donc du essayer plusieurs méthodes trouvées à droite à gauche, mais sans grand succès. Heureusement, j’ai enfin fini par tomber sur des tutoriaux en anglais qui m’ont grandement aidé pour réussir à faire marcher ce bridge wifi. Par contre, une fois que mes deux machines arrivaient à communiquer, plus moyen d’accèder à internet depuis l’OS invité. Et une fois ce problème résolu, je me suis rendu compte que tout marchait très bien en IP fixe, mais pas en DHCP. Un petit poil de recherches et de configuration plus tard, et mon bridge était enfin entièrement fonctionnel…

Voici donc (enfin) la marche à suivre :

1. Installation des pré-requis

Installation de parprouted pour la configuration du bridge, et de bcrelay pour l’utilisation du DHCP (optionnel)

sudo apt-get install parprouted
sudo apt-get install bcrelay

2. Script de création du bridge

Tout d’abord, on va créer un script de lancement et y ajouter les commandes suivantes :

sudo gedit /etc/network/if-up.d/vbox_network

on s’assure que l’IP Forwarding est bien activé

sysctl net.ipv4.ip_forward=1

on crée une interface tap0 (remplacez user par votre nom d’utilisateur Virtualbox)

VBoxTunctl -b -u user

on déclenche l’interface et on lui assigne une IP

ip link set tap0 up
ip addr add 192.168.1.149/24 dev tap0

notre interface dispose maintenant d’une adresse IP : 192.168.1.149. Vous pouvez adaptez cette IP à vos besoins. (Le /24 correspond au masque de sous-réseau 255.255.255.0)

on utilise ensuite Parprouted pour associer la carte wifi à l’interface tap0

parprouted wlan0 tap0

sous Ubuntu Hardy Heron, un probleme de configuration des routes bloquent le bon fonctionnement du bridge. Il est donc nécessaire de rédéfinir la route suivante :

route add -net 192.168.1.0 netmask 255.255.255.0 tap0

enfin, on active le DHCP

bcrelay -i tap0 -o wlan0 &

il ne reste maintenant plus qu’à rendre le script executable

sudo chmod 700 /etc/network/if-up.d/vbox_network

et vous pouvez lancer le script, puis vérifier son bon fonctionnement (par ex : test de ping d’une machine à l’autre) :

sudo /etc/network/if-up.d/vbox_network

Note : En activant le DHCP, la connexion de l’OS client mettra un peu plus de temps avant de s’initialiser correctement, mais cela fonctionne très bien ensutie.

3. Configuration de Virtualbox

Il faut aller dans les préférences de votre machine virtuelle, dans la partie Réseau. Dans l’adaptateur réseau activé (Adaptateur 1 par défaut), sélectionnez « Adaptateur réseau hôte » dans la liste « Attaché à » et rentrez « tap0″ en nom d’interface.

Il ne vous reste plus qu’à lancer Virtualbox et vérifier le bon fonctionnement du pont réseau…

4. Script de suppression du bridge

On va également crée un fichier spécifique :

sudo gedit /etc/network/if-down.d/vbox_network

Ce script se chargera de désactiver le DHCP, de stopper l’interface tap0, puis de la supprimer, de désactiver l’IP Forwarding et enfin de stopper parprouted.

killall bcrelay
ifconfig tap0 down
VBoxTunctl -d tap0
sysctl net.ipv4.ip_forward=0
pkill parprouted

il faut également rendre le fichier éxécutable

sudo chmod 700 /etc/network/if-down.d/vbox_network

et vous pouvez tester son fonctionnement :

sudo /etc/network/if-down.d/vbox_network

Sources :

25.10.2008 Entreprise, Java, Open Source No Comments

Écrire des programmes batch en Java

Dans tous les systèmes d’information, on trouve des programmes Batch qui effectuent les traitements de masse. Plutôt que d’avoir pleins de programmes disparates avec des méthodes différentes, Spring a lancé Spring Batch. Le projet est assez prometteur et voici un bon article d’introduction en français. Après quelques tests, je me dis que les ETL, quand ils peuvent être utilisés, sont quand même une bien meilleure solution : Plus facile à apprendre, à maintenir et tous les problèmes « techniques » sont pris en charge par l’outil. En plus, c’est très visuel.

25.08.2008 Open Source 3 Comments

Exporter un fichier bien encodé pour Excel

J’ai rencontré récemment, lors d’un de nos rares dev en PHP, des problèmes d’encodage pour l’affichage d’un tableau de données et pour l’export d’un fichier csv, qui serait ouvert principalement sous Microsoft Excel. Voici donc comment j’ai réussi à régler ce problème…

Tout d’abord, j’avais vérifié soigneusement tous les problèmes d’encodage en testant sous Open Office Tableur. Une fois que j’avais bien unifié les différents choix d’encodage (données récupérées de la base, page html et flux de sortie du excel), tout s’affichait correctement, aussi bien dans Internet Explorer, Firefox ou Open Office Tableur. J’avais bien entendu choisi l’encodage UTF-8 pour un affichage universel… soit disant !

Sous Open Office Tableur, une popup nous demande de choisir l’encodage du fichier à ouvrir, ainsi que les séparateurs de données (comma par défaut). On peut donc choisir la valeur par défaut (UTF-8) ou spécifier un encodage particulier. Par contre, sous Microsoft Office, l’encodage par défaut n’est pas l’UTF-8… du coup je me retrouvais à nouveau avec les problèmes d’encodage. La solution a donc été de spécificier l’encodage « windows-1252/Winlatin1″ (qui est l’encodage par défaut d’Excel) pour l’export du fichier csv, afin qu’il s’affiche correctement sous Excel. Il est par contre maintenant nécessaire d’aller choisir le bon encodage dans la liste pour afficher correctement ce même fichier sous Open Office Tableur.

Voici donc la commande PHP pour forcer l’encodage de votre flux de sortie (à adapter à votre langage) : header("Content-Type: text/csv; charset=windows-1252/Winlatin1");

25.08.2008 Open Source No Comments

Etat de l’open source en 2008

Nos amis de chez Gartner ont livré leur rapport sur l’état de l’Open Source et je le trouve bien :) La première chose à retenir est que, d’après eux, l’open source est bien plus utilisé dans les entreprises qu’on peut l’estimer. En effet, même ceux qui font du propriétaire inclut désormais des composants libres.

Autre chose qui me tient à cœur, leur analyse de tout ce qui est web 2.0 et « cloud computing » montre que l’Open Source est un élément clé de cet environnement ! non seulement, les logiciels libres permettent une plus grande souplesse mais ils permettent aussi de ne pas reporter les coûts de licences sur les clients et donc d’être plus efficace. D’ici 2012, 90% utiliseront de l’Open Source directement ou indirectement.

Mais une des choses les plus intéressantes pour moi est qu’ils estiment, que d’ici 2012, l’open source (qui sera alors le moteur du cloud computing) ne permettra pas de réduire autant les coûts que le permettra le SaaS. Le SaaS devrait « écraser » l’open source chez les clients car il ne nécessite pas de personnels qualifiés et qu’en plus, le SaaS supprimes les coûts d’infrastructure.

http://www.gartner.com/DisplayDocument?id=638643

18.07.2008 Décisionnel, Open Source No Comments

Démo d’un cube Olap crée avec des solutions libres

Le décisionnel a le vent en poupe en ce moment et les solutions libres dans ce domaine commencent vraiment à intéresser les directions informatiques. Même si elles ne sont pas toutes complètement finalisées et intégrées, on arrive à des solutions assez avancées et fonctionnant parfaitement en production. Depuis maintenant deux ans, nous mettons en œuvre la solution Pentaho qui a l’avantage d’inclure un peu tout ce dont on a besoin (ETL, Report Designer, Portail, visualisateur de cube olap…).

Pour vous faire une idée de ce que ça donne concrètement, voici une vidéo de démonstration d’une petite partie de la solution, il s’agit de JPivot qui permet à un utilisateur de visualiser et de personnaliser une statistique : http://www.scub.net/demo/decisionnel/.

N’hésitez pas à me contacter par mail pour avoir plus d’informations !

26.06.2008 Entreprise, Open Source No Comments

Les business models de l’Open Source

Voici une très bonne présentation « économique » de l’Open Source : http://stephesblog.blogs.com/presentations/BrentWilliamsEclipseConV02.pdf. Il y a dans le slide un fait très intéressant : « Red hat estime qu’il y a un milliard de dollars de R&D dépensé tous les dans dans le monde pour Linux. Red hat en tire tous les bénéfices en y investissant que 60 millions par an ». C’est un aspect très intéressant de l’Open Source pour les PME comme la notre, nos moyens sont très faible en R&D (comparé aux autres) et pourtant, nous bénéficions des investissements de tous les autres dans ces mêmes produits !!!

20.06.2008 Open Source No Comments

Description simple de l’open source

Voici un document que j’ai écrit pour un client et qui fait un rapide tour de ce qu’est l’Open Source et de son histoire… en espérant que cela comble certaines lacunes :)

Les logiciels libres sont apparus en 1985 avec la fondation « Free Software » ( http://www.fsf.org/ et http://www.fsffrance.org/ ) créer par Richard Stallman.

Un logiciel libre est un logiciel qui a une licence qui offre quatre libertés fondamentales :

  • La liberté d’exécuter le programme pour tous les usages.
  • La liberté d’étudier le fonctionnement du programme.
  • La liberté de redistribuer des copies.
  • La liberté d’améliorer le programme et de publier ses améliorations.

note : les deux dernières libertés ne peuvent s’appliquer que si l’on à accès au code source qui est en quelque sorte la recette de fabrication du logiciel.

Les logiciels libres sont donc systématiquement distribués avec une licence d’utilisation, la plus connue étant la Licence publique générale GNU généralement appelée GPL ( http://www.rodage.org/gpl-3.0.fr.html ). Elle est utilisée par 70% des projets existants sur le site sourceforge.net qui est le plus gros hébergeur de projets libres du monde.

Un des reproches que l’on a fait à la GPL est le fait qu’elle interdit la redistribution sous une autre forme que GPL. Pour simplifier, vous ne pouvez pas prendre un logiciel au format GPL et le modifier pour en faire un logiciel propriétaire.

Ceci a été vu comme une limitation et on a donc vu se développer un certain nombres de licences dites « de type BSD » qui offraient une plus grande liberté. ces licences permettent de redistribuer un logiciel libre sous une autre forme qui peut être non libre. Ces licences permettent donc à n’importe qui de changer la licence sous laquelle le logiciel est distribué. Les plus connues sont les licencesBerkeley software distribution (licence BSD) et Apache Software Foundation (licence Apache).

En 1998, Todd Anderson, Chris Peterson, John maddog Hall, Larry Augustin, Sam Ockman et Eric Raymond ont fondés l’Open Source initiative ( http://www.opensource.org/ ) avec pour idée d’avoir une approche plus adaptée aux réalités économiques et techniques des entreprises. Le mouvement Open Source s’attache moins à l’aspect philosophique des choses, il voit la disponibilité des sources plus comme étant la meilleur façon de développer dulogiciel que comme un mouvement social.

Concrètement, on parle plus de Logiciels Libres lorsque l’on parle philosophie et en parle plus d’Open Source lorsque l’on parle économie/entreprise.

Pour finir cette introduction, il me reste à parler d’une troisième famille de licence. En effet, nous avons donc vu qu’il y avait des licences peu permissives (GPL…) et des licences très permissives (BSD…) mais il existe une troisième famille de licences, à laquelle appartient laLGPL, et qui est considérée comme moyennement permissive. Elle est généralement utilisée par les composants logiciels (librairies) car elle permet à des logiciels non libres d’appeler du code source libre sans avoir à changer la licence de la partie non libre.