<?xml version="1.0" encoding="ISO-8859-1" ?>
<feed xmlns="http://purl.org/atom/ns#" version="0.3"
	  xmlns:dc="http://purl.org/dc/elements/1.1/"
	  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	  xml:lang="fr">

  <title>ZeFredz's Blog</title>
  <link rel="alternate" type="text/html" href="http://zefredz.frimouvy.org/dotclear/index.php"/>
  <tagline type="text/plain" mode="escaped"></tagline>
  
  <modified>2008-07-25T08:48:16+00:00</modified>
  <generator version="1.2" url="http://www.dotclear.net/">DotClear</generator>
  
  <sy:updatePeriod>daily</sy:updatePeriod>
  <sy:updateFrequency>1</sy:updateFrequency>
  <sy:updateBase>2008-07-25T08:48:16+00:00</sy:updateBase>
  
<entry xml:lang="fr">
  <title>Offres d'emploi</title>
  <link rel="alternate" type="text/html" href="http://zefredz.frimouvy.org/dotclear/index.php?2008/07/25/220-offres-demploi" />
  <issued>2008-07-25T08:48:16+00:00</issued>
  <modified>2008-07-25T08:48:16+00:00</modified>
  <id>http://zefredz.frimouvy.org/dotclear/index.php?2008/07/25/220-offres-demploi</id>
  <author><name>ZeFredz</name></author>
  <dc:subject>Claroline</dc:subject>
  <summary>L'Université Catholique de Louvain (Belgique) recherche un développeur PHP/MySQL afin de développer le campus virtuel iCampus et la plateforme Claroline. L'UCL recherche également un infographiste développeur Web.</summary>
  <content type="text/html" mode="escaped">&lt;p&gt;L'Université Catholique de Louvain (Belgique) recherche un développeur PHP/MySQL afin de développer le campus virtuel iCampus et la plateforme Claroline. L'UCL recherche également un infographiste développeur Web.&lt;/p&gt; &lt;h3&gt;Développeur PHP/Mysql&lt;/h3&gt;


&lt;p&gt;Profil recherché&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bachelier en informatique&lt;/li&gt;
&lt;li&gt;Bonne expérience de la programmation PHP, Mysql et Javascript&lt;/li&gt;
&lt;li&gt;Analyse des besoins, conception et programmation orientée-objet&lt;/li&gt;
&lt;li&gt;Sensibilité à l'accessibilité, à l'ergonomie et aux normes du Web&lt;/li&gt;
&lt;li&gt;Connaissance du français et de l'anglais&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Une bonne connaissance de Claroline, Zend Framework, jQuery et/ou des services Web est un atout.&lt;/p&gt;


&lt;p&gt;Vous trouverez le détail de l'annonce &lt;a href=&quot;http://www.uclouvain.be/233255.html&quot; hreflang=&quot;fr&quot;&gt;ici&lt;/a&gt;.&lt;/p&gt;


&lt;h3&gt;Infographiste développeur Web&lt;/h3&gt;


&lt;p&gt;De plus, l'UCL recherche également un infographiste et développeur Web afin de participer à l'amélioration de la plateforme Claroline et à des projets de développement pédagogique multimédia à la demande des enseignants de l'UCL.&lt;/p&gt;


&lt;p&gt;Profil recherché&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bachelier en informatique ou infographiste&lt;/li&gt;
&lt;li&gt;Conception et programmation de site Web en CSS, PHP, Mysql et Javascript&lt;/li&gt;
&lt;li&gt;Conception et réalisation multimédia (Suite adobe, Director, Flash et Flex)&lt;/li&gt;
&lt;li&gt;Sensibilité à la portabilité (environnement Windows, Mac et Linux)&lt;/li&gt;
&lt;li&gt;Connaissance du français et de l'anglais&lt;/li&gt;
&lt;li&gt;Une bonne connaissance de Claroline, jQuery et/ou de la programmation orientée-objet est un atout.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Vous trouverez les détails de l'offre &lt;a href=&quot;http://www.uclouvain.be/233258.html&quot; hreflang=&quot;fr&quot;&gt;ici&lt;/a&gt;.&lt;/p&gt;</content>
</entry>
<entry xml:lang="fr">
  <title>Je suis athée !</title>
  <link rel="alternate" type="text/html" href="http://zefredz.frimouvy.org/dotclear/index.php?2008/06/27/218-je-suis-athee" />
  <issued>2008-06-27T12:10:38+00:00</issued>
  <modified>2008-06-27T12:10:38+00:00</modified>
  <id>http://zefredz.frimouvy.org/dotclear/index.php?2008/06/27/218-je-suis-athee</id>
  <author><name>ZeFredz</name></author>
  <dc:subject>Humeurs</dc:subject>
  <summary>Bon, la plupart des gens qui me connaissent le savaient déjà... mais quand je lis des trucs pareils (et le reste du site d'ailleurs), j'aime mieux le dire haut et fort - d'ailleurs je ne l'ai jamais...</summary>
  <content type="text/html" mode="escaped"> &lt;p&gt;Bon, la plupart des gens qui me connaissent le savaient déjà... mais quand je lis &lt;a href=&quot;http://www.conservapedia.com/Atheism&quot; hreflang=&quot;en&quot;&gt;des trucs pareils&lt;/a&gt; (et le reste du site d'ailleurs), j'aime mieux le dire haut et fort - d'ailleurs &lt;a href=&quot;/dotclear/index.php?Pseudo-sciences&quot; hreflang=&quot;fr&quot;&gt;je ne l'ai jamais caché&lt;/a&gt; - et être soupçonné de communisme et d'être un &quot;tueur de masse&quot; que d'être confondu avec &lt;a href=&quot;http://www.conservapedia.com/Main_Page&quot; hreflang=&quot;en&quot;&gt;ces gens là&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;De plus, oser appeler n'importe quelle source d'information liée à une tendance religieuse et/ou politique et/ou idéologique &quot;trustworthy&quot;... ça me laisse sans voix (euh sans clavier... euh bref).&lt;/p&gt;


&lt;p&gt;L'avantage, c'est qu'aux États-Unis au moins je saurais plus facilement pour qui voter... bon, le problème c'est que je ne suis pas aux États-Unis et donc je ne suis pas très avancé&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;Sur ce je vous laisse m'insulter dans les commentaires (de toute façon ils sont modérés et quand j'en aurai eu assez, je les fermerai) et je vous souhaite un bon week-end.&lt;/p&gt;</content>
</entry>
<entry xml:lang="fr">
  <title>Question</title>
  <link rel="alternate" type="text/html" href="http://zefredz.frimouvy.org/dotclear/index.php?2008/06/18/217-question" />
  <issued>2008-06-18T16:25:08+00:00</issued>
  <modified>2008-06-18T16:25:08+00:00</modified>
  <id>http://zefredz.frimouvy.org/dotclear/index.php?2008/06/18/217-question</id>
  <author><name>ZeFredz</name></author>
  <dc:subject>Phrase du jour</dc:subject>
  <summary>Si l'informatique simplifiait vraiment la vie et faisait vraiment gagner du temps, est-ce qu'on aurait besoin d'autant d'informaticiens ?...</summary>
  <content type="text/html" mode="escaped"> &lt;blockquote&gt;&lt;p&gt;Si l'informatique simplifiait vraiment la vie et faisait vraiment gagner du temps, est-ce qu'on aurait besoin d'autant d'informaticiens&amp;nbsp;?&lt;/p&gt;&lt;/blockquote&gt;</content>
