<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-29398350</id><updated>2025-10-01T18:10:55.832+02:00</updated><category term="securite"/><category term="cuisine"/><category term="Film"/><category term="Google"/><category term="Blogger"/><category term="Linux"/><category term="New Product"/><category term="informatique"/><category term="photo"/><category term="recette"/><category term="gueule"/><category term="video"/><category term="Web Developpement"/><category term="connerie"/><category term="mathematiques"/><category term="HowTo"/><category term="wiki"/><category term="Paris"/><category term="sortie"/><category term="Livre"/><category term="MacOSX"/><category term="Perl"/><category term="Python"/><category term="arnaque"/><category term="jeu"/><category term="politique"/><category term="restaurant"/><category term="search engine"/><category term="site web"/><category term="Hurd"/><category term="citation"/><category term="poisson"/><category term="écologie"/><category term="Bruxelles"/><category term="Chine"/><category term="Download"/><category term="ajax"/><category term="cake"/><category term="dokuwiki"/><category term="second life"/><category term="serie"/><category term="virtualisation"/><category term="Chrome"/><category term="LaTeX"/><category term="LaTeX mathematiques MacOSX"/><category term="Microsoft"/><category term="blague"/><category term="dessert"/><category term="illustration"/><category term="jython"/><category term="lucene"/><category term="vin"/><category term="voyage"/><title type='text'>Tricks and Thinks</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://wolverinex02.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://wolverinex02.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Wolverine</name><uri>http://www.blogger.com/profile/05907782556406556721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://photos1.blogger.com/blogger2/5454/3588/400/Snap_1821251270451182f559543.0.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>243</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-29398350.post-1757023591390809621</id><published>2010-11-14T16:53:00.000+01:00</published><updated>2010-11-14T16:53:51.452+01:00</updated><title type='text'>OpenCV et Python sur MacOSX</title><content type='html'>Je viens d&#39;installer l&#39;application Picasa de Google pour gérer toutes mes photos de vacances sur mon MacBook. J&#39;ai été tout simplement bluffé par la fonction qui permet de reconnaître les visages sur les photos et les classer... J&#39;ai cherché un peu de documentation sur le fonctionnement... mais Google n&#39;est pas vraiment la société la plus ouverte qui soit...&lt;br /&gt;
En cherchant un peu plus, j&#39;ai fini par trouver : &lt;a href=&quot;http://opencv.willowgarage.com/wiki/&quot;&gt;opencv&lt;/a&gt; et ça tombe plutôt bien, opencv s&#39;intègre très bien avec Python.&lt;br /&gt;
Pour installer Opencv sur votre ordinateur Apple préféré, il suffit d&#39;avoir MacPort et de lancer la commande suivante :&lt;br /&gt;
sudo port install opencv</content><link rel='replies' type='application/atom+xml' href='http://wolverinex02.blogspot.com/feeds/1757023591390809621/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://wolverinex02.blogspot.com/2010/11/opencv-et-python-sur-macosx.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/1757023591390809621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/1757023591390809621'/><link rel='alternate' type='text/html' href='http://wolverinex02.blogspot.com/2010/11/opencv-et-python-sur-macosx.html' title='OpenCV et Python sur MacOSX'/><author><name>Wolverine</name><uri>http://www.blogger.com/profile/05907782556406556721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://photos1.blogger.com/blogger2/5454/3588/400/Snap_1821251270451182f559543.0.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29398350.post-8121770420564182836</id><published>2010-11-13T17:39:00.000+01:00</published><updated>2010-11-13T17:39:18.375+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="jython"/><category scheme="http://www.blogger.com/atom/ns#" term="lucene"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="search engine"/><title type='text'>Lucene et Jython</title><content type='html'>Au début, je souhaitais seulement tester un peu la technologie &lt;a href=&quot;http://lucene.apache.org/java/docs/index.html&quot;&gt;LUCENE&lt;/a&gt; : vous savez ce projet de la fondation APACHE, qui vous permet d&#39;utiliser la même technologie que les grands moteurs de recherche sur Internet.&amp;nbsp; Je me suis dis que la meilleure solution était d&#39;utiliser une bibliothèque python... comme pylucene... mais après 1H sur le site à regarder comment j&#39;allais pouvoir faire fonctionner ce machin, je me suis dit : il faut laisser à JAVA ce qui appartient à JAVA... mais je ne voulais pas pour autant quitter le monde des pythoniens... ça tombe bien, d&#39;autres personnes ont déjà fait ce chemin et ont créé un interpréteur python, qui fonctionne au dessus d&#39;une JVM (Java Virtual Machine) et qui permet d&#39;utiliser les bibliothèques JAVA : &lt;a href=&quot;http://www.jython.org/&quot;&gt;JYTHON&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bon, il faut le dire, la documentation LUCENE est pas vraiment des plus explicite et il n&#39;y a pas tant de code qui traine sur Internet... Bon, après une journée à me familiariser avec JYTHON et une autre à me familiariser avec LUCENE, j&#39;ai fini par écrire un &quot;indexer&quot; :&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;sys&lt;/span&gt;

&lt;span class=&quot;c&quot;&gt;# Add jars to classpath&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;jars&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;./lucene-core-3.0.2.jar&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;jar&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;jars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;sys&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;jar&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;org.apache.lucene.analysis.standard&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;org.apache.lucene.index&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;org.apache.lucene.store&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;org.apache.lucene.util&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;org.apache.lucene.document&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Document&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Field&lt;/span&gt; 


