<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Demotera</title>
        <link>http://blog.demotera.com</link>
        <description><![CDATA[Demotera, cabinet d'ingénieurs en systèmes informatiques haute disponibilité.]]></description>
        <atom:link href="http://blog.demotera.com/rss.xml" rel="self"
                   type="application/rss+xml" />
        <lastBuildDate>Thu, 24 Nov 2011 00:00:00 UT</lastBuildDate>
        <item>
    <title>Newsletter de Novembre</title>
    <link>http://blog.demotera.com/published/2011-11-24-AtikTeam-Newsletter-Novembre.html</link>
    <description><![CDATA[<div class="clearer"></div>

<h1 id="une-nouvelle-gestion-de-projets">Une nouvelle gestion de projets</h1>
<p>La <a href="../published/2011-11-22-AtikTeam-gestion-de-projets-Baikal.html">dernière mise à jour d’AtikTeam</a> apporte un tout nouveau système de gestion de projets, simple et performant.</p>
<div class="text-and-pict">
<div class="text">

<h2 id="un-outil-simple">Un outil simple</h2>
En quelques clics, vos projets s’organisent en phases, actions et évènements. Vous précisez simplement les relations entre les différents éléments, et AtikTeam s’occupe automatiquement du calcul des dates optimales. <a href="../published/2011-11-22-AtikTeam-gestion-de-projets-Baikal.html">en savoir plus</a>
</div>

<div class="pict">
<div class='blog-img'><a class='lightbox' href='/pictures/newsletter/novembre2011/structure.jpg'><img src='/pictures/newsletter/novembre2011/structure.jpg' alt='-' /></a><p class='caption'>structure d’un projet</p></div>
</div>
</div>


<div class="pict-and-text">
<div class="text">

<h2 id="un-suivi-efficace">Un suivi efficace</h2>
<p>AtikTeam vous accompagne ensuite au quotidien dans le déroulement de vos projets, grâce à des diagrammes de Gantt, des calendriers de la réalisation et des indicateurs d’avancement ou de retard. <a href="../published/2011-11-22-AtikTeam-gestion-de-projets-Baikal.html">en savoir plus</a></p>
</div>
<div class="pict">
<div class='blog-img'><a class='lightbox' href='/pictures/newsletter/novembre2011/gantt.jpg'><img src='/pictures/newsletter/novembre2011/gantt.jpg' alt='-' /></a><p class='caption'>un suivi efficace sur le diagramme de Gantt</p></div>
</div>
</div>


<div class="text-and-pict">
<div class="text">

<h2 id="anticipez-les-impr&#233;vus">Anticipez les imprévus</h2>
<p>De nombreux indicateurs automatiques vous permettent de mieux anticiper le déroulement de vos projets. Par exemple, le graphe d’exécution met en lumière le chemin critique ainsi que les risques de congestion, et le plan de charge permet de prévoir la disponibilité future des collaborateurs. <a href="../published/2011-11-22-AtikTeam-gestion-de-projets-Baikal.html">en savoir plus</a></p>
</div>

<div class="pict">
<div class='blog-img'><a class='lightbox' href='/pictures/newsletter/novembre2011/graphe.jpg'><img src='/pictures/newsletter/novembre2011/graphe.jpg' alt='-' /></a><p class='caption'>le graphe d’execution d’un projet</p></div>
</div>

</div>


<h1 id="le-saviez-vous">Le saviez-vous ?</h1>
<div class="pict-and-text">
<div class="text">

<p>Vous pouvez amorcer une discussion avec vos collaborateurs depuis tout document sur AtikTeam. Ainsi, vous discutez sur place des dernières modifications d’un fichier, des améliorations possibles d’une page wiki ou encore de la planification d’un projet. Vos collaborateurs sont informés automatiquement par email, et la discussion reste disponible auprès du document concerné. <a href="../published/2011-11-22-AtikTeam-gestion-de-projets-Baikal.html">en savoir plus</a></p>
</div>
<div class="pict">
<div class='blog-img'><a class='lightbox' href='/pictures/newsletter/novembre2011/discussion-action.jpg'><img src='/pictures/newsletter/novembre2011/discussion-action.jpg' alt='-' /></a><p class='caption'>La discussion sur les ressources</p></div>
</div>
</div>


<div class="text-and-pict">
<div class="text small-column">

<p>Cette mise à jour a été accompagnée par les trois entreprises <a href="http://www.amoes.com">Amoes</a>, <a href="http://www.barbanel.fr">Barbanel</a> et <a href="http://www.didome.fr">Didome</a>.</p>
</div>

<div class="pict auto-width">
<div class='blog-img'><a class='lightbox' href='/pictures/newsletter/novembre2011/sponsors.jpg'><img src='/pictures/newsletter/novembre2011/sponsors.jpg' alt='-' /></a><p class='caption'>sponsors baikal</p></div>
</div>

</div>


<h1 id="&#224;-propos">À propos</h1>
<p><a href="http://www.atikteam.com">AtikTeam</a> est un logiciel en ligne de gestion de projets et de collaboration dynamique. Cette lettre d’information vous permet de rester informé de son actualité et de ses nouvelles fonctionnalités. Cette Newsletter est <a href="http://blog.demotera.com/published/2011-04-04-newsletter-et-tracking.html">sûre</a>, vous pouvez donc configurer votre logiciel de courriel pour en afficher les images.</p>]]></description>
    <pubDate>Thu, 24 Nov 2011 00:00:00 UT</pubDate>
    <guid>http://blog.demotera.com/published/2011-11-24-AtikTeam-Newsletter-Novembre.html</guid>
</item>
<item>
    <title>AtikTeam Baïkal, une nouvelle façon de gérer vos projets</title>
    <link>http://blog.demotera.com/published/2011-11-22-AtikTeam-gestion-de-projets-Baikal.html</link>
    <description><![CDATA[<p>Huit mois se sont écoulés depuis la mise en ligne de <a href="../published/2011-03-15-AtikTeam-gestion-de-projets-version-smallwood.html">Smallwood</a>, la mise à jour d’AtikTeam du printemps, centrée sur l’amélioration du wiki.</p>
<p>De notre côté, ce sont huit mois d’amélioration continue, qui nous permettent aujourd’hui de dévoiler une nouvelle version : AtikTeam <strong>Baïkal</strong>.</p>
<p>Vous pouvez tester dès maintenant cette nouvelle version avec la <a href="http://demo.atikteam.com">démo en ligne</a>.</p>
<div class="clearer"></div>

<h2 id="le-planning">Le planning</h2>
<p>Baïkal met l’accent sur la gestion de projet, avec un tout nouveau module de planning souple et puissant.</p>
<div class='blog-img'><a class='lightbox' href='/pictures/baikal/collage.jpg'><img src='/pictures/baikal/collage.jpg' alt='-' /></a><p class='caption'>Le tout nouveau module de planning a bénéficié d’un sponsoring de la part de deux bureaux d’études, Amoes et Didome (détails plus bas).</p></div>
<p>Ce nouveau système intègre une assistance à la planification, un calcul automatique de l’ordonnancement et des délais de réalisation, un gantt, un graphe d’exécution, et un plan de charge automatique ! Comme tous les modules AtikTeam, ce nouveau planning est conçu pour être collaboratif.</p>
<p>Le planning d’un projet s’organise en phases, actions et évènements. Les phases peuvent elles-mêmes être détaillées en sous-phases. Dans les phases se trouvent les actions qui sont confiées à des collaborateurs. Les phases et les actions ont des relations de dépendances, par exemple vous pouvez exiger que la phase <strong>B</strong> commence après la phase <strong>A</strong>. Ces informations seront utilisées par le module pour calculer automatiquement les dates optimales de réalisation. Si une action termine en avance ou prend du retard, il vous suffit de l’indiquer au système pour qu’il recalcule instantanément les prévisions de réalisation du reste du projet. Efficace, souple et rapide !</p>
<div class='blog-img'><a class='lightbox' href='/pictures/baikal/structure.jpg'><img src='/pictures/baikal/structure.jpg' alt='-' /></a><p class='caption'>La structure est une vue synthétique de la planification d’un projet organisé en phases.</p></div>
<p>Afin de proposer un calcul réaliste de la réalisation, les vacances des collaborateurs sont prises en compte dans le système. Le temps partiel est également prévu, ainsi si une personne travaille uniquement du lundi au mercredi, le module distribuera automatiquement ses actions sur ces trois jours de la semaine.</p>
<div class='blog-img'><a class='lightbox' href='/pictures/baikal/vacances.jpg'><img src='/pictures/baikal/vacances.jpg' alt='-' /></a><p class='caption'>Les vacances des collaborateurs sont prises en compte dans le calcul automatique du planning</p></div>
<p>Le <a href="http://fr.wikipedia.org/wiki/Diagramme_de_Gantt">diagramme de Gantt</a> permet de visualiser dans le temps la planification et l’état d’avancement des phases et des actions de votre projet. Vous pouvez enrouler ou dérouler les phases pour avoir plus ou moins de détail, et vous pouvez cliquer sur un élément pour agir.</p>
<div class='blog-img'><a class='lightbox' href='/pictures/baikal/gantt.jpg'><img src='/pictures/baikal/gantt.jpg' alt='-' /></a><p class='caption'>Le diagramme de Gantt présente le déroulement du projet dans le temps</p></div>
<p>Si vous préférez un affichage mensuel, le calendrier synthétise automatiquement les prévisions de réalisation mois par mois. Là encore, vous pouvez cliquer sur un élément pour avoir du détail ou modifier ses propriétés.</p>
<div class='blog-img'><a class='lightbox' href='/pictures/baikal/calendrier.jpg'><img src='/pictures/baikal/calendrier.jpg' alt='-' /></a><p class='caption'>Le calendrier synthétise l’organisation du travail mois par mois</p></div>
<p>Pour un maximum de souplesse et d’efficacité, le nouveau module de planning encourage les utilisateurs à décrire les contraintes de leurs projets en termes d’interdépendances, plutôt qu’en termes de dates concrètes de début et de fin. Il vous sera donc très facile d’indiquer que l’action X doit être finie avant de pouvoir commencer l’action Y, ou encore que la phase C commencera après les phases A et B. C’est le moteur de calcul qui trouvera ensuite les dates concrètes optimales. Le graphe d’exécution représente automatiquement les phases sous forme de boites imbriquées, et les interdépendances sous forme de flèches. D’un point de vue opérationnel, cette visualisation est très puissante pour se situer à un moment donné dans un projet, ou identifier des points de congestion. Cette représentation s’apparente à un <a href="http://fr.wikipedia.org/wiki/PERT">réseau PERT</a>.</p>
<div class='blog-img'><a class='lightbox' href='/pictures/baikal/graphe.jpg'><img src='/pictures/baikal/graphe.jpg' alt='-' /></a><p class='caption'>Le graphe d’exécution représente l’enchaînement des phases et des actions de la planification. Le chemin critique est automatiquement affiché, en trait rouge épais.</p></div>
<p>Puisque le module permet de calculer automatiquement les plages de réalisations des actions confiées aux collaborateurs, il est également capable de calculer automatiquement un plan de charge détaillé. Ce plan de charge permet d’anticiper la disponibilité future des collaborateurs.</p>
<div class='blog-img'><a class='lightbox' href='/pictures/baikal/charge.jpg'><img src='/pictures/baikal/charge.jpg' alt='-' /></a><p class='caption'>La charge détaillée peut être limitée à un projet, ou couvrir tous vos projets.</p></div>
<p>AtikTeam est une plateforme collaborative, et le module de gestion de projet s’y intègre parfaitement. Les collaborateurs peuvent s’abonner aux éléments du planning pour en suivre l’évolution, et peuvent échanger de l’information directement sur place.</p>
<div class='blog-img'><a class='lightbox' href='/pictures/baikal/discussion-action.jpg'><img src='/pictures/baikal/discussion-action.jpg' alt='-' /></a><p class='caption'>L’équipe du projet peut échanger des messages directement dans les actions.</p></div>
<p><strong>Sponsoring :</strong> Le nouveau module de planning a bénéficié d’un sponsoring de la part du bureau d’études <strong><a href="http://www.amoes.com">Amoes</a></strong>, spécialisé en bâtiment passif et bâtiment à énergie positive, ainsi que du bureau d’études thermiques <strong><a href="http://www.didome.fr">Didome</a></strong>, spécialiste de l’accompagnement de projets thermiques et collaboratifs dans l’ouest.</p>
<h2 id="la-discussion">La discussion</h2>
<p>Les possibilités de discussions entre les collaborateurs ont progressé dans l’ensemble de l’application. Tout d’abord, le module « Annonce » a été revu et se nomme à présent « Discussions ». Plus souple, il permet maintenant aux collaborateurs d’organiser des discussions informelles autour d’un sujet proposé, de distribuer automatiquement la discussion par email au besoin, et la conserver intégrée à l’espace projet.</p>
<div class='blog-img'><a class='lightbox' href='/pictures/baikal/discussions.jpg'><img src='/pictures/baikal/discussions.jpg' alt='-' /></a><p class='caption'>Les discussions peuvent servir de liste de diffusion à l’équipe projet.</p></div>
<p>D’autre part, vous pouvez maintenant démarrer une discussion avec vos collaborateurs sur n’importe quelle page : un fichier, une page wiki, un élément du planning etc. ! Laissez simplement votre remarque en bas de la page, et choisissez éventuellement de transmettre le message par email à quelques collaborateurs, qui pourront alors le lire et accèder directement au document concerné.</p>
<h2 id="s&#233;curisation-des-acc&#232;s">Sécurisation des accès</h2>
<p>Un nouveau dispositif de sécurité permet maintenant aux administrateurs de limiter l’accès des utilisateurs à certaines zones IPs, que vous définissez selon vos besoins. Ce système est particulièrement utile pour n’autoriser l’accès à l’application que depuis les locaux de votre entreprise.</p>
<div class='blog-img'><a class='lightbox' href='/pictures/baikal/zones-ip.jpg'><img src='/pictures/baikal/zones-ip.jpg' alt='-' /></a><p class='caption'>Une zone ip est déterminée par un groupe d’adresses IPs.</p></div>
<p>D’autre part, chaque utilisateur peut consulter la liste de ses dernières connexions pour s’assurer que son compte n’est pas utilisé par un tiers à son insu.</p>
<p><strong>Sponsoring :</strong> Le système de sécurité par zones IP, ainsi que le suivi individuel des connexions utilisateurs, ont été sponsorisés par <strong><a href="http://www.barbanel.fr">Barbanel</a></strong>, cabinet d’ingénierie fluides pour bâtiments tertiaires et industriels.</p>
<h2 id="journal">Journal</h2>
<p>Le suivi de l’activité d’un projet permet aux collaborateurs de voir en un coup d’œil les changements récents. Ce journal d’activité automatique s’est étoffé pour donner des informations plus claires et plus détaillées.</p>
<div class='blog-img'><a class='lightbox' href='/pictures/baikal/journal.jpg'><img src='/pictures/baikal/journal.jpg' alt='-' /></a><p class='caption'>Le journal d’activité synthétise les évènements de l’espace projet</p></div>]]></description>
    <pubDate>Tue, 22 Nov 2011 00:00:00 UT</pubDate>
    <guid>http://blog.demotera.com/published/2011-11-22-AtikTeam-gestion-de-projets-Baikal.html</guid>
</item>
<item>
    <title>Lumières sur la Chaire Éco-Conception</title>
    <link>http://blog.demotera.com/published/2011-06-20-lumieres-sur-la-chaire-eco-conception.html</link>
    <description><![CDATA[<p>Le groupe VINCI et les trois écoles Mines ParisTech, Ponts ParisTech et AgroParisTech ont noué en novembre 2008 un partenariat de long terme sur le thème de l’éco-conception des ensembles bâtis et des infrastructures.</p>
<p>Ce partenariat invite notamment les centres de recherche des différentes écoles à travailler ensemble et à partager les résultats de leurs travaux. C’est précisément pour disposer d’un support à cette collaboration que la Chaire a choisi de mettre en place une plateforme <a href="http://www.atikteam.com">AtikTeam</a> dès son lancement. Plus récemment, dans une démarche de communication plus large de ses travaux, la Chaire a décidé de s’équiper d’un <a href="http://www.chaire-eco-conception.org">nouveau site internet dynamique</a> pour publier régulièrement ses travaux et les dates de ses rencontres. Pour une intégration optimale avec la plateforme de travail, ce site repose sur le <a href="../published/2011-06-16-AtikTeam-module-site-web-public.html">module de publication d’AtikTeam</a>.</p>
<div class='blog-img'><a class='lightbox' href='/pictures/clients/chaire-eco-conception/ss-site.png'><img src='/pictures/clients/chaire-eco-conception/ss-site.png' alt='-' /></a><p class='caption'>Le nouveau site public de la Chaire repose sur AtikTeam</p></div>
<p>Geraldine Thomas-Vallejo est responsable environnement et scientifique à la délégation au développement durable de VINCI, également membre du comité de pilotage de la Chaire Éco-Conception. Elle a accepté récemment de répondre à quelques questions pour me permettre de mieux présenter l’activité de la Chaire.</p>
<p><strong>Quelle est la mission de la Chaire Éco-Conception ?</strong></p>
<blockquote>
<p><strong>G</strong>: La chaire est un partenariat de 5 ans entre ParisTech et VINCI. Elle a pour but de rapprocher le monde des écoles d’ingénieurs et celui de l’entreprise pour faire émerger de nouveaux concepts et outils au service de l’éco-urbanisme. Cette fertilisation croisée permettra également de former de nouvelles générations d’ingénieurs à l’écoconception appliquée aux domaines de la construction et de la concession, qui sont des domaines d’activité de VINCI.</p>
</blockquote>
<p><strong>Quel est son mode de fonctionnement ?</strong></p>
<blockquote>
<p><strong>G</strong>: La Chaire rassemble et finance une quinzaine de thèses et postdocs dans trois écoles de ParisTech : MINES ParisTech, École des Ponts ParisTech et AgroParisTech. Ils créent ensemble une culture de l’éco-conception « multi-spécialités » nécessaire pour aborder des objets aussi complexes que les éco-quartiers. Les chercheurs sont également en relation avec des opérationnels de VINCI à travers des « groupes miroirs » qui introduisent leur expérience de terrain dans la problématique. De plus, des expérimentations ont lieu sur des sites pilotes de VINCI.</p>
</blockquote>
<p><strong>Où peut-on consulter vos publications ?</strong></p>
<blockquote>
<p><strong>G</strong>: Une bonne partie des publications des chercheurs de la Chaire est consultable sur notre site nouvellement développé sur AtikTeam : <a href="http://www.chaire-eco-conception.org">www.chaire-eco-conception.org</a>. Nous avons actuellement une vingtaine de publications en ligne, sur des sujets aussi variés que les éco-matériaux, les bâtiments basse consommation, la réhabilitation des ensembles bâtis, l’analyse de cycle de vie des quartiers, la modélisation et l’optimisation du stationnement … Nous organisons aussi régulièrement des conférences sur l’éco-conception où les chercheurs présentent les résultats de leurs recherches, les actes de ces conférences seront bientôt rajoutés en ligne.</p>
</blockquote>
<p><strong>P: Comment rester informé ?</strong></p>
<blockquote>
<p><strong>G</strong>: Là encore notre site Internet rassemble toute l’information. Les conférences sont ouvertes à tous, l’agenda et le programme sont en ligne. Sur le site <a href="http://www.chaire-eco-conception.org">www.chaire-eco-conception.org</a> vous pouvez vous inscrire à la newsletter de la Chaire.</p>
</blockquote>]]></description>
    <pubDate>Mon, 20 Jun 2011 00:00:00 UT</pubDate>
    <guid>http://blog.demotera.com/published/2011-06-20-lumieres-sur-la-chaire-eco-conception.html</guid>
</item>
<item>
    <title>Publiez sur internet depuis AtikTeam !</title>
    <link>http://blog.demotera.com/published/2011-06-16-AtikTeam-module-site-web-public.html</link>
    <description><![CDATA[<p>Avez-vous déjà souhaité disposer d’un site internet dynamique pour publier régulièrement du contenu ? Avez-vous imaginé pouvoir préparer le contenu et les mises à jour directement avec votre équipe, au sein de votre plateforme collaborative, avant de le publier en un clic ?</p>
<p>C’est désormais possible avec le nouveau module « Site web public » intégré à <a href="http://www.atikteam.com">AtikTeam</a>. En activant ce module, vous pourrez immédiatement commencer à gérer un espace de publication pour votre organisation, depuis un de vos espaces projets AtikTeam. Vous pourrez donc :</p>
<ul>
<li>constituer la structure de votre site (rubriques et sous-rubriques) ;</li>
<li>préparer collaborativement des articles à publier, avec auteurs, illustrations, descriptif etc., puis les publier en un clic après modération ;</li>
<li>annoncer des évènements afin qu’ils s’intègrent automatiquement dans un agenda ;</li>
<li>diffuser une newsletter, et proposer aux visiteurs de s’y inscrire ;</li>
<li>personnaliser totalement l’habillage du site web ;</li>
<li>proposer votre contenu en plusieurs langues.</li>
</ul>
<h2 id="principe-dutilisation">Principe d’utilisation</h2>
<p>Le contenu du site est géré directement par les collaborateurs depuis AtikTeam, avec une interface d’édition. Les visiteurs, quant à eux, accèdent à ce contenu par l’adresse internet de votre choix, et ont accès à la version habillée.</p>
<p>La structure du site s’articule en rubriques et sous-rubriques, que vous pouvez renseigner en différentes langues pour les sites multilingues. Vous pouvez glisser-déposer les rubriques pour les réordonner.</p>
<div class='blog-img'><a class='lightbox' href='/pictures/atikteam/annonce-site-public/rubriques.png'><img src='/pictures/atikteam/annonce-site-public/rubriques.png' alt='-' /></a><p class='caption'>Créez la structure de votre site internet</p></div>
<p>Lorsque la structure est prête, vous pouvez l’utiliser pour créer du contenu dynamique tels que des évènements ou des articles. Vous pouvez également créer des pages libres (à lier vous-même où vous voulez) et des newsletters diffusées aux abonnées.</p>
<div class='blog-img'><a class='lightbox' href='/pictures/atikteam/annonce-site-public/creer_ressource.png'><img src='/pictures/atikteam/annonce-site-public/creer_ressource.png' alt='-' /></a><p class='caption'>Ajoutez des contenus dynamiques dans vos rubriques</p></div>
<p>Les collaborateurs d’un espace projet peuvent rédiger des articles et les proposer pour publication. Un chef de projet pourra alors décider de publier le contenu, en un clic. Chaque rubrique indique, entre parenthèses, le nombre de ses contenus en attente de publication.</p>
<div class='blog-img'><a class='lightbox' href='/pictures/atikteam/annonce-site-public/articles.png'><img src='/pictures/atikteam/annonce-site-public/articles.png' alt='-' /></a><p class='caption'>Vous pouvez préparer un article, puis le publier plus tard.</p></div>
<h2 id="avantages">Avantages</h2>
<p>La système de publication sur internet proposé par le module « site public » offre aux équipes un moyen de mettre en ligne instantanément les résultats des travaux qu’ils mènent sur la plateforme collaborative AtikTeam.</p>
<h2 id="exemple-de-site-public-atikteam">Exemple de site public AtikTeam</h2>
<p>La Chaire Éco-Conception met ses travaux en ligne sur un site public AtikTeam à l’adresse <strong><a href="http://www.chaire-eco-conception.org">www.chaire-eco-conception.org</a></strong>.</p>]]></description>
    <pubDate>Thu, 16 Jun 2011 00:00:00 UT</pubDate>
    <guid>http://blog.demotera.com/published/2011-06-16-AtikTeam-module-site-web-public.html</guid>
</item>
<item>
    <title>Newsletter de Juin</title>
    <link>http://blog.demotera.com/published/2011-06-15-AtikTeam-Newsletter-Juin.html</link>
    <description><![CDATA[<div class="clearer"></div>
<h1 id="un-wiki-plus-puissant">Un wiki plus puissant</h1>
<p>La <a href="../published/2011-03-15-AtikTeam-gestion-de-projets-version-smallwood.html">dernière mise à jour</a> d’AtikTeam a introduit des nouveautés dans le wiki, que nous vous proposons de découvrir ici.</p>
<div class="text-and-pict">
<div class="text">

<h2 id="ins&#233;rez-vos-images-et-graphiques">Insérez vos images et graphiques</h2>
<p>Vous pouvez maintenant insérer des images munies d’une légende dans les pages wiki, centrées ou dans le flot du texte, en différentes tailles, d’un simple clic dans la barre d’outils.</p>
</div>

<div class="pict">
<div class='blog-img'><a class='lightbox' href='/pictures/newsletter/juin2011/image.png'><img src='/pictures/newsletter/juin2011/image.png' alt='-' /></a><p class='caption'>Le wiki accueille maintenant les images …</p></div>
</div>
</div>


<div class="pict-and-text">

<div class="text">

<h2 id="int&#233;grez-des-tableaux">Intégrez des tableaux</h2>
Vous pouvez également, toujours à partir de la barre d’outils wiki, lancer un assistant de création et de manipulation de tableaux. Composez des tableaux simples ou complexes, et intégrez-les directement à vos documents.
</div>

<div class="pict">
<div class='blog-img'><a class='lightbox' href='/pictures/newsletter/juin2011/tableau.png'><img src='/pictures/newsletter/juin2011/tableau.png' alt='-' /></a><p class='caption'>… les tableaux …</p></div>
</div>

</div>


<div class="text-and-pict">
<div class="text">

<h2 id="saisissez-vos-formules">Saisissez vos formules</h2>
Enfin, vous apprécierez l’intégration des formules mathématiques au cœur du wiki, pour améliorer la collaboration scientifique. La saisie de formules repose sur la syntaxe LaTeX.
</div>

<div class="pict">
<div class='blog-img'><a class='lightbox' href='/pictures/newsletter/juin2011/maths.png'><img src='/pictures/newsletter/juin2011/maths.png' alt='-' /></a><p class='caption'>… et les formules mathématiques.</p></div>
</div>

</div>


<h1 id="le-saviez-vous">Le saviez-vous ?</h1>
<div class="pict-and-text">
<div class="text">

<p>Vous pouvez <a href="http://help.atikteam.com/doc/user_doc/base_doc">partager un fichier</a> de votre base documentaire avec vos collaborateurs ou vos clients qui ne sont pas membres de votre projet. Pour cela, cliquez simplement sur le bouton <strong>lien public</strong> et transmettez le lien sécurisé par courriel à vos destinataires.</p>
</div>
<div class="pict">
<div class='blog-img'><a class='lightbox' href='/pictures/newsletter/juin2011/lien-public.png'><img src='/pictures/newsletter/juin2011/lien-public.png' alt='-' /></a><p class='caption'>Lien public</p></div>
</div>
</div>




<h1 id="atikteam-pour-un-chantier-bbc-&#224;-rennes">AtikTeam pour un chantier BBC à rennes</h1>
<p>Le Bureau d’Études Thermiques Rennais Didome met en place pour chacune de ses missions un espace collaboratif dans AtikTeam, grâce auquel maîtrise d’œuvre, maîtrise d’ouvrage, bureau d’études et autres partenaires communiquent et suivent les progrès du projet. <a href="../published/2011-05-13-visite-chantier-BBC-didome.html">Découvrez leur méthode</a>.</p>
<div class="two-picts">
<div class="pict-left">
<div class='blog-img'><a class='lightbox' href='/pictures/events/2011-05-chantier-didome/camera.jpg'><img src='/pictures/events/2011-05-chantier-didome/camera.jpg' alt='-' /></a><p class='caption'>Les étudiants de Sciences Po préparent leur matériel pour filmer M. Le Goff.</p></div>
</div>
<div class="pict-right">
<div class='blog-img'><a class='lightbox' href='/pictures/newsletter/juin2011/flyer-didome.jpg'><img src='/pictures/newsletter/juin2011/flyer-didome.jpg' alt='-' /></a><p class='caption'>Plaquette didome AtikTeam</p></div>
</div>
</div>


<h1 id="&#224;-propos">À propos</h1>
<p><a href="http://www.atikteam.com">AtikTeam</a> est un logiciel en ligne de gestion de projets et de collaboration dynamique. Cette lettre d’information vous permettra de rester informé de son actualité et de ses nouvelles fonctionnalités. Cette Newsletter est <a href="http://blog.demotera.com/published/2011-04-04-newsletter-et-tracking.html">sûre</a>, vous pouvez donc configurer votre logiciel de courriel pour en afficher les images.</p>]]></description>
    <pubDate>Wed, 15 Jun 2011 00:00:00 UT</pubDate>
    <guid>http://blog.demotera.com/published/2011-06-15-AtikTeam-Newsletter-Juin.html</guid>
</item>
<item>
    <title>Visite guidée d’un chantier de maison performante à Rennes</title>
    <link>http://blog.demotera.com/published/2011-05-13-visite-chantier-BBC-didome.html</link>
    <description><![CDATA[<p>Le Bureau d’Études Thermiques Rennais <a href="http://www.didome.fr">Didome</a> met en place pour chacune de ses missions un espace collaboratif dans <a href="http://www.atikteam.com">AtikTeam</a>, grâce auquel maîtrise d’œuvre, maîtrise d’ouvrage, bureau d’études et autres partenaires communiquent et suivent les progrès du projet.</p>
<p>Didome nous a donc invités à une visite guidée d’un chantier de construction de maison individuelle <a href="http://fr.wikipedia.org/wiki/B%C3%A2timent_de_basse_consommation">basse consommation</a> dans le centre ville de Rennes. La visite commence à 9h30, par une présentation par M. Le Goff (BET Didome) du fonctionnement d’un projet de BBC.</p>
<div class='blog-img'><a class='lightbox' href='/pictures/events/2011-05-chantier-didome/accueil.jpg'><img src='/pictures/events/2011-05-chantier-didome/accueil.jpg' alt='-' /></a><p class='caption'>Didier Le Goff (au centre de l’attention), du BET Didome, accueille les visiteurs et leur présente le fonctionnement d’un projet de BBC.</p></div>
<p>M. Le Goff rappelle l’importance de la communication entre l’architecte et le bureau d’études, ce que confirme Fréderic Boilevin du cabinet d’architecture <a href="http://www.phenome-architectures.com">PHENOME</a> lors de son intervention. À de nombreuses reprises, le tandem soulignera l’efficacité de la plateforme collaborative <a href="http://www.atikteam.com">AtikTeam</a> pour la réalisation de leur mission commune.</p>
<div class='blog-img'><a class='lightbox' href='/pictures/events/2011-05-chantier-didome/flyer.jpg'><img src='/pictures/events/2011-05-chantier-didome/flyer.jpg' alt='-' /></a><p class='caption'>Didome a préparé une plaquette de présentation du projet, dans laquelle on trouve de nombreux extraits de son espace AtikTeam.</p></div>
<p>L’architecte prend alors la parole pour présenter l’organisation des espaces de la maison, conçue pour satisfaire les besoins fonctionnels du client, tout en maximisant la pénétration de la lumière et en minimisant les déperditions thermiques.</p>
<div class='blog-img'><a class='lightbox' href='/pictures/events/2011-05-chantier-didome/archi.jpg'><img src='/pictures/events/2011-05-chantier-didome/archi.jpg' alt='-' /></a><p class='caption'>Fréderic Boilevin, en face des plans de la maison, parle de l’architecture et du chantier.</p></div>
<p>Un groupe de trois étudiants en sciences politiques réalise en ce moment un projet documentaire sur les politiques de développement durable. Ils préparent notamment une séries d’entretiens avec les acteurs de la construction, et sont donc venus sur le chantier à la rencontre des professionnels.</p>
<div class='blog-img'><a class='lightbox' href='/pictures/events/2011-05-chantier-didome/camera.jpg'><img src='/pictures/events/2011-05-chantier-didome/camera.jpg' alt='-' /></a><p class='caption'>Les étudiants de Sciences Po préparent leur matériel pour filmer M. Le Goff.</p></div>
<p>Plus de quarante visiteurs sont venus voir le chantier et découvrir le fonctionnement d’un projet de maison basse consommation, c’est donc un grand succès pour le BET Didome, et nous espérons recevoir prochainement de nouvelles invitations pour d’autres visites guidées.</p>]]></description>
    <pubDate>Fri, 13 May 2011 00:00:00 UT</pubDate>
    <guid>http://blog.demotera.com/published/2011-05-13-visite-chantier-BBC-didome.html</guid>
</item>
<item>
    <title>Comment fonctionne le traçage d’une Newsletter, et pourquoi celle d’AtikTeam n’est pas concernée ?</title>
    <link>http://blog.demotera.com/published/2011-04-04-newsletter-et-tracking.html</link>
    <description><![CDATA[<div class="important"><p> 
<strong>Résumé rapide</strong> : La Newsletter AtikTeam n’emploie aucun système de traçage de ses destinataires. Vous pouvez donc afficher les images de notre Newsletter et cliquer sur nos liens en toute confiance.
</p></div>


<p>L’<a href="http://en.wikipedia.org/wiki/E-mail_tracking">email tracking</a> est une technique déjà ancienne, qui est apparue en même temps que le marketing par courrier électronique.</p>
<h2 id="principe">Principe</h2>
<p>L’objectif de cette technique est d’obtenir des informations individualisées sur les destinataires d’un courriel. Ces informations obtenues individuellement sur chaque destinataire seront typiquement les suivantes :</p>
<ul>
<li>quel jour et à quelle heure la personne a-t-elle ouvert le courriel ?</li>
<li>depuis quelle <a href="http://fr.wikipedia.org/wiki/Adresse_IP">adresse IP</a> le courriel a-t-il été ouvert ? Dans quel pays, dans quelle ville ?</li>
<li>quel logiciel de courriel a été utilisé ?</li>
<li>le courriel a-t-il été ré-ouvert par la suite ? Quand ?</li>
</ul>
<h2 id="mise-en-&#339;uvre-technique">Mise en œuvre technique</h2>
<p>La technique est simple et repose sur la diffusion d’emails au format <a href="http://fr.wikipedia.org/wiki/Html">HTML</a>. Ce format permet notamment d’insérer des images et des liens dans le courriel, en indiquant uniquement l’adresse à laquelle trouver l’image ou la page liée. Dans le cas des images, cela signifie que l’image elle-même n’est pas <strong>incluse</strong> dans l’email, mais seule une <strong>référence</strong> vers l’adresse de l’image en ligne (sur un serveur) est présente.</p>
<p>Pour mettre en place un système de tracking individualisé, on commence généralement par construire une « table de correspondance » qui associe à chaque destinataire de la newsletter un identifiant unique, qui lui est propre. Bien que cette étape ne soit pas obligatoire, elle permet aux diffuseurs d’être plus discret dans le tracking, nous verrons plus loin comment.</p>
<table>
<thead>
<tr class="header">
<th align="center">addresse email</th>
<th align="center">identifiant</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td align="center">aaa@example.com</td>
<td align="center">1</td>
</tr>
<tr class="even">
<td align="center">bbb@example.com</td>
<td align="center">2</td>
</tr>
<tr class="odd">
<td align="center">…</td>
<td align="center">…</td>
</tr>
</tbody>
</table>
<p>Ensuite, tous les liens contenus dans l’email HTML, qui référencent des images ou des pages, vont être complétés pour chaque email envoyé, en insérant l’identifiant unique associé au destinataire. Par exemple, un lien vers une image qui à l’origine (en version anonyme) était</p>
<pre><code>http://www.example.com/images/logo.png
</code></pre>
<p>va devenir, après préparation pour <code>aaa@example.com</code></p>
<pre><code>http://www.example.com/images/logo.png?source=1 
</code></pre>
<p>et va devenir, après préparation pour <code>bbb@example.com</code></p>
<pre><code>http://www.example.com/images/logo.png?source=2
</code></pre>
<p>Tout ce qui suit le <code>?</code> dans l’adresse de l’image est appelé <em>paramètres</em>, et ne change pas la ressource demandée. La ressource en question (ici, le logo) sera donc normalement envoyée à l’utilisateur qui voudra afficher l’email. Mais le paramètre <code>source</code> va être utilisé par le serveur pour raccorder l’évènement de lecture du courriel à son destinataire. Il va donc savoir qui a ouvert le courrier, et depuis quelle adresse IP, et va stocker cela dans une base de données avec la date et l’heure. L’usage d’un identifiant unique, plutôt que de l’adresse email directement, ne sert qu’à rendre la technique plus discrète.</p>
<p>Le tour est joué, on construit ainsi une base de données individualisées sur les destinataires des newsletters.</p>
<h2 id="protections">Protections</h2>
<p>Pour protéger votre vie privée, la plupart des logiciels de courrier électronique mettent en place un système de protection. Le principe est simplement de ne pas charger les images, donc ne pas envoyer d’information au serveur. L’inconvénient est bien entendu que le courriel s’affichera mal, et partiellement. Au cas par cas, l’utilisateur peut choisir d’afficher les images pour un courriel précis, ou pour tous les courriels en provenance d’un adresse email.</p>
<div class='blog-img'><a class='lightbox' href='/pictures/newsletter/images-disabled.png'><img src='/pictures/newsletter/images-disabled.png' alt='-' /></a><p class='caption'>exemple de message d’avertissement d’un logiciel de courriel qui n’a pas chargé les images</p></div>
<h2 id="la-newsletter-atikteam">La Newsletter AtikTeam</h2>
<p>Nous considérons que l’usage de cette technique serait un manque de respect envers nos lecteurs, c’est pourquoi <strong>nous n’utilisons aucun système de tracking dans notre Newsletter</strong>. Vous pouvez donc choisir d’afficher systématiquement les images en provenance la Newsletter AtikTeam, sans vous inquiéter pour votre sécurité ou votre anonymat.</p>
<p>Bonne lecture !</p>]]></description>
    <pubDate>Mon, 04 Apr 2011 00:00:00 UT</pubDate>
    <guid>http://blog.demotera.com/published/2011-04-04-newsletter-et-tracking.html</guid>
</item>
<item>
    <title>AtikTeam SmallWood, ou la puissance de la communication !</title>
    <link>http://blog.demotera.com/published/2011-03-15-AtikTeam-gestion-de-projets-version-smallwood.html</link>
    <description><![CDATA[<p>Smallwood est la première version à succéder à <a href="2011-02-24-AtikTeam-transition-majeure.html">la grande transition technique</a> de février 2011. Suite au succès de cette transition, AtikTeam reprend son rythme soutenu d’amélioration continue !</p>
<p>Tout d’abord, le wiki a été équipé de deux nouveaux systèmes permettant l’insertion et la manipulation d’images et de tableaux. Vous pouvez donc dorénavant insérer des images dans les pages wiki, centrées ou dans le flot du texte, en différentes tailles, d’un simple clic sur le bouton de la barre wiki.</p>
<div class='blog-img'><a class='lightbox' href='/pictures/smallwood/image-wiki.png'><img src='/pictures/smallwood/image-wiki.png' alt='-' /></a><p class='caption'>Le wiki accueille maintenant les images …</p></div>
<p>Vous pourrez également, toujours à partir de cette barre d’outils, lancer un assistant de création et de manipulation des tableaux. Ces deux nouveautés étendent agréablement le cadre d’utilisation de vos pages wiki, en vous permettant d’y intégrer vos données, graphiques et illustrations.</p>
<div class='blog-img'><a class='lightbox' href='/pictures/smallwood/tableau-wiki.png'><img src='/pictures/smallwood/tableau-wiki.png' alt='-' /></a><p class='caption'>… les tableaux …</p></div>
<p>Pour parfaire cette extension du wiki, ce dernier permet maintenant d’insérer des équations mathématiques, directement en syntaxe <a href="../tags/LaTeX.html">LaTeX</a> !</p>
<div class='blog-img'><a class='lightbox' href='/pictures/smallwood/maths-wiki.png'><img src='/pictures/smallwood/maths-wiki.png' alt='-' /></a><p class='caption'>… et même les équations mathématiques !</p></div>
<p>D’autre part, les fichiers de la base documentaire peuvent maintenant être communiqués à des collaborateurs externes grâce aux liens publics. En vous rendant sur la page d’un de vos fichiers, vous pouvez obtenir un lien public, valide pour la durée de votre choix, que vous communiquerez à vos collaborateurs externes, par exemple par email.</p>
<p>Cela évitera la manipulation des pièces jointes, et il leur suffira d’un clic pour obtenir directement le fichier.</p>
<div class='blog-img'><a class='lightbox' href='/pictures/smallwood/lien-public.png'><img src='/pictures/smallwood/lien-public.png' alt='-' /></a><p class='caption'>Mettez vos fichiers de travail en ligne, et envoyez un lien à vos collaborateurs.</p></div>
<p><a href="http://www.atikteam.com">AtikTeam</a> est un logiciel en ligne de gestion de projet et de collaboration dynamique.</p>]]></description>
    <pubDate>Tue, 15 Mar 2011 00:00:00 UT</pubDate>
    <guid>http://blog.demotera.com/published/2011-03-15-AtikTeam-gestion-de-projets-version-smallwood.html</guid>
</item>
<item>
    <title>Évolution majeure du socle technique d’AtikTeam</title>
    <link>http://blog.demotera.com/published/2011-02-24-AtikTeam-transition-majeure.html</link>
    <description><![CDATA[<p><strong>Le service <a href="http://www.atikteam.com">AtikTeam</a> sera coupé 4 heures entre le jeudi 24 février à 22h00 et le vendredi 25 février à 2h00, afin de nous permettre de déployer une évolution technique majeure.</strong></p>
<p>Ce nouveau socle technique permettra une répartition plus homogène de la charge entre les différents serveurs qui composent l’infrastructure d’hébergement, ce qui se traduira pour vous par des temps d’affichage des pages plus courts et plus prévisibles.</p>
<h2 id="identification">Identification</h2>
<p>D’autre part, les utilisateurs seront invités à s’identifier avec leur adresse email, qui remplace donc l’identifiant utilisé jusqu’alors. Le mot de passe, quant à lui, reste inchangé. Les utilisateurs qui ont perdu leur mot de passe pourront le remplacer directement depuis l’interface de connexion, présentée ci-dessous.</p>
<div class='blog-img'><a class='lightbox' href='/pictures/colibri/login.jpg'><img src='/pictures/colibri/login.jpg' alt='-' /></a><p class='caption'>Nouvelle page de connexion, utilisez votre adresse email et votre mot de passe habituel.</p></div>
<h2 id="accueil">Accueil</h2>
<p>La nouvelle infrastructure permettra maintenant aux utilisateurs de gérer et de participer à plusieurs applications AtikTeam. Pour cela, une page vous accueille et vous propose d’accéder aux différentes applications dont vous êtes membre. Vous pouvez également y régler vos préférences et la configuration de vos applications.</p>
<div class='blog-img'><a class='lightbox' href='/pictures/colibri/my.png'><img src='/pictures/colibri/my.png' alt='-' /></a><p class='caption'>La console de gestion vous accueille et vous guide vers vos applications.</p></div>
<h2 id="utilisation">Utilisation</h2>
<p>Par nature, cette transition change très peu les fonctionnalités visibles. On notera toutefois que l’invitation de collaborateurs se simplifie puisqu’il suffit à présent de saisir une adresse email pour envoyer l’invitation. Le destinataire la reçoit alors instantanément, et peut l’accepter avec son compte existant s’il en a un. Dans le cas contraire, un petit formulaire lui sera proposé pour créer son compte.</p>
<div class='blog-img'><a class='lightbox' href='/pictures/colibri/invitation.png'><img src='/pictures/colibri/invitation.png' alt='-' /></a><p class='caption'>Réception d’une invitation à rejoindre une application AtikTeam.</p></div>
<p>D’autre part, les flux Atom (RSS) sont dorénavant sécurisés via des clefs d’accès placées directement dans l’adresse du flux. Vous pouvez donc maintenant copier/coller directement l’URL dans votre lecteur de flux RSS.</p>]]></description>
    <pubDate>Thu, 24 Feb 2011 00:00:00 UT</pubDate>
    <guid>http://blog.demotera.com/published/2011-02-24-AtikTeam-transition-majeure.html</guid>
</item>
<item>
    <title>Mobi’Rennes, l’écomobilité à Rennes !</title>
    <link>http://blog.demotera.com/published/2011-02-09-opendata-rennes-mobirennes.html</link>
    <description><![CDATA[<p>Demotera participe au <a href="http://www.data.rennes-metropole.fr/fr/le-concours.html">concours « Rennes Métropole en accès libre »</a> et propose une application <em>innovante et utile</em> !</p>
<p>Mobi’Rennes est un service de calcul d’itinéraires multimodaux en transports écoresponsables, destiné à toute personne désireuse de se déplacer rapidement et proprement dans l’agglomération Rennaise. Pour cela, Mobi’Rennes propose à l’usager une sélection d’itinéraires efficaces répondant à son souhait de voyage, en combinant au besoin tous les modes de transports publics proposés par la métropole, ainsi que la marche à pieds. L’approche multimodale et multiobjectif du déplacement permet à Mobi’Rennes de proposer des itinéraires plus rapides et plus variés que les systèmes traditionnels.</p>
<p>Pour l’utiliser, il suffit de se rendre sur <a href="http://www.mobirennes.com">www.mobirennes.com</a>, puis d’y placer le lieu de départ et celui d’arrivée, directement sur la carte, pour obtenir instantanément des propositions d’itinéraires performants. En révélant ainsi tout le potentiel de combinaison des transports publics et des déplacements doux, Mobi’Rennes offre un service opérationnel d’aide à l’écomobilité sur le territoire de Rennes Métropole.</p>
<ul>
<li>Mobi’Rennes est mis en place par <a href="http://www.demotera.com">Demotera</a></li>
<li>Le moteur de calcul d’itinéraire vous est proposé par Tristram Gräbener et fait suite à son exceptionnel travail de thèse, que vous pouvez consulter en téléchargeant son mémoire <a href="http://dl.demotera.com/these_graebener.pdf">ici</a>.</li>
<li>Les données pour les transports publics ainsi que pour Le vélo STAR sont fournies par Data Keolis Rennes</li>
<li>Les données cartographiques et le module de visualisation sont fournis par Open Street Maps et Open Layers.</li>
<li>Le code source du projet, en GPLv3, se trouve sur le <a href="http://github.com/demotera/mobirennes">dépôt GitHub de Mobi’Rennes</a>. C’est également sur ce dépôt que nous vous invitons à déposer vos remarques et suggestions.</li>
</ul>
<div class='blog-img'><a class='lightbox' href='/pictures/mobirennes/st-greg--chantepie.jpg'><img src='/pictures/mobirennes/st-greg--chantepie.jpg' alt='-' /></a><p class='caption'>Exemple d’un trajet multimodal parmi les propositions pour aller de Saint Grégoire à Chantepie.</p></div>]]></description>
    <pubDate>Wed, 09 Feb 2011 00:00:00 UT</pubDate>
    <guid>http://blog.demotera.com/published/2011-02-09-opendata-rennes-mobirennes.html</guid>
</item>
<item>
    <title>AtikTeam Xingkai, du nouveau pour le logiciel en ligne de gestion de projet et de collaboration !</title>
    <link>http://blog.demotera.com/published/2010-11-09-AtikTeam-logiciel-gestion-de-projet-Xingkai.html</link>
    <description><![CDATA[<p>Dans cette version automnale, AtikTeam vous apporte trois améliorations majeures.</p>
<ul>
<li>un système de Dashboard collaboratif permet de construire des tableaux de bords en combinant les indicateurs personnels et partagés en une page unique</li>
<li>le nouveau système de copie de projet permet de créer un nouvel espace projet en se basant sur un espace existant</li>
<li>les pages wiki proposent automatiquement de numéroter les titres, et d’insérer une table des matières</li>
</ul>
<div class='blog-img'><a class='lightbox' href='/pictures/xingkai/dashboard.png'><img src='/pictures/xingkai/dashboard.png' alt='-' /></a><p class='caption'>Le Dashboard collaboratif, un tableau de bord composite.</p></div>
<p>D’autre part, quelques discrètes améliorations d’ergonomie ont été apportées pour améliorer le confort général d’utilisation.</p>
<p><a href="http://www.atikteam.com">AtikTeam</a> est un logiciel en ligne de gestion de projet et de collaboration de groupe. <strong><a href="http://demo.atikteam.com">Connectez-vous à la démonstration</a></strong></p>]]></description>
    <pubDate>Tue, 09 Nov 2010 00:00:00 UT</pubDate>
    <guid>http://blog.demotera.com/published/2010-11-09-AtikTeam-logiciel-gestion-de-projet-Xingkai.html</guid>
</item>
<item>
    <title>Les monades dans la programmation fonctionnelle</title>
    <link>http://blog.demotera.com/published/2010-10-28-Les-Monades-Dans-La-Programmation-Fonctionnelle.html</link>
    <description><![CDATA[<h1 id="shall-i-be-pure-or-impure">Shall I be pure or impure?</h1>
<p>C’est par cette question que <a href="http://homepages.inf.ed.ac.uk/wadler/">Philip Wadler</a> commence, en 1992, un article qui se révélera décisif dans l’application des monades à la programmation fonctionnelle : <a href="http://homepages.inf.ed.ac.uk/wadler/papers/marktoberdorf/baastad.pdf">Monads for functional programming</a>.</p>
<p>Depuis, l’usage des monades s’est répandu dans plusieurs langages, et en particulier dans Haskell, auquel elles ont apporté une réponse élégante pour les entrées/sorties et pour le contrôle d’exécution.</p>
<p>Cet article va présenter les concepts élémentaires des monades, en s’appuyant sur les exemples introduits par Wadler en 1992.</p>
<h2 id="quest-ce-quune-monade">Qu’est-ce qu’une monade ?</h2>
<p>Mathématiquement, une monade est un triplet composé d’un foncteur et de deux transformations naturelles, choisis tels que trois lois soient vérifiées. Nous reviendrons juste après sur ces lois.</p>
<p>Appliquée à la programmation fonctionnelle, la monade sera définie par :</p>
<ul>
<li>un constructeur de type, qui sera donc un type monadique <em>m</em> ;</li>
<li>une fonction nommée <em>unit</em> ou <em>return</em>, qui construira à partir d’un objet de type <em>a</em>, un autre objet de type monadique <em>m a</em>. À ce titre, il s’agira d’une fonction monadique, de signature <em>return :: a -&gt; m a</em> ;</li>
<li>une opération nommée <em>bind</em>, ou <em>&gt;&gt;=</em>, qui permettra de composer une fonction monadique à partir d’autres fonctions monadiques, en respectant une logique propre à chaque monade, de signature <em>(&gt;&gt;=) :: m a -&gt; (a -&gt; m b) -&gt; m b</em>.</li>
</ul>
<p>Les trois lois des monades sont exprimées ainsi :</p>
<ul>
<li>Composition neutre par <em>return</em> à gauche : <em>(return x) &gt;&gt;= f ≡ f x</em></li>
<li>Composition neutre par <em>return</em> à droite : <em>m &gt;&gt;= return ≡ m</em></li>
<li>Associativité : <em>(m &gt;&gt;= f) &gt;&gt;= g ≡ m &gt;&gt;= ( \ x -&gt; (f x &gt;&gt;= g) )</em></li>
</ul>
<p>Un aspect intéressant des monades est qu’elles sont composables, à partir d’un jeu de fonctions monadiques. C’est pourquoi, en plus des trois éléments indispensables listés ci-dessus, la monade sera souvent accompagnée d’un jeu de fonctions monadiques utiles, qui lui seront propres. Le type d’une fonction monadique est le suivant :</p>
<p><span class="math">∀ <em>m</em> ∈ <em>M</em><em>o</em><em>n</em><em>a</em><em>d</em>, ∀ <em>a</em>, ∀ <em>b</em>, <em>f</em> ∈ <em>F</em><em>o</em><em>n</em><em>c</em><em>t</em><em>i</em><em>o</em><em>n</em><em>s</em><em>M</em><em>o</em><em>n</em><em>a</em><em>d</em><em>i</em><em>q</em><em>u</em><em>e</em><em>s</em> ⇔ <em>f</em>: <em>a</em> → <em>m</em><em>b</em></span></p>
<h2 id="&#224;-quoi-cela-peut-il-bien-servir">À quoi cela peut-il bien servir ?</h2>
<p>Pour un langage impur, c’est à dire permettant toute sorte d’effet de bord dans les fonctions, les monades ne sont pas d’une nécessité évidente, bien qu’elles puissent offrir une solution élégante et rapide à certaines catégories de problèmes.</p>
<p>En revanche, pour un langage fonctionnel pur, c’est à dire ne permettant aucun effet de bord, et aucun contrôle d’exécution implicite, les monades offrent une construction permettant d’enrichir les capacités des fonctions. Expliquons cela par un exemple : dans un langage pur, une fonction de type <em>Int → Int → Int</em> sera capable de prendre deux entiers pour en composer un autre. <strong>Point.</strong> C’est à dire que cette fonction ne pourra lire absolument aucun <em>état</em> du programme, ne pourra accéder ni à un fichier, ni à l’heure courante, ni même à un nombre aléatoire. Elle ne pourra pas non plus logger dans un terminal, ou écrire un rapport d’exécution dans une variable.</p>
<p>La signature de cette fonction a un sens très strict quant à ses capacités : elle peut lire deux entiers, et les utiliser pour en produire un autre. Elle est donc <em>pure</em>, et cela lui confère entre autres une propriété essentielle, le <em>déterminisme</em>. Appelée avec les mêmes arguments, elle produira inlassablement le même résultat, quel que soit l’état de son environnement d’exécution (programme, heure, fichiers, entrées de l’utilisateur etc).</p>
<h2 id="du-code">Du code</h2>
<p>Prenons un exemple élémentaire, celui d’un évaluateur qui calcule la valeur d’un arbre de divisions. L’arbre de division est défini par le type algébrique suivant.</p>
<pre class="sourceCode"><code class="sourceCode haskell"><span class="kw">data</span> <span class="dt">Term</span> <span class="fu">=</span> <span class="dt">Const</span> <span class="dt">Int</span> <span class="fu">|</span> <span class="dt">Div</span> <span class="dt">Term</span> <span class="dt">Term</span></code></pre>
<p>Pour la suite de l’exemple, on va définir deux expressions de type <em>Term</em>, dont une qui posera un problème lors de l’évaluation. En Haskell, on peut utiliser le constructeur <em>Div</em> en infix si on l’encadre d’apostrophes inversées.</p>
<pre class="sourceCode"><code class="sourceCode haskell">expr1,<span class="ot"> expr2 </span><span class="ot">::</span> <span class="dt">Term</span><br />expr1 <span class="fu">=</span> (<span class="dt">Const</span> <span class="dv">20</span>) <span class="ot">`Div`</span> ((<span class="dt">Const</span> <span class="dv">10</span>) <span class="ot">`Div`</span> (<span class="dt">Const</span> <span class="dv">2</span>)) <span class="co">-- 20 / (10 / 2)</span><br />expr2 <span class="fu">=</span> (<span class="dt">Const</span> <span class="dv">20</span>) <span class="ot">`Div`</span> ((<span class="dt">Const</span> <span class="dv">10</span>) <span class="ot">`Div`</span> (<span class="dt">Const</span> <span class="dv">0</span>)) <span class="co">-- 20 / (10 / 0)</span></code></pre>
<p>Munis de notre type <em>Term</em>, nous allons écrire un évaluateur sous sa forme la plus simple. Un évaluateur prend un arbre de divisions, et le transforme en une valeur entière en l’évaluant, par la division euclidienne des entiers.</p>
<pre class="sourceCode"><code class="sourceCode haskell"><span class="ot">eval </span><span class="ot">::</span> <span class="dt">Term</span> <span class="ot">-&gt;</span> <span class="dt">Int</span><br />eval (<span class="dt">Const</span> c) <span class="fu">=</span> c<br />eval (<span class="dt">Div</span> n d) <span class="fu">=</span> <span class="fu">div</span> (eval n) (eval d) <span class="co">-- division enti&#232;re</span></code></pre>
<p>En observant la signature de notre évaluateur, nous savons qu’il ne pourra jamais produire de valeurs aléatoires, ni logger ses divisions, ni quoi que ce soit d’autre que fournir un entier. Ce qui nous amène à un premier constat :</p>
<ul>
<li><em>eval expr1</em> fonctionne parfaitement et retourne <em>4</em></li>
<li><em>eval expr2</em> plante avec une exception <em>« divide by zero »</em></li>
</ul>
<p>Comme notre évaluateur ne peut renvoyer qu’un Int, il n’a aucun moyen de nous indiquer que le calcul est indéterminé pour cause de division par zéro. Nous allons arranger cela plus tard.</p>
<p>Tout d’abord, nous allons écrire une fonction chargée de construire un évaluateur (donc une fonction) plus souple. Notre fonction makeEvalM prendra en unique argument une fonction de type <em>(Int -&gt; Int -&gt; m Int)</em> qui sera notre diviseur monadique. Nous spécifions une contrainte : <em>m</em> doit être un type monadique. Peu importe quel type nous utiliserons plus tard, la signature du diviseur monadique indique que le résultat de la division sera un objet composé, principalement, d’un <em>Int</em>. Mais accessoirement, cet objet pourra également embarquer tout un tas d’autres informations sur la division. En assouplissant le type de retour du diviseur, nous lui permettons de transmettre des informations annexes à l’entier résultant.</p>
<p>Le retour de <em>makeEvalM</em> est un évaluateur monadique de <em>Term</em>, c’est à dire tout simplement une <em>fonction monadique</em> de type <em>(Term -&gt; m Int)</em>.</p>
<p>En appelant <em>makeEvalM</em> sur une fonction de division monadique, nous construisons une nouvelle fonction d’évaluation, spécifique à la logique de la monade <em>m</em>.</p>
<pre class="sourceCode"><code class="sourceCode haskell"><span class="ot">makeEvalM </span><span class="ot">::</span> (<span class="kw">Monad</span> m) <span class="ot">=&gt;</span> (<span class="dt">Int</span> <span class="ot">-&gt;</span> <span class="dt">Int</span> <span class="ot">-&gt;</span> m <span class="dt">Int</span>)    <span class="co">-- diviseur monadique</span><br />            <span class="ot">-&gt;</span> (<span class="dt">Term</span> <span class="ot">-&gt;</span> m <span class="dt">Int</span>)          <span class="co">-- &#233;valuateur monadique</span><br />makeEvalM divM <span class="fu">=</span> (\t <span class="ot">-&gt;</span> <span class="fu">return</span> t <span class="fu">&gt;&gt;=</span> evalM) <span class="kw">where</span><br />  evalM (<span class="dt">Const</span> c) <span class="fu">=</span> <span class="fu">return</span> c<br />  evalM (<span class="dt">Div</span> n d) <span class="fu">=</span> evalM n <span class="fu">&gt;&gt;=</span> \ a <span class="ot">-&gt;</span><br />    evalM d <span class="fu">&gt;&gt;=</span> \ b <span class="ot">-&gt;</span><br />    divM a b</code></pre>
<h3 id="une-premi&#232;re-application-la-monade-identit&#233;">Une première application, la monade Identité</h3>
<p>Essayons d’appliquer notre <em>makeEvalM</em> dans le cas d’une monade simple, la monade <strong>Identité</strong>. Si tout se passe bien, nous obtiendrons au final un évaluateur de base, comme notre première version <em>eval</em>.</p>
<p>Le type monadique est <em>Id</em>, il enrobe une valeur de n’importe quel type, qu’on pourra extraire avec l’accesseur <em>value</em>.</p>
<pre class="sourceCode"><code class="sourceCode haskell"><span class="kw">data</span> <span class="dt">Id</span> a <span class="fu">=</span> <span class="dt">Id</span> {<span class="ot"> value </span><span class="ot">::</span> a }</code></pre>
<p>On spécifie que <em>Id</em> est un type monadique en fournissant les deux fonctions requises. Ici, <em>return</em> enrobe simplement avec Id, et <em>bind m k</em> applique <em>k</em> à la valeur de <em>m</em>.</p>
<pre class="sourceCode"><code class="sourceCode haskell"><span class="kw">instance</span> <span class="kw">Monad</span> <span class="dt">Id</span> <span class="kw">where</span><br />  <span class="fu">return</span> <span class="fu">=</span> <span class="dt">Id</span><br />  m <span class="fu">&gt;&gt;=</span> k <span class="fu">=</span> k <span class="fu">$</span> value m</code></pre>
<p>Maintenant que nous avons défini notre type monadique et ses deux fonctions, nous pouvons construire notre évaluateur monadique.</p>
<pre class="sourceCode"><code class="sourceCode haskell"><span class="ot">evalId </span><span class="ot">::</span> <span class="dt">Term</span> <span class="ot">-&gt;</span> <span class="dt">Id</span> <span class="dt">Int</span><br />evalId <span class="fu">=</span> makeEvalM divId <span class="kw">where</span><br /><span class="ot">  divId </span><span class="ot">::</span> <span class="dt">Int</span> <span class="ot">-&gt;</span> <span class="dt">Int</span> <span class="ot">-&gt;</span> <span class="dt">Id</span> <span class="dt">Int</span><br />  divId a b <span class="fu">=</span> <span class="fu">return</span> <span class="fu">$</span> <span class="fu">div</span> a b <span class="co">-- &#233;quivalent &#224; Id $ div a b</span></code></pre>
<p>Si on appelle <em>value $ evalId expr1</em>, on obtient <em>4</em> : tout va bien !</p>
<h3 id="une-application-utile-la-monade-failable">Une application utile, la monade Failable</h3>
<p>Passons à une monade plus utile, que nous nommerons <em>Failable</em>, et qui représente le succès ou l’échec d’un calcul de type <em>a</em>. En cas de succès, on construira <em>Ok a</em>, et en cas d’échec, on construire <em>Failed “Motif de l’erreur”</em>. Oui, vous reconnaissez peut-être ici le principe des <strong>exceptions</strong>. Sauf que dans notre cas, le contrôle d’exécution n’est pas interrompu, et le type de retour est explicite, permettant une vérification statique complète des appels, donc un code beaucoup plus sûr et rapide.</p>
<pre class="sourceCode"><code class="sourceCode haskell"><span class="kw">data</span> <span class="dt">Failable</span> a <span class="fu">=</span> <span class="dt">Ok</span> a <span class="fu">|</span> <span class="dt">Failed</span> <span class="dt">String</span> <span class="kw">deriving</span> <span class="kw">Show</span><br /><span class="co">-- deriving Show permet d'afficher cet objet et son contenu</span></code></pre>
<p>On spécifie ensuite le comportement monadique de notre type avec <em>return</em> et <em>&gt;&gt;=</em>. En l’occurrence, si le calcul précédent est <em>Ok</em>, on poursuit avec sa valeur, sinon on s’arrête et on renvoie le motif de l’erreur.</p>
<pre class="sourceCode"><code class="sourceCode haskell"><span class="kw">instance</span> <span class="kw">Monad</span> <span class="dt">Failable</span> <span class="kw">where</span><br />  <span class="fu">return</span> <span class="fu">=</span> <span class="dt">Ok</span><br />  m <span class="fu">&gt;&gt;=</span> k <span class="fu">=</span> <span class="kw">case</span> m <span class="kw">of</span> { <span class="dt">Ok</span> v <span class="ot">-&gt;</span> k v<br />                      ; <span class="dt">Failed</span> s <span class="ot">-&gt;</span> <span class="dt">Failed</span> s }</code></pre>
<p>Dernière étape pour cette monade <em>Failable</em>, on construit notre évaluateur. Vous l’aurez probablement deviné, notre objectif ici de composer un nouvel évaluateur capable de prendre en compte le cas d’une division par 0. La définition est toute simple, si on divise par zéro, on construit l’erreur, sinon on construit le résultat.</p>
<pre class="sourceCode"><code class="sourceCode haskell"><span class="ot">evalFailable </span><span class="ot">::</span> <span class="dt">Term</span> <span class="ot">-&gt;</span> <span class="dt">Failable</span> <span class="dt">Int</span><br />evalFailable <span class="fu">=</span> makeEvalM divFailable <span class="kw">where</span><br /><span class="ot">  divFailable </span><span class="ot">::</span> <span class="dt">Int</span> <span class="ot">-&gt;</span> <span class="dt">Int</span> <span class="ot">-&gt;</span> <span class="dt">Failable</span> <span class="dt">Int</span><br />  divFailable a b <span class="fu">=</span> <span class="kw">case</span> b <span class="kw">of</span> { <span class="dv">0</span> <span class="ot">-&gt;</span> <span class="dt">Failed</span> <span class="st">&quot;Division par z&#233;ro&quot;</span><br />                              ; x <span class="ot">-&gt;</span> <span class="dt">Ok</span> <span class="fu">$</span> <span class="fu">div</span> a x }</code></pre>
<p>Si on teste <em>evalFailable expr1</em>, on obtient <em>Ok 4</em>, alors que si l’on teste <em>evalFailable expr2</em>, on obtient <em>Failed “Division par zéro”</em>. Parfait, en une dizaine de lignes nous venons de rendre le système des exceptions complètement caduc. Continuons !</p>
<h3 id="tenir-un-journal-dactivit&#233;-avec-la-monade-logger">Tenir un journal d’activité avec la monade Logger</h3>
<p>Imaginons maintenant que nous souhaitons un journal des activités de divisions de notre évaluateur. En quelque sorte, nous voulons conserver une trace des divisions, ainsi que des opérandes, pour les afficher dans un terminal, ou simplement pour les consulter plus tard.</p>
<p>Nous définissons notre type polymorphique paramétré <em>Logger o r</em>, composé d’un log de type <em>o</em> et d’un résultat de type <em>r</em>.</p>
<p>Nous spécifions le comportement monadique, avec une hypothèse particulière sur le type <em>o</em>, que l’on souhaite être un monoïde pour pouvoir composer le log de façon abstraite. Ceci n’a rien à voir avec les monades, mais nous permet simplement de gagner en généricité sur la définition de la monade.</p>
<p>Ici, le comportement de <em>return</em> est d’initialiser un logger, avec l’élément neutre du monoïde comme log initial. Celui de <em>bind m k</em> est d’executer <em>m</em>, en extrayant le log <em>o1</em> et la valeur <em>a</em>, puis d’exécuter <em>k a</em> en extrayant le log <em>o2</em> et la valeur b. Ensuite, il compose <em>o1</em> et <em>o2</em> avec l’opération du monoïde, et finalement retourne le log composé ainsi que la valeur résultante.</p>
<pre class="sourceCode"><code class="sourceCode haskell"><span class="kw">import</span> <span class="dt">Data.Monoid</span><br /><br /><span class="kw">data</span> <span class="dt">Logger</span> o r <span class="fu">=</span> <span class="dt">Logger</span> {<span class="ot"> output </span><span class="ot">::</span> o<br />                         ,<span class="ot"> result </span><span class="ot">::</span> r } <span class="kw">deriving</span> <span class="kw">Show</span><br /><br /><span class="kw">instance</span> (<span class="dt">Monoid</span> o) <span class="ot">=&gt;</span> <span class="kw">Monad</span> (<span class="dt">Logger</span> o) <span class="kw">where</span><br />  <span class="fu">return</span> e <span class="fu">=</span> <span class="dt">Logger</span> mempty e<br />  m <span class="fu">&gt;&gt;=</span> k <span class="fu">=</span> <span class="kw">let</span> (<span class="dt">Logger</span> o1 a) <span class="fu">=</span> m<br />                (<span class="dt">Logger</span> o2 b) <span class="fu">=</span> k a<br />                out <span class="fu">=</span> mappend o1 o2 <span class="kw">in</span><br />            <span class="dt">Logger</span> out b</code></pre>
<p>Première application de cette monade, très simple, pour compter le nombre de divisions qui ont lieu dans l’évaluation. Pour cela, il suffit de faire la division et de renvoyer le résultat, accompagné de <em>(Sum 1)</em>, qui forme le monoïde <em>(Sum 1, 0, +)</em>.</p>
<pre class="sourceCode"><code class="sourceCode haskell"><span class="ot">evalCount </span><span class="ot">::</span> <span class="dt">Term</span> <span class="ot">-&gt;</span> <span class="dt">Logger</span> (<span class="dt">Sum</span> <span class="dt">Int</span>) <span class="dt">Int</span><br />evalCount <span class="fu">=</span> makeEvalM divCount <span class="kw">where</span><br /><span class="ot">  divCount </span><span class="ot">::</span> <span class="dt">Int</span> <span class="ot">-&gt;</span> <span class="dt">Int</span> <span class="ot">-&gt;</span> <span class="dt">Logger</span> (<span class="dt">Sum</span> <span class="dt">Int</span>) <span class="dt">Int</span><br />  divCount a b <span class="fu">=</span> <span class="dt">Logger</span> (<span class="dt">Sum</span> <span class="dv">1</span>) (<span class="fu">div</span> a b)</code></pre>
<p>Dans notre cas, <em>output (evalCount expr1)</em> renvoie <em>2</em>, ce qui est bien le nombre de divisions qui ont eu lieu.</p>
<p>Autre utilisation classique, la tenue d’un journal d’activité. <em>(String, “”, ++)</em> est un monoïde, nous l’utiliserons donc pour ce journal. Ici, notre <em>divLogger</em> fait la division, et tient son journal. Il retourne simplement les deux, dans un objet *Logger.</p>
<pre class="sourceCode"><code class="sourceCode haskell"><span class="ot">evalLogger </span><span class="ot">::</span> <span class="dt">Term</span> <span class="ot">-&gt;</span> <span class="dt">Logger</span> <span class="dt">String</span> <span class="dt">Int</span><br />evalLogger <span class="fu">=</span> makeEvalM divLogger <span class="kw">where</span><br /><span class="ot">  divLogger </span><span class="ot">::</span> <span class="dt">Int</span> <span class="ot">-&gt;</span> <span class="dt">Int</span> <span class="ot">-&gt;</span> <span class="dt">Logger</span> <span class="dt">String</span> <span class="dt">Int</span><br />  divLogger a b <span class="fu">=</span> <br />    <span class="kw">let</span> r <span class="fu">=</span> <span class="fu">div</span> a b<br />        out <span class="fu">=</span> <span class="fu">concat</span> [<span class="st">&quot;Division : &quot;</span>,<br />                      <span class="fu">show</span> a, <span class="st">&quot; / &quot;</span>, <span class="fu">show</span> b,<br />                       <span class="st">&quot; = &quot;</span>, <span class="fu">show</span> r, <span class="st">&quot;\n&quot;</span>] <br />    <span class="kw">in</span> <span class="dt">Logger</span> out r</code></pre>
<p>Si on évalue <em>output $ evalLogger expr1</em>, on obtient :</p>
<ul>
<li>Division : 10 / 2 = 5</li>
<li>Division : 20 / 5 = 4</li>
</ul>
<p>ce qui est ce que nous souhaitions. On peut également accèder au résultat en direct avec <em>result $ evalLogger expr1</em> qui renvoie tout simplement <em>4</em>.</p>
<h1 id="conclusion">Conclusion</h1>
<p>Nous avons vu ici un petit exemple d’application des monades en Haskell. Le concept des monades étant très vaste, elles ne sont pas limitées à la construction d’évaluateurs ni aux entrées sorties, vous pourrez donc trouver de nombreux autres exemples d’applications, sans rapport direct avec ce que nous avons vu ici, si ce n’est la définition de fonctions monadiques composables.</p>
<p>À Demotera, nous utilisons actuellement <a href="http://snapframework.com/">Snap</a>, un serveur HTTP haute performance, écrit en Haskell et proposant de nombreuses constructions monadiques pour le parser et pour le contrôle d’execution. À en juger les <a href="http://snapframework.com/benchmarks">performances</a> et la facilité d’utilisation (nous faisons un proxy authentifiant avec), il semble que la programmation fonctionnelle pure s’impose comme une alternative sérieuse aux traditionnels langages non-purs.</p>
<p>Qu’en pensez-vous ?</p>]]></description>
    <pubDate>Thu, 28 Oct 2010 00:00:00 UT</pubDate>
    <guid>http://blog.demotera.com/published/2010-10-28-Les-Monades-Dans-La-Programmation-Fonctionnelle.html</guid>
</item>
<item>
    <title>Quizz : construire un arbre à partir d’une liste (et vice-versa)</title>
    <link>http://blog.demotera.com/published/2010-10-05-Build-a-tree-from-a-list.html</link>
    <description><![CDATA[<p>L‘objet de ce quizz est un petit problème d’algorithmique, qui nous a occupé un bon moment pendant que nous mettions en place la table des matières automatique dans le module Wiki d’<a href="http://www.atikteam.com">AtikTeam</a>. Voici comment le problème se présente.</p>
<p>Vous disposez d’un document HTML, pour lequel vous souhaitez construire une table des matières. La première chose à faire est bien entendu d’extraire les titres, disons simplement H1, H2 et H3. Vous sortez votre parser de HTML préféré, et vous le réglez pour qu’il vous extraie la liste dfe ces titres, dans l’ordre d’apparition bien sûr, ce qui n’était pas une mince affaire avec notre librairie <a href="http://github.com/hpricot/hpricot">HPricot</a>. Après avoir inséré un élément « racine » en tête de liste, on obtient la liste suivante :</p>
<pre><code>[ ( 0 , &quot;root&quot;),
  ( 1 , &quot;Titre 1&quot;),
  ( 2 , &quot;Titre 1.1&quot;),
  ( 2 , &quot;Titre 1.2&quot;),
  ( 3 , &quot;Titre 1.2.1&quot;),
  ( 2 , &quot;Titre 1.3&quot;),
  ( 1 , &quot;Titre 2&quot;) ]
</code></pre>
<p>Le rôle de l’élément racine est simplement de garantir que tous les éléments de la queue de la liste sont d’un niveau inférieur, ce qui fait de cette tête de liste un candidat idéal pour constituer la racine de l’arbre. Ensuite viennent les vrais titres, il s’agit des couples ( niveau de titre , texte du titre ). Bien qu’elle reflète une hiérarchie, cette liste est terriblement plate. Ainsi l’a voulu le HTML. Or justement, il se trouve que nous aurions bien besoin de manipuler cette structure de donnée sous forme d’arbre, comme illustré ci-dessous.</p>
<pre><code>root --- Titre 1
      |  |- Titre 1.1
      |  |- Titre 1.2
      |  |   \- Titre 1.2.1
      |  \- Titre 1.3
      \- Titre 2
</code></pre>
<p>Une telle structure nous permettrait en particulier de générer la table des matières de façon récursive, ce qui ferait très plaisir à notre responsable CSS.</p>
<p>Le problème peut donc être énoncé ainsi : « À partir d’une structure de données séquentielle mentionnant un niveau de profondeur, comment construire une structure de donnée arborescente reflétant la hiérarchie entre les éléments ?».</p>
<p>Nous appelerons cette fonction list2tree. Comme apéritif, je vous invite à spécifier les types de données concernés :</p>
<ul>
<li>couple ( profondeur , nom )</li>
<li>liste plate des éléments</li>
<li>arbre récursif des éléments</li>
<li>list2tree</li>
<li>tree2list</li>
</ul>
<p>Pour l’entrée, je vous propose de définir la fonction tree2list, inverse de notre problème, c’est à dire celle qui part de l’arbre pour produire la liste plate.</p>
<p>Enfin, vous pourrez attaquer le plat de résistance, qui est la définition de la fonction list2tree qui transforme la liste en arbre.</p>
<p>Le dessert est de vérifier sur quelques exemples que la composition de ces deux fonctions est une identité.</p>
<pre><code>tree2list o list2tree == id
</code></pre>
<p>À vous de jouer.</p>
<h2 id="notre-solution-mise-en-ligne-le-lundi-11-octobre-2010">Notre solution (mise en ligne le Lundi 11 Octobre 2010)</h2>
<p>Il est temps de partager notre solution, basée sur un traitement récursif de la liste, et n’utilisant pas de variable. Voici la description de la procédure :</p>
<ul>
<li>on prend d’un côté la <em>tête</em> de la liste, de l’autre sa <em>queue</em>,</li>
<li>on lit le <em>niveau</em> de la <em>tête</em>,</li>
<li>on coupe la <em>queue</em> en deux, au point où le niveau devient inférieur ou égal au <em>niveau</em> de la <em>tête</em>. La première partie constituera les <em>enfants</em>, la seconde partie les <em>frères</em>,</li>
<li>on construit l’arbre avec la <em>tête</em> et les <em>enfants</em> transformés à leur tour en arbres (récursion), puis on traite les <em>frères</em> (récursion).</li>
</ul>
<p>En Haskell, la fonction qui coupe une liste en deux au point d’invalidation d’un prédicat s’appelle <em>span</em>, elle fait partie du <a href="http://www.haskell.org/onlinereport/standard-prelude.html:">Prelude</a>. Nous pouvons donc facilement écrire notre fonction :</p>
<pre class="sourceCode"><code class="sourceCode haskell"><span class="co">-- d&#233;finition du type abstrait de l'arbre r&#233;cursif &#224; N fils</span><br /><span class="kw">data</span> <span class="dt">TreeN</span> a <span class="fu">=</span> <span class="dt">TreeN</span> a [<span class="dt">TreeN</span> a] <span class="kw">deriving</span> <span class="kw">Show</span> <br /><br /><span class="ot">list2tree </span><span class="ot">::</span> [(<span class="dt">Integer</span>, <span class="dt">String</span>)] <span class="ot">-&gt;</span> <span class="dt">TreeN</span> <span class="dt">String</span><br />list2tree ((rl,rt)<span class="fu">:</span>es) <span class="fu">=</span> <span class="dt">TreeN</span> rt (list2tree' es rl) <span class="kw">where</span><br />   list2tree' [] _ <span class="fu">=</span> []<br />   list2tree' ((level,text)<span class="fu">:</span>xs) cl <span class="fu">=</span><br />     <span class="kw">let</span> (children_list,brothers_list) <span class="fu">=</span> <span class="fu">span</span> (\ (l,_) <span class="ot">-&gt;</span> level <span class="fu">&lt;</span> l) xs<br />         children <span class="fu">=</span> list2tree' children_list (cl <span class="fu">+</span> <span class="dv">1</span>)<br />         brothers <span class="fu">=</span> list2tree' brothers_list cl <span class="kw">in</span><br />     (<span class="dt">TreeN</span> text children) <span class="fu">:</span> brothers</code></pre>
<p>AtikTeam étant codé en Ruby On Rails, nous avons traduit notre fonction. En Ruby, il n’y a pas de véritable type Liste, et la fonction span ne fait pas partie de la librairie standard, nous en avons donc fait une implémentation, en ajoutant quelques méthodes de listes pour Array.</p>
<pre class="sourceCode"><code class="sourceCode ruby"><span class="kw">class</span> <span class="dt">Array</span><br />  <span class="kw">class</span> <span class="dt">NoHead</span>; <span class="kw">end</span><br /><br />  <span class="kw">def</span> head; empty? ? <span class="dt">NoHead</span> : first; <span class="kw">end</span><br />  <span class="kw">def</span> tail; size &gt; <span class="dv">1</span> ? <span class="dv">self</span>[<span class="dv">1</span>..-<span class="dv">1</span>] : []; <span class="kw">end</span><br /><br />  <span class="kw">def</span> span(&amp;block)<br />    <span class="kw">if</span> empty? <span class="kw">then</span> [[],[]]<br />    <span class="kw">elsif</span> (<span class="kw">yield</span> head) <span class="kw">then</span><br />      a,b = tail.span(&amp;block)<br />      [a.unshift(head),b]<br />    <span class="kw">else</span> [[], <span class="dv">self</span>]<br />    <span class="kw">end</span><br />  <span class="kw">end</span><br /><span class="kw">end</span></code></pre>
<p>Ce qui nous a permis ensuite de définir notre fonction list2tree.</p>
<pre class="sourceCode"><code class="sourceCode ruby"><span class="kw">def</span> list_to_tree(list, level)<br />  <span class="kw">return</span> [] <span class="kw">if</span> list.nil? <span class="kw">or</span> list.empty?<br />  pl,pa,pc = list.head<br />  subtrees, rest = list.tail.span{|l,a,c| pl&lt;l}<br />  [<span class="dt">TreeN</span>.new(list.head, list_to_tree(subtrees,level<span class="dv">+1</span>))] + list_to_tree(rest, level)<br /><span class="kw">end</span></code></pre>
<p>Et voila pour notre proposition. Vos solutions sont toujours les bienvenues dans les commentaires !</p>]]></description>
    <pubDate>Tue, 05 Oct 2010 00:00:00 UT</pubDate>
    <guid>http://blog.demotera.com/published/2010-10-05-Build-a-tree-from-a-list.html</guid>
</item>
<item>
    <title>Numéroter avec CSS</title>
    <link>http://blog.demotera.com/published/2010-09-27-Numerotation-en-css.html</link>
    <description><![CDATA[<p>Les utilisateurs d’<a href="http://www.atikteam.com">AtikTeam</a> souhaitaient pouvoir numéroter automatiquement les titres des pages wiki. Voici comment nous avons pu répondre rapidement à leur demande en exploitant les standards du web.</p>
<p>Depuis la version 2, <a href="http://www.w3.org/Style/CSS/">CSS</a> permet d’insérer du contenu dans un document lors de son rendu. CSS intègre aussi un mécanisme de conteur. Ces deux fonctionalités permettent par exemple d’afficher la numérotation des titres en préservant la stricte séparation du fond et de la forme du document.</p>
<p>La feuille de style suivante numérote les titres <code>h1</code>.</p>
<pre class="sourceCode"><code class="sourceCode css">body<span class="kw">{counter-reset:</span> h1<span class="kw">;}</span><br />h1<span class="dv">:before</span> <span class="kw">{</span><br />  <span class="kw">content:</span> <span class="dt">counter(</span>h1<span class="dt">)</span> <span class="st">&quot;  &quot;</span><span class="kw">;</span><br />  <span class="kw">counter-increment:</span> h1<span class="kw">;</span><br /><span class="kw">}</span></code></pre>
<p>Pour avoir une numérotation sur trois niveaux de titre, il suffit de compléter la feuille de style.</p>
<pre class="sourceCode"><code class="sourceCode css">body<span class="kw">{counter-reset:</span> h1 h2 h3<span class="kw">;}</span><br />h1<span class="dv">:before</span> <span class="kw">{</span><br />  <span class="kw">content:</span> <span class="dt">counter(</span>h1<span class="dt">)</span> <span class="st">&quot;  &quot;</span><span class="kw">;</span><br />  <span class="kw">counter-increment:</span> h1<span class="kw">;</span><br /><span class="kw">}</span><br />h2<span class="dv">:before</span> <span class="kw">{</span><br />  <span class="kw">content:</span> <span class="dt">counter(</span>h1<span class="dt">)</span> <span class="st">&quot;.&quot;</span> <span class="dt">counter(</span>h2<span class="dt">)</span> <span class="st">&quot;  &quot;</span><span class="kw">;</span><br />  <span class="kw">counter-increment:</span> h2<span class="kw">;</span><br /><span class="kw">}</span><br />h3<span class="dv">:before</span> <span class="kw">{</span><br />  <span class="kw">content:</span> <span class="dt">counter(</span>h1<span class="dt">)</span> <span class="st">&quot;.&quot;</span> <span class="dt">counter(</span>h2<span class="dt">)</span> <span class="st">&quot;.&quot;</span> <span class="dt">counter(</span>h3<span class="dt">)</span> <span class="st">&quot;  &quot;</span><span class="kw">;</span><br />  <span class="kw">counter-increment:</span> h3<span class="kw">;</span><br /><span class="kw">}</span><br />h1 <span class="kw">{</span><br />  <span class="kw">counter-reset:</span> h2<span class="kw">;</span><br /><span class="kw">}</span><br />h2 <span class="kw">{</span><br />  <span class="kw">counter-reset:</span> h3<span class="kw">;</span><br /><span class="kw">}</span><br />h1<span class="fl">.unnumbered</span>, h2<span class="fl">.unnumbered</span> <span class="kw">{</span><br />  <span class="kw">counter-reset:</span> <span class="dt">none</span><span class="kw">;</span><br /><span class="kw">}</span><br />h1<span class="fl">.unnumbered</span><span class="dv">:before</span>, <br />h2<span class="fl">.unnumbered</span><span class="dv">:before</span>,<br />h3<span class="fl">.unnumbered</span><span class="dv">:before</span><span class="kw">{</span><br />  <span class="kw">content:</span> <span class="dt">none</span><span class="kw">;</span><br />  <span class="kw">counter-increment:</span> <span class="dt">none</span><span class="kw">;</span><br /><span class="kw">}</span></code></pre>
<p>Ce qui donne le résultat suivant.</p>
<div class="blog-img">
<img src="/pictures/numerotation_css.png" />
</div>

<p>L’attribut <code>content</code> permet de réaliser plein d’autres choses. Par exemple lister les énumérations à la française avec des tirets au lieu des puces américaines.</p>
<pre class="sourceCode"><code class="sourceCode css">ul li <span class="kw">{</span><br />  <span class="kw">display:</span> <span class="dt">block</span><span class="kw">;</span> <br />  <span class="kw">padding-left:</span><span class="dt">3em</span><span class="kw">;</span><br />  <span class="kw">position:</span><span class="dt">relative</span><span class="kw">;</span><br /><span class="kw">}</span><br />ul li<span class="dv">:before</span> <span class="kw">{</span> <br />  <span class="kw">content:</span> <span class="st">&quot;\2013&quot;</span><span class="kw">;</span><br />  <span class="kw">position:</span> <span class="dt">absolute</span><span class="kw">;</span> <br />  <span class="kw">left:</span> <span class="dt">1em</span><span class="kw">;</span><br /><span class="kw">}</span></code></pre>
<p>Pour en savoir plus et exploiter au maximum les possibilités de génération de CSS, le <a href="http://www.w3.org/TR/CSS2/generate.html">chapitre 12 des spécifications de CSS 2</a> est à lire absolument. Ces spécifications sont très clairement détaillées et toujours illustrées par des exemples concrets.</p>]]></description>
    <pubDate>Mon, 27 Sep 2010 00:00:00 UT</pubDate>
    <guid>http://blog.demotera.com/published/2010-09-27-Numerotation-en-css.html</guid>
</item>
<item>
    <title>Histoire et concepts essentiels des systèmes de gestion de sources, du local au distribué en passant par le centralisé</title>
    <link>http://blog.demotera.com/published/2010-09-20-Gestion-de-sources-centralisee-vs-decentralisee.html</link>
    <description><![CDATA[<p>Tous les projets logiciels sérieux ont recours à un système de gestion de code source, parfois appelé <a href="http://fr.wikipedia.org/wiki/Logiciel_de_gestion_de_versions">logiciel de gestion de versions</a>. Ces systèmes permettent à une équipe de conduire l’élaboration du code source dans de bonnes conditions de collaboration, de communication et de sécurité. Ce n’est pas un hasard si ces trois notions, fondamentales pour la gestion de projet, sont également au cœur de la plateforme collaborative <a href="http://www.atikteam.com">AtikTeam</a>.</p>
<h2 id="rcs">RCS</h2>
<p>Dans les années 1980 est apparu le premier système de gestion de version, appelé <a href="http://fr.wikipedia.org/wiki/Revision_Control_System">RCS</a>, conçu pour qu’<strong>un</strong> utilisateur puisse contrôler les révisions d’<strong>un</strong> fichier.</p>
<div class="blog-img">
<img src="/pictures/rcs/rcs-model.png" />
<p>
Modèle de RCS : 1 utilisateur — 1 fichier
</p>
</div>


<h2 id="cvs">CVS</h2>
<p>Le concept était important, mais encore inadapté dans le cadre d’un projet logiciel impliquant un arbre de fichiers et toute une équipe projet. C’est pourquoi, au début des années 1990 s’est développé le célèbre <a href="http://fr.wikipedia.org/wiki/Concurrent_Versions_System">CVS</a>, logiciel destiné à permettre à des équipes de développer des projets complets. Techniquement, CVS s’appuie sur son prédécesseur RCS, en lui ajoutant une couche de transmission de fichiers par le réseau, et une autre de gestion de plusieurs fichiers (toutefois indépendants les uns des autres). Voici ce que dit l’auteur original des premières lignes de CVS :</p>
<blockquote>
<p>I created CVS to be able to cooperate with my students, Erik Baalbergen and Maarten Waage, on the ACK (Amsterdam Compiler Kit) C compiler. The three of us had vastly different schedules (one student was a steady 9–5 worker, the other was irregular, and I could work on the project only in the evenings). Their project ran from July 1984 to August 1985. CVS was initially called cmt, for the obvious reason that it allowed us to commit versions independently.</p>
<p>– Dick Grune</p>
</blockquote>
<div class='blog-img'><a class='lightbox' href='/pictures/rcs/cvs-model.png'><img src='/pictures/rcs/cvs-model.png' alt='-' /></a><p class='caption'>Modèle de CVS : Plusieurs utilisateurs — plusieurs fichiers</p></div>
<h2 id="subversion">Subversion</h2>
<p>Le déploiement de CVS a grande échelle a révélé de nombreuses faiblesses dans son modèle :</p>
<ul>
<li>la base de données, simple dossier dans le système de fichiers, n’était pas atomique et présentait donc le risque d’être dans un état non-déterminé ;</li>
<li>le modèle de gestion des collections de fichiers ne pousse pas à considérer l’ensemble du projet comme une seule et même œuvre, et permet donc de suivre indépendamment les modifications de chaque fichier. La conséquence courante est une incohérence dans les versions des fichiers du projet ;</li>
<li>les opérations du système de fichiers ne sont pas versionnées (déplacement, suppression, etc.).</li>
</ul>
<p>C’est précisément pour combler ces lacunes qu’est né en 2000 le projet <a href="http://fr.wikipedia.org/wiki/Subversion_%28logiciel%29">Subversion</a>. Le modèle reste proche de celui de CVS, mais solutionne ses graves limitations, en particulier grâce à :</p>
<ul>
<li>des commits (livraison de modifications) atomiques ;</li>
<li>une notion de projet (composé d’une collection de fichiers) suivi dans sa globalité ;</li>
<li>un suivi des opérations du système de fichiers sans perdre l’historique de chaque élément.</li>
</ul>
<div class='blog-img'><a class='lightbox' href='/pictures/rcs/svn-model.png'><img src='/pictures/rcs/svn-model.png' alt='-' /></a><p class='caption'>Modèle de Subversion : Plusieurs utilisateurs — un projet</p></div>
<p>Aujourd’hui, Subversion est un système de gestion de sources très répandu, mature et intégré à de nombreux outils. En activant le module correspondant, <a href="http://www.atikteam.com">AtikTeam</a> inclut un dépôt Subversion dans le projet, permettant ainsi d’intégrer parfaitement gestion de sources et gestion de projet.</p>
<h2 id="mercurial-et-git">Mercurial et Git</h2>
<p>Si le modèle de Subversion se prête bien aux projets de taille raisonnable, conduits par une équipe organisée dont les responsabilités sont pré-établies, il trouve rapidement ses limites dans le cas de grands projets open-source conduits par des milliers de contributeurs potentiels :</p>
<ul>
<li>le dépôt, <strong>central par conception</strong>, est fortement sollicité et il faut parfois faire la queue pour y envoyer son travail ;</li>
<li>le dépôt central contraint les développeurs à disposer d’une connexion internet pour créer une nouvelle version (par un commit) ;</li>
<li>les branches thématiques, groupées en un unique dépôt, deviennent rapidement trop nombreuses donc difficiles à gérer ;</li>
<li>l’attribution des autorisations pour livrer (commit) est un travail compliqué pour des projets logiciels de plusieurs milliers de développeurs.</li>
</ul>
<p>Face a ce constat sont apparus deux nouveaux outils, très proches par conception, proposant un nouveau modèle <strong>distribué</strong> (décentralisé) pour la collaboration : <a href="http://fr.wikipedia.org/wiki/Git">Git</a> et <a href="http://fr.wikipedia.org/wiki/Mercurial">Mercurial</a>. Dans ce nouveau modèle, il n’y a plus de dépôt central dans lequel livrer, et chaque développeur devient responsable de son propre dépôt personnel. Dans ce dépôt, il peut :</p>
<ul>
<li>livrer son travail, sans que cela ne nécessite de connexion internet, ni d’autorisation particulière, par l’opération <em>commit</em> ;</li>
<li>intégrer le travail de ses collaborateurs, par l’opération <em>pull</em>.</li>
</ul>
<p>Rien de spectaculaire à première vue, pourtant le changement de modèle est radical. On passe d’un système organisé pour que les développeurs <strong>poussent</strong> leur travail dans un unique dépôt commun à un système sans unique dépôt de référence, sans possibilité de <strong>pousser</strong>, mais avec seulement la possibilité de <strong>tirer</strong>, c’est à dire de récupérer le travail d’un collaborateur en l’intégrant au sien. Autrement dit, <strong>l’initiative de l’intégration change de main, passant de celle de l’auteur à celle de l’utilisateur des modifications</strong>. Le déploiement le plus célèbre d’un tel modèle est certainement celui du noyau Linux. En consultant le journal du <a href="http://github.com/mirrors/linux-2.6">dépôt de Linus Torvald</a>, on constate que son activité principale consiste à intégrer le travail de quelques proches collaborateurs, qui font de même avec leurs propres collaborateurs de confiance.</p>
<div class='blog-img'><a class='lightbox' href='/pictures/rcs/hg-model.png'><img src='/pictures/rcs/hg-model.png' alt='-' /></a><p class='caption'>Modèle de Mercurial et Git : un réseau de pairs</p></div>
<h2 id="bilan">Bilan</h2>
<p>Le modèle distribué, dernier né des modèles de gestion de code source, présente de nombreux avantages, au prix d‘une complexité conceptuelle plus élevée. Un outil en ligne de gestion de projets tel qu’<a href="http://www.atikteam.com">AtikTeam</a> fonctionne par conception comme un référentiel de travail pour les équipes des projets, ce qui explique le choix de fournir une intégration avec Subversion.</p>]]></description>
    <pubDate>Mon, 20 Sep 2010 00:00:00 UT</pubDate>
    <guid>http://blog.demotera.com/published/2010-09-20-Gestion-de-sources-centralisee-vs-decentralisee.html</guid>
</item>
<item>
    <title>AtikTeam 7.0 : nouveaux concepts pour la gestion de projet en ligne (CCI Rennes)</title>
    <link>http://blog.demotera.com/published/2010-07-23-atikteam-7-presse-cci.html</link>
    <description><![CDATA[<p>Le journal « <a href="http://www.rennes.cci.fr/">en direct des entreprises</a> » édité par la Chambre de Commerce et d’Industrie de Rennes publie un article sur <a href="http://www.atikteam.com">AtikTeam</a> à l’occasion de la version 7.0, nom de code <a href="http://blog.demotera.com/published/2010-07-20-AtikTeam-gestion-de-projets-atitlan.html">Atitlán</a>.</p>
<p><strong><a href="http://www.rennes.cci.fr/fr/detail-actualite-En-Direct-Des-Entreprises.aspx?ActualiteID=1143">Consultez l’article sur le site de la CCI Rennes Bretagne</a></strong></p>]]></description>
    <pubDate>Fri, 23 Jul 2010 00:00:00 UT</pubDate>
    <guid>http://blog.demotera.com/published/2010-07-23-atikteam-7-presse-cci.html</guid>
</item>
<item>
    <title>Pourquoi la gestion de projet collaborative en ligne ?</title>
    <link>http://blog.demotera.com/published/2010-07-22-gestion-de-projet-pourquoi-atikteam.html</link>
    <description><![CDATA[<p>Les modes de travail évoluent vers la participation à grande échelle d’acteurs autour de projets, portés par une ou plusieurs organisations. Ces organisations et ces acteurs sont par ailleurs souvent répartis géographiquement, et interviennent simultanément sur plusieurs de ces projets multi-sites et multi-structures.</p>
<p>Dans ce contexte, le secret de la réussite tiendra dans le liant : comment faire communiquer régulièrement et efficacement les équipes, comment animer le projet et impliquer les collaborateurs, comment répartir les responsabilités, comment suivre et tenir un planning, comment diffuser l’information, comment capitaliser collectivement la connaissance et les documents, comment réagir à l’imprévu ?</p>
<p>L’email et le téléphone trouvent vite leurs limites, c’est donc pour répondre à tous ces besoins qu’a été conçue la plateforme logicielle spécifiquement destinée à la gestion de projet et à la collaboration en ligne : <a href="http://www.atikteam.com">AtikTeam</a>. Hébergée, intégrée et sécurisée, elle recueille, traite et restitue aux collaborateurs toute l’information souhaitée, 24h/24, 7j/7, de la naissance des projets à leur aboutissement.</p>
<p>Depuis plus de dix-huit mois, petites moyennes et grandes <a href="http://www.atikteam.com/references/accueil">organisations</a> l’utilisent pour des projets internes, comme référentiel de travail, pour matérialiser des partenariats, pour suivre les missions ou encore pour inviter les clients à prendre part au suivi du processus de réalisation.</p>
<p>Et vous, comment gérez-vous vos projets ?</p>]]></description>
    <pubDate>Thu, 22 Jul 2010 00:00:00 UT</pubDate>
    <guid>http://blog.demotera.com/published/2010-07-22-gestion-de-projet-pourquoi-atikteam.html</guid>
</item>
<item>
    <title>AtikTeam Atitlán, une version estivale soignée !</title>
    <link>http://blog.demotera.com/published/2010-07-20-AtikTeam-gestion-de-projets-atitlan.html</link>
    <description><![CDATA[<p><a href="http://www.atikteam.com">AtikTeam</a> est un logiciel en ligne de gestion de projet et de collaboration de groupe. Les deux priorités de la version Atitlán sont <strong>simplicité</strong> et <strong>esthétisme</strong> !</p>
<p>Un petit tour sur la <a href="http://demo.atikteam.com">démonstration</a> sera pour vous le meilleur moyen de découvrir ces améliorations qui agrémenteront votre utilisation à partir de maintenant :</p>
<ul>
<li>envoyez votre photo, elle apparaîtra à côté de vos messages et contributions</li>
<li>de nouvelles icones illustrent les actions</li>
<li>vous pouvez créer des liens wiki vers les annonces</li>
<li>l’aide contextuelle est accessible par une petite languette en bas à droite</li>
<li>l’activité agrège les contributions pour plus de lisibilité</li>
<li>les « types de tâches » se retirent et laissent la place aux tags, mieux intégrés</li>
<li>vous serez prévenu avant de quitter un formulaire partiellement renseigné</li>
<li>les thèmes prennent un sérieux coup de jeune (et de brillantine)</li>
</ul>
<div class='blog-img'><a class='lightbox' href='/pictures/atitlan/apercu.png'><img src='/pictures/atitlan/apercu.png' alt='-' /></a><p class='caption'>L’aperçu du projet offre une présentation synthétique.</p></div>
<div class='blog-img'><a class='lightbox' href='/pictures/atitlan/activite.png'><img src='/pictures/atitlan/activite.png' alt='-' /></a><p class='caption'>L’activité est un journal automatique des interventions des collaborateurs.</p></div>
<div class='blog-img'><a class='lightbox' href='/pictures/atitlan/planning.png'><img src='/pictures/atitlan/planning.png' alt='-' /></a><p class='caption'>La feuille de route permet de planifier et suivre la réalisation.</p></div>
<p><strong><a href="http://demo.atikteam.com">Connectez-vous à la démonstration</a></strong></p>
<p><em>Le lac Atitlán est un lac du sud-ouest du Guatemala, situé à 60 km à l’ouest de la capitale. Considéré comme un des plus beaux lacs au monde, il est bordé par trois volcans (San Pedro, Tolimán et Atitlán qui culmine à 3 537 m) et de nombreuses montagnes.</em></p>]]></description>
    <pubDate>Tue, 20 Jul 2010 00:00:00 UT</pubDate>
    <guid>http://blog.demotera.com/published/2010-07-20-AtikTeam-gestion-de-projets-atitlan.html</guid>
</item>
<item>
    <title>La refonte de l’interface d’AtikTeam progresse</title>
    <link>http://blog.demotera.com/published/2010-07-05-La-refonte-de-l-interface-d-AtikTeam-progresse.html</link>
    <description><![CDATA[<p>La nouvelle apparence d’<a href="http://www.atikteam.com">AtikTeam</a> se précise. L’interface, outre son aspect plus moderne, sera plus cohérente. Les ressource qui composent les projets seront directement identifiables. Par exemple, voici la vue d’une action :</p>
<p>
<a class="lightbox" href="/pictures/atikteam_relooking_2_juillet_2010.png"><img src="/pictures/atikteam_relooking_2_juillet_2010_thumb.png"/></a>
</p>

<p>Pour rendre la plateforme plus vivante, les contributions des collaborateurs seront mises en avant.</p>
<dl>
<dt>Avant :</dt>
<dd><a class="lightbox" href="/pictures/atikteam_relooking_2_juillet_2010_commentaires_avant.png"><img src="/pictures/atikteam_relooking_2_juillet_2010_commentaires_avant_thumb.png"/></a>
</dd>
<dt>Après :</dt>
<dd><a class="lightbox" href="/pictures/atikteam_relooking_2_juillet_2010_commentaires.png"><img src="/pictures/atikteam_relooking_2_juillet_2010_commentaires_thumb.png"/></a>
</dd>
</dl>]]></description>
    <pubDate>Mon, 05 Jul 2010 00:00:00 UT</pubDate>
    <guid>http://blog.demotera.com/published/2010-07-05-La-refonte-de-l-interface-d-AtikTeam-progresse.html</guid>
</item>
<item>
    <title>XeTeX, un TeX un peu plus moderne</title>
    <link>http://blog.demotera.com/published/2010-06-23-LaTeX-utiliser-xetex.html</link>
    <description><![CDATA[<p><a href="http://fr.wikipedia.org/wiki/XeTeX">XeTeX</a> est une variante du compilateur de document <a href="http://fr.wikipedia.org/wiki/TeX">TeX</a>, apportant la gestion de l’<a href="http://fr.wikipedia.org/wiki/Unicode">Unicode</a> et des polices de caractères <a href="http://fr.wikipedia.org/wiki/OpenType">OpenType</a>. La possibilité de taper directement en Unicode dans ses fichiers TeX représente une avancée majeure pour les documents en langue française, la possibilité d’utiliser des polices OpenType étend les possibilités de personnalisation de l’apparence d’un document.</p>
<h2 id="installer-xetex">Installer XeTeX</h2>
<p>Si vous utilisez la distribution <a href="http://fr.wikipedia.org/wiki/TeX_Live">TeXLive</a>, vous y trouverez un paquet <em>texlive-xetex</em>. La plupart des extensions de LaTeX fonctionneront correctement avec XeTeX, moyennant parfois quelques réglages mineurs.</p>
<p>Pour une distribution basée sur <a href="http://fr.wikipedia.org/wiki/Advanced_Packaging_Tool">APT</a> (debian et dérivés), la commande suivante installera XeTeX et XeLaTeX :</p>
<pre><code># en root
aptitude install texlive-xetex
</code></pre>
<h2 id="adapter-les-en-t&#234;tes">Adapter les en-têtes</h2>
<p>XeTeX est installé, vous allez compiler un premier document avec. Ouvrez votre éditeur, créez un nouveau document LaTeX, et assurez-vous de travailler en Unicode, typiquement UTF–8. Voici à quoi ressemble un document XeLaTeX minimal :</p>
<pre class="sourceCode"><code class="sourceCode latex"><span class="kw">\documentclass</span>[a4paper]{article}<br /><br /><span class="co">% La ligne suivante est obligatoire, et ne fonctionnera qu'avec XeLaTeX</span><br /><span class="kw">\usepackage</span>{fontspec}<br /><span class="co">% (optionnel) vous pouvez choisir une police OpenType de votre choix</span><br /><span class="kw">\setmainfont</span>{DejaVu Sans}<br /><br /><span class="co">% Notez le param&#232;tre additionnel 'xetex' pour hyperref</span><br /><span class="kw">\usepackage</span>[pdfauthor={Paul Rivier},xetex]{hyperref}<br /><br /><span class="kw">\title</span>{Mon premier document XeTeX}<br /><span class="kw">\author</span>{Paul Rivier}<br /><br />\begin{<span class="fu">document</span>}<br /><br /><span class="kw">\maketitle</span><br /><br /><span class="co">% La fl&#232;che est le caract&#232;re unicode &#171;&#160;Rightwards Arrow&#160;&#187;</span><br />\section{<span class="kw"> LaTeX &#8594; XeLaTeX </span>}<br /><br /><span class="co">% Les points de suspension sont en fait une ellipse en un seul caract&#232;re</span><br />XeTeX est un compilateur <span class="kw">\TeX</span>{} un peu plus moderne &#8230;<br /><br />\end{<span class="fu">document</span>}</code></pre>
<p>Pour le compiler, tapez simplement <em>xelatex</em> à la place de <em>pdflatex</em> :</p>
<pre><code>xelatex monfichier.tex
</code></pre>
<p>Après avoir essayé de nombreuses polices alternatives, je suis revenu à la police TeX de base, que je trouve la plus esthétique, et qui couvre une large palette de caractères. Donc j’utilise la ligne <em>fontspec</em> mais pas la <em>setmainfont</em>.</p>
<p>Le passage à l’Unicode ouvre la voie à de nombreuses améliorations dans le fonctionnement de LaTeX, par exemple dans les césures des mots accentués. Le paquet <a href="http://tug.ctan.org/tex-archive/macros/xetex/latex/polyglossia/">Polyglossia</a> est un remplaçant moderne de Babel, qui ne présente pas de difficulté pour les césures des mots accentués.</p>
<p>Note : <a href="http://en.wikipedia.org/wiki/LuaTeX">LuaTeX</a> permet également l’utilisation de fichiers Unicode.</p>]]></description>
    <pubDate>Wed, 23 Jun 2010 00:00:00 UT</pubDate>
    <guid>http://blog.demotera.com/published/2010-06-23-LaTeX-utiliser-xetex.html</guid>
</item>
<item>
    <title>Faites pousser un arbre local TeX</title>
    <link>http://blog.demotera.com/published/2010-06-23-LaTeX-laissez-pousser-votre-arbre.html</link>
    <description><![CDATA[<p><a href="http://fr.wikipedia.org/wiki/LaTeX">LaTeX</a> est un vaste système dans lequel on se perd aisément. Pour ne pas se noyer dans cet océan de paquets, le pratiquant devra se construire petit à petit son embarcation, puis la consolider et l’enrichir au fil de son voyage. Cette attitude de capitalisation des connaissances constitue le remède le plus efficace contre l’improductivité et la frustration en LaTeX.</p>
<h2 id="o&#249;-accumuler-les-connaissances">Où accumuler les connaissances ?</h2>
<p>Au début, vous pouvez simplement copier-coller systématiquement vos en-têtes LaTeX de document en document, en enrichissant petit à petit le contenu. L’inconvénient est que ça entraîne beaucoup de duplication de code et de pollution visuelle au début de votre fichier. La pollution du document peut être évitée en mettant les en-têtes dans un fichier séparé du contenu, et en l’incluant via la commande <strong>\input</strong>. Mais où mettre ce fichier d’en-tête ? Vous pouvez le dupliquer de dossier en dossier pour chacun de vos documents, ou vous pouvez le conserver à un seul endroit et y faire référence par un chemin absolu.</p>
<p>En fait, le système LaTeX a prévu ce problème et propose une solution standard, que nous allons découvrir ici.</p>
<h2 id="larbre-texmf">L’arbre texmf</h2>
<p>Chaque utilisateur peut, dans son dossier personnel, placer un dossier <em>texmf</em> qui sera son « arbre local TeX ». Le contenu de ce dossier sera automatiquement reconnu par LaTeX et directement utilisable dans tous vos documents. Il y a plusieurs usages pour un tel arbre, et nous allons voir quelques exemples. Attention, pour pouvoir utiliser l’arbre texmf, il faudra l’indexer, la procédure est expliquée plus loin.</p>
<p><strong>Les images</strong></p>
<p>S’il vous arrive souvent d’utiliser un jeu d’images pour vos documents, vous pouvez les placer dans l’arbre. Vous pourrez ensuite y faire référence dans votre document par un simple nom de fichier. Par exemple, placez vos logos dans <em>~/texmf/tex/latex/pictures/logos</em>.</p>
<p><strong>Les paquets</strong></p>
<p>Vous pouvez installer manuellement des paquets LaTeX dans votre arbre local pour les utiliser par la suite dans vos documents. Pour cela, suivez <a href="http://en.wikibooks.org/wiki/LaTeX/Packages/Installing_Extra_Packages">ces instructions</a>.</p>
<p>Vous pouvez également créer vos propres paquets pour y mettre vos fonctions préférées. Par exemple, on va créer une commande spéciale pour les adresses internet : <em>\simpleLink</em>. Elle prendra un seul argument, l’adresse, et l’insérera dans le document en la rendant cliquable. Dans <em>~/texmf/tex/latex/packages/my-urls.sty</em>, insérez :</p>
<pre class="sourceCode"><code class="sourceCode latex"><span class="co">%%% URLS</span><br /><span class="co">%%%</span><br /><span class="co">%%% Utilisation&#160;: \simplelink{www.foo.bar}</span><br /><br /><span class="kw">\ProvidesPackage</span>{my-urls}<br /><br /><span class="kw">\newcommand</span>{\simplelink}[1]{<span class="co">%</span><br />  \href{http://#1}{#1}}</code></pre>
<p>Voila ! Vous venez de faire votre paquet, vous pourrez l’inclure dans vos documents et classes via <em>\usepackage{my-urls}</em> pour accéder à votre fonction <em>\simpleLink</em>.</p>
<p><strong>Les classes</strong></p>
<p>Essayez toujours de faire vos documents avec classe ! N’hésitez pas à créer vos propres classes pour y placer les en-têtes que vous utilisez systématiquement. Par exemple, ouvrez <em>~/texmf/tex/latex/classes/mon-article.cls</em> dans votre éditeur pour y placer ce qui suit.</p>
<pre class="sourceCode"><code class="sourceCode latex"><span class="kw">\NeedsTeXFormat</span>{LaTeX2e}[2003/12/01]<br /><span class="kw">\ProvidesClass</span>{mon-article}<br /><span class="co">%              [2010 - Classe XeLaTeX pour rapports courts]</span><br /><br /><span class="kw">\ProcessOptions\relax</span><br /><br /><span class="co">% vous pouvez d&#233;river d'une classe existante</span><br /><span class="kw">\LoadClassWithOptions</span>{article}<br /><br /><span class="kw">\usepackage</span>{fontspec}<br /><span class="kw">\usepackage</span>[french]{babel} <span class="co">% \og \fg \nombre{1234} </span><br /><span class="kw">\usepackage</span>[xetex]{hyperref}<br /><br /><span class="kw">\setpapersize</span>{A4}<br /><br /><span class="kw">\newcommand</span>{\todo}[1]{\marginpar{{\color{red}#1}}}<br /><br /><span class="kw">\newenvironment</span>{vcenterpage}<br />{<span class="kw">\vspace</span>*{<span class="kw">\fill</span>}}<br />{<span class="kw">\vspace</span>*{<span class="kw">\fill</span>}<span class="kw">\par</span>}<br /><br /><span class="kw">\setlength</span>{<span class="kw">\parindent</span>}{1em}<br /><span class="kw">\setlength</span>{<span class="kw">\parskip</span>}{.15em}<br /><span class="kw">\widowpenalty</span>=500<br /><span class="kw">\clubpenalty</span>=500<br /><span class="kw">\raggedbottom</span></code></pre>
<p>Voila, vous venez de créer votre classe LaTeX, que vous pouvez utiliser via <em>\documentclass{mon-article}</em>.</p>
<h2 id="indexation-de-larbre">Indexation de l’arbre</h2>
<p>L’indexation de l’arbre est une opération manuelle et obligatoire dès que vous en modifiez le contenu. Heureusement, elle est simple et rapide :</p>
<pre><code>texhash ~/texmf
</code></pre>
<p>Votre arbre est maintenant prêt à être utilisé ! Vous pouvez y créer vos paquets, vos classes, et y mettre tout contenu dont vous avez régulièrement besoin pour vos documents.</p>]]></description>
    <pubDate>Wed, 23 Jun 2010 00:00:00 UT</pubDate>
    <guid>http://blog.demotera.com/published/2010-06-23-LaTeX-laissez-pousser-votre-arbre.html</guid>
</item>
<item>
    <title>Quelques astuces pour déployer OpenLdap</title>
    <link>http://blog.demotera.com/published/2010-06-22-Quelques-astuces-pour-deployer-openldap.html</link>
    <description><![CDATA[<p>Voici une compilation d’extraits de configuration ou de petites astuces pour <a href="http://www.openldap.org">OpenLDAP</a>. OpenLDAP est un serveur d’annuaire LDAP sous licence libre <a href="http://www.gnu.org/licenses/license-list.fr.html">compatible GNU</a> utilisé pour l’identification des utilisateurs de la plateforme collaborative <a href="http://www.atikteam.com" title="Plateforme
collaborative AtikTeam">AtikTeam</a>.</p>
<h2 id="configuration-de-ssltls">Configuration de SSL/TLS</h2>
<p>Le protocole LDAP accepte le chiffrement par SSL en utilisant soit le protocole <code>LDAPS</code> sur un port dédié, soit la commande <code>STARTTLS</code>. Le support du chiffrement SSL étant variable selon les clients LDAP, il est important de maintenir plusieurs canaux d’accès au serveur. Voici une règle d’accès à placer en premier dans votre configuration qui :</p>
<ul>
<li>autorise de manière inconditionnelle les accès chiffrés ;</li>
<li>autorise les accès non chiffrés uniquement par l’interface locale.</li>
</ul>
<pre><code>access to *
      by peername.ip=127.0.0.1 break
      by ssf=56 break
      by * none
</code></pre>
<h2 id="tester-la-connexion-chiffr&#233;e">Tester la connexion chiffrée</h2>
<p>Les clients LDAP ne sont pas toujours explicites quand la connexion est impossible à cause d’une erreur SSL. Les commandes <code>openssl</code> ou <code>gnutls-cli</code> permettent de valider rapidement la mise en place de SSL.</p>
<pre class="sourceCode"><code class="sourceCode bash"><span class="co"># Test ldaps&#160;:</span><br />$ openssl s_client -connect votre_serveur_ldap:636 -CAfile /etc/ssl/certs/ca-certificates.crt<br /><span class="co"># ou avec gnutls&#160;:</span><br />$ gnutls-cli --x509cafile /etc/ssl/certs/ca-certificates.crt -p 636 votre_serveur_ldap</code></pre>
<h2 id="certains-n&#339;uds-sont-introuvables">Certains nœuds sont introuvables</h2>
<p>Si votre serveur LDAP ne retrouve plus des entrées qui sont pourtant bien présentes dans l’arbre, il y a fort à parier que les indexes sont périmés. Cela arrive de manière certaine après avoir modifié les critères d’indexation dans la configuration du serveur. Dans ce cas, la procédure est simple :</p>
<ol style="list-style-type: decimal">
<li>stopper le serveur LDAP ;</li>
<li>exécuter la commande <code>slapindex</code> sous l’utilisateur qui fait tourner le serveur (<code>openldap</code> sous debian) ;</li>
<li>relancer le serveur !</li>
</ol>]]></description>
    <pubDate>Tue, 22 Jun 2010 00:00:00 UT</pubDate>
    <guid>http://blog.demotera.com/published/2010-06-22-Quelques-astuces-pour-deployer-openldap.html</guid>
</item>
<item>
    <title>Refonte de l’interface d’AtikTeam</title>
    <link>http://blog.demotera.com/published/2010-06-08-Refonte-de-l-interface-d-AtikTeam.html</link>
    <description><![CDATA[<p>On s’apprête à ravaler un peu la façade d’<a href="http://www.atikteam.com" title="La gestion de projet avec 
AtikTeam">AtikTeam</a> :) Par exemple, les boutons vont s’arrondir, et la charte graphique va se préciser. Regardez plutôt :</p>
<p>Avant :</p>
<a class="lightbox" href="/pictures/atikteam_ancien_theme.png"><img src="/pictures/atikteam_ancien_theme_thumb.png"/></a>
<p>Après :</p>
<a class="lightbox" href="/pictures/atikteam_nouveau_theme.png"><img src="/pictures/atikteam_nouveau_theme_thumb.png"/></a>
<p>Et vous, quels sont les sites que vous trouvez les plus réussis au niveau de l’ergonomie et de l’esthétique ?</p>]]></description>
    <pubDate>Tue, 08 Jun 2010 00:00:00 UT</pubDate>
    <guid>http://blog.demotera.com/published/2010-06-08-Refonte-de-l-interface-d-AtikTeam.html</guid>
</item>
<item>
    <title>Découvrez AtikTeam en vidéo !</title>
    <link>http://blog.demotera.com/published/2010-06-03-Decouvrez-AtikTeam-en-video.html</link>
    <description><![CDATA[<p>Présenter <a href="http://www.atikteam.com">AtikTeam</a> en deux minutes, c’est possible !</p>
<p><object type="application/x-shockwave-flash" style="width: 560px; height: 340px; overflow: visible;" data="http://www.youtube.com/v/TFoTqZNatQg&amp;rel=0&amp;hd=1&amp;fs=1&amp;hl=fr_FR"><param name="movie" value="http://www.youtube.com/v/TFoTqZNatQg&amp;rel=0&amp;hd=1&amp;fs=1&amp;hl=fr_FR" /> Vous devez installer Flash pour visioner cette video.</object></p>]]></description>
    <pubDate>Thu, 03 Jun 2010 00:00:00 UT</pubDate>
    <guid>http://blog.demotera.com/published/2010-06-03-Decouvrez-AtikTeam-en-video.html</guid>
</item>
<item>
    <title>Nouvelle version d’AtikTeam : « Þingvallavatn »</title>
    <link>http://blog.demotera.com/published/2010-04-30-AtikTeam-gestion-de-projet-version-Tingvalavatn.html</link>
    <description><![CDATA[<p>Þingvallavatn introduit quelques nouveautés dans l’interface de l’application <a href="http://www.atikteam.com">AtikTeam</a>, dans le but d’en améliorer l’ergonomie :</p>
<ul>
<li>il est possible de personnaliser l’apparence d’un projet, pour lui attribuer un logo et un jeu de couleurs ;</li>
<li>la liste des projets est plus claire, elle reprend les couleurs et le logo ;</li>
<li>le sélecteur rapide de projets est déplacé vers l’onglet « Projets » ;</li>
<li>le terme « tâche » devient « action » ;</li>
<li>les courriels automatiques proposent un lien « ne plus suivre » ;</li>
<li>la prévisualisation des boites de texte wiki se fait sur place.</li>
</ul>
<p>D’autre part, la taille maximum des fichiers de la base documentaire est élargie à 100Mo.</p>
<p><em>Le Þingvallavatn, qui se prononce « Tingvalavatn », est un lac du sud-ouest de l’Islande. Avec sa superficie de 84 km², et sa profondeur de 114m, il est le plus grand lac naturel d’Islande.</em></p>]]></description>
    <pubDate>Fri, 30 Apr 2010 00:00:00 UT</pubDate>
    <guid>http://blog.demotera.com/published/2010-04-30-AtikTeam-gestion-de-projet-version-Tingvalavatn.html</guid>
</item>
<item>
    <title>Ruby, Rails, Passenger : usages et techniques</title>
    <link>http://blog.demotera.com/published/2010-03-18-ruby-rails-passenger-usages-et-techniques.html</link>
    <description><![CDATA[<p><a href="http://www.ruby-lang.org/">Ruby</a> est un langage de programmation dynamique et orienté objet.</p>
<p><a href="http://www.rubyonrails.com/">RubyOnRails</a> est un cadriciel (les anglophones disent « framework ») pour construire des applications HTTP en ruby.</p>
<p><a href="http://www.atikteam.com">AtikTeam</a> est une application construite avec RubyOnRails.</p>
<p>Passenger est un serveur d’applications Ruby, écrit par une boite des pays bas, <a href="http://www.phusion.nl/home">phusion</a>. Au passage, le travail des gens de cette boite est absolument spectaculaire.</p>
<p>Fin des présentations.</p>
<p>Cette semaine, nous avons fait de nombreux changements pour que l’application AtikTeam soit plus réactive. En particulier, nous avons réglé Passenger pour que la requête soit plus rapidement traitée :</p>
<pre><code>PassengerUseGlobalQueue on
PassengerPoolIdleTime 10000
</code></pre>
<p>La file d’attente globale permet de mieux distribuer le traitement des requêtes en retardant au maximum la décision d’ordonnancement sur les processus. Cela permet, par exemple, de conserver la réactivité de l’application lorsque plusieurs personnes envoient des gros fichiers sur AtikTeam. Le IdleTime quant à lui permet de décider du temps de maintient en activité d’un processus, ce qui diminue l’attente de rendu des pages après un temps d’inactivité.</p>
<p>Nous avons également basculé sur Ruby Enterprise Edition, une branche de la MRI maintenue par Phusion (encore eux !) pour incorporer quelques patchs relatifs aux performances de l’interpréteur et du ramasse-miette.</p>
<p>Conclusion ? La manœuvre s’est déroulée en douceur, la transition n’a posé aucun problème, et les performances sont au rendez-vous, puisque la réactivité a progressé de 25% à 50% !</p>
<p>Merci Phusion, et merci notre infrastructure d’hébergement bien conçue :)</p>]]></description>
    <pubDate>Thu, 18 Mar 2010 00:00:00 UT</pubDate>
    <guid>http://blog.demotera.com/published/2010-03-18-ruby-rails-passenger-usages-et-techniques.html</guid>
</item>
<item>
    <title>AtikTeam « Dongting »</title>
    <link>http://blog.demotera.com/published/2010-03-18-AtikTeam-gestion-de-projet-version-Dongting.html</link>
    <description><![CDATA[<p>Dongting est une mise à jour de maturation des fonctionnalités introduites récemment, apportant donc un meilleur confort d’utilisation d’AtikTeam. En particulier :</p>
<ul>
<li>l’interface de navigation par tags a évolué pour se simplifier et gagner en esthétique</li>
<li>il devient possible de suivre les commentaires d’une annonce</li>
<li>l’accueil expose vos projets récemment visités</li>
<li>les modifications de la feuille de route sont mieux suivies</li>
<li>la recherche parcourt les étapes</li>
<li>la compatibilité avec le navigateur Internet Explorer a progressé</li>
</ul>
<p><em>Dongting est un lac de la province du Hunan en Chine, d’une superficie variant entre 4000 km² et 20000 km² selon les crues et les saisons.</em></p>
<p><a href="http://www.atikteam.com">www.atikteam.com</a></p>]]></description>
    <pubDate>Thu, 18 Mar 2010 00:00:00 UT</pubDate>
    <guid>http://blog.demotera.com/published/2010-03-18-AtikTeam-gestion-de-projet-version-Dongting.html</guid>
</item>
<item>
    <title>Nouvelle version d’AtikTeam : « Azuéi »</title>
    <link>http://blog.demotera.com/published/2010-01-14-AtikTeam-gestion-de-projet-version-Azuei.html</link>
    <description><![CDATA[<p>Ce début d’année 2010 est l’occasion d’apporter à votre plateforme collaborative de nombreuses améliorations astucieuses qui agrémenteront votre utilisation.</p>
<p>La nouveauté principale se trouve dans la navigation par tags de la base documentaire et de la recherche. À présent, la collection de tags évoluera au fil de la sélection pour vous aider à faire rapidement un filtre pertinent. Au passage, l’affichage des fichiers de la base documentaire a été revu, pour un résultat à la fois plus clair et plus esthétique !</p>
<p>D’autre part, une procédure de première connexion accueillera vos nouveaux utilisateurs et les guidera pour leurs premiers pas. Les administrateurs pourront personnaliser le texte d’accueil depuis les réglages de l’application.</p>
<p>Enfin, les courriels automatiques ont été clarifiés et la page d’accueil de la plateforme vous propose une sélection des projets que vous visitez le plus souvent.</p>
<p>Heureuse année collaborative !</p>
<p><em>Azuéi est un grand lac situé à Haïti, sur l’île d’Hispaniola dans les Caraïbes. D’une superficie de 170 km², ce lac salé également appelé « Étang Saumâtre » borde la frontière avec la république Dominicaine.</em></p>]]></description>
    <pubDate>Thu, 14 Jan 2010 00:00:00 UT</pubDate>
    <guid>http://blog.demotera.com/published/2010-01-14-AtikTeam-gestion-de-projet-version-Azuei.html</guid>
</item>
<item>
    <title>Nouvelle version majeure d’AtikTeam : « Ladoga »</title>
    <link>http://blog.demotera.com/published/2009-10-23-nouvelle-version-majeure-d-atikteam-ladoga.html</link>
    <description><![CDATA[<p>Tout juste un mois après la mise à jour « Ontario », et s’appuyant fortement sur les bases solides introduites dans cette dernière, « Ladoga » apporte deux fonctionnalités majeures conçues pour faciliter la collaboration.</p>
<p>Tout d’abord, les fichiers de la base documentaire ont été dotés d’un système simplifiant l’édition collaborative. Ainsi, l’historique des modifications est préservé, et un mécanisme simple permet de travailler sur un fichier sans risquer de devoir faire un assemblage manuel plus tard.</p>
<p>Ensuite, un système de « tags » a été intégré à toutes les ressources. Chaque « tag », également appelé « étiquette », représente une notion unique, typiquement un mot clef. Les ressources peuvent être « tagguées » avec autant de « tags » que souhaité, permettant ainsi un classement thématique transversal de toutes les données de la plateforme. La base documentaire exploite pleinement ce système pour vous permettre de classer et retrouver vos documents plus simplement et plus rapidement qu’avec le mécanisme traditionnel de dossiers.</p>
<p>Enfin, pour profiter pleinement de ces tags, un moteur de recherche lui est dédié, accessible par le lien « recherche » du projet.</p>
<p>Bonne collaboration !</p>
<p><em>Le lac Ladoga, situé au nord-ouest de la Russie, contient plus de 830 km³ d’eau douce et s’étend sur une superficie de presque 18 000 km². Avec ses 660 îles, ce lac navigable est l’un des plus grand d’Europe.</em></p>]]></description>
    <pubDate>Fri, 23 Oct 2009 00:00:00 UT</pubDate>
    <guid>http://blog.demotera.com/published/2009-10-23-nouvelle-version-majeure-d-atikteam-ladoga.html</guid>
</item>
<item>
    <title>Nouvelle version majeure d’AtikTeam : « Ontario »</title>
    <link>http://blog.demotera.com/published/2009-09-25-nouvelle-version-majeure-d-atikteam-ontario.html</link>
    <description><![CDATA[<p>Après un semestre de travail soutenu sur AtikTeam, toute l’équipe est heureuse de mettre en service « Ontario ». Cette mise à jour vous apporte dès maintenant une forte intégration des formats bureautiques, une amélioration de l’édition simultanée, un aspect visuel plus soigné et bien d’autres nouveautés attrayantes dont vous trouverez le détail ci-dessous. La plupart de ces améliorations proviennent de vos suggestions, continuez donc à nous faire part de vos idées pour la prochaine mise à jour d’AtikTeam : « Ladoga ». Bonne collaboration !</p>
<h2 id="nouveaut&#233;s-majeures">Nouveautés majeures</h2>
<ul>
<li>Aperçu en ligne des fichiers bureautiques dans de nombreux formats</li>
<li>Aperçu des modifications récentes des fichiers du dépôt au format texte, .doc, .odt</li>
<li>Conversion en ligne des formats bureautiques vers PDF</li>
<li>Gestion automatique de l’édition concurrente d’une page wiki</li>
<li>Nouvelle interface de Planning avec groupement des tâches par critère</li>
<li>Nouvelle interface d’attribution des rôles lors de la création d’un projet</li>
<li>Système de modules optionnels projet par projet</li>
<li>« Mon compte » permet de renseigner sa page personnelle et de mettre une photo</li>
<li>Nouveau lien wiki : « user:identifiant_de_l’utilisateur »</li>
<li>Un trombinoscope est accessible depuis l’aperçu du projet</li>
<li>Possibilité de définir des collaborateurs comme observateurs d’une tâche</li>
</ul>
<h2 id="am&#233;liorations-majeures">Améliorations majeures</h2>
<ul>
<li>Le sélecteur d’étape cible ne propose plus les étapes passées et complétées</li>
<li>Pour les étapes, la « page wiki associée » est remplacée par une description wiki</li>
<li>Formulaire de personnalisation de l’instance AtikTeam</li>
<li>Collection de thèmes et possibilité de changer le logo en haut à gauche</li>
<li>Amélioration des formulaires de création et d’édition d’une tâche</li>
</ul>
<h2 id="autres-nouveaut&#233;s-et-am&#233;liorations">Autres nouveautés et améliorations</h2>
<ul>
<li>La création d’une annonce envoie un email à tous les membres du projet</li>
<li>Affichage des étapes héritées dans la configuration du projet</li>
<li>Amélioration de l’impression des pages de la plateforme</li>
<li>Amélioration du format des emails automatiques</li>
<li>Corrections et ajouts de traductions</li>
<li>Correction du calcul d’avancement pour les étapes héritées</li>
<li>Documentation de la syntaxe wiki des sous listes dans la page d’aide</li>
<li>Documentation du lecteur de flux RSS « Sage » : http://www.atikteam.com/doc:user_doc:feedreader</li>
</ul>
<p><em>Avec une superficie de 19000km², le lac Ontario est un très grand lac nord-américain. Il se situe sur l’est de la frontière entre le Canada et les États-Unis, et il est alimenté en partie par les eaux du Niagara.</em></p>]]></description>
    <pubDate>Fri, 25 Sep 2009 00:00:00 UT</pubDate>
    <guid>http://blog.demotera.com/published/2009-09-25-nouvelle-version-majeure-d-atikteam-ontario.html</guid>
</item>
<item>
    <title>Demotera devient membre de CapLibre</title>
    <link>http://blog.demotera.com/published/2009-03-23-demotera-devient-membre-de-caplibre.html</link>
    <description><![CDATA[<p>Depuis le 16 mars 2009, Demotera est membre de <a href="http://www.caplibre.org/">CapLibre</a>. En rejoignant cette association, Demotera renforce son implication en tant qu’acteur de l’écosystème du Logiciel Libre.</p>
<p>CapLibre regroupe et fédère les sociétés spécialistes en Logiciels Libres d’Ille et Vilaine et des départements alentours. Pour plus d’informations, visitez le site <a href="http://www.caplibre.org/">www.caplibre.org</a>.</p>]]></description>
    <pubDate>Mon, 23 Mar 2009 00:00:00 UT</pubDate>
    <guid>http://blog.demotera.com/published/2009-03-23-demotera-devient-membre-de-caplibre.html</guid>
</item>
<item>
    <title>Le site web d’AtikTeam fait peau neuve</title>
    <link>http://blog.demotera.com/published/2009-02-03-le-site-web-d-atikteam-fait-peau-neuve.html</link>
    <description><![CDATA[<p>Afin de se démarquer du site de <a href="http://www.demotera.com">Demotera</a>, le site d’AtikTeam possède dorénavant sa propre identité visuelle. L’apparence est volontairement simple et claire, tout comme le service AtikTeam.</p>
<p>Les changements ne sont pas simplement d’ordre visuel, mais aussi structurel :</p>
<ul>
<li>le contenu a été réorganisé ;</li>
<li>le menu permet de se repérer en un coup d’œil ;</li>
<li>la navigation dans la documentation peut se faire de manière linéaire grâce aux liens vers la page suivante et précédente.</li>
</ul>
<p>Toute l’équipe de Demotera vous souhaite une bonne visite sur <a href="http://www.atikteam.com">www.atikteam.com</a>.</p>]]></description>
    <pubDate>Tue, 03 Feb 2009 00:00:00 UT</pubDate>
    <guid>http://blog.demotera.com/published/2009-02-03-le-site-web-d-atikteam-fait-peau-neuve.html</guid>
</item>
<item>
    <title>Lancement commercial d’AtikTeam</title>
    <link>http://blog.demotera.com/published/2009-01-12-lancement-commercial-d-atikteam.html</link>
    <description><![CDATA[<p>Voila un an, nous avons décidé que la maîtrise de l’information des projets dans les entreprises serait notre premier objectif.</p>
<p>Après avoir dressé la liste des besoins principaux des entreprises, associations et centres de recherche du secteur de l’énergie et de l’environnement, nous avons envisagé de nombreuses solutions. En avril 2008, nous avons fixé la forme qu’aurait cet outil, et nous avons commencé alors le travail de réalisation, de préparation commerciale et de stabilisation du service.</p>
<p>Après donc un an de travail consacré à ce projet, nous sommes fiers d’annoncer la disponibilité immédiate de notre offre <a href="http://www.atikteam.com">AtikTeam</a>.</p>]]></description>
    <pubDate>Mon, 12 Jan 2009 00:00:00 UT</pubDate>
    <guid>http://blog.demotera.com/published/2009-01-12-lancement-commercial-d-atikteam.html</guid>
</item>
<item>
    <title>Ouverture publique du site web de Demotera</title>
    <link>http://blog.demotera.com/published/2008-08-25-ouverture-publique-du-site-web-de-demotera.html</link>
    <description><![CDATA[<p>Après plusieurs mois de préparation, notre site web fait enfin son apparition publique, pour vous présenter l’entreprise Demotera et son offre.</p>
<p>C’est aussi pour nous l’occasion de dévoiler <a href="http://www.atikteam.com">AtikTeam</a>, une offre innovante qui nous a occupé à plein temps depuis notre décision de proposer un service tout compris pour faciliter le travail d’équipe en entreprise.</p>
<p>Bonne visite !</p>]]></description>
    <pubDate>Mon, 25 Aug 2008 00:00:00 UT</pubDate>
    <guid>http://blog.demotera.com/published/2008-08-25-ouverture-publique-du-site-web-de-demotera.html</guid>
</item>

    </channel> 
</rss>