</entry>
<entry xml:lang="fr">
  <title>ACCU 2008 - Montpellier : Second Jour</title>
  <link rel="alternate" type="text/html" href="http://zefredz.frimouvy.org/dotclear/index.php?2008/05/24/216-accu-2008---montpellier-second-jour" />
  <issued>2008-05-24T09:29:54+00:00</issued>
  <modified>2008-05-24T09:29:54+00:00</modified>
  <id>http://zefredz.frimouvy.org/dotclear/index.php?2008/05/24/216-accu-2008---montpellier-second-jour</id>
  <author><name>ZeFredz</name></author>
  <dc:subject>Claroline</dc:subject>
  <summary>Petit compte-rendu en direct de l'ACCU 2008</summary>
  <content type="text/html" mode="escaped">&lt;p&gt;Petit compte-rendu en direct de l'ACCU 2008&lt;/p&gt; &lt;h3&gt;8h45 - Accueil&lt;/h3&gt;


&lt;p&gt;Accueil par Philippe Mercenier et programme de la journée.&lt;/p&gt;


&lt;h3&gt;9h - Claroline pour l'enseignement des langues à Taiwan par Lionel Li-Xing Hong (&lt;a href=&quot;http://www.fju.edu.tw/eng_fju/index.htm&quot;&gt;Fu Jen Catholic University&lt;/a&gt;, Taiwan)&lt;/h3&gt;


&lt;p&gt;Présentation de l'utilisation de Claroline pour l'apprentissage des langues dans le cadre de deux projets du ministère de l'éducation de Taiwan.&lt;/p&gt;


&lt;p&gt;Après avoir introduit le contexte du projet, Lionel Li-Xing Hong présente les utilisations faites des outils de Claroline pour l'enseignement des langues et rapporte quelques limites de ces outils dont certaines ont trouvé des solutions lors de la présentation des nouveaux modules pour Claroline (Sondage, Exoline, Page...).&lt;/p&gt;


&lt;p&gt;Ensuite, il présente comment étendre les scénario éducatif dans la plateforme à l'aide d'outils open source ou gratuit et de services web 2.0&amp;nbsp;: utilisation de &lt;a href=&quot;http://www.tiddlywiki.com/&quot;&gt;TiddlyWiki&lt;/a&gt; pour créer une méthode de langue, de &lt;a href=&quot;http://gong.ust.hk/features_nano.html&quot;&gt;NanoGong&lt;/a&gt; pour de la compréhension à l'audition, des bookmarks sociaux pour construire un répertoire de ressources, d'un Wiki comme outil de rapport de groupes, de flux RSS, de widget web 2.0, d'avatars (&lt;a href=&quot;http://www.voki.com/&quot;&gt;Voki&lt;/a&gt;)...&lt;/p&gt;


&lt;p&gt;Il présente alors les résultats d'un sondage à propos de l'utilisation des outils de la plateforme effectué auprès d'un petit échantillon d'étudiants. Cette enquête fait apparaître des résultats très positifs pour l'utilisation de la plateforme, mais ces résultats dépendent beaucoup de l'utilisation faite par les enseignants.&lt;/p&gt;


&lt;p&gt;Lors de cette expérimentation, quelques difficultés sont apparues&amp;nbsp;: manque de support de utf-8 (qui sera ajouté dans la version 2.0), manque de l'export d'un site de cours. Il ajoute que le eLearning pose toujours des problèmes&amp;nbsp;: permet-il de gagner du temps ou au contraire est-il un gros consommateur de temps&amp;nbsp;?&lt;/p&gt;


&lt;p&gt;Ensuite, Lionel Li-Xing Hong présente les développements futurs de cette expérience qui sera étendue à d'autres enseignants, l'amélioration de l'intégration de la plateforme avec l'université, l'ajout de nouveaux modules.&lt;/p&gt;


&lt;p&gt;Pour conclure, il présente quelques réflexions personnelles sur cette expérience. En particulier, l'enseignant à une rôle important à jouer dans la motivation des étudiants à utiliser la plateforme.&lt;/p&gt;


&lt;h3&gt;9h40 - Un trombinoscope intégré à Claroline par Laurent Clusman (Groupe ISA, Lille, France)&lt;/h3&gt;


&lt;p&gt;Laurent Clusman présente tout d'abord l'utilisation de Claroline à l'ISA&amp;nbsp;: les principaux usages et le comportement des enseignants qui tendent à ne pas explorer d'eux-même les fonctionnalités de la plateforme.&lt;/p&gt;


&lt;p&gt;Il présente ensuite le trombinoscope proprement dit qui permet de mettre un visage sur les noms des étudiants et enseignants. Il décrit tout d'abord les avantages et inconvénients du système de trombinoscope papier utilisé avant l'outil intégré à la plateforme. Le trombinoscope numérique fut introduit suite à une demande d'étudiants afin de réduire le gaspillage de papier engendré par l'ancien système. Une première version a été développée par un étudiant lors d'un stage avant d'être intégrée à Claroline.&lt;/p&gt;


&lt;p&gt;Le trombinoscope est couplé à un outil de recherche sur les utilisateurs de la plateforme et permet de modifier la &quot;fiche&quot; de l'utilisateur courant.&lt;/p&gt;


&lt;p&gt;Les valeurs ajoutées de cet outil sont multiples&amp;nbsp;: accessibilité, moteur de recherche, contrôle des informations par l'utilisateur, mise-à-jour instantanée, moins de gaspillage de papier... Laurent Clusman présente ensuite quelques améliorations possibles du trombinoscope.&lt;/p&gt;


&lt;p&gt;Au cours des questions-réponses, le problème du droit à l'image et de la déclaration des informations sur les utilisateurs afin d'être conforme à la loi Française est abordé.&lt;/p&gt;


&lt;h3&gt;10h20 - Comment transformer Claroline en espace collaboratif&amp;nbsp;? (&lt;a href=&quot;http://www.p-interactif.com/&quot;&gt;p-interactif&lt;/a&gt;, France)&lt;/h3&gt;


&lt;p&gt;Bernard-Paul Eminet présente deux usages détournés de Claroline pour la gestion de projet et comme espace collaboratif pour des institutions de recherche, collectivités, communes rurales...&lt;/p&gt;


&lt;p&gt;Après avoir testé différentes solutions (LMS, Groupware), Bernard-Paul eminet s'est tourné vers Claroline pour mettre en place des espaces collaboratifs à destination d'adultes non-étudiants. La principale modification de la plateforme concerne le vocabulaire utilisé (étudiant devient utilisateur, cours devient projet...), le set d'icônes (deux sets d'icônes 32x32 et 32x16), favoriser l'appropriation de la plateforme par l'administration des collectivités et communes rurales...&lt;/p&gt;


&lt;p&gt;La solution mise en oeuvre comprend le CMS Spip pour la mise en ligne d'un site web et Claroline comme espace collaboratif installés en parallèle. Ces deux produits ont été choisis parce que ce sont des outils francophones avec un large communauté et  pour leur support de la langue française. De plus Spip est préconisé par le gouvernement Français. Signalons que Bernard-Paul Eminet utilise de plus Claroline comme plateforme de formation (une vingtaine de plateformes installées à ce jour).&lt;/p&gt;


&lt;p&gt;Bernard-Paul Eminet fait énormément de promotion pour la plateforme en la suggérant lors de chaque installation de son système et grâce à des démonstrations de la plateforme. La mise en place du système ce fait en deux temps&amp;nbsp;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Claroline permet de préparer le contenu afin de l'intégrer en Spip&lt;/li&gt;
&lt;li&gt;Le site web est en production et Claroline devient alors uniquement un espace collaboratif ou comme outil de suivit de production&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Bernard-Paul Eminet décrit plus en détail le projet franco-allemand Bahn.Ville 2 où Claroline se montre plus qu'indispensable pour organiser le travail à distance des différents acteurs. L'appropriation de l'outil s'est faite très rapidement et les utilisateurs en sont très satisfait.&lt;/p&gt;