&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;java.io&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;File&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;java.io.FileNotFoundException&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;java.io.IOException&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;java.util.Date&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;glob&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;os&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;listdirectory2file&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;l&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;glob&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;glob&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;/*&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;l&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;isdir&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
                &lt;span class=&quot;k&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;Directory :&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;
                &lt;span class=&quot;k&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;listdirectory2file&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
                &lt;span class=&quot;k&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;
                &lt;span class=&quot;n&quot;&gt;indexfile&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;indexfile&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;filename&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;global&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;writer&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;f&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;filename&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&#39;r&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;content&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;f&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;read&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;doc&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Document&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; 
    &lt;span class=&quot;n&quot;&gt;doc&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Field&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;filename&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Field&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Store&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;YES&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Field&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Index&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ANALYZED&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;doc&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Field&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;content&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Field&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Store&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;YES&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Field&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Index&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ANALYZED&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;writer&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;addDocument&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;doc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&#39;./toindex&#39;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;INDEX_DIR&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;File&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;index&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;analyzer&lt;/span&gt;  &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;StandardAnalyzer&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Version&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;LUCENE_CURRENT&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;writer&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;IndexWriter&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;FSDirectory&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;INDEX_DIR&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;analyzer&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;IndexWriter&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;MaxFieldLength&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;LIMITED&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;listdirectory2file&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;



&lt;span class=&quot;c&quot;&gt;#writer.DocCount()&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;writer&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;optimize&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;writer&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
et un système de recherche :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;sys&lt;/span&gt;

&lt;span class=&quot;c&quot;&gt;# Add jars to classpath&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;jars&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;./lucene-core-3.0.2.jar&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;jar&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;jars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;sys&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;jar&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;


&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;org.apache.lucene.analysis.standard&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;org.apache.lucene.index&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;org.apache.lucene.store&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;org.apache.lucene.util&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;org.apache.lucene.document&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Document&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Field&lt;/span&gt; 
&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;org.apache.lucene.search&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;IndexSearcher&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;TopScoreDocCollector&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;org.apache.lucene.queryParser&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;QueryParser&lt;/span&gt;

&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;java.io&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;File&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;java.io.FileNotFoundException&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;java.io.IOException&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;java.util.Date&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;querystring&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;test&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&#39;./toindex&#39;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;INDEX_DIR&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;File&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;index&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;hitsPerPage&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;


&lt;span class=&quot;n&quot;&gt;analyzer&lt;/span&gt;  &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;StandardAnalyzer&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Version&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;LUCENE_CURRENT&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;searcher&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;IndexSearcher&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;SimpleFSDirectory&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;INDEX_DIR&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;query&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;QueryParser&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Version&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;LUCENE_CURRENT&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;content&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;analyzer&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;parse&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;querystring&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;hits&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;searcher&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;search&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;query&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;hitsPerPage&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;


&lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;hit&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;hits&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;scoreDocs&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;=====&quot;&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;hit&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;score&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;hit&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;doc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;hit&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;toString&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;doc&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;searcher&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;doc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;hit&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;doc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;doc&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;encode&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;utf-8&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
Bon si vous êtes un peu familier avec le python, ce code ne devrait pas trop vous dérouter. Pour le reste, vous aurez noter la présence du fichier &quot;lucene-core-3.0.2.jar&quot; là où je lance mes commandes :&lt;br /&gt;
jython createindex.py&lt;br /&gt;
et&lt;br /&gt;
jython queryindex.py&lt;br /&gt;
&lt;br /&gt;
Amusez-vous bien et n&#39;hésitez pas à me poser des questions si vous rencontrez des difficultés.</content><link rel='replies' type='application/atom+xml' href='http://wolverinex02.blogspot.com/feeds/8121770420564182836/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://wolverinex02.blogspot.com/2010/11/lucene-et-jython.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/8121770420564182836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/8121770420564182836'/><link rel='alternate' type='text/html' href='http://wolverinex02.blogspot.com/2010/11/lucene-et-jython.html' title='Lucene et Jython'/><author><name>Wolverine</name><uri>http://www.blogger.com/profile/05907782556406556721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://photos1.blogger.com/blogger2/5454/3588/400/Snap_1821251270451182f559543.0.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29398350.post-5300469331873442149</id><published>2010-05-19T21:42:00.000+02:00</published><updated>2010-05-19T21:42:53.820+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="dokuwiki"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="video"/><category scheme="http://www.blogger.com/atom/ns#" term="wiki"/><title type='text'>Gource et Dokuwiki : en couleur</title><content type='html'>ça y est suite aux différentes demandes, je viens d&#39;ajouter la coloration de la représentation Gource. Vous pouvez donc télécharger &lt;a href=&quot;http://www.dokuwiki.org/_export/code/tips:gource_analysis?codeblock=0&quot;&gt;la nouvelle version&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;#!/bin/python&lt;br /&gt;
&lt;br /&gt;
&quot;&quot;&quot;&lt;br /&gt;
This program parse logs of a dokuwiki&lt;br /&gt;
and tranform them for gource (a log viewer)&lt;br /&gt;
http://code.google.com/p/gource/&lt;br /&gt;
&lt;br /&gt;
developped by WolverineX02&lt;br /&gt;
site : http://wolverinex02.blogspot.com&lt;br /&gt;
&lt;br /&gt;
&quot;&quot;&quot;&lt;br /&gt;
import glob&lt;br /&gt;
import os.path&lt;br /&gt;
import getopt&lt;br /&gt;
import sys&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
WHITE = &quot;11FFAA&quot;&lt;br /&gt;
GREEN = &quot;00F000&quot;&lt;br /&gt;
vector = (1,10,100)&lt;br /&gt;
start_page_name = &quot;start&quot;&lt;br /&gt;
&lt;br /&gt;
def RGBToHTMLColor(rgb_tuple):&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;&quot;&quot; convert an (R, G, B) tuple to #RRGGBB &quot;&quot;&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; hexcolor = &#39;#%02x%02x%02x&#39; % rgb_tuple&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; # that&#39;s it! &#39;%02x&#39; means zero-padded, 2-digit hex values&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return hexcolor&lt;br /&gt;
&lt;br /&gt;
def HTMLColorToRGB(colorstring):&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;&quot;&quot; convert #RRGGBB to an (R, G, B) tuple &quot;&quot;&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; colorstring = colorstring.strip()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if colorstring[0] == &#39;#&#39;: colorstring = colorstring[1:]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if len(colorstring) != 6:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; raise ValueError, &quot;input #%s is not in #RRGGBB format&quot; % colorstring&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; r, g, b = colorstring[:2], colorstring[2:4], colorstring[4:]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; r, g, b = [int(n, 16) for n in (r, g, b)]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return (r, g, b)&lt;br /&gt;
&lt;br /&gt;
def colormodify(colorstring):&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; rgb_tuple = HTMLColorToRGB(colorstring)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; r, g, b = (rgb_tuple[0]+vector[0]) % 255,(rgb_tuple[1]+vector[1]) % 255,(rgb_tuple[2]+vector[2]) % 255&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return RGBToHTMLColor((r, g, b))&lt;br /&gt;
&lt;br /&gt;
def listdirectory(path,color):&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; l = glob.glob(path+&quot;/*&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; for i in l:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if os.path.isdir(i):&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listdirectory(i,colormodify(color))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; readfile(i,color)&lt;br /&gt;
&lt;br /&gt;
def listdirectory2(path):&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;&quot;&quot;list all the files like *.changes, &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; read them and output them in gource&#39;s log syntax&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;&quot;&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; for root, dirs, files in os.walk(path):&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for i in files:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if&amp;nbsp; (re.search(&#39;\.changes$&#39;, i)):&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fichier = os.path.join(root, i)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; readfile(fichier,GREEN)&lt;br /&gt;
&lt;br /&gt;
def readfile(fichier,color):&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;&quot;&quot;read the file and output for each line of this&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; file a log line for Gource&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;&quot;&quot;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; myfile = open(fichier, &#39;r&#39;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; for line in myfile.readlines():&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mots = line.split(&#39;\t&#39;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if len(mots)&amp;gt;=6:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; resultat = mots[0] + &quot;|&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if mots[4] == &#39;&#39;:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mots[4]&amp;nbsp; = &#39;Anonymous&#39;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; resultat += mots[4] + &quot;|&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; resultat += translate(mots[2]) + &quot;|&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; resultat += mots[3].replace(&#39;:&#39;, &#39;/&#39;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if mots[3].rfind(start_page_name) == len(mots[3])-len(start_page_name):&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; resultat += &quot;|&quot; + color&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; resultat += &quot;|&quot; + colormodify(color)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print resultat&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; myfile.close()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def translate(mot):&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;&quot;&quot;translate the dokuwiki vocabulary to the gource one&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C (also cc and sc from discussion plugin) -&amp;gt;A&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; E (also ec from discussion plugin) -&amp;gt; M&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; D (also dc and hc from discssion plugin) -&amp;gt; D&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; other -&amp;gt; M &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;&quot;&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if mot.upper == &quot;C&quot; or mot == &#39;cc&#39; or mot == &#39;sc&#39;:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return &quot;A&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif mot.upper == &quot;E&quot; or mot == &#39;ec&#39;:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return &quot;M&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif mot.upper == &quot;D&quot; or mot == &#39;dc&#39; or mot == &#39;hc&#39;:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return &quot;D&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; else:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return &quot;M&quot;&lt;br /&gt;
&lt;br /&gt;
def main(argv):&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;&quot;&quot;principal function&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;&quot;&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; try:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; opts, args = getopt.getopt(argv, &quot;hd:&quot;, [&quot;help&quot;, &quot;dokuwiki=&quot;])&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; except getopt.GetoptError:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; usage()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sys.exit(2)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; for opt, arg in opts:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if opt in (&quot;-h&quot;,&quot;--help&quot;):&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; usage()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sys.exit()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif opt in (&quot;-d&quot;,&quot;--dokuwiki&quot;):&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print listdirectory(arg,WHITE)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def usage():&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;&quot;&quot;this function will display how to use this script&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;&quot;&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;This script will output change logs of a dokuwiki&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;in a friendly way for gource&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;how to use it :&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;python gourcedoku.py -d ~/Sites/MyDokuwiki/ | sort &amp;gt; dokusort.log&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;and then :&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;gource --log-format custom dokusort.log --stop-position 1.0 \ &quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;--stop-on-idle --file-idle-time 10000000&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;---&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;-h : help &quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;-d : meta directory of your dokuwiki&quot;&lt;br /&gt;
&lt;br /&gt;
if __name__ == &quot;__main__&quot;:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; main(sys.argv[1:])&lt;br /&gt;
&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://wolverinex02.blogspot.com/feeds/5300469331873442149/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://wolverinex02.blogspot.com/2010/05/gource-et-dokuwiki-en-couleur.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/5300469331873442149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/5300469331873442149'/><link rel='alternate' type='text/html' href='http://wolverinex02.blogspot.com/2010/05/gource-et-dokuwiki-en-couleur.html' title='Gource et Dokuwiki : en couleur'/><author><name>Wolverine</name><uri>http://www.blogger.com/profile/05907782556406556721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://photos1.blogger.com/blogger2/5454/3588/400/Snap_1821251270451182f559543.0.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29398350.post-6587577211849604873</id><published>2010-05-15T18:47:00.001+02:00</published><updated>2010-05-15T18:49:51.795+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="HowTo"/><category scheme="http://www.blogger.com/atom/ns#" term="New Product"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="video"/><category scheme="http://www.blogger.com/atom/ns#" term="wiki"/><title type='text'>Gource et Dokuwiki : la video</title><content type='html'>La vidéo :&lt;br /&gt;&lt;br /&gt;&lt;object height=&quot;360&quot; width=&quot;480&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.dailymotion.com/swf/video/xdbdv9&quot;&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;&gt;&lt;embed type=&quot;application/x-shockwave-flash&quot; src=&quot;http://www.dailymotion.com/swf/video/xdbdv9&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; height=&quot;360&quot; width=&quot;480&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;obtenue avec la ligne de commande suivante :&lt;br /&gt;&lt;blockquote&gt;gource --log-format custom dokusort.log --stop-position 1.0 --stop-on-idle --file-idle-time 10000000 --output-ppm-stream - | ffmpeg -y -b 3000K -r 60 -f image2pipe -vcodec ppm -i - -vcodec mpeg4 gource.mp4&lt;br /&gt;&lt;/blockquote&gt;C&#39;est un peu long mais ça marche super bien ;-)</content><link rel='replies' type='application/atom+xml' href='http://wolverinex02.blogspot.com/feeds/6587577211849604873/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://wolverinex02.blogspot.com/2010/05/gource-et-dokuwiki-la-video.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/6587577211849604873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/6587577211849604873'/><link rel='alternate' type='text/html' href='http://wolverinex02.blogspot.com/2010/05/gource-et-dokuwiki-la-video.html' title='Gource et Dokuwiki : la video'/><author><name>Wolverine</name><uri>http://www.blogger.com/profile/05907782556406556721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://photos1.blogger.com/blogger2/5454/3588/400/Snap_1821251270451182f559543.0.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29398350.post-1743072601463214405</id><published>2010-05-15T18:45:00.001+02:00</published><updated>2010-05-15T18:45:54.069+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cuisine"/><category scheme="http://www.blogger.com/atom/ns#" term="poisson"/><category scheme="http://www.blogger.com/atom/ns#" term="recette"/><title type='text'>Emulsion de Wasabi</title><content type='html'>Nous avions goûté cette préparation dans un très bon resto...&lt;br /&gt;En devinant les ingrédients qui pouvaient s&#39;y trouver... nous sommes parvenus à recréer une recette d&#39; Emulsion au Wasabi bien sympa et très simple à réaliser  :-)&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguhF42DTltrTPNQDJJBS7_H6uKHGr-7Q0eWXCkEhCmREOPTCGocwvpQgb0evOMGpjWAHMWwXGD9Vwxo_Z6CxeX5BQSCFr3vXnWVBDBxXkvVkEkITVTOoxGmozRk8xLFhlsWHDg/s1600/IMG_1909.JPG&quot;&gt;&lt;img style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 300px; height: 400px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguhF42DTltrTPNQDJJBS7_H6uKHGr-7Q0eWXCkEhCmREOPTCGocwvpQgb0evOMGpjWAHMWwXGD9Vwxo_Z6CxeX5BQSCFr3vXnWVBDBxXkvVkEkITVTOoxGmozRk8xLFhlsWHDg/s400/IMG_1909.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5471538257869270242&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;En voici la recette :&lt;br /&gt;- Liste des ingrédients :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;1 càs de wasabi (en tube et non en poudre)&lt;/li&gt;&lt;li&gt;1 càs de sauce soja&lt;br /&gt;&lt;/li&gt;&lt;li&gt;le jus d&#39;un demi citron&lt;/li&gt;&lt;li&gt;200 ml de crème fleurette&lt;/li&gt;&lt;/ul&gt;- Préparation : Diluer le wasabi dans la sauce soja. Ajouter le jus de citron, la crème fleurette et battez le tout jusqu&#39;à obtention d&#39;une émulsion bien ferme.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhw89noCN-7msOs1_FDmEZ4oDkwPw_Nt1lrpV8rGz-2F76D6m9G3gNAmVVZ9uSprhjou2Tz0s1sICCFEB0bMRdUh2q7OFLB9d5HLizWAPeDsTbmlrKGGvj9Z7jid36P3PARmp4M/s1600/IMG_1910.JPG&quot;&gt;&lt;img style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 300px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhw89noCN-7msOs1_FDmEZ4oDkwPw_Nt1lrpV8rGz-2F76D6m9G3gNAmVVZ9uSprhjou2Tz0s1sICCFEB0bMRdUh2q7OFLB9d5HLizWAPeDsTbmlrKGGvj9Z7jid36P3PARmp4M/s400/IMG_1910.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5471538527461622306&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Suggestion :&lt;br /&gt;Vous pouvez la servir à l&#39;apéritif avec des gressins, en accompagnement d&#39;un sashimi de saumon.&lt;br /&gt;&lt;br /&gt;Bonne dégustation !</content><link rel='replies' type='application/atom+xml' href='http://wolverinex02.blogspot.com/feeds/1743072601463214405/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://wolverinex02.blogspot.com/2010/05/emulsion-de-wasabi.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/1743072601463214405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/1743072601463214405'/><link rel='alternate' type='text/html' href='http://wolverinex02.blogspot.com/2010/05/emulsion-de-wasabi.html' title='Emulsion de Wasabi'/><author><name>Wolverine</name><uri>http://www.blogger.com/profile/05907782556406556721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://photos1.blogger.com/blogger2/5454/3588/400/Snap_1821251270451182f559543.0.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguhF42DTltrTPNQDJJBS7_H6uKHGr-7Q0eWXCkEhCmREOPTCGocwvpQgb0evOMGpjWAHMWwXGD9Vwxo_Z6CxeX5BQSCFr3vXnWVBDBxXkvVkEkITVTOoxGmozRk8xLFhlsWHDg/s72-c/IMG_1909.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29398350.post-4545272571655014836</id><published>2010-05-15T17:08:00.002+02:00</published><updated>2010-05-15T17:27:32.130+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="dokuwiki"/><category scheme="http://www.blogger.com/atom/ns#" term="HowTo"/><category scheme="http://www.blogger.com/atom/ns#" term="informatique"/><category scheme="http://www.blogger.com/atom/ns#" term="New Product"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="site web"/><category scheme="http://www.blogger.com/atom/ns#" term="wiki"/><title type='text'>Gource et Dokuwiki</title><content type='html'>J&#39;ai découvert comme tout un chacun les superbes vidéos de Gource permettant de faire une représentation des modifications faites sur un système de gestion de version comme GIT ou SVN. Je me suis alors rappelé que mon wiki préféré (&lt;a href=&quot;http://www.dokuwiki.org/dokuwiki&quot;&gt;DOKUWIKI&lt;/a&gt;) est lui aussi un système de gestion de version comme un autre... Il suffit en effet de soulever le capot et d&#39;aller regarder dans l&#39;arborescence des dossiers pour y trouver le dossier &quot;data/meta&quot; dans lequel les fichiers &quot;*.changes&quot; renferment justement les informations recherchées. Par exemple, le fichier &quot;systemes_visualisation.changes&quot; ressemble à :&lt;br /&gt;&lt;blockquote&gt;1263135717      ::1     C      informatique:systemes_visualisation Wolverine             créée&lt;br /&gt;1263135988     ::1    E       informatique:systemes_visualisation Wolverine&lt;br /&gt;1263136423     ::1    E       informatique:systemes_visualisation Wolverine&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Explication :&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Le première colonne est un &lt;a href=&quot;http://www.unixtimestamp.com/index.php&quot;&gt;Unix Timestamp&lt;/a&gt;,&lt;br /&gt;&lt;/li&gt;&lt;li&gt;la deuxième est l&#39;adresse IP (je suis en localhost ;-) ),&lt;br /&gt;&lt;/li&gt;&lt;li&gt;la troisième l&#39;action réalisée (C pour créée, E pour éditée,...),&lt;br /&gt;&lt;/li&gt;&lt;li&gt;la quatrième est claire, la cinquième est l&#39;identifiant de la personne ayant modifié la page&lt;br /&gt;&lt;/li&gt;&lt;li&gt;et enfin la dernière colonne est le petit texte que vous pouvez remplir quand vous modifiez une page...&lt;/li&gt;&lt;/ol&gt;Que faire de tout ça pour le faire lire à Gource, rien de plus simple, il suffit de transformer cette arborescence en un fichier de log compréhensible par &lt;a href=&quot;http://code.google.com/p/gource/&quot;&gt;Gource&lt;/a&gt;. Pour ce faire, j&#39;ai développé un petit script python, nommé gourcedoku.py :&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;#!/bin/python&lt;br /&gt;&lt;br /&gt;&quot;&quot;&quot;&lt;br /&gt;This program parse logs of a dokuwiki&lt;br /&gt;and tranform them for gource (a log viewer)&lt;br /&gt;http://code.google.com/p/gource/&lt;br /&gt;&lt;br /&gt;developped by WolverineX02&lt;br /&gt;site : http://wolverinex02.blogspot.com&lt;br /&gt;&lt;br /&gt;&quot;&quot;&quot;&lt;br /&gt;&lt;br /&gt;import os.path&lt;br /&gt;import getopt&lt;br /&gt;import sys&lt;br /&gt;import re&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def listdirectory2(path):&lt;br /&gt;    &quot;&quot;&quot;list all the files like *.changes,&lt;br /&gt;       read them and output them in gource&#39;s log syntax&lt;br /&gt;    &quot;&quot;&quot;&lt;br /&gt;    for root, dirs, files in os.walk(path):&lt;br /&gt;        for i in files:&lt;br /&gt;            if  (re.search(&#39;\.changes$&#39;, i)):&lt;br /&gt;                fichier = os.path.join(root, i)&lt;br /&gt;                myfile = open(fichier, &#39;r&#39;)&lt;br /&gt;                for line in myfile.readlines():&lt;br /&gt;                    mots = line.split()&lt;br /&gt;                    if len(mots)&gt;=5:&lt;br /&gt;                        resultat = mots[0] + &quot;|&quot;&lt;br /&gt;                        resultat += mots[4] + &quot;|&quot;&lt;br /&gt;                        resultat += translate(mots[2]) + &quot;|&quot;&lt;br /&gt;                        resultat += fichier&lt;br /&gt;                        print resultat&lt;br /&gt;                    elif len(mots)==4:&lt;br /&gt;                        resultat = mots[0] + &quot;|Anonymous|&quot;&lt;br /&gt;                        resultat += translate(mots[2]) + &quot;|&quot;&lt;br /&gt;                        resultat += fichier&lt;br /&gt;                        print resultat&lt;br /&gt;                myfile.close()&lt;br /&gt;def translate(mot):&lt;br /&gt;    &quot;&quot;&quot;translate the dokuwiki vocabulary to the gource one&lt;br /&gt;       C -&gt; A&lt;br /&gt;       E -&gt; M&lt;br /&gt;       other -&gt; M&lt;br /&gt;    &quot;&quot;&quot;&lt;br /&gt;    if mot == &quot;C&quot;:&lt;br /&gt;        return &quot;A&quot;&lt;br /&gt;    elif mot == &quot;E&quot;:&lt;br /&gt;        return &quot;M&quot;&lt;br /&gt;    else:&lt;br /&gt;        return &quot;M&quot;&lt;br /&gt;&lt;br /&gt;def main(argv):&lt;br /&gt;    &quot;&quot;&quot;principal function&lt;br /&gt;    &quot;&quot;&quot;&lt;br /&gt;    try:&lt;br /&gt;        opts, args = getopt.getopt(argv, &quot;hd:&quot;, [&quot;help&quot;, &quot;dokuwiki=&quot;])&lt;br /&gt;    except getopt.GetoptError:&lt;br /&gt;        usage()&lt;br /&gt;        sys.exit(2)&lt;br /&gt;    for opt, arg in opts:&lt;br /&gt;        if opt in (&quot;-h&quot;,&quot;--help&quot;):&lt;br /&gt;            usage()&lt;br /&gt;            sys.exit()&lt;br /&gt;        elif opt in (&quot;-d&quot;,&quot;--dokuwiki&quot;):&lt;br /&gt;            print listdirectory2(arg)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def usage():&lt;br /&gt;    &quot;&quot;&quot;this function will display how to use this script&lt;br /&gt;    &quot;&quot;&quot;&lt;br /&gt;    print &quot;This script will output change logs of a dokuwiki&quot;&lt;br /&gt;    print &quot;in a friendly way for gource&quot;&lt;br /&gt;    print &quot;how to use it :&quot;&lt;br /&gt;    print &quot;python gourcedoku.py -d ~/Sites/MyDokuwiki/ | sort &gt; dokusort.log&quot;&lt;br /&gt;    print &quot;and then :&quot;&lt;br /&gt;    print &quot;gource --log-format custom dokusort.log --stop-position 1.0 \ &quot;&lt;br /&gt;    print &quot;--stop-on-idle --file-idle-time 10000000&quot;&lt;br /&gt;    print &quot;---&quot;&lt;br /&gt;    print &quot;-h : help &quot;&lt;br /&gt;    print &quot;-d : meta directory of your dokuwiki&quot;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#print listdirectory2(sys.argv[1])&lt;br /&gt;&lt;br /&gt;if __name__ == &quot;__main__&quot;:&lt;br /&gt;    main(sys.argv[1:])&lt;/blockquote&gt;Pour le lancer, rien de plus simple : il suffit de se placer dans l&#39;arborescence de son magnifique dokuwiki et la commande magique :&lt;br /&gt;&lt;blockquote&gt;python gourcedoku.py -d ~/Sites/MyDokuwiki/ | sort &gt; dokusort.log&lt;/blockquote&gt;puis visualiser le résultat avec Gource avec la commande suivante :&lt;br /&gt;&lt;blockquote&gt;gource --log-format custom dokusort.log --stop-position 1.0 --stop-on-idle --file-idle-time 10000000&lt;/blockquote&gt;Je vais essayer de mettre ce code sur le site de Gource pour la communauté ;-) N&#39;hésitez pas à me poser des questions ou à améliorer mon script.</content><link rel='replies' type='application/atom+xml' href='http://wolverinex02.blogspot.com/feeds/4545272571655014836/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://wolverinex02.blogspot.com/2010/05/gource-et-dokuwiki.html#comment-form' title='3 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/4545272571655014836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/4545272571655014836'/><link rel='alternate' type='text/html' href='http://wolverinex02.blogspot.com/2010/05/gource-et-dokuwiki.html' title='Gource et Dokuwiki'/><author><name>Wolverine</name><uri>http://www.blogger.com/profile/05907782556406556721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://photos1.blogger.com/blogger2/5454/3588/400/Snap_1821251270451182f559543.0.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29398350.post-2228323893372340470</id><published>2010-01-24T21:56:00.003+01:00</published><updated>2010-01-24T22:07:30.715+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Chrome"/><category scheme="http://www.blogger.com/atom/ns#" term="Google"/><category scheme="http://www.blogger.com/atom/ns#" term="informatique"/><category scheme="http://www.blogger.com/atom/ns#" term="MacOSX"/><category scheme="http://www.blogger.com/atom/ns#" term="New Product"/><title type='text'>Chromoxy</title><content type='html'>Je viens de parcourir l&#39;&lt;span style=&quot;text-decoration: underline;&quot;&gt;article&lt;/span&gt;&lt;a href=&quot;http://lifehacker.com/5046529/how-to-block-ads-in-google-chrome&quot;&gt; de LifeHacker&lt;/a&gt; sur comment bloquer les publicités dans le navigateur Chrome de Goolge... ce serait un peu comme l&#39;extension AdBlock Plus pour Chrome ;-) voir même encore un peu plus que seulement filtrer les publicités sur Chrome... Je me suis dit que c&#39;est pas mal mais pas très automatique ;-) j&#39;ai donc écrit un petit script pour cela :&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;#!/bin/sh&lt;br /&gt;&lt;br /&gt;# Demarrage de Privoxy&lt;br /&gt;cd /Applications/privoxy/&lt;br /&gt;./privoxy &amp;amp;&lt;br /&gt;&lt;br /&gt;# demarrage de Chrome&lt;br /&gt;/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --proxy-server=&quot;http://127.0.0.1:8118&quot;&lt;br /&gt;&lt;br /&gt;# retour maison&lt;br /&gt;cd&lt;/blockquote&gt;et en utilisant &lt;a href=&quot;http://www.sveinbjorn.org/platypus&quot;&gt;Platypus&lt;/a&gt;, il devient super facile de créer ensuite une véritable application :&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeqggSR4kY8w8PKTsf4dM050EnsEFkFu1XVchoJFSrLKzYfUbLR2lKRUUIo3m6iNGmaMWwGc_OpsgtRe4Lxev7NQk_thcFvDp2a-fHzU3iUdoY1AjQ7dxDF21pq1bDBQzpFCxNtQ/s1600-h/Capture+d%E2%80%99%C3%A9cran+2010-01-24+%C3%A0+22.03.36.png&quot;&gt;&lt;img style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 257px; height: 356px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeqggSR4kY8w8PKTsf4dM050EnsEFkFu1XVchoJFSrLKzYfUbLR2lKRUUIo3m6iNGmaMWwGc_OpsgtRe4Lxev7NQk_thcFvDp2a-fHzU3iUdoY1AjQ7dxDF21pq1bDBQzpFCxNtQ/s400/Capture+d%E2%80%99%C3%A9cran+2010-01-24+%C3%A0+22.03.36.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5430415282853519074&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Facile non ;-) si vous êtes intéressés, je peux continuer à développer cette &quot;application&quot;. J&#39;attends vos retours</content><link rel='replies' type='application/atom+xml' href='http://wolverinex02.blogspot.com/feeds/2228323893372340470/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://wolverinex02.blogspot.com/2010/01/chromoxy.html#comment-form' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/2228323893372340470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/2228323893372340470'/><link rel='alternate' type='text/html' href='http://wolverinex02.blogspot.com/2010/01/chromoxy.html' title='Chromoxy'/><author><name>Wolverine</name><uri>http://www.blogger.com/profile/05907782556406556721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://photos1.blogger.com/blogger2/5454/3588/400/Snap_1821251270451182f559543.0.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeqggSR4kY8w8PKTsf4dM050EnsEFkFu1XVchoJFSrLKzYfUbLR2lKRUUIo3m6iNGmaMWwGc_OpsgtRe4Lxev7NQk_thcFvDp2a-fHzU3iUdoY1AjQ7dxDF21pq1bDBQzpFCxNtQ/s72-c/Capture+d%E2%80%99%C3%A9cran+2010-01-24+%C3%A0+22.03.36.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29398350.post-8700779131102161061</id><published>2009-12-13T17:06:00.005+01:00</published><updated>2009-12-13T17:26:57.153+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="HowTo"/><category scheme="http://www.blogger.com/atom/ns#" term="informatique"/><category scheme="http://www.blogger.com/atom/ns#" term="MacOSX"/><title type='text'>Utiliser les icônes Mac OS X dans Visio</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhiQF6BdULIm9KPi4O21FkhbrtnjRzoVWugL2XHgkqOBV4PR853Cpa2327fLUMW_7QYQA8TLG5z7f7uXnkgVB2onNPdoX4-PD8yMdcJQ2-F-zdEKjgUl6u1GcQrG0ndyllo_cnLg/s1600-h/Capture+d%E2%80%99%C3%A9cran+2009-12-13+%C3%A0+17.17.18.png&quot;&gt;&lt;/a&gt;&lt;br /&gt;Vous connaissez certainement le programme Visio de suite Microsoft Office qui permet de faire de très beaux schémas... le seul petit hic, ce sont les icônes qui elles sont particulièrement moches... Je vous propose donc deux petites techniques pour importer les très belles icônes de Snow Leopard dans votre Visio.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Première méthode : à la main&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Sélectionnez l&#39;application dont vous voulez récupérer l&#39;icône (avec le fameux &lt;span style=&quot;font-weight: bold; font-style: italic;&quot;&gt;Pomme+C&lt;/span&gt;), puis ouvrez l&#39;application Aperçu&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4R6tcpv7FrPndslHwMprTEt_oztkHms8ScF7HsHnvlNznxgToBu0t-5Oxd6CIHZD7oUW8eYLNMKG_XzwQocfX4tOrYS6sW5qpoLHeBL5rbvS8tvKBcTJDpQgSoK_JtHX7-ZK5vQ/s1600-h/Capture+d%E2%80%99%C3%A9cran+2009-12-13+%C3%A0+17.14.26.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 313px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4R6tcpv7FrPndslHwMprTEt_oztkHms8ScF7HsHnvlNznxgToBu0t-5Oxd6CIHZD7oUW8eYLNMKG_XzwQocfX4tOrYS6sW5qpoLHeBL5rbvS8tvKBcTJDpQgSoK_JtHX7-ZK5vQ/s400/Capture+d%E2%80%99%C3%A9cran+2009-12-13+%C3%A0+17.14.26.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5414755247561313666&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;et choisissez &quot;&lt;span style=&quot;font-weight: bold; font-style: italic;&quot;&gt;Créer à partir du presse-papiers&lt;/span&gt;&quot;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhiQF6BdULIm9KPi4O21FkhbrtnjRzoVWugL2XHgkqOBV4PR853Cpa2327fLUMW_7QYQA8TLG5z7f7uXnkgVB2onNPdoX4-PD8yMdcJQ2-F-zdEKjgUl6u1GcQrG0ndyllo_cnLg/s1600-h/Capture+d%E2%80%99%C3%A9cran+2009-12-13+%C3%A0+17.17.18.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 254px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhiQF6BdULIm9KPi4O21FkhbrtnjRzoVWugL2XHgkqOBV4PR853Cpa2327fLUMW_7QYQA8TLG5z7f7uXnkgVB2onNPdoX4-PD8yMdcJQ2-F-zdEKjgUl6u1GcQrG0ndyllo_cnLg/s400/Capture+d%E2%80%99%C3%A9cran+2009-12-13+%C3%A0+17.17.18.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5414755832634041794&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;il ne vous reste plus qu&#39;à &lt;span style=&quot;font-weight: bold; font-style: italic;&quot;&gt;enregistrer sous&lt;/span&gt; et choisir le format PNG. Vous pouvez maintenant importer votre image dans Visio.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Deuxième méthode : avec un script&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La précédente méthode permet d&#39;extraire une image à la fois, si vous voulez récupérer toutes les icônes d&#39;un Mac OS X, vous pouvez utiliser le script python suivant :&lt;blockquote&gt;&lt;br /&gt;#!/bin/python&lt;br /&gt;&lt;br /&gt;import os&lt;br /&gt;import re&lt;br /&gt;&lt;br /&gt;text = &quot;0000&quot;&lt;br /&gt;out = &quot;~/Pictures/&quot;&lt;br /&gt;&lt;br /&gt;stdout_handle = os.popen(&quot;find / -name *.icns&quot;, &quot;r&quot;)&lt;br /&gt;while (text!=&quot;&quot;):&lt;br /&gt;     text = stdout_handle.readline()&lt;br /&gt;     regnamefile = re.compile(&#39;\/([^//]*)\.icns&#39;)&lt;br /&gt;     namefile = regnamefile.findall(text)[0]&lt;br /&gt;     regline = re.compile(&#39;(\/.*\.icns)&#39;)&lt;br /&gt;     line = regline.findall(text)[0]&lt;br /&gt;     os.system(&quot;sips -s format png &quot;+line+&quot; --out &quot;+out+namefile+&quot;.png&quot;)&lt;/blockquote&gt;Attention à l&#39;indentation, c&#39;est du python ;-) ... Vous cherchez dans un premier temps l&#39;ensemble des fichiers au format icns (c&#39;est le format des icônes de Mac OS X ;-) ;-) ), puis vous appliquez une transformation de format grâce à l&#39;utilitaite sips disponible sous Mac OS X. L&#39;ensemble des fichiers au format PNG sera disponible dans votre répertoire photos...&lt;br /&gt;&lt;br /&gt;Voilà ;-) j&#39;espère que vous ferez de beaux schèmas après ça.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://wolverinex02.blogspot.com/feeds/8700779131102161061/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://wolverinex02.blogspot.com/2009/12/utiliser-les-icones-mac-os-x-dans-visio.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/8700779131102161061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/8700779131102161061'/><link rel='alternate' type='text/html' href='http://wolverinex02.blogspot.com/2009/12/utiliser-les-icones-mac-os-x-dans-visio.html' title='Utiliser les icônes Mac OS X dans Visio'/><author><name>Wolverine</name><uri>http://www.blogger.com/profile/05907782556406556721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://photos1.blogger.com/blogger2/5454/3588/400/Snap_1821251270451182f559543.0.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4R6tcpv7FrPndslHwMprTEt_oztkHms8ScF7HsHnvlNznxgToBu0t-5Oxd6CIHZD7oUW8eYLNMKG_XzwQocfX4tOrYS6sW5qpoLHeBL5rbvS8tvKBcTJDpQgSoK_JtHX7-ZK5vQ/s72-c/Capture+d%E2%80%99%C3%A9cran+2009-12-13+%C3%A0+17.14.26.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29398350.post-8828126610274130486</id><published>2009-07-06T19:12:00.005+02:00</published><updated>2009-07-06T19:20:27.636+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Download"/><category scheme="http://www.blogger.com/atom/ns#" term="Google"/><category scheme="http://www.blogger.com/atom/ns#" term="MacOSX"/><category scheme="http://www.blogger.com/atom/ns#" term="New Product"/><title type='text'>Chromium (ou Chrome) enfin sous Mac OS X</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJrNGwqY6w0rd5l_4XUdh-tfjlbFhEaYnLQNYeHlQaplW7dw2WLbHm49DR3XasLI9yV7fQr09tSo920Rz5T4rxktXO666na8tfR0DP7ik6qq1hJivHlLQRtO0gAofybHqqG6V4dA/s1600-h/Image+4.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 115px; height: 77px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJrNGwqY6w0rd5l_4XUdh-tfjlbFhEaYnLQNYeHlQaplW7dw2WLbHm49DR3XasLI9yV7fQr09tSo920Rz5T4rxktXO666na8tfR0DP7ik6qq1hJivHlLQRtO0gAofybHqqG6V4dA/s400/Image+4.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5355397223909649314&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;ça y est il est enfin disponible : le navigateur de Google a été porté sous Mac OS X.&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRUzIq1kI82JL07BD2pQ-ZCRgAfz5_g_RdHJvs0dkOKtl6q0wd-L3b6ggAltWAVNu31DJAnaVfwPJDix5AZA664dCEVg3dfICWrj7Jewb905ZZhTF8uMjjPXuf8tW0T0gwfvd6QA/s1600-h/Image+5.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 250px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRUzIq1kI82JL07BD2pQ-ZCRgAfz5_g_RdHJvs0dkOKtl6q0wd-L3b6ggAltWAVNu31DJAnaVfwPJDix5AZA664dCEVg3dfICWrj7Jewb905ZZhTF8uMjjPXuf8tW0T0gwfvd6QA/s400/Image+5.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5355397535960599122&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;si vous voulez l&#39;installer : rien de plus simple, rendez-vous sur le &lt;a href=&quot;http://blog.chromium.org/2009/06/danger-mac-and-linux-builds-available.html&quot;&gt;blog de Chromium&lt;/a&gt;. J&#39;aime beaucoup l&#39;avertissement ;-)</content><link rel='replies' type='application/atom+xml' href='http://wolverinex02.blogspot.com/feeds/8828126610274130486/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://wolverinex02.blogspot.com/2009/07/chromium-ou-chrome-enfin-sous-mac-os-x.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/8828126610274130486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/8828126610274130486'/><link rel='alternate' type='text/html' href='http://wolverinex02.blogspot.com/2009/07/chromium-ou-chrome-enfin-sous-mac-os-x.html' title='Chromium (ou Chrome) enfin sous Mac OS X'/><author><name>Wolverine</name><uri>http://www.blogger.com/profile/05907782556406556721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://photos1.blogger.com/blogger2/5454/3588/400/Snap_1821251270451182f559543.0.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJrNGwqY6w0rd5l_4XUdh-tfjlbFhEaYnLQNYeHlQaplW7dw2WLbHm49DR3XasLI9yV7fQr09tSo920Rz5T4rxktXO666na8tfR0DP7ik6qq1hJivHlLQRtO0gAofybHqqG6V4dA/s72-c/Image+4.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29398350.post-1075543940119198671</id><published>2009-06-26T18:39:00.002+02:00</published><updated>2009-06-26T19:11:26.547+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="HowTo"/><category scheme="http://www.blogger.com/atom/ns#" term="informatique"/><category scheme="http://www.blogger.com/atom/ns#" term="MacOSX"/><title type='text'>Comment changer une icone sur Mac OS X</title><content type='html'>Je me suis longtemps posé la question ;-) surtout quand je branche plusieurs clé USB en même temps... C&#39;est en fait très simple :&lt;br /&gt;&lt;ol&gt;&lt;li&gt;cliquer 1 fois sur l&#39;icone de la clé&lt;/li&gt;&lt;li&gt;puis Pomme + I (permet d&#39;ouvrir le volet information d&#39;un fichier ou d&#39;un dossier)&lt;/li&gt;&lt;li&gt;faites glisser votre nouvelle icone en haut à gauche (il y a une petite icone, c&#39;est celle que vous allez remplacer)&lt;/li&gt;&lt;/ol&gt;Voilà c&#39;est tout ;-) Voilà ce que ça donne chez moi :&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzxi4iPF7JvnwylBClUmeN2bsQrbrREmjzKRQWjQHa_oejXuqqwvRVQ26vAYfmlglrvDVESjvBA06UgKm_gSOdKgpvPvqHWEvpfCjFup2iyH0s4PBOOvk187FvF0xkJvN3YHFgqg/s1600-h/Image+4.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 102px; height: 95px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzxi4iPF7JvnwylBClUmeN2bsQrbrREmjzKRQWjQHa_oejXuqqwvRVQ26vAYfmlglrvDVESjvBA06UgKm_gSOdKgpvPvqHWEvpfCjFup2iyH0s4PBOOvk187FvF0xkJvN3YHFgqg/s400/Image+4.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5351684775117834978&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;NB : ma clé USB est noire</content><link rel='replies' type='application/atom+xml' href='http://wolverinex02.blogspot.com/feeds/1075543940119198671/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://wolverinex02.blogspot.com/2009/06/comment-changer-une-icone-sur-mac-os-x.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/1075543940119198671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/1075543940119198671'/><link rel='alternate' type='text/html' href='http://wolverinex02.blogspot.com/2009/06/comment-changer-une-icone-sur-mac-os-x.html' title='Comment changer une icone sur Mac OS X'/><author><name>Wolverine</name><uri>http://www.blogger.com/profile/05907782556406556721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://photos1.blogger.com/blogger2/5454/3588/400/Snap_1821251270451182f559543.0.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzxi4iPF7JvnwylBClUmeN2bsQrbrREmjzKRQWjQHa_oejXuqqwvRVQ26vAYfmlglrvDVESjvBA06UgKm_gSOdKgpvPvqHWEvpfCjFup2iyH0s4PBOOvk187FvF0xkJvN3YHFgqg/s72-c/Image+4.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29398350.post-920848535379223856</id><published>2009-06-03T22:25:00.002+02:00</published><updated>2009-06-03T22:39:04.386+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Film"/><category scheme="http://www.blogger.com/atom/ns#" term="HowTo"/><category scheme="http://www.blogger.com/atom/ns#" term="informatique"/><title type='text'>Lire en même temps des fichiers ac3 et avi</title><content type='html'>Il vous est certainement déjà arrivé d&#39;avoir une vidéo dans une langue donnée (par exemple du russe ou du chinois) et de vouloir avoir la bande son québécoise (c&#39;est beaucoup plus marrant que la française &quot;Hein René !&quot;). C&#39;est pourquoi vous avez parfois deux fichiers :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;un fichier &lt;a href=&quot;http://fr.wikipedia.org/wiki/Audio_Video_Interleave&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;avi&lt;/span&gt;&lt;/a&gt; qui contient le film et une bande son (mais pas la bonne)&lt;/li&gt;&lt;li&gt;un fichier &lt;a href=&quot;http://fr.wikipedia.org/wiki/AC3&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;ac3&lt;/span&gt;&lt;/a&gt; qui contient la bonne bande son&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Pour pouvoir lire les deux en synchrone, je vous conseille d&#39;utiliser le couteau suisse de la vidéo : &lt;a href=&quot;http://www.videolan.org/vlc/&quot;&gt;VLC&lt;/a&gt; développé par nos chers amis centraliens... Sous Mac OS X (désolé c&#39;est le seul bon système d&#39;exploitation que j&#39;ai actuellement sous la main), il vous suffit de lancer la ligne de commande suivante :&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;/Applications/VLC.app/Contents/MacOS/VLC monfilm.avi --input-slave=&#39;monfilm.ac3&#39;&lt;/blockquote&gt;&lt;br /&gt;Il ne vous reste plus qu&#39;à choisir votre bande son dans l&#39;onglet &quot;audio&quot; de VLC. Bonne vidéo ;-)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ce ne doit pas être bien plus compliqué sous Linux, par contre sous Windows, je ne sais pas si VLC peut être lancé en ligne de commande</content><link rel='replies' type='application/atom+xml' href='http://wolverinex02.blogspot.com/feeds/920848535379223856/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://wolverinex02.blogspot.com/2009/06/lire-en-meme-temps-des-fichiers-ac3-et.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/920848535379223856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/920848535379223856'/><link rel='alternate' type='text/html' href='http://wolverinex02.blogspot.com/2009/06/lire-en-meme-temps-des-fichiers-ac3-et.html' title='Lire en même temps des fichiers ac3 et avi'/><author><name>Wolverine</name><uri>http://www.blogger.com/profile/05907782556406556721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://photos1.blogger.com/blogger2/5454/3588/400/Snap_1821251270451182f559543.0.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29398350.post-4469922522484131170</id><published>2009-01-31T12:30:00.003+01:00</published><updated>2009-01-31T12:35:15.925+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Blogger"/><category scheme="http://www.blogger.com/atom/ns#" term="LaTeX"/><title type='text'>LaTeX on Blogger is back</title><content type='html'>Je n&#39;avais plus vraiment le temps de m&#39;occuper de mon script pour écrire en LaTeX dans Blogger, heureusement qqn vient de reprendre le développement ;-) Merci&lt;br /&gt;&lt;a href=&quot;http://lifeandmath.blogspot.com/2009/01/fellow-bloggercom-mathematicians.html&quot;&gt;&lt;br /&gt;http://lifeandmath.blogspot.com/2009/01/fellow-bloggercom-mathematicians.html&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://wolverinex02.blogspot.com/feeds/4469922522484131170/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://wolverinex02.blogspot.com/2009/01/latex-on-blogger-is-back.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/4469922522484131170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/4469922522484131170'/><link rel='alternate' type='text/html' href='http://wolverinex02.blogspot.com/2009/01/latex-on-blogger-is-back.html' title='LaTeX on Blogger is back'/><author><name>Wolverine</name><uri>http://www.blogger.com/profile/05907782556406556721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://photos1.blogger.com/blogger2/5454/3588/400/Snap_1821251270451182f559543.0.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29398350.post-4109713794114625103</id><published>2008-11-22T18:41:00.003+01:00</published><updated>2008-11-22T18:44:47.901+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="citation"/><title type='text'>Une citation tellement vraie</title><content type='html'>&lt;blockquote&gt;Le cerveau est la seule chose qui s&#39;use quand on ne l&#39;utilise pas&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;cette citationest à rapprocher de &lt;a href=&quot;http://www.nytimes.com/2008/05/04/business/04unbox.html?_r=1&amp;amp;em&amp;amp;ex=1210392000&amp;amp;en=b43253e44e1fbe8d&amp;amp;ei=5087&quot;&gt;cette article du New York Time&lt;/a&gt; dans lequel l&#39;auteur écrit :&lt;br /&gt;&lt;blockquote&gt;In fact, the more new things we try — the more we step outside our comfort zone — the more inherently creative we become, both in the workplace and in our personal lives.&lt;/blockquote&gt;&lt;br /&gt;Je vous laisse méditer...</content><link rel='replies' type='application/atom+xml' href='http://wolverinex02.blogspot.com/feeds/4109713794114625103/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://wolverinex02.blogspot.com/2008/11/une-citation-tellement-vraie.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/4109713794114625103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/4109713794114625103'/><link rel='alternate' type='text/html' href='http://wolverinex02.blogspot.com/2008/11/une-citation-tellement-vraie.html' title='Une citation tellement vraie'/><author><name>Wolverine</name><uri>http://www.blogger.com/profile/05907782556406556721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://photos1.blogger.com/blogger2/5454/3588/400/Snap_1821251270451182f559543.0.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29398350.post-1654324879012459096</id><published>2008-11-22T18:38:00.002+01:00</published><updated>2008-11-22T18:40:39.356+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="LaTeX mathematiques MacOSX"/><title type='text'>LaTeX sur Mac OS X</title><content type='html'>Il suffit de télécharger sur le site du CTAN le paquet BasicTeX.pkg. Allez voir à cette addresse : &lt;a href=&quot;http://ctan.tug.org/tex-archive/systems/mac/mactex/&quot;&gt;http://ctan.tug.org/tex-archive/systems/mac/mactex/&lt;/a&gt;. Je vais enfin pouvoir taper correctement mes exercices de math sur mon tout nouveau MacBook ;-)</content><link rel='replies' type='application/atom+xml' href='http://wolverinex02.blogspot.com/feeds/1654324879012459096/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://wolverinex02.blogspot.com/2008/11/latex-sur-mac-os-x.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/1654324879012459096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/1654324879012459096'/><link rel='alternate' type='text/html' href='http://wolverinex02.blogspot.com/2008/11/latex-sur-mac-os-x.html' title='LaTeX sur Mac OS X'/><author><name>Wolverine</name><uri>http://www.blogger.com/profile/05907782556406556721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://photos1.blogger.com/blogger2/5454/3588/400/Snap_1821251270451182f559543.0.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29398350.post-5171696338452655382</id><published>2008-11-22T17:15:00.002+01:00</published><updated>2008-11-22T17:23:39.996+01:00</updated><title type='text'>Papa Noël : je veux des LEGOs</title><content type='html'>suite au poste suivant, j&#39;ai continué à regarder les vidéos sur Youtube portant sur ces robots et autres voitures en LEGO : c&#39;est génial ;-) Enfin des jeux pour les enfants (ou pour les adultes) qui font vraiment travailler la matière grise. Avec ça, vous allez enfin sentir votre cerveau penser ;-) maintenant quelques vidéos impressionnantes :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;dans celui-ci une roue tournante détecte les obstacles : si elle est bloquée, c&#39;est qu&#39;il y a un obstacle, elle fait donc demi-tour... Je me demande d&#39;où vient la roue LEGO&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object height=&quot;344&quot; width=&quot;425&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/-uTApFE8H90&amp;amp;hl=en&amp;amp;fs=1&quot;&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;embed src=&quot;http://www.youtube.com/v/-uTApFE8H90&amp;amp;hl=en&amp;amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; height=&quot;344&quot; width=&quot;425&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;dans celui-ci, ce qui est vraiment impressionnant c&#39;est le franchissement de l&#39;obstacle&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;center&gt;&lt;br /&gt;&lt;object height=&quot;344&quot; width=&quot;425&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/mW4LJW6j05E&amp;amp;hl=en&amp;amp;fs=1&quot;&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;embed src=&quot;http://www.youtube.com/v/mW4LJW6j05E&amp;amp;hl=en&amp;amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; height=&quot;344&quot; width=&quot;425&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;dans celui-ci, l&#39;ingénieur (à ce niveau là, il ne peut être qu&#39;ingénieur ou le devenir ;-) ) a remplacé les petits moteurs LEGO par de plus gros moteurs... Regardez bien les différentiels sur les côtés ;-)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;center&gt;&lt;br /&gt;&lt;object height=&quot;344&quot; width=&quot;425&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/WwMA89Na0ik&amp;amp;hl=en&amp;amp;fs=1&quot;&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;embed src=&quot;http://www.youtube.com/v/WwMA89Na0ik&amp;amp;hl=en&amp;amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; height=&quot;344&quot; width=&quot;425&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;</content><link rel='replies' type='application/atom+xml' href='http://wolverinex02.blogspot.com/feeds/5171696338452655382/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://wolverinex02.blogspot.com/2008/11/papa-nol-je-veux-des-legos.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/5171696338452655382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/5171696338452655382'/><link rel='alternate' type='text/html' href='http://wolverinex02.blogspot.com/2008/11/papa-nol-je-veux-des-legos.html' title='Papa Noël : je veux des LEGOs'/><author><name>Wolverine</name><uri>http://www.blogger.com/profile/05907782556406556721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://photos1.blogger.com/blogger2/5454/3588/400/Snap_1821251270451182f559543.0.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29398350.post-3761463424770499011</id><published>2008-11-22T16:45:00.004+01:00</published><updated>2008-11-22T17:07:05.089+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="connerie"/><category scheme="http://www.blogger.com/atom/ns#" term="securite"/><category scheme="http://www.blogger.com/atom/ns#" term="video"/><title type='text'>Un coffre fort en LEGO</title><content type='html'>Je viens de tomber sur cette vidéo faite par un passionné des LEGO ou par un des ingénieurs de LEGO (je crois vraiment que je vais me reconvertir et postuler chez LEGO) :&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object height=&quot;344&quot; width=&quot;425&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/XjWt4O4bSjQ&amp;amp;hl=en&amp;amp;fs=1&quot;&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;embed src=&quot;http://www.youtube.com/v/XjWt4O4bSjQ&amp;amp;hl=en&amp;amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; height=&quot;344&quot; width=&quot;425&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;A priori :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;il est équipé d&#39;un détecteur de mouvement&lt;/li&gt;&lt;li&gt;visiblement c&#39;est un code à 5 nombres (de 1 à 32)&lt;/li&gt;&lt;li&gt;l&#39;ouverture et la fermeture de la porte est automatique&lt;/li&gt;&lt;li&gt;il y a des bonbons à l&#39;intérieur ;-)&lt;/li&gt;&lt;/ul&gt;Je n&#39;ai qu&#39;un mot : époustouflant</content><link rel='replies' type='application/atom+xml' href='http://wolverinex02.blogspot.com/feeds/3761463424770499011/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://wolverinex02.blogspot.com/2008/11/un-coffre-fort-en-lego.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/3761463424770499011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/3761463424770499011'/><link rel='alternate' type='text/html' href='http://wolverinex02.blogspot.com/2008/11/un-coffre-fort-en-lego.html' title='Un coffre fort en LEGO'/><author><name>Wolverine</name><uri>http://www.blogger.com/profile/05907782556406556721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://photos1.blogger.com/blogger2/5454/3588/400/Snap_1821251270451182f559543.0.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29398350.post-2787631948761105631</id><published>2008-11-16T16:41:00.004+01:00</published><updated>2008-11-16T16:59:09.452+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="New Product"/><category scheme="http://www.blogger.com/atom/ns#" term="Web Developpement"/><title type='text'>Minefield : Firefox sous emphétamines</title><content type='html'>je viens de tester la beta de la future version de Firefox : surnommée Minefield... Vous pouvez la télécharger à l&#39;adresse suivante : &lt;a href=&quot;http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/&quot;&gt;http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/&lt;/a&gt; elle est même disponible pour Mac... Au final pas beaucoup de nouvelles fonctionnalités mais une vitesse époustouflante (grace au nouveau moteur TraceMonkey) : enfin Gmail, Adsense ou Blogger se chargent à une vitesse convenable ;-) je vais continuer mais tests et utiliser cette version en lieu et place de mon Firefox... Rendez-vous dans quelques jours pour connaître la suite de mes aventures ;-)&lt;br /&gt;&lt;br /&gt;Note supplémentaire : A souligner aussi : la possibilité d&#39;utiliser le mode &quot;private browsing&quot;, je ne sais pas ce qu&#39;il en est exactement... point à creuser....</content><link rel='replies' type='application/atom+xml' href='http://wolverinex02.blogspot.com/feeds/2787631948761105631/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://wolverinex02.blogspot.com/2008/11/minefield-firefox-sous-emphtamines.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/2787631948761105631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/2787631948761105631'/><link rel='alternate' type='text/html' href='http://wolverinex02.blogspot.com/2008/11/minefield-firefox-sous-emphtamines.html' title='Minefield : Firefox sous emphétamines'/><author><name>Wolverine</name><uri>http://www.blogger.com/profile/05907782556406556721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://photos1.blogger.com/blogger2/5454/3588/400/Snap_1821251270451182f559543.0.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29398350.post-5753938130111521923</id><published>2008-11-16T16:32:00.002+01:00</published><updated>2008-11-16T16:35:37.985+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Google"/><category scheme="http://www.blogger.com/atom/ns#" term="informatique"/><category scheme="http://www.blogger.com/atom/ns#" term="New Product"/><category scheme="http://www.blogger.com/atom/ns#" term="video"/><title type='text'>Gmail et la vidéo</title><content type='html'>ça y est Gmail se tourne aussi vers la vidéo :&lt;br /&gt;&lt;br /&gt;&lt;object height=&quot;344&quot; width=&quot;425&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/JFGJRfoK9xQ&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;fs=1&quot;&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;embed src=&quot;http://www.youtube.com/v/JFGJRfoK9xQ&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; height=&quot;344&quot; width=&quot;425&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;finalement pas grand chose de neuf par rapport à MSN messenger... Google continue seulement à rattrapper son retard sur le géant de Redmond...</content><link rel='replies' type='application/atom+xml' href='http://wolverinex02.blogspot.com/feeds/5753938130111521923/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://wolverinex02.blogspot.com/2008/11/gmail-et-la-vido.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/5753938130111521923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/5753938130111521923'/><link rel='alternate' type='text/html' href='http://wolverinex02.blogspot.com/2008/11/gmail-et-la-vido.html' title='Gmail et la vidéo'/><author><name>Wolverine</name><uri>http://www.blogger.com/profile/05907782556406556721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://photos1.blogger.com/blogger2/5454/3588/400/Snap_1821251270451182f559543.0.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29398350.post-6122124597114923283</id><published>2008-06-15T17:44:00.003+02:00</published><updated>2008-06-15T17:51:45.923+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="informatique"/><category scheme="http://www.blogger.com/atom/ns#" term="New Product"/><category scheme="http://www.blogger.com/atom/ns#" term="Web Developpement"/><title type='text'>Firefox 3 et la gestion des Bookmarks</title><content type='html'>&lt;div style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Juste une petite &lt;a href=&quot;http://people.mozilla.com/%7Ebeltzner/overview-of-firefox3.swf&quot;&gt;vidéo&lt;/a&gt; expliquant comment Firefox 3 révolutionne la gestion des bookmarks... ça c&#39;est le genre de trucs que j&#39;adore et que je sens que je vais utiliser...&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;tag_list&quot;&gt;Tags: &lt;span class=&quot;tags&quot;&gt;&lt;a href=&quot;http://technorati.com/tag/firefox3&quot; rel=&quot;tag&quot;&gt;firefox3&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/bookmarks&quot; rel=&quot;tag&quot;&gt;bookmarks&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/vid%C3%A9o&quot; rel=&quot;tag&quot;&gt;vidéo&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='enclosure' type='video/mp4' href='http://www.blogger.com/video-play.mp4?contentId=4b784c2cbb528045&amp;type=video%2Fmp4' length='0'/><link rel='replies' type='application/atom+xml' href='http://wolverinex02.blogspot.com/feeds/6122124597114923283/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://wolverinex02.blogspot.com/2008/06/firefox-3-et-la-gestion-des-bookmarks.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/6122124597114923283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/6122124597114923283'/><link rel='alternate' type='text/html' href='http://wolverinex02.blogspot.com/2008/06/firefox-3-et-la-gestion-des-bookmarks.html' title='Firefox 3 et la gestion des Bookmarks'/><author><name>Wolverine</name><uri>http://www.blogger.com/profile/05907782556406556721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://photos1.blogger.com/blogger2/5454/3588/400/Snap_1821251270451182f559543.0.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29398350.post-2941848962009609510</id><published>2008-06-07T12:50:00.002+02:00</published><updated>2008-06-07T17:54:12.660+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="HowTo"/><category scheme="http://www.blogger.com/atom/ns#" term="informatique"/><category scheme="http://www.blogger.com/atom/ns#" term="site web"/><category scheme="http://www.blogger.com/atom/ns#" term="Web Developpement"/><title type='text'>Howto : utiliser Wikicalc dans Mediawiki</title><content type='html'>L&#39;extension médiawiki &lt;span style=&quot;font-weight: bold;&quot;&gt;wikicalc&lt;/span&gt; permet d&#39;inclure une feuille de calcul wikicalc dans une page du mediawiki, au moyen d&#39;une nouvelle balise.&lt;br /&gt;&lt;br /&gt;La feuille de calcul apparaît dans un cadre avec 2 liens :&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Modifier la feuille de calcul : renvoie directement vers le serveur wikicalc (requiert un login/mdp selon la configuration de wikicalc). Ne pas oublier de publier la page (onglet publish) pour enregistrer la nouvelle feuille de calcul. &lt;/li&gt;&lt;li&gt;Actualiser : permet de regénérer le cache de la page (nécessaire après avoir modifié la feuille de calcul sur wikicalc).&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Pour intégrer une feuille de calcul dans une page, il faut utiliser la balise &lt;nowiki&gt;&lt;wikicalc src=&quot;&quot;&gt;&lt;/wikicalc&gt;. Par exemple :&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;wikicalc src=&quot;http://wolverinex02.googlepages.com/wkcdata/demohtml/notelist.html&quot;&gt;&lt;br /&gt;&lt;/wikicalc&gt;&lt;/pre&gt;&lt;br /&gt;Pour créer une nouvelle feuille de calcul, rendez-vous à l&#39;adresse suivante : http://wikicalc.wolverinex02.googlepages.com/wikicalccgi.pl&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Filtrage selon la couleur&lt;br /&gt;&lt;br /&gt;L&#39;attribut &lt;span style=&quot;font-weight: bold;&quot;&gt;important&lt;/span&gt; permet de n&#39;afficher que les lignes contenant au moins une cellule de couleur rouge.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;wikicalc src=&quot;http://172.25.14.124/wkcdata/demohtml/page.html&quot;&gt;&lt;br /&gt;&lt;/wikicalc&gt;&lt;/pre&gt;&lt;br /&gt;Pour plus de flexibilité, l&#39;attribut &lt;span style=&quot;font-weight: bold;&quot;&gt;color=&lt;/span&gt; est aussi présent. Cela marche comme l&#39;attribut &lt;span style=&quot;font-weight: bold;&quot;&gt;important&lt;/span&gt; sauf qu&#39;on peut choisir la couleur.&lt;br /&gt;&lt;pre&gt;&lt;wikicalc color=&quot;255,153,51&quot; src=&quot;http://172.25.14.124/wkcdata/demohtml/page.html&quot;&gt;&lt;br /&gt;&lt;/wikicalc&gt;&lt;/pre&gt;&lt;br /&gt;Installation de l&#39;extension&lt;br /&gt;&lt;br /&gt;Ajouter dans &lt;span style=&quot;font-weight: bold;&quot;&gt;LocalSettings.php&lt;/span&gt; :&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;###Extension wikicalc##&lt;br /&gt;&lt;br /&gt;require_once(&quot;$IP/extensions/wikicalc.php&quot;);  &lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Créer le nouveau fichier &#39;&#39;extensions/wikicalc.php&#39;&#39; :&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;/**&lt;br /&gt;*&lt;br /&gt;*      &lt;wikicalc&gt;&lt;/wikicalc&gt;&lt;br /&gt;*&lt;br /&gt;* SYNOPSIS&lt;br /&gt;*&lt;br /&gt;*      &amp;lt;include src=&quot;[URL]&quot; [important] [color=&quot;[r,v,b]&quot;] /&amp;gt;&lt;br /&gt;*&lt;br /&gt;* INSTALL&lt;br /&gt;*&lt;br /&gt;*      Placer ce script dans le dossier &#39;extensions&#39; de mediawiki :&lt;br /&gt;*          &quot;$IP/extensions/wikicalc.php&quot;&lt;br /&gt;*      o˘ $IP est le chemin d&#39;installation de MediaWiki.&lt;br /&gt;*      Ensuite, ajouter cette ligne dans LocalSettings.php:&lt;br /&gt;*          require_once(&quot;$IP/extensions/wikicalc.php&quot;);&lt;br /&gt;*&lt;br /&gt;* DESCRIPTION&lt;br /&gt;*&lt;br /&gt;*     Cette extension vous permet d&#39;inclure une feuille de calcul wikicalc dans&lt;br /&gt;*     une page mediawiki.&lt;br /&gt;*&lt;br /&gt;* ATTRIBUTES&lt;br /&gt;*&lt;br /&gt;*      La balise &lt;wikicalc&gt;&lt;/wikicalc&gt; doit toujours avoir au moins un attribut &#39;src&#39;.&lt;br /&gt;*&lt;br /&gt;*      src=&quot;[URL]&quot;&lt;br /&gt;*          Vous devez inclure &#39;src&#39; pour indiquer l&#39;URL de la feuille de calcul html.&lt;br /&gt;*&lt;br /&gt;*      important&lt;br /&gt;*          Seulement les lignes contenant des cellules rouges seront affichées.&lt;br /&gt;*&lt;br /&gt;*      color=&quot;[r,v,b]&quot;&lt;br /&gt;*          Seulement les lignes contenant des cellules de la couleur indiquée seront&lt;br /&gt;*          affichÈes.&lt;br /&gt;*          Remarque : color=&quot;255,0,0&quot; est équivalent au tag &#39;important&#39;&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$wgExtensionFunctions[] = &quot;wf_wikicalc&quot;; $wgExtensionCredits[&#39;other&#39;][] = array (&lt;br /&gt;&lt;br /&gt;  &#39;name&#39; =&gt; &#39;wikicalc&#39;,&lt;br /&gt;  &#39;author&#39; =&gt; &#39;Matthieu&#39;,&lt;br /&gt;  &#39;url&#39; =&gt; &#39;yenapa&#39;,&lt;br /&gt;  &#39;description&#39; =&gt; &#39;Permet d\&#39;inclure une page html distante crÈÈe par wikicalc.&#39;,&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;function wf_wikicalc() {&lt;br /&gt;&lt;br /&gt;  global $wgParser;&lt;br /&gt;  $wgParser-&amp;gt;setHook( &quot;wikicalc&quot;, &quot;render_wikicalc&quot; );&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;&lt;br /&gt;* parse_color&lt;br /&gt;*&lt;br /&gt;* retire les lignes (...) contenant des cellules de la couleur $color&lt;br /&gt;*&lt;br /&gt;* $color est une chaine de caractères de la forme &quot;r,v,b&quot; où r,v,b sont des&lt;br /&gt;* entiers entre 0 et 255.&lt;br /&gt;* Par ex : &quot;255,0,0&quot; pour le rouge&lt;br /&gt;*&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;function parse_color( $table, $style, $color ) { // on recherche le nom des classes css qui correspondent à la bonne couleur de fond. preg_match_all(&quot;/\.(s[\d]+) \{[^\}]*background-color:rgb\(&quot;.$color.&quot;\)[^\}]*}/s&quot;, $style, $css_matches, PREG_SET_ORDER);&lt;br /&gt;&lt;br /&gt;$tr = &quot;&quot;;&lt;br /&gt;&lt;br /&gt;// on utilise &quot;/pattern/s&quot; pour éviter le pb des retours à la ligne. // le &quot;?&quot; permet d&#39;inverser la &#39;greediness&#39; de la regex. preg_match_all(&quot;/.*?&lt;\/tr&gt;/s&quot;, $table, $tr_matches, PREG_SET_ORDER); foreach ($tr_matches as $tr_tmp) {&lt;br /&gt;&lt;br /&gt;foreach ($css_matches as $css_tmp) {&lt;br /&gt;&lt;br /&gt;if ( ereg (&#39;(.*)&#39;, $tr_tmp[0])) { $tr .= $tr_tmp[0]; } } }&lt;br /&gt;&lt;br /&gt;return preg_replace(&quot;/.*&amp;amp;&lt;\/tr&gt;/s&quot;, $tr, $table); }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;&lt;br /&gt;* render_wikicalc&lt;br /&gt;*&lt;br /&gt;* This is called automatically by the MediaWiki parser extension system.&lt;br /&gt;* This does the work of loading a file and returning the text content.&lt;br /&gt;* $argv is an associative array of arguments passed in the &lt;wikicalc&gt; tag as&lt;br /&gt;* attributes.&lt;br /&gt;*&lt;br /&gt;* @param mixed $input unused&lt;br /&gt;* @param mixed $argv associative array&lt;br /&gt;* @param mixed $parser unused&lt;br /&gt;* @access public&lt;br /&gt;* @return string&lt;br /&gt;*/&lt;br /&gt;function render_wikicalc ( $input , $argv, &amp;amp;$parser )&lt;br /&gt;{&lt;br /&gt;	if ( ! isset($argv[&#39;src&#39;]))&lt;br /&gt;		return &quot;ERROR: &lt;include&gt; tag is missing &#39;src&#39; attribute.&quot;;&lt;br /&gt;&lt;br /&gt;	$output=file_get_contents($argv[&#39;src&#39;]);&lt;br /&gt;	if ($output === False)&lt;br /&gt;		return &quot;ERROR: include could not read the given src URL.&quot;;&lt;br /&gt;&lt;br /&gt;	if (ereg (&quot;(&lt;table.*&gt;)&quot;, $output, $table_reg)) {&lt;br /&gt;	    $table =  $table_reg[1];&lt;br /&gt;	} else {&lt;br /&gt;	    echo &quot;erreur &lt;table&gt;&quot;;&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	if (ereg (&quot;(&lt;style.*&gt;)&quot;, $output, $style_reg)) {&lt;br /&gt;	    $style =  $style_reg[1];&lt;br /&gt;	    $style = ereg_replace(&quot;body[^\}]*}&quot;, &quot;&quot;, $style);&lt;br /&gt;	&lt;br /&gt;	} else {&lt;br /&gt;	    echo &quot;erreur &lt;style&gt;&quot;;&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	if ( isset($argv[&#39;important&#39;])){&lt;br /&gt;		$table = parse_color( $table, $style, &quot;255,0,0&quot;);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	if ( isset($argv[&#39;color&#39;])){&lt;br /&gt;		$table = parse_color( $table, $style, $argv[&#39;color&#39;]);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;	if (ereg (&#39;&lt;form name=&quot;wkcformetp&quot; method=&quot;POST&quot; action=&quot;(.*)&quot; style=&quot;margin:0px;&quot;&gt;&#39;, $output, $wikicalc_url_reg)) {&lt;br /&gt;	    $wikicalc_url =  $wikicalc_url_reg[1];&lt;br /&gt;	} else {&lt;br /&gt;	    echo &quot;erreur wikicalc URL&quot;;&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	if (ereg (&#39;&lt;input type=&quot;hidden&quot; name=&quot;editthispage&quot; value=&quot;(.*)&quot;&gt;&#39;, $output, $wikicalc_page_reg)) {&lt;br /&gt;	    $wikicalc_page =  $wikicalc_page_reg[1];&lt;br /&gt;	    $pos = strpos($wikicalc_page, &#39;&quot;&#39;);&lt;br /&gt;	    $wikicalc_page = substr($wikicalc_page, 0, $pos);&lt;br /&gt;	} else {&lt;br /&gt;	    echo &quot;erreur wikicalc page&quot;;&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	$edit = &#39;&lt;span class=&quot;editsection&quot;&gt;[&lt;a href=&quot;http://wikicalc.internet/wikicalccgi.pl?editthispage=&#39;.$wikicalc_page.&#39;&quot; title=&quot;Modifier la feuille de calcul&quot; target=&quot;_blank&quot;&gt;Modifier la feuille de calcul&lt;/a&gt;]&lt;/span&gt;&#39;;&lt;br /&gt;&lt;br /&gt;	$style2 = &#39;&lt;style type=&quot;text/css&quot;&gt;.cadre{border:1px solid #aaa; background-color: #ffffff; padding: 5px; font-size: 95%;}&lt;/style&gt;&#39;;&lt;br /&gt;	$purge = &#39;&lt;span class=&quot;editsection&quot; id=&quot;purgelink&quot;&gt;[[{{fullurl:{{FULLPAGENAME}}|action=purge}} {{{1|Actualiser}}}]]&lt;/span&gt;&#39;;&lt;br /&gt;&lt;br /&gt;	$parsedText = $parser-&gt;parse($purge, $parser-&gt;mTitle, $parser-&gt;mOptions, false, false);&lt;br /&gt;	$purge = $parsedText-&gt;getText();&lt;br /&gt;&lt;br /&gt;	return $style2.$style.&#39;&lt;div align=&quot;center&quot;&gt;&lt;/div&gt;&lt;/style.*&gt;&lt;/table&gt;&lt;table class=&quot;cadre&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&#39;.$purge.$edit.&#39;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;&#39;.$table.&#39;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&#39;;&lt;br /&gt;}&lt;br /&gt;?&gt;&lt;/table.*&gt;&lt;/include&gt;&lt;/wikicalc&gt;&lt;wikicalc&gt;&lt;include&gt;&lt;table.*&gt;&lt;br /&gt;&lt;/table.*&gt;&lt;/include&gt;&lt;/wikicalc&gt;&lt;wikicalc&gt;&lt;include&gt;&lt;table.*&gt;&lt;br /&gt;&lt;/table.*&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Gestion de la concurrence&lt;br /&gt;&lt;br /&gt;Les conflits d&#39;édition ne sont pas aussi bien gérés que dans mediawiki.&lt;br /&gt;&lt;br /&gt;Si 2 personnes modifient en même temps une feuille de calcul wikicalc, elles peuvent voir les modifications des autres en actualisant la page (en passant de l&#39;onglet &lt;span style=&quot;font-weight: bold;&quot;&gt;edit&lt;/span&gt; à &lt;span style=&quot;font-weight: bold;&quot;&gt;publish&lt;/span&gt; par exemple).&lt;br /&gt;&lt;br /&gt;Par contre, si les 2 personnes modifient en même temps la même cellule, c&#39;est la dernière modification qui est prise en compte (la précédente est écrasée).&lt;br /&gt;&lt;/include&gt;&lt;br /&gt;&lt;/wikicalc&gt;&lt;/nowiki&gt;</content><link rel='replies' type='application/atom+xml' href='http://wolverinex02.blogspot.com/feeds/2941848962009609510/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://wolverinex02.blogspot.com/2008/06/howto-utiliser-wikicalc-dans-mediawiki.html#comment-form' title='3 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/2941848962009609510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/2941848962009609510'/><link rel='alternate' type='text/html' href='http://wolverinex02.blogspot.com/2008/06/howto-utiliser-wikicalc-dans-mediawiki.html' title='Howto : utiliser Wikicalc dans Mediawiki'/><author><name>Wolverine</name><uri>http://www.blogger.com/profile/05907782556406556721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://photos1.blogger.com/blogger2/5454/3588/400/Snap_1821251270451182f559543.0.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29398350.post-19186976890673485</id><published>2008-06-03T17:05:00.005+02:00</published><updated>2008-06-03T18:04:12.783+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="informatique"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="mathematiques"/><category scheme="http://www.blogger.com/atom/ns#" term="New Product"/><category scheme="http://www.blogger.com/atom/ns#" term="Perl"/><category scheme="http://www.blogger.com/atom/ns#" term="site web"/><category scheme="http://www.blogger.com/atom/ns#" term="wiki"/><title type='text'>Installation de Wikicalc : le plus beau des tableurs OpenSource</title><content type='html'>Comme je l&#39;ai indiqué dans mon dernier poste : WikiCalc est un tableur collaboratif fonctionnant sur le principe du wiki. Il est complètement écrit en perl. Pour l&#39;installer, rien de plus simple, il suffit de commencer par installer les outils nécessaires sur sa bonne vieille Debian :&lt;br /&gt;&lt;blockquote&gt; apt-get install apache2 libapache2-mod-perl2&lt;/blockquote&gt;Puis de télécharger les sources : &lt;a href=&quot;http://www.softwaregarden.com/products/wikicalc/downloads.html&quot;&gt;wikicalc-1-0.tar.gz&lt;/a&gt;. Ensuite peut commencer l&#39;installation proprement dite :&lt;br /&gt;&lt;blockquote&gt;cd /var/www&lt;br /&gt;tar xvzf wikicalc-1-0.tar.gz&lt;br /&gt;ln -s wikicalc-1-0 wikicalc&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Reste encore à rendre Wikicalc accessible depuis votre serveur Web : par rapport à la configurationi par défaut, il suffit d&#39;y ajouter :&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;NameVirtualHost *&lt;br /&gt;&amp;lt;VirtualHost *&amp;gt;&lt;br /&gt;        ServerAdmin webmaster@localhost&lt;br /&gt;&lt;br /&gt;        DocumentRoot /var/www/wikicalc/&lt;br /&gt;        &amp;lt;Directory /&amp;gt;&lt;br /&gt;                Options FollowSymLinks&lt;br /&gt;                AllowOverride None&lt;br /&gt;        &amp;lt;/Directory&amp;gt;&lt;br /&gt;        &amp;lt;Directory /var/www/wikicalc/&amp;gt;&lt;br /&gt;                Options Indexes FollowSymLinks MultiViews ExecCGI&lt;br /&gt;                AddHandler cgi-script .cgi .pl&lt;br /&gt;                AllowOverride None&lt;br /&gt;                Order allow,deny&lt;br /&gt;                allow from all&lt;br /&gt;        &amp;lt;/Directory&amp;gt;&lt;br /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;pre&gt;&lt;br /&gt;&lt;/pre&gt;On charge le module perl :&lt;br /&gt;&lt;blockquote&gt; a2enmod perl&lt;br /&gt;/etc/init.d/apache2 restart&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Pour finir l&#39;installation, rendez-vous sur &lt;a href=&quot;http://wolverine-linux.blogspot.com/&quot;&gt;http://wikicalc.monsite.com/wikicalccgi.pl&lt;/a&gt; et suivez les instructions....&lt;br /&gt;&lt;br /&gt;Maintenant à vous de jouer</content><link rel='replies' type='application/atom+xml' href='http://wolverinex02.blogspot.com/feeds/19186976890673485/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://wolverinex02.blogspot.com/2008/06/comme-je-lai-indiqu-dans-mon-dernier.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/19186976890673485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/19186976890673485'/><link rel='alternate' type='text/html' href='http://wolverinex02.blogspot.com/2008/06/comme-je-lai-indiqu-dans-mon-dernier.html' title='Installation de Wikicalc : le plus beau des tableurs OpenSource'/><author><name>Wolverine</name><uri>http://www.blogger.com/profile/05907782556406556721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://photos1.blogger.com/blogger2/5454/3588/400/Snap_1821251270451182f559543.0.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29398350.post-7265373712315873910</id><published>2008-05-25T17:25:00.005+02:00</published><updated>2008-11-13T17:07:41.018+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="informatique"/><category scheme="http://www.blogger.com/atom/ns#" term="mathematiques"/><category scheme="http://www.blogger.com/atom/ns#" term="New Product"/><category scheme="http://www.blogger.com/atom/ns#" term="Perl"/><category scheme="http://www.blogger.com/atom/ns#" term="Web Developpement"/><title type='text'>Connaissez-vous cet homme ?</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;Cet homme s&#39;appelle &lt;a href=&quot;http://en.wikipedia.org/wiki/Dan_Bricklin&quot;&gt;Dan Bricklin&lt;/a&gt;, il a écrit le programme Visicalc. Comment ça vous ne connaissez pas Visicalc ??? Eh bien, c&#39;est l&#39;ancêtre d&#39;Excel ou de Calc (OpenOffice)... Mais contrairement à Bill, Dan a préféré ne pas copyrighter son oeuvre... Merci Dan ;-)&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAaJOP4Ss6-C0JLZZ89XKP54ltO7MzPBcWo5k7J33dzLMgtlhyphenhyphenRYXmcWUq7UM9kz5QQuftn-yofDmFqbLzMDLchP88YFKqKO67j_PAVF8arczgCApgMPJ3W2vfgXC1XLxPRZYvhg/s1600-h/Dan_Bricklin.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAaJOP4Ss6-C0JLZZ89XKP54ltO7MzPBcWo5k7J33dzLMgtlhyphenhyphenRYXmcWUq7UM9kz5QQuftn-yofDmFqbLzMDLchP88YFKqKO67j_PAVF8arczgCApgMPJ3W2vfgXC1XLxPRZYvhg/s400/Dan_Bricklin.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5204337228270817314&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Pourquoi vous parler de Dan Bricklin ? Simplement parce qu&#39;il est en train de développer un super outil, toujours dans la même optique : un tableur collaboratif nommé &lt;a href=&quot;http://www.softwaregarden.com/products/wikicalc/&quot;&gt;Wikicalc&lt;/a&gt;. Je l&#39;utilise pour les notes de nos élèves et y reporter les notes avec mes collègues... Adieu les tableaux Excels qu&#39;on ne peut ouvrir qu&#39;en lecture seule parce que votre collègue l&#39;a modifié le matin mais a oublié de le fermer... En plus cet outil a le bon goût d&#39;être Open Source et de reposer sur Perl (un langage que j&#39;adore donc je le souligne ;-) J&#39;espère que beaucoup d&#39;autres personnes vont participer au développement de cet outil, qui je l&#39;espère va concurrencer et peut être remplacer Google Docs... Révons d&#39;un monde totalement Open Source ;-) Amusez-vous bien avec ce nouvel outil promis je l&#39;espère à un grand avenir&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wolverinex02.blogspot.com/feeds/7265373712315873910/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://wolverinex02.blogspot.com/2008/05/connaissez-vous-cet-homme.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/7265373712315873910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/7265373712315873910'/><link rel='alternate' type='text/html' href='http://wolverinex02.blogspot.com/2008/05/connaissez-vous-cet-homme.html' title='Connaissez-vous cet homme ?'/><author><name>Wolverine</name><uri>http://www.blogger.com/profile/05907782556406556721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://photos1.blogger.com/blogger2/5454/3588/400/Snap_1821251270451182f559543.0.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAaJOP4Ss6-C0JLZZ89XKP54ltO7MzPBcWo5k7J33dzLMgtlhyphenhyphenRYXmcWUq7UM9kz5QQuftn-yofDmFqbLzMDLchP88YFKqKO67j_PAVF8arczgCApgMPJ3W2vfgXC1XLxPRZYvhg/s72-c/Dan_Bricklin.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29398350.post-5056406735314459291</id><published>2008-03-29T18:52:00.004+01:00</published><updated>2008-03-29T19:11:27.893+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="gueule"/><category scheme="http://www.blogger.com/atom/ns#" term="Paris"/><category scheme="http://www.blogger.com/atom/ns#" term="politique"/><category scheme="http://www.blogger.com/atom/ns#" term="écologie"/><title type='text'>Les propriétaires, l&#39;écologie et mon portefeuille</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;N&#39;ayant pas les moyens d&#39;acheter, je loue un studio meublé dans le XIII ème arrondissement. Il y a quelques temps ma chaudière est tombée en panne, ma propriétaire l&#39;a donc faite remplacée par une nouvelle chaudière mais toujours le modèle bas de gamme : sans programmateur... C&#39;est vrai je consomme moins de gaz mais je pourrai consommer largement moins si ma chaudière était dotée d&#39;un asservissement par rapport à la température de mon studio... Là est ma question. Je lis dans les journaux que le maire de Paris (M. Delanoé) veut diminuer l&#39;empreinte écologique des parisiens en rénovant certains logements... mais comment va-t-il s&#39;y prendre pour faire rénover les locations ? En effet ma propriétaire tout ce qui l&#39;intéresse c&#39;est de ne pas se ruiner en achetant la chaudière, elle se contrefout dans son efficacité puisque c&#39;est moi qui paye... Le mieux serait une aide aux propriétaires mais ça les enrichirait encore.... Quelqu&#39;un a-t-il une idée ?&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;tag_list&quot;&gt;Tags: &lt;span class=&quot;tags&quot;&gt;&lt;a href=&quot;http://technorati.com/tag/Paris&quot; rel=&quot;tag&quot;&gt;Paris&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/%C3%A9cologie&quot; rel=&quot;tag&quot;&gt;écologie&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/empreinte+%C3%A9cologique&quot; rel=&quot;tag&quot;&gt;empreinte écologique&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/propri%C3%A9taire&quot; rel=&quot;tag&quot;&gt;propriétaire&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Maire+de+Paris&quot; rel=&quot;tag&quot;&gt;Maire de Paris&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Delano%C3%A9&quot; rel=&quot;tag&quot;&gt;Delanoé&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wolverinex02.blogspot.com/feeds/5056406735314459291/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://wolverinex02.blogspot.com/2008/03/les-propritaires-lcologie-et-mon.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/5056406735314459291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/5056406735314459291'/><link rel='alternate' type='text/html' href='http://wolverinex02.blogspot.com/2008/03/les-propritaires-lcologie-et-mon.html' title='Les propriétaires, l&#39;écologie et mon portefeuille'/><author><name>Wolverine</name><uri>http://www.blogger.com/profile/05907782556406556721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://photos1.blogger.com/blogger2/5454/3588/400/Snap_1821251270451182f559543.0.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29398350.post-8948643855587160047</id><published>2008-03-29T18:22:00.004+01:00</published><updated>2008-03-29T18:25:51.442+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="illustration"/><title type='text'>Une petite illustration toute mimi</title><content type='html'>Merci Fulguro. de me permettre d&#39;utiliser une de tes créations ;-)&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://fulguro.fr/images/yonkoma_04.gif&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;&quot; src=&quot;http://fulguro.fr/images/yonkoma_04.gif&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://wolverinex02.blogspot.com/feeds/8948643855587160047/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://wolverinex02.blogspot.com/2008/03/une-petite-illustration-toute-mimi.html#comment-form' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/8948643855587160047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/8948643855587160047'/><link rel='alternate' type='text/html' href='http://wolverinex02.blogspot.com/2008/03/une-petite-illustration-toute-mimi.html' title='Une petite illustration toute mimi'/><author><name>Wolverine</name><uri>http://www.blogger.com/profile/05907782556406556721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://photos1.blogger.com/blogger2/5454/3588/400/Snap_1821251270451182f559543.0.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29398350.post-5562310489972505248</id><published>2008-03-22T18:38:00.003+01:00</published><updated>2008-11-13T17:07:41.166+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="New Product"/><category scheme="http://www.blogger.com/atom/ns#" term="site web"/><title type='text'>Fulguro</title><content type='html'>Un excellent site bientôt ;-) j&#39;ai vraiment hâte de voir ce que ça va donner. Rien que le titre fait saliver, avis aux amateurs de Goldorak &lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://fulguro.fr/&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD_MEtylR9nX0jQ3TbAF5M8i1PFTTsSphZDnzIvcwYKaqJZ-EtHGcOSWyKmWJnDO7kYN5txBDxTWMr8DElODku9J2xDZk32u_WpfXDCcgVEWP9Cd7urEM49Xz1kv7e2soL3wI4Dw/s400/fulguro.gif&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5180622077922363218&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;tag_list&quot;&gt;Tags: &lt;span class=&quot;tags&quot;&gt;&lt;a href=&quot;http://technorati.com/tag/nouveau&quot; rel=&quot;tag&quot;&gt;nouveau&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/site+web&quot; rel=&quot;tag&quot;&gt;site web&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/cr%C3%A9ation&quot; rel=&quot;tag&quot;&gt;création&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/dessin&quot; rel=&quot;tag&quot;&gt;dessin&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Goldorak&quot; rel=&quot;tag&quot;&gt;Goldorak&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/fran%C3%A7ais&quot; rel=&quot;tag&quot;&gt;français&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/art&quot; rel=&quot;tag&quot;&gt;art&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/photos&quot; rel=&quot;tag&quot;&gt;photos&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/artiste&quot; rel=&quot;tag&quot;&gt;artiste&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wolverinex02.blogspot.com/feeds/5562310489972505248/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://wolverinex02.blogspot.com/2008/03/fulguro.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/5562310489972505248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29398350/posts/default/5562310489972505248'/><link rel='alternate' type='text/html' href='http://wolverinex02.blogspot.com/2008/03/fulguro.html' title='Fulguro'/><author><name>Wolverine</name><uri>http://www.blogger.com/profile/05907782556406556721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://photos1.blogger.com/blogger2/5454/3588/400/Snap_1821251270451182f559543.0.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD_MEtylR9nX0jQ3TbAF5M8i1PFTTsSphZDnzIvcwYKaqJZ-EtHGcOSWyKmWJnDO7kYN5txBDxTWMr8DElODku9J2xDZk32u_WpfXDCcgVEWP9Cd7urEM49Xz1kv7e2soL3wI4Dw/s72-c/fulguro.gif" height="72" width="72"/><thr:total>0</thr:total></entry></feed>