I'm happy to announce that my contribution to TUG 2011, the next TeX
Users Group International conference, has been accepted. Please find the
title and abstract below.
LaTeX Coding Standards
Because LaTeX (and ultimately TeX) is only a macro-expansion system, the
language does not impose any kind of good software engineering practice,
program structure or coding style whatsoever. As a consequence, writing
beautiful code (for some definition of "beautiful") requires a lot of
self-discipline from the programmer.
Maybe because in the LaTeX world, collaboration is not so widespread
(most packages are single-authored), the idea of some LaTeX Coding
Standards is not so pressing as with other programming languages. Some
people may, and probably have developed their own programming habits,
but when it comes to the LaTeX world as a whole, the situation is close
to anarchy.
Over the years, the permanent flow of personal development experiences
contributed to shape my own taste in terms of coding style. The issues
involved are numerous and their spectrum is very large: they range from
simple code layout (formatting, indentation, naming schemes etc.),
mid-level concerns such as modularity and encapsulation, to very
high-level concerns like package interaction/conflict management and
even some rules for proper social behavior.
In this talk, I will report on all these experiences and describe what I
think are good (or at least better) programming practices. I believe
that such practices do help in terms of code readability,
maintainability and extensibility, all key factors in software
evolution. They help me, perhaps they will help you too.
--
Resistance is futile. You will be jazzimilated.
Scientific site: http://www.lrde.epita.fr/~didier
Music (Jazz) site: http://www.didierverna.com
EPITA/LRDE, 14-16 rue Voltaire, 94276 Le Kremlin-Bicêtre, France
Tel. +33 (0)1 44 08 01 85 Fax. +33 (0)1 53 14 59 22
Chers collègues,
L'édition 2011-2012 du séminaire de recherche du LRDE, consacré
au thème cher à notre laboratoire – Performances et Généricité –
vient de s'achever.
Cette année encore nous avons eu le plaisir d'accueillir des
orateurs de qualité, renommés dans leur domaine. Vous trouverez
ci-dessous une liste thématique des différents exposés. Les
hyperliens vous conduirons non seulement à leur résumé détaillé,
mais également aux planches des exposés, et aux vidéos pour certaines
séances.
Nous remercions chaleureusement les orateurs qui nous ont
honorés de leur présence. Merci également aux visiteurs !
Nous prenons d'ores et déjà rendez-vous pour une reprise à la
rentrée prochaine. N'hésitez pas à nous proposer un exposé,
ou à nous indiquer des orateurs potentiels.
Bonnes vacances à tous,
Akim, pour le Laboratoire de R&D de l'EPITA
* Langages, paradigmes de programmation
=======================================
* GPU Computing : début d'une ère ou fin d'une époque ?
Eric Mahé -- Responsable du projet OpenGPU
http://seminaire.lrde.epita.fr/2012-06-20.php
* Reusable Generic Look Ahead Multithreaded Cache:
A case study for a high resolution player
Guillaume Chatelet -- Ingénieur R&D à Mikros Image
http://seminaire.lrde.epita.fr/2012-03-14.php
* Des performances dans les nuages avec la virtualisation des langages
Yann Régis-Gianas -- Maître de conférence à l'université Paris Diderot
http://seminaire.lrde.epita.fr/2012-02-15.php
* Certification d'annotations de coût dans les compilateurs
Nicolas Ayache -- Post-doc au laboratoire PPS de l'université Paris Diderot
http://seminaire.lrde.epita.fr/2012-02-15.php
* Pourquoi Javascript est-il aussi rapide/lent ?
Nicolas Pierron -- Ingénieur R&D, Mozilla Paris
http://seminaire.lrde.epita.fr/2011-10-26.php
* Traitement d'image
====================
* Un modèle générique de traitement et de représentation des images
Antoine Manzanera -- Enseignant-Chercheur à l'ENSTA-ParisTech
http://seminaire.lrde.epita.fr/2012-05-09.php
* Analyse des mouvements apparents dans un flux vidéo
Matthieu Garrigues -- Ingénieur Recherche à l'ENSTA-ParisTech
http://seminaire.lrde.epita.fr/2012-05-09.php
* Filtrage morphologique dans les espaces de formes :
Applications avec la représentation d'image par arbres
Yongchao Xu -- Doctorant LRDE/ESIEE
http://seminaire.lrde.epita.fr/2012-07-04.php
* Le point de vue d'un théoricien sur l'intérêt de la généricité
pour le traitement d'images
Laurent Najman -- Professeur à l'ESIEE
http://seminaire.lrde.epita.fr/2012-03-21.php
* Interactive 2D and 3D Segmentation with ilastik
Ullrich Köthe -- Senior Researcher, University of Heidelberg
http://seminaire.lrde.epita.fr/2012-11-16.php
* Model checking
================
* Vérification efficace de propriétés insensibles au bégaiement
Ala Eddine Ben Salem -- Doctorant LRDE/LIP6
http://seminaire.lrde.epita.fr/2012-07-04.php
* Composition dynamique de techniques pour le model checking efficace
Étienne Renault -- Doctorant LRDE/LIP6
http://seminaire.lrde.epita.fr/2012-07-04.php
_______________________________________________
Seminaire mailing list
Seminaire(a)lrde.epita.fr
https://www.lrde.epita.fr/mailman/listinfo/seminaire
The Vaucanson team is pleased to announce the release of Vaucanson 1.4.1,
just in time for the fireworks.
Vaucanson is a platform for manipulating weighted finite state
automata. It includes a C++ generic library and a command-line
interface (TAF-Kit).
http://www.lrde.epita.fr/cgi-bin/twiki/view/Vaucanson/Vaucanson141
Vaucanson 1.4.1 is a maintenance release that fixes a handful of bugs,
and introduce a few simple new features.
- New TAF-Kit commands:
+ ``coquotient``
+ ``alphabet``
+ ``partial-erase``
+ ``gui``
- Bug fixes:
+ never create 0-labeled transitions in ``proper``.
+ fix support of transitions that are linear combinations of pairs
in FMP transducers
- A new TAF-Kit option ``--list-all-commands-json`` outputs the list of
all command in a format (json) that may be parsed by third-party
tools to interface with TAF-Kit.
You can find the new release here:
http://www.lrde.epita.fr/dload/vaucanson/1.4/vaucanson-1.4.1.tar.gz (63MB)
http://www.lrde.epita.fr/dload/vaucanson/1.4/vaucanson-1.4.1.tar.bz2 (54MB)
MD5:
fb904d35e2d0ba70977289e6fb4f39f9 vaucanson-1.4.1.tar.gz
aafb84b15bb90a2fdbdeed96dedc1c94 vaucanson-1.4.1.tar.xz
Please send bug reports to <vaucanson-bugs(a)lrde.epita.fr> and other
inquiries to <vaucanson(a)lrde.epita.fr>.
--
Alexandre Duret-Lutz
Bonjour,
nous avons le plaisir de vous inviter au séminaire des étudiants du
LRDE. Il aura lieu le mercredi 11 juillet 2012 à partir de 9h30 en Amphi
3 (KB).
-----------------------------------------------------------------------
Au programme :
*SPOT, VERIFICATION DU LOCUTEUR, CLIMB, VAUCANSON, OLENA*
http://publis.lrde.epita.fr/Seminar-2012-07-11
SPOT
* 9h30 : Méthodes de réduction par ordre partiel dans Spot -- Pierre Parutto
* 10h00 : Réduction par simulation directe pour les TGBA -- Thomas Badie
VERIFICATION DU LOCUTEUR
* 10h30 : Séparation de locuteur -- Victor Lenoir
11h - 11h15 : PAUSE
* 11h15 : Modèles de mélanges de gaussiennes fondés sur des matrices de
covariance pleines -- Benjamin Roux
CLIMB
* 11h45 : Optimisation en Common Lisp et son application à Climb --
François Ripault
* 12h15 : Construction d’une interface pour et avec Climb -- Laurent Senta
* 12h45 - 14h00 : PAUSE DEJEUNER
VAUCANSON
* 14h00 : Vers Vaucanson 2.0 -- David Moreira
OLENA
* 14h30 : Approche parallèle pour le calcul de l'arbre des formes en
n-dimensions -- Sébastien Crozet
* 15h00 : Extraction de texte avec des ondelettes -- Raphael Boissel
* 15h30 - 15h45 : PAUSE
* 15h45 : Améliorer Horn-Schunck -- Sylvain Lobry
* 16h15 : Inpainting rapide préservant la structure -- Coddy Levi
Les Résumés des exposés :
**************************
SPOT
* 9h30 : Méthodes de réduction par ordre partiel dans Spot -- Pierre Parutto
Spot est une bibliothèque de model checking implémentant
une approche par automates. Pour le moment les algorithmes
de vérification de propriétés dans Spot utilisent l’espace d’états
sans réduction du système. Ils souffrent donc de l’explosion
combinatoire de la taille de ce dernier. Une manière de résoudre
ce problème est d’utiliser des méthodes de réduction
par ordre partiel. Ces méthodes permettent d’ignorer certains
comportements équivalents du système pour une certaine propriété.
Ainsi il est possible de réduire la taille de l’espace
d’états généré tout en conservant le même comportement général.
Le but de ce travail est d’évaluer comment ces méthodes
d’ordre partiel peuvent être intégrées dans Spot.
* 10h00 : Réduction par simulation directe pour les TGBA -- Thomas Badie
L’approche par automates du model checking s’appuie traditionnellement
sur des Automates de Büchi (BA) qu’on souhaite
les plus petits possible. Etessami et al. ont présenté une méthode
de réduction d’un BA basée sur une relation de simulation
(dite directe) entre ses états. Spot, bibliothèque de model
checking, utilise principalement des TGBA qui généralisent les
BA. Nous montrons qu’en adaptant cette simulation aux TGBA
on obtient des automates plus concis que les BA équivalents.
Cette nouvelle technique est incluse dans Spot 0.9 et a permis
de produire des automates plus petits que dans les précédentes
versions.
VERIFICATION DU LOCUTEUR
* 10h30 : Séparation de locuteur -- Victor Lenoir
La séparation de locuteur et la détection de voix jouent un important
rôle dans les systèmes de reconnaissance du locuteur,
principalement dans le cas d’un signal à plusieurs locuteurs.
Nous allons présenter une méthode de séparation de locuteur
basée sur des méthodes variationnelles et sur les speaker factors
tel que décrite dans l’état de l’art de systèmes de reconnaissance
du locuteur. Afin de tester les performances de cette
méthode un ensemble de tests sera effectué sur les données interview
de NIST-SRE 2010.
11h - 11h15 : PAUSE
* 11h15 : Modèles de mélanges de gaussiennes fondés sur des matrices de
covariance pleines -- Benjamin Roux
Le modèle du monde représenté par les mélanges de gaussiennes
(UBM - GMM) est l’approche état de l’art pour les systèmes
de vérification du locuteur. On utilise généralement des
matrices de covariance diagonale. Cette simplification permet
d’avoir un apprentissage rapide des différents modèles. Nous
allons explorer le cas des matrices de covariance pleines. On
va présenter la complexité additionelle et les gains en termes
de performances. Toutes les expériences seront menées sur des
données issues de NIST-SRE 2010.
CLIMB
* 11h45 : Optimisation en Common Lisp et son application à Climb --
François Ripault
Common Lisp est un langage de programmation dynamique.
Bien qu’il ne soit pas a priori axé sur la performance, il s’avère
que le langage offre certaines fonctionnalités liées à l’optimisation.
Cependant, le gain en performance a un impact sur
la généricité du code, l’optimisation limitant celle-ci. Climb
est une bibliothèque de traitement d’image écrite dans ce langage,
ayant pour objectif de se comparer à des équivalents
écrits dans des langages statiques tels que C++. L’objectif est
de profiter de la généricité qu’offre Common Lisp pour l’écriture
d’une bibliothèque de traitement d’image. Mais une telle bibliothèque
a également des contraintes de performance, il s’agit donc de trouver un
terrain d’entente entre ces deux aspects. Nous présenterons les
différentes fonctionnalités qu’offre Common Lisp pour optimiser un
programme, et leur utilisation dans Climb pour rendre la bibliothèque
plus rapide, sans pour autant diminuer sa généricité.
Nous présenterons également les premiers résultats du travail
d’optimisation dans Climb, le travail restant et les apports de
l’utilisation de Common Lisp pour une telle tâche.
* 12h15 : Construction d’une interface pour et avec Climb -- Laurent Senta
Climb est une bibliothèque de traitement d’image générique.
Encore à l’état de prototype, Climb fournit déjà un certain
nombre d’outils comme les morphers et l’opérateur $ qui permettent
de simplifier la définition de chaînes d’algorithmes.
Afin de prolonger cet aspect, une interface graphique a été
développée. Celle-ci permet de construire des chaînes de traitement
d’image sans connaissance en programmation, tout
en offrant un retour à la fois visuel et interactif. Notre approche
utilise les algorithmes et outils définis dans la bibliothèque
pour construire la logique interne de l’application ainsi
que ses différents aspects interactifs. La généricité étant l’une
des caractéristiques principales de Climb, nous avons été capables
d’étendre son champ d’application au-delà du traitement
d’image et ainsi montrer qu’elle peut être utilisée dans
des situations différentes telles que la construction d’une interface
graphique.
* 12h45 - 14h00 : PAUSE DEJEUNER
VAUCANSON
* 14h00 : Vers Vaucanson 2.0 -- David Moreira
Vaucanson est une plate-forme de manipulation d’automates
et de transducteurs dont l’interface et le développement se
sont montrés complexes et inefficaces. Des travaux de spécifications
et de design ont été effectués afin d’avoir un coeur efficace
en terme de développement et de vitesse. Cette version
2.0 de Vaucanson est actuellement en développement. Ce rapport
présente la version 2.0 de Vaucanson et son utilisation par
le portage de deux algorithmes : l’évaluation d’un mot par un
automate et la déterminisation d’automates. Dans une seconde
partie, nous montrerons si Vaucanson 2.0 tient ses promesses
en termes de vitesse d’exécution.
OLENA
* 14h30 : Approche parallèle pour le calcul de l'arbre des formes en
n-dimensions -- Sébastien Crozet
L’arbre des formes est une transformée d’image utile pour effectuer
des traitements sur des images discrètes de façon auto-duale.
Un algorithme (non publié), travaillant sur des images
n-dimensionnelles dans l’espace des complexes cellulaires,
nous permet déjà de construire un arbre des formes en temps
quasi-linéaire. Cependant, cet algorithme reste souvent largement
plus lent que d’autres approches en temps (n log(n)) sur
des images naturelles en 2D ou 3D, le nombre de cellules à traiter
dans l’espace des complexes étant très élevé. En vue d’améliorer
ces temps de calculs, nous présentons une approche pour
paralléliser l’algorithme de calcul d’arbre quasi-linéaire en exhibant
des propriétés topologiques et algorithmiques qui ne
peuvent être facilement obtenues par les autres approches existantes.
* 15h00 : Extraction de texte avec des ondelettes -- Raphael Boissel
Nous allons présenter une méthode permettant de différencier
le texte du non-texte dans une image en utilisant des descripteurs
inspirés des algorithmes de compression de données.
L’objectif principal de cette approche est de calculer un signal
qui va permettre à des systèmes d’apprentissage supervisés
(comme des kppv ou des machines à vecteurs de support) de
classifier le texte et le fond d’une image. Afin de calculer ce
signal, nous utiliserons des méthodes à base d’ondelettes similaires
à celles utilisées dans les formats de compression jpeg
ou png. Nous allons également étudier quelles ondelettes produisent
les meilleurs résultats, avec quel système d’apprentissage
et comparer cela avec d’autres descripteurs, qui ne sont
pas à base d’ondelettes. Enfin, nous verrons comment il est
possible de diminuer le temps de calcul nécessaire pour ces
descripteurs en utilisant l’élévation en ondelette et des méthodes
optimisées pour calculer l’image polaire.
* 15h30 - 15h45 : PAUSE
* 15h45 : Améliorer Horn-Schunck -- Sylvain Lobry
Calculer le flux optique a de nombreuses applications telles
que l’estimation de mouvement ou un premier pas vers l’inpainting
vidéo. L’équation du flux optique ne peut pas être résolue
telle quelle à cause du problème de fenêtrage (deux inconnues
pour une seule équation). Un ensemble d’algorithme
essaie de résoudre cette équation en se basant sur une stratégie
globale, c’est-à-dire en essayant d’avoir des petites variations
dans le flux. Le premier d’entre eux est l’algorithme d’Horn-
Schunck. Celui-ci, même s’il marche dans de nombreux cas, a
plusieurs inconvénients, y compris celui d’être lent et de ne pas
pouvoir trouver les grands déplacements. Dans le but de résoudre
ces problèmes, plusieurs stratégies ont été développées.
Nous présenterons la méthode et analyserons les bénéfices apportés
en appliquant une stratégie multi-échelle à l’algorithme
d’Horn-Schunck.
* 16h15 : Inpainting rapide préservant la structure -- Coddy Levi
L’inpainting consiste à réparer des parties d’une image de façon
visuellement plausible. Son but peut être de réparer des
régions endommagées, ou de supprimer des objets tels que du
texte superposé à une vidéo. De nombreuses approches ont été
proposées pour répondre au problème dans le cas de petites
ou de larges régions. Cependant la plupart d’entre elles ne sont
pas adaptées à des applications en temps réel. Nous proposons
une méthode plus simple basée sur la reconstruction de structure
et la diffusion des couleurs afin de répondre au problème
dans une optique de temps réel.
--
Daniela Becker
Responsable administrative du LRDE