&lt;p&gt;Il présente ensuite les différences entre outil collaboratif et outil pédagogique. En particulier, il n'y a pas de &quot;chef/enseignant&quot; dans les espaces collaboratif, il faut donc ménager les susceptibilités. De plus, les utilisateurs sont très exigeants avec l'outil collaboratif et constituent un ensemble très hétérogène. Ils ont tendance à abandonner ce qu'ils ne comprennent pas. Ils n'ont pas non plus une culture technologique poussée ce qui implique un &lt;acronym title=&quot;Return On Invest&quot;&gt;POI&lt;/acronym&gt; très rapide.&lt;/p&gt;


&lt;p&gt;Dans ce contexte, les outils les plus utilisés sont les outils de type groupware et qui favorisent l'obtention d'information &lt;em&gt;on-demand&lt;/em&gt;&amp;nbsp;: Documents et liens, Annonces et Agenda comme agenda de projet. Mais les usages de ces outils par les utilisateurs posent quelques problèmes, en particulier l'outil Documents et lien. Une formation ou des fiches sont donc obligatoires pour apprendre les bons usages des technologies aux utilisateurs (compression d'image, formats de fichier, redimensionnement, copier/collers...) et aux outils libres ou gratuits (XnView, PDFCreator...). L'appropriation &lt;em&gt;personnelle&lt;/em&gt; de ces outils et techniques est favorisée par l'application sur des exemples de la vie de tous les jours (photos de familles...).&lt;/p&gt;


&lt;p&gt;L'outil de gestion des profils utilisateurs de Claroline est utilisé pour restreindre les accès des utilisateurs. Des profils génériques modifiables sont fournis au gestionnaire de projet afin de personnaliser l'accès à son projet.&lt;/p&gt;


&lt;p&gt;L'utilisation de ce système à un grand succès auprès des collectivités qui l'ont adopté en particulier grâce à l'appropriation très aisée de la plateforme, l'adaptation du &lt;em&gt;vocabulaire&lt;/em&gt; de la plateforme au domaine et de sa facilité d'utilisation. De plus, l'usage de Claroline comme espace collaboratif incite certains instituts de recherche à adopter la plateforme pour le eLearning.&lt;/p&gt;


&lt;p&gt;Bernard-Paul Eminet termine sa formation par quelques souhaits pour les futures versions de Claroline&amp;nbsp;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sauvegarde et restauration de la DB par le gestionnaire de la plateforme&lt;/li&gt;
&lt;li&gt;Duplication de projet/cours&lt;/li&gt;
&lt;li&gt;Affichage des projets/cours par catégorie&lt;/li&gt;
&lt;li&gt;Meilleure intégration entre Claroline et Spip&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Il termine en remerciant l'équipe Claroline pour le travail effectué et la grande réactivité sur les forums.&lt;/p&gt;


&lt;h3&gt;11h-11h30 - Pause&lt;/h3&gt;


&lt;p&gt;Pause café&lt;/p&gt;


&lt;h3&gt;11h30-13h - Présentation des nouveautés de Claroline 1.9 et développement pour Claroline par l'équipe Claroline&lt;/h3&gt;


&lt;p&gt;Présentation des nouvelles fonctionnalités intégrées à Claroline (Messagerie Interne, Chat...) et présentation de la démarche de développement de module dans Claroline.&lt;/p&gt;


