Planet Libre-entreprise

December 16, 2011

Easter-eggs

Plate-forme régionale de co-marquage en Bretagne

La direction de l'information légale et administrative (DILA) et le Syndicat mixte e-mégalis Bretagne ont signé une convention pour que les collectivités membres du syndicat puissent rediffuser, sur leur site Internet, les contenus de service-public.fr, le site officiel de l'administration française, et de vie-publique.fr, le portail d'information publique pour le citoyen.

Cette convention contribue à simplifier l'accès de l'usager à ses droits et démarches et à rendre plus accessibles les institutions et les politiques publiques.

C'est la solution libre développée par Easter-eggs, Comarquage.fr qui a été choisie pour ce déploiement régional.

Ce nouveau service d'e-administration est proposé par e-mégalis depuis octobre 2011.

A ce jour, la Communauté d'agglomération Rennes Métropole a déployé le service sur tous les sites des communes membres, comme par exemple sur le site de Cesson-Sévigné

December 16, 2011 04:30 PM

Plate-forme régionale de comarquage en Bretagne

La direction de l'information légale et administrative (DILA) et le Syndicat mixte e-mégalis Bretagne ont signé une convention pour que les collectivités membres du syndicat puissent rediffuser, sur leur site Internet, les contenus de service-public.fr, le site officiel de l'administration française, et de vie-publique.fr, le portail d'information publique pour le citoyen.

Cette convention contribue à simplifier l'accès de l'usager à ses droits et démarches et à rendre plus accessibles les institutions et les politiques publiques.

C'est la solution libre développée par Easter-eggs, Comarquage.fr qui a été choisie pour ce déploiement régional.

Ce nouveau service d'e-administration est proposé par e-mégalis depuis octobre 2011.

A ce jour, la Communauté d'agglomération Rennes Métropole a déployé le service sur tous les sites des communes membres, comme par exemple sur le site de Cesson-Sévigné

by Anne Dillard at December 16, 2011 04:00 PM

Plate-forme régionale de comarquage pour la Bretagne

La direction de l'information légale et administrative (DILA) et le Syndicat mixte e-mégalis Bretagne ont signé une convention pour que les collectivités membres du syndicat puissent rediffuser, sur leur site Internet, les contenus de service-public.fr, le site officiel de l'administration française, et de vie-publique.fr, le portail d'information publique pour le citoyen.

Cette convention contribue à simplifier l'accès de l'usager à ses droits et démarches et à rendre plus accessibles les institutions et les politiques publiques.

C'est la solution libre développée par Easter-eggs, Comarquage.fr qui a été choisie pour ce déploiement régional.

Ce nouveau service d'e-administration est proposé par e-mégalis depuis octobre 2011.

A ce jour, la Communauté d'agglomération Rennes Métropole a déployé le service sur tous les sites des communes membres, comme par exemple sur le site de Cesson-Sévigné

by Anne Dillard at December 16, 2011 03:55 PM

June 22, 2011

Easter-eggs

3e édition du Congrès annuel de l'ADULLACT

Les 23 et 24 juin prochains se tiendra la troisième édition du Congrès annuel de l'ADULLACT qui se déroulera au sein de l'Institut des Sciences et du Management de Montpellier.

Easter-eggs vous accueillera sur son stand pour vous présenter sa solution de co-marquage de Service-public.fr, Comarquage.fr, incluant la version mobile des guides des droits et démarches et l'annuaire citoyen géolocalisé.

Toutes les informations pratiques sont à retrouver sur le site du Congrès de l'Adullact.

June 22, 2011 03:35 PM

April 19, 2011

Easter-eggs

Un annuaire pour une justice plus proche

Source : Article publié le 07/04/2011 sur le site de 20minutes.fr :

Un annuaire pour une justice plus proche

ADMINISTRATION - La Chancellerie lance un annuaire enfin complet...

Il est souvent très difficile de se retrouver dans le dédale de la justice. Pour venir en aide aux citoyens effrayés par la complexité de la machine, la Chancellerie lance ce jeudi officiellement un nouveau service, « La Justice dans votre région ».

Un monde très complexe

Dans cet annuaire, 3.000 adresses du monde judiciaire : les différents tribunaux, les prisons, les conseils des prud'hommes, même les écoles de formation, etc. « Il y avait un réel besoin de clarification pour rapprocher la justice des citoyens », explique Bruno Badré, porte-parole de la Chancellerie. Une initiative que comprennent les associations de justiciables.

« Sur les 600 personnes qui nous ont contacté depuis trois ans, il y en a au moins 10 à 15% qui abandonnent les procédures, effrayées par la complexité », détaille Claude-André Michau, président de Droit, justice et consommation. Sur le site, déjà actif, les personnes peuvent, en tapant leur code postal, repérer les lieux de justice et notamment les permanences juridiques pas forcément facilement identifiables dans les villes. « II y a déjà au moins une requête par minute. Il y a une réelle demande », conclut Bruno Badré.

Matthieu Goar

Lire l'article en ligne

by Anne Dillard at April 19, 2011 03:57 PM

Un annuaire de 3 000 adresses en ligne pour trouver un lieu de justice ou d'accès au droit

Source : Article publié le 13.04.2011 sur service-public.fr de la DILA :

Le ministère de la justice et des libertés propose depuis le 7 avril 2011 un nouveau service en ligne pour trouver à partir du nom d'une commune (ou à partir d'un simple code postal), le lieu de justice ou d'accès au droit le plus proche de chez vous.

Tribunal compétent, association d'aide aux victimes, permanence d'information juridique : à partir du site www.justice.gouv.fr, l'espace "justice en région" regroupe près de 3 000 adresses pour vous accompagner dans vos démarches ou vous orienter vers le réseau judiciaire de proximité. A partir de cette base unique ayant intégré la nouvelle carte judiciaire, le moteur de recherche vous fournit une liste de résultats avec toutes les coordonnées nécessaires, les horaires d'ouverture et un certain nombre de renseignements complémentaires.

