<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>blog ntic de revolunet &#187; Javascript</title>
	<atom:link href="http://blog.revolunet.com/index.php/conseil.intranet/developpement/javascript/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.revolunet.com</link>
	<description>Blog des Nouvelles Technologies de l'Information et de la Communication</description>
	<lastBuildDate>Thu, 05 Jan 2012 11:03:32 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Le point sur ExtJs 4</title>
		<link>http://blog.revolunet.com/index.php/general/le-point-sur-extjs-4</link>
		<comments>http://blog.revolunet.com/index.php/general/le-point-sur-extjs-4#comments</comments>
		<pubDate>Thu, 05 Jan 2012 11:03:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[actu informatique]]></category>
		<category><![CDATA[sencha]]></category>

		<guid isPermaLink="false">http://blog.revolunet.com/?p=533</guid>
		<description><![CDATA[Ca fait deja quelques années qu’ExtJS fait le bonheur des développeurs d’applications web complexes. Depuis sa premiere version ce framework javascript a su tirer le meilleur de nos browsers web, permettant à ses utilisateurs le développement d’interfaces riches, robustes et évolutives. Pour ceux qui ne connaissent pas encore cette technologie, je vous invite à aller [...]]]></description>
			<content:encoded><![CDATA[<p>Ca fait deja quelques années qu’ExtJS fait le bonheur des <strong>développeurs d’applications web complexes</strong>. Depuis sa premiere version ce framework javascript a su tirer le meilleur de nos browsers web, permettant à ses utilisateurs le développement d’interfaces riches, robustes et évolutives. Pour ceux qui ne connaissent pas encore cette technologie, je vous invite à aller <a href="http://www.sencha.com/products/extjs/examples/" target="_blank">jeter un oeil au site de Sencha</a> qui présente parfaitement les différents produits réalisés par cette companie.</p>
<p>Aujourd’hui la version 4 d’ExtJS est disponible, stable et remplie de nouveautés faisant toute la différence avec la version 3 qui était deja tres appréciées des codeurs de webapps.</p>
<p>Chez REVOLUNET ça fait deja quelques mois que nous utilisons cette version et il est temps pour nous de vous faire un petit retour d’expérience.</p>
<h4><strong>SO WHAT’S NEW ?</strong></h4>
<p><strong> </strong>Les nouveautés implémentées dans ExtJS 4 sont nombreuses, nous n’allons pas les lister ici mais simplement parler de ce qui nous parait comme une avancée notable par rapport aux versions précédentes.</p>
<p><strong>1) The MVC model</strong><br />
Le but d’architecturer sont code selon le modèle MVC est une avancée importante. Auparavant le code métier (controlleurs) etait souvent mélangé avec la description de l’interface et des données (views and models), les actions concernant les éléments du design étant déclarées au meme niveau que les attributs influants sur l’affichage.</p>
<p>Exemple avec ExtJS 3 : un bouton et sa fonction s’exécutant lors du clic.</p>
<div class="codesnip-container" >var button = new Ext.Button({<br />
iconCls: ‘my-icon-class’,<br />
handler: function() {<br />
// on my button click a form is submitted&#8230;<br />
}<br />
});</div>
<p>Bien sûr cette facon de déclarer un bouton dans ExtJS 4 est encore valide mais lors du développement d’interfaces complexes cette méthode peut s’avérer assez inefficace. Imaginons que notre bouton soit perdu au milieu de l’imbrication de plusieurs widgets et que le clic sur ce dernier doit déclencher différentes actions un peu partout dans l’application. Et bien notre seule facon de faire les choses proprement était de déclencher des évenement personnalisés et de les relayer “à la main” (bubble, cascade, relayEvent&#8230;) pour qu’ils soient pris en compte dans les autres éléments de l’interface.</p>
<p>Désormais ExtJS 4 nous propose une alternative à cette architecture que nous avions l’habitude d’avoir avec ExtJS 3. Il suffit pour cela de séparer les deux codes, la déclaration de notre bouton dans une “vue” et les actions le concernant dans un &#8220;controlleur&#8221;.</p>
<p>Exemple avec ExtJS 4 :</p>
<p>myView.js</p>
<div class="codesnip-container" >var button = Ext.create(‘Ext.Button’, {<br />
iconCls: ‘my-icon-class’,<br />
action: ‘submit_a_form’<br />
});</div>
<p>myControlleur.js</p>
<div class="codesnip-container" >// …</p>
<p>init: function() {<br />
this.control({<br />
&#8216;viewport button[action=submit_a_form]&#8216;: {<br />
click: function() {<br />
// on my button click a form is submitted&#8230;<br />
}<br />
}<br />
});<br />
}</p></div>
<p>Dans cet exemple on peut voir l’utilisation du nouveau concept de “ComponentQuery” qui a la maniere des selecteurs CSS permet d’obtenir une référence à n’importe quel composant de notre interface. Ici &#8216;viewport button[action=submit_a_form]&#8216; signifie “le bouton du viewport qui comporte un attribut action égal à submit_a_form”.<br />
Il suffit ensuite d’associer les évènements a notre bouton sans ce soucier des son imbrication dans les widgets de notre application. Cerise sur le gateau grace à cette technique, les évènement peuvent etre déclarés avant que les widgets (ici notre bouton) n’aient été “render”.<br />
Si un nouveau bouton faisant parti de notre viewport et ayant un attribut action égal à submit_a_form est créé il repondra au meme fonctionnement, meme s’il n’est pas rendu au load initial de l’application.</p>
<p>Dans cet exemple on peut aussi apprécier l’utilisation de Ext.create qui évite d’avoir un code truffé de “new Ext.Button” qui étaient interprétés au run time. Cela a pour effet d’accélérer grandement le chargement de l’application.</p>
<p><strong>2) Ext.loader</strong></p>
<p>Ce n’est pas à proprement dit une nouveauté d’ExtJS 4 car cette fonctionnalité existait deja en partie dans la version 3 du framework. Disons simplement que le load dynamique des ressources de votre application est désormais induite pour peu qu’on en ai envie.</p>
<p>Si nous reprenons les projets que nous avons développer chez REVOLUNET avec ExtJS 3, on peut voir des fichiers “index.html” démesurément grands car ils comportent toutes les inclusions des differents scripts necessaires au bon fonctionnement de l’application, meme si ces resources ne sont pas utilisées au load de la page.</p>
<p>Aujourd’hui la donne a changée, ExtJS se chargeant d’aller chercher les ressources nécessaires au fur et a mesure de leur utilisation. Ceci comporte deux avantages a nos yeux, le premier etant de ne plus se soucier de savoir si les bons fichiers sont inclus dans l’index, le deuxième est que cette technique nous force a organiser notre projet d’un facon bien spécifique afin qu’ExtJS soit en mesure de trouver le code qu’il souhaite charger quand il le juge necessaire.</p>
<p>Afin de bien comprendre le fonctionnement du chargement dynamique de vos scripts nous vous invitons à lire cet article: http://www.sencha.com/blog/using-ext-loader-for-your-application</p>
<p><strong>SO WHAT’S THE POINT ?</strong></p>
<p>Il aurait beaucoup de choses a dire sur la nouvelle version d’ExtJS 4, la gestion des données, la configuration des objets complexes comme les grids ou les forms, les améliorations de performances&#8230; les avancées apportées par le nouvelles version de ce framework sont nombreuses.</p>
<p>En ce qui nous concerne il est évident qu’ExtJS a fait un réel bon en avant avec la sortie de la version 4. Concrètement notre point de vue de développeurs spécialisés dans les applications web est qu’ExtJS 4 va nous faire gagner un temps precieux lors du développement de nos nouveaux projets. Et ca, ca vaut de l’or <img src='http://blog.revolunet.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>De plus, de nombreuses améliorations ont également été portées dans Sencha Touch 2 (gestion des classes, loader&#8230;), ce qui nous permet de capitaliser en compétence sur les projets basés sur les frameworks Sencha, que ce soit pour les applis Desktop, ou mobiles.</p>
<p>N&#8217;hésitez pas à nous consulter pour vos besoins en<a href="http://revolunet.com"> développement d&#8217;applications web riches</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.revolunet.com/index.php/general/le-point-sur-extjs-4/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Django internationalisation made easy with i18n</title>
		<link>http://blog.revolunet.com/index.php/general/django-internationalisation-with-i18n</link>
		<comments>http://blog.revolunet.com/index.php/general/django-internationalisation-with-i18n#comments</comments>
		<pubDate>Wed, 08 Sep 2010 20:12:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[django]]></category>

		<guid isPermaLink="false">http://blog.revolunet.com/?p=431</guid>
		<description><![CDATA[Ok so now you have your new django based killer app you&#8217;d like to translate it into several languages. Here&#8217;s a quick memo to get all this running quickly.
Django provides all the tools you need to do this effectively. You can use simple string translations or create more advanced rules with various plurals forms, variable [...]]]></description>
			<content:encoded><![CDATA[<p>Ok so now you have your new django based killer app you&#8217;d like to translate it into several languages. Here&#8217;s a quick memo to get all this running quickly.</p>
<p>Django provides all the tools you need to do this effectively. You can use simple string translations or create more advanced rules with various <a href="http://docs.djangoproject.com/en/dev/topics/i18n/internationalization/#pluralization" target="_blank">plurals forms, variable interpolations</a>&#8230;</p>
<p>First, be sure to use UTF-8 encode anywhere in your project :</p>
<ul>
<li>Save your file as UTF-8 (check your text editor)</li>
<li>Declare python files encoding with this at the top of each python file (see <a href="http://www.python.org/dev/peps/pep-0263/" target="_blank">PEP 263</a>) :<br />
# -*- encoding: UTF-8 -*-</li>
<li><a href="http://www.python.org/dev/peps/pep-0263/" target="_blank">Define your strings as unicode</a> if needed</li>
<li>Be warned : mixing encodings and charsets in a project can cause hasardous/mystical issues then massive headaches</li>
</ul>
<p>Django provides several builtin tools to help you internationalise :</p>
<ul>
<li><strong>makemessages</strong> command : scan your code to extract definition and create a .po file</li>
<li><strong>compilemessages </strong>command : compile your translations in the .po files to .mo</li>
<li><strong>django.middleware.locale.LocaleMiddleWare </strong>: Autodetect user language (from browser) or use session defined language (or fallback to project default)</li>
<li><strong>django.core.context_processors.i18n</strong>: add LANGUAGE_CODE and LANGUAGES variables to your templates</li>
<li><strong>django.conf.urls.i18n </strong>: a view that accepts a language POST parameter to change session language</li>
<li><strong>django.views.i18n.javascript_catalog </strong>: provides a javascript array with the translations and helpers functions gettext&#8230;</li>
</ul>
<p><b>So lets internationalise our project :</b><br />
<br />
Django make it easier to work with app level localisations and not project-global files.<br />
So you must create a ‘locale’ subfolder for each app you want to localize.<br />
Create a ‘fr’ and ‘en’ folder inside each ‘locale’ folder. (or more if needed)<br />
Try first to translate a first app in a second language before going on.<br />
</p>
<h2>Activate django.middleware.locale.LocaleMiddleWare and tweak your settings.py :</h2>
<pre class="brush: python">
# -*- encoding: UTF-8 -*-

TIME_ZONE = &#039;Europe/Paris&#039;
LANGUAGE_CODE = &#039;fr-FR&#039;
USE_I18N = True

# see http://code.djangoproject.com/browser/django/trunk/django/conf/global_settings.py
gettext = lambda s: s
LANGUAGES = (
(&#039;fr&#039;, gettext(u&#039;French&#039;)),
(&#039;en&#039;, gettext(&#039;English&#039;)),
)

MIDDLEWARE_CLASSES = (
&#039;django.contrib.sessions.middleware.SessionMiddleware&#039;,
&#039;django.middleware.locale.LocaleMiddleware&#039;,
&#039;django.middleware.common.CommonMiddleware&#039;,
&#039;django.contrib.auth.middleware.AuthenticationMiddleware&#039;,
)

TEMPLATE_CONTEXT_PROCESSORS = (
&quot;django.core.context_processors.auth&quot;,
&quot;django.core.context_processors.debug&quot;,
&quot;django.core.context_processors.i18n&quot;,
&quot;django.core.context_processors.media&quot;,
&quot;django.core.context_processors.debug&quot;,
)
</pre>
<h2>Add a lang toolbar to your template and connect to the django.conf.urls.i18n view :</h2>
<p>Add a simple lang bar to your base template :</p>
<pre class="brush: html">
   {% load i18n %}
    &lt;div id=&#039;langbar&#039; style=&#039;text-align:right;padding-top:5px;&#039;&gt;
        &lt;form name=&#039;langform&#039; style=&#039;margin:0px;display:inline;width:200px&#039; action=&#039;/i18n/setlang/&#039; method=&#039;POST&#039;&gt;
            {% for LANG in LANGUAGES  %}
                &lt;img src=&#039;{{ MEDIA_URL }}img/flags/{{ LANG.0 }}.png&#039; title=&quot;{% trans LANG.1 %}&quot; style=&#039;margin:5px;cursor:pointer&#039; onclick=&quot;document.langform.language.value=&#039;{{ LANG.0 }}&#039;;document.langform.submit();&quot;&gt;
            {% endfor %}
            &lt;input name=&#039;language&#039; type=hidden value=&quot;{{ LANGUAGE_CODE }}&quot;&gt;
            current LANG : {{ LANGUAGE_CODE }}
        &lt;/form&gt;
    &lt;/div&gt;
</pre>
<p>As you can see, when you enable i18n context processor, your templates can acces <a target="_blank" href="http://docs.djangoproject.com/en/dev/ref/templates/api/#django-core-context-processors-i18n">new variables</a> like LANGUAGE_CODE or LANGUAGES</p>
<p>Now add the /i18n/setlang/ view in your urls.py.<br />
This view accepts language POST parameter then redirect user to REFERER page (or one designed with ?next GET parameter). Selected language is then kept in session.</p>
<pre class="brush: python">
urlpatterns += patterns(&#039;&#039;,
    (r&#039;^i18n/&#039;, include(&#039;django.conf.urls.i18n&#039;)),
)
</pre>
<p>Now, check if when you submit the form, the selected language is kept in session. If not check your database (need the session table), restart your dev server or enable settings.DEBUG  <img src='http://blog.revolunet.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>If you can submit your lang and LANGUAGE_CODE is kept in session, <strong>bravo</strong>, your django is multilingual ready. </p>
<h2>Internationalise your code</h2>
<p>In your templates : just load i18n then replace every string with a <a target="_blank" href="http://docs.djangoproject.com/en/dev/topics/i18n/internationalization/#trans-template-tag">trans tag</a></p>
<pre class="brush: html">
{% load i18n %}
&lt;div class=&quot;main&quot;&gt;{% trans &quot;Welcome to our new website&quot; %}&gt;&lt;/div&gt;
{% block contents %}&lt;img src=&quot;/img/intro-{{ LANGUAGE_CODE }}&quot;/&gt;{% trans &quot;This is the intro&quot; %}{% block %}
</pre>
<p>In your views : just import django.utils.translation.gettext then replace every string with gettext(thestring)</p>
<pre class="brush: python">
from django.utils.translation import gettext as _ # just a shortcut
def view(request):
    hello = _(&#039;Hello, World&#039;)
    return HttpResponse(&#039;&lt;b&gt;%s&lt;/b&gt;&#039; % hello)
</pre>
<p>Now each time you run the makemessages command for this app, it will detect these string and update this app django.po files accordingly.</p>
<h2>Generate the .po, traduct then compile to .mo</h2>
<ol>
<li><strong>From this app folder</strong>, run
<pre class="brush: bash">python ../manage.py makemessages --all</pre>
<p>This will scan this app .py and .html files for gettext/trans calls and generate or update a django.po file for each lang.</li>
<li>Now you can edit (manually) this old-fashionned-style .po file with your favorite  text editor.<br />
If your site default is English, edit app/locale/fr/LC_MESSAGES/django.po (and djangojs.po if needed)</li>
<li>Once all your strings are translated, run
<pre class="brush: bash">python ../manage.py compilemessages</pre>
<p>from the <strong>app root</strong>. This will generate .mo files from the .po</li>
</ol>
<p>Now your templates and views should be automagically translated.</p>
<p>run makemessages/compilemessages commands to update the .po and .mo when you change some code. restart the web server.</p>
<h2>Javascript internationalisation</h2>
<p>Now your templates and views are correctly translated, you may also need  to internationalise jour javascript files.</p>
<p>Django provide a simple solution that you can use in your projects</p>
<ul>
<li>the <b>makemessages</b> command takes a -d djangojs parameter to parse .js files and create a djangojs.po</li>
<li>The <b>django.views.i18n.javascript_catalog</b> provides a way to acces the .po files from javascript</li>
<li>This view serves a javascript file containing a &#8216;catalog&#8217; array with translations and utilities functions such as <strong>gettext</strong></li>
</ul>
<p><b>Activate the view in your urls.py</b> :<br />
<br />I tweaked the <a target="_blank" href="http://docs.djangoproject.com/en/dev/topics/i18n/internationalization/#module-django.views.i18n">official rule</a> a bit.</p>
<pre class="brush: python">
# urls.py
def jsi18n(request, packages = None, domain = None):
    if not domain:
        domain = &#039;djangojs&#039;
    from django.views.i18n import javascript_catalog
    return javascript_catalog(request, domain, packages)

urlpatterns += patterns(&#039;&#039;,
    (r&#039;^jsi18n/?(?P&lt;packages&gt;[^/]+)?/?(?P&lt;domain&gt;[^/]+)?/?$&#039;, jsi18n ),                                          # serves the javascript data
)
</pre>
<p>Add a javascript include in your template ( be sure to include it before any other javascript localised file) :</p>
<pre class="brush: html">
	&lt;script type=&quot;text/javascript&quot; src=&quot;/jsi18n/main/djangojs&quot;&gt;&lt;/script&gt;
</pre>
<p>This url will serves you a javascript file from project/main/locale/fr/LC_MESSAGES/djangojs.po (if user lang is fr)<br />
<br />
By default, this language definition returns the user LANGUAGE_CODE but you can override using ?language GET parameter</p>
<p>Now you just need to replace each string in your javascript files with a call to gettext.</p>
<pre class="brush: javascript">
alert( gettext(&quot;Ready to start ?&quot;) );
</pre>
<h2>Maintain</h2>
<p>When you add new code, always use calls to gettext instead of strings.<br />
run makemessages to update the .po definitions<br />
translate new strings in the .po files<br />
run compilemessages to update</p>
<p></p>
<p><b>Voila</b> Now your app can speak any UTF-8 lang, which is more than 600 languages <img src='http://blog.revolunet.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>These are just the basics, check out for the full story <a target="_blank" href="http://docs.djangoproject.com/en/dev/topics/i18n/internationalization/">http://docs.djangoproject.com/en/dev/topics/i18n/internationalization/</a></p>
<p><strong>Notes/Gotchas</strong> :</p>
<ul>
<li>Using builtin dev server, you need to restart after a compilemessages</li>
<li>Use <a href="http://www.famfamfam.com/lab/icons/flags/" target="_blank">famfamfam flag icons</a></li>
<li>You must add your app to settings.INSTALLED_APPS if you want to use jsi18n view for this app</li>
<li>Double check middlewares order, and session tables</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.revolunet.com/index.php/general/django-internationalisation-with-i18n/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mise à jour de VLCcontrols</title>
		<link>http://blog.revolunet.com/index.php/developpement/mise-a-jour-de-vlccontrols</link>
		<comments>http://blog.revolunet.com/index.php/developpement/mise-a-jour-de-vlccontrols#comments</comments>
		<pubDate>Wed, 23 Apr 2008 10:43:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[VLC]]></category>
		<category><![CDATA[developpement]]></category>
		<category><![CDATA[geek style]]></category>

		<guid isPermaLink="false">http://blog.revolunet.com/index.php/developpement/mise-a-jour-de-vlccontrols</guid>
		<description><![CDATA[VLCcontrols est une librairie Javascript qui vous permet d&#8217;intégrer le fameux lecteur VLC dans vos pages web et de profiter de toute sa puissance. De nouvelles fonctions ont été ajoutées : possibilité d&#8217;intégrer des sous titres (locaux ou distants), de transcoder/streamer ou enregistrer le flux en cours de lecture sur votre disque dur, tout cela [...]]]></description>
			<content:encoded><![CDATA[<p>VLCcontrols est une librairie Javascript qui vous permet d&#8217;intégrer le fameux lecteur VLC dans vos pages web et de profiter de toute sa puissance. De nouvelles fonctions ont été ajoutées : possibilité d&#8217;intégrer des sous titres (locaux ou distants), de transcoder/streamer ou enregistrer le flux en cours de lecture sur votre disque dur, tout cela depuis une page web.</p>
<p>VLCcontrols is javascript library that allows you to embed the powerful VLC plugin in any webpage; New features have beed added today : you can now embed subtitles (local or remote), transcode and save or stream your contents as if you were in VLC, but from your webpage.</p>
<p>VLCcontrols home : <a href="http://code.revolunet.com/VLCcontrols">http://code.revolunet.com/VLCcontrols</a></p>
<p>VLCcontrols advanced features demo : <a href="http://code.revolunet.com/VLCcontrols/VLCcontrols/advanced.html">http://code.revolunet.com/VLCcontrols/VLCcontrols/advanced.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.revolunet.com/index.php/developpement/mise-a-jour-de-vlccontrols/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>VLCobject, VLC dans votre page web</title>
		<link>http://blog.revolunet.com/index.php/general/vlcobject-vlc-dans-votre-page-web</link>
		<comments>http://blog.revolunet.com/index.php/general/vlcobject-vlc-dans-votre-page-web#comments</comments>
		<pubDate>Fri, 25 Jan 2008 11:44:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[VLC]]></category>
		<category><![CDATA[developpement]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://blog.revolunet.com/index.php/general/vlcobject-vlc-dans-votre-page-web</guid>
		<description><![CDATA[Je viens de publier une petite librairie javascript largement inspirée de swfobject et qui vous permet d&#8217;intégrer facilement le  plugin VLC dans vos pages WEB. Le plugin est chargé en pur javascript et si l&#8217;utilisateur n&#8217;a pas de plugin VLC installé, un message lui indiquant un lien de téléchargement lui est indiqué.
Ca s&#8217;appelle VLCobject et c&#8217;est dispo [...]]]></description>
			<content:encoded><![CDATA[<p>Je viens de publier une petite librairie javascript largement inspirée de <a href="http://blog.deconcept.com/swfobject/" target="_blank">swfobject</a> et qui vous permet d&#8217;intégrer facilement le  plugin VLC dans vos pages WEB. Le plugin est chargé en pur javascript et si l&#8217;utilisateur n&#8217;a pas de plugin VLC installé, un message lui indiquant un lien de téléchargement lui est indiqué.</p>
<p>Ca s&#8217;appelle VLCobject et c&#8217;est dispo ici : <a href="http://code.revolunet.com/VLCobject/FR">http://code.revolunet.com/VLCobject/FR</a></p>
<p>Pour ajouter les boutons Play, Pause, Stop, Volume, Seekbar&#8230; regardez du coté de la librairie <a href="http://code.revolunet.com/VLCcontrols/FR">VLCcontrols</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.revolunet.com/index.php/general/vlcobject-vlc-dans-votre-page-web/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Insérez VLC dans vos pages WEB !</title>
		<link>http://blog.revolunet.com/index.php/general/inserez-vlc-dans-vos-pages-web</link>
		<comments>http://blog.revolunet.com/index.php/general/inserez-vlc-dans-vos-pages-web#comments</comments>
		<pubDate>Mon, 07 Jan 2008 16:13:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[VLC]]></category>
		<category><![CDATA[actu informatique]]></category>
		<category><![CDATA[developpement]]></category>
		<category><![CDATA[geek style]]></category>
		<category><![CDATA[softs]]></category>

		<guid isPermaLink="false">http://blog.revolunet.com/index.php/general/inserez-vlc-dans-vos-pages-web</guid>
		<description><![CDATA[Tout le monde connait la puissance de VLC, le célebre lecteur multimédia développé à l&#8217;origine grâce à un projet de l&#8217;école Centrale, puis offert au monde open-source et qui permet de lire pratiquement tous les formats videos. Aujourdhui, VLC est devenu un projet international, qui rassemble une grosse communauté et est supporté par de nombreuses [...]]]></description>
			<content:encoded><![CDATA[<p>Tout le monde connait la puissance de <a href="http://www.videolan.org" target="_blank">VLC</a>, le célebre lecteur multimédia développé à l&#8217;origine grâce à un projet de <a href="http://www.ecp.fr/" target="_blank">l&#8217;école Centrale</a>, puis offert au monde open-source et qui permet de lire pratiquement tous les formats videos. Aujourdhui, VLC est devenu un projet international, qui rassemble une grosse communauté et est supporté par de nombreuses entreprises dont <a href="http://www.free.fr" target="_blank">Free</a> qui a basé beaucoup de ses services sur ce petit bijou et a aussi largement contribué à son développement.</p>
<p>Mais VLC, plus qu&#8217;un &#8217;simple&#8217; lecteur, est aussi une véritable plate forme multimédia de réencodage et de diffusion, qui permet de transformer et de diffuser des flux audios ou videos de multiples facons. Par exemple, grace à VLC, vous pouvez capturer le flux de votre webcam ou de votre tuner TV et le diffuser sur Internet, en format MPEG2 par exemple, ou meme h264 ou Flash (FLV) si votre processeur (et porte monnaie) le permet. Vous pouvez également ajouter des filtres, sous titres et appliquer si vous le souhaitez des transformations aux images&#8230;</p>
<p>Depuis peu, il est également possible d&#8217;intégrer directement le player VLC dans des pages web, à l&#8217;instar d&#8217;autres players comme WindowsMediaPlayer par exemple, ce grâce à l&#8217;<a href="http://wiki.videolan.org/VideoLAN_Team" target="_blank">équipe de VLC</a>, qui a travaillé dur pour créer un ActiveX (pour Internet Explorer) et un plugin pour Mozilla, lesquels disposent desormais d&#8217;une nouvelles API unifiée, qui permet de les controler facilement en Javascript. Nous allons maintenant pouvoir intégrer le player VLC directement dans des pages web, et exploiter toutes ces possibilités : lecture haute definition, mais aussi sous titrage, réencodage, enregistrement, diffusion&#8230;</p>
<p>Pour profiter de ces possibilités, vous devez installer au moins un des deux plugins pour votre navigateur. Pour ce faire, il suffit de cocher ces options pendant <a href="http://www.videolan.org/vlc/" target="_blank">l&#8217;installation de VLC</a>.</p>
<p>Je viens de développer une petite librairie Javascript qui permet à n&#8217;importe quel webmaster d&#8217;insérer facilement le lecteur VLC dans ses pages web, en ajoutant en plus quelques boutons de controle : play, stop, volume, seekbar&#8230; vous pouvez trouver cette lib sur <a href="http://code.revolunet.com">http://code.revolunet.com </a></p>
<p>autre exemple plus complet : <a href="http://vlc.revolunet.com/">http://vlc.revolunet.com</a></p>
<p>J&#8217;espere que cela permettra une diffusion plus large de ce merveilleux plugin !</p>
<p><strong>Attention</strong>, installez plutot la verison 0.8.6d (derniere stable) plutot que la 0.8.6c qui souffre d&#8217;une serieuse <a href="http://www.videolan.org/sa0703.html" target="_blank">vulnérabilité au niveau sécurité</a> !</p>
<p>Le site de VLC : <a href="http://www.videolan.org/">http://www.videolan.org</a></p>
<p>Le forum : <a href="http://forum.videolan.org/">http://forum.videolan.org</a></p>
<p>et le wiki de plus en plus complet : <a href="http://wiki.videolan.org/">http://wiki.videolan.org</a></p>
<p><strong>J&#8217;attends vos feedbacks, merci <img src='http://blog.revolunet.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </strong></p>
<p><strong>EDIT : </strong>Cette a été remplacée par VLCcontrols :<a href=" http://code.revolunet.com/VLCcontrols"> http://code.revolunet.com/VLCcontrols</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.revolunet.com/index.php/general/inserez-vlc-dans-vos-pages-web/feed</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>gcomment.com, le widget gratuit pour la gestion de commentaires.</title>
		<link>http://blog.revolunet.com/index.php/general/gcommentcom-le-widget-gratuit-pour-la-gestion-de-commentaires</link>
		<comments>http://blog.revolunet.com/index.php/general/gcommentcom-le-widget-gratuit-pour-la-gestion-de-commentaires#comments</comments>
		<pubDate>Tue, 18 Dec 2007 15:01:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[actu informatique]]></category>
		<category><![CDATA[geek style]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://blog.revolunet.com/index.php/general/gcommentcom-le-widget-gratuit-pour-la-gestion-de-commentaires</guid>
		<description><![CDATA[Découvrez le nouveau service lancé par l&#8217;equipe de revolunet en version béta !
gcomment.com permet d&#8217;insérer une zone de commentaires customisable sur les pages de votre site sans taper la moindre ligne de code.
Echangez avec vos visiteurs ou donnez leur la possibilité de laisser un avis !
Le service est 100% gratuit et l&#8217;inscription ouverte à tous. [...]]]></description>
			<content:encoded><![CDATA[<p>Découvrez le nouveau service lancé par l&#8217;equipe de revolunet en version béta !</p>
<p>gcomment.com permet d&#8217;insérer une zone de commentaires customisable sur les pages de votre site sans taper la moindre ligne de code.</p>
<p>Echangez avec vos visiteurs ou donnez leur la possibilité de laisser un avis !</p>
<p>Le service est 100% gratuit et l&#8217;inscription ouverte à tous. Nous attendons avec impatience vos commentaires et suggestions pour en faire un service ultime !!</p>
<p>check it out ! <a href="http://www.gcomment.com/">http://www.gcomment.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.revolunet.com/index.php/general/gcommentcom-le-widget-gratuit-pour-la-gestion-de-commentaires/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHPdiapo : diaporama PHP/Javascript</title>
		<link>http://blog.revolunet.com/index.php/general/phpdiapo-diaporama-phpjavascript</link>
		<comments>http://blog.revolunet.com/index.php/general/phpdiapo-diaporama-phpjavascript#comments</comments>
		<pubDate>Wed, 03 Jan 2007 19:53:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[developpement]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://blog.revolunet.com/index.php/general/phpdiapo-diaporama-phpjavascript</guid>
		<description><![CDATA[J&#8217;ai crée un petit script PHP pour générer des diaporamas facilement dans une page.
Le script scanne un dossier et genere le javascript necessaire au diaporama. On peut en placer plusieurs par page et il suffit d&#8217;une seule ligne de code pour générer le diaporama :

$d=PHPdiapo&#40;&#8220;images/diapo_linux&#8221;,&#8220;exemple_linux&#8221;&#41;;

infos et sources sur https://github.com/revolunet/PHPdiapo, commentaires bienvenus ici même.
enjoy  
 
 
 
]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai crée un petit script PHP pour générer des diaporamas facilement dans une page.</p>
<p>Le script scanne un dossier et genere le javascript necessaire au diaporama. On peut en placer plusieurs par page et il suffit d&#8217;une seule ligne de code pour générer le diaporama :</p>
<div class="codesnip-container" >
<div class="codesnip"><span class="re0">$d</span>=PHPdiapo<span class="br0">&#40;</span><span class="st0">&#8220;images/diapo_linux&#8221;</span>,<span class="st0">&#8220;exemple_linux&#8221;</span><span class="br0">&#41;</span>;</div>
</div>
<p>infos et sources sur <a href="https://github.com/revolunet/PHPdiapo">https://github.com/revolunet/PHPdiapo</a>, commentaires bienvenus ici même.</p>
<p>enjoy <img src='http://blog.revolunet.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p> </p>
<p> </p>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.revolunet.com/index.php/general/phpdiapo-diaporama-phpjavascript/feed</wfw:commentRss>
		<slash:comments>38</slash:comments>
		</item>
		<item>
		<title>YouOS, premier OS en AJAX</title>
		<link>http://blog.revolunet.com/index.php/general/youos-premier-os-en-ajax</link>
		<comments>http://blog.revolunet.com/index.php/general/youos-premier-os-en-ajax#comments</comments>
		<pubDate>Wed, 26 Jul 2006 11:20:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[actu informatique]]></category>
		<category><![CDATA[geek style]]></category>

		<guid isPermaLink="false">http://blog.revolunet.com/index.php/general/youos-premier-os-en-ajax</guid>
		<description><![CDATA[Voila, un premier soit-disant système d&#8217;exploitation 100% AJAX est sorti; il s&#8217;agit de YouOS
On accède à un bureau des plus classiques, avec menu démarrer et on ouvre ses &#8216;applications&#8217; dans des calques séparés, comme des fenetres windows. Par défaut il y a pas mal d&#8217;applications : un &#8220;Rich Text Editor&#8221;, une gestion des notes, un [...]]]></description>
			<content:encoded><![CDATA[<p>Voila, un premier soit-disant système d&#8217;exploitation 100% AJAX est sorti; il s&#8217;agit de <a href="http://www.YouOS.com" target="_blank">YouOS</a></p>
<p>On accède à un bureau des plus classiques, avec menu démarrer et on ouvre ses &#8216;applications&#8217; dans des calques séparés, comme des fenetres windows. Par défaut il y a pas mal d&#8217;applications : un &#8220;Rich Text Editor&#8221;, une gestion des notes, un browser, un lecteur de RSS, un chat&#8230;</p>
<p>L&#8217;avantage est que l&#8217;on peut ajouter pratiquement n&#8217;importe quelle application web à ce menu démarrer et même développer des programmes en Javascrit qui s&#8217;ajouteront à notre &#8216;OS&#8217;. Par exemple Google SpreadSheets ou d&#8217;autres programmes pourraient être intégré à l&#8217;appli.</p>
<p>Il y a même un pseudo shell dans lequel on va retrouver nos fichiers crées et pouvoir taper des commandes classiques : copier/deplacer/supprimer&#8230; et aussi un &#8216;kill&#8217; pour tuer une de nos fenetres.</p>
<p>C&#8217;est bien fait, déjà bien avancé&#8230; et impressionnant car le javascript assez bien optimisé.</p>
<p>bien joué les geeks !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.revolunet.com/index.php/general/youos-premier-os-en-ajax/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Librairie AJAX Yahoo</title>
		<link>http://blog.revolunet.com/index.php/general/librairie-ajax-yahoo</link>
		<comments>http://blog.revolunet.com/index.php/general/librairie-ajax-yahoo#comments</comments>
		<pubDate>Tue, 14 Feb 2006 14:16:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[actu informatique]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://blog.revolunet.com/index.php/general/librairie-ajax-yahoo</guid>
		<description><![CDATA[Yahoo surprend tout le monde Open Source aujourd&#8217;hui en publiant des biblioeth&#232;que de Ajavscript destin&#233;es &#224;  faire de l&#8217;AJAX.
Il s&#8217;agit de fonctions cross-browsers pour g&#233;rer la fonction XmlHttpRequest, les animations de calques, le drag &#038; drop, et egalement de quelques UI items : Calendrier, Slider, Treeview.
Tout ca releas&#233; sous une license tr&#232;s permissive : [...]]]></description>
			<content:encoded><![CDATA[<p>Yahoo surprend tout le monde Open Source aujourd&#8217;hui en publiant des biblioeth&egrave;que de Ajavscript destin&eacute;es &agrave;  faire de l&#8217;AJAX.</p>
<p>Il s&#8217;agit de fonctions cross-browsers pour g&eacute;rer la fonction XmlHttpRequest, les animations de calques, le drag &#038; drop, et egalement de quelques UI items : Calendrier, Slider, Treeview.</p>
<p>Tout ca releas&eacute; sous une license tr&egrave;s permissive : la BSD licence ! (peut etre r&eacute;utilis&eacute; dans toutes application m&ecirc;me payante en mentionnant le copyright)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.revolunet.com/index.php/general/librairie-ajax-yahoo/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IE7 : support natif de XMLHTTP (AJAX)</title>
		<link>http://blog.revolunet.com/index.php/general/ie7-support-natif-de-xmlhttp-ajax</link>
		<comments>http://blog.revolunet.com/index.php/general/ie7-support-natif-de-xmlhttp-ajax#comments</comments>
		<pubDate>Thu, 02 Feb 2006 14:08:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://blog.revolunet.com/index.php/general/ie7-support-natif-de-xmlhttp-ajax</guid>
		<description><![CDATA[Bonne nouvelle pour les web-developpeurs : IE7 int&#233;grera de facon native une version standard de l&#8217;objet XMLHTTP.
Alors qu&#8217;il fallait jusqu&#8217;a pr&#233;sent utiliser un appel diff&#233;rent en fonction du navigateur, on pourra maintenant se contenter d&#8217;un appel unique, ce qui va faciliter &#224;  terme le developpement d&#8217;applis en AJAX.

// If IE7, Mozilla, Safari, etc: Use [...]]]></description>
			<content:encoded><![CDATA[<p>Bonne nouvelle pour les web-developpeurs : IE7 int&eacute;grera de facon native une version standard de l&#8217;objet XMLHTTP.</p>
<p>Alors qu&#8217;il fallait jusqu&#8217;a pr&eacute;sent utiliser un appel diff&eacute;rent en fonction du navigateur, on pourra maintenant se contenter d&#8217;un appel unique, ce qui va faciliter &agrave;  terme le developpement d&#8217;applis en AJAX.</p>
<div class="codesnip-container" >
<div class="codesnip"><span class="co1">// If IE7, Mozilla, Safari, etc: Use native object</span><br />
<span class="kw2">var</span> xmlHttp = <span class="kw2">new</span> XMLHttpRequest<span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</div>
<p>Bien heureusement, les appels &agrave;  l&#8217;ancien code ActiveX seront toujours support&eacute;s</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.revolunet.com/index.php/general/ie7-support-natif-de-xmlhttp-ajax/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