&lt;p&gt;Au programme (pas dans l'ordre)&amp;nbsp;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Frédéric Minne (moi donc) présente le système de messagerie interne et les nouvelles options d'installation des modules&lt;/li&gt;
&lt;li&gt;Philippe Dekimpe présente le nouveau module de sondage&lt;/li&gt;
&lt;li&gt;Sébastien Piraux présente le nouveau Chat, le tracking&lt;/li&gt;
&lt;li&gt;Grégory Koch présente l'outil d'intégration de NetQuiz dans Claroline&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;13h-14h - Lunch&lt;/h3&gt;


&lt;p&gt;Petit lunch léger.&lt;/p&gt;


&lt;h3&gt;14h-15h45 - Brainstorming Claroline 2.0, animé par Marcel Lebrun&lt;/h3&gt;


&lt;p&gt;Petit travail en groupe où chacun a pu donner son avis sur ce qu'il attend de la future Claroline 2.0. De nombreuses idées pour améliorer Claroline évoquées et devront être mise en oeuvre. Des idées pour l'organisation de l'ACCU 2009 sont proposées&amp;nbsp;: tables rondes, benchmarking des LMS (Claroline, Sakai, Moodle, Dokeos, WebCT...) au point de vue technique et pédagogique...&lt;/p&gt;


&lt;h3&gt;15h45 - Conférence de cloture par Marcel Lebrun et Philippe Mercenier (&lt;a href=&quot;http://www.claroline.net/&quot;&gt;Consortium Claroline&lt;/a&gt;)&lt;/h3&gt;


&lt;p&gt;Marcel Lebrun indique que pour lui le colloque est en mi-teinte. Il a été très riche en idées et en nouveautés, mais par contre de nombreux il en ressort que de développements sont isolés et redondants.&lt;/p&gt;


&lt;p&gt;Il faut donc renforcer l'appartenance à une communauté Claroline et favoriser les interactions et la collaboration entre les différents partenaire afin de ne pas gaspiller les ressources.&lt;/p&gt;


&lt;p&gt;Pour Marcel Lebrun, il y a trois niveau de collaboration&amp;nbsp;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;le retour sur les nouvelles versions, modules, fonctionnalités&lt;/li&gt;
&lt;li&gt;collaborer au maximum avec les développeurs&lt;/li&gt;
&lt;li&gt;participer au consortium Claroline&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Philippe Mercenier ajoute que la croissance de la communauté Claroline demande une coordination, mission qui incombe au consortium. L'ACCU 2008 a montré que Claroline pouvait s'appliquer à d'autres domaines que la formation et cela devra être favorisé dans le futur. D'autres ressources pourraient être partagées&amp;nbsp;: fiches d'aide, ressources...&lt;/p&gt;


&lt;p&gt;Il est également important d'avoir des rencontres fréquentes entre les développeurs afin de favoriser les interactions.&lt;/p&gt;


&lt;p&gt;Marcel Lebrun aborde alors les questions concernant l'ACCU 2009 et revient sur les idées évoquées à ce propos au cours des deux journées. Le lieu reste encore à déterminer mais des pistes sont déjà envisagées&amp;nbsp;: Rimouski au Québec, Clermont-Ferrant en France, Belgique, Maroc&amp;nbsp;?&lt;/p&gt;


&lt;p&gt;L'ACCU pourrait également avoir lieu dans un pays ou Claroline est peu utilisé pour faire la publicité de la plateforme et pourrait être couplé à un autre colloque.&lt;/p&gt;


&lt;p&gt;Philippe Mercenier remercie les participants et l'Université de Montpellier II pour avoir accueilli ces journées des utilisateurs.&lt;/p&gt;


&lt;h3&gt;16H10 - Café et cloture du colloque&lt;/h3&gt;


&lt;p&gt;Les journées des utilisateurs de Claroline 2008 se terminent autour d'un café.&lt;/p&gt;</content>
</entry>
<entry xml:lang="fr">
  <title>ACCU 2008 - Montpellier : Premier Jour</title>
  <link rel="alternate" type="text/html" href="http://zefredz.frimouvy.org/dotclear/index.php?2008/05/23/215-accu-2008---montpellier-premier-jour" />
  <issued>2008-05-23T10:19:26+00:00</issued>
  <modified>2008-05-23T10:19:26+00:00</modified>
  <id>http://zefredz.frimouvy.org/dotclear/index.php?2008/05/23/215-accu-2008---montpellier-premier-jour</id>
  <author><name>ZeFredz</name></author>
  <dc:subject>Claroline</dc:subject>
  <summary>En direct des Journées Annuelles de Utilisateurs de Claroline, Montpellier : compte rendu de la première journée.


(Sera mis à jour régulièrement au cours de la journée)</summary>
  <content type="text/html" mode="escaped">&lt;p&gt;&lt;img src=&quot;http://www.claroline.net/images/stories/logo_accu08_button2.png&quot; alt=&quot;Logo ACCU&quot; style=&quot;float:left; margin: 0 1em 1em 0;&quot; /&gt;En direct des Journées Annuelles de Utilisateurs de Claroline, Montpellier&amp;nbsp;: compte rendu de la première journée.&lt;/p&gt;


&lt;p&gt;(Sera mis à jour régulièrement au cours de la journée)&lt;/p&gt; &lt;p&gt;Faculté Polytechnique de l'Université de Montpellier 2&lt;/p&gt;


&lt;h3&gt;9h30 - Accueil des participants et programme de la journée&lt;/h3&gt;


&lt;p&gt;Arrivée des utilisateurs de Claroline venus du monde entier. Discussions informelles autour d'un café et de quelques viennoiseries. On retrouve de nombreux visages connus et on rencontre les nouveaux venus.&lt;/p&gt;


&lt;p&gt;Philippe Mercenier présente ensuite le programme de la journée.&lt;/p&gt;


&lt;h3&gt;10h15 - Conférence inaugurale de Marcel Lebrun (&lt;a href=&quot;http://www.uclouvain.be/&quot; hreflang=&quot;fr&quot;&gt;Université catholique de Louvain - Belgique&lt;/a&gt;)&lt;/h3&gt;


&lt;p&gt;&lt;q&gt;La pédagogie précède la technologie, mais la technologie ne pourrait-elle pas promouvoir la pédagogie ?&lt;/q&gt;.&lt;/p&gt;


&lt;p&gt;Comment bien utiliser la technologie et donc comment évaluer l'utilisation&amp;nbsp;?&lt;/p&gt;


&lt;p&gt;Marcel Lebrun propose une méthode pour calculer l'utilisation des outils dans Claroline. Il ajoute que la perception subjective des étudiants est un facteur très important dans l'apprentissage. Marcel Lebrun propose alors un modèle d'apprentissage qui précise les facteurs d'apprentissages, les éléments qui font que ça fonctionne et décrit la démarche qui a mener à sa conception.&lt;/p&gt;


&lt;p&gt;Marcel Lebrun présente les résultats d'une enquête réalisée auprès des étudiants et aux enseignants de l'UCL afin de comparer leur perception quant à l'utilisation du eLearning dans les cours. Ces résultats permettent de mettre en évidence les différences de perception entre étudiants et enseignants. Marcel Lebrun décrit pour certains points les facteurs qui expliquent ces différences.&lt;/p&gt;


&lt;p&gt;Marcel Lebrun indique quelques raisons données par les enseignants expliquant leur adoption de iCampus/Claroline à l'UCL.&lt;/p&gt;


&lt;p&gt;Il présente ensuite les perspectives pour l'avenir et pour améliorer l'enquête&amp;nbsp;: autres campus, autres plate-formes, évolution dans l'avenir, impact des TIC sur le développement professionnel...&lt;/p&gt;


&lt;p&gt;La séance de questions réponses donne des pistes pour l'amélioration de l'enquête réalisée à l'UCL (corrélation avec les formations suivies par les enseignants, tri par cycle d'étude,... ). On découvre des différences d'utilisation entre les différentes institutions.&lt;/p&gt;


&lt;h3&gt;11h30 - Adaptation de Claroline par Michel Gendron (&lt;a href=&quot;http://www.uqar.uquebec.ca/campusRimouski/index.asp&quot; hreflang=&quot;fr&quot;&gt;Université du Québec à Rimouski - Canada&lt;/a&gt;)&lt;/h3&gt;


&lt;p&gt;Michel Gendron présente les modifications effectuées sur la plateforme Claroline de l'UQAR en 2007-2008 afin de faciliter son appropriation par les enseignants et les apprenants.&lt;/p&gt;


&lt;p&gt;Des fonctionnalités ont été modifiées&amp;nbsp;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Page d'accueil&lt;/li&gt;
&lt;li&gt;Ordre des modules dans les parcours pédagogiques&lt;/li&gt;
&lt;li&gt;Compte d'invité dans les cours&lt;/li&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Des fonctionnalités supplémentaires ont été ajoutées&amp;nbsp;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gestion des problèmes de droit d'auteur directement dans Claroline (Acceptation des conditions par le gestionnaire, intégration dans les Documents et Liens...)&lt;/li&gt;
&lt;li&gt;Foire aux Questions&lt;/li&gt;
&lt;li&gt;Utilitaires pour le gestionnaire regroupant les paramètres du cours, affichage de tout le contenu de certains outils, nouveaux outils de gestion du cours...&lt;/li&gt;
&lt;li&gt;Archivage de cours&lt;/li&gt;
&lt;li&gt;Calendrier d'activité et outil de prise de rendez-vous en lien avec l'outil groupe&lt;/li&gt;
&lt;li&gt;Ajout automatique de la description du cours&lt;/li&gt;
&lt;li&gt;Message à tous les professeurs et à tous les étudiants, à tous les utilisateurs&lt;/li&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;12h10 - eLearning à HEC-Ecole de Gestion de l'Université de Liège par Dominique Rorive (Université de Liège, Belgique)&lt;/h3&gt;


&lt;p&gt;Dominique Rorive présente les différents niveaux pédagogique et technologique de l'utilisation du eLearning mis en évidence à HEC. Ces niveaux permettent de créer un tableau de bord sous forme d'un tableau à double entrée, afin de&amp;nbsp;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;catégoriser les cours et de répartir les cours&lt;/li&gt;
&lt;li&gt;communiquer vers les enseignants via un billet pédagogique&lt;/li&gt;
&lt;li&gt;prendre les décisions en matière de eLearning&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Présentation du billet pédagogique (vidéo de 8 minutes) communiqué aux enseignants de HEC-ULG afin d'améliorer l'usage des outils et présentation des outils peu utilisés.&lt;/p&gt;


&lt;p&gt;Dominique Rorive indique quelques problèmes rencontrés par les enseignants afin d'améliorer l'utilisation de la plateforme. Elle indique ensuite quelques demandes venant des étudiants (gestion du temps en particulier).&lt;/p&gt;


&lt;p&gt;D'autres défis se profilent pour l'avenir tant au niveau du tableau de bord que des technologies (podcast en particulier).&lt;/p&gt;


&lt;h3&gt;13h - Lunch&lt;/h3&gt;


&lt;p&gt;Une petite pause bien méritée au Resto Universitaire pour tous les participants.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Suite à des pépins de réseau, ce qui suit est un peu fragmentaire... je complèterai plus tard d'après mes notes...&lt;/strong&gt;&lt;/p&gt;


&lt;h3&gt;14h - Evaluation avec Claroline aux FUNDP par Pascale Lepage (Facultés Universitaires Notre-Dame de la Paix, Namur, Belgique)&lt;/h3&gt;


&lt;p&gt;Pascale Lepage explique que ls développeurs de la cellule TICE en charge du campus Claroline WebCampus aux FUNDP ont enrichi l'outil exercices de Claroline afin de le transformer en un outil d'évaluation des enseignements. Ce développement s'est fait suite à une réflexion au niveau institutionnel.&lt;/p&gt;


&lt;p&gt;Une première expérience a eu lieu en 2006-2007 dans 68 cours sur base volontaire (avec toutefois quelques restrictions) et ont atteint un taux de participation de 23%. Une seconde expérience a eu lieu en 2007 - 2008 dans 84 cours, toujours sur base volontaire.&lt;/p&gt;


&lt;h3&gt;14h45 - Exoline par Marina Zelwer (Université Jean-Monet, Saint-Etienne, France)&lt;/h3&gt;


&lt;p&gt;Marina Zelwer a présenté l'outil d'exercice Exoline et la plateforme ExoOnLine développée par son équipe. Il s'agit d'un outil de quiz en ligne avancé remplaçant les exercices de Claroline.&lt;/p&gt;


&lt;p&gt;Exoline ajoute de nombreuses fonctionnalités telles que question ouverte avec une plage de bonne réponses, multimédia dans les questions et les réponses, tri aléatoire des réponses, indice... ExoOnLine est une plateforme Claroline allégée pour Exoline.&lt;/p&gt;


&lt;p&gt;Exoline sera distribué sous licence CeCILL très prochainement.&lt;/p&gt;


&lt;h3&gt;15h30 - Pause&lt;/h3&gt;


&lt;h3&gt;16H - Séance de Poster&lt;/h3&gt;


&lt;h4&gt;Utilisation détournées de Claroline pour un système de management de la qualité&lt;/h4&gt;


&lt;p&gt;Présentation du l'utilisation de Claroline pour créer un ePortfolio et pour créer un système de management de la qualité par Philippe Mercenier. Utilisation de Claroline à l'ECAM, Bruxelles. Philippe Mercenier décrit tous les problèmes liés au management de la qualité et ceux inhérents à Claroline pour cet usage. Il décrit comment utiliser les outils de Claroline pour développer ce système.&lt;/p&gt;


&lt;p&gt;Durant les questions/réponses, d'autres usages détournés de la plateforme (gestion de projet, gestion du bâtiment, des contrats...) sont rapportées. Simplement en modifiant le domaine du langage de la plateforme.&lt;/p&gt;</content>
</entry>
<entry xml:lang="fr">
  <title>Tuto : Eloquent Javascript</title>
  <link rel="alternate" type="text/html" href="http://zefredz.frimouvy.org/dotclear/index.php?2008/05/02/213-tuto-eloquent-javascript" />
  <issued>2008-05-02T11:49:27+00:00</issued>
  <modified>2008-05-02T11:49:27+00:00</modified>
  <id>http://zefredz.frimouvy.org/dotclear/index.php?2008/05/02/213-tuto-eloquent-javascript</id>
  <author><name>ZeFredz</name></author>
  <dc:subject>Javascript</dc:subject>
  <summary>Eloquent Javascript est un tutoriel sur la programmation Javascript écrit par Marijn Haverbeke et publié sous licence CreativeCommons.


Il est disponible en ligne et est téléchargeable sous forme...</summary>
  <content type="text/html" mode="escaped"> &lt;p&gt;&lt;a href=&quot;http://eloquentjavascript.net/&quot; hreflang=&quot;en&quot;&gt;Eloquent Javascript&lt;/a&gt; est un tutoriel sur la programmation Javascript écrit par &lt;a href=&quot;http://marijn.haverbeke.nl/&quot; hreflang=&quot;en&quot;&gt;Marijn Haverbeke&lt;/a&gt; et publié sous licence CreativeCommons.&lt;/p&gt;


&lt;p&gt;Il est disponible en ligne et est téléchargeable sous forme d'une archive zip, contenant, outre le tutoriel lui-même, le code source et les bibliothèques de fonctions utilisées dans les différents exemples.&lt;/p&gt;


&lt;p&gt;Je n'en ai pas encore terminé la lecture, mais ce tutoriel semble très bien fait et les exemples sont assez didactiques.&lt;/p&gt;


&lt;p&gt;Le tutoriel débute par une petite introduction à la programmation, retraçant l'histoire depuis le langage machine jusqu'à Javascript. Ensuite, on aborde les bases de Javascript, ses structures de données,... avant d'aborder la programmation Web (à partir du chapitre 11).&lt;/p&gt;


&lt;p&gt;Ajoutons que ce tutoriel est interactif puisque chaque exemple peut être exécuté directement et modifié afin d'en comprendre le fonctionnement dansune console Javascript intégrée couplée à l'éditeur Javascript &lt;a href=&quot;http://marijn.haverbeke.nl/codemirror/index.html&quot; hreflang=&quot;en&quot;&gt;CodeMirror&lt;/a&gt; créé par l'auteur.&lt;/p&gt;


&lt;p&gt;Il s'agit d'une très bonne introduction pour ceux qui veulent apprendre Javascript ou découvrir la programmation à travers ce langage.&lt;/p&gt;


&lt;p&gt;&lt;em&gt;Remarque&amp;nbsp;: Le lecteur intéressé pour alors continuer son exploration de Javascript sur le très bon site de &lt;a href=&quot;http://www.crockford.com/javascript/&quot; hreflang=&quot;en&quot;&gt;Douglas Crockford&lt;/a&gt; et découvrir les dernières &lt;a href=&quot;http://developer.mozilla.org/en/docs/New_in_JavaScript_1.7&quot; hreflang=&quot;en&quot;&gt;nouveautés de Javascript 1.7 sur le site du projet Mozilla&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;</content>
</entry>
<entry xml:lang="fr">
  <title>Implémentation du système de classement Elo en Javascript</title>
  <link rel="alternate" type="text/html" href="http://zefredz.frimouvy.org/dotclear/index.php?2008/05/01/212-implementation-du-systeme-de-classement-elo-en-javascript" />
  <issued>2008-05-01T16:50:59+00:00</issued>
  <modified>2008-05-01T16:50:59+00:00</modified>
  <id>http://zefredz.frimouvy.org/dotclear/index.php?2008/05/01/212-implementation-du-systeme-de-classement-elo-en-javascript</id>
  <author><name>ZeFredz</name></author>
  <dc:subject>Javascript</dc:subject>
  <summary>Voici une implémentation simple du système de classement Elo, utilisé pour classer les joueurs d'échecs ou de go, en Javascript.


Un billet sur le blog Coding Horror m'a fait m'intéresser de plus près aux systèmes de classement et à leur application dans le domaine des jeux en ligne. En particulier, ce billet s'intéresse au système de classement Elo.</summary>
  <content type="text/html" mode="escaped">&lt;p&gt;&lt;img src=&quot;/dotclear/images/akiross_Chess_Set.png&quot; alt=&quot;Chess set&quot; style=&quot;float:right; margin: 0 0 1em 1em;&quot; /&gt;Voici une implémentation simple du système de classement Elo, utilisé pour classer les joueurs d'échecs ou de go, en Javascript.&lt;/p&gt;


&lt;p&gt;Un &lt;a href=&quot;http://www.codinghorror.com/blog/archives/000961.html&quot; hreflang=&quot;en&quot;&gt;billet sur le blog Coding Horror&lt;/a&gt; m'a fait m'intéresser de plus près aux systèmes de classement et à leur application dans le domaine des jeux en ligne. En particulier, ce billet s'intéresse au système de classement Elo.&lt;/p&gt; &lt;p&gt;Mais qu'est-ce que le système Elo&amp;nbsp;? Un petit tour sur la &lt;a href=&quot;http://fr.wikipedia.org/wiki/Classement_Elo&quot; hreflang=&quot;fr&quot;&gt;Wikipedia&lt;/a&gt; nous permet d'en savoir un peu plus sur ses principes de base.&lt;/p&gt;


&lt;p&gt;Le système de classement Elo a été créé par Arpad Elo, professeur de physique d'origine hongroise, et est utilisé pour classer les joueurs d'échecs ou de go.&lt;/p&gt;


&lt;p&gt;L'article décrit alors le fonctionnement du système de classement Elo, mais j'ai trouvé l'explication relativement difficile à suivre en français. Heureusement, &lt;a href=&quot;http://en.wikipedia.org/wiki/Elo_rating_system&quot; hreflang=&quot;en&quot;&gt;la version anglaise de l'article&lt;/a&gt; ainsi qu'un billet du blog &lt;em&gt;Life with Alacrity&lt;/em&gt; intitulé &lt;a href=&quot;http://www.lifewithalacrity.com/2006/01/ranking_systems.html&quot; hreflang=&quot;en&quot;&gt;''Collective Choice: Competitive Ranking Systems''&lt;/a&gt; décrivent plus en détails les algorithmes permettant de mettre en oeuvre Elo.&lt;/p&gt;


&lt;p&gt;Le principe est le suivant&amp;nbsp;: chaque joueur (équipe, monstre, niveau...) se voit attribuer un rang, par défaut 1500. Ce rang sera modifié à chaque match selon qu'il sera le gagnant ou perdant. Je ne vais pas rentrer ici dans les détails précis et les difficultés potentielles du système, l'article de la Wikipedia est très détaillé sur ce point. Voici donc simplement les algorithmes utilisés par le système Elo&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;Soit R, le rang actuel d'un joueur (1500 pour un nouveau joueur). Le rang R' du joueur après un match est donné par&lt;/p&gt;


&lt;pre&gt;R' = R + K * ( S - E )&lt;/pre&gt;


&lt;p&gt;où S est le score du jeu (1 en cas de victoire, 0 en cas de défaite), E est le résultat attendu du match calculé d'après le rang du joueur et de son adversaire, et K une &quot;constante&quot; donnant la valeur maximale de l'augmentation ou de la diminution du rang du joueur.&lt;/p&gt;


&lt;p&gt;Typiquement, la valeur de K varie selon le rang du joueur. Dans notre cas, les valeurs de K seront les suivantes&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;R &amp;lt; 2000, K = 32
2000 &amp;lt;= R &amp;lt;= 2400, K = 24
R &amp;gt; 2400, K = 16&lt;/pre&gt;


&lt;p&gt;Le score attendu E pour les joueurs A et B se calcule de la manière suivante&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;E_A = 1 / (1 + 10 ^ ( (R_B - R_A) / 400 ) )
E_B = 1 / (1 + 10 ^ ( (R_A - R_B) / 400 ) )
E_A + E_B = 1&lt;/pre&gt;


&lt;p&gt;où E_A et E_B sont les scores attendu pour le joueur A et le joueur B, R_A et R_B les rang respectifs des joueurs.&lt;/p&gt;


&lt;p&gt;Voici maintenant le code Javascript du système Elo. Premièrement, créons un objet pour stocker toutes les méthodes de Elo afin qu'elles ne parasite pas l'espace Global de Javascript&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;[lang=javascript]
/* nous rendons le constructeur souple afin d'accepter d'autres 
    valeurs que 1500 pour le rang par défaut */
var Elo = function( rankings, defaultRanking ){
   this.rankings = rankings || {};
   this.defaultRanking = defaultRanking || 1500;
};&lt;/pre&gt;


&lt;p&gt;testons notre classe&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;[lang=javascript]
var e = new Elo;&lt;/pre&gt;


&lt;p&gt;Ajoutons maintenant quelques méthodes pour accéder au rang d'un joueur&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;[lang=javascript]
Elo.prototype.getRanking = function( player ){
       if ( ! this.rankings[player] ){
           this.setRanking( player, this.defaultRanking );
       }
       
       return this.rankings[player];
   };
Elo.prototype.setRanking = fucntion( player, ranking ){
       this.rankings[player] = ranking;
   };&lt;/pre&gt;


&lt;p&gt;Un petit test&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;[lang=javascript]
e.getRanking( 'me' ); 
// -&amp;gt; 1500
e.setRanking( 'me', 1900 );
e.getRanking( 'me' ); 
// -&amp;gt; 1900&lt;/pre&gt;


&lt;p&gt;Voici maintenant la méthode permettant de calculer le score attendu d'un joueur&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;[lang=javascript]
Elo.prototype.getExpectedScore = function( player1Ranking, player2Ranking ){
       var exponent = - ( player1Ranking - player2Ranking ) / 400;
       return 1 / ( 1 + ( Math.pow( 10, exponent ) ) );
   };&lt;/pre&gt;


&lt;p&gt;Testons la méthode&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;[lang=javascript]
var e = new Elo;
e.getExpectedScore( e.getRanking('me'), e.getRanking('you') ); 
// -&amp;gt; 0.5
e.getExpectedScore( e.getRanking('you'), e.getRanking('me') ); 
// -&amp;gt; 0.5
// la somme vaut bien 1
e.setRanking( 'me', 1900 );
e.getExpectedScore( e.getRanking('me'), e.getRanking('you') ); 
// -&amp;gt; 0.9090909090909091
e.getExpectedScore( e.getRanking('you'), e.getRanking('me') ); 
// -&amp;gt; 0.09090909090909091
// la somme vaut bien 1&lt;/pre&gt;


&lt;p&gt;A partir de là, nous pouvons mettre à jour le rang d'un joueur&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;[lang=javascript]
Elo.prototype.getRankingConstant = function( ranking ) {
       if ( ranking &amp;lt; 2000 ) {
           return 32;
       }
       else if ( ranking &amp;gt;= 2000 &amp;amp;&amp;amp; ranking &amp;lt; 2400 ) {
           return 24;
       }
       else {
           return 16;
       }
   };
Elo.prototype.updatePlayerRanking = function( player1, player2, player1Victory ){
       // rang du premier joueur
       var player1Ranking = this.getRanking( player1 );
       // rang du second joueur
       var player2Ranking = this.getRanking( player2 );
       // score du premier joueur
       var score = player1Victory ? 1 : 0;
       // score attendu du joueur pour le match
       var expectedScore = this.getExpectedScore( player1Ranking, player2Ranking );
       // valeur de K pour le joeur
       var k = this.getRankingConstant( player1Ranking );
       // calcul du nouveau rang
       newRanking = Math.round( player1Ranking + k * ( score - expectedScore ) );  
       this.setRanking( player1, newRanking );
       return newRanking;
   };&lt;/pre&gt;


&lt;p&gt;Un petit test&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;[lang=javascript]
e.updatePlayerRanking( 'me', 'you', true );
// -&amp;gt; 1903
e.getRanking( 'me' );
// -&amp;gt; 1903&lt;/pre&gt;


&lt;p&gt;Comme les deux joueurs disputent les match, il faut mettre à jour le rang des deux joueurs&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;[lang=javascript]
Elo.prototype.updateRankings = function( player1, player2, player1Victory ){
       var player1NewRanking = this.updatePlayerRanking( player1, player2, player1Victory );
       var player2NewRanking = this.updatePlayerRanking( player2, player1, ! player1Victory );
       
       return [player1NewRanking, player2NewRanking];
   };&lt;/pre&gt;


&lt;p&gt;Testons cette methode&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;[lang=javascript]
e.updateRankings( 'me', 'you', true );
// -&amp;gt; 1906, 1497&lt;/pre&gt;


&lt;p&gt;Et voilà, nous avons un système relativement simple pour gérer le classement des joueurs dans un jeu en ligne. J'espère que cela pourra servir.&lt;/p&gt;</content>
</entry>
<entry xml:lang="fr">
  <title>Helma - Javascript on Rails</title>
  <link rel="alternate" type="text/html" href="http://zefredz.frimouvy.org/dotclear/index.php?2008/05/01/211-helma---javascript-on-rails" />
  <issued>2008-05-01T15:34:01+00:00</issued>
  <modified>2008-05-01T15:34:01+00:00</modified>
  <id>http://zefredz.frimouvy.org/dotclear/index.php?2008/05/01/211-helma---javascript-on-rails</id>
  <author><name>ZeFredz</name></author>
  <dc:subject>Javascript</dc:subject>
  <summary>Helma est un Framework d'application Web MVC utilisant Javascript, combiné un serveur d'application Web basé sur Jetty. Helma fournit des fonctionnalités très proches de Ruby on Rails ou de Cake PHP....</summary>
  <content type="text/html" mode="escaped"> &lt;p&gt;&lt;a href=&quot;http://dev.helma.org/&quot; hreflang=&quot;en&quot;&gt;Helma&lt;/a&gt; est un Framework d'application Web &lt;acronym title=&quot;Model View Controller&quot;&gt;MVC&lt;/acronym&gt; utilisant Javascript, combiné un serveur d'application Web basé sur &lt;a href=&quot;http://www.mortbay.org/jetty-6/&quot; hreflang=&quot;en&quot;&gt;Jetty&lt;/a&gt;. Helma fournit des fonctionnalités très proches de Ruby on Rails ou de Cake PHP.&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://dev.helma.org/static/helma.dev/helma_g.gif&quot; alt=&quot;Logo du projet Helma&quot; style=&quot;float:left; margin: 0 1em 1em 0;&quot; /&gt;Helma est une solution très tentante pour ceux qui veulent se lancer rapidement dans le développement d'application Javascript côté serveur.&lt;/p&gt;


&lt;p&gt;Helma utilise le moteur Javascript &lt;a href=&quot;http://www.mozilla.org/rhino/&quot; hreflang=&quot;en&quot;&gt;Rhino&lt;/a&gt;&lt;sup&gt;[&lt;a href=&quot;#pnote-211-1&quot; name=&quot;rev-pnote-211-1&quot;&gt;1&lt;/a&gt;]&lt;/sup&gt;, la bibliothèque d'extension Javascript &lt;a href=&quot;http://dev.orf.at/trac/jala/&quot; hreflang=&quot;en&quot;&gt;Jala&lt;/a&gt; et peut-être facilement étendu soit en Javascript, soit en Java grâce à un mécanisme permettant l'appel à des classes Java depuis les scripts Javascript. L'accès à des bases de données MySQL se fait à travers l'interface JDBC de Java.&lt;/p&gt;


&lt;p&gt;Bref un projet à suivre...&lt;/p&gt;


&lt;p&gt;Pour tester ce framework ou pour plus d'information, rendez-vous sur &lt;a href=&quot;http://dev.helma.org/&quot; hreflang=&quot;en&quot;&gt;Helma.org&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;&lt;h4&gt;Notes&lt;/h4&gt;
&lt;p&gt;[&lt;a href=&quot;#rev-pnote-211-1&quot; name=&quot;pnote-211-1&quot;&gt;1&lt;/a&gt;] implémentation de SpiderMonkey du projet Mozilla en Java&lt;/p&gt;&lt;/div&gt;</content>
</entry>
<entry xml:lang="fr">
  <title>Un peu de LISP en Javascript</title>
  <link rel="alternate" type="text/html" href="http://zefredz.frimouvy.org/dotclear/index.php?2008/05/01/210-un-peu-de-lisp-en-javascript" />
  <issued>2008-05-01T15:22:02+00:00</issued>
  <modified>2008-05-01T15:22:02+00:00</modified>
  <id>http://zefredz.frimouvy.org/dotclear/index.php?2008/05/01/210-un-peu-de-lisp-en-javascript</id>
  <author><name>ZeFredz</name></author>
  <dc:subject>Javascript</dc:subject>
  <summary>Javascript est un langage fonctionnel. On le qualifie souvent de "Lisp habillé en C". Voici donc une petite implémentation de structures de base de LISP, les structures cons cell.</summary>
  <content type="text/html" mode="escaped">&lt;p&gt;&lt;img src=&quot;/dotclear/images/oreillyjs.png&quot; alt=&quot;Logo Javascript O&amp;#039;Reilly&quot; style=&quot;float:left; margin: 0 1em 1em 0;&quot; /&gt;Javascript est un langage fonctionnel. On le qualifie souvent de &quot;Lisp habillé en C&quot;. Voici donc une petite implémentation de structures de base de LISP, les structures &lt;em&gt;cons cell&lt;/em&gt;.&lt;/p&gt; &lt;p&gt;Mais avant tout qu'est-ce exactement que cette structure de donnée issue du langage Lisp&lt;sup&gt;[&lt;a href=&quot;#pnote-210-1&quot; name=&quot;rev-pnote-210-1&quot;&gt;1&lt;/a&gt;]&lt;/sup&gt;&amp;nbsp;? Il s'agit d'une paire (a, b) où a, la tête (head), est une variable (par exemple un entier) et b, appelé queue (tail), est lui même une paire ou null.&lt;/p&gt;


&lt;p&gt;Nous définissons la fonction &lt;em&gt;cons&lt;/em&gt; comme étant&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;cons a, b -&amp;gt; (a, b)&lt;/pre&gt;


&lt;p&gt;On définit deux fonctions sur les &lt;em&gt;cons cells&lt;/em&gt;&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;car : (a, b) -&amp;gt; a, retourne la tête de la paire
cdr : (a, b) -&amp;gt; b, retourne la queue de la paire&lt;/pre&gt;


&lt;p&gt;Les &lt;em&gt;cons cells&lt;/em&gt; peuvent être utilisées pour définir des listes (1, 2, 3), des arbres &lt;img src=&quot;1, 2), (3, 4, 5&quot; alt=&quot;&quot; /&gt;, et autres structures complexes.&lt;/p&gt;


&lt;p&gt;Plutôt que d'implémenter cette structure à l'aide d'un objet ou d'un Array, voici une manière d'implémenter les &lt;em&gt;cons cells&lt;/em&gt; en Javascript, uniquement basée sur des fonctions&lt;sup&gt;[&lt;a href=&quot;#pnote-210-2&quot; name=&quot;rev-pnote-210-2&quot;&gt;2&lt;/a&gt;]&lt;/sup&gt; et donc beaucoup plus dans l'esprit Lisp&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;[lang=javascript]
var cons = function( a, b ){
   b = b || null;
   
   return function( pick ){
       return pick ? a : b;
   }
};&lt;/pre&gt;


&lt;p&gt;Cette implémentation utilise le fait que Javascript peut retourner des fonctions partiellement évaluées (Currying). Elle illustre également les closures en Javascript dont j'ai déjà parlé précédemment, en particulier dans mon billet sur la &lt;a href=&quot;/dotclear/index.php?2006/10/08/146-memoize-pour-javascript&quot; hreflang=&quot;fr&quot;&gt;mémoisation&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Voici un petit exemple d'utilisation&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;[lang=javascript]
var c = cons( 1, cons( 2, cons( 3 ) ) );&lt;/pre&gt;


&lt;p&gt;Définissons maintenant car et cdr&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;[lang=javascript]
var car = function ( c ){
   return c( true );
};
var cdr = function ( c ){
   return c( false );
};&lt;/pre&gt;


&lt;p&gt;&lt;em&gt;NB&lt;/em&gt;&amp;nbsp;: on arrive au bout de la liste lorsque cdr( c ) est égal à null.&lt;/p&gt;


&lt;p&gt;Nous pouvons alors les utiliser avec la structure &lt;em&gt;cons&lt;/em&gt; définie plus haut&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;[lang=javascript]
car( c ); // -&amp;gt; 1
cdr( c ); // -&amp;gt; function(pick){...}
car( cdr( c ) ); // -&amp;gt; 2&lt;/pre&gt;


&lt;p&gt;Le défaut de cette implémentation est qu'elle est peu intuitive. On aimerait pouvoir définir une liste avec des &lt;em&gt;cons cells&lt;/em&gt; simplement en donnant les élements qu'elle contient, sans avoir à imbriquer les appels à la fonction &lt;em&gt;cons&lt;/em&gt;, quelque chose du type de ce que l'on a en Lisp&amp;nbsp;: '(1, 2, 3). Ajoutons la fonction &quot;facilitatrice&quot;&lt;sup&gt;[&lt;a href=&quot;#pnote-210-3&quot; name=&quot;rev-pnote-210-3&quot;&gt;3&lt;/a&gt;]&lt;/sup&gt; &lt;em&gt;list&lt;/em&gt;&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;list( a, b, c, d...) -&amp;gt; cons( a, cons( b, cons( c, ... ) ) )&lt;/pre&gt;


&lt;p&gt;Et implémentons là en Javascript&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;[lang=javascript]
var list = function(){
   var ret = null;
   var n = arguments.length - 1;
   
   for ( var x = n; x &amp;gt;= 0; x-- ){
       ret = cons( arguments[x], ret );
   }
   return ret;
};&lt;/pre&gt;


&lt;p&gt;Nous pouvons maintenant, à partir des fonctions &lt;em&gt;cons&lt;/em&gt;, &lt;em&gt;car&lt;/em&gt; et &lt;em&gt;cdr&lt;/em&gt;, écrire des fonctions permettant de manipuler ces structures. A titre d'exemple, voici la fonction &lt;em&gt;concat&lt;/em&gt; qui permet de concaténer deux listes générées à l'aide de &lt;em&gt;cons cells&lt;/em&gt;&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;[lang=javascript]
var concat = function ( c1, c2 ){
   if ( typeof c1 == 'function' ){
       if ( cdr( c1 ) !== null ){
           c2 = concat( cdr( c1 ), c2 );
       }
       
       return cons( car( c1 ), c2 );
   }
   else if ( c1 == null ){
       return c2;
   }
   else {
       return cons( c1, c2 );
   }
};&lt;/pre&gt;


&lt;p&gt;Cette fonction est une fonction récursive qui va descendre le long de la première liste en utilisant &lt;em&gt;cdr&lt;/em&gt; et, arrivée au bout de celle-ci va la remonter afin de concaténer ses éléments au début de la seconde liste en utilisant &lt;em&gt;car&lt;/em&gt; et &lt;em&gt;cons&lt;/em&gt;.&lt;/p&gt;


&lt;p&gt;Voici un exemple pour la tester&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;[lang=javascript]
var c1 = list( 1, 2 );
var c2 = list( 3, 4 );
var c3 = concat( c1, c2 );
car( cdr( cdr( c3 ) ) ); // -&amp;gt; 3&lt;/pre&gt;


&lt;p&gt;Sur l'exemple de &lt;em&gt;concat&lt;/em&gt;, on pourra alors écrire d'autres fonctions de manipulation des &lt;em&gt;cons cells&lt;/em&gt;. Vous pouvez par exemple essayer de définir la fonction &lt;em&gt;flatten&lt;/em&gt; qui aplatit une stucture complexe&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;flatten( (1, (2, 3), 4) ) -&amp;gt; (1, 2, 3, 4)&lt;/pre&gt;


&lt;p&gt;Vous trouverez le code de ces exemples ainsi que l'implémentation d'autres fonctions sur les structures &lt;em&gt;cons&lt;/em&gt; (nth, flatten...) dans le fichier &lt;a href=&quot;/dlarea/cons.js&quot;&gt;cons.js&lt;/a&gt;&lt;sup&gt;[&lt;a href=&quot;#pnote-210-4&quot; name=&quot;rev-pnote-210-4&quot;&gt;4&lt;/a&gt;]&lt;/sup&gt;.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;&lt;h4&gt;Notes&lt;/h4&gt;
&lt;p&gt;[&lt;a href=&quot;#rev-pnote-210-1&quot; name=&quot;pnote-210-1&quot;&gt;1&lt;/a&gt;] en réalité, la première fois où j'ai rencontré les stuctures &quot;cons cell&quot; c'était dans un cours sur le langage Oz/Mozart quand j'étais encore étudiant et je les ai redécouvertes en Lisp et en Scheme plus récemment.&lt;/p&gt;
&lt;p&gt;[&lt;a href=&quot;#rev-pnote-210-2&quot; name=&quot;pnote-210-2&quot;&gt;2&lt;/a&gt;] Cette implémentation est inspiré d'un exemple trouvé sur le web dont je ne retrouve plus l'URL, dès que je l'aurai retrouvée, je la mettrai ici&lt;/p&gt;
&lt;p&gt;[&lt;a href=&quot;#rev-pnote-210-3&quot; name=&quot;pnote-210-3&quot;&gt;3&lt;/a&gt;] ou helper en anglais&lt;/p&gt;
&lt;p&gt;[&lt;a href=&quot;#rev-pnote-210-4&quot; name=&quot;pnote-210-4&quot;&gt;4&lt;/a&gt;] Ce code est encore loin d'être parfait et contient sans doute encore de nombreux bugs, entre autre la fonction &lt;em&gt;cons2str&lt;/em&gt; est buggée avec des listes complexes non aplaties, et il est sans doute possible d'améliorer l'implémentation des fonctions récursives...&lt;/p&gt;&lt;/div&gt;</content>
</entry>
<entry xml:lang="fr">
  <title>Parcourir un objet en Javascript</title>
  <link rel="alternate" type="text/html" href="http://zefredz.frimouvy.org/dotclear/index.php?2008/05/01/209-parcourir-un-objet-en-javascript-17" />
  <issued>2008-05-01T14:42:19+00:00</issued>
  <modified>2008-05-01T14:42:19+00:00</modified>
  <id>http://zefredz.frimouvy.org/dotclear/index.php?2008/05/01/209-parcourir-un-objet-en-javascript-17</id>
  <author><name>ZeFredz</name></author>
  <dc:subject>Javascript</dc:subject>
  <summary>Voici trois manières de parcourir les propriétés d'un objet en Javascript (testé en Javascript 1.7)</summary>
  <content type="text/html" mode="escaped">&lt;p&gt;Voici trois manières de parcourir les propriétés d'un objet en Javascript (testé en Javascript 1.7)&lt;/p&gt; &lt;p&gt;Définissons un objet pour tester les différentes méthodes&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;[lang=javascript]
var t = {
    id: 5, 
    name: 'Master of Horror - season 1 (DVD)', 
    price: 35, 
    currency: 'euro', 
    stock: 5};&lt;/pre&gt;


&lt;p&gt;Première manière&amp;nbsp;: utiliser les clés&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;[lang=javascript]
for ( var cle in t ) {
    // cle contient le nom de la clé
    // on peut obtenir la valeur via t[cle]
    println( cle+':'+t[cle] );
}&lt;/pre&gt;


&lt;p&gt;le résultat sera&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;id:5 
name:Master of Horror - season 1 (DVD)
price:35
currency:euro
stock:5&lt;/pre&gt;


&lt;p&gt;Seconde manière&amp;nbsp;: utiliser les valeurs via for each ... in introduit en Javascript 1.6&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;[lang=javascript]
for each ( var valeur in t ){
    println( valeur );
}&lt;/pre&gt;


&lt;p&gt;cette fois, le résultat sera&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;5 
Master of Horror - season 1 (DVD)
35
euro
5&lt;/pre&gt;


&lt;p&gt;Troisième manière&amp;nbsp;: utiliser les clés et les valeurs&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;[lang=javascript]
for ( var [cle, valeur] in t ){
    println(cle+':'+valeur);
}&lt;/pre&gt;



&lt;p&gt;le résultat sera identique à la première façon de procéder&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;id:5 
name:Master of Horror - season 1 (DVD)
price:35
currency:euro
stock:5&lt;/pre&gt;


&lt;p&gt;Et voilà, c'est tout pour aujourd'hui.&lt;/p&gt;


&lt;p&gt;Plus d'info dans la &lt;a href=&quot;http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Guide:Object_Manipulation_Statements&quot; hreflang=&quot;en&quot;&gt;documentation de Javascript sur le site de Mozilla&lt;/a&gt;.&lt;/p&gt;</content>
</entry>
</feed>