A noter également que le ministère de la justice et des libertés a lancé le 11 avril 2011 "MobiDroits", une application dédiée aux téléphones mobiles délivrant des informations de proximité et de première nécessité (géolocalisation des lieux de justice, numéros d'urgence...).

Lire l'article en ligne

April 19, 2011 03:52 PM

L'annuaire géolocalisé de la Justice développé par Easter-eggs

Dans le cadre de sa solution de co-marquage de service-public.fr, Easter-eggs a développé un annuaire géolocalisé de l'Administration.

Cet outil, mis à la disposition du Ministère de la Justice par Easter-eggs, a fait l'objet d'un lancement officiel le 7 avril dernier, lors de la présentation du nouveau service internet Justice en Région : afin d'épauler les citoyens dans leurs démarches, l'annuaire complet regroupe les 3.000 adresses du monde judiciaire à travers la France, en indiquant clairement les ressorts et compétences des organismes de justice pour chaque ville.

Voir l'annuaire Justice en Région en ligne.

Plus d'information en ligne sur :

by Anne Dillard at April 19, 2011 03:45 PM

December 02, 2010

Easter-eggs

Comarquage.fr sélectionnée par le Forum des Interconnectés 2010.

Easter-eggs a été sélectionnée par le jury du Forum annuel des Interconnectés dans le cadre de l'appel à entreprises innovantes du Réseau des Territoires Innovants.

Easter-eggs aura le plaisir de présenter Comarquage.fr, solution libre et innovante de co-marquage de service-public.fr édité par la DILA (Direction de l'information légale et administrative), devant un jury composé de DSI de collectivités.

Cette édition 2010 aura lieu les 13 et 14 décembre, au Centre des Congrès de Lyon. Elle offrira aux collectivités et entreprises l'occasion d'échanger sur leurs pratiques, découvrir de nouveaux outils et enrichir leurs réflexions stratégiques en matière de nouvelles technologies, notamment sur le développement des services en ligne à destination des citoyens ou sur les enjeux de la libération des données publiques.

December 02, 2010 02:29 PM

September 07, 2010

Les Développements Durables

Bêta de Formidable

Les Développements Durables annoncent la sortie d'une version de test d'un nouveau plugin de téléformulaire pour SPIP 2.

Il existait déjà deux extensions autour de la fonctionnalité de création de formulaire (Forms&Tables et spip-formulaires), dans les versions précédentes de SPIP. Par ce développement, LDD a souhaité repartir sur des bases propres à SPIP 2 (notamment le mécanisme CVT), afin de proposer une solution plus modulable et plus extensible.

Dans le cadre de ce projet, nous nous sommes inspirés de nos collègues de chez Entr'Ouvert spécialistes de ce domaine (cf : w.c.s), un exemple de plus de la bonne collaboration entre les membres du réseau Libre Entreprise.

Présentation du plugin

by Jean Grégoire at September 07, 2010 08:09 AM

July 04, 2010

Les Développements Durables

Mise en ligne du nouveau site de LDD

Fort de notre nouvelle identité visuelle, conçue par AWI, une nouvelle version du site www.ldd.fr est maintenant en ligne.

by Jean Grégoire at July 04, 2010 08:15 AM

July 01, 2010

Les Développements Durables

LDD aux RMLL 2010

LDD sera aux Rencontres Mondiales du Logiciel Libre du 6 au 11 juillet 2010 à Bordeaux pour des conférences, tables rondes et ateliers pratiques autour du Logiciel Libre et de ses usages.

Les RMLL sont un lieu d'échanges entre utilisateurs, développeurs et acteurs du Logiciel Libre. L'accès est gratuit et ouvert à tous.

Nous participerons à la table ronde sur la gestion d'AMAP ainsi qu'à la conférence sur le logiciel SPIP.

by Sébastien Ducoulombier at July 01, 2010 07:37 AM

May 30, 2010

Les Développements Durables

Troglo SPIP

Rencontre SPIP dans les grottes du Loir et Cher (Mazangé)

Une cinquantaine de "spipeurs" et leur famille se sont réunis lors d'un séjour convivial dans le superbe habitat troglodyte de Fil (de l'équipe du noyau de SPIP).

Au programme, présentation de divers plugins, formations, brain-storming sur le devenir de SPIP, des échanges informels et une bonne dose plaisirs culinaires et de rires.

En conclusion, un événement auto-géré qui résume bien l'esprit de SPIP : un moment productif, une organisation plaisante et collaborative avec des participants à l'esprit toujours "ouvert".

by Jean Grégoire at May 30, 2010 08:12 AM

April 27, 2010

Easter-eggs

2e édition du Congrès annuel ADULLACT ­

Les 24 et 25 juin prochains se tiendra la seconde édition du Congrès annuel de l'ADULLACT qui se déroulera au sein de l'Institut des Sciences et du Management de Montpellier.

Easter-eggs vous accueillera sur son stand pour vous présenter sa solution de co-marquage de Service-public.fr, Comarquage.fr.

Toutes les informations pratiques sont à retrouver sur le site du Congrès de l'Adullact.

by Anne Dillard at April 27, 2010 04:01 PM

Adullact : le co-marquage de Service-public.fr

Brève publiée le 12/04/10 sur le site de l'Adullact

Le co-marquage de Service-public.fr sur les sites internet des collectivités

La Dila permet aux collectivités d'intégrer dans leur site internet les 3 guides des droits et démarches publiés sur www.service-public.fr, à destination des particuliers, des associations et des professionnels.

Easter-eggs, spécialiste GNU/Linux depuis 1997, a développé une solution libre de co-marquage, Comarquage.fr, qui est à ce jour la seule solution libre permettant le co-marquage de ces 3 guides, quel que soit le type de CMS utilisé par la collectivité.

Dotée d'une interface d'édition, elle permet aux agents d'enrichir l'information administrative avec des compléments locaux et de mutualiser toutes les informations locales partagées avec les collectivités d'un même territoire.

Les intérêts du co-marquage sont multiples :
- la navigation de l'internaute se fait au sein du site de la collectivité,
- les informations fournies sont toujours à jour,
- le contenu du site est enrichi sans intervention,
- le référencement du site est amélioré.
- les démarches sont localisées sur le territoire.

L'outil sert à la fois à l'internaute qui recherche une information locale sur une démarche précise et à la collectivité, qui peut l'utiliser comme une source d'information légale non opposable aux guichets d'accueil.

L'intégration des guides des droits et démarches est très simple, il s'agit de copier et coller quelques lignes de code dans le site internet de la collectivité.

Pour permettre de tester Comarquage.fr, un essai gratuit pendant 3 mois sans engagement est proposé aux collectivités.

Si la collectivité souhaite adopter la solution, un abonnement annuel lui sera demandé (d'un montant égal à racine carrée de 30 fois la population) en contrepartie de la fourniture du service et du support, quel que soit le nombre de composants choisis.

Pour plus d'information : Contacter Easter-eggs au 01 43 35 00 37 ou à l'adresse info@comarquage.fr

Voir en ligne : Comarquage.fr est un service clé en main de diffusion d'informations publiques pour les sites web des collectivités territoriales et des services de l'État.

April 27, 2010 03:07 PM

March 03, 2010

Les Développements Durables

Création du Conseil National du Logiciel Libre

Les grandes associations régionales d'entreprises du logiciel libre en France forment ensemble le Conseil National du Logiciel Libre (CNLL).

10 associations d'entreprises du Logiciel Libre (dont ProLibre à laquelle est affiliée LDD), représentant 200 entreprises, se regroupent pour former le Conseil National du Logiciel Libre.

by Jean Grégoire at March 03, 2010 02:24 PM

February 18, 2010

Les Développements Durables

LDD à Solutions Linux 2010

Nous serons présents à Solutions Linux du 16 au 18 mars 2010 à Paris, sur le stand C18/D17, le stand du réseau Libre-entreprise, réseau de sociétés expertes en informatique libre créé en 2002.

by Sébastien Ducoulombier at February 18, 2010 11:41 AM

February 07, 2010

Les Développements Durables

Communication

Un nouveau partenariat pour LDD.

A l'occasion de cette nouvelle année, Les Développements Durables ont conclu un accord de Partenariat avec AWI (Aquitaine Webmédia Indépendant).

L'objectif est double :

En interne, une redéfinition de l'image de notre entreprise (refonte marketing des offres de LDD, ainsi qu'une nouvelles identité visuelle et ses déclinaisons : webdesign, plaquettes commerciales et autres outils de communication)

En externe, la proposition d'un véritable service d'accompagnement en communication pour nos clients.

by Jean Grégoire at February 07, 2010 09:14 AM

January 12, 2010

Easter-eggs

Répartition de charge

LVS est une solution puissante de répartition de charge et de clustering. Le cluster est complètement transparent pour l'utilisateur final, Il l'utilise comme si ce n'était qu'un seul serveur.

Un serveur frontal (le "load balancer") travaille au niveau de la couche IP en répartissant les connexions venant des différents clients vers les différents noeuds du cluster, en fonction d'une règle préalablement choisie (répartition équitable, aléatoire, etc).

lvs

Lorsqu'un noeud du cluster dysfonctionne (panne), il est automatiquement retiré du pool de répartition.

Le serveur frontal et les noeuds peuvent être directement connectés les uns aux autres via un LAN ou bien par des connexions distantes (WAN).

Le cluster peut fournir n'importe quel service basé sur IP, tels que du Web, mail, ftp, etc.

Il peut également être mis en place un système de haute disponibilité (fail-over) à l'aide de deux frontaux (load balancers) qui utiliseront le même cluster, paliant ainsi une panne du load-balancer.

by Pascal Brugier at January 12, 2010 05:02 PM

January 04, 2010

Easter-eggs

Dovecot : fonctionnalités IMAP avancées

Dovecot est un serveur IMAP et POP3 pour les systèmes d'exploitation de type Unix, distribué sous licence MIT et GPL-2.

Il a été conçu avec comme objectif premier la sécurité. Cependant, il offre aujourd'hui un nombre de fonctionnalités intéressantes, et que l'on ne trouve pas dans d'autres solutions.Il est un des serveurs IMAP les plus performants existants actuellement et offre :

- Gestion des permissions (ACLs) et des boîtes partagés et publiques (économie d'espace) ;
- Gestion des quotas ;
- Gestion de plusieurs sources d'authentification
- Optimisé pour les grosses infrastructures.


Standard

Dovecot est un des serveurs implémentant le mieux le standard IMAP. Ceci lui confère une compatibilité avec n'importe quel type de client, du lecteur de mail au téléphone mobile.

Sieve

Le MDA de Dovecot permet d'utiliser le standard Sieve (RFC5228) pour filtrer les e-mails. Cette approche permet la centralisations des filtres et leur application systématique quelque soit le moyen de consultation (client lourd ou webmail).

Indexation

Dovecot utilise les formats standard de boîtes mails Maildir ou mbox, mais ajoute un index maintenu de manière transparente. Lors de l'ouverture d'une boîte, l'index peut-être mis-à-jour si besoin. Ainsi le temps de chargement d'une boîte de plusieurs milliers de mails est toujours rapide. De plus les index sont optimisés par rapport aux besoins réels du client.

Dovecot (et ses index) sont totalement compatibles avec NFS, ce qui permet de l'utiliser sur du stockage partagés et par conséquent au sein d'un cluster à grande dimension.

Boîtes partagées et publiques

Dovecot permet le partage de boîte entres utilisateurs, et au sein d'une même entité. Il évite ainsi la duplication de message et les redirections entre utilisateurs (vacances, départ, etc).

Fonctionnalités

Dovecot fournit de nombreuses autres possibilités comme :
- Gestion des ACL ;
- Gestion des quotas ;
- Authentification sur différents backend : LDAP, SQL, … ;
- Lazy expunge : les utilisateurs qui ont tendance à supprimer des milliers de mails peuvent ralentir le système. Cette fonctionnalités déplace simplement les mails à supprimer dans un répertoire précis, pour que la suppression puisse se faire quand le système est moins chargé (e.g. la nuit) ;
- Suppression automatique des mails de la corbeille : si l'utilisateur a dépassé son quota, suppression automatique d'anciens mails de la corbeille ;
- Lecture automatique de boîtes mails compressées.

Extensible

De plus, Dovecot est facilement extensible via un système de greffons. Certaines fonctionnalités décrites précédemment sont d'ailleurs implémentés sous forme de greffon.

by Julien Danjou at January 04, 2010 09:20 AM

October 19, 2009

Easter-eggs

Optimisation des applications X11 avec XCB

XCB (X protocol C-language Binding) est un remplaçant de Xlib pour l'écriture d'applications ou de toolkits graphiques.

XCB a été conçu pour pallier différents problèmes liés à Xlib, comme :

- Réduction de la taille : Xlib n'est pas adaptée aux petits systèmes ;
- Réduction de la latence : Xlib est totalement synchrone ;
- Accès direct au protocole : Xlib cache beaucoup d'aspects du protocole en ajoutant plusieurs couches d'abstraction ou d'optimisation. Cela rend difficile l'envoi de requêtes X précises ;
- Support du multi-threading : bien que Xlib puisse le faire, il est bien plus difficile d'y arriver sans se tromper ;
- Ajout simplifié d'extensions : il est possible d'étendre Xlib, mais il est bien plus facile de le faire via XCB.

La bibliothèque XCB est conçue de manière à générer automatiquement son code directement en C à partir de fichiers de description du protocole X. Ces fichiers décrivent toutes les requêtes et évènements liés au protocole X en XML.

Ainsi il est très facile de rajouter le support d'une extension du protocole avec simplement une description de celui-ci en XML.

Il est également simple de générer du code dans un autre langage, comme xpyb, l'équivalent de XCB pour Python.

De plus, XCB utilise le protocole X de la même façon que Xlib. Certaines applications Xlib fonctionnent de la même façon depuis plus de 10 ans, ce qui garantit une grande pérennité au code écrit avec XCB.

Réduction de la latence

En utilisant l'approche synchrone de Xlib, une application se voit contrainte d'attendre la réponse du serveur X pour effectuer un traitement.

Par exemple, si l'application veut savoir quelle fenêtre a le focus, elle doit envoyer une requête GetInputFocus au serveur. Avec Xlib, cela se fait ainsi :

Window focused_window;
int revert_to;

/* On fait des choses */
do_many_stuff();

/* On envoit la requête au serveur X, et on attend la réponse */
XGetInputFocus(display, &focused_window, &revert_to);

/* On fait à nouveau des choses */
do_many_stuff_again(focused_window);

La fonction XGetInputFocus envoie une requête au serveur X (via le réseau, ou une socket locale), qui doit la traiter, puis renvoie la réponse. La fonction XGetInputFocus peut alors retourner la valeur au programme appelant.

En cas de latence importante du serveur X, cela peut devenir une source de ralentissement conséquente pour l'application.

En XCB, cela peut se traduire ainsi, en asynchrone :

/* On envoit la requête au serveur X */
xcb_get_input_focus_cookie_t focus_req = xcb_get_input_focus_unchecked(connection);

/* En attendant la réponse, on fait des choses */
do_many_stuff();

/* On récupère la réponse du serveur X */
xcb_get_input_focus_reply_t *focus_reply = xcb_get_input_focus_reply(connection, focus_req, NULL);

/* On fait à nouveau des choses */
do_many_stuff_again(focus_reply->focused_window);

Bien que le code soit légèrement plus verbeux, XCB permet de cacher la latence du serveur X en effectuant d'autres traitement pendant la réception de la réponse. Il faut donc envoyer la requête le plus tôt possible, et récupérer la réponse le plus tard possible, en faisant tout ce qu'il est possible de faire entre les deux pour minimiser l'effet de la latence sur le programme.

Ainsi, lors de l'envoi de plusieurs dizaines de requêtes en parallèle, il est possible de diminuer la durée d'exécution de certaines parties d'une application d'un facteur très important.

Utilisation

XCB a de plus en plus de cas d'utilisation, et une liste a été dressée ici.

Le plus important étant que les dernières versions de Xlib sont maintenant basées sur XCB pour la couche transport.

by Julien Danjou at October 19, 2009 02:37 PM

Intégration d'un langage de programmation dans une application avec Lua

Lua est un langage de programmation libre, réflexif, impératif et fonctionnel créé en 1993 à l'Université Rio de Janeiro au Brésil.

Lua est écrit en C ANSI, ce qui lui confère une grande portabilité, des systèmes les plus courants (GNU/Linux, Windows, …) jusqu'au monde de l'embarqué.

Lua est également énormément utilisé dans le monde des jeux video, pour sa portabilité et sa facilité d'intégration avec un programme existant.

Il est utilisé par des projets comme le célèbre jeu World of Warcraft de Blizzard Entertainment ou encore SimCity 4. Il a également été porté sur la console portable Sony PSP et est utilisé pour la programmation de jeux Nintendo DS.

Il est également utilisé par le gestionnaire de fenêtre awesome.

Intégration comme système de configuration

La plupart des logiciels utilisent un système de configuration à base de fichier plat, c'est à dire un système de clé/valeur, éventuellement structuré, pour configurer leurs différents paramètres.

Prenons un exemple, et étudions le cas d'un système de filtrage d'e-mail. Il est très facile de mettre en place une système de clé/valeur structuré pour filtrer un e-mail. En utilisant le format YAML cela donne quelque chose comme :

filtre1:
- Subject: SPAM
target: spam-box/
filtre2:
- To: myadress@mymail.org
From: paul@mymail.com
target: mails-from-paul/

Malheureusement, l'utilisation d'un tel système atteint ses limitations très rapidement.

Imaginons qu'un utilisateur veuille effectuer des actions non listées, comme remplacer le mot « dromadaire » par le mot « fougère ». Cela devient possible si le logiciel fournit une telle directive dans sa configuration, mais le nombre de directives prévues est forcément limité. On peut remarquer que l'ensemble de ces filtres est très facilement définissable comme un jeu de fonctions du type "function(message) return message, maildir".

function filtre1(message)
if message.subject:match("SPAM") then
return message, "spam-box"
end
end

Puisque le message est également retourné par la fonction de filtrage, il est très simple de le manipuler, et par exemple d'en modifier le contenu, et ce sans rajouter toutes les possibilités et les types de modification au logiciel de filtrage lui-même, ce qui est impossible à obtenir avec YAML.

function filtre1(message)
-- Replace words
message.content:gsub("dromadaire", "fougère")
if message.subject:match("SPAM") then
return message, "spam-box"
end
end

De la même façon, imaginons qu'un utilisateur veuille changer la configuration du logiciel de manière évènementielle, c'est-à-dire lorsqu'un évènement E se produit. En l'état actuel cela lui est totalement impossible, à moins que le logiciel prenne en charge une directive de configuration pour cet évènement.

En reprenant notre exemple ci-dessus, imaginons que l'utilisateur veuille numéroter chaque message, en rajoutant au début du sujet un identifiant numérique.

Le logiciel peut très bien rajouter une directive supplémentaire pour prendre en charge cette fonctionnalité, et modifier le format de son fichier de configuration.

Cependant, en utilisant Lua comme langage de programmation dédié à la configuration, il est très facile pour l'utilisateur de rajouter cette fonctionnalité :

message_number = 0

function on_message_delivery(message)
message_number = message_number + 1
end

function filter1(message)
message.subject = message_number .. message.subject
return message
end

Le développeur de notre logiciel de filtrage doit uniquement implémenter un système de signaux (ou de « hooks »). Dans l'exemple ci-dessus, la fonction "on_message_delivery" sera automatiquement appelée à chaque remise d'un e-mail dans une boîte mail. En reproduisant ce mécanisme pour tous les évènements produits par le logiciel, l'utilisateur sera en mesure de personnaliser son comportement directement depuis le fichier de configuration.

Intégration comme API de programmation

La définition d'une API de programmation en Lua se fait également de façon très simple. Plusieurs systèmes ont déjà utilisé Lua comme langage d'abstraction de plus haut niveau pour développer une application de manière beaucoup plus rapide et concise qu'avec un langage compilé tel que le C.

Le cas typique est celui de programmation d'IHM. Au lieu d'écrire une IHM fixe, il est possible de fournir une API simplifiée de création de widgets et de leur configuration. Cela laisse l'utilisateur libre de définir une IHM et de programmer son comportement de manière dynamique.

Facilité d'intégration

L'intégration de Lua à un outil existant est simple, voire triviale ! La bibliothèque C Lua utilise un système de pile pour interagir avec l'application, rendant son utilisation simple.

/** Définition d'une structure de donnée
* contenant des coordonnées et la taille d'un objet
*/
struct
{
int x, y, width, height;
} geometry;

/** Pousse sur la pile Lua une table contenant des clés x, y, width
* et height avec les valeurs correspondants.
* @param L La pile Lua.
* @param g La geometry de l'objet.
*/
void
lua_pushgeometry(lua_State *L, struct geometry g)
{
/* Creation d'une table vide qui sera sur le haut de la pile */
lua_newtable(L);
/* Ajout de la valeur de 'x' sur le haut de la pile (au dessus de la table */
lua_pushnumber(L, g.x);
/* Attribution de la valeur g.x tout juste poussé sur la table à la clé 'x' dans la table.
* -2 correspond à l'avant dernier élement (là ou se trouve la table) et "x" au nom de la clé.
* La valeur attribué est celle du haut de la pile (g.x).
* lua_setfield retire la valeur g.x de la pile. */
lua_setfield(L, -2, "x");
/* Ajout de la valeur de 'y' */
lua_pushnumber(L, g.y);
/* table[y] = g.y */
lua_setfield(L, -2, "y");

}

Conclusion

Lua est un langage extrêmement rapide de par son implémentation, et reste très proche du C. Il permet de fournir très facilement une API de configuration et/ou de programmation à l'utilisateur ou au développeur, et permet de prototyper une application aisément.

La taille du code source (17 KSLOC) et du binaire (100 K) lui permet d'être très facilement intégré dans un système embarqué où les contraintes de taille et de temps d'exécution ne permettent pas d'utiliser un langage plus évolué comme Python.

by Julien Danjou at October 19, 2009 01:46 PM

October 01, 2009

Les Développements Durables

LDD est officiellement Jeune Entreprise Innovante

LDD mène des projets de Recherche et Développement, principalement le développement d'application libres nouvelles et expérimentales. Elle vient d'obtenir le statut de Jeune Entreprise Innovante.

by Sébastien Ducoulombier at October 01, 2009 09:31 AM

August 20, 2009

Les Développements Durables

LDD rejoint ProLibre

LDD est officiellement membre de ProLibre, l'association régionale des professionnels du Logiciel Libre, qui regroupe 14 entreprises de service en Logiciel Libre en Aquitaine.

by Sébastien Ducoulombier at August 20, 2009 11:00 AM

August 19, 2009

Les Développements Durables

Gérer les menus d'un site SPIP

Avant, les menus d'un site SPIP étaient forcément écrit directement en squelettes. Les administrateurs gérant le site étaient donc obligés de faire des demandes à ceux qui s'occupent des squelettes dès qu'ils voulaient ajouter des entrées dans un menu ou changer l'ordre des éléments.

Désormais, avec le plugin Menus, il est possible de construire des menus directement depuis une interface conviviale très simple d'utilisation.

Il suffit donc d'appeler un menu dans ses squelettes en demandant par exemple : "ici je veux placer le menu nommé 'barre_navigation'". Et ensuite créer ce menu dans la partie privée de SPIP.

Toujours plus d'autonomie et encore moins de connaissances techniques à avoir pour les administrateurs des sites SPIP !

by Vincent Finkelstein at August 19, 2009 01:35 PM

May 25, 2009

Easter-eggs

Comarquage.fr pour les collectivités

Comarquage.fr est une solution clé en main, offre libre de services publics en ligne pour les collectivités territoriales et les services de l'État, qui propose notamment deux services inédits de comarquage pour les professionnels et les associations.

L'offre est constituée de composants indépendants immédiatement intégrables sur le site des collectivités et compatibles avec toutes les technologies web existantes.

  • Service-Public « Particuliers », pour diffuser l'ensemble de l'information administrative, locale et nationale à destination des citoyens, issue du site http://www.service-public.fr (1)
  • Service-Public « Professionnels », pour diffuser l'ensemble de l'information administrative, locale et nationale à destination des PME, commerçants, agriculteurs et professions libérales, issue du site http://pme.service-public.fr (1)
  • Service-Public « Associations », pour diffuser l'ensemble de l'information administrative, locale et nationale à destination des associations, issue du site http://www.service-public.fr.
  • Service-Public « Un changement dans ma vie », accès rapide aux démarches administratives en fonction des événements de la vie (J'attends un enfant, Je déménage, Je prépare ma retraite, j'organise ma succession,...).
  • Annuaire de l'administration locale et nationale, qui fournit les coordonnées des différents services indiqués dans les fiches des droits et des démarches de la Documentation Française.
Si vous souhaitez immédiatement intégrer ces services sur le site internet de votre collectivité, rendez-vous sur l'interface d'inscription de Comarquage.fr. Vous disposerez d'une période d'essai gratuite de trois mois qui vous permettra d'apprécier la qualité du service fourni.

Personnalisation et partage des informations

Une interface de gestion permet aux agents des collectivités de personnaliser les composants et de mutualiser les informations avec les administrations d'un même territoire :

  • Masquage ou ajout d' informations de comarquage.
  • Extension de l'annuaire à tous types de recherches (recherches localisées sur les médecins, les gardes d'enfants, les activités sportives...).

A qui s'adressent ces outils ?

- Aux collectivités territoriales et aux services de l'État, disposant d'un site ou d'un portail Internet :

  • les conseils généraux ;
  • les conseils régionaux ;
  • les communes et les inter-communalités ;
  • les chambres des métiers ;
  • les chambres de Commerce ;
  • les chambres d'Agriculture ;
  • les Préfectures ;
  • ...

- Aux intégrateurs et aux prestataires de services informatiques qui travaillent avec les collectivités ou les services de l'État.

Les tarifs 2010

Tarifs collectivités territoriales et services de l'État

L'adhésion au service est proposée sur la base d'un tarif unique annuel par site pondéré par la taille de la population du territoire visé.

Exemples de tarifs pour l'année 2010 :

Nb d'habitantsCoût annuel en euros HT
30095,00
500122,00
1000173,00
3000 300,00
5000387,00
10 000548,00
20 000775,00
50 0001 225,00
75 0001 500,00
125 0001 936,00
250 0002 739,00
500 0003 873,00
750 0004 743,00
1 000 0005 447,00
1 500 0006 708,00
2 000 0007 746,00
11 600 00018 655,00

Technologie et mise en oeuvre

« Comarquage.fr » est une solution de type service Web (SaaS - Software as a Service), distribuée depuis la plateforme d'hébergement Easter-eggs qui garantit le suivi, la mise à jour et la disponibilité des services à ses adhérents :

  • Intégration rapide : chaque composant est fourni sous la forme d'un gadget OpenSocial intégrable rapidement et de façon non-intrusive dans un site existant.
  • Compatibilité : la solution est compatible avec toutes les sites web existants.
  • Apparence : des CSS par défaut sont proposées pour une mise en ligne instantanée du service.
  • Référencement : le référencement des fiches du guide des droits et démarches et de l'annuaire dans les moteurs de recherche est optimisé pour une recherche intuitive du type « quoi ? : un service, ou ? : une ville ».
  • Accessibilité : la solution est développée selon les recommandations du Référentiel Général d'Accessibilité des Administrations (RGAA), version 2.2

    Une solution libre

    « Comarquage.fr » est une solution exclusivement fondée sur des logiciels libres et des technologies standards :

  • Elle est notamment interopérable avec les nouveaux outils de réseaux sociaux web 2.0
  • Cela facilite la réutilisation et la mutualisation des données
  • La collectivité peut envisager un hébergement local et une exploitation indépendante des services.

Logiciels utilisés :

  • Cosmetic est un logiciel de conversion en HTML des fichiers XML Coperia produits par la Documentation française dans le cadre du comarquage avec Service-Public.fr. Cosmetic est un logiciel libre sous licence GNU Affero General Public License version 3 ou supérieure. Plus d'informations à l'adresse http://wiki.infos-pratiques.org/wiki/Cosmetic
  • Metanol est un moteur de recherche d'adresses locales parmi différents annuaires publics. Metanol permet notamment d'accéder aux adresses et horaires d'ouvertures des différents organismes publics, administrations, établissements, équipements, etc, présents ou compétents pour chaque commune, département, région, etc. Metanol est un logiciel libre sous licence GNU Affero General Public License version 3 ou supérieure. Les données produites par Metanol sont sous licence GNU Free Documentation License version 1.3 ou supérieure. Plus d'informations à l'adresse http://wiki.infos-pratiques.org/wiki/Metanol
  • Territoria est à la fois une base de données hiérarchique des territoires, construite à partir de différentes sources publiques et un ensemble d'outils permettant de mettre à jour, exporter et manipuler cette base de données. Territoria est un logiciel libre sous licence GNU Affero General Public License version 3 ou supérieure. La base de données Territoria est sous licence GNU Free Documentation License version 1.3 ou supérieure. Plus d'informations à l'adresse http://wiki.infos-pratiques.org/wiki/Territoria

Héberger sa propre plateforme en local ?

Easter-eggs propose aux administrations qui le souhaitent un accompagnement « à la carte » pour le déploiement d'une plate-forme de services publics en ligne à l'échelle de la collectivité ou du territoire. Nous vous proposons dans cette optique :

  • Un accompagnement dans la mise en oeuvre et la personnalisation du service hébergé sur vos propres serveurs.
  • De la formation à destination de vos équipes et une assistance dans la phase d'exploitation avec une offre de support adaptée.

(1) Service-public.fr et pme.service-public.fr sont édités par la Documentation Française.

. Comarquage.fr est compatible avec la version 2 de Service-Public.fr.

by Pierre-yves Dillard at May 25, 2009 04:07 PM

April 05, 2009

Les Développements Durables

Nouveau Stagiaire

Johan Ponge nous rejoint pour un stage de 2 mois et demi. Il va compléter le plugin contact pour SPIP en y intégrant les fonctionnalités suivantes :

  • pour le webmestre :
    • autoriser ou non l'ajout de pièces jointes
    • autoriser ou non l'enregistrement des messages dans la base de données
  • pour les visiteurs :
    • joindre des pièces jointes aux messages
    • donner un titre aux pièces jointes.
  • pour les auteurs :
    • consulter les messages envoyés dans l'interface privée

by Nicolas Ducoulombier at April 05, 2009 03:55 PM

March 25, 2009

Les Développements Durables

Solutions Linux 2009 à Paris Expo Porte de Versailles

Depuis 5 ans, Les Développements Durables participent chaque année au salon Linux Expo, devenu Solutions Linux. L'édition 2009 aura lieu à Paris Expo, porte de Versailles, du 31 mars au 2 avril.

Nous serons heureux de pouvoir échanger avec vous durant ces 3 jours sur le stand du réseau Libre-entreprise, réseau de sociétés expertes en informatique libre créé en 2002 (stand D16, à proximité du village associatif).

Depuis 5 ans, Les Développements Durables participent chaque année au salon Linux Expo, devenu Solutions Linux. L'édition 2009 aura lieu à Paris Expo, porte de Versailles, du 31 mars au 2 avril.

Nous serons heureux de pouvoir échanger avec vous durant ces 3 jours sur le stand du réseau Libre-entreprise, réseau de sociétés expertes en informatique libre créé en 2002 (stand D16, à proximité du village associatif).

Informations pratiques

  • Jours et horaires d'ouverture
    • Mardi 31 mars : 9h00-18h00
    • Mercredi 1er avril : 9h00-20h00
    • Jeudi 2 avril : 9h00-18h00
  • Lieu
    • Paris Expo - Porte de Versailles, hall 2.2
  • Accès

Métro : Ligne 12, station Porte de Versailles, Bus : Lignes 39, 80 ou T3 arrêt Porte de Versailles - Palais des Expositions

GIF - 29.7 ko

by Nicolas Ducoulombier at March 25, 2009 07:56 AM

March 23, 2009

Les Développements Durables

Formulaire de contact avancé pour SPIP

Il est facile dans SPIP d'appeler un formulaire pour écrire à une personne ayant un compte. Il suffit d'appeler #FORMULAIRE_ECRIRE_AUTEUR.

Mais lorsqu'on veut quelque chose de plus complexe, comme donner le choix du destinataire, ou des informations complémentaires, il faut souvent coder soi-même son formulaire.

Voici donc un plugin qui permet de faire tout cela très simplement grâce à une page de configuration permettant de personnaliser une nouvelle balise #FORMULAIRE_CONTACT.

Pour l'instant, les fonctionnalités sont les suivantes :

  • envoyer à plusieurs destinataires
  • donner le choix du destinataire au visiteur (un seul ou plusieurs)
  • ajouter des champs supplémentaires (téléphone, entreprise, adresse, etc)
  • choisir l'ordre de ces champs par glisser-déplacer
  • pouvoir ajouter de nouveaux champs non prévus par le plugin

À terme nous aimerions proposer l'ajout de pièces jointes (par exemple un CV pour une demande de candidature) ainsi que l'enregistrement dans la base de données des messages de contact afin de les garder en mémoire et de les manipuler pour autre chose ensuite (par exemple un suivi des réponses).

La documentation complète se trouve là : "Formulaire de contact avancé" sur SPIP-Contrib

by Vincent Finkelstein at March 23, 2009 05:52 PM

March 11, 2009

Easter-eggs

Git

Présentation de l'outil Git

Git est un outil de gestion de versions décentralisé, développé initialement par Linus Torvalds. Utilisé pour le développement du noyau Linux, diffusé sous la licence libre GPL v2, ce système est maintenant utilisé par de nombreux autres projets libres : X.Org, freedesktop.org, GNOME, Perl, Wine, Vlc, etc.

Git possède toutes les fonctionnalités caractéristiques, et les avantages, d'un tel outil :

  • pas d'entrepôt central : toutes les copies de travail contiennent l'ensemble des données du projet, ce qui sécurise le projet contre les pertes de données ;
  • toutes les opérations standards (commits, visualisation d'historique, retour en arrière) sont rapides car réalisées sans accès au réseau ;
  • possibilité de travailler entièrement off-line, et de commiter sans publication des modifications ;
  • gestion des historiques, des branches, et fusions de branches.

Mais Git a des nombreux atouts qui le distingue de ses concurrents. En premier lieu sa performance. Git est généralement bien plus rapide que ses principaux concurrents [1].

Les dépôts Git utilisent moins de place que les dépôts des autres systèmes de gestion de versions décentralisés [2]. Plus étonnant, un dépôt Git peut prendre moins de place qu'une copie de travail SVN, bien qu'il contienne l'intégralité de toutes les révisions du projet, ce qui n'est pas de la copie de travail SVN [3].

Les autres atouts de Git sont ses fonctionnalités avancées telles que :

  • les commits interactifs : la possibilité de choisir, dans chaque fichier modifié, quelle ligne intégrera le commit ;
  • les cherry-pick : la possibilité de déplacer des patchs dans l'historique ou d'une branche à l'autre ;
  • git-stash pour stocker provisoirement les modifications en cours, par exemple pour corriger un bug qui vient d'être signalé ;
  • les patchs signés ;
  • git-bisect qui permet de retrouver dans l'historique d'un projet le commit qui a introduit un bug.

Enfin la grande force de Git est la facilité avec laquelle il permet de manipuler les branches. Créer des branches, passer de l'une à l'autre, les fusionner, les effacer, ne les publier que si nécessaire, toutes ces opérations sont extrêmement simples et rapides à effectuer.

Cela permet d'utiliser de nouveaux processus de développement et d'intégration logiciel par exemple basés sur le principe d'une branche par sujet (topic branch).

Heureusement pour ses concurrents, Git a aussi des faiblesses :

  • il ne permet pas la récupération partielle d'un dépôt, ce qui est pénalisant pour des projets avec des fichiers binaires de grande taille ;
  • git n'existe qu'en anglais ;
  • le programme git-svn, qui permet d'utiliser Git au dessus d'un dépôt Subversion, est peu performant sous Windows [4].

Les prestations d'Easter-eggs

Les prestations d'Easter-eggs autour du logiciel Git sont de trois natures :

Tout d'abord Easter-eggs se propose d'aider à l'intégration de Git dans le SI du client. Cette prestation comprend l'installation d'un serveur central, la migration des données du précédent logiciel (CVS, Subversion ou tout autre système de gestion de version). Certaines entreprises souhaitent continuer à maintenir l'ancien dépôt centralisé en parallèle de l'utilisation de Git. Il est alors possible de mettre en place une synchronisation avec un dépôt Git.

Easter-eggs peut aussi assurer des formations à Git :

  • Introduction à Git et aux systèmes décentralisés de gestion de version ;
  • Utilisation avancée de Git : il s'agit de former aux fonctionnalités avancées dont certaines sont citées ci-dessus ;
  • Bonnes pratiques avec Git : les fonctionnalités offertes par Git impliquent une autre manière de gérer un projet, de créer des patchs, des branches, etc. Ce module présentera ces bonnes pratiques.

Enfin Easter-eggs peut assurer des prestations de conseil autour de Git. Certains outils intégrés à Git, comme git-bisect, nécessitent une expertise et un accompagnement pour leur mise en œuvre.


[1] voir ici, ici ou .

[2] voir ici ou .

[3] Voir ici.

[4] L'amélioration de git-svn sous windows est un projet proposé au Google Summer of Code 2009

by Michaël Parienti at March 11, 2009 10:49 AM

March 06, 2009

Easter-eggs

Système et Réseau

Easter-eggs intègre et déploie des solutions serveurs à base de logiciels libres depuis 1997. Notre expertise s'est progressivement développée au fil des années et de nos projets clients. Nos domaines de compétences couvrent aujourd'hui un très large spectre en matière de solutions serveurs GNU/Linux. De l'audit de vos systèmes à l'optimisation des performances, du conseil en architecture à l'assistance au déploiement, Easter-eggs met son expérience à votre service.

Internet - Intranet - Extranet

Serveur Web
Messagerie
Annuaire LDAP centralisé et base de données
Serveurs de fichiers, d'impressions
Serveur de Fax
Téléphonie (VOIP)

Infrastructure réseau

Passerelles et routeurs Internet/wifi
Serveur de sauvegarde
Haute-disponibilité, équilibrage de charge
Serveurs virtuels

Sécurité

Pare-feu, réseaux privés virtuels
Supervision
Serveurs Proxy et reverse Proxy

by Emmanuel Lacour, Pierre-yves Dillard at March 06, 2009 02:41 PM

Système et Réseau

Easter-eggs intègre et déploie des solutions serveurs à base de logiciels libres depuis 1997. Notre expertise s'est progressivement développée au fil des années et de nos projets clients. Nos domaines de compétences couvrent aujourd'hui un très large spectre en matière de solutions serveurs GNU/Linux. De l'audit de vos systèmes à l'optimisation des performances, du conseil en architecture à l'assistance au déploiement, Easter-eggs met son expérience à votre service.

Internet - Intranet - Extranet

Serveur Web
Messagerie
Annuaire LDAP centralisé et base de données
Serveurs de fichiers, d'impressions
Serveur de Fax
Téléphonie (VOIP)

Infrastructure réseau

Passerelles et routeurs Internet/wifi
Serveur de sauvegarde
Haute-disponibilité, équilibrage de charge
Serveurs virtuels

Sécurité

Pare-feu, réseaux privés virtuels
Supervision
Serveurs Proxy et reverse Proxy

by Emmanuel Lacour, Pierre-yves Dillard at March 06, 2009 02:41 PM

Développement spécifique

Particulièrement adaptés au développement applicatif, les logiciels libres fournissent des outils de développement robustes, sécurisés et ouverts, permettant de développer tout type d'applications.

De la définition du cahier des charges au développement et jusqu'à l'intégration dans votre système d'information, nous vous accompagnons tout au long de votre projet.

Actuellement la majorité des développements ont lieu dans un environnement Web. Easter-eggs maîtrise dans ce domaine deux technologies en particulier. Le choix entre ces deux environnements est alors dicté par les contraintes du client.

Environnement PHP

Depuis sa version 5, PHP a acquis des fonctionnalités qui le rapprochent de Java et de .NET, tout en gardant sa souplesse d'origine.

Très présent dans le monde des applications Web riches, il est aussi de plus en plus utilisé pour les applications stratégiques de l'entreprise.

Il n'est plus question aujourd'hui de réaliser un projet en PHP sans utiliser un framework qui balise les développements. Pour des raisons de souplesse, de fonctionnalité et de documentation, notre choix de framework PHP s'est porté sur Symfony.

Environnement Python

Python est un langage de programmation interprété orienté objet, puissant et pratique. Easter-eggs l'utilise depuis dix ans pour des projets internes et pour des projets non Web.

Aujourd'hui il existe des outils qui permettent d'utiliser aussi ce langage pour des projets Web.

La préférence d'Easter-eggs va au framework Pylons, pour sa très grande légèreté et sa modularité issue de l'utilisation du standard WSGI. Nous utilisons Pylons avec l'outil de mapping objet-relationnel SQLAlchemy et le moteur de template Mako.

MySQL et PostgreSQL

Les bases de données relationnelles (MySQL) ou relationnelles/objets (PostgreSQL) sous licence libre possèdent aujourd'hui toutes les fonctionnalités et les performances autrefois réservées aux SGBD propriétaires. Le choix de l'une ou de l'autre se fait en fonction du projet et des besoins du client.

Richesse des interface Web

Le langage Javascript remis au goût du jour par la méthode Ajax permet aujourd'hui, avec une utilisation contrôlée, d'enrichir le client Web en offrant plus d'ergonomie à l'utilisateur. L'utilisation de librairies comme MooTools ou Jquery facilite et accélère le travail des développeurs en prenant en charge, par exemple, la comptabilité Cross-Browser.

Méthodologie

Les meilleures technologies ne donnent rien sans méthodes de développement et de suivi adaptées. Nos développements s'appuient sur des méthodes agiles que nous adaptons à la taille du projet et/ou à la culture du client. Pour chacune de nos réalisations nous mettons en place des outils de suivi (Trac ou Redmine), des canaux de communication dédiés avec le client (mailings listes), et bien sûr un outil de gestion de versions, Git.

by Michaël Parienti, Pierre-yves Dillard at March 06, 2009 02:33 PM

February 27, 2009

Easter-eggs

Retour sur l'optimisation des performances d'une base de données PostgreSQL

La base de données PostgreSQL du projet MAVISE fournit les données de base sur l'ensemble du marché audiovisuel accessible dans l'Union européenne. Elle a été développée par Easter-eggs en collaboration avec l'Observatoire Européen de l'Audiovisuel, pour le compte de la direction générale de la communication de la Commission européenne. Nous allons décrire dans cet article les différentes méthodes que nous avons mises en place pour optimiser les performances de cette application.

Problématique

La base de données contient un grand nombre d'informations :

  • la description du paysage audiovisuel de 30 pays ;
  • des fiches sur 5 000 chaînes de télévision ;
  • des fiches sur 4 000 entreprises ;
  • des fiches sur 8 000 programmes de télévision ;

L'ensemble de ces données ne sont pas accessibles au grand public.

D'un point de vue technique, la base de données PostgreSQL contient :

  • 115 tables ;
  • 100 vues ;
  • 220 Mo de données.

Cela donne une petite idée de la taille de l'application.

La complexité de l'application, la quantité de données disponibles et leur affichage ont soulevé certaines problématiques pour gérer les transferts entre le client et le serveur Web et les requêtes complexes.

Optimisation de la base de données

Pour l'optimisation de la base de données, il faut être vigilant sur les points suivants :

- L'ORM (DB_DataObject dans notre cas) ne doit faire aucune opération de jointure . Il utilise toujours une vue dédiée pour chaque fonctionnalité ;
- Chaque vue ne calcule que les champs qui sont nécessaires à l'affichage ;
- Le plan d'exécution de chaque vue est optimisé à l'aide d'index. Pour trouver quels sont les index à créer, il faut utiliser l'instruction EXPLAIN ANALYSE , comme décrit sur le wiki de Postgres : Using EXPLAIN.

Le travail principal consiste donc à exécuter toutes les vues de l'application pour optimiser les plans d'exécution à l'aide d'index. Pour mieux comprendre la sortie de l'instruction EXPLAIN ANALYSE, nous utilisons l'outil suivant : explain-analyze.info.

Pour savoir quelles sont les optimisations les plus pertinentes, il est intéressant d'analyser les logs du serveur PostgreSQL à l'aide du logiciel Practical Query Analysis.

Il faut aussi “tuner” la configuration du serveur de base de données pour utiliser le maximum de la mémoire disponible sur le serveur.

Javascript

Nous avons utilisé le framework Javascript Mootools, le contrôleur de tableau dhtmlxGrid et l'éditeur de contenu TinyMCE.

Dans chaque page de l'application, il faut veiller à ne charger que les fichiers nécessaires. En effet, ces outils, bien que très pratiques, sont très volumineux et augmentent la taille des pages dans des proportions importantes.

Dans certains cas, nous avons dépassé plus de 640 Ko de code Javascript dans une page !

Les solutions que nous avons mises en place pour réduire la taille de ces fichiers :

  • La compression Gzip, avec laquelle nous avons malheureusement rencontré des problèmes très importants avec Internet Explorer ;
  • Nous avons ensuite opté pour YUI Compressor qui fonctionne bien mieux .

Systèmes de Cache

L'application dispose de nombreux systèmes de cache :

  • Le système de cache du gestionaire de template Smarty ;
  • Notre propre système de cache pour le contenu des tableaux, réalisé à l'aide du module Pear Cache_Lite ;
  • L'API de XCache, pour certains calculs et XCache pour les opcodes PHP ;
  • Le système de cache d'Apache Cocoon pour le système d'impression ;
  • La cache du navigateur des utilisateurs. Il est possible de bien contrôler le contenu du navigateur des clients à l'aide du module mod_expires d'Apache.

Réduction de la taille des pages

Nous avons travaillé pour réduire au maximum la taille des échanges entre le navigateur web et le serveur. Pour cela nous avons utilisé la compression Gzip sur :

  • Le contenu des tableaux ;
  • Les pages produites par le système de template ;

Celle-ci est réalisée par le gestionnaire de tampon de PHP, à l'aide de la fonction ob_gzhandler .

Outils utilisés

L'optimisation d'une application est toujours empirique, il est nécessaire d'avoir de bons outils pour observer les effets des modifications. Pour cela nous avons utilisé :

Liens utiles pour l'optimisation des performances d'une application Web

Pour finir, voici quelques liens très intéressants sur l'optimisation d'une application Web :

by Christophe Nowicki at February 27, 2009 09:34 AM

Système d'impression PDF « RESTful » pour le Web

Le monde du Web et celui de l'impression ont décidément du mal à se rencontrer. La prise en charge de l'impression est bien souvent très problématique dans le cadre d'un projet Web.

Dans la plupart des cas, il est possible de s'en sortir en utilisant les possibilités offertes par les feuilles de style CSS, mais le rendu final du document n'est pas garanti : les différents navigateurs interprètent la feuille de style selon leur humeur et cela ne fonctionne pas dans le cas de documents complexes.

Dans ce cas, l'unique solution est de produire un document au format PDF, unique garantie pour une impression de qualité. Je vais donc décrire dans cet article la solution que nous avons mise en place dans le cadre du projet MAVISE.

Historique

La base de données MAVISE fournit les données sur l'ensemble des chaînes de télévision accessibles dans l'Union européenne. Elle a été développée par Easter-eggs en collaboration avec l'Observatoire européen de l'audiovisuel (OEA) pour le compte de la Direction Générale de le Communication de la Commission Européenne.

Dans la première phase du projet, nous avons développé un système d'impression avec des feuilles de style. Ce système ne donnait pas entièrement satisfaction au client.

En effet, les pages du projet étant très complexes, le résultat de l'impression produite par les différents navigateurs était très aléatoire (coupure en plein milieu d'un tableau, impression sur plusieurs pages et sauts de pages inexpliqués).

Le résultat n'était pas professionnel et il était difficile pour le client de produire un rapport papier avec les contenus de la base. Nous avons donc proposé de mettre en place un export PDF pour l'ensemble des éléments de l'application.

Choix techniques

Le travail pour produire des documents PDF consiste dans la plupart des cas à dessiner, à l'aide de différentes API, le contenu du document (texte, tableaux, graphiques et mise en page).

Les outils utilisés habituellement sont :

Il s'agit d'un travail long et fastidieux, qui consiste à fournir une suite d'instructions pour former le document.

Cette technique montre vite ses limites :

  • les demandes de modification de mise en page du document produit sont lourdes et nécessitent beaucoup de temps ;
  • le code pour produire le document est difficilement rationalisable ;
  • elle ne convient pas à des documents de grande taille.

Dans le modèle MVC, qu'utilisent la plupart des applications Web, nous utilisons un système de template pour l'affichage (la vue).

Alors à quoi bon « coder » à nouveau la présentation des documents PDF ?

Nous avons donc proposé au client de bâtir le système d'impression des documents PDF sur un système de template.

Ce système repose sur le langage de programmation XSL-FO, les projets Apache FOP et Apache Cocoon.

Architecture du système d'impression

1. Lorsque l'utilisateur clique sur le lien PDF, il est redirigé vers Apache Cocoon ;
2. Cocoon récupère l'ensemble des informations directement sur le site Web via l'API REST ;
3. Il agrège les informations dans un document XML ;
4. Ce document est transformé en FO à l'aide d'une feuille de style XSLT ;
5. Le document est produit par Apache FOP ;
6. L'utilisateur obtient le document final.

L'interface entre le Site Web et Apache Cocoon

L'architecture du système d'impression repose sur le fait que l'ensemble des variables manipulées par notre application est accessible à l'aide d'URL REST.

En effet, il est possible d'afficher le contenu des différentes variables manipulées par l'application à l'aide d'adresses URL spécifiques. Voici un exemple de sortie :





1
FR
France
t
4+

...

Il est donc possible de récupérer l'ensemble des informations du site à l'aide du protocole REST.

Nous avons aussi de très nombreux tableaux dans l'application. Pour les récupérer, nous utilisons le format XML natif du contrôleur de tableaux dhtmlxGrid. Voici un exemple de sortie : fichier XML pour dhtmlxGrid.

Agrégation des données dans un seul fichier

Pour récupérer l'ensemble des données du site dans un fichier XML, la directive « include » offerte par Cocoon a été utilisée :

$ cat /var/lib/tomcat5/webapps/cocoon/mavise/program/program.xml




...

Cette directive dit à Cocoon, d'inclure le contenu qui se trouve à l'url cocoon :/webui_program, défini dans le fichier sitemap.xmap :





Transformation XSLT

Pour transformer les données contenues dans ce fichier, nous avons créé notre propre feuille de style XSLT, pour produire un document FO. Cette feuille de style prend en compte la mise en forme des différentes données du site.

Grâce à ce système, l'ensemble de la mise en forme est centralisé dans un seul fichier.

Il est également possible d'ajouter du contenu statique dans le PDF à l'aide de balises dédiées, comme par exemple une balise copyright, qui sera transformée en un texte statique dans tous les documents PDF.

Le pipeline pour les documents PDF

Voici le pipeline final pour produire des documents PDF :











Le point intéressant à noter dans ce pipeline est l'encodage des arguments passés via l'URL pour le document PDF. En effet, les URL pour produire les PDF sont formés de la manière suivante :

http://mavise.obs.coe.int/cocoon/ma...

L'URL contient le nom du module et l'identifiant de la chaîne. Il est ainsi possible de passer d'autres arguments au système d'impression (comme par exemple changer l'orientation du document).

Performances

Au niveau des performances du système d'impression, nous n'avons pas une charge très importante sur la génération des documents PDF. Mais la production des documents est une tâche complexe et nécessite donc de manière générale beaucoup de ressources.

Une chose intéressante à noter : la génération des documents PDF est plus rapide que l'affichage dans un navigateur ! Cela est lié au fait que les échanges de données se font en local sur le serveur, il y a donc moins de bande passante utilisée que dans le cas de l'affichage de cette même page par le navigateur.

Les petits désagréments du format PDF

Nous avons rencontré des difficultés avec la gestion des polices UTF-8. En effet, comme la base contient des données sur des chaînes de télévision et des entreprises Turques, nous avons eu besoin d'embarquer une police UTF-8 à l'intérieur du document.

Et visiblement cela pose des problèmes à certains lecteurs.

Quelques liens utiles

Voici quelques liens utiles qui nous ont aidé dans la réalisation de ce système d'impression :

by Christophe Nowicki at February 27, 2009 09:34 AM

January 30, 2009

Easter-eggs

Solutions Linux 2009 à Paris Expo Porte de Versailles

Depuis 10 ans, Easter-eggs participe chaque année au salon Linux Expo, devenu Solutions Linux. L'édition 2009 aura lieu à Paris Expo, porte de Versailles, du 31 mars au 2 avril.

Nous serons heureux de pouvoir échanger avec vous durant ces 3 jours sur le stand du réseau Libre-entreprise, réseau de sociétés expertes en informatique libre créé en 2002 (stand D16, à proximité du village associatif).

Informations pratiques

- Jours et horaires d'ouverture

  • Mardi 31 mars : 9h00-18h00
  • Mercredi 1er avril : 9h00-20h00
  • Jeudi 2 avril : 9h00-18h00

- Lieu

Paris Expo - Porte de Versailles, hall 2.2

- Accès

Métro : Ligne 12, station Porte de Versailles, Bus : Lignes 39, 80 ou T3 arrêt Porte de Versailles - Palais des Expositions

by Anne Dillard at January 30, 2009 03:16 PM

January 19, 2009

Les Développements Durables

Sortie de AMAPplication 1.7

La 1.6 corrigeait juste un gros bug de la 1.5 (les exports ne marchaient plus) et ajoutait un bouton "selectionner tous" au dessus de la liste des amapiens. La 1.7 trie les listes alphabétiquement par défaut. Mais tout le monde attend la 2.0 bien sur. Patience.

by Sébastien Ducoulombier at January 19, 2009 12:20 PM

December 27, 2008

Les Développements Durables

Le plugin Étiquettes s'adapte à SPIP 2

Depuis que SPIP est passé officiellement en version 2, de nouvelles manières de coder sont apparues, notamment pour uniformiser et faciliter la création des formulaires.

Pour le coup, le plugin Étiquettes que nous avions codé s'harmonise avec SPIP 2. Et on profite du gros changement pour modifier la manière de paramétrer le formulaire, beaucoup plus simple qu'avant !

Toutes les infos en détail sur SPIP-Contrib.

by Vincent Finkelstein at December 27, 2008 11:58 AM

Le plugin Étiquettes s'adapte à SPIP 2

Depuis que SPIP est passé officiellement en version 2, de nouvelles manières de coder sont apparues, notamment pour uniformiser et faciliter la création des formulaires.

Pour le coup, le plugin Étiquettes que nous avions codé s'harmonise avec SPIP 2. Et on profite du gros changement pour modifier la manière de paramétrer le formulaire, beaucoup plus simple qu'avant !

Toutes les infos en détail sur SPIP-Contrib.

by Vincent Finkelstein at December 27, 2008 11:58 AM

Le plugin Étiquettes s'adapte à SPIP 2

Depuis que SPIP est passé officiellement en version 2, de nouvelles manières de coder sont apparues, notamment pour uniformiser et faciliter la création des formulaires.

Pour le coup, le plugin Étiquettes que nous avions codé s'harmonise avec SPIP 2. Et on profite du gros changement pour modifier la manière de paramétrer le formulaire, beaucoup plus simple qu'avant !

Toutes les infos en détail sur SPIP-Contrib.

by Vincent Finkelstein at December 27, 2008 11:58 AM

December 10, 2008

Easter-eggs

Lancement de MAVISE

Le 9 avril 2008, la Commission européenne (DG Communication) et l'Observatoire européen de l'audiovisuel lanceront, dans le cadre du MIP-TV, la version publique d'une nouvelle base de données TV, MAVISE, qui a pour vocation de fournir les données de base sur l'ensemble des chaînes de télévision accessibles dans l'Union européenne et les deux pays candidats (Croatie et Turquie). La base sera accessible gratuitement à partir du 9 avril 2008 à l'adresse http://mavise.obs.coe.int et sera également accessible via le site Europa, le portail du service Audiovisuel de la Commission.

Un nouvel outil pour les professionnels

« La Commission européenne avait besoin d'un outil lui permettant de comprendre l'univers télévisuel dans toute sa complexité », déclare Thierry Vissol, Conseiller à la DG Communication de la Commission européenne. « L'Observatoire européen de l'audiovisuel a développé pour nous une base qui tient compte de cette complexité. La version publique de la base MAVISE telle que nous la présentons aujourd'hui ne contient qu'une partie des informations collectées par l'Observatoire. Pour des questions de droit de propriété intellectuelle, il n'était pas possible de mettre gratuitement à la disposition du public les informations relatives aux audiences et à la situation financière des entreprises ».

« Le projet MAVISE, qui s'étend sur une période de cinq ans, fournit à l'Observatoire la possibilité de renforcer sa compétence et ses services dans le domaine de la télévision » explique Wolfgang Closs, Directeur exécutif de l'Observatoire européen de l'audiovisuel. « Il s'agit avant tout d'un projet s'inscrivant dans un contrat de service pour la Commission européenne, mais nous sommes heureux qu'il débouche également sur un service complémentaire, dont nous espérons qu'il sera utile aux professionnels et même au grand public ».

« MAVISE contient déjà les principales informations concernant plus de 2 500 sociétés, plus de 2 700 chaînes de télévision et les listes de programmation de plus d'une centaine de distributeurs », explique André Lange, responsable de département à l'Observatoire. « L'objectif est, d'ici la fin de l'année, de recenser les quelque 6 000 à 7 000 chaînes existant en Europe. Dans son état actuel, la base est loin d'être complète, mais les chaînes les plus significatives en termes d'audience et les principales chaînes thématiques sont déjà incluses et la base peut déjà rendre de grands services ».

Parmi les fournisseurs de données pour la base MAVISE on compte Eurodata TV Worldwide, le Bureau van Dijk Electronic Publishing et Lyngemark. La base a été développée par la société Easter-eggs. L'assistance à maîtrise d'ouvrage a été assurée par Altran.

Le contenu de la base

Pour chaque pays, la base MAVISE contient :

- une description générale du paysage télévisuel et un répertoire des sources d'information,
- l'identification des instances accordant des licences aux chaînes de télévision ou établissant des registres des chaînes existantes,
- des données de base sur la population, le nombre de foyers TV et le taux d'équipement en télévision numérique,
- la liste des chaînes établies dans le pays,
- la liste des chaînes reçues dans le pays,
- et la liste des opérateurs (diffuseurs, fournisseurs de bouquets) et des entreprises de diffusion technique (diffusion terrestre analogique ou numérique, câblo-opérateurs, opérateurs satellites, fournisseurs de services IPTV ou de télévision vers les mobiles).

Pour chaque entreprise de diffusion, la base contient :

- les coordonnées,
- l'adresse du site,
- l'identification du groupe de communication auquel appartient l'entreprise
- et la liste des chaînes diffusées.

Pour chaque chaîne de télévision sont proposés :

- l'identification de l'entreprise éditrice,
- le concept et le genre de la chaîne,
- le type de public visé,
- les pays visés par la chaîne,
- le nombre d'heures diffusées,
- les modalités d'accès (gratuit, payant),
- l'existence éventuelle de version haute définition,
- les différentes versions linguistiques existantes,
- l'existence éventuelle de services pour les personnes handicapées,
- l'existence éventuelle de services de webcasting et de service de rattrapage (catch-up),
- les sites de la chaîne (site général, régie publicitaire,…),
- pour les télévisions locales et régionales, la région visée,
- le type de licence et, lorsque disponible, la date de début et de fin de la licence,
- dans chaque pays où la chaîne est diffusée, l'identification des principaux distributeurs techniques proposant la chaîne (opérateurs de réseaux analogiques et numériques terrestres, câblopérateurs, opérateurs IPTV, opérateurs de service de télévision vers les mobiles), l'identification du ou des satellites sur lesquels la chaîne est diffusée,
- les bouquets de chaîne dans lesquels la chaîne est reprise
- et la pénétration technique (nombre de foyers TV susceptibles de recevoir la chaîne).

Pour les opérateurs de bouquets de chaînes et les principaux distributeurs, la base détaille également la liste des chaînes diffusées.

La base est dotée d'outils de recherche avancée, permettant par exemple d'identifier les chaînes d'un genre donné dans un pays donné ou les chaînes visant des catégories spécifiques de la population.

Lire le communiqué de presse sur le site de l'Observatoire européen de l'audiovisuel

December 10, 2008 09:07 AM

December 08, 2008

Easter-eggs

Contributions

Présentation des projets et des logiciels libres auxquels nous participons, que cela soit sur notre temps libre ou dans le cadre de projets clients.

La totalité du code source et des exécutables des projets et logiciels listés ci-dessous sont sous licences libres, disponibles sur simple téléchargement en suivant les liens indiqués.

PROJETS

Les projets sont listés par ordre alphabétique.


Projet Debian

Debian logo URL : http://www.debian.org

Contributions de Julien Danjou, Debian developer since 2002 and Stable Release Manage since 2006
URL : http://qa.debian.org/developer.php?login=acid

Contributions de Emmanuel Lacour
URL : http://qa.debian.org/developer.php?login=elacour@home-dn.net

Contributions de Cyril Lacoux
URL : http://qa.debian.org/developer.php?login=clacoux@easter-eggs.com


Projet Freedesktop

Freedesktop logo URL : http://www.freedesktop.org

freedesktop.org is open source / open discussion software projects working on interoperability and shared technology for X Window System desktops. The most famous X desktops are GNOME and KDE, but developers working on any Linux/UNIX GUI technology are welcome to participate.

XCB XCB logo URL : http://xcb.freedesktop.org

Description : A replacement for Xlib featuring a small footprint, latency hiding, direct access to the protocol, improved threading support, and extensibility.
Contribution de Julien Danjou


Projet OpenMoko

Openmoko logo URL : http://wiki.openmoko.org/wiki/Main_Page/fr

Description : Openmoko™ est un projet destiné à fournir des téléphones portables dotés d'une couche matérielle et logicielle libre.

Neon

Description : C'est un visualisateur d'images pour les appareils mobiles. Il est a été spécialement concu pour les téléphones libre Openmoko. Son interface se veut simple, rapide et facile à utiliser. Il est écrit en Python/Edje et est placé sous licence GNU General Public License (GPL).
URL : http://neon.projects.openmoko.org/
Contribution de Valéry Febvre


Projet Request Tracker

URL : http://bestpractical.com/rt/

RT-Extension-MandatorySubject

Description : This Request Tracker Extension enforces users to fill the subject when creating a ticket via the web interface.
URL : http://git.home-dn.net/
Contribution de Emmanuel Lacour

RT-Extension-SearchResults-XLS

Description : This RT Extension allow users to download search results in Microsoft Excel binary format.
URL : http://git.home-dn.net/
Contribution de Emmanuel Lacour

RT-Extension-ToggleSuperUser

Description : This RT Extension allow users with SuperUser right to quickly enable/disable this right with a simple link at the top of each page
URL : http://git.home-dn.net/
Contribution de Emmanuel Lacour


Projet VHFFS

VHFFS logo URL : http://www.vhffs.org

VHFFS is a massive virtual hosting platform for free software.
Contributions de Julien Danjou


Projet Webmin

Webmin logo URL : http://www.webmin.com

wbmclamav

Description : wbmclamav est un module webmin pour gérer Clam Antivirus.
Language : Perl
URL : http://wbmclamav.labs.libre-entreprise.org/
Contribution de Emmanuel Saracco

wbmtranslator

Description : wbmtranslator est un assistant de traduction pour les modules webmin/usermin.
Langage : Perl
URL : http://wbmtranslator.labs.libre-entreprise.org/
Contribution de Emmanuel Saracco

wbmtrustees

Description : Un module webmin pour gérer les droits Linux Trustees.
Langage : Perl
URL : http://wbmtrustees.labs.libre-entreprise.org/
Contribution de Emmanuel Saracco


LOGICIELS

Les logiciels sont listés par ordre alaphabétique.


aPAz

Description : aPAz est un masque anonyme PHP très léger. Il s'agit d'une application de type "Dépose-moi n'importe où, navigue partout". Vous pouvez l'utiliser sur n'importe quel serveur Web qui autorise les sockets en PHP.
Langage : PHP
URL :http://apaz.labs.libre-entreprise.org/
Contribution de Emmanuel Saracco


awesome

awesome logo Description :Frame-work Lua based window manager.
Langage : C, Lua
URL :http://awesome.naquadah.org
Contribution de Julien Danjou


Cosmetic

Description : Cosmetic est un logiciel de conversion en HTML des fichiers XML Coperia produits par la Documentation française dans le cadre du comarquage avec Service-Public.fr.
Langage : Python
URL : http://wiki.infos-pratiques.org/wiki/Cosmetic
Contribution de Emmanuel Raviart


ddnsedit

Description : Let you edit dynamic dns zones like standard zones with your favorite editor
Langage :
URL : http://git.home-dn.net/
Contribution de Emmanuel Lacour


Eyes Of Lynx

Description : Eyes of Lynx est une application Web qui vous permet de partager, d'examiner et de gérer vos albums photos. Elle est écrite en PHP/Javascript et est placée sous licence GNU Affero General Public License (AGPL). Eyes Of Lynx est conçu pour être rapide, intuitif et très puissant. Ses fonctionnalités clé sont une interface originale et innovante, des fonctions de zoom et de rotation, un carrousel, une vignette de navigation, ...
Langage : PHP
URL : http://people.easter-eggs.org/ valos/dokuwiki/doku.php?id=fr:projects:eyes_of_lynx
Contribution de Valéry Febvre


gospy-applet

Description : Une applet de surveillance des pages Web et des serveurs
Langage : C
URL : http://gospy-applet.labs.libre-entreprise.org/
Contribution de Emmanuel Saracco


gURLChecker

Description : Un vérificateur graphique de liens (bookmarks, sites web)personnalisable pour GNOME.
Langage : C
URL : http://gurlchecker.labs.libre-entreprise.org/
Contribution de Emmanuel Saracco


JAMin

Description : Développement d'une interface de masterisation pour JACK audio dans le cadre du projet Jamin.
Langage : C
URL : http://jamin.sourceforge.net/en/about.html
Contribution de Emmanuel Saracco


LdapSaisie

Description : LdapSaisie est une application Web, développée en PHP et Javascript, dédiée à l'administration d'un annuaire LDAP dont le schéma est maîtrisé
Langage : PHP
URL :http://ldapsaisie.labs.libre-entreprise.org/
Contribution de Benjamin Renard


MaCollec

Description : MaCollec est une application Web qui vous aide à gérer vos collections (livres, DVD, CD audio). Elle est écrite en PHP/Javascript et utilise la technologie AJAX pour produire une interface jolie et agréable.Les informations des articles (y compris les couvertures) sont récupérées sur la bibliothèques en ligne Amazon.
Langage : PHP
URL : http://macollec.labs.libre-entreprise.org/?lang=fr_FR
Contribution de Valéry Febvre


mod_defensible

Description : Apache 2 module to block spammers using DNSBL servers.
Langage : C
URL : http://julien.danjou.info/mod_defensible/
Contribution de Julien Danjou


perfect_maildir

Description : "Simple but Perfect" mbox to Maildir converter
Langage :
URL : http://git.home-dn.net/
Contribution de Emmanuel Lacour


phpRemoteShell

Description : phpRemoteShell est une application Web tout-en-un pour la gestion d'accès distant à un serveur. Elle contient un gestionnaire de fichier complet, l'exécution de commandes ou de code PHP/SQL/LDAP sur le serveur, une gestion de la crontab, ainsi qu'une gestion de zombies. Elle peut également se loger elle-même dans des fichiers existants sur le serveur et s'auto-déployer lors de leur exécution. Dans le cas ou elle a été préalablement chiffrée, elle peut s'auto-déchiffrer à la volée.
Langage : PHP
URL : http://phpremoteshell.labs.libre-entreprise.org/
Contribution de Emmanuel Saracco


pyautoradio

Description : This a pygtk/glade application wich ease the use of silly devices like mp3 autoradios. It convert ogg files to mp3 and write album's files on the right order on your usb keys.
Langage : Python
URL : https://labs.libre-entreprise.org/projects/pyautoradio/
Contribution de Cyril Kluska


PyXMLSec

Description :PyXMLSec est un binding Python pour la bibliothèque XML Security Library (http://www.aleksey.com/xmlsec/).
Langage : C, Python
URL : http://pyxmlsec.labs.libre-entreprise.org/
Contribution de Valéry Febvre


rebuildd

Description :Multi-threaded persistent Python daemon to rebuild Debian packages.
Langage : Python
URL : http://julien.danjou.info/rebuildd/
Contribution de Julien Danjou


smtpt

Description : Send virus_signature / spam_signature / normal messages to a named host with named sender/recipients and optionnal message size or smtp auth.
Langage :
URL : http://git.home-dn.net/
Contribution de Emmanuel Lacour


sslexpire

Description : This tool provides remote check for ssl certificate expiration date.
Langage :
URL : http://git.home-dn.net/
Contribution de Emmanuel Lacour


sysrqd

Description : Daemon intended to manage Linux SysRq over network.
Langage : C
URL : http://julien.danjou.info/sysrqd/
Contribution de Julien Danjou


telak

Description : X11 application displaying local or remote image on root window.
Langage : C
URL : http://julien.danjou.info/telak/
Contribution de Julien Danjou


WebDhcpDns

Description : A Php/MySQL based Web application to manage a DHCP server and update a DNS server with LDAP and MySQL authentification.
Langage : PHP
URL : http://labs.libre-entreprise.org/projects/webdhcpdns/
Contribution de Emmanuel Saracco


wmDrawer

Description : wmDrawer est une DockApp WindowMaker qui fournit un tiroir (une barre de boutons retractable) pour lancer des applications. Elle peut être utilisée avec tous les gestionnaires de fenêtres fournissant un support de DockApp comme WindowMaker, Blackbox, Fluxbox, Openbox, ...
Langage : C
URL : http://people.easter-eggs.org/ valos/wmdrawer/
Contribution de Valéry Febvre

by Pierre-yves Dillard at December 08, 2008 02:16 PM

October 01, 2008

Les Développements Durables

Nouveau site web

Comme vous pouvez le voir sous vos yeux, LDD a mis en ligne son nouveau site web. Avec son nouveau design plus agréable et une meilleure organisation de l'information, c'est maintenant un plaisir d'y naviguer.

En plus il nous permet de mieux communiquer et de présenter plus d'informations au public.

Bonne balade sur le site.

by Nicolas Ducoulombier at October 01, 2008 04:31 PM

September 17, 2008

Les Développements Durables

Nouveau recrutement

Nikolas Padrones vient rejoindre l'équipe de LDD. Il vient renforcer l'équipe d'administrateurs système afin d'offrir un suivi et un accompagnement encore plus proches de nos clients.

by Nicolas Ducoulombier at September 17, 2008 04:28 PM

June 30, 2008

Easter-eggs

Recherche approximative avec Double Métaphone et distance de Levenshtein

Présentation

La recherche approximative, ou Fuzzy search en anglais, concerne les recherches textuelles pour lesquelles une orthographe inexacte est permise.

Il existe des outils d'indexation et de recherche de données de type Apache Lucene [1], mais le besoin du client reste centré sur la recherche approximative donc nous développons une solution sur mesure.

Cet article présente une manière simple et élégante d'implémenter cette recherche approximative.

Fonctionnalités

Cet article utilise un exemple d'utilisation tiré du projet E-Nota [2] de notre client Médiamétrie [3].

Ce site est accessible aux utilisateurs abonnés au service.

Le site web E-Nota affiche, entre autres, des informations sur des programmes télévisés stockés en base de données. L'utilisateur accède aux fiches des programmes à l'aide d'un moteur de recherche.

Les titres des programmes étant stockés en anglais ainsi que dans leur langue d'origine, l'utilisateur se trompe fréquemment dans l'orthographe. Le moteur de recherche doit être capable de trouver les bons titres de programmes, même si l'orthographe n'est pas la bonne, et cela de la façon la plus permissive possible.

Par exemple, si l'utilisateur saisit « Desesperate housevifs » (mauvaise orthographe), le moteur de recherche lui suggère « Desperate Housewives » comme alternative.

Dans un premier temps, les programmes sont recherchés selon l'orthographe exacte demandée par l'utilisateur. Si aucun résultat n'est trouvé, l'algorithme de recherche approximative est utilisé afin d'élargir le champ des résultats possibles.

Voici le diagramme de navigation du moteur de recherche :

Codage phonétique

Présentation

La recherche approximative est résolue en utilisant le codage phonétique des titres des programmes.

Le titre de chaque programme est codé par une chaîne de caractères appelée clé phonétique.

La taille de la base de données est trop grande (environ 10000 programmes) pour calculer à la volée les clés phonétiques des titres : elles sont stockées dans une colonne de la table des programmes.

Il existe plusieurs algorithmes de calcul pour obtenir ces clés phonétiques. Nous présentons le Soundex et le Double métaphone.

Distance de Levenshtein

La distance de Levenshtein est un algorithme qui mesure la similarité entre deux chaînes de caractères.

Cet algorithme est utilisé dans la suite de l'article. Il retourne le nombre de modifications à effectuer pour passer d'une chaîne à l'autre.

Les modifications sont l'ajout, la suppression ou la modification d'un caractère.

Soundex

L'algorithme du Soundex retourne une clé phonétique constituée d'une lettre et de quatre chiffres en fonction d'une chaîne de caractères fournie en entrée.

La première lettre est la première de la chaîne de caractères à coder. Les trois chiffres correspondent aux trois premières consonnes de la chaîne.

Cet algorithme historique est souvent utilisé mais n'est pas le plus efficace.

Par exemple, les chaînes « strictly », « Strictly come dancing » et « Strict in dancing » ont le même code : S362. Cela induit un manque de précision et donc du bruit dans les résultats de la recherche.

Pour effectuer la recherche, il faut :

  1. trier tous les programmes en fonction de la distance de Levenshtein entre le codage du titre et le codage de la chaîne recherchée
  2. sélectionner les X premiers programmes
  3. trier de nouveau les résultats en fonction de la distance de Levenshtein entre le titre du programme et la chaîne recherchée
  4. afficher les Y premiers programmes sous forme de suggestions de recherche

X et Y sont des constantes. Les valeurs Y = 10 et X = Y + 30 sont des valeurs intéressantes. Il est nécessaire de paraméter X plus grand que Y pour diminuer le bruit dans les résultats de la recherche.

Malgré cela, les résultats présentés ne sont pas assez pertinents en raison du bruit engendré par l'algorithme. Le fait que l'algorithme du Soundex se limite aux trois premières consonnes est trop limitant. Il nous faut donc un autre algorithme qui offre un codage phonétique plus représentatif de la chaîne à coder.

Double métaphone

Dérivé de l'algorithme Métaphone, il est appelé « double » car il propose un codage principal et un alternatif pour une même chaîne donnée en entrée. Cela permet plus de souplesse quand aux différentes prononciations qui peuvent exister en fonction des pays. Cependant nous n'utiliserons que le codage principal.

L'algorithme du double métaphone simplifie à l'extrême la chaîne donnée en entrée en lui retirant ses voyelles et en ramenant les consonnes similaires à une consonne de référence.

Par exemple, le titre « Desperate housewives » a pour codage « TSPRTSFS », la mauvaise orthographe « Desesperate housevif » est codée « TSSPRTSFF » et le mot « desperate » est codé « TSPRT ». Cela permet plus de finesse par rapport à l'algorithme du Soundex.

Les codages phonétiques étant différents, il est nécessaire de les comparer en utilisant non pas l'égalité stricte mais la distance de Levenshtein.

La méthode de recherche devient :

  1. sélectionner tous les programmes dont la distance de Levenshtein entre le codage du titre et le codage de la chaîne recherchée est inférieure à L
  2. trier ces programmes en fonction de la distance de Levenshtein entre les titres eux-mêmes et la chaîne recherchée
  3. afficher les X premiers programmes sous forme de suggestions de recherche

Les valeurs L = 2 et X = 10 sont des valeurs intéressantes.

Cette fois-ci, il est possible de sélectionner directement dès la deuxième étape un nombre restreint de programmes à afficher. Cela engendre un gain en performances et en pertinence des résultats.

Pour pousser au maximum l'exemple, la recherche « strictli kum tenzy » renvoie bien « Strictly come dancing » et la recherche « desesperat ouzvif » renvoie bien « Desperate Housewives ».

Implantation

Nous utilisons PHP version 5.2.0-8+etch11 et PostgreSQL version 8.1.11-0etch1 sous Debian Etch (stable).

La table « programs » stocke les programmes. Elle contient une colonne pour le titre et une colonne pour le codage double metaphone du titre.

> SELECT * FROM programs ;
title title_double_metaphone
Desperate housewives TSPRTSFS
Strictly come dancing STRKTLKMTNSNK
Lost LST

L'utilisateur saisit la chaîne recherchée dans un formulaire d'une page HTML. La variable s'appelle $search_text.

Le calcul de la clé phonétique double métaphone utilise la fonction PHP double_metaphone() non disponible en standard. Elle est fournie par l'extension PECL doublemetaphone [4].

De plus nous avons besoin d'installer la fonction « levenshtein » pour PostgreSQL :

root# apt-get install postgresql-contrib-8.1
user$ psql my_database  /usr/share/postgresql/8.1/contrib/fuzzystrmatch.sql
La procédure de recherche encode la chaîne à rechercher :
$search_text_dm = double_metaphone($search_text) ;
$search_text_dm = $search_text_dm[0] ;
La fonction double_metaphone renvoie un tableau à deux éléments : le codage principal et alternatif. Nous n'utilisons que le codage principal.

Puis recherche les programmes grâce à la requête SQL suivante :

SELECT DISTINCT title, LEVENSHTEIN(LOWER($search_text), LOWER(title)) AS distance
FROM programs
WHERE LEVENSHTEIN($search_text_dm, title_double_metaphone)  2
ORDER BY distance
LIMIT 10 ;

Évolutions possibles

Il existe encore une limitation : le codage en double métaphone est effectué sur le titre du programme en entier en non pas mot par mot. Si l'utilisateur saisit une partie du titre mal orthographiée, les résultats ne seront pas assez pertinents.

Par exemple, s'il saisit « housevif » au lieu de « housewives », les résultats retournés seront des programmes dont le titre commence par « house », « as », « heist », etc. tandis que l'utilisateur s'attendait à « Desperate housewives ».

Pour résoudre ce problème, on pourrait coder séparément les mots en double métaphone dans une table à part. Dans ce cas, une table d'indirection serait utilisée pour effectuer la recherche.

Puis l'algorithme de recherche travaillerait mot par mot.

Il est envisageable de porter cette méthode de recherche approximative comme plugin pour un framework web. Le framework Symfony [5] propose déjà un plugin pour Apache Lucene, un moteur de recherche générique.

Conclusion

Les résultats obtenus sont très satisfaisants car la tolérance aux erreurs est grande et les résultats pertinents.


[1] Apache Lucene, http://lucene.apache.org

[2] New On The Air, http://www.e-nota.com

[3] Médiamétrie, http://www.mediametrie.fr

[4] Extension PECL doublemetaphone, http://pecl.php.net/package/doublem...

[5] Framework Symfony http://www.symfony-project.org

by Christophe Benz at June 30, 2008 03:04 PM

June 26, 2008

Easter-eggs

Validation d'un fichier CSV à l'aide d'un schéma XML

Le format de fichier CSV présente certains avantages :

  • il est facilement manipulable pour les utilisateurs à l'aide d'un tableur comme Calc, Gnumeric ou bien Excel ;
  • il permet d'écrire rapidement et facilement des routines d'import / export ;
  • il permet d'échanger les données entre des bases et des systèmes hétérogènes.

Mais ce format de fichier ne dispose pas d'un système de validation. Dans la plupart des cas ce sont les routines d'import / export qui prennent en charge la validation des données et de leur mise en forme.

Ce travail est pénible, répétitif et ennuyeux mais nécessaire si vous ne voulez pas qu'un fichier mal formaté ne corrompe les données de votre base.

L'objectif de cet article est de proposer une solution simple permettant la validation d'un fichier CSV en utilisant les fonctionnalités offertes par les schémas XML.

Les exemples fournis sont écrits à l'aide du langage de programmation PHP5.

Transformation CSV vers XML

Votre fichier doit contenir sur la 1re ligne, le nom de chaque colonne :

“CHANNEL” ;”COMPANY” ;”BVD_ID_Groupe_1″ ;”BVD_ID_Groupe_2″ ;”GENRE” ;”URL” ;”OTHER_URL” ;”COMPETENT_AUTHORITY”
“Canal+ Film 1″ ;”C MORE ENTERTAINMENT AB” ;”NL33268595″ ;”DE8330261794″ ;”CIN” ;”http://www.canalplus.se” ;”http:..., http://www.prosiebensat1.de/” ;”...
“Canal+ Film 2″ ;”C MORE ENTERTAINMENT AB” ;”NL33268595″ ;”DE8330261794″ ;”CIN” ;”http://www.canalplus.se” ;”http:..., http://www.prosiebensat1.de/” ;”...
“Canal+ Film 2 Sport Weekend” ;”C MORE ENTERTAINMENT AB” ;”NL33268595″ ;”DE8330261794″ ;”CIN” ;”http://www.canalplus.se” ;”http:..., http://www.prosiebensat1.de/” ;”...
“Canal+ Film 3″ ;”C MORE ENTERTAINMENT AB” ;”NL33268595″ ;”DE8330261794″ ;”CIN” ;”http://www.canalplus.se” ;”http:..., http://www.prosiebensat1.de/” ;”...
“Canal+ Film HD” ;”C MORE ENTERTAINMENT AB” ;”NL33268595″ ;”DE8330261794″ ;”CIN” ;”http://www.canalplus.se” ;”http:..., http://www.prosiebensat1.de/” ;”...

Pour transformer le fichier CSV en XML, il suffit de lire le fichier CSV avec la fonction fgetcsv et mettre les données dans des balises XML : csv_to_xml.php

Un fichier CSV converti en XML ressemble à cela : channel.xml

Validation du fichier XML

Il ne reste plus qu'à écrire le schéma permettant de valider le fichier XML :

channel.xsd

Vous pouvez tester vos schéma en ligne de commande en utilisant la commande xmllint issue du paquet libxml2-utils Debian :

$ xmllint —noout —schema channel.xsd channel.xml channel.xml validates

Validation en PHP

Une fois que votre schéma est correct et permet de valider le contenu du fichier XML, il faut l'intégrer directement dans votre application : validate.php

Conclusion

Cette méthode apporte les avantages suivants :

  • Les règles de validation sont décrites directement via le schéma et celui-ci dispose de nombreuses fonctionnalités tels les types de bases, les expression rationnelles, les séquences, etc.
  • Les messages d'erreur sont compréhensibles pour l'utilisateur même s'il faut parfois les traduire (en convertissant les numéros de lignes et certaines notions) ;
  • La simplicité.

Cette technique a été mise en oeuvre dans le cadre du projet MAVISE pour valider plus d'une vingtaine de formats de fichiers différents.

by Christophe Nowicki at June 26, 2008 09:13 AM