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

<channel>
	<title>Why do witches burn?</title>
	<atom:link href="http://blog.salagir.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.salagir.com</link>
	<description>Because they're made of wood, like bridges, and so float on water, like churches, very small rocks, gravy, and a duck.</description>
	<pubDate>Mon, 26 Jul 2010 17:40:34 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.1</generator>
	<language>en</language>
			<item>
		<title>Easy page setting for scenarists</title>
		<link>http://blog.salagir.com/257-easy-page-setting-for-scenarists/</link>
		<comments>http://blog.salagir.com/257-easy-page-setting-for-scenarists/#comments</comments>
		<pubDate>Sun, 06 Jun 2010 19:11:22 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Miscellaneous]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/?p=257</guid>
		<description><![CDATA[This page is for the cartoonists who will work with me as a scenarist. I explain here my methods.
When I write a page, I do it panel per panel. Each panel is separated by two line return, and each information is on a new line. Description, each said sentence&#8230;
Example :

Broly and Goku with the magnetic [...]]]></description>
			<content:encoded><![CDATA[<p>This page is for the cartoonists who will work with me as a scenarist. I explain here my methods.</p>
<p>When I write a page, I do it panel per panel. Each panel is separated by two line return, and each information is on a new line. Description, each said sentence&#8230;</p>
<p>Example :
<pre class="lang">
Broly and Goku with the magnetic sword between them.
Goku: ??

Broly touches the sword, puzzled.

View going to the ring, with a cool 3D for the sword.

View of Vegetto holding the sword.

Vegetto holds his hair to make them look like Gokû.
Vegetto: Hey, Broly !!
Vegetto: I am the real Kakarotto !

Broly gets angry.
Broly (yells): Kakarotto!!!
</pre>
<p>When someone talks in two balloons, I write two sentence lines.<br />
A sentence ligne always begin by who talks and &#8220;:&#8221;, then the text.<br />
If I want to add a narration panel, I write: &#8220;Narration: blah blah blah&#8221;.</p>
<p>When I also make the page setting, I use a great system.<br />
I stole it from René Goscinny, the best scenarist in the world.</p>
<p>He cuts the comic pages in 4 lines, and 3&#215;4 basic panels. Like if the page had 12 panels.<br />
When a panel is big, he says what basic panels it takes (for exemple, all the width: panel 1-2-3).</p>
<p>I&#8217;m doing the same, with 3&#215;3 panel as basic (manga format instead of comics).<br />
Of course, it does not mean that each panel is exactly a third of page, or you can&#8217;t make panels with diagonals border, etc&#8230; It&#8217;s just a very easy way to give an idea of the thing.</p>
<p><center><img src="/upload/cadrage/general.png" /></center></p>
<p>Here is my page with this info:</p>
<pre class="lang">
Panel 1-2:
Broly and Goku with the magnetic sword between them.
Goku: ??

Panel 3:
Broly touches the sword, puzzled.
Sound: TK

Panel 4-5:
View going to the ring, with a cool 3D for the sword.
Sound: ZAM

Panel 6:
View of Vegetto holding the sword.
Sound: VVvvvv

Panel 7-8:
Vegetto holds his hair to make them look like Gokû.
Vegetto: Hey, Broly !!
Vegetto: I am the real Kakarotto !

Panel 9:
Broly gets angry.
Broly (yells): Kakarotto!!!
</pre>
<p>Sometimes I also tell if the panel is a little bigger, or the line is bigger (a line can take half of the page height).<br />
Example :</p>
<pre class="lang">
Panel 1 (small):
Goku: I'm okay.

Panel 2 (small):
Gohan: Me too.

Panel 3 (big):
Vegeta : Are you all mental?!?
</pre>
<p>When I have panels that take exactly half the space, I doing a stupid thing, I add .5<br />
Couldn&#8217;t thing better.</p>
<p>Some examples (I took off the sentences for more space) :</p>
<div style="width:180px;height:260px;float:left; padding: 5px; margin: 5px; border: 2px solid">
<b>Page 181</b></p>
<p>Panel 1-2-3: Broly fly towards the group.</p>
<p>Panel 4-7: Goku turns SSJ3.</p>
<p>Panel 5-6: Broly flys toward Goku.</p>
<p>Panel 8-9: Broly est stoppé dans son élan par l&#8217;épée magnétique.
</p></div>
<p> <img src="/upload/cadrage/181.png" /> <img src="/upload/cadrage/0181.png" /></p>
<div style="width:180px;height:260px;float:left; padding: 5px; margin: 5px; border: 2px solid">
<b>Page 182</b><br />
Panel Case 1-1.5: Broly and Goku.<br />
Panel 1.5-3: Broly touches the sword, puzzled.<br />
Panel 4-5: View going to the ring, with a cool 3D for the sword.<br />
Panel 6: View of Vegetto holding the sword.<br />
Panel 7-8: Vegetto holds his hair to make them look like Gokû.<br />
Panel 9: Broly gets angry.
</div>
<p> <img src="/upload/cadrage/182.png" /> <img src="/upload/cadrage/0182.png" /></p>
<div style="width:180px;height:260px;float:left; padding: 5px; margin: 5px; border: 2px solid">
<b>Page 183</b></p>
<p>Panel 1-2-3: Broly takes off.</p>
<p>Panel 4-4.5-7-7.5: Vegetto turns SSJ.</p>
<p>Panel 4.5-6-7.5-9: Broly will hit Vegetto.
</p></div>
<p> <img src="/upload/cadrage/183.png" /> <img src="/upload/cadrage/0183.png" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/257-easy-page-setting-for-scenarists/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Mise en page facile pour scénaristes</title>
		<link>http://blog.salagir.com/244-mise-en-page-facile-pour-scenaristes/</link>
		<comments>http://blog.salagir.com/244-mise-en-page-facile-pour-scenaristes/#comments</comments>
		<pubDate>Sun, 06 Jun 2010 18:49:36 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/?p=244</guid>
		<description><![CDATA[Chers amis, je vous partage ici mes petits secrets de scénariste. Rien de complexe en fait. Mais cette page sera aussi pratique pour que j&#8217;explique mon système à tout dessinateur pour lequel je pondrai un scénario.
Quand j&#8217;écris une page, je le fais case par case. Chaque case est séparée par un double retour à la [...]]]></description>
			<content:encoded><![CDATA[<p>Chers amis, je vous partage ici mes petits secrets de scénariste. Rien de complexe en fait. Mais cette page sera aussi pratique pour que j&#8217;explique mon système à tout dessinateur pour lequel je pondrai un scénario.</p>
<p>Quand j&#8217;écris une page, je le fais case par case. Chaque case est séparée par un double retour à la ligne, et chaque information est sur une nouvelle ligne : description, chaque ligne de dialogue&#8230;</p>
<p>Exemple :
<pre class="lang">
Broly et Goku avec l'épée magnétique entre les deux.
Goku: ??

Broly touche l'épée, étonné.

Vue où l'on remonte vers le ring, l'épée a un bel effet 3D.

Vue de Vegetto qui tient l'épée.

Vegetto tient ses cheveux pour faire la coupe de Gokû.
Vegetto: Hey, Broly !!
Vegetto: C'est moi, le vrai Kakarotto !

Broly s'énerve.
Broly (crie): Kakarotto!!!
</pre>
<p>Quand quelqu&#8217;un parle en deux bulles, je lui donne deux lignes de dialogue.<br />
Un dialogue ou un bruit commence toujours par le parleur, deux points, et le texte.<br />
Quand on veut ajouter un cadre de narration, j&#8217;écris: &#8220;Narration: bla bla bla&#8221;.</p>
<p>Lorsque je choisi aussi la mise en page, j&#8217;utilise un système génial.<br />
Je l&#8217;ai piqué à René Goscinny, le meilleur scénariste de BD du monde.</p>
<p>Il découpe les pages de BD en 4 lignes, et 3&#215;4 cases basiques. Comme si la planche avait 12 cases.<br />
Et quand une case est grande, il dit quelles cases basiques ça prend (genre pour toute la largeur : case 1-2-3).<br />
C&#8217;est super méga pratique !!!</p>
<p>Donc je fais pareil, en prenant pour base 3&#215;3 cases (format manga et non BD).<br />
Évidement, cela n&#8217;oblige pas à découper les cases en exactement un tiers, ni de s&#8217;interdire de faire des cases aux bords diagonales, etc&#8230; C&#8217;est juste très pratique pour donner une idée générale.</p>
<p><center><img src="/upload/cadrage/general.png" /></center></p>
<p>Voici ce que donne ma page avec ça :</p>
<pre class="lang">
Case 1-2:
Broly et Goku avec l'épée magnétique entre les deux.
Goku: ??

Case 3:
Broly touche l'épée, étonné.
Bruit: TK

Case 4-5:
Vue où l'on remonte vers le ring, l'épée a un bel effet 3D.
Bruit: ZAM

Case 6:
Vue de Vegetto qui tient l'épée.
Bruit: VVvvvv

Case 7-8:
Vegetto tient ses cheveux pour faire la coupe de Gokû.
Vegetto: Hey, Broly !!
Vegetto: C'est moi, le vrai Kakarotto !

Case 9:
Broly s'énerve.
Broly (crie): Kakarotto!!!
</pre>
<p>Il m&#8217;arrive aussi de spécifier si une case est plus grande, ou si une ligne est plus grande. Une ligne peut très bien prendre la moitié de la hauteur de la page.<br />
Exemple :</p>
<pre class="lang">
Case 1 (petite):
Goku: Je vote pour.

Case 2 (petite):
Gohan: Moi aussi.

Case 3 (grande):
Vegeta : Non mais ça va pas ?!?
</pre>
<p>Quand j&#8217;ai des cases qui prennent exactement la moitié, je fais un truc idiot, je mets des .5<br />
J&#8217;ai pas trouvé mieux (j&#8217;ai du mal chercher).</p>
<p>Quelques exemples (j&#8217;ai enlevé les dialogues pour prendre moins de place) :</p>
<div style="width:180px;height:260px;float:left; padding: 5px; margin: 5px; border: 2px solid">
<b>Page 181</b></p>
<p>Case 1-2-3: Broly fonce sur le groupe.</p>
<p>Case 4-7: Goku passe SSJ3.</p>
<p>Case 5-6: Broly fonce sur Goku.</p>
<p>Case 8-9: Broly est stoppé dans son élan par l&#8217;épée magnétique.
</p></div>
<p> <img src="/upload/cadrage/181.png" /> <img src="/upload/cadrage/0181.png" /></p>
<div style="width:180px;height:260px;float:left; padding: 5px; margin: 5px; border: 2px solid">
<b>Page 182</b><br />
Case 1-1.5: Broly et Goku.<br />
Case 1.5-3: Broly touche l&#8217;épée, étonné.<br />
Case 4-5: Vue où l&#8217;on remonte vers le ring, l&#8217;épée a un bel effet 3D.<br />
Case 6: Vue de Vegetto qui tient l&#8217;épée.<br />
Case 7-8: Vegetto tient ses cheveux pour faire la coupe de Gokû.<br />
Case 9: Broly s&#8217;énerve.
</div>
<p> <img src="/upload/cadrage/182.png" /> <img src="/upload/cadrage/0182.png" /></p>
<div style="width:180px;height:260px;float:left; padding: 5px; margin: 5px; border: 2px solid">
<b>Page 183</b></p>
<p>Case 1-2-3: Broly décolle.</p>
<p>Case 4-4.5-7-7.5: Vegetto passe SSJ.</p>
<p>Case 4.5-6-7.5-9: Broly va frapper Vegetto.
</p></div>
<p> <img src="/upload/cadrage/183.png" /> <img src="/upload/cadrage/0183.png" /></p>
<p>Je pense que vous avez compris le système ?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/244-mise-en-page-facile-pour-scenaristes/feed/</wfw:commentRss>
		</item>
		<item>
		<title>C&#8217;est mal foutu, aussi !</title>
		<link>http://blog.salagir.com/15-cest-mal-foutu-aussi/</link>
		<comments>http://blog.salagir.com/15-cest-mal-foutu-aussi/#comments</comments>
		<pubDate>Thu, 06 May 2010 07:03:12 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Ca ne va pas du tout !]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/fr/?p=15</guid>
		<description><![CDATA[Les articles &#8220;J’aime pas ça, il faut que le monde le sache !&#8221; continuent.
Celui-là remonte à très loin. On voit en lisant son ID que je l&#8217;ai commencé en 2007 sûrement&#8230; Whaouw&#8230;
Les bouteilles de shampoing ovales
J&#8217;ai déjà un petit quelque chose contre les objets cylindriques trop haut, qui ont clairement une base trop petit pour [...]]]></description>
			<content:encoded><![CDATA[<p>Les articles &#8220;J’aime pas ça, il faut que le monde le sache !&#8221; continuent.<br />
Celui-là remonte à très loin. On voit en lisant son ID que je l&#8217;ai commencé en 2007 sûrement&#8230; Whaouw&#8230;</p>
<h3>Les bouteilles de shampoing ovales</h3>
<p>J&#8217;ai déjà un petit quelque chose contre les objets cylindriques trop haut, qui ont clairement une base trop petit pour être stables, et à la moindre vibration dans l&#8217;air, tombent.<br />
Mais les salles de bain, surtout quand elles sont à moitié habitées par une fille, se retrouvent vite en manque de surface pour poser les objets. On comprends donc l&#8217;optimisation des bouteilles de shampoing et autres, qui prennent le plus de volume possible pour le moins de surface de posage possible.</p>
<p>Mais ces bouteilles dont la base est plus petite que le reste du corps, quel intérêt ? Esthétique ? Tromper l&#8217;acheteur sur le volume réel de la bouteille ? Utilisant une forme ronde, avec une base minuscule, on a un objet qui en pratique prends une grosse surface mais se paye le luxe de ne pas être stable.</p>
<p>Oui, tout me tombe en permanence sur les pieds dans les douches. J&#8217;ai qu&#8217;une chose à dire : vive le savon de Marseille.</p>
<h3>Le papier toilette mis à l&#8217;envers</h4>
<p>Mais <a href="http://currentconfig.com/archives/000083.html">d&#8217;autres en ont parlés mieux que moi</a>.</p>
<p>Je comptais également faire des graphiques du même genre :)<br />
Mais ils auraient été moins joli je l&#8217;avoue.</p>
<h3>Les crétins qui foutent des sons sur youtube et dailymotion</h3>
<p>Putain si je cherche un nom de chanson sur un site de vidéo, c&#8217;est pour voir le clip, pas entendre la putain de musique en qualité pourrie sur une image fixe !!<br />
Le diaporama des premières réponses de google image sur le sujet comme accompagnement ne m&#8217;intéresse pas non plus !!</p>
<h3>Les sous-artistes qui pondent des remix de vidéo et les foutent en ligne</h3>
<p>Par milliers, ils noient l&#8217;original dans leurs &#8220;explosion de caca&#8221; et autres retouche / remix de la vidéo initiale, qui est à 99.99% une horreur.<br />
Et comme ces crétins abyssaux n&#8217;ont pas le moindre respect de l&#8217;original ou du droit d&#8217;auteur, ils ne pensent pas à mettre un lien.<br />
Au final on ne trouve pas l&#8217;extrait original pour peu qu&#8217;on ce soit intéressé trois jours après le buzz : les gamins avec trop de temps de libre et moviemaker se sont déjà déchaînés.</p>
<h3>Les interrupteurs hors de la salle qu&#8217;ils allument</h3>
<p>Non mais sans déconner. Je sais tâtonner à côté de la porte pour trouver l&#8217;interrupteur hein. Généralement c&#8217;est toujours au même endroit.<br />
L&#8217;interrupteur dehors, pour les toilettes, à part une perche pour faire des blagues nulles aux gens dedans, ça sert à rien.</p>
<p>L&#8217;interrupteur dehors, pour toute autre salle, c&#8217;est carrément incompréhensible. Qu&#8217;est ce qui allume quoi ??</p>
<p>En passant, les halls d&#8217;immeubles&#8230; Arrêtez de foutre des sonnettes qui ont la forme d&#8217;interrupteurs à lumière ! Surtout quand vous mettez pas la bonne vieille diode dans celui de la lumière pour qu&#8217;on le trouve ! Comment voulez-vous que, dans le noir, on voit votre symbole de merde sur l&#8217;interrupteur qui précise si c&#8217;est la lumière ou une sonnette ??</p>
<h3>Les robinets à tourner sans &#8220;prise&#8221;</h3>
<p>Verrou, robinet, ou autres, il y a souvent des trucs qu&#8217;on doit tourner pour ouvrir quelque chose. Le mieux pour tourner, généralement, c&#8217;est de mettre un truc avec des prises, pour qu&#8217;on puisse pousser sur ces prises, générant une rotation.<br />
Mais souvent, pour des raisons j&#8217;imagine de design, on a pas de prise, il faut donc serrer l&#8217;objet, compter sur la friction de notre peau, et tourner la main.<br />
<center><img src="/upload/robinets.png" alt="Bons et mauvais robinets" /></center></p>
<p>Edit : Ajout d&#8217;un exemple typique. Le verrou est parfait, la poignée est pourrie.<br />
<center><img src="/upload/poignee.jpg" alt="Bonnes et mauvaises poignées" /></center></p>
<p>Très souvent&#8230; il n&#8217;y a pas de problème. Mais dès que le robinet est un peu coincé, qu&#8217;on a la main glissante&#8230; c&#8217;est inutilisable ! News flash pour les constructeurs de robinets à eau de salle de bain: quand je me lave, j&#8217;ai les mains glissantes !!!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/15-cest-mal-foutu-aussi/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Backup organizer</title>
		<link>http://blog.salagir.com/229-backup-organizer/</link>
		<comments>http://blog.salagir.com/229-backup-organizer/#comments</comments>
		<pubDate>Thu, 06 May 2010 06:27:47 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[My useful scripts]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/?p=229</guid>
		<description><![CDATA[Backuping data is real easy (with linux). I use three different ways:

For a data base BDD : mysqldump [cnx infos] &#124;gzip &#62; backupbdd.sql.gz
For not too numerous files, which data is important, like configuration ones: tar czvf yoyobackup.tar.gz dafiles/
For files I want to access easily and/or numerous : rsync -av me/ othercomputer:me/

In the two first cases, [...]]]></description>
			<content:encoded><![CDATA[<p>Backuping data is real easy (with linux). I use three different ways:</p>
<ul>
<li>For a data base BDD : <code>mysqldump [cnx infos] |gzip &gt; backupbdd.sql.gz</code></li>
<li>For not too numerous files, which data is important, like configuration ones: <code>tar czvf yoyobackup.tar.gz dafiles/</code></li>
<li>For files I want to access easily and/or numerous : <code>rsync -av me/ othercomputer:me/</code></li>
</ul>
<p>In the two first cases, I add to the filename the date of the day, and like this, I have many backups, one per day. Useful if a bad change was made a week ago. Another way would have only yesterday backup, and I&#8217;d look stupid.</p>
<p>Network administrators know about this problem and so handle backups per date. Of course, one per day is a lot after one year, and we don&#8217;t need this level of detail, so no need to keep everything.<br />
There are different ways to managed these date backup, among of them is <code>dirvish</code> which backups a whole directory tree, and the good old <code>logrotate</code>, except it&#8217;s perfect for log files but a pain for my zipped files.</p>
<p>As I didn&#8217;t find a good solution to tiny my files so I don&#8217;t have 58 files after 58 days, I coded it myself.</p>
<p>You can download the code :</p>
<ul>
<li><a href="/upload/organize_backups.php.zip">organize_backups.php Zipped</a></li>
<li><a href="/upload/organize_backups.php.html">Voir organize_backups.php on line</a></li>
</ul>
<p>There is a &#8220;inoffensive&#8221; mode, in which the programs tel what he would delete and rename instead of actually doing it.</p>
<p>Example of use for my database. Thanks to the backups, when my server died, only a few comments of visitors of the same day disappeared (yeah I could have used a SQL sync, but I&#8217;m no admin) :</p>
<pre class="BASH">
#!/bin/sh

# cronned every day early in the morning

dirdate=`date +"%Y-%m-%d"`
path=/home/salagir

mysqldump -u... -p... --skip-extended-insert --all-databases | gzip > $path/backupsbdd/$dirdate.sql.gz

php organize_backups.php $path/backupsbdd/'*'
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/229-backup-organizer/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Photoshop Text Extractor</title>
		<link>http://blog.salagir.com/226-photoshop-text-extractor/</link>
		<comments>http://blog.salagir.com/226-photoshop-text-extractor/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 09:38:25 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[My useful scripts]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/?p=226</guid>
		<description><![CDATA[While making Geek&#8217;s World, I often change the text at the last moment. As a result, the content of the .psd file was more accurate than the text in the database.
Plus, I also used to translate from English to French directly in photoshop.
And as I want to display the text on my webpage (google indexation) [...]]]></description>
			<content:encoded><![CDATA[<p>While making Geek&#8217;s World, I often change the text at the last moment. As a result, the content of the .psd file was more accurate than the text in the database.<br />
Plus, I also used to translate from English to French directly in photoshop.</p>
<p>And as I want to display the text on my webpage (google indexation) and as visitors can search a strip by it&#8217;s textual content, I want the text to be accurate in the database ! Copy-pasting from the photoshop is a pain.</p>
<p>So I coded a text extractor.<br />
The texts written in a Photoshop file, as long as they aren&#8217;t transformed into Bipmaps, are encoded into the .psd file.</p>
<p>Example of use:</p>
<pre class="BASH">
$ perl PsdTextExtractor.pl 614-txt.psd
free samples
Hey, I paid 2 euros for this on a plane!
échantillon gratuit
Hé, j'ai payé 2 euros pour ça dans un avion !
Geek's World 484 by Salagir
</pre>
<p>I chose <a href="http://www.geeksworld.org/strip_614.html">a strip with little text</a> so the example isn&#8217;t too big. Note that the formatting of the text is forgotten.<br />
I&#8217;m sure you guessed that I wrote another script that calls this one, deletes the copyright, splits the two languages, and updates the database :)</p>
<p>You can download the code:</p>
<ul>
<li><a href="/upload/PsdTextExtractor.pl">PsdTextExtractor.pl</a></li>
<li><a href="/upload/PsdTextExtractor.pl.zip">PsdTextExtractor.pl Zipped</a></li>
<li><a href="/upload/PsdTextExtractor.pl.html">See PsdTextExtractor.pl online</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/226-photoshop-text-extractor/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Je hais les mises à jour !</title>
		<link>http://blog.salagir.com/222-je-hais-les-mises-a-jour/</link>
		<comments>http://blog.salagir.com/222-je-hais-les-mises-a-jour/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 09:34:57 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Ca ne va pas du tout !]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/?p=222</guid>
		<description><![CDATA[Windows, Linux, tous les programmes qu&#8217;on utilise tous les jours, et même Wordpress et les consoles de jeu, tout le monde se mets à la mise à jour automatique ou conseillée.
La mise à jour de programme ou d&#8217;OS est un mal diabolique qui ruine nos vies !!!
Et ceci, expliqué en trois points.
Ça prends de la [...]]]></description>
			<content:encoded><![CDATA[<p>Windows, Linux, tous les programmes qu&#8217;on utilise tous les jours, et même Wordpress et les consoles de jeu, tout le monde se mets à la mise à jour automatique ou conseillée.</p>
<p>La mise à jour de programme ou d&#8217;OS est un mal diabolique qui ruine nos vies !!!</p>
<p>Et ceci, expliqué en trois points.</p>
<h3>Ça prends de la ressource</h3>
<p>Premièrement, la plupart des programmes ne se gênent pas pour se mettre à jour pratiquement toutes les semaines. 54 fois par an. Sont-ils donc si mal codés qu&#8217;ils ont besoin d&#8217;un coup de peinture tout le temps ? C&#8217;est quoi ces délires !<br />
Quand je lance Firefox, c&#8217;est pour aller sur un site, pas devoir attendre une minute ou deux qu&#8217;il ait fini d&#8217;installer ses nouveaux composants dont je me fous.</p>
<p>Je suis déjà assez choqué qu&#8217;en 2010, des dossiers puissent mettre plus d&#8217;une milliseconde à s&#8217;ouvrir (oui, je me fous de tes miniatures de merde, et des infos détaillées du fichier. Ouvrir chaque vidéo pour me faire une icône de dossier, non mais ça va pas ???)&#8230;<br />
Mais alors, devoir se prendre des attentes parce qu&#8217;un programme a décidé de s&#8217;occuper de lui-même au lieu de te fournir ses fonctionnalités, ça me gave !</p>
<p>Est-ce qu&#8217;on peut m&#8217;expliquer pourquoi Ubuntu a en moyenne besoin de plus de 300 méga-octets d&#8217;update par mois ? <strong>Trois cent méga-octets !!</strong> Mais il réinstalle tout ou quoi ? J&#8217;ai coché &#8220;que les updates de sécurité&#8221;. Il y a 314 millions d&#8217;octets de trous de sécurité dans Ubuntu depuis le mois dernier ? Vraiment ????</p>
<h3>Ça change les fonctionnalités</h3>
<p>Je suis une grand-mère, un dinosaure devant son PC, qui n&#8217;aime pas le changement, en bref je suis un mammifère. Peut-être parce que des utilisateurs voulaient un changement, ou pire, parce qu&#8217;un développeur a pensé tout seul que ce serai mieux, une option se déplace, un clic ne fait plus la même chose.</p>
<p>Je ne suis pas là pour redécouvrir mon programme toutes les semaines, j&#8217;ai des jeux vidéos pour cela ! Je suis là pour les utiliser.</p>
<p>Désolé Firefox, mais la nouvelle tab qui s&#8217;ouvre à droite de la tab en cours au lieu de tout à la fin, c&#8217;est p&#8217;tet intéressant, mais moi je vois surtout que mon réflexe de lancer mon curseur tout à droite de l&#8217;écran est maintenant caduc ! Faut que je me rééduque pour ta gueule&#8230;</p>
<h3>Ça <em>enlève</em> les fonctionnalités</h3>
<p>Alors ça c&#8217;est le pire. Firefox, à chaque mise à jour, décide que toutes ses extensions ne sont plus compatibles. Hop, poubelle le web-developer.<br />
Pardon ? je fais quoi maintenant, je désinstalle FF et réinstalle une version précédente ??</p>
<p>Un jour, un programme (que je n&#8217;ai PAS mis à jour) a décidé de ne plus marcher. La raison : les updates windows ou les updates de mon anti-virus&#8230; en tout cas l&#8217;un d&#8217;eux a décidé que mon programme qui se connecte en ligne ne pourrait plus le faire.<br />
Voilà, je ne peux plus l&#8217;utiliser. Du tout.<br />
<small>(oui oui j&#8217;ai cherché dans les options de l&#8217;anti virus, je lui ai donné tous les droits, que dalle)</small></p>
<p>Je ne compte plus le nombre de fonctionnalités que j&#8217;ai perdu au fur et à mesure des updates. Oui, j&#8217;ai eu droit à des nouvelles, mais&#8230; et alors ? C&#8217;est les anciennes que je veux.</p>
<h3>Point bonus : ça ne change que dalle à la sécurité</h3>
<p>Une faille de sécurité, à 90%, c&#8217;est l&#8217;utilisateur devant son ordinateur qui ouvre et exécute tout ce qu&#8217;on lui envoi.</p>
<p>A chaque fois que je lis un rapport de trou, du genre buffer overflow, la pire chose qu&#8217;on puisse faire généralement, c&#8217;est crasher le programme. Pas mettre des images pédophile sur ton ordinateur ni même piquer celles qui y sont déjà.</p>
<p>Alors est-ce vraiment nécessaire de nous emmerder pour ça, vraiment !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/222-je-hais-les-mises-a-jour/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Remplir une forme dessinée avec Photoshop</title>
		<link>http://blog.salagir.com/203-remplir-une-forme-dessinee-avec-photoshop/</link>
		<comments>http://blog.salagir.com/203-remplir-une-forme-dessinee-avec-photoshop/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 21:16:14 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/?p=203</guid>
		<description><![CDATA[Aujourd&#8217;hui mes petits amis, on va colorier un dessin en &#8220;lignes claires&#8221; en niveau de gris.
je veux dire par là, un dessin que vous avez encré sur papier et scanné, ou dessiné directement à la tablette graphique, mais pas un noir et blanc : en niveau de gris afin d&#8217;avoir, avec une définition plus basse, [...]]]></description>
			<content:encoded><![CDATA[<p>Aujourd&#8217;hui mes petits amis, on va colorier un dessin en &#8220;lignes claires&#8221; en niveau de gris.<br />
je veux dire par là, un dessin que vous avez encré sur papier et scanné, ou dessiné directement à la tablette graphique, mais pas un noir et blanc : en niveau de gris afin d&#8217;avoir, avec une définition plus basse, une jolie qualité et pas d&#8217;effet crénelage.</p>
<p>Voici actuellement ce qui se passe quand on cherche à colorier une telle surface avec la baguette magique et le pot de peinture. On bosse évidement sur des surfaces fermées.<br />
<center>En position 1, le classique qui fait moche que l&#8217;ont retrouve bien trop souvent sur le net. En position 2, le vrai noir &#038; blanc, qui rends propre mais crénelé, et en position 3, ce que je vais vous apprendre à faire :<br />
<img src="/upload/tuto-fill/examples-mov.gif" alt="Différents remplissages" /></center></p>
<p>A la fin de ce tutoriel, vous colorierez vos surfaces très facilement en quelques touches, car vivent les raccourcis claviers.</p>
<p><b>D&#8217;abord, améliorer la baguette magique.</b></p>
<p>Un petit basique : dans les options de Baguette, cochez &#8220;Lissage&#8221;.</p>
<p><img src="/upload/tuto-fill/scripts.png" style="float:right" /><br />
Ouvrez un fichier dans Photoshop, et faites une sélection (à la baguette, ou un coup de rectangle de sélection, on s&#8217;en fout. Par contre il en faut PAS que la sélection prenne TOUT le dessin).<br />
Ensuite, ouvrez la fenêtre des scripts (Alt+F9) et créez un nouveau script (petit carré blanc avec bord retourné en bas).<br />
Donnez-lui le nom &#8220;Agrandir mask&#8221; (ou autre chose hein) et choisissez une Touche (Fonction). Moi j&#8217;aime bien F2. Mais vous pouvez prendre une autre fonction. Validez.</p>
<p>Ce nouveau script sera directement en mode &#8220;enregistrement&#8221;, toutes vos prochaines actions seront surveillées donc ne faites exactement que ça :<br />
Menu <code>Sélection &gt; Modifier &gt; Dilater</code><br />
Il vous demande un nombre de pixel. Ce nombre doit être égal à la moitié de la largeur de vos traits. Moi j&#8217;utilise plutôt 3 mais cela dépends vraiment de vos traits. Si vous encrez au pinceau de taille 10, prenez 5 pixels.</p>
<p>Ensuite, arrêtez l&#8217;enregistrement du script en cliquant sur la carré en bas à gauche dans la fenêtre scripts.<br />
Vous devriez avoir un script du genre de l&#8217;image de droite.</p>
<p>Faites F2 (ou F3 ou ce que vous avez choisi) : votre masque de sélection doit s&#8217;agrandir. Bien.<br />
Vous pouvez fermer la fenêtre de scripts.</p>
<p><b>Ensuite, améliorer la puissance du pot de peinture.</b></p>
<p>Le pot de peinture est trop timide&#8230; il ne colorie que les pixels de la même couleur que votre point d&#8217;attaque, en fait il a une baguette magique en lui&#8230; Nous ce qu&#8217;on veut c&#8217;est tout recouvrir comme des porcs et tout effacer.<br />
(Si vous êtes des gens propres qui coloriez sur un autre calque, cette partie ne vous concerne pas. Mais si vous voulez remplir de noir une zone dans votre dessin &#8220;manga&#8221; par exemple, sur le même calque, cette partie vous changera tout)</p>
<p>Allez à l&#8217;outil &#8220;Pot de Peinture&#8221; et cliquez longtemps dessus pour accéder à l&#8217;outil &#8220;Dégradés&#8221;.<br />
Cliquez sur le dégradé dans le rectangle plat en haut, pour vous retrouver dans l&#8217;éditeur de dégradé (ressemble à l&#8217;image là).<br />
Nous allons créer un dégradé. Je ne trouve pas ça intuitif donc suivez-moi pas à pas.<br />
Le dégradé n&#8217;en sera pas un : il ira entre deux couleurs identiques, celles du &#8220;Premier Plan&#8221;. Ainsi vous pourrez colorier de n&#8217;importe quelle couleur en changeant votre couleur de base et sans toucher à l&#8217;éditeur de dégradés.</p>
<p>Vous devez modifier la couleur des petits carrés en dessous du grand rectangle plat, à gauche et à droite : Cliquez dessus, puis en bas à gauche dans &#8220;Couleur:&#8221;, cliquez sur la flèche noire et sélectionnez &#8220;Premier plan&#8221;.<br />
Si ils ne sont pas déjà à 100%, cliquez sur les carrés noirs au-dessus du grand rectangle plat, et mettez 100% d&#8217;opacité.<br />
<center><img src="/upload/tuto-fill/pot-de-peinture.png" alt="Super peinture" /></center></p>
<p>Quand c&#8217;est fait, donnez alors enfin un nom à votre dégradé, puis cliquez sur &#8220;Nouveau&#8221;.<br />
Là il s&#8217;ajoutera à la liste, très visible par le fait ce que sera un carré d&#8217;une seule couleur.</p>
<p>Quand vous utiliserez ce dégradé, il coloriera tout votre calque (ou toute votre sélection) sans se soucier des limites de dessin. Il écrase. J&#8217;aime.</p>
<p><b>Vous avez maintenant les super outils qu&#8217;il faut.</b></p>
<p>Nous allons faire un test. Commençons par colorier les cheveux de Vegeta en noir.</p>
<p>Prenez votre dessin, et faites l&#8217;action suivante :<br />
<center>w, (click), F2, g, (click), Ctrl+d, b</center>Voilà, c&#8217;est colorié !</p>
<ul>
<li>w : touche W, sélectionne la baguette magique (magic <b>W</b>and).</li>
<li>(click) : définira votre zone. Votre sélection devrait toucher les bords.</li>
<li>F2 : (ou F3 ou ce que vous avez choisi comme raccourci), agrandi votre sélection.</li>
<li>g : touche G, comme dé<b>G</b>radé. Sélectionne votre super pot de peinture (rien de plus à faire si vous avez votre bon dégradé de pris).</li>
<li>(click) : vous coloriez votre sélection en écrasant les pixels de dégradé noir-blanc à l&#8217;intérieur de la sélection. Cliquez n&#8217;importe où, mais pensez à déplacer votre souris entre le moment où vous enfoncez le click et le moment où vous le relâchez, car un dégradé se fait sur deux points.</li>
<li>Ctrl+d : Raccourcis qui désactive la sélection.</li>
<li>b : touche B, vous redonne le pinceau (<b>B</b>rush) pour que vous continuiez à dessiner, à commencer par vous occuper des petits pics qui n&#8217;ont pas été coloriés (la technologie à ses limites !). Dans le noircissement des cheveux, ça arrivera souvent : le bout des mèches doit encore être fait à la main.</li>
</ul>
<p><center><img src="/upload/tuto-fill/vegetas.png" /><br />
Avant, après, et la vieille méthode :)</center></p>
<p>Finissons par une colo plus poussée.</p>
<p>Le bon coloriste mettra chaque couleur sur un calque différent, puis mettra ces calques en &#8220;Verrou : Verrouiller les pixels transparents&#8221; pour ajouter des ombres sans soucis de dépasser (enfin c&#8217;est ce que je fais).<br />
Il y a des tonnes d&#8217;autres façons, mais je suis sûr que ce tuto aide à toutes.<br />
Si vous ne voulez pas colorier sur un autre calque, genre vous êtes trop nofuture et tout, pas de soucis, simplement dans vos options de dégradé, choisissez &#8220;Mode : Produit&#8221;</p>
<p>J&#8217;ai donc ma petite sirène. Ses traits sont en noir sur un calque blanc, en mode &#8220;Produit&#8221;. Vous pouviez aussi avoir les traits en noir sur transparent (en mode &#8220;Normal&#8221;).<br />
Dessous, je vais faire mes calques de couleur. Généralement j&#8217;en fais 2 ou 3, avec des surfaces qui se touchent pas.<br />
<center><img src="/upload/tuto-fill/sirene1.png" /></center></p>
<p>Touche w, clique sur le coquillage de gauche, maj-clique sur celui de droite, F2.<br />
Puis je choisi une couleur jaune. Je sélectionne le calque de couleur.<br />
Touche g, clique, Ctrl+d.<br />
<center><img src="/upload/tuto-fill/sirene2.png" /></center></p>
<p>Suivant : je me mets sur le calque de peau et je dessine un trait pour fermer la surface. Puis dans la baguette magique je coche &#8220;Échantillonner tous les calques&#8221;.<br />
Ensuite je me prends la surface à coup de baguettes (Maj sert à ajouter sa sélection aux précédentes) : un clique sur le ventre, un autre dans l&#8217;avant-bras gauche, deux dans l&#8217;oreille&#8230;<br />
<center><img src="/upload/tuto-fill/sirene3.png" /></center></p>
<p>Après, F2, g, vous connaissez le topo. Là il y a plus de trucs à finir à la main quand même.<br />
<center><img src="/upload/tuto-fill/sirene4.png" /></center></p>
<p>Ensuite me reste les cheveux. Et là vous vous dites &#8220;ahaha il va devoir finir tous les pics à la main !&#8221; Et bien non ! Muahahaha !<br />
Je clique ma baguette sur le FOND et sélectionne tout sauf la sirène. Puis je F2. Puis je Ctrl+Maj+i (inverser la sélection).<br />
Enfin, je colorie avec g mon calque cheveux que je mets en dessous des autres.<br />
<center><img src="/upload/tuto-fill/sirene5.png" /></center></p>
<p>Faites attentions aux détails quand même, comme ma signature ;p<br />
Ensuite je verrouille mes calques, et je peux faire mes ombrages tranquille, sans jamais dépasser :)<br />
<center><img src="/upload/tuto-fill/sirene6.png" /></center><br />
C&#8217;est-y pas joli ?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/203-remplir-une-forme-dessinee-avec-photoshop/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Where does my Nickname &#8220;Salagir&#8221; come from</title>
		<link>http://blog.salagir.com/190-where-does-my-nickname-salagir-comes-from/</link>
		<comments>http://blog.salagir.com/190-where-does-my-nickname-salagir-comes-from/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 20:44:46 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Miscellaneous]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/?p=190</guid>
		<description><![CDATA[I am often asked where my nickname comes from. Here&#8217;s the explanation.
From now on, when you ask me, you shall cowardly forward you here.
I don&#8217;t know for English people, must most French make the mistake, the &#8220;g&#8221; of Salagir is pronounced like in &#8220;git&#8221;, not like in &#8220;geek&#8221;.
Long ago, when I was young and innocent, [...]]]></description>
			<content:encoded><![CDATA[<p>I am often asked where my nickname comes from. Here&#8217;s the explanation.<br />
From now on, when you ask me, you shall cowardly forward you here.</p>
<p>I don&#8217;t know for English people, must most French make the mistake, the &#8220;g&#8221; of <strong>Salagir</strong> is pronounced like in &#8220;git&#8221;, not like in &#8220;geek&#8221;.</p>
<p>Long ago, when I was young and innocent, that I was not even perverted by Unix, Windows, and even Dragon Ball &#8230; my short before I was 10 years old, I was already a comics fan, and I drew (badly) comics.</p>
<p>My first comic strip, the beginning of a long saga, had for main character, something round and light blue, with three sticky legs like iron wires. This way, I would have no difficulty drawing it for hundreds of pages. Wasn&#8217;t it thoughtful?</p>
<p>This hero was called Glouton Hizmé. This shitty name was because the character&#8217;s body was nothing but a mouth and eyes, it would like to eat a lot, so glutton (Glouton). And each character would be called Glouton Something, like the Smurfs.</p>
<p>And why Hizmé ? Because in a french Comic (<em>The Observers of the Earth</em>, a good read), once we see Enzymes in action, and that they were heads, much like Pacman, who still looked a lot to a Glutton to me! Then I changed Enzymes to Hizmé that sounds really better.</p>
<p align="center">Here are some totally exclusive images. It&#8217;s indeed my very first BD. I estimate that I was 7.<br />
<img src="/upload/glouton-hizme-extrait.png" /> <a href="/upload/glouton-hizme.png"><img src="/upload/glouton-hizme.jpg" /></a></p>
<p><img src="/upload/glouton-hizme-journal.gif" align="left" /> <img src="/upload/glouton-hizme-3D.jpg" align="right" /> I used the name of this character as the name of a amateur fanzine that I did alone for several years, which has not benefited more than 10 or 15 readers, mostly family.<br />
The newspaper Glouton Hizmé was monthly and was 4 then 6 pages long.<br />
Image on left: discovering the computer, I drew Hizmé again, and in 3D (thanks to sphere)</p>
<p>When in high school, I discovered the joys of the internet, I made a site on <em>chez.com</em>, and my login was then hizme (without the é), in short, that was my nickname.<br />
I thought the name was invented, no one else would have it, and one day, I checked on a search engine. And then, amazement: the word exists in some language is also a surname, and even a city!</p>
<p>So I decided to change my nickname. I looked at my notebook that contained the drawings and the names of all my characters. And then the bad guys: they are black creatures created by the dissolution of a very powerful being. They are names Rajores, Idrogear, Serojar &#8230; and the original being &#8230;. Salagir!</p>
<p align="center">Here is Salagir. The bad guy who fought Hizme was Rajores, the top left of the list, that you will see by clicking on the image.<br />
<a href="/upload/salagirs2.png"><img src="/upload/salagirs.png" /></a></p>
<p>Is Salagir in my mind still that dark demon? Not really, I guess I&#8217;ll tell you more in another post ;)</p>
<p>Small check on the net: no Salagir, for all the search engines. Perfect.</p>
<p>Now when you look for Salagir on the net, you can only find ME!!!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/190-where-does-my-nickname-salagir-comes-from/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Make comics balloons with Photoshop</title>
		<link>http://blog.salagir.com/193-make-comics-balloons-with-photoshop/</link>
		<comments>http://blog.salagir.com/193-make-comics-balloons-with-photoshop/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 12:18:40 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Miscellaneous]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/?p=193</guid>
		<description><![CDATA[Translation of my tutorial on how to make a speaking balloon on your comics easily.
In your image, create a layer on the top, fill it with white paint, and name it &#8220;balloons&#8221;.
Then, go to the menu Layer &#62; Vector Mask &#62; Hide All

After, take the Ellipse tool tips in the vector drawings tools.
You can also [...]]]></description>
			<content:encoded><![CDATA[<p>Translation of my tutorial on how to make a speaking balloon on your comics easily.</p>
<p>In your image, create a layer on the top, fill it with white paint, and name it &#8220;balloons&#8221;.</p>
<p>Then, go to the menu <code>Layer &gt; Vector Mask &gt; Hide All</code><br />
<center><img src="/upload/tuto-bulles/shot1-en.png" alt="" class="aligncenter" /></center></p>
<p>After, take the Ellipse tool tips in the vector drawings tools.<br />
You can also take the rectangle or rectangle with rounded edges, and even draw the balloons all with the vector pen, but let&#8217;s keep it simple at the moment.<br />
<center><img src="/upload/tuto-bulles/shot2-en.png" alt="" class="aligncenter" /></center></p>
<p>In its options which have emerged on top, click on the icon showed by the left red arrow, then select (if it isn&#8217;t already) the icon showed by the right red arrow.<br />
<center><img src="/upload/tuto-bulles/shot3-en.png" alt="" class="aligncenter" /></center></p>
<p>Make an oval in your drawing. It&#8217;s content will appear as white. You should see something like this:<br />
<center><img src="/upload/tuto-bulles/shot4.png" alt="" class="aligncenter" /></center></p>
<p>Double-click on Balloons&#8217; layer, to open &#8220;<code>Layer Styles</code>&#8220;. Click on the last on bottom-left: &#8220;<code>Stroke</code>&#8220;.<br />
Click on the color and select black.  Keep all other options the same, except for the size, which vary depending on the size of your drawing.<br />
If you work directly on a size &#8220;web&#8221;, 1 or 2 pixels is enough. If you have scanned your manga at 300 dpi, 8px will surely be better.</p>
<p>Your balloons layer is ready. You can add other types of balloons depending on your style and what you can do with vectorial. Here are some examples.<br />
<center><img src="/upload/tuto-bulles/shot5.png" alt="" class="aligncenter" /></center></p>
<ol>
<li>Simple rectangle for narration.</li>
<li>Simple ellipse for oval balloons (not the most effective for text).</li>
<li>Balloon made with the Pen Tool with Bézier curves, the shape you want.</li>
<li>Balloon made with the Pen Tool also, but just clicking from point to point, it&#8217;s easier.</li>
<li>Many ellipses, which form a kind of cloud</li>
</ol>
<p>Click on another layer to no longer see the vector lines and admire the result.</p>
<p>Now we will add the &#8220;tail of balloons.&#8221; For sharp ones, use the pen, for the thoughts, some circles, and for talking, I always copy-paste the same form that I draw in vectorial.</p>
<p>How to create the vectorial tail?<br />
Take the Pen Tool and zoom somewhere (or you will reduce the form after. With the vector, everything is changed at will).<br />
Click and without releasing the click, move, which will create segments of Béziers or I don&#8217;t know what.<br />
Then, go a little lower and use a quick click this time. This will be the end of the tail, it needs to be sharp (and the segments things aren&#8217;t pointy).<br />
Then go in the top right, and do again a &#8220;long&#8221;.<br />
That&#8217;s all, no need to close.<br />
<center><img src="/upload/tuto-bulles/shot6.png" alt="" class="aligncenter" /></center><br />
<img src="/upload/tuto-bulles/shot7-en.png" alt="" class="alignright" /> If you are not happy with the result, no need to start again. You can edit the pieces of your shape with the selection tools. The black arrow takes an entire form, the white arrow lets you move a single point, or the ends of curve segments.</p>
<p>With the black arrow I copy-paste the balloons and tails of balloons that I like, then adapt then by deforming with Ctrl + t (here, the tail of the right balloon is modified)<br />
<center><img src="/upload/tuto-bulles/shot8.png" alt="" class="aligncenter" /></center></p>
<p>Result :<br />
<center><img src="/upload/tuto-bulles/shot9.png" alt="" class="aligncenter" /></center><br />
Copied tail, simple clicks on the pen, and circles for the thought (press Shift to make circles instead of ovals)</p>
<p>Folks, <strong>two tutorials for the price of one!</strong> Here&#8217;s how to do a good text.</p>
<p>Choose a good writing font. It is important to be readable. Go take a look on <a href="http://www.dafont.com/theme.php?cat=102">DaFont</a> and take what you like.</p>
<p>With the text tool, go into a bubble, click, keep pressed, and draw a rectangle. Then write your text in it, is not it wonderful?<br />
<center><img src="/upload/tuto-bulles/shota.png" alt="" class="aligncenter" /></center><br />
Fiddle a bit the text options, you will find cool things. I recommend in particular to choose the menu for sharpness: Sharp, Crisp or Strong but not &#8220;None&#8221; which is ugly.</p>
<p>I put all my texts in a group, so that it can close and not take up too much space.<br />
When I have to do the translation, I duplicate the group, then copy-paste the translation into the text boxes that are already ready!</p>
<p>If you want some balloons on the top of others, made two layers &#8220;Balloons &#8221; (duplicate the first).</p>
<p>Final result:<br />
<center><img src="/upload/tuto-bulles/final-en.png" alt="" class="aligncenter" /></center></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/193-make-comics-balloons-with-photoshop/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Faire des bulles (phylactères) avec Photoshop</title>
		<link>http://blog.salagir.com/171-faire-des-bulles-phylacteres-avec-photoshop/</link>
		<comments>http://blog.salagir.com/171-faire-des-bulles-phylacteres-avec-photoshop/#comments</comments>
		<pubDate>Fri, 07 Aug 2009 17:04:29 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/?p=171</guid>
		<description><![CDATA[Il est temps de buller.
Je vais dévoiler mon plus grand secret après la recette de l&#8217;œuf sur le plat à la Salagir : comment faire efficacement des bulles dans vos BD.
Dans votre dessin, créez tout en haut un calque à remplir de blanc au pot de peinture, et nommez-le &#8220;Bulles&#8221; ou &#8220;Balloons&#8221; qu&#8217;on s&#8217;y retrouve.
Après, [...]]]></description>
			<content:encoded><![CDATA[<p>Il est temps de buller.<br />
Je vais dévoiler mon plus grand secret après la recette de l&#8217;œuf sur le plat à la Salagir : comment faire efficacement des bulles dans vos BD.</p>
<p>Dans votre dessin, créez tout en haut un calque à remplir de blanc au pot de peinture, et nommez-le &#8220;Bulles&#8221; ou &#8220;Balloons&#8221; qu&#8217;on s&#8217;y retrouve.</p>
<p>Après, allez sur le menu <code>Calque > Masque Vectoriel > Tout masquer</code><br />
<center><img src="/upload/tuto-bulles/shot1.png" alt="" class="aligncenter" /></center></p>
<p>Ensuite, prenez l&#8217;outil Ellipse dans les trucs de dessins vectoriel (avec choix trait, rectangle, ellipse, etc.)<br />
Vous pouvez aussi prendre le rectangle, ou rectangle à bords arrondis, et même dessiner la bulles en vectoriel après, mais restons simple pour le moment.<br />
<center><img src="/upload/tuto-bulles/shot2.png" alt="" class="aligncenter" /></center></p>
<p>Dans ses options qui sont apparues en haut, cliquez sur le mode &#8220;<code>Tracés</code>&#8220;, puis, sélectionnez si ce n&#8217;est pas fait, à droite &#8220;<code>Ajoutez à la zone du tracé (+)</code>&#8221;<br />
<center><img src="/upload/tuto-bulles/shot3.png" alt="" class="aligncenter" /></center></p>
<p>Faites donc un ovale dans votre dessin. Son contenu vous apparaitra en blanc. Vous devriez voir quelque chose comme cela :<br />
<center><img src="/upload/tuto-bulles/shot4.png" alt="" class="aligncenter" /></center></p>
<p>Double-cliquez sur le calque de bulles, pour ouvrir &#8220;<code>Styles de Calque</code>&#8220;. Cliquez sur le dernier en bas à gauche : &#8220;<code>Contour</code>&#8220;.<br />
Cliquez sur la couleur et choisissez le noir. Gardez les autres options pareilles sauf la taille, qui variera selon la taille de votre dessin.<br />
Si vous travaillez directement sur une taille &#8220;web&#8221;, 1 ou 2 pixels suffisent. Si vous avez scanné votre manga en 300 dpi, 8px seront sûrement mieux.</p>
<p>Votre calque à bulles est prêt. Vous pouvez ajouter d&#8217;autres types de bulles selon votre style et ce que vous savez faire en vectoriel. Voici quelques exemples.<br />
<center><img src="/upload/tuto-bulles/shot5.png" alt="" class="aligncenter" /></center></p>
<ol>
<li>Simple rectangle pour la narration.</li>
<li>Simple ellipse pour les bulles ovales (pas le plus efficace pour du texte).</li>
<li>Bulle faite à l&#8217;outil Plume avec des courbes de Béziers et tout le bordel, de la forme qu&#8217;on veut.</li>
<li>Bulle faite à l&#8217;outil Plume également, mais juste en cliquant de point en point, c&#8217;est quand même plus simple.</li>
<li>Pleins d&#8217;ellipses, qui forment un genre de nuage</li>
</ol>
<p>Cliquez sur un autre calque pour ne plus voir les traits vectoriel et admirez le résultat.</p>
<p>Maintenant on va ajouter les &#8220;queue de bulles&#8221;. Pour les trucs pointus, utiliser la plume, pour les pensées, quelques cercles, et pour la parlote, moi, je copie-colle toujours la même forme vectorielle que j&#8217;ai peaufiné.</p>
<p>Comment créer le bout de bulle peaufiné ?<br />
Prenez l&#8217;outil plume et zoomez quelque part (ou alors vous réduirez la forme après. Avec le vectoriel, tout est modifiable à volonté).<br />
Cliquez, et sans relâchez le clic, déplacez-vous, ce qui créera les segments de Béziers ou je sais pas quoi.<br />
Ensuite, mettez-vous un peu plus bas et faites un clic sec, cette fois. Ce sera le bout de la queue, on le veut pointu (et les segments choses, ça fait pas pointu).<br />
Ensuite allez en haut à droite, et refaites un clic allongé.<br />
C&#8217;est tout, inutile de fermer.<br />
<center><img src="/upload/tuto-bulles/shot6.png" alt="" class="aligncenter" /></center><br />
<img src="/upload/tuto-bulles/shot7.png" alt="" class="alignright" /> Si vous n&#8217;êtes pas content du résultat, inutile de tout recommencer. Vous pouvez retoucher les morceaux de votre forme avec les outils de sélection. La flèche noire prends une forme entière, la flèche blanche vous permet de bouger un seul point, ou les bouts de segments de courbe.</p>
<p>Avec la flèche noire je copie-colle à outrance les bulles et queue de bulle que j&#8217;aime bien, puis les adapte en les déformant avec Ctrl+t (ici, la queue de bulle de droite se fait malmener)<br />
<center><img src="/upload/tuto-bulles/shot8.png" alt="" class="aligncenter" /></center></p>
<p>Résultat :<br />
<center><img src="/upload/tuto-bulles/shot9.png" alt="" class="aligncenter" /></center><br />
Bulle pointue copiée, simple forme avec des clics à la plume, et des ronds pour la pensée (appuyez sur Majuscule pour faire des ronds au lieu d&#8217;ovales)</p>
<p>Chers amis, <strong>deux tutos pour le prix d&#8217;un ! </strong>Voici maintenant comment faire du bon texte.</p>
<p>Choisissez une bonne police d&#8217;écriture (font). C&#8217;est important d&#8217;être lisible. Allez faire un tour sur <a href="http://www.dafont.com/theme.php?cat=102">DaFont</a> et prenez ce que vous aimez. Vous pouvez y rechercher en demandant celles qui contiennent des accents, parce que ce n&#8217;est pas toujours le cas.</p>
<p>Avec l&#8217;outil texte, allez vers une bulle, cliquez, <em>gardez appuyé</em>, et dessinez un rectangle. Ensuite, écrivez votre texte dedans, n&#8217;est-ce pas merveilleux ?<br />
<center><img src="/upload/tuto-bulles/shota.png" alt="" class="aligncenter" /></center><br />
Touchez un peu aux options de texte, vous y verrez des choses super. Je conseille particulièrement de choisir dans le menu de netteté : Net, Précis, Fort, ou Léger mais surtout pas &#8220;Sans&#8221; qui est bien moche.</p>
<p>Je mets tous mes textes dans un Groupe, histoire que ça puisse se fermer et que ça prenne pas trop de place.<br />
Quand j&#8217;ai de la traduction à faire, je duplique le groupe, puis copie-colle les traduction dans les zones de texte qui sont déjà prêtes !</p>
<p>Si vous voulez que des bulles soient par-dessus d&#8217;autres, faites deux calques &#8220;Bulle&#8221; (dupliquez le premier).</p>
<p>Résultat final :<br />
<center><img src="/upload/tuto-bulles/final.png" alt="" class="aligncenter" /></center></p>
<p><strong>Bonus : œuf sur le plat à la Salagir </strong>(parce que vous avez été sages)<br />
Prenez une poêle à frire, mettez-la sur le feu.<br />
Écrasez dans votre main un œuf au-dessus de la poêle.<br />
Lavez-vous la main qui est pleine d&#8217;œuf.<br />
Attendez un temps aléatoire.<br />
Jetez le contenu de la poêle sur une assiette et mangez.<br />
Recrachez pour les morceaux de coquille qui sont pas bons (c&#8217;est un peu comme des pépins).<br />
Si quelqu&#8217;un connait une recette pour éviter la coquille, dites-le, on pourra appeler ça l&#8217;œuf sur le plat à la Salagir v2.0, ce sera cool !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/171-faire-des-bulles-phylacteres-avec-photoshop/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Convert HTML into BBcode</title>
		<link>http://blog.salagir.com/167-convert-html-into-bbcode/</link>
		<comments>http://blog.salagir.com/167-convert-html-into-bbcode/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 07:42:58 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[My useful scripts]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/?p=167</guid>
		<description><![CDATA[BBcode is the syntax used in phpBB forums and some other websites with edit forms, due to it&#8217;s simple and intuitive syntax, opposed to that stupid wiki code no one ever gets.
If, like me, you ever wanted to post the content of an html page, this Perl script is for you.
It takes a HTML file [...]]]></description>
			<content:encoded><![CDATA[<p>BBcode is the syntax used in phpBB forums and some other websites with edit forms, due to it&#8217;s simple and intuitive syntax, opposed to that stupid wiki code no one ever gets.</p>
<p>If, like me, you ever wanted to post the content of an html page, this Perl script is for you.<br />
It takes a HTML file and creates a text file with the BB syntax.<br />
You only need to copy this text into your post.</p>
<p>This is not made to copy-paste images, weird colors and CSS&#8230; Only text with some bold, italic, paragraphs, and others&#8230;</p>
<p>I wrote this script, in 2005, simply because I didn&#8217;t find any that was doing the same thing as well as I wanted.</p>
<p>It&#8217;d be better, for a good use of the script, that the html is <strong>valid</strong>&#8230;</p>
<p><strong>Example :</strong><br />
File test.html :</p>
<pre class="HTML">&lt;p>What a &lt;b>beautiful&lt;/b> day!!&lt;br />
The sun...&lt;/p>
&lt;p>The sunny shines !&lt;/p></pre>
<p>Running:</p>
<pre class="BASH">$ perl html2bbcode.pl test.html</pre>
<p>Resulting file test.bb :</p>
<pre class="BB">What a [b]beautiful[/b] day!!
The sun...

The sunny shines !</pre>
<p>You can download the code:</p>
<ul>
<li><a href="/upload/html2bbcode.pl">html2bbcode.pl</a></li>
<li><a href="/upload/html2bbcode.pl.zip">html2bbcode.pl Zipped</a></li>
<li><a href="/upload/html2bbcode.pl.html">see html2bbcode.pl online</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/167-convert-html-into-bbcode/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Displaying a progress bar</title>
		<link>http://blog.salagir.com/155-displaying-a-progress-bar/</link>
		<comments>http://blog.salagir.com/155-displaying-a-progress-bar/#comments</comments>
		<pubDate>Sun, 01 Mar 2009 11:58:08 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[My useful scripts]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/?p=155</guid>
		<description><![CDATA[Ok, it&#8217;s not really a bar. Draw something, being careful of the width of your command-line terminal, is tricky. But, you&#8217;ll get the display of the percentage of progress of the script and the time that is probably remaining.
Example. You have a script doing 20,000 times about the same thing. You want to know how [...]]]></description>
			<content:encoded><![CDATA[<p>Ok, it&#8217;s not really a bar. Draw something, being careful of the width of your command-line terminal, is tricky. But, you&#8217;ll get the display of the percentage of progress of the script and the time that is probably remaining.</p>
<p>Example. You have a script doing 20,000 times about the same thing. You want to know how things are going.<br />
Most of you will have done, at the end of the loop, the following code:</p>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #000066;">echo</span> <span style="color: #ff0000;">&quot;Progress: &quot;</span>.<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">100</span>*<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$cpt</span>++<span style="color: #66cc66;">&#41;</span>/<span style="color: #cc66cc;">20000</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #ff0000;">&quot; % <span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>;</pre></div></div>

<p>Well, we do the same thing, but better.</p>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #808080; font-style: italic;">//! greate function writing progress and remaining time</span>
<span style="color: #808080; font-style: italic;">/** At first call, give &quot;max&quot; which is the number of time the function will be called, after */</span>
<span style="color: #000000; font-weight: bold;">function</span> write_progress<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$max</span>=<span style="color: #000000; font-weight: bold;">null</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #000066;">static</span> <span style="color: #0000ff;">$cpt</span>;
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$max</span>!==<span style="color: #000000; font-weight: bold;">null</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #0000ff;">$cpt</span> = <span style="color: #000066;">array</span><span style="color: #66cc66;">&#40;</span>
                <span style="color: #ff0000;">'debut'</span> =&gt; <span style="color: #000066;">time</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>,
                <span style="color: #ff0000;">'cpt'</span> =&gt; <span style="color: #cc66cc;">0</span>,
                <span style="color: #ff0000;">'max'</span> =&gt; <span style="color: #66cc66;">&#40;</span>int<span style="color: #66cc66;">&#41;</span> <span style="color: #0000ff;">$max</span>,
                <span style="color: #66cc66;">&#41;</span>;
    <span style="color: #66cc66;">&#125;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>!<span style="color: #0000ff;">$cpt</span><span style="color: #66cc66;">&#41;</span> <span style="color: #000066;">die</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>[write_progress] Bad parameters.<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
    <span style="color: #0000ff;">$cpt</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'cpt'</span><span style="color: #66cc66;">&#93;</span>++;
    <span style="color: #0000ff;">$elapsed</span> = <span style="color: #000066;">time</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>-<span style="color: #0000ff;">$cpt</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'debut'</span><span style="color: #66cc66;">&#93;</span>;
    <span style="color: #0000ff;">$restant</span> = <span style="color: #000066;">round</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$cpt</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'max'</span><span style="color: #66cc66;">&#93;</span>*<span style="color: #0000ff;">$elapsed</span>/<span style="color: #0000ff;">$cpt</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'cpt'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span> - <span style="color: #0000ff;">$elapsed</span>;
    <span style="color: #0000ff;">$pourcent</span> = <span style="color: #000066;">round</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">100</span>*<span style="color: #0000ff;">$cpt</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'cpt'</span><span style="color: #66cc66;">&#93;</span>/<span style="color: #0000ff;">$cpt</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'max'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #000066;">echo</span> <span style="color: #ff0000;">&quot;  -+-  $pourcent%  -  Temps so far: &quot;</span>.
        write_temps<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$elapsed</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #ff0000;">&quot;  -  Temps remaining: &quot;</span>.write_temps<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$restant</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #ff0000;">&quot;     <span style="color: #000099; font-weight: bold;">\r</span>&quot;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p><a href="http://blog.salagir.com/145-time-functions-displaying-rounded-and-international/">This function use  write_temps(), the second function given on this link.</a></p>
<p>Usage:</p>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #0000ff;">$max</span> = number_of_elements_to_check_or_number_of_lines_of_file<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
write_avancement<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$max</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// this does not output anything</span>
<span style="color: #b1b100;">while</span> <span style="color: #66cc66;">&#40;</span> loop_on_each_element_or_line <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    do_many_things<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
    write_avancement<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #000066;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>; <span style="color: #808080; font-style: italic;">// better if you don't want the prompt being in the &quot;bar&quot; display</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/155-displaying-a-progress-bar/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Time Functions: Displaying rounded and international</title>
		<link>http://blog.salagir.com/145-time-functions-displaying-rounded-and-international/</link>
		<comments>http://blog.salagir.com/145-time-functions-displaying-rounded-and-international/#comments</comments>
		<pubDate>Fri, 20 Feb 2009 11:58:48 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[My useful scripts]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/?p=145</guid>
		<description><![CDATA[Be careful, this is the translation of two French articles and it&#8217;s long.
Today we will be writing time in a way that is comfortable for a human reader.
Who want to read, &#8220;Only 0h 00mn 18s left&#8221; at the end of a count that began an hour ago?
Before, strftime() was enough. Now, time to do better.
When [...]]]></description>
			<content:encoded><![CDATA[<p>Be careful, this is the translation of two French articles and it&#8217;s long.</p>
<p>Today we will be writing time in a way that is comfortable for a human reader.<br />
Who want to read, &#8220;Only 0h 00mn 18s left&#8221; at the end of a count that began an hour ago?</p>
<p>Before, strftime() was enough. Now, time to do better.<br />
When the time is more than one hour, I write the number of hours. But otherwise, I don&#8217;t write &#8220;0 hour&#8221;. That&#8217;s the same for each unity.</p>
<p>Here are three function that display remaining time.<br />
They all have their advantage and complexity. The third is a fusion of the first two.</p>
<h3>Write time in several languages</h3>
<p>You already have php functions for that. date() and strftime(), with the installed locals, will adapts.<br />
In PHP5, there is even a <a href="http://blog.pascal-martin.fr/post/php-5.3-intl-1-internationalisation-localisation">more powerful international date writer</a>.</p>
<p>But making locales work can be a hassle. This function will work everywhere, is standalone, BUT it&#8217;s limited in number of languages.</p>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #808080; font-style: italic;">//! Write a time, multilanguage ($lg = 'fr|en|es|it')</span>
<span style="color: #000000; font-weight: bold;">function</span> write_temps_internationnal<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$secondes</span>, <span style="color: #0000ff;">$lg</span>=<span style="color: #ff0000;">'fr'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #000066;">static</span> <span style="color: #0000ff;">$trads</span> = <span style="color: #000066;">array</span><span style="color: #66cc66;">&#40;</span>
            <span style="color: #ff0000;">'s'</span> =&gt; <span style="color: #000066;">array</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'fr'</span>=&gt;<span style="color: #ff0000;">'secondes'</span>,  <span style="color: #ff0000;">'en'</span>=&gt;<span style="color: #ff0000;">'seconds'</span>, <span style="color: #ff0000;">'it'</span>=&gt;<span style="color: #ff0000;">'secunde'</span>, <span style="color: #ff0000;">'es'</span>=&gt;<span style="color: #ff0000;">'segundos'</span><span style="color: #66cc66;">&#41;</span>,
            <span style="color: #ff0000;">'ms'</span>=&gt; <span style="color: #000066;">array</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'fr'</span>=&gt;<span style="color: #ff0000;">'%Mmn, %Ss'</span>, <span style="color: #ff0000;">'en'</span>=&gt;<span style="color: #ff0000;">'%Mmn, %Ss'</span>, <span style="color: #ff0000;">'it'</span>=&gt;<span style="color: #ff0000;">'%Mmn, %Ss'</span>, <span style="color: #ff0000;">'es'</span>=&gt;<span style="color: #ff0000;">'%Mm., %Ss.'</span><span style="color: #66cc66;">&#41;</span>,
            <span style="color: #ff0000;">'h'</span> =&gt; <span style="color: #000066;">array</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'fr'</span>=&gt;<span style="color: #ff0000;">'%kh, '</span>, <span style="color: #ff0000;">'en'</span>=&gt;<span style="color: #ff0000;">'%kh, '</span>, <span style="color: #ff0000;">'it'</span>=&gt;<span style="color: #ff0000;">'%kh'</span>, <span style="color: #ff0000;">'es'</span>=&gt;<span style="color: #ff0000;">'%kh.'</span><span style="color: #66cc66;">&#41;</span>,
            <span style="color: #ff0000;">'j'</span> =&gt; <span style="color: #000066;">array</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'fr'</span>=&gt;<span style="color: #ff0000;">'%e jours, '</span>, <span style="color: #ff0000;">'en'</span>=&gt;<span style="color: #ff0000;">'%e days, '</span>, <span style="color: #ff0000;">'it'</span>=&gt;<span style="color: #ff0000;">'%e giorni'</span>, <span style="color: #ff0000;">'es'</span>=&gt;<span style="color: #ff0000;">'%e dias'</span><span style="color: #66cc66;">&#41;</span>,
            <span style="color: #66cc66;">&#41;</span>;
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$secondes</span>&lt;<span style="color: #cc66cc;">60</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #0000ff;">$secondes</span>.<span style="color: #ff0000;">' '</span>.<span style="color: #0000ff;">$trads</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'s'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span><span style="color: #0000ff;">$lg</span><span style="color: #66cc66;">&#93;</span>;
    <span style="color: #66cc66;">&#125;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$secondes</span>&lt;<span style="color: #cc66cc;">3600</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #000066;">gmstrftime</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$trads</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'ms'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span><span style="color: #0000ff;">$lg</span><span style="color: #66cc66;">&#93;</span>, <span style="color: #0000ff;">$secondes</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #66cc66;">&#125;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$secondes</span>&lt;<span style="color: #cc66cc;">86400</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #000066;">gmstrftime</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$trads</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'h'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span><span style="color: #0000ff;">$lg</span><span style="color: #66cc66;">&#93;</span>.<span style="color: #0000ff;">$trads</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'ms'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span><span style="color: #0000ff;">$lg</span><span style="color: #66cc66;">&#93;</span>, <span style="color: #0000ff;">$secondes</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #66cc66;">&#125;</span>
    <span style="color: #808080; font-style: italic;">//  %e/%d give 1 day more because it's the *1* January 1970</span>
    <span style="color: #808080; font-style: italic;">// so one day less</span>
    <span style="color: #0000ff;">$secondes</span> -= <span style="color: #cc66cc;">86400</span>;
    <span style="color: #b1b100;">return</span> <span style="color: #000066;">gmstrftime</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$trads</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'j'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span><span style="color: #0000ff;">$lg</span><span style="color: #66cc66;">&#93;</span>.<span style="color: #0000ff;">$trads</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'h'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span><span style="color: #0000ff;">$lg</span><span style="color: #66cc66;">&#93;</span>.<span style="color: #0000ff;">$trads</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'ms'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span><span style="color: #0000ff;">$lg</span><span style="color: #66cc66;">&#93;</span>, <span style="color: #0000ff;">$secondes</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>Simple to use.</p>
<h3>Write rounded time</h3>
<p>This version permit to display a loose information of remaining time. If there are 5 days, 3h, 8min and 9 seconds, it writes &#8220;5 days&#8221;. We only keep the important number.<br />
Also useful when you simply don&#8217;t want the guy to know the exact time.</p>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #808080; font-style: italic;">/** Write rounded time
&nbsp;
  \param $secondes (int) number of seconds.
&nbsp;
  \param $detail ca be a boolean or one of the following strings: 'h', 'mn',
that tell you want the detail to the hour, to the minute. false being sometime to unclear
&nbsp;
  \return (string)
  */</span>
<span style="color: #000000; font-weight: bold;">function</span> write_temps<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$secondes</span>, <span style="color: #0000ff;">$detail</span>=<span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$secondes</span>&lt;<span style="color: #cc66cc;">60</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$detail</span>===<span style="color: #ff0000;">'h'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #ff0000;">&quot;less than one hour&quot;</span>;
        <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$detail</span>===<span style="color: #ff0000;">'mn'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #ff0000;">&quot;less than a minute&quot;</span>;
        <span style="color: #b1b100;">return</span> write_temps_sub<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$secondes</span>, <span style="color: #ff0000;">'second'</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #66cc66;">&#125;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$secondes</span>&lt;<span style="color: #cc66cc;">3600</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$detail</span>===<span style="color: #ff0000;">'h'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #ff0000;">&quot;less than one hour&quot;</span>;
        <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>!<span style="color: #0000ff;">$detail</span> or <span style="color: #0000ff;">$detail</span>===<span style="color: #ff0000;">'mn'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">return</span> write_temps_sub<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$secondes</span>/<span style="color: #cc66cc;">60</span>, <span style="color: #ff0000;">'minute'</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #b1b100;">return</span> <span style="color: #000066;">gmstrftime</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'%Mmn, %Ss'</span>, <span style="color: #0000ff;">$secondes</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #66cc66;">&#125;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$secondes</span>&lt;<span style="color: #cc66cc;">86400</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>!<span style="color: #0000ff;">$detail</span> or <span style="color: #0000ff;">$detail</span>===<span style="color: #ff0000;">'h'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">return</span> write_temps_sub<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$secondes</span>/<span style="color: #cc66cc;">3600</span>, <span style="color: #ff0000;">'hour'</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$detail</span>===<span style="color: #ff0000;">'mn'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #000066;">gmstrftime</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'%kh, %Mmn'</span>, <span style="color: #0000ff;">$secondes</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #b1b100;">return</span> <span style="color: #000066;">gmstrftime</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'%kh, %Mmn, %Ss'</span>, <span style="color: #0000ff;">$secondes</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #66cc66;">&#125;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>!<span style="color: #0000ff;">$detail</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #000066;">round</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$secondes</span>/<span style="color: #cc66cc;">86400</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #ff0000;">' days'</span>;
    <span style="color: #808080; font-style: italic;">//  %e/%d give 1 day more because it's the *1* January 1970</span>
    <span style="color: #808080; font-style: italic;">// so one day less</span>
    <span style="color: #0000ff;">$secondes</span> -= <span style="color: #cc66cc;">86400</span>;
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$detail</span>===<span style="color: #ff0000;">'mn'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #000066;">gmstrftime</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'%e jours, %kh, %Mmn'</span>, <span style="color: #0000ff;">$secondes</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$detail</span>===<span style="color: #ff0000;">'h'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #000066;">gmstrftime</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'%e jours et %kh'</span>, <span style="color: #0000ff;">$secondes</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #b1b100;">return</span> <span style="color: #000066;">gmstrftime</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'%e jours, %kh, %Mmn, %Ss'</span>, <span style="color: #0000ff;">$secondes</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #000000; font-weight: bold;">function</span> write_temps_sub<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$nbre</span>, <span style="color: #0000ff;">$quoi</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #0000ff;">$nbre</span> = <span style="color: #000066;">round</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$nbre</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$nbre</span>&gt;<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #0000ff;">$nbre</span>.<span style="color: #ff0000;">' '</span>.<span style="color: #0000ff;">$quoi</span>.<span style="color: #ff0000;">'s'</span>;
    <span style="color: #b1b100;">return</span> <span style="color: #0000ff;">$nbre</span>.<span style="color: #ff0000;">' '</span>.<span style="color: #0000ff;">$quoi</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>But it&#8217;s only in one language.</p>
<h3>Write rounded time, international</h3>
<p>Here it is, the powerful function that is a fusion of both previous functions.<br />
It&#8217;s given with a lot of languages, thanks to the translators of Multiverse. <a href="http://www.dragonball-multiverse.com/en/chapters.html">Here is a usage example.</a> (Look for &#8220;Next page in: &#8230;&#8221;)</p>
<p><a href="http://blog.salagir.com/146-translation-sql-table-and-translation-system/">First, we&#8217;ll use my translation system. It&#8217;s very simple, all informations are here.</a></p>
<p>Then, use this function and fill the translation table with the following SQL.</p>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #808080; font-style: italic;">/** Write rounded time, international
&nbsp;
  \param $secondes (int) number of seconds.
&nbsp;
  \param $detail can be:
        - a boolean (yes we display all details, or no)
        - one of these strings: 'h' (detail at the hour), 'mn' (detail at the minute)
        - or an int: the number of informations. 1 is the same as false
&nbsp;
  \return (string)
 */</span>
<span style="color: #000000; font-weight: bold;">function</span> super_write_delay<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$secondes</span>, <span style="color: #0000ff;">$detail</span>=<span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
     <span style="color: #808080; font-style: italic;">// hum....</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>In fact, the function is quite long so <a href="/upload/super_write_delay.func.php.zip">get directly the file (zip)</a>, or <a href="/upload/super_write_delay.func.php.html">look at it online</a>.<br />
Comments in it are in French. You may want to add the url of this article for future reference in the comment of the function after you&#8217;ve used it.</p>
<p>Here are the <a href="/upload/get_textes-write_time.sql">several SQL line to add to your table</a> (the file is encoded in UTF8).<br />
Do NOT copy-paste its content. Save it on your hard drive, and import in in the database, with phpMyAdmin for example.</p>
<p>Examples of usage:</p>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #808080; font-style: italic;">// dragon ball multiverse</span>
<span style="color: #808080; font-style: italic;">// $S is the number of second until the next page is out</span>
<span style="color: #808080; font-style: italic;">// note: 48 is of course the translation number for &quot;Next page in :&quot;</span>
<span style="color: #000066;">echo</span> __<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">48</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #ff0000;">' '</span>.super_write_delay<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$S</span>, <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #808080; font-style: italic;">// result : &quot;Next page in: 3 days, 10h&quot;   or  &quot;Next page in: 9h, 23mn&quot;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">// Others :</span>
<span style="color: #000066;">echo</span> super_write_delay<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">3661</span>, <span style="color: #ff0000;">'h'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #808080; font-style: italic;">// 1 hour</span>
<span style="color: #000066;">echo</span> super_write_delay<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">3661</span>, <span style="color: #ff0000;">'mn'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #808080; font-style: italic;">// 1h, 01mn</span>
<span style="color: #000066;">echo</span> super_write_delay<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">3661</span>, <span style="color: #ff0000;">'s'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #808080; font-style: italic;">// 1h, 01mn, 01s</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/145-time-functions-displaying-rounded-and-international/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Translation SQL table and translation system</title>
		<link>http://blog.salagir.com/146-translation-sql-table-and-translation-system/</link>
		<comments>http://blog.salagir.com/146-translation-sql-table-and-translation-system/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 09:45:49 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[My useful scripts]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/?p=146</guid>
		<description><![CDATA[This is a short, non-interesting article about a translation system. Nothing new or original here.
I put here because my next article will use it and it&#8217;ll be a very long one.
I a few month, I&#8217;m gonna talk a lot about translation. I&#8217;ve made many things about it, especially for automatic translations.
Here, it&#8217;s about having a [...]]]></description>
			<content:encoded><![CDATA[<p>This is a short, non-interesting article about a translation system. Nothing new or original here.<br />
I put here because my next article will use it and it&#8217;ll be a very long one.</p>
<p>I a few month, I&#8217;m gonna talk a lot about translation. I&#8217;ve made many things about it, especially for automatic translations.<br />
Here, it&#8217;s about having a website in several languages. Nothing difficult.</p>
<p>Most people use the <strong>getext </strong>functions. There are translation files, binary processed, with cache. A very efficient and quite simple system to have translations. People who use that are from the past.<br />
Now, we use a simple SQL table, with a field per language. It&#8217;s slower, takes more resources, like, hu, a hundred times more ? But it&#8217;s soooooo much simpler that we prefer that.</p>
<p>The translation interface is so uninteresting I won&#8217;t put it here. I&#8217;ll just show you my table, as it will be used in next articles, just like <a href="http://blog.salagir.com/43-the-1468456th-php-class-that-overloads-mysql/">my sqlQueries class</a>.<br />
I use it on all my websites (mostly Supafan and DB Multiverse)</p>

<div class="wp_syntax"><div class="code"><pre class="sql"><span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #ff0000;">`get_textes`</span> <span style="color: #66cc66;">&#40;</span>
  <span style="color: #ff0000;">`id`</span> int<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">UNSIGNED</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">AUTO_INCREMENT</span>,
  <span style="color: #ff0000;">`section`</span> varchar<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">20</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span>,
  <span style="color: #ff0000;">`txt_en`</span> text <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span>,
  <span style="color: #ff0000;">`txt_fr`</span> text <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span>,
  <span style="color: #ff0000;">`txt_it`</span> text <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span>,
  <span style="color: #ff0000;">`txt_es`</span> text <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span>,
  <span style="color: #ff0000;">`txt_jp`</span> text <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span>,
  <span style="color: #ff0000;">`txt_ar`</span> text <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span>,
  <span style="color: #ff0000;">`txt_nl`</span> text <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span>,
  <span style="color: #ff0000;">`txt_pl`</span> text <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span>,
  <span style="color: #ff0000;">`txt_pt`</span> text <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span>,
  <span style="color: #993333; font-weight: bold;">PRIMARY</span> <span style="color: #993333; font-weight: bold;">KEY</span>  <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">`id`</span><span style="color: #66cc66;">&#41;</span>,
  <span style="color: #993333; font-weight: bold;">KEY</span> <span style="color: #ff0000;">`section`</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">`section`</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#41;</span> ENGINE=MyISAM  <span style="color: #993333; font-weight: bold;">DEFAULT</span> CHARSET=utf8;</pre></div></div>

<p>You can give the name you want to the table, as if I cared&#8230;<br />
The &#8220;section&#8221; field will be used to group some sentences together. It&#8217;s easier when I want to give to someone only the translations for the times functions, or the comment system, or the translations of the text of DBM&#8217;s pages&#8230;<br />
The &#8220;txt_en&#8221; field is required, because it&#8217;s the language to use, when the translation is missing.<br />
The engine is MyISAM because it&#8217;s mostly a table you read and not one you edit (yes yes I actually thought about that).<br />
So yes, there us a field per language. It&#8217;s the simplest by far. Donc forget utf8, it&#8217;s your best friends when you add &#8220;weird&#8221; languages like Asians and Arabic.</p>
<p>Also, in you PHP scripts, always do this query, just after the database connection :</p>

<div class="wp_syntax"><div class="code"><pre class="sql"><span style="color: #993333; font-weight: bold;">SET</span> NAMES <span style="color: #ff0000;">'utf8'</span></pre></div></div>

<p>Otherwise, you may have weird results.</p>
<p>The translation function :</p>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #000000; font-weight: bold;">function</span> __<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$id</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #000066;">global</span> <span style="color: #0000ff;">$lang</span>;
    <span style="color: #000066;">static</span> <span style="color: #0000ff;">$tablename</span> = <span style="color: #ff0000;">'get_textes'</span>;
    <span style="color: #0000ff;">$id</span> = <span style="color: #66cc66;">&#40;</span>int<span style="color: #66cc66;">&#41;</span> <span style="color: #0000ff;">$id</span>;
    <span style="color: #0000ff;">$R</span> = <span style="color: #000066;">mysql_query</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;SELECT `txt_$lang`, txt_en FROM $tablename WHERE id=$id LIMIT 1&quot;</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #0000ff;">$txt</span> = <span style="color: #000066;">mysql_result</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$R</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>!<span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #000066;">mysql_result</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$R</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #b1b100;">return</span> <span style="color: #0000ff;">$txt</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>You do the work you must do so the global variable <code>$lang</code> (or <code>$GLOBALS['lang']</code> if you want to use that instead) can only have a value that&#8217;s a database field.</p>
<p>So no, there is no cache on anything like this. I didn&#8217;t want and didn&#8217;t have time to think about this kind of things.<br />
After all, a database is made to be accessed. There is an index.</p>
<p>That&#8217;s all folks!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/146-translation-sql-table-and-translation-system/feed/</wfw:commentRss>
		</item>
		<item>
		<title>List all 404 errors from a Apache server</title>
		<link>http://blog.salagir.com/141-list-all-404-errors-from-a-apache-server/</link>
		<comments>http://blog.salagir.com/141-list-all-404-errors-from-a-apache-server/#comments</comments>
		<pubDate>Mon, 26 Jan 2009 17:27:32 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[My useful scripts]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/?p=141</guid>
		<description><![CDATA[This is not the only solution to know if your website got dead links.
For example, Awstats will tell you them too, but only from on site at the time.
Also, online dead link finders are you friends, like W3C Link Checker.
My solution works directly on the server, and also find the errors that com from a [...]]]></description>
			<content:encoded><![CDATA[<p>This is not the only solution to know if your website got dead links.</p>
<p>For example, Awstats will tell you them too, but only from on site at the time.<br />
Also, online dead link finders are you friends, like <a href="http://validator.w3.org/checklink">W3C Link Checker</a>.</p>
<p>My solution works directly on the server, and also find the errors that com from a link in another site going to your site, on a non-existent page. You will also see how most browser ask a lot for &#8220;/favicon.ico&#8221; on your sites&#8230;</p>
<p>Use (command line interface) :</p>

<div class="wp_syntax"><div class="code"><pre class="bash">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> php parseLogApacheError.php
$ <span style="color: #c20cb9; font-weight: bold;">lynx</span> /tmp/errors404.inc.html</pre></div></div>

<p>You can download the code here :</p>
<ul>
<li><a href="/upload/parseLogApacheError.php.zip">parseLogApacheError.php Zipped</a></li>
<li><a href="/upload/parseLogApacheError.php.html">see parseLogApacheError.php online</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/141-list-all-404-errors-from-a-apache-server/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Rangeur de backups</title>
		<link>http://blog.salagir.com/134-rangeur-de-backups/</link>
		<comments>http://blog.salagir.com/134-rangeur-de-backups/#comments</comments>
		<pubDate>Mon, 26 Jan 2009 17:21:02 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Mes scripts utiles]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/?p=134</guid>
		<description><![CDATA[Vous me croyiez mort ? C&#8217;est que vous n&#8217;avez pas beaucoup suivi mes autres sites alors&#8230;
Puisque je n&#8217;ai pas fais de mise à jour ici depuis la mort soudaine de mon serveur, parlons de backups.
Bon, backuper c&#8217;est super facile. En gros j&#8217;utilise trois façons :

Pour une BDD : mysqldump [infos cnx] &#124;gzip &#62; backupbdd.sql.gz
Pour des [...]]]></description>
			<content:encoded><![CDATA[<p>Vous me croyiez mort ? C&#8217;est que vous n&#8217;avez pas beaucoup suivi mes autres sites alors&#8230;<br />
Puisque je n&#8217;ai pas fais de mise à jour ici depuis la mort soudaine de mon serveur, parlons de backups.</p>
<p>Bon, backuper c&#8217;est super facile. En gros j&#8217;utilise trois façons :</p>
<ul>
<li>Pour une BDD : <code>mysqldump [infos cnx] |gzip &gt; backupbdd.sql.gz</code></li>
<li>Pour des fichiers peu nombreux, dont le changement est grave, genre configuration : <code>tar czvf yoyobackup.tar.gz lesfichiers/</code></li>
<li>Pour des fichiers à accéder facilement, et/ou nombreux : <code>rsync -av moi/ autremachine:moi/</code></li>
</ul>
<p>Dans les deux premières solutions, j&#8217;ajoute au nom de fichier la date du jour, et hop, j&#8217;ai pleins de backups avec un version par jour, pratique si une erreur a été foutue y&#8217;a une semaine. Un backup classique n&#8217;aurai que la version d&#8217;hier, j&#8217;ai pas l&#8217;air con.</p>
<p>Les administrateurs réseaux connaissent bien le problème et gèrent donc des tonnes de backups par date. Évidement ils ne gardent pas tout, c&#8217;est trop gros, donc plus on remonte dans le passé, moins on a de backup.<br />
Il existe différents moyens de gérer ces backups par date, dont <code>dirvish</code> pour backuper toute une arborescence et l&#8217;inépuisable <code>logrotate</code>, qui a le malheur de gérer beaucoup mieux les logs que les fichiers classiques comme mes fichiers compressés.</p>
<p>Comme je n&#8217;ai trouvé aucune solution simple de faire de l&#8217;ordre dans mes fichiers compressés pour ne pas avoir 58 fichiers au bout de 58 jours, je l&#8217;ai codée moi-même, pour changer.</p>
<p>Vous pouvez télécharger le code :<br />
EDIT : j&#8217;ai réglé des bugs, nous en sommes maintenant à la version 1.1 (Avr 2009)</p>
<ul>
<li><a href="/upload/organize_backups.php.zip">organize_backups.php Zippé</a></li>
<li><a href="/upload/organize_backups.php.html">Voir organize_backups.php en ligne</a></li>
</ul>
<p>Il y a un mode &#8220;inoffensif&#8221;, où le programme dit ce qu&#8217;il détruirait et renommerait au lieu de le faire vraiment.</p>
<p>Exemple d&#8217;utilisation pour ma base de donnée, grâce à laquelle lors de la mort de mon serveur, seuls quelques commentaires utilisateurs du jour même ont disparus (oui j&#8217;aurai pu aussi utiliser une synchro SQL mais je suis pas admin moi) :</p>
<pre class="BASH">
#!/bin/sh

# ceci est cronné tous les jours tôt le matin

dirdate=`date +"%Y-%m-%d"`
path=/home/salagir

mysqldump -u... -p... --skip-extended-insert --all-databases | gzip > $path/backupsbdd/$dirdate.sql.gz

php organize_backups.php $path/backupsbdd/'*'
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/134-rangeur-de-backups/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Url rewriting is your friend</title>
		<link>http://blog.salagir.com/110-url-rewriting-is-your-friend/</link>
		<comments>http://blog.salagir.com/110-url-rewriting-is-your-friend/#comments</comments>
		<pubDate>Fri, 28 Nov 2008 15:57:10 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[My useful scripts]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/?p=110</guid>
		<description><![CDATA[Url rewriting, is to have a link to a webpage that a human can read, and a search engine can interpret as keywords.
Many blogs use this, they use the title of the post in the url.
Example :
Good: http://toto.com/articles/eat-creme-brulee.html
Bad:  http://toto.com/2007/article.php?id=684
You english reader may not care about this, but the main problem characters with accents : [...]]]></description>
			<content:encoded><![CDATA[<p>Url rewriting, is to have a link to a webpage that a human can read, and a search engine can interpret as keywords.</p>
<p>Many blogs use this, they use the title of the post in the url.</p>
<p>Example :<br />
<em>Good</em>: http://toto.com/articles/eat-creme-brulee.html<br />
<em>Bad</em>:  http://toto.com/2007/article.php?id=684</p>
<p>You english reader may not care about this, but the main problem characters with accents : é, è &#8230; Most url rewriter will have problems, because from their point of view, they are special characters.</p>
<p><em>Bad</em>: http://toto.com/articles/eat cr%E8me brul%E9e.html<br />
<em>Bad</em>: http://toto.com/articles/eat-crme-brule.html<br />
<em>Bad</em>: http://toto.com/articles/eat-cr-me-brul-e.html</p>
<p>Many also have a problem with apostrophes:</p>
<p><em>Bad</em>:  http://toto.com/articles/i%27ll-kill-for-you.html<br />
<em>Bad</em>:  http://toto.com/articles/ill-kill-for-you.html<br />
<em>Good</em>:  http://toto.com/articles/i-ll-kill-for-you.html</p>
<p>And some others&#8230; (I saw some pagename that begin or end with a dash, it&#8217;s ugly).</p>
<p>So here is my own url rewriting algo. Use it well :</p>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #808080; font-style: italic;">//! Transform a text into a simple and readable filename</span>
<span style="color: #000000; font-weight: bold;">function</span> text2filename<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$str</span>, <span style="color: #0000ff;">$spaceChar</span> = <span style="color: #ff0000;">'-'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #0000ff;">$str</span> = <span style="color: #000066;">preg_replace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'/[:;?!¡,~R()=%&quot;«»]/'</span>, <span style="color: #ff0000;">''</span>, <span style="color: #0000ff;">$str</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #0000ff;">$str</span> = <span style="color: #000066;">strtr</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$str</span>,
        <span style="color: #ff0000;">'äàáâãåÀÁÂÃÅÇçèéêëÈÉÊËìíîïÌÍÎÏÑñÒÓÔÕòóôõÙÚÛùúûÝýÿÐ'</span>,
        <span style="color: #ff0000;">'aaaaaaAAAAACceeeeEEEEiiiiIIIINnOOOOooooUUUuuuYyyD'</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #0000ff;">$str</span> = <span style="color: #000066;">str_replace</span><span style="color: #66cc66;">&#40;</span>
        <span style="color: #000066;">array</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Ä'</span>,<span style="color: #ff0000;">'Æ'</span>,<span style="color: #ff0000;">'æ'</span>,<span style="color: #ff0000;">'Ö'</span>,<span style="color: #ff0000;">'ö'</span>,<span style="color: #ff0000;">'ß'</span>,<span style="color: #ff0000;">'Ü'</span>,<span style="color: #ff0000;">'ü'</span><span style="color: #66cc66;">&#41;</span>,
        <span style="color: #000066;">array</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'AE'</span>,<span style="color: #ff0000;">'AE'</span>,<span style="color: #ff0000;">'ae'</span>,<span style="color: #ff0000;">'OE'</span>,<span style="color: #ff0000;">'oe'</span>,<span style="color: #ff0000;">'ss'</span>,<span style="color: #ff0000;">'UE'</span>,<span style="color: #ff0000;">'ue'</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #0000ff;">$str</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #0000ff;">$str</span> = <span style="color: #000066;">preg_replace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'/[ _<span style="color: #000099; font-weight: bold;">\'</span><span style="color: #000099; font-weight: bold;">\/</span>.-]+/'</span>, <span style="color: #0000ff;">$spaceChar</span>, <span style="color: #0000ff;">$str</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #0000ff;">$str</span> = <span style="color: #000066;">trim</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$str</span>, <span style="color: #0000ff;">$spaceChar</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #b1b100;">return</span> <span style="color: #000066;">strtolower</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$str</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/110-url-rewriting-is-your-friend/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Fonctions temporelles 2 : le retour</title>
		<link>http://blog.salagir.com/100-fonctions-temporelles-2-le-retour/</link>
		<comments>http://blog.salagir.com/100-fonctions-temporelles-2-le-retour/#comments</comments>
		<pubDate>Sat, 15 Nov 2008 08:01:43 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Mes scripts utiles]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/?p=100</guid>
		<description><![CDATA[Je vous avais parlé de fonctions PHP permettant d&#8217;écrire des temps restant, soit dans plusieurs langues, soit en arrondit.
Et bien j&#8217;ai craqué, j&#8217;ai fait la fonction finale, qui fait les deux en même temps, et cela grâce aux traducteurs de Multiverse. En voici son utilisation. (Cherchez le &#8220;Prochaine page dans : &#8230;&#8221;)
Fonction et table de [...]]]></description>
			<content:encoded><![CDATA[<p>Je vous avais parlé de <a href="http://blog.salagir.com/34-fonction-temporelles-affichage-barre-davancement/">fonctions PHP permettant d&#8217;écrire des temps restant</a>, soit dans plusieurs langues, soit en arrondit.<br />
Et bien j&#8217;ai craqué, j&#8217;ai fait la fonction finale, qui fait les deux en même temps, et cela grâce aux traducteurs de Multiverse. <a href="http://www.dragonball-multiverse.com/fr/chapters.html">En voici son utilisation.</a> (Cherchez le &#8220;Prochaine page dans : &#8230;&#8221;)</p>
<h3>Fonction et table de traduction</h3>
<p>Je vous ai <a href="http://blog.salagir.com/72-webservice-de-traduction-automatique/">aussi parlé</a> de ma fonction de traduction. Il est temps de vous la remettre (vous allez être épaté, wou la la &#8230;)</p>
<p>Vu le peu d&#8217;intérêt et le grand nombre de lignes de codes de mon site de traduction, qui est ouvert à mes divers traducteurs, je ne pense pas vous les partager. Mais je vais quand même vous montrer les résultats.</p>
<p>La table :</p>

<div class="wp_syntax"><div class="code"><pre class="sql"><span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #ff0000;">`get_textes`</span> <span style="color: #66cc66;">&#40;</span>
  <span style="color: #ff0000;">`id`</span> int<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">UNSIGNED</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">AUTO_INCREMENT</span>,
  <span style="color: #ff0000;">`section`</span> varchar<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">20</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span>,
  <span style="color: #ff0000;">`txt_en`</span> text <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span>,
  <span style="color: #ff0000;">`txt_fr`</span> text <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span>,
  <span style="color: #ff0000;">`txt_it`</span> text <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span>,
  <span style="color: #ff0000;">`txt_es`</span> text <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span>,
  <span style="color: #ff0000;">`txt_jp`</span> text <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span>,
  <span style="color: #ff0000;">`txt_ar`</span> text <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span>,
  <span style="color: #ff0000;">`txt_nl`</span> text <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span>,
  <span style="color: #ff0000;">`txt_pl`</span> text <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span>,
  <span style="color: #ff0000;">`txt_pt`</span> text <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span>,
  <span style="color: #993333; font-weight: bold;">PRIMARY</span> <span style="color: #993333; font-weight: bold;">KEY</span>  <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">`id`</span><span style="color: #66cc66;">&#41;</span>,
  <span style="color: #993333; font-weight: bold;">KEY</span> <span style="color: #ff0000;">`section`</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">`section`</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#41;</span> ENGINE=MyISAM  <span style="color: #993333; font-weight: bold;">DEFAULT</span> CHARSET=utf8;</pre></div></div>

<p>Donnez-lui le nom que vous voulez à la table, je m&#8217;en fous&#8230;<br />
La colonne &#8220;section&#8221; permet de séparer des types de traduction. Vous verrez dans le paragraphe suivant. Ca me permet de ne pas vous partager d&#8217;un coup les traductions temporelles et les titres de chapitre multiverse, les textes de la section commentaire&#8230;<br />
La colonne &#8220;txt_en&#8221; est obligatoire, car c&#8217;est la langue par défaut, quand la traduction manque.<br />
Le moteur est MyISAM parce que c&#8217;est une table qui sera le plus souvent en lecture (si si j&#8217;y ai réfléchi et tout).<br />
Donc oui il y a bien une colonne par langue, ça reste le plus simple. Pensez à l&#8217;utf8, il sera votre meilleur ami quand vous utiliserez des langues de gens-qui-écrivent-pas-comme-nous.<br />
Egalement, dans vos scripts PHP, commencez toujours, juste après la connexion, par cette query :</p>

<div class="wp_syntax"><div class="code"><pre class="sql"><span style="color: #993333; font-weight: bold;">SET</span> NAMES <span style="color: #ff0000;">'utf8'</span></pre></div></div>

<p>Sinon vous pourrez avoir des résultats étranges.</p>
<p>La fonction de traduction :</p>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #000000; font-weight: bold;">function</span> __<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$id</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #000066;">global</span> <span style="color: #0000ff;">$lang</span>;
    <span style="color: #000066;">static</span> <span style="color: #0000ff;">$tablename</span> = <span style="color: #ff0000;">'get_textes'</span>;
    <span style="color: #0000ff;">$id</span> = <span style="color: #66cc66;">&#40;</span>int<span style="color: #66cc66;">&#41;</span> <span style="color: #0000ff;">$id</span>;
    <span style="color: #0000ff;">$R</span> = <span style="color: #000066;">mysql_query</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;SELECT `txt_$lang`,txt_en FROM $tablename WHERE id=$id LIMIT 1&quot;</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #0000ff;">$txt</span> = <span style="color: #000066;">mysql_result</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$R</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>!<span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #000066;">mysql_result</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$R</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #b1b100;">return</span> <span style="color: #0000ff;">$txt</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>A vous vous débrouiller pour que votre variable global <code>$lang</code> (ou <code>$GLOBALS['lang']</code>) ne puisse avoir QUE l&#8217;une des valeurs présentes en base de donnée.<br />
Et non il n&#8217;y a ni cache ni quoi que ce soit. Je n&#8217;ai pas eu l&#8217;envie ni le temps de travailler ce genre d&#8217;optimisations. Après tout une BDD est faire pour être accédée. Y&#8217;a un index et tout&#8230; De toutes façon y&#8217;a rien de transcendant là dedans, c&#8217;est juste pour vous donner ma marche à suivre puisque le reste en dépends.</p>
<h3>Fonction d&#8217;affichage de temps, arrondi, international</h3>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #808080; font-style: italic;">/** Affiche un temps ecrit joliment.
&nbsp;
  \param $secondes (int) nombre de secondes.
&nbsp;
  \param $detail peut etre :
        - un booleen (oui on affiche tous les details)
        - ou les strings suivant: 'h' (detail a l'heure pres), 'mn' (detail a la minute pres)
        - ou bien un int: le nombre d'infos. 1 est identique a false
&nbsp;
  \return (string)
 */</span>
<span style="color: #000000; font-weight: bold;">function</span> super_write_delay<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$secondes</span>, <span style="color: #0000ff;">$detail</span>=<span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
     <span style="color: #808080; font-style: italic;">// hum....</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>En fait c&#8217;est un peu long tout ce code alors <a href="/upload/super_write_delay.func.php.zip">choppez donc directement le fichier (zip)</a>, ou <a href="/upload/super_write_delay.func.php.html">regardez-le en ligne</a>.</p>
<p>Voici les <a href="/upload/get_textes-write_time.sql">quelques lignes SQL à ajouter à votre table</a> (le fichier est encodé en UTF8).<br />
Je pense que ce serai une TRES mauvaise idée que de copier-coller son contenu. Sauvez-le sur votre disque, puis importez-le avec phpMyAdmin par exemple.</p>
<p>Exemples d&#8217;utilisation :</p>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #808080; font-style: italic;">// multiverse</span>
<span style="color: #808080; font-style: italic;">// (ici, calcul de $S qui est le nombre de secondes restantes avant la prochaine page)</span>
<span style="color: #808080; font-style: italic;">// note: 48 c'est bien sûr &quot;Prochaine page dans :&quot;</span>
<span style="color: #000066;">echo</span> __<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">48</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #ff0000;">' '</span>.super_write_delay<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$S</span>, <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #808080; font-style: italic;">// resultat : Prochaine page dans : 3 jours, 10h   ou  Prochaine page dans : 9h, 23 mn</span>
&nbsp;
<span style="color: #808080; font-style: italic;">// autre delires :</span>
<span style="color: #000066;">echo</span> super_write_delay<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">3661</span>, <span style="color: #ff0000;">'h'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #808080; font-style: italic;">// 1 heure</span>
<span style="color: #000066;">echo</span> super_write_delay<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">3661</span>, <span style="color: #ff0000;">'mn'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #808080; font-style: italic;">// 1h, 01mn</span>
<span style="color: #000066;">echo</span> super_write_delay<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">3661</span>, <span style="color: #ff0000;">'s'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #808080; font-style: italic;">// 1h, 01mn, 01s</span></pre></div></div>

<p>Et histoire de faire croire que je cherche des infos avant de réinventer la roue, voici une fonction php5 qui écrit des date de façon internationale :<br />
<a href="http://blog.pascal-martin.fr/post/php-5.3-intl-1-internationalisation-localisation">http://blog.pascal-martin.fr/post/php-5.3-intl-1-internationalisation-localisation</a> (merci <a href="http://nyams.planbweb.com/blog/">Nyamsprod</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/100-fonctions-temporelles-2-le-retour/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Delete backslashs : death to magic_quotes_gpc</title>
		<link>http://blog.salagir.com/90-delete-backslashs-death-to-magic_quotes_gpc/</link>
		<comments>http://blog.salagir.com/90-delete-backslashs-death-to-magic_quotes_gpc/#comments</comments>
		<pubDate>Thu, 30 Oct 2008 14:16:19 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[My useful scripts]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/?p=90</guid>
		<description><![CDATA[Even in PHP 5, this old security params is activated by default, and I hate it. It&#8217;s Magic Quote.
When this flag is On, then vars in cookies, from a form or a url, are automatically &#8220;escaped&#8221;.
It means that backslashes are added before some special characters. Primary: the simple quote.
Example : my script toto.php contains this [...]]]></description>
			<content:encoded><![CDATA[<p>Even in PHP 5, this old security params is activated by default, and I hate it. It&#8217;s Magic Quote.<br />
When this flag is On, then vars in cookies, from a form or a url, are automatically &#8220;escaped&#8221;.<br />
It means that backslashes are added before some special characters. Primary: the simple quote.</p>
<p>Example : my script toto.php contains this code : <em>Bonjour &lt;?= $_GET['nom'] ?&gt; !</em>.<br />
Calling : toto.php?nom=Bob ; outputs <em>Bonjour Bob !</em><br />
Calling : toto.php?nom=Muad&#8217;ib ; outputs <em>Bonjour Muad\&#8217;ib !</em></p>
<p>Why ? Because leaving &#8216; unescaped can lead to <em>SQL injection</em> if the coder didn&#8217;t code well.</p>
<p>But I code well, and I add myself, and only when necessary the backslashes. Problem : with this flag, slashes are added two times, and it gives this : Muad\\\&#8217;ib</p>
<p>In order to get ride of the slashes, I use often this code :</p>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #000066;">get_magic_quotes_gpc</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #0000ff;">$_POST</span> = <span style="color: #000066;">array_map</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'kill_magic_quotes'</span>, <span style="color: #0000ff;">$_POST</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">function</span> kill_magic_quotes<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$v</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #000066;">is_array</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$v</span><span style="color: #66cc66;">&#41;</span> ? <span style="color: #000066;">array_map</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'kill_magic_quotes'</span>, <span style="color: #0000ff;">$v</span><span style="color: #66cc66;">&#41;</span> : <span style="color: #000066;">stripslashes</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$v</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>But now on my owns servers, I simply turn the flag Off.<br />
Except ! Sometime with a new machine, I forget this, and some data in database is now full of &#8216; &#8230;.</p>
<p>So I wrote a script for command-line. Its parameters are a table name, and a field name.<br />
It checks for errors, it&#8217;s cool and well done. Voilà.</p>
<p>You can download the code here :</p>
<ul>
<li><a href="/upload/del_slashs.php.zip">del_slashs Zipped  (v1.1)</a></li>
<li><a href="/upload/del_slashs.php.html">see del_slashs online (v1.1)</a></li>
<li>Uses : <a href="/upload/sqlQueries.php.zip">sqlQueries</a> (<a href="/43-the-1468456th-php-class-that-overloads-mysql/">cf. this post</a>)</li>
</ul>
<p>The script in command line is launched like this :</p>

<div class="wp_syntax"><div class="code"><pre class="bash">php del_slashs.php tablename fieldname</pre></div></div>

<p>Put sqlQueries.php file in the same folder, and edit del_slash.php to put your database connection information.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/90-delete-backslashs-death-to-magic_quotes_gpc/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Webservice de traduction automatique</title>
		<link>http://blog.salagir.com/72-webservice-de-traduction-automatique/</link>
		<comments>http://blog.salagir.com/72-webservice-de-traduction-automatique/#comments</comments>
		<pubDate>Sun, 19 Oct 2008 01:48:06 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Mes scripts utiles]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/?p=72</guid>
		<description><![CDATA[J&#8217;ai peut-être mal cherché, mais je n&#8217;ai pas trouvé de webservice de traduction.
Or j&#8217;avais deux besoins, que j&#8217;ai tous deux comblé : pouvoir faire traduire ce que j&#8217;écris facilement, et pouvoir lire des flux RSS dans d&#8217;autres langues.
Les moins fans d&#8217;entre vous de ma personne (qu&#8217;est ce que vous faites là ?) ignorent peut-être que [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai peut-être mal cherché, mais je n&#8217;ai pas trouvé de webservice de traduction.<br />
Or j&#8217;avais deux besoins, que j&#8217;ai tous deux comblé : pouvoir faire traduire ce que j&#8217;écris facilement, et pouvoir lire des flux RSS dans d&#8217;autres langues.</p>
<p>Les moins fans d&#8217;entre vous de ma personne (qu&#8217;est ce que vous faites là ?) ignorent peut-être que grâce à mon dojinshi (BD avec les personnages et l&#8217;univers d&#8217;une BD déjà existante. Oui c&#8217;est illégal, mais toléré), je gère maintenant un site avec 7 langues différentes, sachant que j&#8217;en parle la moitié d&#8217;une.</p>
<p>Je vous raconterai plus tard la beauté de mon code du site de traduction, il n&#8217;a d&#8217;ailleurs pas grand-chose de compliqué. Site avec login, table avec un champs par langue, et hop (on appelle les textes par leur ID. Cela rends le code php appelant plutôt lisible et on se pose pas de questions d&#8217;index).</p>
<p>Bref, de nombreux fans (oui, j&#8217;ai des visiteurs môssieur) postent des commentaires dans leur langue, et moi je ne peux pas les suivre. Or, j&#8217;aime savoir.<br />
D&#8217;ailleurs faudra que je vous partage mon code de commentaires, il est très cool. Un jour.</p>
<h3>Lire le flux des commentaires</h3>
<p><em><a href="http://pipes.yahoo.com/pipes/">Yahoo Pipes!</a></em>, un utilitaire extrêmement puissant dont personne ne parle parce que c&#8217;est pas Google qui le fait, a répondu à mes interrogations.</p>
<p>On donne notre flux de commentaires, on le pointe sur un cadre &#8220;traduction&#8221; en donnant la langue d&#8217;entrée et de sortie, on pointe ce cadre sur un nouveau flux, et Yahoo génère une flux XML modifié, auquel on peut s&#8217;inscrire avec notre agrégateur préféré.</p>
<p>Comment l&#8217;utiliser ? Un tuto vidéo simple qui marche :<br />
<a href="http://www.jumpcut.com/view?id=C086AA92568811DCAB02000423CF381C">How to Translate a Feed Using Pipes</a></p>
<p>Notez beaucoup de tutos parlent de &#8220;BabelFish&#8221;. IL EST DEPRECATED. Il ne SERT A RIEN.<br />
Il faut utiliser le plus complexe et plus puissant Loop + String»Translator (comme dans la vidéo)</p>
<p>Maintenant, je suis abonné à 7 flux RSS différents.</p>
<p>Bon évidement c&#8217;est loin d&#8217;être parfait. Déjà la traduction automatique continue à être un art fortement mal maîtrisé. Mais en plus, des commentaires de blog&#8230; et bien c&#8217;est pas très bien écrit à la base&#8230;<br />
Autre problème, si le texte contient du html, alors le résultat est immonde. J&#8217;ai ajouté un filtre RegExp pour virer le HTML mais je ne sais pas si ça a été très utile.<br />
Dernière problème, a cause du html qui vole, le pseudo du type est collé au message (avec mon filtre, il y a un espace c&#8217;est déjà ça. Je pourrais ajouter un filtre pour mettre des jolies étoiles.)</p>
<p><a href="/upload/yahoo-pipes.png"><img src="/upload/yahoo-pipes.png" align="right" width="303" height="245" alt="" /></a></p>
<p>Voilà les flux auxquels je suis abonné sur <em>Google Reader</em> :</p>
<ul>
<li><a href="http://pipes.yahoo.com/pipes/pipe.run?_id=tH4sDCdw3RGCwKGnrLQIDg&#038;_render=rss">DBM Comments de2fr</a></li>
<li><a href="http://www.dragonball-multiverse.com/flux-comments.rss.php?lang=en">DBM Comments en</a></li>
<li><a href="http://pipes.yahoo.com/pipes/pipe.run?_id=Mu_p2Z9f3RGz9cSX4mZpYg&#038;_render=rss">DBM Comments es2fr</a></li>
<li><a href="http://www.dragonball-multiverse.com/flux-comments.rss.php?lang=fr">DBM Comments fr</a></li>
<li><a href="http://pipes.yahoo.com/pipes/pipe.run?_id=es_yLqFf3RG4TVKSrbQIDg&#038;_render=rss">DBM Comments it2fr</a></li>
<li><a href="http://pipes.yahoo.com/pipes/pipe.run?_id=4sp2PS2c3RGS6mGorLQIDg&#038;_render=rss">DBM Comments cn2en</a></li>
<li><a href="http://pipes.yahoo.com/pipes/pipe.run?_id=sOMDmX_d3RGQ7DbfrLQIDg&#038;_render=rss">DBM Comments nl2fr</a></li>
</ul>
<p>Ce sont les flux que j&#8217;ai créé avec Yahoo Pipes (sauf pour FR et EN qui sont les originaux, mais enfin par définition c&#8217;est aussi moi qui les ai créé ;) ), vous pouvez créer les vôtres traduits dans ce que vous voulez, mais aussi vous abonner aux miens, puisqu&#8217;il sont déjà là ! (si vous êtes motivé, les espagnols postent autant que les français)</p>
<h3>Traduction de mon propre commentaire</h3>
<p>Maintenant que je lis les gens, j&#8217;ai des fois envie de leur répondre. Mais écrire un texte, aller sur un site de traduction, le passer, le copier et montrer les 2 versions (histoire que ceux qui peuvent lire la langue originelle échappent à la mauvaise traduction), c&#8217;est fastidieux.</p>
<p>Ne trouvant de webservice, j&#8217;ai transformé Google en ce dernier.<br />
Histoire de ne pas ralentir et défoncer Google à chaque fois que quelqu&#8217;un ouvre la page des commentaires, je mets le résultat de traduction en cache.</p>
<p>Voici mon premier message auto-traduit :<br />
<a href="http://www.dragonball-multiverse.com/es/page-54.html?comsall=1#c9444">http://www.dragonball-multiverse.com/es/page-54.html?comsall=1#c9444</a><br />
Il y a bien sûr du code intégré dans mon système de commentaires pour déclencher l&#8217;ajout de trad sans travail de ma part, mais je le passe ici, pour vous montrer le système derrière.</p>
<p><strong>Pour simplement créer un lien qui traduira le texte :</strong><br />
C&#8217;est ma première version, elle est plus simple à utiliser, mais vous n&#8217;affichez pas directement la traduction.</p>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #000000; font-weight: bold;">function</span> link_translator<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$txt</span>, <span style="color: #0000ff;">$from</span>=<span style="color: #ff0000;">'en'</span>, <span style="color: #0000ff;">$to</span>=<span style="color: #000000; font-weight: bold;">null</span>, <span style="color: #0000ff;">$a_params</span>=<span style="color: #ff0000;">''</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$to</span>===<span style="color: #000000; font-weight: bold;">null</span><span style="color: #66cc66;">&#41;</span> <span style="color: #0000ff;">$to</span> = <span style="color: #0000ff;">$GLOBALS</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'lang'</span><span style="color: #66cc66;">&#93;</span>;
    <span style="color: #0000ff;">$txt</span> = <span style="color: #000066;">preg_replace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'/&lt;[^&gt;]*&gt;/'</span>, <span style="color: #ff0000;">''</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
    <span style="color: #0000ff;">$url</span> = <span style="color: #ff0000;">'http://translate.google.com/translate_t?sl='</span>.<span style="color: #0000ff;">$from</span>.<span style="color: #ff0000;">'&amp;amp;tl='</span>.<span style="color: #0000ff;">$to</span>.<span style="color: #ff0000;">'&amp;amp;text='</span>.<span style="color: #000066;">urlencode</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #0000ff;">$str</span> = <span style="color: #000066;">function_exists</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'__'</span><span style="color: #66cc66;">&#41;</span>? __<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">63</span><span style="color: #66cc66;">&#41;</span> : <span style="color: #ff0000;">'Translate from %s into %s'</span>;
    <span style="color: #b1b100;">return</span> <span style="color: #ff0000;">&quot;&lt;a href=<span style="color: #000099; font-weight: bold;">\&quot;</span>$url<span style="color: #000099; font-weight: bold;">\&quot;</span> $a_params&gt;&quot;</span>.<span style="color: #000066;">sprintf</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$str</span>, <span style="color: #000066;">strtoupper</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$from</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #000066;">strtoupper</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$to</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #ff0000;">&quot;&lt;/a&gt;&quot;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>Notez que mon site contient souvent un $GLOBALS[lang]. Evidement, dans la page de commentaires espagnols, la variable est à &#8220;es&#8221;, le défaut est souvent mon ami. Enfin, j&#8217;écris plutôt en anglais, pensant stupidement que en2es est plus travaillé que fr2es (les langues étant plus proches, c&#8217;est pas évident), et puis il y a sûrement plus d&#8217;espagnols qui comprennent l&#8217;anglais que le français, pour profiter de ma VO.<br />
Notez également qu&#8217;on vire le HTML qui fait du mal à google.<br />
Profitez aussi que vous voyez là un extrait de ma fonction de traduction (deux underscores), mais si vous ne l&#8217;avez pas (ce dont je ne doute pas, vous n&#8217;avez sûrement pas non plus la table et son 63e élément qui va avec ^^), ça marche quand même.<br />
Enfin, on envoie tout par GET par simplicité, ce qui exclu les textes trop longs.</p>
<p>Il n&#8217;y a pas vraiment de gestion d&#8217;erreurs, utilisez-la bien. <code>$from</code> et <code>$to</code> doivent être juste des mots de deux lettres, en minuscule (sauf pour le chinois qui fait chier)</p>
<p><strong>Pour garder la traduction et l&#8217;afficher :</strong><br />
Passons au niveau deux. On va parser la réponse google et l&#8217;afficher, et la sauver en BDD.</p>
<p>Le plus simple, l&#8217;affichage du résultat, qui dépends d&#8217;une autre page, celle du webservice. Le webservice est à copier chez vous, n&#8217;allez pas me flooder ma BDD avec vos conneries :</p>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #000000; font-weight: bold;">function</span> translator<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$txt</span>, <span style="color: #0000ff;">$from</span>=<span style="color: #ff0000;">'en'</span>, <span style="color: #0000ff;">$to</span>=<span style="color: #000000; font-weight: bold;">null</span>, <span style="color: #0000ff;">$div_params</span>=<span style="color: #ff0000;">''</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$to</span>===<span style="color: #000000; font-weight: bold;">null</span><span style="color: #66cc66;">&#41;</span> <span style="color: #0000ff;">$to</span> = <span style="color: #0000ff;">$GLOBALS</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'lang'</span><span style="color: #66cc66;">&#93;</span>;
    <span style="color: #0000ff;">$txt</span> = <span style="color: #000066;">preg_replace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'/&lt;[^&gt;]*&gt;/'</span>, <span style="color: #ff0000;">''</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
    <span style="color: #0000ff;">$F</span> = <span style="color: #000066;">file_get_contents</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;http://tondomaine/webservice_translate.php?from=$from&amp;to=$to&amp;txt=&quot;</span>.<span style="color: #000066;">urlencode</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #0000ff;">$str</span> = <span style="color: #000066;">function_exists</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'__'</span><span style="color: #66cc66;">&#41;</span>? __<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">63</span><span style="color: #66cc66;">&#41;</span> : <span style="color: #ff0000;">'Translate from %s into %s'</span>;
    <span style="color: #0000ff;">$str</span> = <span style="color: #000066;">sprintf</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$str</span>, <span style="color: #000066;">strtoupper</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$from</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #000066;">strtoupper</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$to</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #b1b100;">return</span> <span style="color: #ff0000;">&quot;&lt;div $div_params&gt;&lt;h5&gt;$str&lt;/h5&gt;<span style="color: #000099; font-weight: bold;">\n</span>$F&lt;/div&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>Vite fait, le CSS que j&#8217;ai utilisé :<br />
(en dernier argument de la fonction, j&#8217;ai bien sûr mis <code>" class='auto_translation' "</code>)</p>

<div class="wp_syntax"><div class="code"><pre class="css"><span style="color: #6666ff;">.auto_translation</span> <span style="color: #66cc66;">&#123;</span> <span style="color: #000000; font-weight: bold;">border</span>: <span style="color: #933;">1px</span> <span style="color: #993333;">solid</span>; <span style="color: #000000; font-weight: bold;">background</span>: <span style="color: #cc00cc;">#FFA</span>; <span style="color: #000000; font-weight: bold;">margin</span>: <span style="color: #933;">0</span><span style="color: #6666ff;"><span style="color: #933;">.5em</span></span> <span style="color: #933;">1em</span> <span style="color: #933;">0</span> <span style="color: #933;">1em</span> <span style="color: #66cc66;">&#125;</span>
<span style="color: #6666ff;">.auto_translation</span> h5 <span style="color: #66cc66;">&#123;</span> <span style="color: #000000; font-weight: bold;">font</span>: <span style="color: #993333;">bold</span> <span style="color: #933;">0</span><span style="color: #6666ff;"><span style="color: #933;">.8em</span></span> <span style="color: #993333;">sans-serif</span>; <span style="color: #000000; font-weight: bold;">margin</span>: <span style="color: #933;">0</span> <span style="color: #933;">0</span> <span style="color: #933;">0</span><span style="color: #6666ff;"><span style="color: #933;">.2em</span></span> <span style="color: #933;">0</span> <span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>Voici maintenant le contenu de <code>webservice_translate.php</code> :</p>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #808080; font-style: italic;">/** Cette page prends un texte et 2 langues.
  Elle utilise google pour traduire le texte d'une langue a l'autre.
  Sauve le resultat en cache.
  L'affiche.
  */</span>
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>!<span style="color: #0000ff;">$_REQUEST</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'txt'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #000066;">die</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Give some text to translate...&quot;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>!<span style="color: #000066;">preg_match</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'/^[a-z][a-z]$/'</span>, <span style="color: #0000ff;">$_REQUEST</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'from'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #000066;">die</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Give a language to start from.&quot;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>!<span style="color: #000066;">preg_match</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'/^[a-z][a-z]$/'</span>, <span style="color: #0000ff;">$_REQUEST</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'to'</span><span style="color: #66cc66;">&#93;</span>  <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #000066;">die</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Give a language to get to.&quot;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #b1b100;">require</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'connect.php'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000066;">mysql_query</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;SET NAMES 'utf8'&quot;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #000066;">get_magic_quotes_gpc</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #0000ff;">$_REQUEST</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'txt'</span><span style="color: #66cc66;">&#93;</span> = <span style="color: #000066;">stripslashes</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$_REQUEST</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'txt'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">//// cherche si deja la</span>
<span style="color: #0000ff;">$clef</span> = <span style="color: #0000ff;">$_REQUEST</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'from'</span><span style="color: #66cc66;">&#93;</span>.<span style="color: #ff0000;">':'</span>.<span style="color: #0000ff;">$_REQUEST</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'to'</span><span style="color: #66cc66;">&#93;</span>.<span style="color: #ff0000;">' '</span>.<span style="color: #000066;">md5</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$_REQUEST</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'txt'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #0000ff;">$R</span> = <span style="color: #000066;">mysql_query</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;SELECT `translation` FROM `autotranslations` WHERE `clef`='$clef'&quot;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0000ff;">$R</span> = <span style="color: #000066;">mysql_fetch_row</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$R</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$R</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #000066;">echo</span> <span style="color: #0000ff;">$R</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>;
    <span style="color: #000066;">exit</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/// demande google</span>
&nbsp;
<span style="color: #0000ff;">$url</span> = <span style="color: #ff0000;">'http://translate.google.com/translate_t?sl='</span>.<span style="color: #0000ff;">$_REQUEST</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'from'</span><span style="color: #66cc66;">&#93;</span>.<span style="color: #ff0000;">'&amp;tl='</span>.<span style="color: #0000ff;">$_REQUEST</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'to'</span><span style="color: #66cc66;">&#93;</span>.<span style="color: #ff0000;">'&amp;text='</span>.<span style="color: #000066;">urlencode</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$_REQUEST</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'txt'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #0000ff;">$F</span> = <span style="color: #000066;">file_get_contents</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$url</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #0000ff;">$B</span> = <span style="color: #000066;">preg_match</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'|&lt;td class=almost_half_cell&gt;&lt;div id=result_box dir=[^&gt;]+&gt;(.*)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=submitcell&gt;|s'</span>, <span style="color: #0000ff;">$F</span>, <span style="color: #0000ff;">$M</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>!<span style="color: #0000ff;">$B</span><span style="color: #66cc66;">&#41;</span> <span style="color: #000066;">die</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Could not translate. Tell Salagir about it.&quot;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #0000ff;">$M</span> = <span style="color: #0000ff;">$M</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span>;
<span style="color: #0000ff;">$M</span> = <span style="color: #000066;">preg_replace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'/[<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>]/'</span>, <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>, <span style="color: #0000ff;">$M</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0000ff;">$M</span> = <span style="color: #000066;">htmlentities</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$M</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0000ff;">$M</span> = <span style="color: #000066;">str_replace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'&amp;amp;'</span>, <span style="color: #ff0000;">'&amp;'</span>, <span style="color: #0000ff;">$M</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0000ff;">$M</span> = <span style="color: #000066;">str_replace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'&amp;lt;'</span>, <span style="color: #ff0000;">'&lt;'</span>, <span style="color: #0000ff;">$M</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0000ff;">$M</span> = <span style="color: #000066;">str_replace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'&amp;gt;'</span>, <span style="color: #ff0000;">'&gt;'</span>, <span style="color: #0000ff;">$M</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>!<span style="color: #0000ff;">$M</span><span style="color: #66cc66;">&#41;</span> <span style="color: #000066;">die</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Could not find any translation.&quot;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #000066;">echo</span> <span style="color: #0000ff;">$M</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// sauve</span>
&nbsp;
<span style="color: #000066;">mysql_query</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;INSERT INTO `autotranslations` SET
        `clef`='$clef', `translation`='&quot;</span>.<span style="color: #000066;">mysql_real_escape_string</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$M</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #ff0000;">&quot;'&quot;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000066;">echo</span> <span style="color: #000066;">mysql_error</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Alors en ce qui concerne les encodages, j&#8217;ai fais&#8230; n&#8217;importe quoi. Mon site est en utf8, et j&#8217;ai changé des trucs au hasard jusqu&#8217;à ce que ça s&#8217;affichait bien. Désolé.<br />
Le htmlentities() essait d&#8217;éviter les problèmes d&#8217;encodages, mais il détruit le HTML, que donc comme vous voyez je remets.<br />
En php5, on peut échapper à cela car htmlentities(), htmlspecialchars() sont nos amis, ont plus de paramètres, et chacun une fonction inversante. Mais bon, là je suis en 4.</p>
<p>Enfin, la table utilisée :</p>

<div class="wp_syntax"><div class="code"><pre class="sql"><span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #ff0000;">`autotranslations`</span> <span style="color: #66cc66;">&#40;</span>
  <span style="color: #ff0000;">`id_at`</span> int<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">11</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">AUTO_INCREMENT</span>,
  <span style="color: #ff0000;">`clef`</span> varchar<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">40</span><span style="color: #66cc66;">&#41;</span> character <span style="color: #993333; font-weight: bold;">SET</span> utf8 collate utf8_unicode_ci <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span>,
  <span style="color: #ff0000;">`translation`</span> text character <span style="color: #993333; font-weight: bold;">SET</span> utf8 collate utf8_unicode_ci <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span>,
  <span style="color: #993333; font-weight: bold;">PRIMARY</span> <span style="color: #993333; font-weight: bold;">KEY</span>  <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">`id_at`</span><span style="color: #66cc66;">&#41;</span>,
  <span style="color: #993333; font-weight: bold;">KEY</span> <span style="color: #ff0000;">`clef`</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">`clef`</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>Bonus : le 63e élément de ma table de traduction, remplis par les traducteurs de DBM, que je remercie grandement au passage !</p>
<ul>
<li>EN:	Automatic translation from %s into %s</li>
<li>FR:	Traduction automatique de %s en %s</li>
<li>IT:	Traduzione automatica da %s in %s</li>
<li>ES:	Traducción automática de %s a %s</li>
<li>NL:	Automatische translatie van %s naar %s</li>
</ul>
<p>(au moment où j&#8217;ai écris l&#8217;article, tous les traducteurs ne sont pas passés)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/72-webservice-de-traduction-automatique/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Petit vide dans le blog (et déplacement d&#8217;articles)</title>
		<link>http://blog.salagir.com/62-petit-vide-dans-le-blog-et-deplacement-darticles/</link>
		<comments>http://blog.salagir.com/62-petit-vide-dans-le-blog-et-deplacement-darticles/#comments</comments>
		<pubDate>Sat, 11 Oct 2008 08:36:24 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/?p=62</guid>
		<description><![CDATA[Vous l&#8217;avez vu, après un été chargé en articles et la création d&#8217;une version anglaise, le blog se retrouve comme abandonné.
Oh, des articles, j&#8217;en ai, en tête et en brouillon, mais je n&#8217;ai pas le temps de les finir.
Le principal responsable, c&#8217;est Dragon Ball Multiverse, qui avec ses 6 langues + 2 à venir et [...]]]></description>
			<content:encoded><![CDATA[<p>Vous l&#8217;avez vu, après un été chargé en articles et la création d&#8217;une version anglaise, le blog se retrouve comme abandonné.<br />
Oh, des articles, j&#8217;en ai, en tête et en brouillon, mais je n&#8217;ai pas le temps de les finir.</p>
<p>Le principal responsable, c&#8217;est <a href="http://www.dragonball-multiverse.com">Dragon Ball Multiverse</a>, qui avec ses 6 langues + 2 à venir et ses centaines de commentaires par page&#8230; me prends du temps, beaucoup beaucoup.<br />
Mais bon, ça fait plaisir :)</p>
<p>Il y a aussi une autre modification du blog, j&#8217;y vire tous mes articles sur les films, qui ont plus leur place sur <a href="http://www.twivi.com/">le site Twivi</a>.<br />
En les déplaçant, j&#8217;ai à chaque fois ajouté des images, viré des fautes, ajouté du texte&#8230; bref ça vaut le coup :)<br />
Je déplace également vos commentaires sur Twivi, quand l&#8217;article sort.</p>
<p>Retrouvez-les ici :</p>
<ul>
<li><a href="http://www.twivi.com/2008/08/03/1128-redif-shaolin-soccer/">Shaolin Soccer</a></li>
<li><a href="http://www.twivi.com/2008/09/28/1172-pirates-des-caraibes-3-mauvais/">Pirates of ze caraibes, trois</a></li>
<li><a href="http://www.twivi.com/2008/09/23/1327-les-contes-de-terremer/">Les contes de Terremer</a></li>
<li><a href="http://www.twivi.com/2008/10/11/1361-transformers-le-film/">Transformers le film</a></li>
<li><a href="http://www.twivi.com/2008/10/25/1326-team-america-world-police/">Team America World Police</a></li>
<li><a href="http://www.twivi.com/2008/10/29/1414-mortal-kombat-les-films/">Mortal Kombat 2</a></li>
<li>Les autres, à venir</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/62-petit-vide-dans-le-blog-et-deplacement-darticles/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Extracteur de textes d&#8217;un fichier Photoshop</title>
		<link>http://blog.salagir.com/41-extracteur-de-textes-dun-fichier-photoshop/</link>
		<comments>http://blog.salagir.com/41-extracteur-de-textes-dun-fichier-photoshop/#comments</comments>
		<pubDate>Tue, 02 Sep 2008 09:52:59 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Mes scripts utiles]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/fr/?p=41</guid>
		<description><![CDATA[Lorsque je créais le Geek&#8217;s World du jour, il m&#8217;arrivait souvent de changer le texte à la dernière seconde. Au final, ce qu&#8217;il y avait dans le fichier .psd était la meilleure référence pour savoir ce qui ce disait dans le strip, et non mon fichier texte avec les paroles initiales.
De plus, je faisais souvent [...]]]></description>
			<content:encoded><![CDATA[<p>Lorsque je créais le Geek&#8217;s World du jour, il m&#8217;arrivait souvent de changer le texte à la dernière seconde. Au final, ce qu&#8217;il y avait dans le fichier .psd était la meilleure référence pour savoir ce qui ce disait dans le strip, et non mon fichier texte avec les paroles initiales.<br />
De plus, je faisais souvent la traduction directement dans le fichier image.</p>
<p>Or tous les textes de GsW sont proprement rangés en base de données&#8230; ce qui permet d&#8217;ailleurs de chercher un strip par le contenu de sa bulle, ainsi que d&#8217;avoir des réponses googles sur ces mêmes contenus, qu&#8217;on ne voit à la base que dans une image.</p>
<p>Pour ce faire, j&#8217;ai fais un extracteur de textes.<br />
Les textes écrits dans un fichier Photoshop, pour peu qu&#8217;ils ne soient pas transformés en bitmap, sont modifiables à volonté, c&#8217;est donc que les lettres qui le constituent sont rangées quelques part. C&#8217;est effectivement le cas.</p>
<p>Exemple d&#8217;utilisation :</p>
<pre class="BASH">
$ perl PsdTextExtractor.pl 614-txt.psd
free samples
Hey, I paid 2 euros for this on a plane!
échantillon gratuit
Hé, j'ai payé 2 euros pour ça dans un avion !
Geek's World 484 by Salagir
</pre>
<p>J&#8217;ai pris <a href="http://www.geeksworld.org/strip_614.html">un strip avec peu de texte</a> pour que l&#8217;exemple ne soit pas trop gros. Notez que la mise en forme n&#8217;est pas notée dans ma sortie, qui est en simple text.<br />
Vous l&#8217;aviez bien sûr compris, j&#8217;ai fais un autre script qui appelle celui-là, qui vire le copyright, sépare les deux langues et mets le texte en base de donnée :)</p>
<p>Vous pouvez télécharger le code :</p>
<ul>
<li><a href="/upload/PsdTextExtractor.pl">PsdTextExtractor.pl</a></li>
<li><a href="/upload/PsdTextExtractor.pl.zip">PsdTextExtractor.pl Zippé</a></li>
<li><a href="/upload/PsdTextExtractor.pl.html">Voir PsdTextExtractor.pl en ligne</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/41-extracteur-de-textes-dun-fichier-photoshop/feed/</wfw:commentRss>
		</item>
		<item>
		<title>J&#8217;aime pas les casses-couilles !</title>
		<link>http://blog.salagir.com/40-jaime-pas-les-casses-couilles/</link>
		<comments>http://blog.salagir.com/40-jaime-pas-les-casses-couilles/#comments</comments>
		<pubDate>Thu, 28 Aug 2008 09:24:48 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Ca ne va pas du tout !]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/fr/?p=40</guid>
		<description><![CDATA[J&#8217;aime pas&#8230; les gens qui font des actions dont la conséquence ne profite qu&#8217;à eux, dérange les autres, et qu&#8217;en plus de cela, ils demandent des droits et une attention particulière pour continuer à le faire.
Pas clair ce que je raconte ? Laissez-moi vous donner quelques exemples.
J&#8217;aime pas les clopeurs !
Je n&#8217;ai rien contre les [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;aime pas&#8230; les gens qui font des actions dont la conséquence ne profite qu&#8217;à eux, dérange les autres, et qu&#8217;en plus de cela, ils demandent des droits et une attention particulière pour continuer à le faire.</p>
<p>Pas clair ce que je raconte ? Laissez-moi vous donner quelques exemples.</p>
<h3>J&#8217;aime pas les clopeurs !</h3>
<p>Je n&#8217;ai rien contre les drogués. Mais est-ce que je vous plante mes seringues d&#8217;héroïnes dans le bras pendant les soirées moi ? Non.</p>
<p>Comme l&#8217;alcoolique, le clopeur est un drogué. Sauf que peu de drogués prennent leur fixe pendant leur pause au bureau, puis viennent te parler, déversant sur toi l&#8217;odeur monstrueuse de leur drogue sur ta figure. Je veux dire, si un collègue revenait de la machine à café avec une haleine d&#8217;alcool, on le virerai. Mais l&#8217;haleine de clope, qui contrairement à la précédente reste sur les habits, est tolérée.</p>
<p>Je n&#8217;ai jamais quitté une discussion, une table ou un groupe subitement pour aller boire mon whisky-coca à la fenêtre. Je n&#8217;ai jamais coupé une personne parce que je devais aller vérifier mes mails, jouer à Zelda ou me verser un coca parce que ca fait 3 heures que j&#8217;en ai pas bu je tiens plus là.<br />
J&#8217;en déduis que je suis donc plus accro, par exemple, aux toilettes et à dessiner Geek&#8217;s World qu&#8217;au coca, mais mes petites addictions ne sont rien face à celles du fumeur moyen.</p>
<p>Je dois dire que l&#8217;addiction de certains dérange plus que d&#8217;autres. Ca ne me dérangerai pas qu&#8217;une personne sorte sa fiole d&#8217;absinthe en lieu public pour en boire une gorgée. Tant qu&#8217;il n&#8217;est pas bourré ou fou et ne dérange les autres. Problème : le clopeur est &#8220;bourré&#8221; dès la première cigarette. S&#8217;il m&#8217;envoyait à la figure une douce odeur de romarin ça ne me dérangerai pas outre mesure. Dommage, l&#8217;odeur de la clope est dégueulasse, se pose sur les habits, et en retour de soirée, l&#8217;odeur de tabac froid est tellement immonde que même les fumeurs doivent jeter immédiatement leurs habits au linge sale afin de pouvoir à nouveau respirer.</p>
<p>Alors après, n&#8217;allez pas jouer vos victimes et persécutés parce qu&#8217;on interdit de plus en plus de fumer dans tous les lieux plus ou moins public. Je suis pour toute forme d&#8217;interdiction de vos parasitages en série. Allez puer et saloper chez vous : je ne me plains personnellement pas de l&#8217;interdiction de pisser sur les pantalons des gens dans les bars, pourtant je trouve que c&#8217;est un acte social pertinent !</p>
<p>De plus, une grande partie (non pas tous, inutile de dire &#8220;moi je le fais pas&#8221;) des fumeurs jettent par terre de nombreuses saletés. A commencer tout simplement par des morceaux de paquet.<br />
Déjà à l&#8217;ouverture : le petit fils de plastique est enlevé&#8230; et jeté par terre. Puis le haut du plastique transparent retiré, et jeté par terre. Le paquet est ouvert, et un truc de papier/alu est enlevé, et jeté par terre.<br />
Et j&#8217;ai vu de nombreux fumeurs jeter le paquet vide par terre également.<br />
Enfin, le mégot. 100% des clopeurs jettent leur mégot par terre. Et bien c&#8217;est dégueulasse. Non, le mégot n&#8217;est pas super-biodégradable. Le mégot est retiré du trottoir non pas par l&#8217;opération du saint esprit ou de la nature, mais bien du balayeur de rue !</p>
<p>Alors les drogués : veuillez arrêter ! (et ainsi faire de pertinentes économies)<br />
A ce conseil que je n&#8217;hésite pas à donner, des fumeurs m&#8217;ont dit que ce n&#8217;était pas si facile. Après tout si l&#8217;on vends de nombreux patchs et autres méthodes, c&#8217;est qu&#8217;il doit y avoir une raison.<br />
Je ne vous accuse pas de manquer de self-contrôle, mais plutôt de vous cacher une terrifiante vérité : si vous êtes incapable d&#8217;arrêter, cela ne prouve-t-il pas que vous êtes des drogués de première catégorie ? Comment vous pouvez vivre en sachant que vous êtes encore plus dépendant de ce bâton empoisonné que&#8230; <em>de la bouffe</em> !?!</p>
<p>Personnellement si je me mettais à trembler parce que je n&#8217;ai pas bu de coca, touché à un ordi, joué à la console, depuis plus de 5 heures, alors je me poserai des questions sur mon état de santé.<br />
Pour info, j&#8217;ai testé et je peux me passer de tout cela plusieurs semaines sans le moindre pet de symptôme (oui, l&#8217;inquiétude que je rate des mails importants ou des updates en ligne s&#8217;efface de plus en plus au fur et à mesure que passent les jours sans internet. C&#8217;est cool)</p>
<h3>J&#8217;aime pas les motards !</h3>
<p>Je remarque que seuls les motards défendent les motards. Normal. Il faut être taré, ou motard, pour dire du bien de cet engin mortel.</p>
<p>Que vous aimiez risquer votre vie sur un engin sans protection aucune à 130 Km/h, ca ne me dérange pas. Ce qui me dérange, c&#8217;est que pour augmenter la sécurité de votre occupation monstrueusement mortelle, vous demandiez à tous les autres usagers de la route de faire moult sacrifices.</p>
<p>Sur autoroute ou périth, vient le problème des phares. Lorsqu&#8217;on a proposé à toutes les voitures d&#8217;allumer leurs feux de jour, les motards ont dit : &#8220;Ah non, c&#8217;est notre truc à nous le phare allumé de jour ! Si toutes les voitures font de même, vous ferez pas attention à nous !&#8221;<br />
Mais <strong>je veux pas</strong> faire attention à vous les mecs ! Je n&#8217;ai pas à ME sacrifier et à faire encore plus attention sur la route pour votre petit confort d&#8217;avoir le droit de me dépasser pendant les embouteillages et vous mettre en danger.<br />
Donc maintenant vous mettez vos warnings. Clignotants permanents. Bravo. Vous n&#8217;êtes pas les rois de la route, simplement les parasites de la route. Est ce que je vous demande de limiter les vitesses des voitures et de faire attention à moi pour que je puisse prendre le périth en rollers moi ?</p>
<p>Dans les rues de Paris, vous passez entre les voitures roulant et les voitures garées, créant votre petite voie de motard, frôlant ainsi vos ennemis à quatre roues&#8230; ou les piétons. Un peu comme un vélo, mais en 3 à 5 fois plus vite.<br />
Pourquoi ils ne roulent pas sur la voie voiture, comme les engin motorisés qu&#8217;ils sont, au lieu d&#8217;essayer de tout le temps dépasser par la gauche, la droite ou en-dessous, demande-je ?<br />
Parce que si une voiture freine brusquement, ou accélère brusquement, et qu&#8217;elle éclate une moto, ca fait <em>super mal</em>, me réponds un motard. Pour notre sécurité, on ne doit <strong>PAS</strong> rester entre l&#8217;avant et l&#8217;arrière de deux voitures.<br />
Mais <em>qu&#8217;est ce que vous faites sur cette route</em> si elle est si dangereuse, bordel ??</p>
<p>Dites-moi : combien de vélocyclistes se sont faits décapités par les barres de bords de route en se crachant contre elles ? Des gars sous stéroïdes peut-être&#8230; Combien chez les voitures ? Pas beaucoup non plus je pense&#8230;<br />
Ne pensez-vous pas qu&#8217;il y a un problème à vous prendre pour un vélo avec un moteur de voiture ? A moins que vous vous preniez pour une voiture avec des protections de vélo ?</p>
<p>Enfin, car tel le clopeur il fallait que votre petite manie fasse même souffrir tout le monde aux alentours et pas simplement les usagers de la route, la mob est le créateur de bruit le plus important qu&#8217;il m&#8217;ai été donné de juger, AVANT les bébés et gamins avec un sifflet, AVANT les camions, AVANT les alarmes anti-incendie, AVANT les travaux à côté de chez moi.<br />
Mais comment pouvez-vous supporter un tel vacarme ? Le moteur strident et aigu à un milliard de décibels avec effet doppler m&#8217;arrache mes oreilles de piéton à chacun de vos passages.<br />
Une voiture démarre ? Ca fait un vroum et c&#8217;est fini. Une moto démarre ? Pendant que monsieur mets ses gants, cet engin reste super bruyant sous mes fenêtres.<br />
Et ceci exclus encore les casse couilles fiers de l&#8217;être qui font tourner leur accélérateur juste pour entendre leur moteur rugir.<br />
Vous faite du tapage nocturne, vous faites du tapage diurne. Vous êtes des casse couilles !</p>
<h3>Moi, c&#8217;est mieux.</h3>
<p>Charité bien établie commence par soit-même : j&#8217;utilise constamment le vélo. Est ce que je demande des droits particuliers pour le faire ? Certains le font, pas moi.</p>
<p>Les vélos peuvent être de sacrés casse couilles. Ils peuvent rouler à toute blinde sur les trottoirs justifiant que la route est dangereuse pour eux. Ils n&#8217;ont pas le droit. Arrêtez-les et engueulez-les. Si la route est trop dangereuse pour eux, qu&#8217;ils ne prennent pas le vélo !<br />
Sur le trottoir, je me permets, le moins souvent possible, de rouler (au lieu de marcher en tenant mon vélo comme je devrais), dans des cas particuliers, et reviens sur la route à tout croisement de piétons. Il faut rouler au plus au bord des trottoirs, pour s&#8217;éloigner au maximum des portes d&#8217;où peuvent sortir à tout moment des gens. Il faut rouler lentement ! Je suis en tort et je le sais.</p>
<p>Le vélo sur la route, de par sa terrifiante lenteur, ennuie fortement les voitures. C&#8217;est normal. Personnellement, je n&#8217;hésite pas à me ranger sur une place vide pour laisser passer les voitures, comme le ferai un (bon) conducteur de tracteur sur une départementale.<br />
C&#8217;est une question de savoir-vivre.</p>
<p>Enfin je n&#8217;utilise pas ma sonnette pour dire aux gens de dégager comme le font beaucoup d&#8217;autre. Non mais il se prends pour quoi ? Tu es un vélo, tu es maniable. Sonnette pourquoi pas dans des moments particuliers, mais <em>ne demande pas à ce qu&#8217;on fasse spécialement attention à toi</em> !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/40-jaime-pas-les-casses-couilles/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The 1468456th PHP class that overloads mysql</title>
		<link>http://blog.salagir.com/43-the-1468456th-php-class-that-overloads-mysql/</link>
		<comments>http://blog.salagir.com/43-the-1468456th-php-class-that-overloads-mysql/#comments</comments>
		<pubDate>Fri, 15 Aug 2008 16:26:06 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[My useful scripts]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/?p=43</guid>
		<description><![CDATA[My first code is totally uninteresting for real developers, but I will use this class often in my next scripts, so you need to know a little about this class.
Plus, it&#8217;s certainly a rip-off of PHP 5 mysql class, but well, I still use 4.
It still can do a few good things.

Good display of errors.
Use [...]]]></description>
			<content:encoded><![CDATA[<p>My first code is totally uninteresting for real developers, but I will use this class often in my next scripts, so you need to know a little about this class.</p>
<p>Plus, it&#8217;s certainly a rip-off of PHP 5 mysql class, but well, I still use 4.</p>
<p>It still can do a few good things.</p>
<ul>
<li>Good display of errors.</li>
<li>Use easily Transactions (a great feature of mysql, on innoDB tables only)</li>
<li>Usable thru an instance, or not</li>
</ul>
<p>Exemple of use :</p>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #0000ff;">$SQL</span> = <span style="color: #000000; font-weight: bold;">new</span> sqlQueries<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// one element directly</span>
<span style="color: #000066;">echo</span> <span style="color: #0000ff;">$SQL</span>-&gt;<span style="color: #006600;">query2cell</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;SELECT firstname FROM persons WHERE id=$id LIMIT 1&quot;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// loop on result</span>
<span style="color: #b1b100;">foreach</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$SQL</span>-&gt;<span style="color: #006600;">query2assoc</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;SELECT * FROM smalltable&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">as</span> <span style="color: #0000ff;">$element</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #000066;">echo</span> <span style="color: #ff0000;">&quot;&lt;p&gt;$element[champ1]: &lt;code&gt;$element[champ2] ($element[champ3])&lt;/p&gt;&quot;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">// one-liner !</span>
<span style="color: #000066;">echo</span> <span style="color: #ff0000;">&quot;Ids: &quot;</span>.<span style="color: #000066;">implode</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;, &quot;</span>, <span style="color: #0000ff;">$SQL</span>-&gt;<span style="color: #006600;">query2list</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;SELECT id FROM table WHERE $conditions&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// escaping (you of course disabled this horrible magic quotes thing)</span>
<span style="color: #0000ff;">$name</span> = <span style="color: #0000ff;">$SQL</span>-&gt;<span style="color: #006600;">e</span><span style="color: #66cc66;">&#40;</span> <span style="color: #0000ff;">$_REQUEST</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'name'</span><span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// take no risks : if the 1st query miss, the 2nd wont do anything.</span>
<span style="color: #808080; font-style: italic;">// and even: vice versa.</span>
<span style="color: #0000ff;">$SQL</span>-&gt;<span style="color: #006600;">tr_begin</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0000ff;">$SQL</span>-&gt;<span style="color: #006600;">query</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;UPDATE persons SET name='$name' WHERE id=$id&quot;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0000ff;">$SQL</span>-&gt;<span style="color: #006600;">query</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;INSERT INTO actions (type, infos) VALUES('changename', '$id -&gt; $name')&quot;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0000ff;">$SQL</span>-&gt;<span style="color: #006600;">tr_end</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>Change the constructor code as you with. Usually, I delete it and make mysql_connect() elsewhere.</p>
<p>Download code of version 0.95 here :</p>
<ul>
<li><s>sqlQueries Gzippé</s> (nope. Apache try to execute it)</li>
<li><a href="/upload/sqlQueries.php.zip">sqlQueries Zipped</a></li>
<li><a href="/upload/sqlQueries.php.html">see sqlQueries online</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/43-the-1468456th-php-class-that-overloads-mysql/feed/</wfw:commentRss>
		</item>
		<item>
		<title>D&#8217;où vient mon pseudonyme</title>
		<link>http://blog.salagir.com/38-dou-vient-mon-pseudonyme/</link>
		<comments>http://blog.salagir.com/38-dou-vient-mon-pseudonyme/#comments</comments>
		<pubDate>Fri, 08 Aug 2008 19:59:44 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/fr/?p=38</guid>
		<description><![CDATA[Mon très vieux site hébergé sur Free n&#8217;est pas ami avec Google. En effet aucune de ses pages n&#8217;est référencé, ce qui personnellement me navre.
Je vais donc updater et passer quelques-uns de mes écrit dessus, ici.
On m&#8217;a souvent demandé d&#8217;où venait mon pseudo. Voici l&#8217;explication.
Quand vous me demanderez, je vous forwarderai lâchement vers cette page.
En [...]]]></description>
			<content:encoded><![CDATA[<p><em>Mon très vieux site hébergé sur Free n&#8217;est pas ami avec Google. En effet aucune de ses pages n&#8217;est référencé, ce qui personnellement me navre.<br />
Je vais donc updater et passer quelques-uns de mes écrit dessus, ici.</em></p>
<p>On m&#8217;a souvent demandé d&#8217;où venait mon pseudo. Voici l&#8217;explication.<br />
Quand vous me demanderez, je vous forwarderai lâchement vers cette page.</p>
<p>En préambule, parce que beaucoup de gens font l&#8217;erreur, <strong>Salagir</strong> se prononce &#8220;Salagir&#8221;. Pas &#8220;Salaguir&#8221;</p>
<p>Il y a bien longtemps, alors que j&#8217;étais jeune et innocent, que je n&#8217;étais même pas encore perverti par Unix, Windows, et même Dragon Ball&#8230; en bref avant mes 10 ans, j&#8217;avais déjà en moi le démon de la BD, et je dessinais (mal) des BDs.</p>
<p>Ma première BD, début d&#8217;une longue saga, avait pour personnage principal, un truc rond et bleu clair, avec trois pattes telles des fils de fer. Ainsi je n&#8217;aurai aucune difficulté à le faire durant des centaines de pages. N&#8217;était-ce pas bien pensé ?</p>
<p>Ce héros s&#8217;appelait Glouton Hizmé. Ce nom de merde est du au fait que le personnage ayant pour corps rien d&#8217;autre qu&#8217;une bouche et des yeux, ce serait un gros goinfre, donc glouton. Et chaque personnage s&#8217;appellerait Glouton Kekchose, comme les Schtroumpfs.</p>
<p>Et pourquoi hizmé ? Parce que dans une BD (<em>Les observateurs de la Terre</em>, que je conseille à tous), à un moment on voit des Enzymes Gloutons en action, et ce n&#8217;étaient que des têtes, tels des Pacman, qui ressemblaient quand même un max aux Gloutons à moi ! De fils en aiguilles j&#8217;ai transformé enzyme en hizmé qui sonne vachement mieux.</p>
<p align="center">Voici des images totalement exclusives. Il s&#8217;agit en effet de <strong>ma toute première BD</strong>. Je l&#8217;évalue à mes 7 ans.<br />
<small>Note à ceux qui font attention : oui, la dernière bulle est fausse. Et j&#8217;ai du, à la page suivante, corriger le personnage qui aurait du dire &#8220;blanche&#8221;</small><br />
<img src="/upload/glouton-hizme-extrait.png" /> <a href="/upload/glouton-hizme.png"><img src="/upload/glouton-hizme.jpg" /></a></p>
<p><img src="/upload/glouton-hizme-journal.gif" align="left" /> <img src="/upload/glouton-hizme-3D.jpg" align="right" /> J&#8217;ai utilisé le nom de ce personnage aussi comme le nom d&#8217;un journal amateur que j&#8217;ai fait seul durant plusieurs années, qui n&#8217;a pas profité à plus de 10 ou 15 lecteurs, famille principalement.<br />
Le journal glouton hizmé etait mensuel et faisait 4 puis 6 pages.<br />
Image à gauche : découvrant l&#8217;ordinateur, j&#8217;ai dessiné Hizmé à nouveau, ainsi qu&#8217;en 3D (vive la sphère ovale)</p>
<p>Lorsque, au lycée, je découvrais les joies d&#8217;internet, j&#8217;ai fais un site sur <em>chez.com</em>, et mon login fut alors hizme (sans le é), bref, c&#8217;était mon pseudo.<br />
Je pensais que ce nom étant inventé, personne d&#8217;autre ne l&#8217;aurai, et un jour, je l&#8217;ai vérifié sur un moteur de recherche. Et la, stupéfaction : le mot existe dans je ne sais quelle langue, c&#8217;est aussi un nom de famille, et même de ville !</p>
<p>C&#8217;est pourquoi j&#8217;ai décidé de changer de pseudo. J&#8217;ai regardé mon classeur qui contenait les dessins et les noms de tous mes personnages. Et là, les méchants : ce sont des créatures noires créées par la dissolution d&#8217;un être très puissant. Elles s&#8217;appellent Rajores, Idrogear, Serojar&#8230; et l&#8217;être en question s&#8217;appelle&#8230;. Salagir !</p>
<p align="center">Voici ce Salagir. Le méchant qui combattait Hizmé était Rajores, celui en haut à gauche de la liste, que vous verrez en cliquant sur l&#8217;image.<br />
<a href="/upload/salagirs2.png"><img src="/upload/salagirs.png" /></a></p>
<p>Salagir est-il toujours dans mon esprit ce personnage tout noir ? Plus vraiment, vous en saurez plus sur la rediffusion d&#8217;un autre de mes articles ;)</p>
<p>Petite vérification sur le net : Salagir n&#8217;existe pas, et ce pour tous les moteurs de recherches. Parfait.</p>
<p>Maintenant, lorsque vous cherchez salagir sur le net, vous ne pouvez tomber que sur <strong>MOI</strong> !!!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/38-dou-vient-mon-pseudonyme/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Convertir du HTML en BBcode</title>
		<link>http://blog.salagir.com/37-convertir-du-html-en-bbcode/</link>
		<comments>http://blog.salagir.com/37-convertir-du-html-en-bbcode/#comments</comments>
		<pubDate>Tue, 29 Jul 2008 12:54:52 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Mes scripts utiles]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/fr/?p=37</guid>
		<description><![CDATA[Le BBcode est la syntaxe utilisée dans phpBB et d&#8217;autres sites contenant des formulaires d&#8217;édition, grâce à sa syntaxe claire et intuitive, contrairement à cette putain d&#8217;écriture de wiki de mes deux tentacules.
Si comme ça m&#8217;est arrivé, vous voulez écrire dans un post de forum le contenu d&#8217;une page HTML, ce script en Perl est [...]]]></description>
			<content:encoded><![CDATA[<p>Le BBcode est la syntaxe utilisée dans phpBB et d&#8217;autres sites contenant des formulaires d&#8217;édition, grâce à sa syntaxe claire et intuitive, contrairement à cette putain d&#8217;écriture de wiki de mes deux tentacules.</p>
<p>Si comme ça m&#8217;est arrivé, vous voulez écrire dans un post de forum le contenu d&#8217;une page HTML, ce script en Perl est pour vous.<br />
Il prends un fichier HTML en entrée, et pond un fichier texte contenant la syntaxe BB.<br />
Il ne vous reste plus qu&#8217;à la copier dans un post.</p>
<p>J&#8217;ai fais ce script, en 2005, simplement parce que j&#8217;en ai trouvé aucun le faisant aussi bien (c&#8217;était pourtant pas très dur).</p>
<p>Je ne serai trop vous conseiller, pour son utilisation, d&#8217;avoir un code html plutôt <strong>valide</strong>&#8230;</p>
<p><strong>Exemple :</strong><br />
Fichier test.html :</p>
<pre class="HTML">&lt;p>Fait &lt;b>beau&lt;/b> aujourd'hui!!&lt;br />
Grave...&lt;/p>
&lt;p>Grave beau !&lt;/p></pre>
<p>Exécution :</p>
<pre class="BASH">$ perl html2bbcode.pl test.html</pre>
<p>Fichier résultant test.bb :</p>
<pre class="BB">Fait [b]beau[/b] aujourd'hui!!
Grave...

Grave beau !</pre>
<p>Vous pouvez télécharger le code :</p>
<ul>
<li><a href="/upload/html2bbcode.pl">html2bbcode.pl</a></li>
<li><a href="/upload/html2bbcode.pl.zip">html2bbcode.pl Zippé</a></li>
<li><a href="/upload/html2bbcode.pl.html">voir html2bbcode.pl en ligne</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/37-convertir-du-html-en-bbcode/feed/</wfw:commentRss>
		</item>
		<item>
		<title>English version</title>
		<link>http://blog.salagir.com/42-english-version/</link>
		<comments>http://blog.salagir.com/42-english-version/#comments</comments>
		<pubDate>Mon, 28 Jul 2008 10:21:14 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Miscellaneous]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/fr/?p=42</guid>
		<description><![CDATA[English blog, opened !
And it&#8217;s post number 42, which is cool.
My blog needed an english version, because I put my scripts here, and it would be too sad if only french people used them.
I won&#8217;t translate my others posts thought, for the most part because I&#8217;m lazy.
Anticipate about one post every month or two months.
]]></description>
			<content:encoded><![CDATA[<p>English blog, opened !<br />
And it&#8217;s post number 42, which is cool.</p>
<p>My blog needed an english version, because I put my scripts here, and it would be too sad if only french people used them.</p>
<p>I won&#8217;t translate my others posts thought, for the most part because I&#8217;m lazy.</p>
<p>Anticipate about one post every month or two months.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/42-english-version/feed/</wfw:commentRss>
		</item>
		<item>
		<title>J&#8217;aime pas ça, il faut que le monde le sache ! (part 2)</title>
		<link>http://blog.salagir.com/35-jaime-pas-ca-il-faut-que-le-monde-le-sache-part-2/</link>
		<comments>http://blog.salagir.com/35-jaime-pas-ca-il-faut-que-le-monde-le-sache-part-2/#comments</comments>
		<pubDate>Thu, 17 Jul 2008 06:56:04 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Ca ne va pas du tout !]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/fr/?p=35</guid>
		<description><![CDATA[La suite des -extrêmement passionnantes- choses qui m&#8217;ennuient.
Vu l&#8217;extrême succès de la précédente édition, je pense a m&#8217;ouvrir un compte myspace pour partager mes goûts si pertinents avec tous mes amis.
D&#8217;ailleurs à ce propos, je réponds à un commentaire de Mazzu, qui dit :
à ce propos, après avoir lu ton billet, je me disais que [...]]]></description>
			<content:encoded><![CDATA[<p>La suite des -extrêmement passionnantes- choses qui m&#8217;ennuient.</p>
<p>Vu l&#8217;extrême succès de la précédente édition, je pense a m&#8217;ouvrir un compte myspace pour partager mes goûts si pertinents avec tous mes amis.</p>
<p>D&#8217;ailleurs à ce propos, je réponds à un commentaire de Mazzu, qui dit :<br />
<em>à ce propos, après avoir lu ton billet, je me disais que tu étais vraiment pas quelqu&#8217;un de trop contrariant vu qu&#8217;il n&#8217;y a pas beaucoup de choses que tu n&#8217;aimes pas</em><br />
En fait, je ne cite pas ce que tout le monde n&#8217;aime pas aussi, genre &#8220;J&#8217;aime pas me coincer le doigt dans une porte&#8221;, ni les trucs classiques comme &#8220;J&#8217;aime pas les légumes verts&#8221;. Je garde ici ce qui me semble sortir de l&#8217;ordinaire.</p>
<p>J&#8217;aime pas&#8230;</p>
<h3>Les  polices de caractères avec des lettres visuellement identiques</h3>
<p>Vous l&#8217;avez tous vu. Dans certaines fonts, le chiffre 1 (un), la lettre l (entre k et m) et le I (i majuscule) peuvent être dessiné de façon totalement identique !</p>
<p>C&#8217;est totalement stupide, particulièrement dans le recopiage de password&#8230;</p>
<h3>Les polices avec les chiffres qui sont plus haut et plus bas que ce qu&#8217;il faut pour déconner</h3>
<p><img src="/upload/fonts-chiffres.png" alt="Exemples de font" style="float:left; margin-right: 5px" /><br />
Au première abord, c&#8217;est une écriture tout à fait normale, et soudainement, il y a un chiffre, et il est décalé vers le bas !?</p>
<p>Pouvez pas écrire normalement non ? Le 9 n&#8217;est pas un &#8220;g&#8221; !</p>
<h3>Le noir complet</h3>
<p>Je n&#8217;ai pas peur du noir. Mais en tant qu&#8217;humain, j&#8217;ai ce défaut de ne pas voir sans lumière.</p>
<p>Dans un noir réellement complet, je m&#8217;explose contre les murs, les meubles, et tous ces objets qui se sont mis sur ma route pendant que je dormais, pour me piéger lorsque j&#8217;ai besoin d&#8217;aller au toilettes la nuit.<br />
(et le chat se fout de ma gueule)<br />
((c&#8217;est peut-être lui qui a déplacé les objets))</p>
<p>Lorsque je dors ailleurs que chez moi, chez des amis ou à l&#8217;hôtel, un couloir et une chambre totalement obscurs peuvent rendre mes déplacements très très lents.</p>
<h3>Les appareils qui s&#8217;allument quand on allume la lumière et qui font &#8220;vvvvvv&#8221;</h3>
<p>Après avoir réussi à me déplacer sans encombre en pleine nuit dans la salle de bain, j&#8217;allume la lumière, parce que là, j&#8217;ai le droit, sauf si des gens dorment dans la salle de bain (ça arrive).<br />
Et là, horreur, un climatiseur ou autre se déclenche avec la lumière (ils aiment bien), et un ventilo commence son vrombissement.</p>
<p>J&#8217;en fini quelques fois par m&#8217;en sortir dans le noir (pas complet) histoire de ne réveiller personne par ce bruit.</p>
<h3>Le parmesan</h3>
<p>Ce fromage est visible particulièrement comme accompagnement de tout dans les restaux italiens (pâtes, lasagne, salade, boule de glace)</p>
<p>Je suis un grand fan de fromage dans mes plats. Énormément. Si celui-ci est <em>fondu</em> ! Par exemple, je trouve fort dommage le fromage grillé. Transformer en carbone cette denrée !!&#8230;</p>
<p>Mais bref. Le parmesan, lui ne fond pas. Ou plutôt, quand on le met sur notre plat, jamais il ne fond. On mange donc avec les pâtes de la poudre de fromage au lieu du fromage fondu, et ça, c&#8217;est nul.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/35-jaime-pas-ca-il-faut-que-le-monde-le-sache-part-2/feed/</wfw:commentRss>
		</item>
		<item>
		<title>J&#8217;aime pas ça, il faut que le monde le sache ! (part 1)</title>
		<link>http://blog.salagir.com/25-jaime-pas-ca-il-faut-que-le-monde-le-sache-part-1/</link>
		<comments>http://blog.salagir.com/25-jaime-pas-ca-il-faut-que-le-monde-le-sache-part-1/#comments</comments>
		<pubDate>Sat, 05 Jul 2008 14:55:56 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Ca ne va pas du tout !]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/fr/?p=25</guid>
		<description><![CDATA[Puisque ceci est un blog, il est temps que je parle de moi.
Il y a des choses que je n&#8217;aime pas en ce monde, sûrement souvent pour de mauvaises raisons.
Je vous invite a confirmer ou infirmer mes raisons à chaque sujet.
Il n&#8217;empeche, j&#8217;aime pas&#8230;
Les DVDs de films uniques, numérotés parce qu&#8217;ils sont dans une collection
Exemple, [...]]]></description>
			<content:encoded><![CDATA[<p>Puisque ceci est un blog, il est temps que je parle de moi.<br />
Il y a des choses que je n&#8217;aime pas en ce monde, sûrement souvent pour de mauvaises raisons.</p>
<p>Je vous invite a confirmer ou infirmer mes raisons à chaque sujet.</p>
<p>Il n&#8217;empeche, j&#8217;aime pas&#8230;</p>
<h3>Les DVDs de films uniques, numérotés parce qu&#8217;ils sont dans une collection</h3>
<p>Exemple, les DVDs n&#8217;ont en commun qu&#8217;un producteur ou le fait d&#8217;être dans une collection &#8220;enfants&#8221;.<br />
Numéroter les films Ghiblis&#8230; n&#8217;a aucun sens pour moi !</p>
<p>Après, les tranches sont moches, donnent l&#8217;impression qu&#8217;on manque de films (ce doit être le but)&#8230;</p>
<h3>Les collectors</h3>
<p>Payer plus cher un truc qui est rarement de meilleur qualité et estanpillé &#8220;collector&#8221;, beurk !</p>
<p>Une boîte souvent énorme et avec peu d&#8217;intérêt, posant en plus un problème&#8230;<br />
Lorsque l&#8217;objet fait justement parti d&#8217;une collection&#8230; Cela fait alors bien désordre dans les étagères.</p>
<h3>Les gens dans leurs voitures à l&#8217;arrêt</h3>
<p>Une voiture avec quelqu&#8217;un dedans, ça doit rouler ! On peut dans des cas extrêmes attendre quelqu&#8217;un dans sa voiture et passer pour une voiture parquée. Mais je croise (souvent en vélo) de bien trop nombreuses voitures, garées, avec des gens dedans.</p>
<p>Qu&#8217;est ce que vous faites là !?</p>
<p>Le problème c&#8217;est que en vélo je ne vois aucun humain, et subitement, passant à côté d&#8217;une voiture, j&#8217;entends parler, ce qui me perturbe.<br />
Faut par perturber un cycliste sur la route.</p>
<h3>Les voitures qui servent de vide-grenier</h3>
<p>Je suis maniaque et méticuleux, mais je n&#8217;oblige personne à en faire autant.</p>
<p>Par contre, souvent en montant dans une voiture, je dois déplacer des objets divers sur mon chemin, laissés là par le propriétaire, qui voit sûrement plus sa voiture comme une extension de son armoire que comme un moyen de transport.</p>
<p>On peut trouver : des sacs plastiques, des bouteilles d&#8217;eau, des peluches, des magasines, une couverture. Ce sont les plus courants, mais ensuite, chacun aura ses propres objets surprises.</p>
<p>On arrive vite dans ces cas également à des coffres toujours pleins.</p>
<h3>Les gens qui traversent en diagonale pas optimisé</h3>
<p>Voyez le tableau, dans un croisement, vous devez aller à l&#8217;opposer, c&#8217;est à dire traverser deux fois.<br />
Vu que dans ce genre de cas, il y a de grandes chances que l&#8217;un des deux sens soit vert pour moi, je choisi ce sens puis j&#8217;attends le changement de sens pour traverser à nouveau.</p>
<p>Il y a des gens qui ne font pas ça. Il s&#8217;arrêtent droit devant eux et attendent que leur pieton en face passe au vert même si celui d&#8217;à côté l&#8217;est déjà. Alors ils attendent, traversent, et forcément, attendent de nouveau pour traverser dans l&#8217;autre direction, puisque ils sont au début de son feu rouge.</p>
<p>Ceci n&#8217;est pas optimisé !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/25-jaime-pas-ca-il-faut-que-le-monde-le-sache-part-1/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Fonction temporelles: Affichage, barre d&#8217;avancement.</title>
		<link>http://blog.salagir.com/34-fonction-temporelles-affichage-barre-davancement/</link>
		<comments>http://blog.salagir.com/34-fonction-temporelles-affichage-barre-davancement/#comments</comments>
		<pubDate>Wed, 25 Jun 2008 16:15:20 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Mes scripts utiles]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/fr/34-fonction-temporelles-affichage-barre-davancement/</guid>
		<description><![CDATA[Ecrire du temps de façon confortable pour les humains. Voilà qui est intéressant.
En effet qui veut lire &#8220;Il reste 0h 00mn 18s&#8221; à la fin d&#8217;un décompte qui a commencé il y a une heure ?
Là où strftime() faisait l&#8217;affaire, de jolies améliorations sont possibles.
En gros, quand un temps dépasse l&#8217;heure, j&#8217;ecris le nombre d&#8217;heures, [...]]]></description>
			<content:encoded><![CDATA[<p>Ecrire du temps de façon confortable pour les humains. Voilà qui est intéressant.<br />
En effet qui veut lire &#8220;Il reste 0h 00mn 18s&#8221; à la fin d&#8217;un décompte qui a commencé il y a une heure ?</p>
<p>Là où strftime() faisait l&#8217;affaire, de jolies améliorations sont possibles.<br />
En gros, quand un temps dépasse l&#8217;heure, j&#8217;ecris le nombre d&#8217;heures, mais sinon, je n&#8217;écris pas &#8220;0 heures&#8221;. Et cela vaut pour chaque unité.</p>
<p>J&#8217;ai fini par garder sur moi deux fonctions d&#8217;affichages de temps.<br />
J&#8217;ai fais deux fonctions pour les rendres plus lisibles. Elles sont fusionnable, mais je n&#8217;avais pas envie qu&#8217;elles soient bordéliques. De plus, je n&#8217;utilise chacune d&#8217;entre elle que sur un seul site.</p>
<h3>Ecrire le temps en plusieurs langues</h3>
<p>Là mes amis : deux solutions. Soit vous utilisez date() ou strftime() et vous faites confiance aux locales installées, ainsi qu&#8217;à votre programme PHP pour utiliser la bonne.<br />
Soit vous utilisez cette fonction, qui marchera partout sans se soucier des locales, MAIS limitées en nombre de langues assurément (vous pouvez en ajouter à l&#8217;envie).</p>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #808080; font-style: italic;">//! Ecrit un temps, multilangue ($lg = 'fr|en|es|it')</span>
<span style="color: #000000; font-weight: bold;">function</span> write_temps_internationnal<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$secondes</span>, <span style="color: #0000ff;">$lg</span>=<span style="color: #ff0000;">'fr'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #000066;">static</span> <span style="color: #0000ff;">$trads</span> = <span style="color: #000066;">array</span><span style="color: #66cc66;">&#40;</span>
            <span style="color: #ff0000;">'s'</span> =&gt; <span style="color: #000066;">array</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'fr'</span>=&gt;<span style="color: #ff0000;">'secondes'</span>,  <span style="color: #ff0000;">'en'</span>=&gt;<span style="color: #ff0000;">'seconds'</span>, <span style="color: #ff0000;">'it'</span>=&gt;<span style="color: #ff0000;">'secunde'</span>, <span style="color: #ff0000;">'es'</span>=&gt;<span style="color: #ff0000;">'segundos'</span><span style="color: #66cc66;">&#41;</span>,
            <span style="color: #ff0000;">'ms'</span>=&gt; <span style="color: #000066;">array</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'fr'</span>=&gt;<span style="color: #ff0000;">'%Mmn, %Ss'</span>, <span style="color: #ff0000;">'en'</span>=&gt;<span style="color: #ff0000;">'%Mmn, %Ss'</span>, <span style="color: #ff0000;">'it'</span>=&gt;<span style="color: #ff0000;">'%Mmn, %Ss'</span>, <span style="color: #ff0000;">'es'</span>=&gt;<span style="color: #ff0000;">'%Mm., %Ss.'</span><span style="color: #66cc66;">&#41;</span>,
            <span style="color: #ff0000;">'h'</span> =&gt; <span style="color: #000066;">array</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'fr'</span>=&gt;<span style="color: #ff0000;">'%kh, '</span>, <span style="color: #ff0000;">'en'</span>=&gt;<span style="color: #ff0000;">'%kh, '</span>, <span style="color: #ff0000;">'it'</span>=&gt;<span style="color: #ff0000;">'%kh'</span>, <span style="color: #ff0000;">'es'</span>=&gt;<span style="color: #ff0000;">'%kh.'</span><span style="color: #66cc66;">&#41;</span>,
            <span style="color: #ff0000;">'j'</span> =&gt; <span style="color: #000066;">array</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'fr'</span>=&gt;<span style="color: #ff0000;">'%e jours, '</span>, <span style="color: #ff0000;">'en'</span>=&gt;<span style="color: #ff0000;">'%e days, '</span>, <span style="color: #ff0000;">'it'</span>=&gt;<span style="color: #ff0000;">'%e giorni'</span>, <span style="color: #ff0000;">'es'</span>=&gt;<span style="color: #ff0000;">'%e dias'</span><span style="color: #66cc66;">&#41;</span>,
            <span style="color: #66cc66;">&#41;</span>;
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$secondes</span>&lt;<span style="color: #cc66cc;">60</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #0000ff;">$secondes</span>.<span style="color: #ff0000;">' '</span>.<span style="color: #0000ff;">$trads</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'s'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span><span style="color: #0000ff;">$lg</span><span style="color: #66cc66;">&#93;</span>;
    <span style="color: #66cc66;">&#125;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$secondes</span>&lt;<span style="color: #cc66cc;">3600</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #000066;">gmstrftime</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$trads</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'ms'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span><span style="color: #0000ff;">$lg</span><span style="color: #66cc66;">&#93;</span>, <span style="color: #0000ff;">$secondes</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #66cc66;">&#125;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$secondes</span>&lt;<span style="color: #cc66cc;">86400</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #000066;">gmstrftime</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$trads</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'h'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span><span style="color: #0000ff;">$lg</span><span style="color: #66cc66;">&#93;</span>.<span style="color: #0000ff;">$trads</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'ms'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span><span style="color: #0000ff;">$lg</span><span style="color: #66cc66;">&#93;</span>, <span style="color: #0000ff;">$secondes</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #66cc66;">&#125;</span>
    <span style="color: #808080; font-style: italic;">// + D'un jour: pb. En effet %e/%d donnent 1 jour de base puisque c'est le *1* janvier 1970</span>
    <span style="color: #808080; font-style: italic;">// Donc on enleve un jour puisqu'on compte du temps ici</span>
    <span style="color: #0000ff;">$secondes</span> -= <span style="color: #cc66cc;">86400</span>;
    <span style="color: #b1b100;">return</span> <span style="color: #000066;">gmstrftime</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$trads</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'j'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span><span style="color: #0000ff;">$lg</span><span style="color: #66cc66;">&#93;</span>.<span style="color: #0000ff;">$trads</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'h'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span><span style="color: #0000ff;">$lg</span><span style="color: #66cc66;">&#93;</span>.<span style="color: #0000ff;">$trads</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'ms'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span><span style="color: #0000ff;">$lg</span><span style="color: #66cc66;">&#93;</span>, <span style="color: #0000ff;">$secondes</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>Il n&#8217;y a pas de vérification de la langue parce que je la limite toujours quand je la récupère, en début de mes programmes.</p>
<h3>Ecrire le temps en l&#8217;arrondissant</h3>
<p>Cette version là permet d&#8217;être plus vague dans l&#8217;information temporelle. S&#8217;il reste 5 jours, 3h, 8min et 9 secondes, ça écrit juste &#8220;5 jours&#8221;. On reste sur l&#8217;essentiel.<br />
C&#8217;est pratique pour le jeu 2Fight.net, où je ne veux pas que les joueurs sachent à la seconde près quand tel événement sera fini.</p>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #808080; font-style: italic;">/** Affiche un temps ecrit joliment.
&nbsp;
  \param $secondes (int) nombre de secondes.
&nbsp;
  \param $detail peut être un booleen ou les strings suivant: 'h', 'mn',
  qui disent qu'on veut le détail à l'heure ou la minute. false est des fois trop évasif.
&nbsp;
  \return (string)
  */</span>
<span style="color: #000000; font-weight: bold;">function</span> write_temps<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$secondes</span>, <span style="color: #0000ff;">$detail</span>=<span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$secondes</span>&lt;<span style="color: #cc66cc;">60</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$detail</span>===<span style="color: #ff0000;">'h'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #ff0000;">&quot;moins d'une heure&quot;</span>;
        <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$detail</span>===<span style="color: #ff0000;">'mn'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #ff0000;">&quot;moins d'une minute&quot;</span>;
        <span style="color: #b1b100;">return</span> write_temps_sub<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$secondes</span>, <span style="color: #ff0000;">'seconde'</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #66cc66;">&#125;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$secondes</span>&lt;<span style="color: #cc66cc;">3600</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$detail</span>===<span style="color: #ff0000;">'h'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #ff0000;">&quot;moins d'une heure&quot;</span>;
        <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>!<span style="color: #0000ff;">$detail</span> or <span style="color: #0000ff;">$detail</span>===<span style="color: #ff0000;">'mn'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">return</span> write_temps_sub<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$secondes</span>/<span style="color: #cc66cc;">60</span>, <span style="color: #ff0000;">'minute'</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #b1b100;">return</span> <span style="color: #000066;">gmstrftime</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'%Mmn, %Ss'</span>, <span style="color: #0000ff;">$secondes</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #66cc66;">&#125;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$secondes</span>&lt;<span style="color: #cc66cc;">86400</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>!<span style="color: #0000ff;">$detail</span> or <span style="color: #0000ff;">$detail</span>===<span style="color: #ff0000;">'h'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">return</span> write_temps_sub<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$secondes</span>/<span style="color: #cc66cc;">3600</span>, <span style="color: #ff0000;">'heure'</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$detail</span>===<span style="color: #ff0000;">'mn'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #000066;">gmstrftime</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'%kh, %Mmn'</span>, <span style="color: #0000ff;">$secondes</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #b1b100;">return</span> <span style="color: #000066;">gmstrftime</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'%kh, %Mmn, %Ss'</span>, <span style="color: #0000ff;">$secondes</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #66cc66;">&#125;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>!<span style="color: #0000ff;">$detail</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #000066;">round</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$secondes</span>/<span style="color: #cc66cc;">86400</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #ff0000;">' jours'</span>;
    <span style="color: #808080; font-style: italic;">// Lorsqu'on a plus d'un jour arrivent des problèmes.</span>
    <span style="color: #808080; font-style: italic;">// En effet %e/%d donnent 1 jour de base puisque c'est le *1* janvier 1970.*</span>
    <span style="color: #808080; font-style: italic;">// Donc enlever un jour puisqu'on compte du temps ici</span>
    <span style="color: #0000ff;">$secondes</span> -= <span style="color: #cc66cc;">86400</span>;
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$detail</span>===<span style="color: #ff0000;">'mn'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #000066;">gmstrftime</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'%e jours, %kh, %Mmn'</span>, <span style="color: #0000ff;">$secondes</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$detail</span>===<span style="color: #ff0000;">'h'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #000066;">gmstrftime</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'%e jours et %kh'</span>, <span style="color: #0000ff;">$secondes</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #b1b100;">return</span> <span style="color: #000066;">gmstrftime</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'%e jours, %kh, %Mmn, %Ss'</span>, <span style="color: #0000ff;">$secondes</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #000000; font-weight: bold;">function</span> write_temps_sub<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$nbre</span>, <span style="color: #0000ff;">$quoi</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #0000ff;">$nbre</span> = <span style="color: #000066;">round</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$nbre</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$nbre</span>&gt;<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #0000ff;">$nbre</span>.<span style="color: #ff0000;">' '</span>.<span style="color: #0000ff;">$quoi</span>.<span style="color: #ff0000;">'s'</span>;
    <span style="color: #b1b100;">return</span> <span style="color: #0000ff;">$nbre</span>.<span style="color: #ff0000;">' '</span>.<span style="color: #0000ff;">$quoi</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>Maintenant que vous affichez un temps de toute beauté, je vous propose de passer à&#8230;</p>
<h3>La barre d&#8217;avancement</h3>
<p>Bon en fait ce n&#8217;est pas une barre. Dessiner un truc qui se remplit en faisant attention à la largeur de votre ligne de commande, très peu pour moi. Par contre, vous aurez droit à l&#8217;écriture du pourcentage d&#8217;avancement du script et le temps probable restant.</p>
<p>Cas simple : l&#8217;un de vos scripts doit tester 20 000 fois quelque chose. Vous voudriez savoir où il en est de temps en temps.<br />
Les plus habitués auront fait, à la fin de la boucle, le petit code classique suivant :</p>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #000066;">echo</span> <span style="color: #ff0000;">&quot;Avancement: &quot;</span>.<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">100</span>*<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$cpt</span>++<span style="color: #66cc66;">&#41;</span>/<span style="color: #cc66cc;">20000</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #ff0000;">&quot; % <span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>;</pre></div></div>

<p>Et bien moi c&#8217;est la même chose, en mieux.</p>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #808080; font-style: italic;">//! fonction géniale qui écrit l'avancement d'un process en temps et en pourcent.</span>
<span style="color: #808080; font-style: italic;">/** Au premier appel on donne le &quot;max&quot; qui est le nombre de fois que cette fonction sera appelée */</span>
<span style="color: #000000; font-weight: bold;">function</span> write_avancement<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$max</span>=<span style="color: #000000; font-weight: bold;">null</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #000066;">static</span> <span style="color: #0000ff;">$cpt</span>;
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$max</span>!==<span style="color: #000000; font-weight: bold;">null</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #0000ff;">$cpt</span> = <span style="color: #000066;">array</span><span style="color: #66cc66;">&#40;</span>
                <span style="color: #ff0000;">'debut'</span> =&gt; <span style="color: #000066;">time</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>,
                <span style="color: #ff0000;">'cpt'</span> =&gt; <span style="color: #cc66cc;">0</span>,
                <span style="color: #ff0000;">'max'</span> =&gt; <span style="color: #66cc66;">&#40;</span>int<span style="color: #66cc66;">&#41;</span> <span style="color: #0000ff;">$max</span>,
                <span style="color: #66cc66;">&#41;</span>;
    <span style="color: #66cc66;">&#125;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>!<span style="color: #0000ff;">$cpt</span><span style="color: #66cc66;">&#41;</span> <span style="color: #000066;">die</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>[write_avancement] Mauvais parametres.<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
    <span style="color: #0000ff;">$cpt</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'cpt'</span><span style="color: #66cc66;">&#93;</span>++;
    <span style="color: #0000ff;">$elapsed</span> = <span style="color: #000066;">time</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>-<span style="color: #0000ff;">$cpt</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'debut'</span><span style="color: #66cc66;">&#93;</span>;
    <span style="color: #0000ff;">$restant</span> = <span style="color: #000066;">round</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$cpt</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'max'</span><span style="color: #66cc66;">&#93;</span>*<span style="color: #0000ff;">$elapsed</span>/<span style="color: #0000ff;">$cpt</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'cpt'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span> - <span style="color: #0000ff;">$elapsed</span>;
    <span style="color: #0000ff;">$pourcent</span> = <span style="color: #000066;">round</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">100</span>*<span style="color: #0000ff;">$cpt</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'cpt'</span><span style="color: #66cc66;">&#93;</span>/<span style="color: #0000ff;">$cpt</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'max'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #000066;">echo</span> <span style="color: #ff0000;">&quot;  -+-  $pourcent%  -  Temps pris: &quot;</span>.
        write_temps<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$elapsed</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #ff0000;">&quot;  -  Temps restant: &quot;</span>.write_temps<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$restant</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #ff0000;">&quot;     <span style="color: #000099; font-weight: bold;">\r</span>&quot;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>Cette fonction est dépendante de write_temps(), donnée juste au-dessus.</p>
<p>Utilisation :</p>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #0000ff;">$max</span> = nombre_delements_a_regarder_ou_lignes_du_fichier<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
write_avancement<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$max</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// ceci n'ecrit rien</span>
<span style="color: #b1b100;">while</span> <span style="color: #66cc66;">&#40;</span> boucle_qui_regarde_chaque_element <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    tout_le_process<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
    write_avancement<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #000066;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>; <span style="color: #808080; font-style: italic;">// si vous ne voulez pas avoir votre prompt dans l'affichage de la &quot;barre&quot;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/34-fonction-temporelles-affichage-barre-davancement/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Recencer les erreurs 404</title>
		<link>http://blog.salagir.com/33-recencer-les-erreurs-404/</link>
		<comments>http://blog.salagir.com/33-recencer-les-erreurs-404/#comments</comments>
		<pubDate>Thu, 19 Jun 2008 21:34:53 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Mes scripts utiles]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/fr/33-recencer-les-erreurs-404/</guid>
		<description><![CDATA[Ca c&#8217;était un beau vide&#8230; Il faut dire que depuis la sortie de DBM, je n&#8217;ai pas eu beaucoup de temps de libre.
Alors voici vite fait, pendant que je le déplace d&#8217;un serveur à l&#8217;autre, un petit script qui fait ce que bien d&#8217;autres font.
Par exemple Awstats vous dira aussi les erreurs 404, mais d&#8217;un [...]]]></description>
			<content:encoded><![CDATA[<p>Ca c&#8217;était un beau vide&#8230; Il faut dire que depuis la sortie de <a href="http://www.dragonball-multiverse.com/">DBM</a>, je n&#8217;ai pas eu beaucoup de temps de libre.</p>
<p>Alors voici vite fait, pendant que je le déplace d&#8217;un serveur à l&#8217;autre, un petit script qui fait ce que bien d&#8217;autres font.<br />
Par exemple Awstats vous dira aussi les erreurs 404, mais d&#8217;un seul site à la fois.<br />
De même, il existe des vérificateurs de liens morts en ligne, comme le <a href="http://validator.w3.org/checklink">W3C Link Checker</a>.</p>
<p>Mais le miens travaille sur le serveur même, et trouve aussi les erreurs 404 du par exemple à un site externe qui pointerait bêtement vers une page à vous qui n&#8217;est pas là. Il vous fait aussi remarquer que les navigateurs cherchent souvent &#8220;/favicon.ico&#8221; sur vos sites&#8230;</p>
<p>Utilisation (ligne de commande) :</p>

<div class="wp_syntax"><div class="code"><pre class="bash">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> php parseLogApacheError.php
$ <span style="color: #c20cb9; font-weight: bold;">lynx</span> /tmp/errors404.inc.html</pre></div></div>

<p>Notez qu&#8217;il y a dans le code une version debug qui ecrit un pourcentage d&#8217;avancement du script. J&#8217;ai largement amélioré ce concept, cela fera l&#8217;objet d&#8217;un prochain post.</p>
<p>Vous pouvez télécharger le code :</p>
<ul>
<li><a href="/upload/parseLogApacheError.php.zip">parseLogApacheError Zippé</a></li>
<li><a href="/upload/parseLogApacheError.php.html">voir parseLogApacheError en ligne</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/33-recencer-les-erreurs-404/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Url rewriting est ton ami</title>
		<link>http://blog.salagir.com/32-url-rewriting-est-ton-ami/</link>
		<comments>http://blog.salagir.com/32-url-rewriting-est-ton-ami/#comments</comments>
		<pubDate>Sun, 27 Apr 2008 15:15:18 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Mes scripts utiles]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/fr/32-url-rewriting-est-ton-ami/</guid>
		<description><![CDATA[L&#8217;url rewriting, c&#8217;est l&#8217;art d&#8217;avoir un lien vers une page web qui soit lisible par des humains, et surtout des moteurs de recherche.
C&#8217;est très utilisé par les blogs, qui mettent le titre de l&#8217;article dans l&#8217;url.
Exemple :
Bon : http://toto.com/articles/mon-jeu-prefere-de-supernintendo.html
Mauvais :  http://toto.com/2007/article.php?id=684
On remarque que les accents sont aussi transformés, car une url avec accent, c&#8217;est [...]]]></description>
			<content:encoded><![CDATA[<p>L&#8217;url rewriting, c&#8217;est l&#8217;art d&#8217;avoir un lien vers une page web qui soit lisible par des humains, et surtout des moteurs de recherche.</p>
<p>C&#8217;est très utilisé par les blogs, qui mettent le titre de l&#8217;article dans l&#8217;url.</p>
<p>Exemple :<br />
<em>Bon </em>: http://toto.com/articles/mon-jeu-prefere-de-supernintendo.html<br />
<em>Mauvais </em>:  http://toto.com/2007/article.php?id=684</p>
<p>On remarque que les accents sont aussi transformés, car une url avec accent, c&#8217;est moche, en effet on ne voit pas l&#8217;accent mais son équivalent encodé, car oui, du point de vue d&#8217;une url, un accent c&#8217;est un caractère spécial.</p>
<p><em>Mauvais </em>: http://toto.com/articles/mon-jeu-pr%E9f%E9r%E9-de-supernintendo.html<br />
<em>Mauvais </em>: http://toto.com/articles/mon-jeu-prfr-de-supernintendo.html</p>
<p>Notez que certains mauvais algo virent tout simplement les accents, et on perd aussi le mot. Le problème se pose aussi avec une apostrophe :</p>
<p><em>Mauvais </em>:  http://toto.com/articles/sauvez-l%27oiseau.html<br />
<em>Mauvais </em>:  http://toto.com/articles/sauvez-loiseau.html<br />
<em>Bon </em>:  http://toto.com/articles/sauvez-l-oiseau.html</p>
<p>Il y a d&#8217;autres délires que j&#8217;ai vu comme des noms de page qui commencent ou finissent par des tirets (ce qui est moche)&#8230;</p>
<p>J&#8217;ai fais mon algo perso de rewriting, et je vous le donne. Utilisez-le bien.</p>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #808080; font-style: italic;">//! Transforme un texte en nom de fichier simple et lisible</span>
<span style="color: #000000; font-weight: bold;">function</span> text2filename<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$str</span>, <span style="color: #0000ff;">$spaceChar</span> = <span style="color: #ff0000;">'-'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #0000ff;">$str</span> = <span style="color: #000066;">preg_replace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'/[:;?!¡,~R()=%&quot;«»]/'</span>, <span style="color: #ff0000;">''</span>, <span style="color: #0000ff;">$str</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #0000ff;">$str</span> = <span style="color: #000066;">strtr</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$str</span>,
        <span style="color: #ff0000;">'äàáâãåÀÁÂÃÅÇçèéêëÈÉÊËìíîïÌÍÎÏÑñÒÓÔÕòóôõÙÚÛùúûÝýÿÐ'</span>,
        <span style="color: #ff0000;">'aaaaaaAAAAACceeeeEEEEiiiiIIIINnOOOOooooUUUuuuYyyD'</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #0000ff;">$str</span> = <span style="color: #000066;">str_replace</span><span style="color: #66cc66;">&#40;</span>
        <span style="color: #000066;">array</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Ä'</span>,<span style="color: #ff0000;">'Æ'</span>,<span style="color: #ff0000;">'æ'</span>,<span style="color: #ff0000;">'Ö'</span>,<span style="color: #ff0000;">'ö'</span>,<span style="color: #ff0000;">'ß'</span>,<span style="color: #ff0000;">'Ü'</span>,<span style="color: #ff0000;">'ü'</span><span style="color: #66cc66;">&#41;</span>,
        <span style="color: #000066;">array</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'AE'</span>,<span style="color: #ff0000;">'AE'</span>,<span style="color: #ff0000;">'ae'</span>,<span style="color: #ff0000;">'OE'</span>,<span style="color: #ff0000;">'oe'</span>,<span style="color: #ff0000;">'ss'</span>,<span style="color: #ff0000;">'UE'</span>,<span style="color: #ff0000;">'ue'</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #0000ff;">$str</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #0000ff;">$str</span> = <span style="color: #000066;">preg_replace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'/[ _<span style="color: #000099; font-weight: bold;">\'</span><span style="color: #000099; font-weight: bold;">\/</span>.-]+/'</span>, <span style="color: #0000ff;">$spaceChar</span>, <span style="color: #0000ff;">$str</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #0000ff;">$str</span> = <span style="color: #000066;">trim</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$str</span>, <span style="color: #0000ff;">$spaceChar</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #b1b100;">return</span> <span style="color: #000066;">strtolower</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$str</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/32-url-rewriting-est-ton-ami/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Mes choix dans mon Webcomic</title>
		<link>http://blog.salagir.com/31-mes-choix-dans-mon-webcomic/</link>
		<comments>http://blog.salagir.com/31-mes-choix-dans-mon-webcomic/#comments</comments>
		<pubDate>Sat, 12 Apr 2008 14:11:09 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/fr/31-mes-choix-dans-mon-webcomic/</guid>
		<description><![CDATA[Ici je vais dévoiler tous mes secrets. Suivez-les et vous ferez vous aussi une webcomic suivie par un million de lecteurs par jours (ou pas).
Comme je l&#8217;ai dis dans mon post précédent, je voulais pouvoir raconter tout ce qui me passe dans la tête dans ce webcomic. Mais j&#8217;ai quand même de nombreuses limitations que [...]]]></description>
			<content:encoded><![CDATA[<p>Ici je vais dévoiler tous mes secrets. Suivez-les et vous ferez vous aussi une webcomic suivie par un million de lecteurs par jours (ou pas).</p>
<p>Comme je l&#8217;ai dis dans mon post précédent, je voulais pouvoir raconter tout ce qui me passe dans la tête dans ce webcomic. Mais j&#8217;ai quand même de nombreuses limitations que je me pose moi-même, car je ne supporte pas les choses incohérentes et mal rangées, notez comme ceci est contradictoire avec ce que je viens de dire.</p>
<h3>Format</h3>
<p>Commençons par le plus intéressant ou presque. J&#8217;ai commencé le webcomic en &#8220;lignes&#8221; de 3 cases, suivant le principe de <a href="http://www.userfriendly.org/" target="_blank">User Friendly</a>. J&#8217;ai même fais un &#8220;dimanche&#8221; qui suivait le principe des comic strips américains, avec un header et deux lignes de cases. Mais très vite j&#8217;ai changé de format pour le laisser plus de liberté.</p>
<p>Le dessin de base est du noir et blanc. Cela permet de faire un encrage et puis c&#8217;est fini. Toute autre technique demande au moins une étape de plus.<br />
La colorisation, même à coups de pot de peinture abusifs, prends du temps, et souvent quand j&#8217;en fais, je ne peux m&#8217;empêcher de mettre quelques ombres. Il n&#8217;y a pas de différence entre la colorisation en couleurs et celle en niveaux de gris, si ce n&#8217;est que j&#8217;ai pas à choisir des couleurs et je suis très mauvais à cela, donc je préfère les niveaux de gris.</p>
<p>Certains utilisent des systèmes compliqués pour cacher le nom de l&#8217;image dans un dossier non listable, afin d&#8217;empêcher des leechers dans mon genre de les télécharger automatiquement. Je m&#8217;en fous mon programme est plus puissant que ça ;) Et en ce qui me concerne, je suis ravi qu&#8217;on télécharge tout mon strip. Il est donc dans un dossier listable, et son nom est simplement le numéro du strip.</p>
<p>Comme je suis taré, j&#8217;ai voulu séparer les strips spécifiquement &#8220;Geek&#8217;s World&#8221; et les autres (<a href="http://www.geeksworld.org/strip_82.html" target="_blank">Dragon Hell</a>, <a href="http://www.geeksworld.org/strip_554.html" target="_blank">Dead Sala Day</a>, ou autres&#8230;). J&#8217;ai donc commencé une double numérotation.<br />
Il m&#8217;arrive souvent d&#8217;hésiter fortement entre la rubrique &#8220;Misc&#8221;, &#8220;Fan Art&#8221; et &#8220;Geek&#8217;s World&#8221;  lorsque je fais un strip orienté jeu vidéo ou autre sans qu&#8217;on y voit les persos du strip. Le résultat est assez aléatoire.</p>
<p>J&#8217;ai dessiné sur papier tout au début, pour bien vite passer intégralement à la tablette graphique, comme <a href="http://www.dilbert.com/" target="_blank">Scott Adams</a> et <a href="http://comics.com/comics/chickweed/" target="_blank">Brooke McEldowney</a>. Je me ballade avec mon portable et ma tablette graphique, c&#8217;est plus efficace et prends moins de place qu&#8217;un scanner.</p>
<h3>Les personnages</h3>
<p>Pour moi, les personnages sont bien plus important que le scénario ou l&#8217;histoire générale. Cela vaut particulièrement dans les feuilletons (les comics strip sont souvent des feuilletons, même les humoristiques : on suit les personnages et ils évoluent un peu) et autres sagas.</p>
<p>Lorsque j&#8217;ai écris mon scénario, je ne savais pas encore quels personnages allaient être dedans. J&#8217;ai d&#8217;abord cumulé pleins d&#8217;idées pour voir à quoi le strip ressemblerai. Une fois beaucoup d&#8217;idées, concepts et situations rassemblées, je savais un peu (mais juste un peu, comme vous verrez par la suite) ce que le strip serai, et allait donc pouvoir choisir mes personnages.</p>
<p>Deux d&#8217;entre eux étaient les plus évidents.<br />
Ray, car il venait de <a href="http://www.salagir.com/bd/rename/" target="_blank">ma BD précédente</a>. Personnage principal (voire unique) de la BD du journal de mon école d&#8217;informatique, il avait une bonne tête pour être le geek grasouillet, auquel j&#8217;ai ajouté une naïveté qui l&#8217;a carrément transformé en autisme inconscient du monde réel qui l&#8217;entoure.<br />
Puis Tom, dont le physique et le profil de compétences est basé sur Tom, l&#8217;ancien administrateur système de mon école, considéré comme demi-dieu par tous. Je l&#8217;ai bien sûr aussi modifié, l&#8217;ayant squelettisé pour faire le geek sous-alimenté qui vit devant un écran dans une cave. C&#8217;est avec le temps qu&#8217;il est également devenu super intelligent.</p>
<p>Ensuite, je voulais placer le personnage &#8220;maître du monde wanabee&#8221;. C&#8217;est à la base une copie de Pitr (UserFriendly), Tony (Real Life), et tous les autres joyeux personnages de ce genre, que j&#8217;aime beaucoup (rire machiavélique). Son design m&#8217;est vite venu : visage saillant, barbichette obligatoire (signe du méchant, comprenne qui pourra), sourrire carnassier, et yeux rouges brillants comme <a href="http://www.machall.com/view.php?date=2006-05-31" target="_blank">Drew de Mac Hall</a>.</p>
<p>Continuons. Il fallait une fille. Parce que j&#8217;allais devenir fou si je dessinais que des mecs (ce qui m&#8217;est déjà arrivé avec <a href="http://www.salachid.com/html/ced/" target="_blank">le C.E.D</a>), et parce que j&#8217;avais des idées de storylines avec un mec amoureux d&#8217;une fille qui s&#8217;en fout (original&#8230;).</p>
<p>Enfin, il fallait un dernier perso. Je savais que quatre ne serai pas assez pour plusieurs situations, et de plus il fallait un perso &#8220;normal&#8221; pour jouer le rôle du public face aux réactions délirantes des autres.</p>
<p>Chaque personnage cumule des attitudes, des défauts et des qualités que j&#8217;ai piqué d&#8217;autres BDs ou de mon entourage. Mais aucun personnage n&#8217;est &#8220;telle personne que je connais&#8221; ou moi.<br />
Sur beaucoup de points, je peux citer une influence certaine de X ou Y. Mais chaque perso est un cumul, inutile de dire &#8220;Ah ouai Ray c&#8217;est Maxime&#8221; (comprenne qui pourra).</p>
<p>Il n&#8217;y a donc, a part des apparitions uniques dans la partie blog-bd, aucune personne de ma connaissance représentée.</p>
<p>Les personnages secondaires sont arrivés souvent sur le moment. Ultimate Goodness était prévu dans le scénario de base et j&#8217;ai eu beaucoup de problèmes pour lui trouver une &#8220;forme de base&#8221;, que j&#8217;ai fini par garder sur l&#8217;ange. Black Ninja est arrivé pour faire un peu d&#8217;action&#8230; et faire des ninjas.<br />
Donut je voulais depuis longtemps, basé physiquement sur le scientifique de Jurassic Parc et un nerd de <a href="http://www.gpf-comics.com/">G.P.F.</a> , il joue le rôle du linux gourou qui illumine les gens sur son passage. Sa raison d&#8217;être se limite pratiquement au strip de son apparition.<br />
Firefox a presque été créé inutilement, car je ne trouve décidément pas de gags avec animal mignon.<br />
Tetrisman est mon préféré. Il est complètement taré, rôle qu&#8217;aucun des autres persos ne jouait, et il en fallait un. Dick aurai pu, ils se ressemblent pas mal en fait, sauf que l&#8217;un est méchant, l&#8217;autre gentil ;) De plus, il joue aussi le fan de tetris, le dessinateur de sprite comics, et celui d&#8217;un couple normal avec sa copine.</p>
<p>Les méchants qui ont été créé (même si Dick est méchant en fait) l&#8217;ont été pour des raisons scénaristiques. Le plus important quand on les fait est de leur donner de la classe, c&#8217;est utile pour donner du poids à leur actions.<br />
Par exemple il faut que BoB ait <em>vraiment </em>l&#8217;air totalement invincible. La MS Girl doit être très <em>evil</em>.</p>
<h3>Storyline</h3>
<p>Au début, je n&#8217;avais que des gags indépendants, entrecoupés de temps en temps par des storylines.</p>
<p>Avec ma storyline de plus d&#8217;un an sur les attaques de la W.C. et la fuite de la W.C., je m&#8217;en suis retrouvé à faire des sous-storylines. Un suivit aussi long n&#8217;est pas une bonne chose pour garder les nouveaux lecteurs, mais ca permet de continuer à accrocher les anciens lecteurs.</p>
<p>Les histoires ont pleins d&#8217;avantages.<br />
Déjà lorsque je n&#8217;ai pas de gag, je peux faire un strip &#8220;action&#8221;, qui satisfera également le lecteur. Pire il y a le strip suspens : finissez le strip par une révélation ou la promesse d&#8217;un futur évènement choquant, et le lecteur sera également content.</p>
<p>Ensuite, elles donnes des idées. En plaçant les personnages dans un train, dans une voiture, à la plage, etc. des idées me viennent. Les personnages et la situation étant bien déterminés, il arrive que l&#8217;histoire s&#8217;écrive d&#8217;elle-même. (<a href="http://www.geeksworld.org/strip_410.html" target="_blank">exemple</a>)</p>
<p>Enfin, c&#8217;est l&#8217;occasion pour moi de faire les délires que je veux et avancer le background de mes persos.</p>
<h3>Pourquoi je ne suis jamais en avance</h3>
<p>Lorsque je prends de l&#8217;avance, je la perds automatiquement dans les jours qui suivent, pour l&#8217;une des raisons suivantes :</p>
<ul>
<li>Soit je profite de mon &#8220;temps libre&#8221; pour avancer d&#8217;autres de <a href="http://www.salagir.com/" target="_blank">mes projets</a> pendant le temps que j&#8217;aurai pris à dessiner un strip la veille. Rarement je dessine un strip pour dans une semaine, alors que j&#8217;ai d&#8217;autres trucs en retard.</li>
<li>Soit, voyant que j&#8217;ai plus de temps devant moi, je prends plus de temps à faire le strip ! Cela peut être ajouter de la couleur, voire ajouter des cases ou les chiader beaucoup plus (décors, etc.)</li>
</ul>
<p>Donc toute avance que je prends, ce qui arrive parfois, est vite annulée.</p>
<p>Je dirai même plus, mes retards ont la tendence à ne jamais dépasser deux heures. Les lecteurs &#8220;de minuit&#8221; savent quand ils ne voient pas le strip qu&#8217;il a 50% de chances d&#8217;arriver à peu près à une heure du matin, et 40% d&#8217;arriver à 2 heures.<br />
Plus je suis à la bourre, et plus je bacle le strip, des fois j&#8217;échange de place des scénarios voire en invente un sur le moment, pour en faire un simple à exécuter.<br />
Alors arrivent des copier-collers plus nombreux, des positions de persos que je rate, laissées ratées, l&#8217;encrage arrache, etc.<br />
j&#8217;ai récemment testé le strip <a href="http://www.geeksworld.org/strip_597.html" target="_blank">non encré</a>, et cela n&#8217;a dérangé personne, j&#8217;en suis même déçu.</p>
<p>Bon, c&#8217;est tout ce que j&#8217;ai à dire pour le moment.</p>
<p>Edit 2009 : maintenant que tous les strips sont coloriés par Faye, les retards d&#8217;une heure sont absents. Soit je sais que je n&#8217;aurai pas le temps et je prépare le DSD, soit je suis totalement à l&#8217;ouest (souvent, vraie vie sur-bookée) et j&#8217;oublie la mise en ligne.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/31-mes-choix-dans-mon-webcomic/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Comment j&#8217;ai lancé mon Webcomic</title>
		<link>http://blog.salagir.com/26-comment-jai-lance-mon-webcomic/</link>
		<comments>http://blog.salagir.com/26-comment-jai-lance-mon-webcomic/#comments</comments>
		<pubDate>Fri, 28 Mar 2008 10:49:53 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/fr/26-comment-jai-lance-mon-webcomic/</guid>
		<description><![CDATA[Oui, vous êtes au courant quand même, que j&#8217;en fais un ? ;p
www.geeksworld.org
 Vu que ça intéresse pleins de monde (au moins deux personnes en tout cas), je vais ici tout vous dire sur ma vie mon webcomic, et les prémisses de sa création.
Pourquoi un webcomic ?
J&#8217;ai créé mon webcomic parce que j&#8217;adore dessiner des [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.geeksworld.org/imgs/logal.png" title="Le vieux logo" alt="Le vieux logo" align="left" height="111" width="120" />Oui, vous êtes au courant quand même, que j&#8217;en fais un ? ;p</p>
<p align="center"><a href="http://www.geeksworld.org/" title="Vous pouvier tout autant cliquer dans la liste à droite" target="_blank">www.geeksworld.org</a></p>
<p> Vu que ça intéresse pleins de monde (au moins deux personnes en tout cas), je vais ici tout vous dire sur <strike>ma vie</strike> mon webcomic, et les prémisses de sa création.</p>
<h3>Pourquoi un webcomic ?</h3>
<p>J&#8217;ai créé mon webcomic parce que j&#8217;adore dessiner des BDs. J&#8217;évalue ma première BD à mes sept ans.<br />
Avant Geeksworld, j&#8217;ai fais pleins d&#8217;autres sites dont certains contenaient déjà moultes BDs.<br />
J&#8217;ai pas arrêté d&#8217;en faire et si je ne faisais pas un webcomic aujourd&#8217;hui, il semble certain que je ferai une BD pour un fanzine ou d&#8217;autres trucs du genre.</p>
<p>Pendant mes études, long nirvana de 3 ans à jouer à StarCraft et perdre du temps sur internet, je lisais une dizaine de webcomics, ce qui m&#8217;a donné envie d&#8217;en faire bien sûr.<br />
Après, j&#8217;ai codé un téléchargeur automatique de webcomics avec visualisateur efficace, depuis je lis entre 80 et 100 webcomics, dont la plupart sont quotidiens (oui, le visualisateur est VRAIMENT efficace)</p>
<p>Bien sûr GsW est influencé par beaucoup d&#8217;entre eux, mais je suis pas sûr qu&#8217;il le soit plus que par mes lectures mangas et BDs (et Garfield!) : Dragon Ball, Gotlib, Léonard (si, si, le génie)</p>
<p>C&#8217;est &#8220;User Friendly&#8221; qui m&#8217;a inspiré pour lancer réellement le strip. Originellement, et ça se voit, je comptais pondre des suites de copier-coller des personnages où seul le texte aurait un intérêt.<br />
Donc User Friendly pour la réalisation, et tout et n&#8217;importe quoi pour le scénario (les éléments surnaturels apparaissent vite, ils étaient prévu dès le début), comme Sluggy Freelance, et Mégatokyo. Mais aussi des scénarios simples et cadrés dans un bureau comme PVP, Angst Technology (et pas User Friendly, les strips vraiment geeks, j&#8217;y arrive pas)&#8230;</p>
<p>Avec cette idée à la base, je pensais que ce strip me prendrai un temps limité, en gardant toujours de nombreux strips d&#8217;avance&#8230;</p>
<h3>Préparation</h3>
<p>Pour l&#8217;histoire et les idées, je les ai rassemblées et cumulées dès que j&#8217;ai décidé de faire un webcomic.<br />
Je n&#8217;ai d&#8217;abord pas pensé à des personnages précis mais à des situations et des gags, que j&#8217;ai rassemblé dans un fichier texte.<br />
C&#8217;est seulement un an plus tard que j&#8217;ai fais mon premier dessin dessus. J&#8217;avais alors un fichier de texte avec pleins d&#8217;idées et de scénarios, retouchés et améliorés. J&#8217;ai défini les persos et le scénario de base.</p>
<p>Comme je venais de finir mes études, mes persos ont commencé au même point que moi (cela faisait une suite logique à mes BD faites au <a href="http://www.salagir.com/bd/rename/" title="Mes BDs dans ReName">journal de l&#8217;école</a>, où Ray y était étudiant)</p>
<p>Comme tout auteur raisonnable, j&#8217;ai grabouillé quelques pages de test pour les personnages. Tom et Ray étaient les seuls à avoir un look défini, j&#8217;ai du faire pas mal de tests pour les autres, surtout pour Lina.</p>
<p>J&#8217;ai pris le nom de domaine plusieurs mois avant l&#8217;ouverture. Je n&#8217;ai rien mis dessus sinon <a href="http://web.archive.org/web/20040524020138/http://geeksworld.org/">un message plein d&#8217;amour</a>.</p>
<h3>Réalisation</h3>
<p>Comme dit plus haut, je comptais abuser à fond du copy-paste. Je n&#8217;imaginais pas pouvoir faire autrement, en fait, pour tenir de tels délais.</p>
<p>Mais au final, mon envie de dessiner, de faire des mises en scènes moins statiques ont pris le dessus, et l&#8217;histoire n&#8217;a simplement pas pu se contenter de dialogues. Chaque action demande une nouvelle case, je ne pouvais pas garder ces personnages immobiles :(<br />
Du coup faire 3 strips par semaine est devenu vachement moins couillon que prévu ! Et l&#8217;avance constante que je m&#8217;imaginais, poubelle. (oui je pensais me faire ces strips de copier coller par paquets de dix le week end&#8230;)</p>
<p>Mes premiers strips étaient sur papier puis scanné, et retouchés à l&#8217;ordinateur, mais dès que j&#8217;en ai eu l&#8217;occasion, je suis passé au full tablette graphique. J&#8217;ai donc déjà passé beaucoup de temps à m&#8217;habituer au stylet, mais par la suite, ce fut un grand gain de temps.</p>
<h3>Histoires à raconter : limitations</h3>
<p><img src="/upload/gsw_old_shot.jpg" align="left" height="493" width="405" />Aucune. C&#8217;était le principe de mon comic. Influencé par Sluggy Freelance, je savais que mes personnages pourraient aller dans l&#8217;espace, en enfer, dans d&#8217;autres dimensions, voire dans le passé.<br />
Malgré cela, je suis un psychotique de la cohérence, mais je savais que je n&#8217;aurais pas de mal à démêler les intrigues, d&#8217;autant que je n&#8217;aime pas faire du scénaristiquement faux.<br />
Bien qu&#8217;ils ne sont pas racontés, mes personnages les plus irréalistes ont des background très clair dans ma tête et une origine, que j&#8217;utiliserai quand des explications seront nécessaires.</p>
<p>Les thèmes à aborder étant également sans limite, cela indique de la SF (pour une BD de geeks, c&#8217;est pas dur), mais aussi de la magie (peu abordée jusqu&#8217;ici. Souvent elle s&#8217;explique par l&#8217;utilisation de technologies inconnues de notre société), et ce n&#8217;est pas parce que vous n&#8217;avez pas encore vu de dragons et d&#8217;elfes qu&#8217;il n&#8217;y en a pas.</p>
<p>Même avant GsW je trouvais le moyen d&#8217;être tout le temps débordé et d&#8217;avoir pleins d&#8217;idées de projets différents. J&#8217;avais donc dès le début décidé que cette BD en ligne, avec 3 obligations de résultats par semaine, serai la poubelle de mes créations, tout à le droit d&#8217;y passer.<br />
Cela passe par mes autres catégories (Dragon Ball, Fan arts divers&#8230;) mais aussi des scénarios qui vont où je veux (course poursuite dans un désert, téléportation, apparition de Bouddha, de Ryôga Hibiki et d&#8217;une fille vamp, fan de tetris, etc).</p>
<h3>Public</h3>
<p>Je n&#8217;avais pas de lectorat précis pour ma webcomic. Mon lecteur principal et préféré, c&#8217;est moi.</p>
<p>A ses débuts, j&#8217;ai eu un boost de visites grâce à des amis qui gèrent un gros channel IRC, et ont mis en topic un lien vers le site, dans le but avoué d&#8217;avoir ce qui est effectivement arrivé en page 49.<br />
J&#8217;ai donc eu soudainement une centaine de visiteurs gamers. Dommage, mon strip ne parle pas tant que ça de jeux vidéos.</p>
<p>Ce qui est sûr, c&#8217;est que je compte pas adapter mes strips au lectorat. D&#8217;une part c&#8217;est un hobby et pas un travail, d&#8217;une autre, suivant les conseils de maître Whedon, je ne suis pas les envies et demandes des lecteurs. Que ce soit pour faire faire une action à tel personnage ou parler de tel sujet.<br />
Ca ne m&#8217;empêche pas d&#8217;utiliser une idée dans un commentaire si je la trouve bonne ou si elle m&#8217;en donne une intéressante. Changer le scénario au dernier moment est un de mes hobbys.</p>
<p>Etant incapable de me modérer ou de voir une situation &#8220;des yeux d&#8217;un enfant&#8221;, mon webcomic est pour adultes (ou pour ados) . J&#8217;y dis des gros mots, de dessine des gens tout nu, du sang et des tripes (rarement, mais j&#8217;aime ça ;)</p>
<p>Enfin pour les références geekiques ou autres. Je ne veux pas que GsW soit un webcomic élitiste, donc lorsque la référence est un peu obscure, elle n&#8217;est pas utilisée comme chute du strip généralement.</p>
<p>Notez aussi que je comptais envahir le monde entier et que le webcomic ne devait à la base qu&#8217;être en anglais. J&#8217;ai fais une version française puisqu&#8217;au final, presque tout mon lectorat est francophone. Mais les textes sont toujours écrit en anglais d&#8217;abord.</p>
<h3>Hébergement</h3>
<p>Comme je suis un geek, j&#8217;ai ecrit le code du site (affichage, commentaire, liste des pages, etc) moi-même. L&#8217;hébergement est fait sur mon serveur perso qui contient tous mes sites dont ce blog.</p>
<p>Au fil du temps j&#8217;ai carrément codé moi-même de quoi gérer des tracksbacks (ce qui en passant ne sert à rien), les commentaires passent par un anti-spam perso, et il y a pleins de fonctions comme la recherche, le cookie qui se rappelle d&#8217;où on en est dans la lecture, un chapitrage&#8230;</p>
<p>Mais je vous conseille si vous faites votre BD en ligne d&#8217;utiliser un outils et un hébergement adéquat. Cela veut dire de ne pas utiliser un blog (beurk beurk) mais un site de webcomic. C&#8217;est l&#8217;heure de la petite pub pour <a href="http://www.webcomics.fr/" target="_blank">www.webcomics.fr</a></p>
<h3>Voilà</h3>
<p>C&#8217;est tout pour aujourd&#8217;hui.</p>
<p>Je vous parlerai plus tard du contenu de Geek&#8217;s World en lui-même : influences, voire copies, méthode, histoire&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/26-comment-jai-lance-mon-webcomic/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Détruire les anti-slashs : mort à magic_quotes_gpc</title>
		<link>http://blog.salagir.com/30-detruire-les-anti-slashs-mort-a-magic_quotes_gpc/</link>
		<comments>http://blog.salagir.com/30-detruire-les-anti-slashs-mort-a-magic_quotes_gpc/#comments</comments>
		<pubDate>Sun, 16 Mar 2008 11:34:08 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Mes scripts utiles]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/fr/30-detruire-les-anti-slashs-mort-a-magic_quotes_gpc/</guid>
		<description><![CDATA[PHP garde jusqu&#8217;à sa version 5 un paramètre de sécurité activé par défaut qui m&#8217;insupporte, c&#8217;est le Magic Quote.
Quand ce flag est à On, alors les variables qui sont dans les cookies, et passé par formulaire ou url d&#8217;une page à l&#8217;autre, sont automatiquement &#8220;escapés&#8221; (du mot anglais escape).
Cela veut dire que des anti-slashs sont [...]]]></description>
			<content:encoded><![CDATA[<p>PHP garde jusqu&#8217;à sa version 5 un paramètre de sécurité activé par défaut qui m&#8217;insupporte, c&#8217;est le Magic Quote.<br />
Quand ce flag est à On, alors les variables qui sont dans les cookies, et passé par formulaire ou url d&#8217;une page à l&#8217;autre, sont automatiquement &#8220;escapés&#8221; (du mot anglais <em>escape</em>).<br />
Cela veut dire que des anti-slashs sont ajoutés avant certains caractères particuliers. L&#8217;apostrophe (simple quote) particulièrement.</p>
<p>Exemple : mon script toto.php contient le code : <em>Bonjour &lt;?= $_GET['nom'] ?&gt; !</em>.<br />
On appelle : toto.php?nom=Bob ; ça affiche <em>Bonjour Bob !</em><br />
On appelle : toto.php?nom=Muad&#8217;ib ; ça affiche <em>Bonjour Muad\&#8217;ib !</em></p>
<p>Pourquoi ? Parce que quand le développeur est en fait un bidouilleur, il peut appeler ensuite une requete SQL utilisant cette donnée (donc totalement modifiable par l&#8217;utilisateur) et s&#8217;il oublie de mettre des \ là où il faut, c&#8217;est un trou de sécurité, on peut faire une <em>SQL injection</em>.</p>
<p>Exemple :  toto.php affiche des données d&#8217;un compte de gars sur un site. Le gars ne voit que ses propres données.</p>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #0000ff;">$nom</span> = <span style="color: #0000ff;">$_GET</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'nom'</span><span style="color: #66cc66;">&#93;</span>;
<span style="color: #0000ff;">$id</span> = id_du_gars_que_comme_ca_on_lit_que_des_donnes_a_lui<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000066;">echo</span> <span style="color: #0000ff;">$SQL</span>-&amp;gt;query2cell<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;SELECT valeur FROM donnees_gars WHERE id_gars=$id AND clef='$nom'&quot;</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>Que ce passe-il maintenant si on appelle avec une valeur de <em>nom</em> à la con ? Du genre  <em>coincoin&#8217; OR &#8216;a&#8217;='a<br />
</em>Et bien vous l&#8217;avez compris : cela annule totalement la vérification de l&#8217;id du gars.<br />
Pour si vous n&#8217;avez pas compris, la condition à vérifier sera (id_gars=$id AND clef=&#8217;coincoin&#8217;) OR (&#8217;a'=&#8217;a') et la partie droite est toujours vrai.</p>
<p>Si le développeur a pensé utiliser $nom = addslashes($_GET['nom']) ou que magic quote est activé, alors la condition de recherche sera  id_gars=$id AND clef=&#8217;coincoin\&#8217; OR \&#8217;a\&#8217;=\&#8217;a&#8217;  et on cherchera bien une clef qui a ce nom à la con.</p>
<p>Bon j&#8217;arrête le cours, voici mon script.</p>
<p>Parce que moi je suis un vrai dev et j&#8217;en ai plus que marre de ce magic quote&#8230; A chaque fois que je bosse sur un script, je dois prendre en compte ce paramètre, et il m&#8217;arrive bien souvent d&#8217;utiliser le code suivant :</p>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #000066;">get_magic_quotes_gpc</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #0000ff;">$_POST</span> = <span style="color: #000066;">array_map</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'kill_magic_quotes'</span>, <span style="color: #0000ff;">$_POST</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">function</span> kill_magic_quotes<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$v</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #000066;">is_array</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$v</span><span style="color: #66cc66;">&#41;</span> ? <span style="color: #000066;">array_map</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'kill_magic_quotes'</span>, <span style="color: #0000ff;">$v</span><span style="color: #66cc66;">&#41;</span> : <span style="color: #000066;">stripslashes</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$v</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>Mais maintenant je désactive tout simplement ce flag et j&#8217;utilise du code bien propre.<br />
Sauf que ! Il arrive, en passant le code d&#8217;une machine à l&#8217;autre, que j&#8217;oublie cela, et quelques données en base de données se retrouvent alors corrompues et pleines de &#8216; &#8230;.</p>
<p>J&#8217;ai donc écris un script à utiliser en ligne de commande, nommé simplement &#8220;del slash&#8221; (oui &#8220;del anti slash&#8221; était trop long). Il prends en paramètre un nom de table et un nom de champs, et gère tout le reste.<br />
Il fait de belles vérifications d&#8217;erreurs, donc il est cool et pratique. Voilà.</p>
<p>EDIT: upgrade du script, il accepte maintenant les tables avec plusieurs clefs primaires.</p>
<p>Vous pouvez télécharger le code ici :</p>
<ul>
<li><a href="/upload/del_slashs.php.zip">del_slashs Zippé  (v1.1)</a></li>
<li><a href="/upload/del_slashs.php.html">voir del_slashs en ligne (v1.1)</a></li>
<li>Nécessite : <a href="/upload/sqlQueries.php.zip">sqlQueries</a> (<a href="/28-la-1468456e-classe-php-qui-surcharge-mysql/">cf. ce post</a>)</li>
</ul>
<p>Le script en ligne de commande se lance de la façon suivante :</p>

<div class="wp_syntax"><div class="code"><pre class="bash">php del_slashs.php nomtable nomchamps</pre></div></div>

<p>Mettez le fichier sqlQueries.php dans le même dossier, et éditez del_slash.php pour y mettre vos paramètres de connexion à la base de donnée.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/30-detruire-les-anti-slashs-mort-a-magic_quotes_gpc/feed/</wfw:commentRss>
		</item>
		<item>
		<title>La 1468456e classe PHP qui surcharge mysql</title>
		<link>http://blog.salagir.com/28-la-1468456e-classe-php-qui-surcharge-mysql/</link>
		<comments>http://blog.salagir.com/28-la-1468456e-classe-php-qui-surcharge-mysql/#comments</comments>
		<pubDate>Sun, 02 Mar 2008 07:50:59 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Mes scripts utiles]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/fr/28-la-1468456e-classe-php-qui-surcharge-mysql/</guid>
		<description><![CDATA[J&#8217;ouvre ma section code avec une classe totalement inintéressante pour les vrais développeurs ici-bas, mais j&#8217;utilise souvent cette classe dans mes scripts, donc si vous voulez utiliser mes super scripts qui vont suivre, il vous faut cette classe.
Cette classe est sûrement d&#8217;autant plus inutile qu&#8217;elle fait sûrement doublon avec la classe mysql de php5, mais [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ouvre ma section code avec une classe totalement inintéressante pour les vrais développeurs ici-bas, mais j&#8217;utilise souvent cette classe dans mes scripts, donc si vous voulez utiliser mes super scripts qui vont suivre, il vous faut cette classe.</p>
<p>Cette classe est sûrement d&#8217;autant plus inutile qu&#8217;elle fait sûrement doublon avec la classe mysql de php5, mais que voulez-vous, j&#8217;en suis toujours au 4&#8230;</p>
<p>Elle a quelques avantages intéressants :</p>
<ul>
<li>Affichage pratique et complet des erreurs</li>
<li>Utilisation des Transactions de façon efficace (un point super de mysql, reservé aux  tables innoDB)</li>
<li>Utilisable avec une instance, ou pas</li>
</ul>
<p>Exemple d&#8217;utilisation :</p>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #0000ff;">$SQL</span> = <span style="color: #000000; font-weight: bold;">new</span> sqlQueries<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// un élément d'un coup</span>
<span style="color: #000066;">echo</span> <span style="color: #0000ff;">$SQL</span>-&gt;<span style="color: #006600;">query2cell</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;SELECT prenom FROM personnes WHERE id=$id LIMIT 1&quot;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// tourner direct sur un résultat de requête</span>
<span style="color: #b1b100;">foreach</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$SQL</span>-&gt;<span style="color: #006600;">query2assoc</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;SELECT * FROM ptitetable&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">as</span> <span style="color: #0000ff;">$element</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #000066;">echo</span> <span style="color: #ff0000;">&quot;&lt;p&gt;$element[champ1]: &lt;code&gt;$element[champ2] ($element[champ3])&lt;/p&gt;&quot;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">// tout en une ligne !</span>
<span style="color: #000066;">echo</span> <span style="color: #ff0000;">&quot;Ids: &quot;</span>.<span style="color: #000066;">implode</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;, &quot;</span>, <span style="color: #0000ff;">$SQL</span>-&gt;<span style="color: #006600;">query2list</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;SELECT id FROM table WHERE $conditions&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// escaper proprement (vous avez bien sûr viré cette saloperie de magic quotes)</span>
<span style="color: #0000ff;">$nom</span> = <span style="color: #0000ff;">$SQL</span>-&gt;<span style="color: #006600;">e</span><span style="color: #66cc66;">&#40;</span> <span style="color: #0000ff;">$_REQUEST</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'nom'</span><span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// ne pas prendre de risques : si la première requête déconne, alors la seconde ne sera pas faite</span>
<span style="color: #808080; font-style: italic;">// et je dirai même plus: et vice-versa</span>
<span style="color: #0000ff;">$SQL</span>-&gt;<span style="color: #006600;">tr_begin</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0000ff;">$SQL</span>-&gt;<span style="color: #006600;">query</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;UPDATE personne SET nom='$nom' WHERE id=$id&quot;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0000ff;">$SQL</span>-&gt;<span style="color: #006600;">query</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;INSERT INTO actions (type, infos) VALUES('changenom', '$id -&gt; $nom')&quot;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0000ff;">$SQL</span>-&gt;<span style="color: #006600;">tr_end</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>Je vous recommande de changer le constructeur à l&#8217;envie. Il m&#8217;est souvent arrivé de le virer complètement par exemple, parce que mysql_connect() serai fait ailleurs.</p>
<p>Vous pouvez télécharger le code de la version 0.95 ici :</p>
<ul>
<li><s>sqlQueries Gzippé</s> (chie : apache essait de l&#8217;exécuter)</li>
<li><a href="/upload/sqlQueries.php.zip">sqlQueries Zippé</a></li>
<li><a href="/upload/sqlQueries.php.html">voir sqlQueries en ligne</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/28-la-1468456e-classe-php-qui-surcharge-mysql/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Les blaireaux de ce monde</title>
		<link>http://blog.salagir.com/18-les-blaireaux-de-ce-monde/</link>
		<comments>http://blog.salagir.com/18-les-blaireaux-de-ce-monde/#comments</comments>
		<pubDate>Sat, 16 Feb 2008 16:30:47 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Ca ne va pas du tout !]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/fr/18-les-blaireaux-de-ce-monde/</guid>
		<description><![CDATA[Cet article sera un fourre-tout de ma haine contre les incompétants débiles de ce monde.
Ils sont nombreux, et ils sont nuisibles. Ils sont du genre à créer des choses, alors qu&#8217;ils ne devraient pas. Des choses qui au lieu de remplir leur fonction, vont rendre le monde a worse place.
Les blaireaux d&#8217;Internet
Il y a des [...]]]></description>
			<content:encoded><![CDATA[<p>Cet article sera un fourre-tout de ma haine contre les incompétants débiles de ce monde.<br />
Ils sont nombreux, et ils sont nuisibles. Ils sont du genre à créer des choses, alors qu&#8217;ils ne devraient pas. Des choses qui au lieu de remplir leur fonction, vont rendre le monde <em>a worse place</em>.</p>
<h3>Les blaireaux d&#8217;Internet</h3>
<p>Il y a des sites mondialement connus et utilisés. Sont-ils bien fait ? Noooon&#8230;.</p>
<h4>Paypal, site mondialement utilisé et sérieux (puisque rapport au pognon)</h4>
<p>Une page d&#8217;inscription qui s&#8217;affiche n&#8217;importe comment, malgré son design simple, sur certaines versions de Firefox.</p>
<p>Il me demande de remplir deux questions pour si j&#8217;oublie mon mot de passe, ah les questions personnelles ! Le plus grand trou de sécurité depuis la protection par cookie.<br />
En plus ça ne peut jamais servir, car ici, il faut rentrer uniquement des lettres et pas d&#8217;accent ! Vous rappellerez-vous exactement comment vous avez écrit votre lieu de naissance ?<br />
Et le nom de jeune fille de ma mère. Clairement uniquement des questions auxquelles <strong>moi seul</strong> ai les réponses.</p>
<p>Bravo pour le numéro de téléphone qui est invalide s&#8217;il commence par un +&#8230;</p>
<h4>Facebook : légèrement mondialement utilisé</h4>
<p>Cherché partout, pas moyen de changer son password !<br />
Après beaucoup de travail, je dirais qu&#8217;il faut 63 clics au quidam moyen pour trouver le moyen de changer son pass.</p>
<h3>Les blaireaux de l&#8217;architecture</h3>
<p>Les blaireaux d&#8217;internet existent aussi dans la vraie vie. Ils construisent et vendent des objets usuels, dont à la première utilisation on sait qu&#8217;ils sont mal fait.</p>
<h4>Les robinets trop courts</h4>
<p>Un évier, un robinet. Le but de cette haute technologie est de vous permettre de mettre vos mains entre le robinet et l&#8217;évier pour recevoir le flux d&#8217;eau, afin de les laver.<br />
Dans des cas extrèmes vous pouvez également y foutre la tête pour boire.</p>
<p>J&#8217;ai croisé de très nombreux robinets minucules dont le bout est :</p>
<ul>
<li>Extrèmement bas, mes mains tappent donc sur l&#8217;évier et/ou le robinet</li>
<li>Juste devant la bord de l&#8217;évier, donc le jet d&#8217;eau racle la paroie ! Mes mains tappent donc sur la paroie, et je ne peux laver que le bout de mes doigts</li>
<li>Les deux, donc on s&#8217;écrase les mains dans un endroit exigu pour les mouiller, et je parle pas de la possibilité de boire ! Ceci n&#8217;empeche aucunement l&#8217;évier en lui-même d&#8217;être grand&#8230; avec le robinet dans un petit coin.</li>
</ul>
<h4>Les spots au sol</h4>
<p>Un jour un con fier de lui a trouvé qu&#8217;il serai super cool d&#8217;éclairer le ciel, la nuit.</p>
<p>Il a donc placé des spots dans le sol, sous une plaque de verre pour qu&#8217;on puisse marcher dessus, et dirigé vers le ciel, là où qu&#8217;on regarde jamais.<br />
Je pense que ça a commencé comme une idée délire et artistique. A Noël il y a quelques années, on a vu des guirlandes 40 watt clignotantes et jolies remplacées par des spots 1000 watt eclairant le <strong>bas </strong>des arbres et sapins, donnant un certain effet.</p>
<p>Mais ensuite on s&#8217;est mit à en placer dans des lieux public, pour, donc, ne rien éclairer car une lumière qui part vers le ciel, c&#8217;est une lumière qui éclaire RIEN.</p>
<p>Mais pire que tout, quand il fait noir et que vous voulez pas tomber, vous regardez le sol, normal. Or là, le sol est noir, mais avec de temps en temps une putain de source lumineuse qui vous aveugle ! Donc y voyez <em>encore plus</em> rien !</p>
<h3>Les blaireaux du reste</h3>
<h4>Les sous-titre blanc.</h4>
<p>Quand je regardais des dessin animés Tex Avery en VO, les sous-titres étaient jaunes, avec une bordure noire (bordure sur chaque lettre). Ce n&#8217;était pas forcément joli, mais cette technique avait pour intérêt que si le texte est sur fond noir, ou sur fond jaune, dans tous les cas on peut le lire.</p>
<p>Cela fait des années que je ne vois plus que des sous-titres blanc (sauf dans les fan-subs, qui eux utilisent souvent la bordure, ce qui est bien, mais aiment à choisir une police totalement illisible).</p>
<p>Or les plus cinéphiles d&#8217;entre vous savent que, de temps en temps, le bas de l&#8217;image est très pâle voire blanc. Cela arrive. Du coup, dans ces scènes, les sous-titres sont totalement illisibles&#8230;<br />
C&#8217;est complètement con.</p>
<p>Méga-bonus: les sous-titres blanc sur les vieux films en noir et blanc. Alors là milles bravos.</p>
<p>Je m&#8217;arrête là, mais je pense qu&#8217;il y aura sûrement par la suite d&#8217;autres articles de ce genre &gt;:)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/18-les-blaireaux-de-ce-monde/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Les copieurs/voleurs de création sur Internet</title>
		<link>http://blog.salagir.com/14-les-copieursvoleurs-de-creation-sur-internet/</link>
		<comments>http://blog.salagir.com/14-les-copieursvoleurs-de-creation-sur-internet/#comments</comments>
		<pubDate>Fri, 25 Jan 2008 17:05:48 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Je pense donc j'essuie]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/fr/14-les-copieursvoleurs-de-creation-sur-internet/</guid>
		<description><![CDATA[Vous savez qu&#8217;il y a pire que les gens qui downloadent des mp3 sur internet. Il y les voleurs qui récupèrent des créations et les font passer pour leurs.
Exemple dans la vraie vie : Gilles Boulet dessine une illustration et la montre sur son site. John Looser prends l&#8217;image, ajoute sa signature en bas et [...]]]></description>
			<content:encoded><![CDATA[<p>Vous savez qu&#8217;il y a pire que les gens qui downloadent des mp3 sur internet. Il y les voleurs qui récupèrent des créations et les font passer pour leurs.</p>
<p>Exemple dans la vraie vie : Gilles Boulet dessine une illustration et la montre sur son site. John Looser prends l&#8217;image, ajoute sa signature en bas et la montre sur son propre site en disant qu&#8217;elle est de lui. Et même la vends sur des Tshirts. C&#8217;est illégal.</p>
<p>Exemple dans le monde d&#8217;Internet : DarkWarlord64 récupère des dessins sur google image, les découpe et les assemble, ajoute des effets photoshops, et le mets sur son site. 3vilNe0 récupère cette image, ajoute un effet photoshop et sa signature, et la mets sur son site.</p>
<p>Je n&#8217;oserai pas dire que le 2e cas est illégal. Car le premier acteur de l&#8217;histoire a lui-même déjà fait quelque chose de réellement illégal, c&#8217;est à dire utiliser une image à priori pas en <em>Creative Common</em> pour la republier modifiée sur son site.<br />
Pour rappel, vous avez parfaitement le droit de prendre une image d&#8217;internet et la modifier tant que vous gardez le résultat chez vous. Ce que vous ne pouvez pas faire, c&#8217;est la publier, si l&#8217;auteur initial ne le veut pas (et par défaut, quand l&#8217;auteur ne dit rien, ça veut dire qu&#8217;il ne veut pas).<br />
Evidement, ce genre de délit n&#8217;est pas des plus graves (certains auteurs ne sont pas d&#8217;accord avec moi sur le sujet), après tout un Sangoku dessiné à des fins de promotion, sur fond modifié, ne fait de mal à personne.</p>
<h3>Les créas</h3>
<p>Internet étant le royaume de la médiocrité, tous les amateurs au sens péjoratif du terme vont utiliser les surpuissants logiciels actuels qui transforment en quelques clics le blaireau de base en réalisateur de films (Movie Maker), en créateur de jeu vidéo (RPG Maker), en créateur artistique (Photoshop ou autre, avec les fonctions &#8220;effets&#8221;).</p>
<p>Afin de mieux comprendre la partie suivante, qui s&#8217;applique à tout type de vol de création sur internet, mais se situe dans le contexte d&#8217;un vol de <em>&#8220;design&#8221;,</em> je vais vous parler de cette sous-sous-section de l&#8217;auto-hypocrisie du net que l&#8217;on croit appeler Art : les <em>créas,</em> ou <em>GFX</em>&#8230;</p>
<p>Un design, c&#8217;est une suite d&#8217;images qui vont afficher le site. Il s&#8217;agit rarement de code HTML et de CSS, mais bien d&#8217;une image faite sous photoshop, découpée sous ce dernier, et le HTML généré utilisé comme base pour le site.<br />
Le lien avec les créas est que souvent on cumule dans le design des effets du même genre, et aussi qu&#8217;il s&#8217;agit d&#8217;un véritable travail de cochon, car designer un site, ce n&#8217;est pas ça du tout.<br />
Donc pour faire une créa :<img src="/upload/du-gfx.jpg" title="Volez pas ma créa !" alt="Volez pas ma créa !" align="right" height="225" width="300" /></p>
<ol>
<li>Prenez une ou plusieurs images (photo, dessin) sur Internet dessiné par des professionnels.</li>
<li>Découpez-les, soit à la main pour la précision, soit de deux coups de baguette magique.</li>
<li>Rassemblez-les dans une image, ajoutez un fond.</li>
<li>Sur chaque calque, cumulez beaucoup d&#8217;effets : bordure, retouche couleur, flou, etc.</li>
<li>Utilisez des tutoriels du net pour faire des &#8220;effets&#8221; encore mieux, comme ceux qui a partir de génération de bruit et quelques effets, donnent ça (voir image de droite)</li>
</ol>
<p>Tout ceci pour conclure que lorsque l&#8217;on se plaint de s&#8217;être fait voler ses idées en montrant ce genre de <em>créa</em>, il m&#8217;arrive souvent de pouffer.</p>
<h3>La colère du départ</h3>
<p>Voici une discussion fictive entre moi et un créateur amateur sur internet. Certains éléments sont tirés de conversation réelle. Mon interlocuteur s&#8217;appelle Nicolas, comme le petit Nicolas.</p>
<p>Nicolas: Ca fait la 3ieme fois qu&#8217;ils me volent mes idées<br />
Nicolas: Regarde les personnages, ce sont des fan-art de ***<br />
Nicolas: J&#8217;ai été le 1er a le connaître et je lui ai même demandé l&#8217;autorisation</p>
<p>Vous notez que cela commence mal : il a le droit de prendre les dessins d&#8217;une autre personne, mais les autres non. As-t(il signé un contrat d&#8217;exclusivité avec le dessinateur ? Non, mais au moins à demandé l&#8217;autorisation, ce que peu de gens font.</p>
<p>Salagir: Mais, si ils t&#8217;ont vraiment piqué des idées<br />
Salagir: Cela veut dire qu&#8217;elles sont BONNES<br />
Nicolas: Mais ça fait la 3e fois !!!!!<br />
Nicolas: ça me saoule, je trouve un truc et hop tout le monde copie<br />
Salagir: Je ne vois pas le problème à être copié à outrance<br />
Salagir: cela veut dire que tu es talentueux. Si les autres sont mauvais au point de jamais pouvoir faire un truc tout seul, tant pis pour <strong>leur</strong> gueule<br />
Salagir: Faut être au dessus de ca<br />
Salagir: Tu es le maître, ce sont les wannabe</p>
<h3>Le criminel</h3>
<p>Salagir: Moi je comprends pas les gens qui s&#8217;énervent parce qu&#8217;on les copie.<br />
Nicolas: par ce que je passe des heures a trouver l&#8217;inspiration pour faire ces design, et lui, il passe par là, et en 30min il peut faire la même chose !!!! Non mais oh !!!!<br />
Salagir: Et alors ?<br />
Salagir: Tu perds de l&#8217;argent ? Tu perds de la notoriété ? Tu perds du crédit ? On félicite l&#8217;autre pour son design et pas toi ?<br />
Nicolas: Oui voilà. On le félicite pour quelque chose qui n&#8217;est pas a lui. Je supporte pas ça.<br />
Salagir: Mais en quoi ça te concerne ?<br />
Salagir: Qu&#8217;un loser croit avoir réussi quelque chose ? Qu&#8217;on le félicite à tort ? Qu&#8217;est ce que toi, en toi-même, perd ?</p>
<p>Nicolas: Il faut leur pourrir leur site<br />
Salagir: Si Toriyama allait personnellement casser la gueule à <a href="http://dbzwarrior.supafan.net/" title="De beaux Fan-art sur Dragon Ball Z" target="_blank">Holken</a><br />
Salagir: ce serai du temps perdu pour lui et pour l&#8217;autre.<br />
Salagir: Les copieurs, tu peux les détester , les dénigrer, perdre du temps sur eux et contre eux, c&#8217;est une solution.<br />
Salagir: Mais personnellement je pense que tu y gagnerais plus à les considérer comme tes disciples.<br />
Salagir: Après tout leur technique vient de toi.<br />
Salagir: Se venger n&#8217;apporte pas satisfaction. Je sonne comme un film bien-pensant américain mais c&#8217;est vrai.</p>
<p>Salagir: Tiens envoi un mail au copieur : &#8220;salut les gars. Puisque je vois que vous avez bon goût sur les designs, je me suis dis qu&#8217;on pourrait s&#8217;entraider dans les deux sens : y&#8217;a pas un p&#8217;tit gars qui veut bien me faire un menu DHTML ?&#8221;<br />
Salagir: Tout &#8220;ennemi&#8221;, c&#8217;est rien de plus qu&#8217;un allié potentiel. Tout grand lecteur de Shonens doit le savoir.<br />
Salagir: On se rends peu compte, un gars qu&#8217;à l&#8217;air d&#8217;un con menaçant, quand tu sais bien le prendre, il te mange dans la main.</p>
<h3>Le style volé, les idées volées</h3>
<p>Nicolas: oui mais, c&#8217;est un design de site qui ne sera jamais utilisé, celui que j&#8217;ai fais.<br />
Salagir: ben c&#8217;est encore mieux, le design n&#8217;est pas gâché comme ça.<br />
Nicolas: Non. Je veux que mes designs soient uniques.<br />
Salagir: Mais ça c&#8217;est impossible. D&#8217;ailleurs le net est si grand que des gens font des choses totalement identiques, même sans se connaître.<br />
Il faut pas déconner les enfants. Déjà tout ce qu&#8217;on fait, c&#8217;est le résultat de nos influences sur les autres. Les styles vraiment personnels sont très rares, voire pas beau.<br />
Depuis toujours, ce qui est bien est copié. Ce qui est bien ne reste PAS unique. Ce qui est pourri par contre&#8230;</p>
<p>Nicolas: Oui mais moi j&#8217;appelle ça du vol.<br />
Salagir: Y&#8217;a vol lorsque tu perds quelque chose&#8230; tu perds rien là. Il n&#8217;y a pas préjudice.<br />
Nicolas: Si,<em> je perd mes idées.</em><br />
Salagir: Tes idées t&#8217;en as à l&#8217;infini. Si eux, ne peuvent que copier, ils iront pas loin.<br />
M. Walt Disney avait créé un personnage,  Oswald le lapin, qui a très bien marché.<br />
Du à un contrat foireux, son producteur a pu jeter Walt et garder le personnage.<br />
Walt a alors créé Mickey&#8230;. puis a eu le succès qu&#8217;on sait (plus personne ne connaît ce lapin aujourd&#8217;hui)<br />
Alors c&#8217;est qui le beau gosse ? Non, <em>on ne perds pas ses idées</em>.</p>
<p>Nicolas: Ce qu&#8217;ils m&#8217;ont copié, c&#8217;est un design qui ne sera jamais publié<br />
Salagir: Et ben c mieux qu&#8217;une idée soit reprise plutôt qu&#8217;abandonnée<br />
Nicolas: j&#8217;aurais préféré quelle soit reprise par moi<br />
Salagir: Justement&#8230; tu n&#8217;as pas le temps de tout produire. Si t&#8217;avais un début d&#8217;idée que t&#8217;as jamais finie et que d&#8217;autres le copient&#8230; c un peu comme si tu avais laissé le soin à des assistants de bosser à ta place.<br />
Salagir: Le but d&#8217;une création c&#8217;est de la montrer, de la créer, qu&#8217;elle serve ! Moi si je fais un truc et qu&#8217;au final ça peut sortir, même sous un autre nom, c&#8217;est toujours mieux que pas sorti du tout</p>
<h3>La réalité du copyright</h3>
<p>Salagir: Ces gars là ils t&#8217;ont rien volé. Ils ont copié. Et ça&#8230;. c&#8217;est limite un hommage.<br />
Nicolas: C&#8217;est une question d&#8217;intérêt personnel, j&#8217;ai passé je sais pas combien d&#8217;heures pour trouver l&#8217;idée de ce design, et là, une personne le vole.<br />
Salagir: Rappel, tu n&#8217;as pas utilisé ce design&#8230; Il donne de la visibilité à une oeuvre que tu as faite, qui serai restée dans l&#8217;ombre sinon.<br />
Salagir: C&#8217;est là que vient le point sur lequel beaucoup d&#8217;auteurs sont en contradiction avec moi. Scott Adams a rappelé que le droit d&#8217;un auteur sur une création, c&#8217;est aussi que cette dernière soit affichée comme il le veut, où il veut, quand il veut. Il peut interdire (c&#8217;est vrai) que n&#8217;importe quel individu fasse ces choix à sa place (sauf à afficher la création chez lui, usage privé).<br />
<a href="http://dilbertblog.typepad.com/the_dilbert_blog/2007/04/is_copyright_vi.html">http://dilbertblog.typepad.com/the_dilbert_blog/2007/04/is_copyright_vi.html</a></p>
<p>Exemple : le lendemain d&#8217;un émeute, je photocopie une BD de Boulet, celle où il fait un gag légèrement cynique sur les voitures brûlées. Ensuite je dépose la BD sur chaque voiture brûlée que je trouve. Ah ah ah ! Et bien, j&#8217;ai pas le droit. La raison (pratique), c&#8217;est que Boulet n&#8217;a jamais voulu associer son dessin à des emeutes. Et s&#8217;il le voulait, il ne l&#8217;a pas dit. Qui ne dit mot, <em>ne consent pas</em>.<br />
Exemple 2, plus proche du net. Un auteur dessine une colombe de la paix, et il donne des droits de cette dernière aux associations pour la paix et la tolérance. Je prends le dessin sans son autorisation et la mets sur mon site nazi anti-nain et pour la guerre contre la Chine. L&#8217;auteur n&#8217;est pas d&#8217;accord, c&#8217;est son dessin, il a le droit de m&#8217;empêcher d&#8217;en faire ce qu&#8217;il veut.</p>
<p>Salagir: Tu sais quoi, si au lieu de perdre plein de temps à chercher à les emmerder, tu faisais un nouveau design. Au final :</p>
<ol>
<li>Ton nouveau design sera mieux (et je ne déconne pas. On fait <strong>toujours</strong> mieux que précédemment, c&#8217;est une espèce de loi mathématique)</li>
<li>Tu auras eu l&#8217;idée de 2 designs et les 2 seront en ligne (tu remplis le net !)</li>
<li>T&#8217;as créé, ce qui est ton but, et t&#8217;es content de toi</li>
</ol>
<p>Ma conclusion, ma conclusion personnelle, c&#8217;est qu&#8217;un créateur ne manque pas d&#8217;idées et sera récompensé (= lu, vu) s&#8217;il en a des bonnes.<br />
De toutes façons je ne crois pas à l&#8217;idée unique qui défonce tout. Donc se faire &#8220;voler&#8221; une idée n&#8217;est à mon sens aucunement grave. Surtout, tout &#8220;voleur&#8221; est par définition quelqu&#8217;un qui n&#8217;a pas d&#8217;idée, et n&#8217;ira forcément pas loin. Jamais il ne marchera donc sur les plates-bandes de l&#8217;auteur réel.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/14-les-copieursvoleurs-de-creation-sur-internet/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Wizz-Buzz, le jeu</title>
		<link>http://blog.salagir.com/21-wizz-buzz-le-jeu/</link>
		<comments>http://blog.salagir.com/21-wizz-buzz-le-jeu/#comments</comments>
		<pubDate>Tue, 18 Dec 2007 16:42:21 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/fr/21-wizz-buzz-le-jeu/</guid>
		<description><![CDATA[Wizz-Buzz (plus connu sous le nom &#8220;Fizz Buzz&#8221;) est un jeu à boire, à jouer entre amis ou ennemis, à une fête où les verres ne manquent pas.
En fait j&#8217;avais fais une page web qui parlait de ses règles car nulle n&#8217;existait en réponse google (donc nulle n&#8217;existait), sous son vrai nom  (vrai car [...]]]></description>
			<content:encoded><![CDATA[<p>Wizz-Buzz (plus connu sous le nom &#8220;Fizz Buzz&#8221;) est un jeu à boire, à jouer entre amis ou ennemis, à une fête où les verres ne manquent pas.</p>
<p>En fait j&#8217;avais fais une page web qui parlait de ses règles car nulle n&#8217;existait en réponse google (donc nulle n&#8217;existait), sous son <strong>vrai</strong> nom  (vrai car c&#8217;est celui que je connais, merde quoi), car tout le monde utilise l&#8217;autre, et que Wizz et Buzz sont complètement cachés par des résultats sur des personnages de ch&#8217;sais pas quoi.<br />
Je détruis la page web dont tout le monde se fout et je relance ici, espérant que ça ressortira mieux.</p>
<h3>Règles</h3>
<p>L&#8217;on peut jouer de 1 joueur (mais c&#8217;est lassant tout seul) à 6 milliards (on ne peut pas à plus, on manquerai de participants sur Terre).</p>
<p>Tous les joueurs doivent se mettre en cercle, et avoir de quoi boire à portée de main.</p>
<p>Un joueur motivé commence en clamant <em>&#8220;un!&#8221; (1)</em>. Le sens est implicitement décidé par le deuxième joueur (celui juste à gauche ou à droite du 1er joueur) qui donnera le nombre suivant, à savoir <em>deux (2)</em> (vous pouvez décider du sens avant ^^).</p>
<p>Chacun son tour et suivant le sens dans le cercle, les joueurs doivent dire le nombre suivant en incrémentant.</p>
<p>Mais attention, certains nombres particuliers doivent être dit différemment :</p>
<ul>
<li>Si un nombre est divisible par 5, il faut le nommer &#8220;wizz&#8221;</li>
<li>Si un nombre est divisible par 7, il faut le nommer &#8220;buzz&#8221;</li>
<li>On en déduit que les nombres divisibles par 5 <strong>et</strong> 7 doivent être nommés &#8220;wizz-buzz&#8221;. Lorsque cela arrive, on change de sens.</li>
</ul>
<p>Les règles suivantes peuvent aussi être appliquées, mais sont moins officielles (enfin, ca dépends aussi des régions ^^) :</p>
<ul>
<li>Si un nombre fini par 7, il faut le nommer par &#8220;buzz&#8221;</li>
<li>Même hors jeu (comme pour expliquer les règles) il ne faut se référer à 5 que en wizz et à 7 en buzz, de même pour leurs multiples (et si règle précédente appliquée, de même pour les nombres finissant par wizz et buzz).</li>
<li>Le joueur doit répondre moins de X secondes après le précédent. Le nombre de secondes est à déterminer en fonction du niveau du groupe.</li>
</ul>
<p>Lorsque quelqu&#8217;un se trompe, il boit, et selon votre façon de jouer, on peut :</p>
<ul>
<li> Changer de sens</li>
<li>Recommencer le compte du début</li>
<li>Faire recommencer le gars qui se trompe, jusqu&#8217;à ce qu&#8217;il ait bon.</li>
</ul>
<p>A noter que lorsqu&#8217;on fait recommencer le compte au début, on ne va souvent pas très loin&#8230; ;)</p>
<p>Exemple de jeu: «Un!», «deux», «trois», «heu.. quatre», «wizz», «six», «buzz», «huit!», «neuf», «wizz», «gné? onze?», «douze», «treize», «qua..heu! buzz!!», «quinze ?», «Tu bois, c&#8217;était wizz, puisque égal à trois fois wizz».</p>
<h3>Variantes :</h3>
<p>Compter en <em>binaire</em>.<br />
«Un.» «Un zéro.» «Un un.» «Un zéro zéro.» «Wizz.» «Un un zéro»&#8230;</p>
<p>Compter en <em>hexadécimal</em>.<br />
&#8230; «Neuf.» «Wizz.» «Bé.» «Cé.» «Dé.» «Buzz.» «Wizz.» «Dix.» «Onze.» «Douze.» «Treize.» «Wizz» (et oui ce n&#8217;est pas un multiple de buzz !). «Quinze» (pas un multiple de wizz!).<br />
Pour devenir moins fou, vous pouvez dire «Un-cinq» à la place de «quinze» (puisqu&#8217;après on dira bien «un-eu», enfin non, «wizz»)<br />
Attention à l&#8217;application de la règle du nombre qui fini par wizz à prononcer en wizz !</p>
<p>Compter en <em>chiffres romains</em>.<br />
«Hi» (prononcez &#8220;i&#8221;). «Hi hi.» «Hi hi hi.» «Hi vé.» «Wizz.» «Vé hi.» «Buzz.» «Vé hi hi hi.» «Hi ixe.» «Wizz»&#8230;</p>
<p>Jouer sur un <em>forum</em> ou des <em>newsgroups</em>.<br />
Chaque posteur répond au précédent en incrémentant. Préférez un groupe de test ou autre de ce genre, avec un temps de rétention court (genre une journée au lieu d&#8217;un mois).<br />
Croyez-moi ou pas, il s&#8217;est toujours trouvé, en école d&#8217;ingénieur, des gens pour se tromper malgré le temps libre qu&#8217;ils avaient pour poster.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/21-wizz-buzz-le-jeu/feed/</wfw:commentRss>
		</item>
		<item>
		<title>De la soupe aux choux, et de la daube</title>
		<link>http://blog.salagir.com/19-de-la-soupe-aux-choux-et-de-la-daube/</link>
		<comments>http://blog.salagir.com/19-de-la-soupe-aux-choux-et-de-la-daube/#comments</comments>
		<pubDate>Wed, 05 Dec 2007 11:24:37 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Mes critiques films]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/fr/19-de-la-soupe-aux-choux-et-de-la-daube/</guid>
		<description><![CDATA[La soupe aux choux
Les films de science fiction en 1981, c&#8217;était pas encore du Star Wars&#8230;
Ce film complètement étrange manquait à ma culture, c&#8217;est maintenant chose réglée.
Nous y retrouvons une ode au vin, au terroir, à la bonne franchouillarde  françaiserie qui fait de nous de si parfait chauvins.

Que dire sur ce film ? J&#8217;aurai [...]]]></description>
			<content:encoded><![CDATA[<h3>La soupe aux choux</h3>
<p><img src="/fr/upload/soupe-choux-poster.jpg" align="left" />Les films de science fiction en 1981, c&#8217;était pas encore du Star Wars&#8230;</p>
<p>Ce film complètement étrange manquait à ma culture, c&#8217;est maintenant chose réglée.</p>
<p>Nous y retrouvons une ode au vin, au terroir, à la bonne franchouillarde  françaiserie qui fait de nous de si parfait chauvins.</p>
<p><img src="/fr/upload/soupe-choux-jacques-villeret.jpg" title="Jacques Villeret jeune et pas obèse, choquant" alt="Jacques Villeret jeune et pas obèse, choquant" align="right" /></p>
<p>Que dire sur ce film ? J&#8217;aurai du mal à le décrire, je dirai qu&#8217;il a une atmosphère particulière, ainsi qu&#8217;une bonne humeur propre à De Funès qui transporte le film avec lui.</p>
<p>Nous avons aussi des passages d&#8217;une belle lourdeur qui font du cinéma français un art reconnu internationalement (prout ! prout !)</p>
<p>Si vous ne l&#8217;avez pas vu, je vous le conseille. Et si vous l&#8217;avez déjà vu, et bien, bloublublublublu !</p>
<h3>Doom</h3>
<h3><img src="/fr/upload/doom.jpg" align="right" /></h3>
<p>Il y a des jeux vidéos qui marquent. Tabasser des monstres pixelisés et plats dans un décor pixelisé et en 3D, était le plus grand bonheur de nombre de joueurs en ces jeunes temps d&#8217;insouciance.</p>
<p>Le principe du jeu Doom est immensément simple : on a des armes à feu, et on tire sur tout ce qui bouge. Absolument tout. D&#8217;ailleurs le 3 m&#8217;a déçu à cet égard.</p>
<p>Face à un scénario aussi puissant, il était évident qu&#8217;un grand film allait naître.</p>
<p>Mais il ne suffit pas d&#8217;un scénario en papier pour faire une belle daube, non, il faut aussi des dialogues qui déchirent. Exemple (texte approximatif) :<br />
- On peut peut-être le sauver.<br />
- Non on ne peut pas.<br />
Il lui tire une balle dans la tête.<br />
- Parce qu&#8217;il est mort.</p>
<p>Ajoutez des personnage du genre, travaillé, mais en fait non. Ce sont tous des militaires d&#8217;élites psychopathes, et c&#8217;est un plaisir de voir l&#8217;un d&#8217;entre eux se scarifier d&#8217;une croix sur le bras parce qu&#8217;il a dit &#8220;God damn it&#8221;. Dommage que ça n&#8217;ait pas continué ainsi.</p>
<p>On finira sur l&#8217;ultime hommage à Doom, la scène en <em>first person shooter</em> (où la caméra est au niveau des yeux du personnage). Par contre cette scène ne&#8230; restera jamais dans les annales, elle est tout simplement bof.</p>
<h3>L&#8217;attaque de la moussaka géante</h3>
<h3><img src="/fr/upload/moussaka.jpg" title="Moussakaaaa ?" alt="Moussakaaaa ?" align="left" /></h3>
<p>Avec un titre aussi magnifique, à quoi pouvait-on s&#8217;attendre ?</p>
<p>Une part de moussaka géante parcourt la ville et tue des gens (oui parce que de la viande et de la béchamel, mais en géant, ca tue, quoi).</p>
<p>Vous avez le meilleur scénario du monde, maintenant, plus qu&#8217;à profiter de ce merveilleux film avec en plus, pleins d&#8217;homos en personnages principaux (on est en Grèce après tout).</p>
<p>Je n&#8217;en parlerai pas plus : de nombreux autres sites le font très bien :)</p>
<h3>The Musketeer</h3>
<p>Année, 2001, titre français, <em>D&#8217;Artagnan</em>.</p>
<p>Ninja ! D&#8217;Artagnan c&#8217;est pas un kéké. Il a des super pouvoirs ! Il lui fait sa fête à Neo quand tu veux !</p>
<p>Les mousquetaires, ces chevaliers dont rien n&#8217;est plus important que l&#8217;honneur, s&#8217;accrochent au mur et <em>au plafond</em> pendant les combats. Ils lancent des <strike>shurinkens</strike> trucs sur leurs ennemis, et sortent même de leur bat-ceinture un grappin qui se lance tout seul.</p>
<p>D&#8217;Artagnan fait aussi son Batman, grâce à ses pouvoirs de ninja : on regarde dans un sens, et hop, il apparaît derrière toi. On tourne les yeux, et hop, il disparaît ! (avec bien sûr les rideaux de la fenêtre qui flottent dans le vent).</p>
<p>N&#8217;oublions pas en vieux maître,  Jean-Pierre Castaldi, présentateur de Fort Boyard et géniteur de présentateur d&#8217;émission télé ras les pâquerettes naines.</p>
<p>Un film d&#8217;une réalité historique époustouflante !</p>
<h3>Les Aventures de Buckaroo Banzaï à travers la 8e dimension</h3>
<p><img src="/fr/upload/Buckaroo-Banzai-cast.jpg" title="Voici une partie du cast. Veuillez apprendre tous les noms par coeur." alt="Voici une partie du cast. Veuillez apprendre tous les noms par coeur." align="right" /></p>
<p>Oui, je vous <em>jure</em> que ce film existe.</p>
<p>Il s&#8217;agit même d&#8217;un monument ! A l&#8217;instar de la Moussaka, j&#8217;en parlerai peu ici car de nombreux autres sites (de fans!) en parlent, et ce de façon bien plus documentée.</p>
<p>Le fond de se film repose sur une vérité fracassante : on ne va jamais assez loin. En effet, de nos jours, les plus grand héros cumulent combien de compétances ?<br />
Allez, au mieux on est super-fort et millionnaire. Superman parle toute les langues (cf un article à venir sur une autre belle daube) et est super fort, et super journaliste, mais bon, c&#8217;est déjà peu. Peut-être que Peter Parker fait mieux ? Super scientifique (il invente quand même lui-même la glue-toile-d&#8217;araignée qu&#8217;il lance) et super pouvoirs&#8230; non, que deux.<br />
Et bien notre héros, il est super fort, chirgurgien, sauveur du monde professionnel, chef d&#8217;organisation sauveuse du monde, scientifique reconnu, beau gosse au volant, et hard-rockeur ! Et encore il serai plus si on avait pu faire d&#8217;autres films.</p>
<p>Buckaroo, mi-américain mi-japonais mi-héros, fait tout. Il est accompagné de son groupe de beau gosses, sauveurs du monde et superstars du rock (certains sont aussi docteurs et cowboy, porte-flingue et guitariste&#8230;). Ils sont aussi aidé quand nécessaire par l&#8217;organisation Fan de Banzai avec ses membres partout dans le monde.</p>
<p>Mais quelle est donc l&#8217;histoire, me demanderez-vous ? Et bien c&#8217;est très simple. Buckaroo traverse la 8ième dimension, pour déconner entre une opération à coeur ouvert et un concert de rock où il ira personnellement consoler le chagrin d&#8217;une femme abandonnée (qu&#8217;il a su détecter à une centaine de mètres dans une foule).<br />
C&#8217;est alors que des extra-terrestres viennent foutre la merde, pour des raisons huitdimensionesques. Ces aliens peuvent prendre une forme humaine pour passer inaperçu, comme celle d&#8217;un vieux rasta tout camé. Les méchants aliens s&#8217;allient avec un savant fou qui se came à l&#8217;électricité, et les gentils aliens avec l&#8217;équipe à Banzai. Il se passe alors pleins de choses, mais j&#8217;ai oublié les détails.</p>
<p>Si vous comptez voir ce film, sachez que je vous aurais prévenu, il faut un certain état d&#8217;esprit. Et surtout, n&#8217;attendez pas la réponse à la question : &#8220;A quoi elle sert cette pastèque ?&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/19-de-la-soupe-aux-choux-et-de-la-daube/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Dessin : Moi aussi j&#8217;me la pête</title>
		<link>http://blog.salagir.com/16-dessin-moi-aussi-jme-la-pete/</link>
		<comments>http://blog.salagir.com/16-dessin-moi-aussi-jme-la-pete/#comments</comments>
		<pubDate>Fri, 16 Nov 2007 11:34:00 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/fr/16-dessin-moi-aussi-jme-la-pete/</guid>
		<description><![CDATA[Tout le monde montre comment il fait ses dessins sur ordi, alors moi aussi. Y&#8217;a pas de raisons quoi&#8230;.
Avant de commencer, sachez que ce n&#8217;est pas la première fois que je joue à l&#8217;expert, j&#8217;avais commis il y a déjà 10 ans avec une BD d&#8217;une page et plus récement avec un strip sur Dragon [...]]]></description>
			<content:encoded><![CDATA[<p>Tout le monde montre comment il fait ses dessins sur ordi, alors moi aussi. Y&#8217;a pas de raisons quoi&#8230;.</p>
<p>Avant de commencer, sachez que ce n&#8217;est pas la première fois que je joue à l&#8217;expert, j&#8217;avais commis il y a déjà 10 ans avec <a href="http://www.salagir.com/bd/divers/evo/evolution.htm">une BD d&#8217;une page</a> et plus récement avec <a href="http://www.salagir.com/bd/evo2-dbz/">un strip sur Dragon Ball</a>.</p>
<p>Nous avons au menu cette fois un fan-art sur <a href="http://www.synopsite.com/pages/reflets_d_acidepag.html">la saga audio Reflets d&#8217;Acide</a>. Pour ceux qui ne le savent toujours pas, c&#8217;est une saga magnifique, drôle et super bien écrite, de jeu de rôle héroic fantasy. Il m&#8217;arrive souvent de l&#8217;écouter pendant que je dessine Geek&#8217;s World, ainsi que <a href="http://www.iiiemelegion.net/">La IIIème Légion</a> et <a href="http://latourdebaal.communaute-thurm.info/">La Tour de Baal</a>.</p>
<p>Je n&#8217;ai pas pensé à sauver les étapes avant la fin du crayonné. Vous aurez plus de détail sur cette étape dans mes précédents articles du même genre linké plus haut.<br />
J&#8217;ai voulu faire tous les personnages principaux. J&#8217;ai décidé de les dessiner séparément puis de les approcher par la suite.<br />
Ayant pourtant écouté plusieurs fois l&#8217;épisode 1 où leurs caractéristiques et atours sont décris, j&#8217;ai fais beaucoup d&#8217;erreurs sur les personnages (que nous nommerons ici &#8220;droit d&#8217;adaptation de l&#8217;artiste&#8221;). Par contre, les tailles sont respectées.</p>
<p>Que dire sur le crayonné sinon qu&#8217;il a été fait à la tablette graphique, et que c&#8217;est fort pratique de pouvoir prendre des morceaux de dessin, les aggrandir, rétrécir ou déplacer, quand on rate toujours ses premiers jets (jeu de mot JDR huhuhu) en proportions.<br />
Note: l&#8217;épée dit &#8220;hé hé&#8221; parce que c&#8217;est une épée maudite.</p>
<p>De même que je n&#8217;ai pas fais de screenshots du brouillon, j&#8217;ai pas pensé à chronométrer combien de temps cela m&#8217;a pris. D&#8217;autant que je l&#8217;ai fais par diverses étapes, certaines entrecoupées de quelques semaines. Pour résumer je dirai que le brouillon m&#8217;a pris: longtemps. peut-être une dizaine d&#8217;heure, voire plus. (Et oui, c&#8217;est la différence entre le pro et l&#8217;amateur, le pro aurait mit 3 heures maximum)</p>
<p><img src="/upload/reflets/500-Etape1.png" height="550" width="989" /><br />
Ensuite l&#8217;encrage. Il m&#8217;a pris le temps d&#8217;écouter la saga en entier, c&#8217;est à dire a peu près quatre heures.</p>
<p>Je créé un nouveau calque, je réduis l&#8217;opacité du calque de crayonné, je zoome un peu et j&#8217;encre.</p>
<p>Il m&#8217;arrive souvent de créer plusieurs calques d&#8217;encrage, pour faire des traits cachés par d&#8217;autres, et effacer ensuite, par exemple l&#8217;épée de Wrandrall par-dessus ses jambes. Mais au final je fusionne tous les calques d&#8217;encrage.<br />
<img src="/upload/reflets/500-Etape2.png" /></p>
<p>Ensuite le passage à la couleur. Toujours une certaine douleur&#8230; D&#8217;abord créer pleins de calques sur lesquels je remplis des surfaces identiques. Ensuite les mettre en opacité non variable pour pouvoir dessiner dedans sans me préoccuper de dépasser.</p>
<p>Pour avoir les surfaces facilement, j&#8217;utilise la baguette magique avec lisage, puis l&#8217;agrandissement du masque. Pour ce faire rapidement j&#8217;ai fais un script utilisant la fonction, et ai mis le raccourcis F3 sur ce script. Ainsi en une touche j&#8217;agrandis le calque au lieu d&#8217;avoir à passer par 3 menus et valider.<br />
C&#8217;est peut-être évidement mais on y pense pas toujours : on donne le coup de baguette magique à <em>l&#8217;extérieur</em> du personnage, puis on agrandit, puis on inverse le masque, ainsi on a tout le personnage.</p>
<p><img src="/upload/reflets/500-Etape3.png" /></p>
<p>Pour chaque calque j&#8217;ai fais la chose suivante : dupliquer, puis changement de couleur (moyen rapide: ctrl+L pour lancer les niveaux, et déplacer un curseur pour assombrir), puis effacement de certaines parties.<br />
J&#8217;ai maintenant deux calques de couleur par perso, séparant leurs parties aux couleurs vraiment différentes qui se touchent. J&#8217;ai du en faire 3 pour le nain.<br />
<img src="/upload/reflets/500-Etape4.png" /></p>
<p>Et maintenant le coloriage lui-même, le vrai.  Il m&#8217;a pris quatre heures (une saga), en speedant comme un malade parce que je voulais en finir. Je m&#8217;étonne en écrivant ces lignes que ça ait pris si peu de temps&#8230;<br />
Après, le déplace mes calques pour rassembler mes persos.</p>
<p><img src="/upload/reflets/500-Etape5.jpg" /></p>
<p>Pour le décor, comme je me connais, j&#8217;ai préféré utiliser une solution de facilité. Je suis allé chercher des photos de forêt sur Google Image. J&#8217;ai trouvé celle ci-dessous.<br />
Ensuite je l&#8217;ai modifié pour aller avec le dessin. Une légère retouche de couleur, et l&#8217;ajout de flou ! En effet, trops de détails en arrière plan, il ne faut pas. C&#8217;est l&#8217;avant-plan le plus important. De plus, l&#8217;effet photo veut que plus les objets sont loin dans l&#8217;image, plus ils sont flous (si on a fait le point sur le premier plan, ce qui est le cas puisque les personnage ne sont pas flous).<br />
j&#8217;ai donc floué des parties de l&#8217;image, avec un flou d&#8217;autant plus fort que l&#8217;élément était loin. Notez comme au final, le sol n&#8217;est pas flou, l&#8217;arbre de droite, proche, est un peu flou, et le fond l&#8217;est beaucoup.</p>
<p>Temps de recherche et retouche du décor: 15mn<br />
<img src="/upload/reflets/500-BG.jpg" /></p>
<p>Rendu final.<br />
<img src="/upload/reflets/500.jpg" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/16-dessin-moi-aussi-jme-la-pete/feed/</wfw:commentRss>
		</item>
		<item>
		<title>De la ratatouille, et de la daube</title>
		<link>http://blog.salagir.com/17-de-la-ratatouille-et-de-la-daube/</link>
		<comments>http://blog.salagir.com/17-de-la-ratatouille-et-de-la-daube/#comments</comments>
		<pubDate>Thu, 25 Oct 2007 23:14:56 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Mes critiques films]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/fr/17-de-la-ratatouille-et-de-la-daube/</guid>
		<description><![CDATA[Ratatouille

Je suis un très mauvais critique ciné&#8230;. Vu le temps depuis lequel ce film est sorti, il est peut-être un peu tard pour vous dire d&#8217;aller le voir !
Bon heu&#8230; allez le voir.
C&#8217;est un Pixar, donc qualité, et c&#8217;est de Brad Bird donc super qualité. On ne s&#8217;attends pas avec un pitch aussi simple (un [...]]]></description>
			<content:encoded><![CDATA[<h3>Ratatouille</h3>
<p><img src="/fr/upload/ratatouille-tour-eiffel-gus.jpg" title="Paris et sa Tour Eiffel ainsi que le restaurant du chef Gusteau" alt="Paris et sa Tour Eiffel ainsi que le restaurant du chef Gusteau" align="left" height="600" hspace="2" width="201" /><img src="/fr/upload/ratatouille-remy.jpg" title="Remy le Rat admire Paris" alt="Remy le Rat admire Paris" align="right" height="600" hspace="2" width="201" /><br />
Je suis un très mauvais critique ciné&#8230;. Vu le temps depuis lequel ce film est sorti, il est peut-être un peu tard pour vous dire d&#8217;aller le voir !</p>
<p>Bon heu&#8230; allez le voir.</p>
<p>C&#8217;est un Pixar, donc qualité, et c&#8217;est de Brad Bird donc super qualité. On ne s&#8217;attends pas avec un pitch aussi simple (un rat qui veut cuisiner dans le monde des humains) à arriver à quelque chose d&#8217;aussi bien.</p>
<p>Pour reprendre ce qui a été dit sur un forum, il est à noter que les dessins de bouffe sont admirablement réussis, réalistes au point de nous mettre l&#8217;eau à la bouche.</p>
<p>J&#8217;ai vu le film en VO et en VF. Je vous conseille la VF, car elle est de très bonne qualité, et c&#8217;est quand même plus reposant de ne pas lire les sous-titre, pour profiter de la belle animation. Juste quelques détails :<br />
- Tout au début, le critique dit une phrase qui rend mieux en VO.<br />
- A un moment, les persos s&#8217;en vont brusquement en disant &#8220;Désolé on est impoli&#8230; on est Français !&#8221; (I hate to be rude, but, we&#8217;re French!) Cette phrase n&#8217;est pas là en VF.</p>
<p>De plus, le générique de fin où défilent les noms est un dessin animé de toute beauté.</p>
<p>Je n&#8217;en dirai pas plus, je vous laisse le découvrir.</p>
<p>Ces derniers temps j&#8217;ai eu l&#8217;occasion de voir de très mauvais films, grâce à une suite de retrospectives de&#8230; très mauvais films. Nous commencerons par un récent, et ensuite nous noierons dans les méandres du mauvais et lointain.</p>
<h3>Rush Hour 3</h3>
<p>Certes j&#8217;étais bien plus jeune quand j&#8217;ai vu le 1 et le 2 (Jacky Chan aussi&#8230; Hou là là&#8230;) mais je suis à peu près sûr que<br />
ces deux films étaient bien bien bien meilleurs.</p>
<p>Une prouesse redoutable de ce film, n&#8217;être jamais au grand jamais crédible. On commence par exemple par un sniper qui a un chemin de fuite qui le fait voir de tout le monde dont ceux sur qui il a tiré.</p>
<p>Ensuite Jacky Chan qui se prends des pains, puis se prends des pains, puis se fait encore battre.<br />
En fait ce film est humoristique. L&#8217;action est fortement secondaire, et des héros qui se font ridiculiser et massacrer, ben j&#8217;imagine que c&#8217;est drôle. Donc ils se font souvent ridiculiser, fuir et tirer dessus par des méchants qui ne savent pas tirer. Mais il n&#8217;y a pas que ça qui est incrédible. Tout le scénario est basé sur une non-action.</p>
<p>En clair, quand des gentils ou des méchants ont leur adversaire au bout de leur flingue, et qu&#8217;ils doivent le tuer, alors ils se mettent à s&#8217;accroupir et se cacher les yeux en chantant LALALALALALA jusqu&#8217;à ce que l&#8217;autre s&#8217;enfuit.<br />
Plus clairement, pour tuer quelqu&#8217;un qu&#8217;ils ont en joue, ils leur demandent de les suivre sur des kilomètres ou les laissent à leur très mauvais hommes de mains, qui ne se mettent à tirer que lorsque les héros, s&#8217;enfuyant, sont hors d&#8217;atteinte (c&#8217;est à dire à 2 mètres d&#8217;eux).</p>
<p>On tombe aussi dans des gags vus et revus et affligeants, mais aussi des clichés doubles (ben oui y&#8217;a deux héros), comme l&#8217;extraordinairement classique : l&#8217;espion va dans un bar où il doit trouver une fille dont il ne connait que le nom. Deux clichés peuvent lui arriver.<br />
Cliché un : la première personne qu&#8217;il questionne lui demande de le suivre, et une fois dans un coin tranquille, essait de le tuer.<br />
Cliché deux : l&#8217;espion lorgne une bonnasse et va se la draguer, oubliant la mission. Super bol, c&#8217;est la fille qu&#8217;il cherchait.<br />
Donc là nous avons les deux. Oh désolé : attention spoiler.</p>
<p><img src="/fr/upload/rush-hour-3.jpg" title="Deux blaireaux, et le héros" alt="Deux blaireaux, et le héros" align="right" height="292" hspace="2" width="440" />Mais ce n&#8217;est pas tout ! En effet, de mauvaises conditions ont fait que je l&#8217;ai vu en VF ! Je félicite en passant le comédien de doublage de Jacky qui le fait parler avec un &#8220;accent chinois&#8221; magnifiquement grotesque.<br />
Car je vous rappelle que l&#8217;action du film se passe à Paris. Les blagues anti-français vont bon train, pourtant c&#8217;est presque le plus réussi du film. En effet, le véritable héros du film n&#8217;est ni le jaune ni le noir, c&#8217;est bien Georges, le chauffeur de taxi français anti-américain ^_^.<br />
Mention spéciale à la scène où une traductrice est appellée par les héros pour interroger un type qui parle français en VO. En effet, en VF, le type ne parle évidement Français&#8230;. donc quoi ? Québequois bien sûr !</p>
<h3>Les chroniques de Riddick</h3>
<p>Voici le prototype de film à gros budget avec un bon background, gravement raté pour moultes raisons.</p>
<p>En fait en remontant le film et virant des scènes on aurait sûrement un parfait film d&#8217;action. On peut, il dure bien trop longtemps.<br />
Virons les personnages inutiles comme la prophétesse qui voit le futur (enfin sauf tout ce qui se passe dans le film, que nous avions personnellement deviné), qui est immatérielle (mais qui se fait prisonière) et qui sert à rien (oui oui, sert vraiment à rien, ni à être libérée, ni donner une info qui n&#8217;est pas dans le journal).<br />
Virons les très ratées scènes où la fille rebelle se la joue fille rebelle.</p>
<p>Allez, je vais commencer par dire ce qui est bien dans Riddick. Premièrement : Riddick.<br />
Riddick est classe, vraiment super classe. Il est méchant, égocentrique, super fort. Riddick c&#8217;est un gars faut pas le faire chier quoi. Et quand on le fait, il tue. Grave. Riddick dit : &#8220;Seulement une équipe de 4 personnes pour me tuer ? Quelle insulte !&#8221; (A four man crew for me, fucking insulting.) Et il les défonce.<br />
Ca fait du bien de temps en temps un héros de ce genre.<br />
Il a aussi une scène extraordinaire en prison où il tue un adversaire avec&#8230; une tasse de thé.<br />
<img src="/fr/upload/chronicles_of_riddick-glasses.jpg" title="Je mets les lunettes, j'enleve les lunettes..." alt="Je mets les lunettes, j'enleve les lunettes..." align="right" height="152" hspace="2" width="200" /> Par contre, Riddick a un putain de TOC. Il enlève et remets ses lunettes <em>tout le temps</em>. Il les mets. Il les enlève. Il les mets. Et il prends bien le temps de le faire, parce que quand Riddick touche à ses lunettes, c&#8217;est le plan fixe et lent. De plus ce sont quand même des lunettes de plongées, c&#8217;est ridicule.</p>
<p>Ensuite, le background. Si le scénario n&#8217;était pas si mauvais, il y aurait eu un monde super bien dans ce film, qui valait le coup. Sans y prêter attention, on montre que des humains sont changés en objets, utilisant sûrement des propriétés humaines qui n&#8217;ont pas pu être faites en machine. Des humains sont donc utilisé comme radar/détecteur, ou comme téléphone longue distance. L&#8217;empire des méchants est puissant et classe.</p>
<p>Enfin, les scènes d&#8217;action sont pour la plupart réussies.</p>
<p>Maintenant ce qui est raté. Les méchants. Si Riddick est super classe, les méchants sont totalement ridicules. Nous avons un couple de traîtres qui en fin de compte&#8230; ne sert absolument à rien. Et Lord Marshal.<img src="/fr/upload/chronicles_of_riddick-Lord-Marshal.jpg" title="Ayez les boules, un vieux sans poils vous menace" alt="Ayez les boules, un vieux sans poils vous menace" align="left" height="150" hspace="2" vspace="2" width="150" /><br />
Lord Marshal c&#8217;est le suprême méga méchant, chef de l&#8217;armée d&#8217;invasion des Necromongers. Il est un peu entre Palpatine et Vader, sauf qu&#8217;il aurait pris le plus mauvais des deux. Sencé être doté de pouvoirs magiques, on se rend vite compte que ces derniers ne servent à rien sinon être rapide (mais Riddick aussi est rapide).<br />
Pire encore, l&#8217;empereur est joué par un espèce de vieux sans sourcils, gringalet, aussi impressionnant qu&#8217;un Pichu malade. On s&#8217;ennuie sec au combat final. Je ne sais pas ce qui leur prends à choisir des demi-portions tout maigres (mais sans sourcils), ils ont déjà fait le coup dans Mortal Kombat 2 (film) pour jouer Shao Kahn, l&#8217;empereur du mal, tout aussi raté du coup.</p>
<p>Nous avons aussi de superbes oublis. Par exemple les méchants infligent à leur prisonnier une espèce de douleur pour les faire devenir leur soldats. On effleure le sujet puis on en parle plus jamais bien qu&#8217;on le fasse à un personnage principal, et en fait cet élément important est complètement inexpliqué.</p>
<p>Spéciale dédicace au producteur qui a <em>ajouté une scène</em> pour son public qu&#8217;il <em>juge trop con </em>! En effet la scène dont je vais vous parler n&#8217;était pas dans le director&#8217;s cut.<br />
On dit à Riddick que sa copine est dans une prison lointaine pour prisonniers super balaises. Quelques scènes plus tard, un chasseur de prime essai d&#8217;attraper Riddick, qui est recherché partout dans l&#8217;univers. Ce dernier se laisse attacher et emmener dans le vaisseau, qui part pour une prison lointaine pour prisonniers super balaises, afin de toucher la récompense. Et Riddick jubile.<br />
Jusque là, je pense que vous avez tous compris. Mais à l&#8217;évidence, non, c&#8217;était trop subtil. C&#8217;est pourquoi, ensuite, on entend penser Riddick qui dit, clairement : &#8220;Ah ah ah en fait ils m&#8217;emmènent exactement là où je veux aller, vu que j&#8217;ai pas de vaisseau. Parce qu&#8217;en fait, je me suis fais prisonnier <em>exprès </em>hein. Vous inquiétez pas, je suis toujours super balaize ! Je suis attaché mais c&#8217;est <em>mon plan</em>, hein. J&#8217;ai <em>voulu </em>être comme ça. N&#8217;allez pas croire que j&#8217;ai un seul instant loosé&#8230;&#8221;</p>
<p>Au final, film plutôt raté malgré quelques trucs bien.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/17-de-la-ratatouille-et-de-la-daube/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Google sait tout de moi, et j&#8217;aime ça</title>
		<link>http://blog.salagir.com/7-google-sait-tout-de-moi-et-jaime-ca/</link>
		<comments>http://blog.salagir.com/7-google-sait-tout-de-moi-et-jaime-ca/#comments</comments>
		<pubDate>Fri, 05 Oct 2007 09:59:12 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/fr/7-google-sait-tout-de-moi-et-jaime-ca/</guid>
		<description><![CDATA[Et oui c&#8217;est fou. Pourquoi se rappeler de sa propre vie quand d&#8217;autres peuvent le faire pour vous ? Pourquoi, par exemple, noter quand on a fait quoi, ou écrire un blog, puisque Google est là pour se rappeler de chacunes de vos actions.
Vos actions sur Internet, s&#8217;entends, c&#8217;est à dire 90% de mes actions. [...]]]></description>
			<content:encoded><![CDATA[<p>Et oui c&#8217;est fou. Pourquoi se rappeler de sa propre vie quand d&#8217;autres peuvent le faire pour vous ? Pourquoi, par exemple, noter quand on a fait quoi, ou écrire un blog, puisque Google est là pour se rappeler de chacunes de vos actions.</p>
<p>Vos actions sur Internet, s&#8217;entends, c&#8217;est à dire 90% de mes actions. Mais cette limitation de 10% est de moins en moins vrai.</p>
<p>Rappel. J&#8217;utiliserai ici le verbe <em>googler</em> (de l&#8217;anglais <em>to google</em>) qui veut dire, chercher sur google. Je google, tu googles, etc.  <small>(il googlera, ils googleront, <small>nous googlames, vous googlates, que je googlasse, que vous googlassiez ?</small>)</small></p>
<h2>Google Web</h2>
<p>Avez-vous déjà googlé votre nom ou pseudo ? Le faites-vous régulièrement ? Si vous ne le faites pas régulièrement, vous avez beaucoup trop de hobbies, ou pire, pas assez d&#8217;égo.</p>
<p>Il y a des années, pour savoir si on était une vedette, il fallait lire pleins de journaux,  demander à la police si elle nous recherchait, ou pire, demander aux gens.<br />
Pour savoir ce que les gens disaient sur nous, il aurait fallu les mettre sur écoute, ou, plus traumatisant, socialiser avec eux et leur parler pour tâter le terrain.</p>
<p>Maintenant il suffit de googler. Les gens parlent sur le net, et c&#8217;est souvent logué, à l&#8217;insu de leur plein grès, pour se retrouver sur google (les logs public de channels irc sont un bonheur).</p>
<p>On tombe parfois sur des trucs étonnants. En ce qui concerne mon vrai nom et prénom, J&#8217;ai quelques homonymes qui se permettent de jouer au rugby, ou de publier des trucs scientifiques, ou d&#8217;être simplement sur internet. Et sont assez souvent français, histoire de brouiller les pistes.</p>
<p>Il faut dire que je me référence sur le net avec mon pseudo unique. Là evidement, quand je le cherche, les 500+ premieres réponses sont mes sites, dont ce post. Légèrement entre-coupés de quelques autres sites forts connus où je posta, ou d&#8217;autres postèrent sur moi, ce qui est plus intéressant.</p>
<p>En allant directement à la 15e page de réponse, on tombe sur des trucs rigolos. Ca va du site germanique qui me pique un dessin mais me crédite (<a href="http://www.calvin-und-hobbes.com/chbild29.jpg">http://www.calvin-und-hobbes.com/chbild29.jpg</a>) (bon en fait il est possible qu&#8217;ils m&#8217;aient demandés la permission il y a 7 ans et que j&#8217;ai oublié), aux sites générés automatiquement par des spameurs qui essaient de se faire voir sur google et de donner de la valeur à leurs liens vers leurs sites de culs, de casinos en ligne, ou de vente de médicaments, en ajoutant du contenu,volé donc sur un de mes sites.</p>
<p>Je suis fier de vous annoncer aujourd&#8217;hui, que malgrès ma grande participation à emplir le net de vide, il y a maintenant plus de commentaires (dans les forums, des commentaires de blog, etc) de  gens qui parlent de moi ou mes sites, que de commentaires écris par moi.</p>
<p>Tu l&#8217;auras compris petit scarabé, tel Frank Dubosc je peux dire &#8220;<em><strong>Oui</strong>, je <strong>cô</strong>nnais des gens que vous ne connaissez pas</em>&#8220;. Ou plutôt, des gens que je connais pas me connaissent, et je parle pas des mamies du village de mes grand-parents qui disent en me croisant : &#8220;Oh, mais c&#8217;est un petit [<code>nom de jeune fille de ma mère</code>] !", encore qu'aujourd'hui, avec ma barbe et mes 20 centimètres de plus qu'elles, j'ai assez efficacement réussi à être inreconnaissable de mes photos qui traînent dans le salon des grand parents où j'ai entre 1 et 4 ans.</p>
<p>Mais je disgresse donc. Des gens causent de moi, et ça, ça me donne une trique d'enfer permanente ! Alors évidement, Google m'envoie surtout sur des types qui linkent simplement vers une page d'un de mes sites (parce que j'ai si bien parlé de tant de sujets, qu'il faut bien qu'ils servent de références, même pas la grosse tête..), ou pire, des leechers qui affichent une image de mon site directement (et même des fois pas dessinée par moi, l'ayant moi-même volée sur le net... mais au moins je l'ai mis sur mon hébergement moi).</p>
<h2>Google Groups</h2>
<p>Depuis longtemps j&#8217;aime ce service. En grand ex-utilisateur de usenet (il y a beaucoup d&#8217;ex-utilisateurs de usenet, vu le vide qu&#8217;il est devenu depuis l&#8217;arrivée massive des immondes forums web) j&#8217;y ai passé beaucoup de temps, lisant les archives jusqu&#8217;à 20 ans en arrière (Douglas Adams, auteur gigantissime du <em>Guide Galactique</em>, a posté sur usenet !!!!!).</p>
<p>Google a ajouté récement (ou j&#8217;ai découvert récement) une fonction de recherche par posteur, qui donne le nombre de posts par mois. Joie. Tous mes posts usenets sont là, et <em>ils sont comptés</em> ! Je crois que je vais faire une courbe. J&#8217;aime faire des courbes.</p>
<p><a href="http://groups.google.com/groups/profile?enc_user=1CSuQg4AAABwxRvYuo1Xc2SW14I9XAJj">Nov 1999 - Jan 2002</a> ,   <a href="http://groups.google.com/groups/profile?enc_user=AV-tiBAAAAClJ8HzoqiA_izKkwYGwBnh">Janv 2002 - Jul 2003</a> (bonus <a href="http://groups.google.com/groups/profile?enc_user=KyITFBYAAADzpnk0KjFOlqbVz5XFO_gbw-PApYhXFFnPr2c48bD8PQ">vacances 2002</a>),  <a href="http://groups.google.com/groups/profile?enc_user=T8lxuyUAAAA2Td8_fJKTmu-KNdoj2yGDVAGghuJ6hbBhyOIb7gHH8UHG4m40lAQRzjfZ20UjHsE">Jul 2003 - maintenant</a></p>
<p>Et oui je n&#8217;ai même pas 10 ans de usenet, ouuh le newbie !! Bon en fait c&#8217;est pas vrai, c&#8217;est juste que quand je l&#8217;ai découvert, je n&#8217;étais pas encore Salagir à l&#8217;époque&#8230; Mon premier post date de 1997. Et je suis assez sûr qu&#8217;il s&#8217;agissait d&#8217;une pub pour mon site (mais dans le bon groupe, s&#8217;il vous plait)<br />
<img src="/upload/posts-Usenet.png" height="252" width="500" /><br />
Comme je suis le dernier des prétentieux, je vous propose même <a href="/upload/posts-Usenet.ods">le fichier tableur en téléchargement</a> (c&#8217;est du OpenOffice).</p>
<p>Le pic de l&#8217;été 2002 correspond à un stage avec temps libre durant lequel j&#8217;ai pu dans la joie <a href="http://lucii.free.fr/">troller avec un certain luc2</a>.</p>
<p>En ces temps bénis d&#8217;étudiantisme, j&#8217;ai beaucoup useneté (autre verbe, commer googler). J&#8217;ai posté aussi en masse sur les groupes internes de l&#8217;école, que vous ne pouvez donc pas voir ici. Mais google web me rappelle sa toute-puissance,  et me rappelle que j&#8217;avais mirroré l&#8217;un de ces groupes, le plus absurde efrei.culture.philo (oui absurde, autant qu&#8217;un groupe fac.sciences.electromagnetisme dans une fac de lettres).</p>
<p><a href="http://efreidelirium.free.fr/sous-sections/philo/">http://efreidelirium.free.fr/sous-sections/philo/</a></p>
<p>Aujourd&#8217;hui, pour accompagner la mort de ce fantastique média, Google ne propose plus Google Groups sur sa page de garde.</p>
<h2>Google Image</h2>
<p>Assez proche de Google Web, car beaucoup leechent mes images. Mais il donne aussi des surprises, comme être capable de montrer mon vrai visage (alors que j&#8217;avais pourtant fais attention à ne me faire filmer et photographier que de dos, avec seul mon bras dépassant d&#8217;un grand fauteuil, tappant sur une table où se repose un gros chat rayé), de sortir mes dessins parfaitement en contexte, des fois super placés !</p>
<p>J&#8217;allais vous donner le formidable exemple d&#8217;une de mes créations en première réponse sur un mot très commun, mais depuis une mise à jour ce n&#8217;est plus le cas :(</p>
<p>Voilà, c&#8217;était mon post à la gloire de Google, l&#8217;entreprise qui est passée de super moteur de recherche à page de garde tout le monde, puis portail incontournable, et ensuite monstre tentaculaire qui sait ce que tu cherches, ce que tu lis, où tu te déplaces, sur quoi tu travailles, et ce que tu as fait l&#8217;été dernier.</p>
<p>Google sait tout de vous, j&#8217;espère que vous aimez ça.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/7-google-sait-tout-de-moi-et-jaime-ca/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ce qui ne me va pas avec Naruto</title>
		<link>http://blog.salagir.com/8-ce-qui-ne-me-va-pas-avec-naruto/</link>
		<comments>http://blog.salagir.com/8-ce-qui-ne-me-va-pas-avec-naruto/#comments</comments>
		<pubDate>Mon, 17 Sep 2007 21:25:46 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Ca ne va pas du tout !]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/fr/8-ce-qui-ne-me-va-pas-avec-naruto/</guid>
		<description><![CDATA[[edit: ajout d'images du tome 3]
C&#8217;est pas fini, oui ? Dit l&#8217;habitué&#8230; Ca fait des années que tu nous les casses avec cette série que tu détestes sois-disant !
Ben oui mais quand on me demande pourquoi je hais Naruto, je ne sais pas trop sur quelle page renvoyer&#8230; mon avis s&#8217;est éparpillé au fil de [...]]]></description>
			<content:encoded><![CDATA[<p>[edit: ajout d'images du tome 3]</p>
<p>C&#8217;est pas fini, oui ? Dit l&#8217;habitué&#8230; Ca fait des années que tu nous les casses avec cette série que tu détestes sois-disant !</p>
<p>Ben oui mais quand on me demande pourquoi je hais Naruto, je ne sais pas trop sur quelle page renvoyer&#8230; mon avis s&#8217;est éparpillé au fil de mes explications à ce sujet sur divers forums. Cette page sera donc la synthèse complète.</p>
<p>Après une trentaine de tomes (que j&#8217;ai tous lus) et plus d&#8217;une centaine d&#8217;épisodes (que j&#8217;ai rien vu), Naruto a comme qui dirait évolué.. Je lui ai trouvé d&#8217;autres défauts, et même des qualités. Commençons donc par le début. A sa sortie en france, j&#8217;ai lu le manga, les deux premiers tomes étaient sortis. C&#8217;était vraiment très sympa !!</p>
<p>Puis, quelques mois plus tard, j&#8217;ai lu le tome 3. Et là, c&#8217;est le drame.</p>
<h3>La morale dans Naruto</h3>
<p>Je vais raconter quelques détails du manga (tome 3) mais je ne les considère pas comme des spoilers ou a peine (je ne dit pas qui gagne :p) mais bon je préviens.<br />
Dans ce manga, comme dans beaucoup d&#8217;autres, est racontée une philosophie que je réprouve <strong>totalement</strong>. (cf. article précédent)</p>
<p>Mettons-nous en situation. Un chien est en train de se noyer dans l&#8217;eau, le petit garçon qui voudrait bien le sauver est sur le ponton mais il ne sait pas nager. Il finit par tomber dans l&#8217;eau et.. se noie. Le chien, lui, rejoint la berge seul. Un noble héros sauve le gamin. Je dis noble héros car il se place clairement en beau gosse, sage, et à l&#8217;attitude exemplaire.</p>
<p><img src="/upload/naruto-vol3-page056-0.png" title="naruto, vol3, page 56" alt="naruto, vol3, page 56" align="left" height="285" width="300" /><img src="/upload/naruto-vol3-page056-1.png" title="naruto, vol3, page 56" alt="naruto, vol3, page 56" align="right" height="318" width="250" />Les paroles du héros au gamin sont : &#8220;Même si c&#8217;est dur, même si c&#8217;est pénible, même si tu risques d&#8217;y perdre la vie&#8230; Tu dois le protéger&#8230; toi-même, à la force de tes bras !!&#8221;<br />
Traduction : &#8220;fallait que tu te noie et que tu meurs en héros sans réfléchir.&#8221;<br />
J&#8217;étais déjà bien indigné et je commançais à déblaterer de ceci à mon voisin le plus proche quand je tombe sur la conclusion, encore pire : &#8220;Ainsi même si tu meurs, il restera une preuve de ton existance&#8230; pour l&#8217;éternité !&#8221;<br />
Traduction: &#8220;vivez pour être un bon mort et rien d&#8217;autre&#8221;.</p>
<p>Plus tard, quand les méchants arrivent et enlèvent sa mère, le petit garçon qui a bien retenu la leçon prends courage et sort de sa cachette pour courir comme un dératé vers les méchants en criant, ce qu&#8217;il l&#8217;amènera a porté de leurs sabres, et donc à se faire découper en morceaux, voilà qui est est intelligent !!!<br />
&#8220;Soit brave et mort.&#8221;</p>
<p>Si Naruto n&#8217;était pas arrivé pile poil pour le sauver, on enterrerait ses morceaux dans des boites séparées&#8230;</p>
<p>Et que fait Naruto ? Il le félicite !</p>
<p><img src="/upload/naruto-vol3-page116.png" title="naruto, vol3, page 116" alt="naruto, vol3, page 116" align="top" height="207" width="320" />  <img src="/upload/naruto-vol3-page117.png" title="naruto,vol3, page 117" alt="naruto,vol3, page 117" align="top" height="344" width="320" /> <img src="/upload/naruto-vol3-page118.png" title="naruto, vol3, page 118" alt="naruto, vol3, page 118" align="top" height="278" width="230" /><br />
L&#8217;on m&#8217;a répondu : Naruto est un gamin, il le félicite sans comprendre que son acté était insensé. C&#8217;est faux. Naruto agit exactement comme le noble héros. Il ne s&#8217;agit pas ici d&#8217;un second degré sous-entendant qu&#8217;en fait, le petit aurait mal agit.<br />
Parce que justement le gamin ne meurt pas. Il est récompensé de son acte de bravoure par l&#8217;arrivée à point-nommé du héros qui redresse la situation. Un second degré aurait été possible si la mise en scène avait proposé une fin sans gloire pour le gamin, simplement massacré sans que sa mort n&#8217;engendre de profit (car sa mère est quand même enlevée).</p>
<p>D&#8217;autres possibilité d&#8217;actions ? Il aurait pu :</p>
<ul>
<li>Suivre les gars de loin et trouver leur repère.</li>
</ul>
<ul>
<li> Sauver sa mère pendant qu&#8217;elle est enfermée quelque part discrètement.</li>
</ul>
<ul>
<li> Aller en avant du chemin des bandits et leur tendre un piège, d&#8217;une facon ou d&#8217;une autre.</li>
</ul>
<ul>
<li>Ou foncer comme un dératé vers les bandits, mais par exemple avec une perche prise sur le chemin, chargeant. Il n&#8217;aurai certainement pas réussi avec ca non plus, mais au moins il n&#8217;attaquait pas des sabres aiguisés avec ses mains !!!</li>
</ul>
<p>D&#8217;autre exemples de trucs qui m&#8217;énervent sur ce genre d&#8217;attitude dans le post précédent.</p>
<h3>Les personnages au passé torturé</h3>
<p>Par la suite, j&#8217;ai boycotté Naruto pendant fort longtemps, et puis, pour être un peu de courant de tout ce dont les gens parlaient, disant que c&#8217;était super bien, et me disant que ce passage du tome 3 était peut-être ponctuel, j&#8217;ai lu des tomes à la Fnac (merci au passage).</p>
<p>Rien d&#8217;aussi révoltant qu&#8217;au tome 3 effectivement, même si des simplicités de scénario m&#8217;ont ennuyées (au tome 3 ou 4, un héros &#8220;meurt&#8221; de deux énorme pointes de métal dans le cou. Mais en fait, le type qui l&#8217;avait attaqué était perturbé dans sa tête et avait décidé de ne pas le tuer, il avait donc lancé ses pointes en <em>evitant les points vitaux</em> ! Oui, y&#8217;a rien d&#8217;important dans le cou.)</p>
<p>Par contre un autre problème c&#8217;est fait sentir : l&#8217;auteur manquant de scénario pour le background de ses personnages, qu&#8217;il se sent toujours obligé de raconter, il utilise le même à chaque fois !!!</p>
<p>Chaque gamin a un passé tourmenté empreint de solitude, et est maudit par un pouvoir qui est la cause de ses malheurs et la raison de sa toute-puissance.</p>
<ul>
<li>Naruto
<ul>
<li>Il a le pouvoir du Démon-Renard en lui.</li>
<li>Il a perdu ses parents (tués par le Renard) et vit seul.</li>
<li>Tout le monde hait le renard, et par extention, Naruto.</li>
<li>Depuis qu&#8217;il est petit, il aime pas les autres mais c&#8217;est le héros alors finira par aimer tout le monde</li>
</ul>
</li>
<li>Sasuké
<ul>
<li>Il a le pouvoir du Sharingan en lui.</li>
<li>Il a perdu TOUT SON VILLAGE (tués par son fréro) et vit seul.</li>
<li>Il déteste tout le monde parce que il déteste son frère</li>
</ul>
</li>
<li>Neji
<ul>
<li>Il a le pouvoir des yeux blancs qui voient des trucs de malade en lui.</li>
<li>Il a perdu son père parce qu&#8217;il est basse classe et hait grave sa soeur (cousine?) qui est haute classe.</li>
<li>il déteste le tout le monde, surtout la famille haute classe</li>
</ul>
</li>
<li>Gaara
<ul>
<li>Il a le pouvoir du Démon-Sable en lui</li>
<li>Je sais pas comment, mais il est clair qu&#8217;il a pas de famille</li>
<li>Il est rejeté de partout parce que c&#8217;est un psychopathe assassin qui tue avec le sable</li>
<li>Il déteste tout le monde, mais aime bien tuer tout le monde avec du sable</li>
</ul>
</li>
</ul>
<h3>Les flash-back et la psychologie à deux balles</h3>
<p>Des pages, des pages et des pages de copier-coller de cases précédentes (SOUVENT du chapitre PRECEDENT) avec le perso qui pense beaucoup.</p>
<h3>La mauvaise fois de Salagir</h3>
<p>Naruto (le dessin animé Naruto surtout) est responsable du développement, depuis de nombreuses années, d&#8217;un fléau terrifiant et mondial : le kancho.</p>
<p>Rien que pour cela, Naruto mérite la mort.</p>
<p><a href="http://outpostnine.com/editorials/teacher82.html">Pour explication, voir l&#8217;un ces mails recus ici (Anglais)<br />
</a>Très bon blog en passant, voici sa nouvelle adresse : <a href="http://www.gaijinsmash.net/">www.gaijinsmash.net</a></p>
<p>Bref voilà pourquoi Naruto est à la base de l&#8217;empire du mal.</p>
<p>Si je pense à d&#8217;autres détails, je les ajouterai ici.</p>
<p>(edit: saloperie de merde d&#8217;interface d&#8217;ecriture en ligne de chiottes qui double le texte sans raisons)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/8-ce-qui-ne-me-va-pas-avec-naruto/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Soyez Shônen !</title>
		<link>http://blog.salagir.com/12-soyez-shonen/</link>
		<comments>http://blog.salagir.com/12-soyez-shonen/#comments</comments>
		<pubDate>Tue, 28 Aug 2007 09:35:25 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Ca ne va pas du tout !]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/fr/12-soyez-shonen/</guid>
		<description><![CDATA[J&#8217;avais commencé un post sur un manga, et j&#8217;ai ouvert une parenthèse. Et j&#8217;ai trouvé que la parenthèse devenait grave longue alors voilà, c&#8217;est un post seul, et le prochain y fera référence.
Un peu de culture. Le Shônen, surtout dit dans un texte en français, représente une catégorie de mangas (la BD japonaises oui, comme [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;avais commencé un post sur un manga, et j&#8217;ai ouvert une parenthèse. Et j&#8217;ai trouvé que la parenthèse devenait grave longue alors voilà, c&#8217;est un post seul, et le prochain y fera référence.</p>
<p>Un peu de culture. Le <strong>Shônen</strong>, surtout dit dans un texte en français, représente une catégorie de mangas (la BD japonaises oui, comme Card Captor Sakura, <a href="http://dbz.salagir.com/" title="Ben quoi un peu d'autopromo">Dragon Ball</a>, Death Note. Souvent ils sont adapté en dessins animés mais sont en papier à la base).<br />
Cette catégorie est celle des lecteurs de sexe masculin, adolescents. C&#8217;est à dire que le manga est à priori pour le public des garçons adolescents (&#8221;shônen&#8221; veut dire &#8220;jeune garçon&#8221;).<br />
Souvent, le Shonen est un manga d&#8217;aventure, de baston, avec des héros balèzes et charismatiques qui défoncent des méchants (Dragon Ball, Saint Seiya (Chevaliers du Zodiaque), Naruto, sont des shonens).</p>
<p>Quelque chose d&#8217;assez récurent dans le Shonen, qui m&#8217;énerve des fois un peu, et des fois fortement, c&#8217;est que le héros (souvent une tête vide très résistante aux coups qui n&#8217;abandonne jamais, et fini par trouver en lui la force nécessaire pour détruire son ennemi à la base 10 fois plus fort que lui) fonce au lieu de penser. Et que ça marche.</p>
<p>Exemple : 10 tueurs professionnels en arme entrent chez toi et enlèvent ta petite amie. A ce moment tu peux 1) fuir, 2) appeler discrètement les flics, 3) te cacher puis les suivre, 4) chercher ton voisin ninja 5) foncer sur eux en criant AAAAAAAAAAAAHHHHH!!! et te prendre 384 balles dans le corps et mourir.</p>
<p>Si vous n&#8217;avez pas répondu la 5), vous n&#8217;êtes vraiment pas shônen ! Car c&#8217;est ça que le héros shônen fait, sinon c&#8217;est un sacré lâche.</p>
<p>Cette manière d&#8217;agir, de foncer et s&#8217;obstiner, jusqu&#8217;à se mettre en danger ou se tuer, est à l&#8217;opposé de ma manière de penser. C&#8217;est une chose. Mais c&#8217;est surtout quelque chose de profondément débile. Dans le sens où c&#8217;est une des multiples manières de cracher sur l&#8217;intelligence (les autres manières reviendront dans des posts futurs), pour la remplacer par de l&#8217;action bourrine.</p>
<p>Cela me fait penser a un autre mode de pensée completement absurde, que j&#8217;ai vu dans pleins d&#8217;autres mangas, celui de se positionner en victime au point de se laisser joyeusement enlever / tabasser / violer(?) car le héros est là pour nous sauver.<br />
Dans l&#8217;un d&#8217;entre eux, l&#8217;héroine était en train de se faire tabasser grave par des méchants très méchants, et elle passait sont temps à répéter &#8220;Bidule va me sauver, j&#8217;ai confiance en lui&#8221;.<br />
Et entre deux mandales elle pensait à lui plutot que de chercher à s&#8217;enfuir. &#8220;J&#8217;ai confiance, il viendra, j&#8217;en suis sûre&#8221;.<br />
Heureusement que, bien que de l&#8217;autre coté de la ville, misteur héros a vu qu&#8217;il y avait du grabuge et est arrivé !<br />
Bref moralité : soyez bourrins dans vos actions, soyez irréfléchi et héroiques, attendez que quelqu&#8217;un vous sauve pendant que vous espérez. Ayez la foi.</p>
<p>Pour revenir sur le sujet, avec quelques exemple. Dessin animé à vocation humoristique, <em>Mahou Senshi Riui</em> fini par être plus premier degrés qu&#8217;autre chose, et du coup, chiant. Dans un épisode, ce con de Riui continue à donner des grands coups de pioche dans une grotte qui a 99% de chances de s&#8217;écraser sur lui, car dit-il, &#8220;J&#8217;ai compris qu&#8217;être aventurier c&#8217;est aussi faire confiance à sa chance&#8230;&#8221; (=être con)<br />
A la fin ils sont projeté dehors par un torrent d&#8217;eau libéré par les coups de pioches puis la grotte s&#8217;écroule. D&#8217;autres personnages l&#8217;engueulent d&#8217;abord (&#8221;T&#8217;aurai pu crever !&#8221;) mais après et <em>au fond d&#8217;eux</em> l&#8217;admirent pour son courage (ark ! Continuez comme ca, y&#8217;en aura plus beaucoup d&#8217;aventuriers sur terre)&#8230;</p>
<p>Bref, la morale &#8220;tu ne pourras plus rien faire une fois mort&#8221; qui concluait qu&#8217;il vaut mieux réfléchir et trouver une solution viable est remplacée par &#8220;fonce comme un con mourir n&#8217;est pas grave&#8221; ce qui amène a d&#8217;autres délires dans bien des séries.</p>
<p>Des gars qui ouvrent une porte brûlante avec les mains nues (il en va de la vie d&#8217;une ou plusieurs personnes). Résultat théorique : plus de mains et à la place, des os avec de la chair brulée dessus, pour finir d&#8217;ouvrir une porte ca aide pas. Conclusion : connerie immense qui met tout le monde en danger.</p>
<p>Alternative : réfléchir 4 secondes, prendre une barre qui traine, la coincer dans le mécanisme de la porte et ouvrir sans toucher le truc brûlant. Résultat théorique : mains complètes et même force décuplée par le levier. Conclusion : bien plus de chances de sauver tout le monde.<br />
Il n&#8217;y a pas de barre ? Alors alternative : prendre un vêtement et se l&#8217;enrouler dans les mains avant d&#8217;attaquer le mécanisme&#8230;</p>
<p>Pourtant c&#8217;est la première méthode qui fut utilisée par le père Hikari dans Evangelion (qui ouvre la capsule où Rei est prisonnière) et par le gamin dans Trigun (qui tourne un levier pour arrêter un train fou). Evidement, on a bien plus l&#8217;air d&#8217;un héros qui a tout donné, avec les mains brulées. Et puis la fumée sur les mains qui tiennent le levier, c&#8217;est tellement plus spectaculaire.</p>
<p>Passons pour conclure à un petit débat sur le roi, voire le dieu de la persévérance qui marche pas et qui tue les gens : Saint Seiya (oui, les Chevaliers du Zodiaque).<br />
Seiya le chevalier pégase relance 67 fois la flèche d&#8217;or dans la gueule à Poséidon alors qu&#8217;à <em>chaque fois</em> elle lui revient sur sa gueule ou celle d&#8217;un de ses amis (qui lui disent de continuer, car ca les dérange pas trop de mourir une ou deux fois pour la cause). Et il recommence, et il recommence, et à chaque fois le Dieu Poséidon lui dit que ca ne peut pas marcher, et à chaque fois la flèche s&#8217;arrête devant Poséidon, et fonce sur Seiya.</p>
<p>A cela, &#8220;aldo&#8221; de fr.rec.anime répond:<br />
Peut-être. Cela dit, replaçons-nous dans la situation : la Terre va être bousillée par Poséidon dans cinq minutes (à rallonge) et tout le monde va y passer. Son aura est telle que rien ni personne ne peut l&#8217;atteindre. La flèche du Sagittaire et la foi sont les deux armes les plus puissantes qu&#8217;ils aient à leur disposition. Que ferais-tu ? Tailler le bout de gras avec lui pendant ces cinq dernières minutes ?<br />
S&#8217;il y a ne serait-ce que le plus petit espoir, même infime, autant tenter le coup puisque la mort est promise de toute manière.<br />
Que faut il faire? tenter quelque chose qui n&#8217;a qu&#8217;une chance sur un million de reussir ou ne rien faire?</p>
<p>Ma réponse : Tenter ce qu&#8217;il n&#8217;a qu&#8217;une chance sur 10 de réussir.<br />
C&#8217;est la 3e solution magique qui consiste à réfléchir 3 secondes avant d&#8217;agir, ce qui différencie les humains des poissons en gros.</p>
<p>Aldo toujours: Cette oeuvre est ecrite par un asiatique pour des asiatique (Leur morale semble légèrement differente)</p>
<p>Certes, et c&#8217;est à prendre en compte, mais si je peux tolérer une morale qui dit : &#8220;suicide-toi pour le bien du groupe&#8221; j&#8217;ai du mal à piger celle du &#8220;agis comme un con pour avoir l&#8217;air classe&#8221;.</p>
<p>Pourquoi je vous parle de tout cela, pourquoi est-ce important ? Parce que le shonen parle à des gens influencable (des humains), très influencables (pas adultes), et qu&#8217;il est quand même porteur, même si à son insu, d&#8217;un exemple.<br />
Il permet de définir ce qui est cool et ne l&#8217;est pas.<br />
Alors moi, je ne peux pas laisser passer ça, je gueule.</p>
<p>Je cite Alexandre Amirà (sur fr.rec.anime toujours, c&#8217;était dans le même fil de discussion) : Parce que les produits de divertissement sont un véhicule plus ou moins important des valeurs morales d&#8217;une société.<br />
Il ne faut pas croire qu&#8217;ils sont simplement innocents : Les produits reflètent quelque chose et perpétuent quelque chose ; ils peuvent servir à des fins publicitaires, propagandistes ou éducatives par exemple.</p>
<p>Voilà, méfiez-vous du shônen.</p>
<p>Le titre vient d&#8217;une citation de <a href="http://jashugan.ratance.net/blog/index.php">Jashugan</a> qu&#8217;il a faite sur fr.rec.anime, merci à lui :)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/12-soyez-shonen/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Programmer un Terminator</title>
		<link>http://blog.salagir.com/10-programmer-un-terminator/</link>
		<comments>http://blog.salagir.com/10-programmer-un-terminator/#comments</comments>
		<pubDate>Tue, 24 Jul 2007 16:19:01 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/fr/10-programmer-un-terminator/</guid>
		<description><![CDATA[Bientôt un mois d&#8217;inactivité, comme quoi&#8230;
Pourtant j&#8217;ai pleins d&#8217;articles en attente&#8230; mais le sont pour une bonne raison, ils ne sont pas terminés. J&#8217;en ai même jeté un, jugé inintéressant.
Aujourd&#8217;hui nous allons essayer de satisfaire les geeks du public en crachant un truc débile que j&#8217;ai écris il y a quelques temps dans un coin [...]]]></description>
			<content:encoded><![CDATA[<p>Bientôt un mois d&#8217;inactivité, comme quoi&#8230;</p>
<p>Pourtant j&#8217;ai pleins d&#8217;articles en attente&#8230; mais le sont pour une bonne raison, ils ne sont pas terminés. J&#8217;en ai même jeté un, jugé inintéressant.</p>
<p>Aujourd&#8217;hui nous allons essayer de satisfaire les geeks du public en crachant un truc débile que j&#8217;ai écris il y a quelques temps dans un coin sans jamais pouvoir le placer nulle part&#8230;</p>
<p>C&#8217;est hautement scientifique.</p>
<p>Un Terminator (le robot humain qui tue à tout va) a besoin de savoir ce qu&#8217;il se passe autour de lui. Il doit donc avoir :</p>
<ul>
<li>Une webcam (elle a pas l&#8217;air haute résolution, et en plus elle voit des niveaux de rouge. Mais à l&#8217;évidence, elle voit aussi dans le noir)</li>
<li>Un microphone</li>
<li>Une base de donnée avec des infos pour gérer les situations, et du code pour l&#8217;utiliser</li>
<li>de la mémoire</li>
</ul>
<p>Alors quand le terminator entends une phrase, le code utilisé doit plus ou moins ressembler à ça :</p>
<p>(ceci est du code traduit, l&#8217;original ayant été écrit par une machine, il est certainement illisible. Déjà, un ordinateur n&#8217;écrit sûrement pas de code source avec des commentaires dedans. Plutôt directement en binaire. Le langage utilisé est le D+++, le successeur du&#8230; delphi ;p)</p>
<pre>
// this runs all the time
sound::deamon(stream &amp;input) {
	megaint attention=0;
	triple tmp;
	if ((tmp=levelOfSound(input)) &gt; SOUND_SATURATION * 0.84  / distance(source(&amp;input)))
		attention += tmp * 3.4;
	if ((tmp=surrounding::people::number) &lt; 5)
		attention *= 5-tmp;
	// sniped due to long complexity of harder code with Poisson maths and OCR stuff
	// believe me you *don't want* to see it
	if (attention &gt; 32.4) sound::event(sound::portion(input));
}

// don't get surprised: robots are evil, so they use proprietary formats
sound::event(wmv &amp;sound) {
	string type;
	GUY guy = sound::whoIsItFrom(sound);
    // snip again tons of code analysing the sound. let's go directly to....
	elseif (type=='enquiery') {
		array[string] A = database::get("behaving.situationsAnswers",
			"`question` LIKE ('"&gt;sound.toText&gt;"', level=5)");
		foreach (A -&gt; int k : string a) {
			// note: in D+++ you can transform a string into a structure like it's nothing.
			// The value of the string becomes the "default" field
			// note on "process" : yeah, I began to be tired
			A[k].notation = process(timeOfDay, a, friendility(guy), /*...*/);
		}
		arsort(A, 'notation');
		voice::tell( A[0].default );
		return;
		// no return value it's not necessary.
		// Not even "true/false" as the program never bug
	}
	elseif (type=='insult') {
   // snip what's after
}</pre>
<p>A la ligne database::get, le robot a les phrases parmis lesquelles il doit choisir sa réponse. Mais sont-elle vraiment &#8220;affichées&#8221; sur la visualisation webcam ? Sûrement pas, elle seront ailleurs en mémoire !</p>
<p>D&#8217;ailleurs en écrivant le texte là, on cache ce que voit le Terminator, le rendant bien moins efficace ! Ca vaut aussi pour l&#8217;indicateur &#8220;Backup Battery Loaded&#8221; (c&#8217;est un simple flag!)</p>
<p>Quoi,  vous le saviez déjà que Terminator n&#8217;est pas très logique ? Je me décarcasse et tout ca pour rien&#8230;</p>
<p>Bon la prochaine fois, je vais essayer de finir un vrai article.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/10-programmer-un-terminator/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ils souffrent et c&#8217;est d&#8217;ta faute !</title>
		<link>http://blog.salagir.com/6-ils-souffrent-et-cest-dta-faute/</link>
		<comments>http://blog.salagir.com/6-ils-souffrent-et-cest-dta-faute/#comments</comments>
		<pubDate>Mon, 25 Jun 2007 14:41:27 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Je pense donc j'essuie]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/fr/6-ils-souffrent-et-cest-dta-faute/</guid>
		<description><![CDATA[Aucun animal n&#8217;a été maltraité pendant la réalisation de ce post.
Non, je mens. Pendant la réalisation de ce post, pleins d&#8217;animaux sont morts. Y&#8217;en a beaucoup qui se sont fait tué par les hommes, des mignons petits chatons innocents ont sûrement été noyé quelque poart dans le monde, et des chiens se sont fait couper [...]]]></description>
			<content:encoded><![CDATA[<p>Aucun animal n&#8217;a été maltraité pendant la réalisation de ce post.</p>
<p>Non, je mens. Pendant la réalisation de ce post, pleins d&#8217;animaux sont morts. Y&#8217;en a beaucoup qui se sont fait tué par les hommes, des mignons petits chatons innocents ont sûrement été noyé quelque poart dans le monde, et des chiens se sont fait couper la libido par un véto sadique, ils ont perdu leur virilité pour toujours. Des insectes ont étés génocidés pour protéger nos récoltes et des milliers de poissons, veaux, vache et cochons, et poulets ont été tués pour être mangés.<br />
J&#8217;ai pris des notes sur du papier fait à partir d&#8217;arbres morts. Chaque seconde que l&#8217;on vie, et parce que l&#8217;on vie, nous détruisons une partie du monde pour continuer à vivre avec ce confort.<br />
Parfois, il est bon de se rappeller cela.</p>
<p>(version anglaise, ou plutot version originale, légerement retouchée, puisque ce texte vient d&#8217;un commentaire que je posta sur GeeksWorld il y a fort longtemps)</p>
<blockquote><p> No animal was harmed during the making of this post.<br />
No, I&#8217;m lying. During the making of this post, lots of animal died. Lots of them were killed, some kitten where certainly drowned somewhere is the world and dogs where &#8220;fixed&#8221; and lost they manhood forever. Insect where killed to protect our crops and thousands of fish, cows, chicken when killed to be eaten by man.<br />
I took notes on paper that is made of killed trees. Every second we live, and because we do, we destroy a very big part of the world so we can continue to live in this comfort.<br />
Sometimes it&#8217;s good to remember that.</p></blockquote>
<p>C&#8217;est pas fini.<br />
Pour continuer dans la lignée, je vais causer un peu du non végétarien. Il s&#8217;agit de personnes mangeant des fois de la viande.<br />
Il y a des non vegetariens qui ne mangent pas certaines viandes parce qu&#8217;elles leur rappellent trop l&#8217;animal qu&#8217;il a été. Beau conditionnement non ? Se rendre compte, a la vue d&#8217;un petit animal, qu&#8217;on ne le mangerait pour rien au monde, puis manger un steak tranquillement par la suite ?..</p>
<p>Qui parmi vous ici se refuserait à manger du chat ? Plus que de végétariens. Pourtant, le lapin est un animal tout aussi mignon et pleins d&#8217;os (ouais c&#8217;est nul le lapin, y&#8217;a que des os), et il paraît qu&#8217;au goût c&#8217;est un peu pareil&#8230;<br />
Mais le chat est mignon, soyeux, griffu (heu est-ce une qualité?) et présent dans des millions de foyers. On ne mange pas ceux avec qui a des liens, on les enterre, c&#8217;est ainsi qu&#8217;on fait.<br />
Alors pourquoi ne pas manger les chats qu&#8217;on connaît pas ? Parce que comme les gens qu&#8217;on connaît pas, on englobe toute l&#8217;espèce. Je vis avec, je ne mange pas de. Connaissez-vous beaucoup de gens qui font de l&#8217;équitation et mangent du cheval ?<br />
N&#8217;allez pas vivre à la ferme, si on vous donne un petit lapin, il pourra finir à table, et cela boulversera toutes vos émotions. On commence comme ça, puis on devient japonais et on mange des gens (oui il est essentiel de devenir japonais d&#8217;abord).</p>
<p>Je pense que vous aurez compris ici les dangers de vivre à la ferme. Ceci était un message d&#8217;utilité publique.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/6-ils-souffrent-et-cest-dta-faute/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Qui sont les maîtres de la planète ?</title>
		<link>http://blog.salagir.com/5-qui-sont-les-maitres-de-la-planete/</link>
		<comments>http://blog.salagir.com/5-qui-sont-les-maitres-de-la-planete/#comments</comments>
		<pubDate>Wed, 13 Jun 2007 18:14:34 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Je pense donc j'essuie]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/fr/5-qui-sont-les-maitres-de-la-planete/</guid>
		<description><![CDATA[Qui sont les maîtres de la planète ?
Quelle espèce peut s&#8217;affirmer comme étant dominante ? On pourrait croire que c&#8217;est l&#8217;homme, puisqu&#8217;il l&#8217;a transformée et investie, pourtant ce n&#8217;est pas si évidant. Beaucoups d&#8217;humains souffrent, et la plupart de leurs modifications de la planète les mène plus à leur perte qu&#8217;à leur confort et leur [...]]]></description>
			<content:encoded><![CDATA[<p>Qui sont les maîtres de la planète ?</p>
<p>Quelle espèce peut s&#8217;affirmer comme étant dominante ? On pourrait croire que c&#8217;est l&#8217;homme, puisqu&#8217;il l&#8217;a transformée et investie, pourtant ce n&#8217;est pas si évidant. Beaucoups d&#8217;humains souffrent, et la plupart de leurs modifications de la planète les mène plus à leur perte qu&#8217;à leur confort et leur bien-être.<br />
Grâce à de longues recherches et de complexes déductions, nous pouvons enfin vous révéler les résultats de notre enquête.<br />
Les maîtres de la Terre, ce sont les Chats.<br />
Pour vous en convaincre, revenons 100 000 ans en arrière. En ce temps-là, les plus grandes espèces avaient toutes leurs chances de devenir numéro un, et mettaient en marche les plans qui leur permettraient d&#8217;assouvir leur pouvoir. Aucune espèce n&#8217;avait l&#8217;intelligence humaine, la seule que l&#8217;on connaît, mais elles avaient toutes un pouvoir collectif de décision et de manipulation. Ce pouvoir reste indescriptible aujourd&#8217;hui (source: Dieu qui m&#8217;a parlé dans mon sommeil).</p>
<p>Les félins étaient l&#8217;espèce qui avait le plus de &#8220;Pouvoir&#8221;. Ils étaient rusés et puissants. Ils firent un conseil pour décider de leur avenir.<br />
Recherchant le confort, les félins se divisèrent en deux groupes. D&#8217;un côté, ceux qui voulaient régner sur leur territoire eux-même et de l&#8217;autre ceux qui voulaient des esclaves pour leur construire un monde de confort. Les premiers devinrent grands, forts et nobles, augmentant leur force (Tigre), leur vitesse (guépard), etc. Les seconds cherchèrent une espèce à manipuler.<br />
Les singes à ce moment développaient l&#8217;Intelligence et construisaient des petites maisons pour se protéger de la pluie. Voyant que ces animaux appréciaient et savaient faire du confort, ils furent la cible de ces félins. Utilisant leur Pouvoir, ce groupe qui s&#8217;appellait les chats aida sans se faire remarquer les singes à développer leur Intelligence et les dirigèrent dans leurs actions afin qu&#8217;ils croissent, se multiplient et couvrent le monde de constructions pleines de confort à but unique d&#8217;y faire vivre les chats.<br />
Pleins de sagesse, les chats se mirent à devenir tout petits, afin que les constructions de leurs esclaves que l&#8217;on appellait déjà humains leur soit très grandes. Puis, patients, ils laissaient leur esclaves construire leur monde sans se faire remarquer eux-même.</p>
<p>Les loups, qui n&#8217;étaient pas des imbéciles pour la plupart, remarquèrent ce qu&#8217;il se passait et beaucoup furent jaloux. Comprenant que les chats avaient formé les humains pour qu&#8217;ils les nourrissent et leur construisent des maisons, ils voulurent s&#8217;approprier leur place. Après tous, les humains pouvaient aussi bien servir les loups.<br />
De nombreux loups quittèrent leur groupe et s&#8217;approchèrent des humains pour faire ami-ami. Les autres les prévinrent que les Chats étaient puissants et n&#8217;accepteraient pas une telle chose, mais ils s&#8217;en moquèrent. Les Chats n&#8217;avaient pas encore pris contact avec les humains, et il serait trop tard.<br />
Evidement, prendre contact avec les humains alors qu&#8217;il était trop tôt leur en coûta: les humains utilisaient les loups pendant la chasse et à d&#8217;autres tâches, en plus de les nourrir et les loger. Les Chats se moquèrent d&#8217;eux : &#8220;Vous vous croyez leur maîtres, mais vous êtes comme les chevaux: les esclaves de nos esclaves!&#8221;. Mais les loups apprivoisés étaient déjà contents d&#8217;être nourris et logés: &#8220;Vous êtes devenus petits et ridicules. Essayez de prendre notre place et nous vous chasserons. Le humains nous font confiance. Dans quelques temps nous seront leurs véritables maîtres&#8221;.<br />
Ils payèrent très cher leur arrogance. Loin de devenir leur maîtres, ils durent s&#8217;écraser de plus en plus face aux humains pour ne pas se faire jeter. Les Chats utilisèrent leur Pouvoir et les Loups se transformèrent en Chiens. Cette race dégénéré des loups, de toutes formes, alliait stupidité et ridicule. Certains étaient courts sur pattes et ressemblaient à des saucisses, d&#8217;autres furent des boules de poils pitoyables, la plupart aboyaient sans savoir pourquoi. Les rares à garder un semblant de dignité furent définitivement esclaves des humains et ne purent pas s&#8217;en passer, voué d&#8217;une admiration et d&#8217;un amour sans bornes envers les futurs serviteurs des chats.</p>
<p>Bien longtemps après, les chats entrèrent dans la vie des humains. Ils furent traités comme des dieux dans leur pays d&#8217;origine, puis ils s&#8217;éparpillèrent à travers le monde où les humains avaient construits des habitations pour eux.<br />
Aujourd&#8217;hui, le chat vit dans son canapé, sur ses draps moelleux que vous croyez stupidement avoir achetés pour vous. Vous le nourrissez et le caressez, et ce uniquement quand il en a envie. Le Chat n&#8217;est pas arrogant et n&#8217;hésite pas à s&#8217;amuser avec ses serviteurs, ni même à leur montrer un peu d&#8217;amour et de reconnaissance. Mais n&#8217;oubliez pas que votre Chat est en fait votre maître, et dès que vous fermerez une porte, il vous le rappellera.</p>
<p>Epilogue: les pigeons<br />
Aujourd&#8217;hui, nous avons construit tout le confort dont les chats pourraient rêver. Mais apparament, le triste destin des chiens n&#8217;a pas été compris, puisque les pigeons ont lancé une OPA sur les esclaves des chats. En effet, les villes construites par les humains sont grises. Et pourquoi ? Parce que les pigons le voulaient ainsi. Ils ont utilisés leur pouvoirs pour influencer l&#8217;humanité. Cela ne s&#8217;arrête pas là. Ils se moquent sadiquement des humains en restant au milieu de la route lorsqu&#8217;une voiture approche, sans avoir peur. La vangeance des chats a déjà commencée. Les pigons sont modifiés, ils commencent déjà par se balader en avancant la tête d&#8217;avant en arrière d&#8217;une façon totalement ridicule&#8230; Ce n&#8217;est que le début !</p>
<p>Annexes : preuves en tout genre.</p>
<p>Ici, un humain fait son travail de serviteur de Chat, sans le savoir.</p>
<p><a href="http://www.maliki.com/" title="Strip par Maliki - Cliquez pour voir le site" target="_blank"><img src="/upload/cat_maliki.jpg" title="Image Maliki" alt="Image Maliki" width="760" /></a></p>
<p>Les humains font de grandes maisons car les chat aiment la hauteur. Ici, un rappel de leur combat contre les pigeons.</p>
<p><img src="http://www.geeksworld.org/pages/315-fr.png" title="Geek's World" alt="Geek's World" height="511" width="760" /></p>
<p>Tout ce que vous croyez avoir inventé pour vous, vous l&#8217;avez inventé pour les chats :</p>
<p><img src="/upload/cat_is_sleeping.jpg" height="300" width="400" /> <img src="/upload/cat_sleep_bear.jpg" height="300" width="400" /> <img src="/upload/300s-cheesedoodle.jpg" height="425" width="432" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/5-qui-sont-les-maitres-de-la-planete/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ne jamais avouer, toujours tenir</title>
		<link>http://blog.salagir.com/3-ne-jamais-avouer-toujours-tenir/</link>
		<comments>http://blog.salagir.com/3-ne-jamais-avouer-toujours-tenir/#comments</comments>
		<pubDate>Wed, 02 May 2007 09:55:54 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/fr/3-ne-jamais-avouer-toujours-tenir/</guid>
		<description><![CDATA[NOTA: afin de ne pas recevoir de spam (justement) sur les emails donnés ici, j&#8217;ai changé, à tous, &#8220;geek&#8221; par &#8220;geak&#8221;
Je ne résiste pas à l&#8217;envie de vous montrer un spam que j&#8217;ai reçu, auquel j&#8217;ai répondu. Ma réponse était évidement méchante, c&#8217;est pourquoi ils y ont répondu, cordialement. Mais ont démentit tout spam dans [...]]]></description>
			<content:encoded><![CDATA[<p>NOTA: afin de ne pas recevoir de spam (justement) sur les emails donnés ici, j&#8217;ai changé, à tous, &#8220;geek&#8221; par &#8220;geak&#8221;</p>
<p>Je ne résiste pas à l&#8217;envie de vous montrer un spam que j&#8217;ai reçu, auquel j&#8217;ai répondu. Ma réponse était évidement méchante, c&#8217;est pourquoi ils y ont répondu, cordialement. Mais ont démentit tout spam dans leur action. Ne jamais avouer.</p>
<p>Voici le mail que j&#8217;ai recu à l&#8217;adresse spamkiller@geaksworld.org. Cette adresse est une partie de l&#8217;adresse présente sur mon site, qui elle est : salagir+spamkiller@geaksworld.org. En effet, le &#8220;plus&#8221; est authorisé dans la partie gauche d&#8217;un mail. Mais la plupart des robots récupérateurs de mails ne le savent pas !</p>
<p>Et mon plus dans l&#8217;email sert spécifiquement à cela: séparer très facilement les spammeurs des autres. Evidement il est tombé dedans. Plus intéressant encore, le To: contennait, pour être précis : &#8220;Geeksworld &lt;spamkiller@geaksworld.org&gt;&#8221;, donc pas mon pseudo.</p>
<p>Voici le mail :</p>
<blockquote><p>Sujet: Je souhaite rajouter votre site sur mon annuaire [****].com</p>
<p>De: [****] &lt;pub@[****].com&gt;</p>
<pre>Cher Geeksworld,</pre>
<pre>j'ai visité votre site http://www.geeksworld.org/ et je pense que son
contenu pourrait être intéressant pour les visiteurs de notre site web.
Nous sommes une société de service à la personne agréée par l'état dans
le domaine de l'assistance et de la formation informatique à domicile.
Je vous propose de vous référencer dans notre annuaire à l'adresse
suivante :

http://www.[****].com/annuaire/index.php

Je serai très heureux de compter votre organisme parmi nos références.
Je vous souhaite une excellente journée et à très bientôt sur notre
site !

Cordialement,

[**prenom nom**]
De l'unité [***][***mail***]

Unité [***]
[** adresse postale **]
Tél : [* tel a priori valide ;) *]</pre>
</blockquote>
<p>Un spam avec adresse et téléphone, c&#8217;est sympa.</p>
<p>Sinon on y voit le coup classique : il dit qu&#8217;il veut ajouter mon site, puis qu&#8217;il voudrait que mon site soit dedans, et enfin, me demande de l&#8217;enregistrer moi même.</p>
<p>En suivant son lien, je tombe sur un annuaire a peu près aussi personnalisé que ce blog, c&#8217;est à dire pas, et avec sur la page de garde, en haut, la phrase suivante, qui m&#8217;amuse beaucoup :  	<span class="text_index_annuaire">&#8220;<em>Cet annuaire contient 35 sites répartis dans 73 catégories</em>&#8220;.</span></p>
<p>J&#8217;ai donc fini par répondre ceci :</p>
<blockquote>
<pre>Cher spammeur.Merci d'avoir spammé l'adresse à spam de mon site, montrant ainsi votre
robotitude au monde. Robotitude exacerbée par le fait que je ne
m'appelle pas Geeksworld, comment je m'appelle est écris en très gros
sur le site, sur toutes les pages.

Inutile de me demander l'autorisation de mettre mon site sur votre
annuaire : j'accepte toujours. Je serai ravi qu'il le soit, on ne
crache pas sur un lien.

Inutile de me demander de le faire moi-même par contre, autant je trouve
fun de répondre aux robots qui donnent leurs emails et numéros de
téléphones, autant je n'ai pas de temps à prendre pour m'enregistrer sur
un annuaire qui a plus de catégories que de sites.

Puisque vous êtes à l'évidence un site nouveau, bienvenue sur le web, et
félicitation pour vos débuts par une faute professionnelle affligeante :
l'utilisation d'un robot spammeur.

"Geeksworld"</pre>
</blockquote>
<p>Et je me suis couché, heureux d&#8217;avoir augmenté d&#8217;un pouce la méchanceté du monde.</p>
<p>Et bien ils m&#8217;ont répondu, et voici la réponse :</p>
<blockquote>
<pre>Bonjour,

Nous n'avons pas prétention de séduire tout le web. Vous avez exprimé un
point de vue. Nous le respectons et vous remercions de votre réponse. 

 Peut être que le mail envoyé était erroné. Nous en sommes désolé. Ceci dit,
je crois qu'il y à méprise sur nos outils et intentions; nous n'utilisons
pas de robot spammer.

Je vous souhaite une bonne journée.

Cordialement, [***]</pre>
</blockquote>
<p>Délirant non ? J&#8217;aimerai bien voir la tête du commercial qui a vu mon site, l&#8217;a vraiment visité et aimé, et a utilisé mon adresse pour m&#8217;envoyer le spam, mais s&#8217;est dit &#8220;un plus? c&#8217;est bizarre, je vais enlever ce qu&#8217;il y a avant, donc &#8220;salagir&#8221;, et garder que &#8220;spamkiller&#8221; qui m&#8217;a l&#8217;air plus correct. Ah, je vais mettre un vrai nom aussi, hum&#8230; Il y a &#8220;Salagir&#8221; en gros sur le site mais je pense pas que ce soit le bon, je vais plutôt donner le nom de domaine en nom.</p>
<p>Evidement, peut-être qu&#8217;ils n&#8217;utilisent pas de robot, mais qu&#8217;ils ont récupéré ou acheté une liste de mails à des gens douteux, ce qui ne change rien.</p>
<p>En tout cas, n&#8217;oubliez pas. Ne jamais avouer, toujours tenir. Votre réputation est en jeu.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/3-ne-jamais-avouer-toujours-tenir/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ca y est, il a ouvert un blog&#8230;</title>
		<link>http://blog.salagir.com/1-bonjour-tout-le-monde/</link>
		<comments>http://blog.salagir.com/1-bonjour-tout-le-monde/#comments</comments>
		<pubDate>Thu, 12 Apr 2007 15:24:15 +0000</pubDate>
		<dc:creator>Salagir</dc:creator>
		
		<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://blog.salagir.com/fr/1-bonjour-tout-le-monde/</guid>
		<description><![CDATA[En fait, j&#8217;écrivais déjà les rares choses que j&#8217;avais à dire dans mes commentaires d&#8217;auteur de Geek&#8217;s World, mais c&#8217;était peine perdue, personne ne le lisait. De plus, j&#8217;essayais souvent de l&#8217;écrire en anglais, donnant un résultat pire.
Mon égo n&#8217;ayant pas de limites, j&#8217;aimerai encore écrire en anglais pour toucher le monde entier, mais il [...]]]></description>
			<content:encoded><![CDATA[<p>En fait, j&#8217;écrivais déjà les rares choses que j&#8217;avais à dire dans mes commentaires d&#8217;auteur de <a href="http://www.geeksworld.org/">Geek&#8217;s World</a>, mais c&#8217;était peine perdue, personne ne le lisait. De plus, j&#8217;essayais souvent de l&#8217;écrire en anglais, donnant un résultat pire.</p>
<p>Mon égo n&#8217;ayant pas de limites, j&#8217;aimerai encore écrire en anglais pour toucher le monde entier, mais il faut reconnaître qu&#8217;il n&#8217;y a pas de moyen pratique pour gérer deux langues dans un même blog. Certains articles peuvent être dans une langue et pas les deux, du coup c&#8217;est surtout le bordel. De plus, les commentaires en deux langue se mélangeant, ca ne rends pas bien, GsW toujours l&#8217;a montré.</p>
<p>Donc pour l&#8217;instant je commence en français, et si j&#8217;ai le courage, je dupliquerai carrément le blog en anglais. Mais doubler mon boulot, bof..</p>
<p>Le pourquoi du titre ? Il faut trouver des titres cools de blog de nos jours. C&#8217;est ça qui fait toute la différence quand on regarde une liste de liens vers des blogs !</p>
<p>Alors il faut donner le ton et le sujet directement dans le titre, le mieux est de faire une référence connue par les initiés, ou un jeu de mot. Plus universel, plus geek que <em>La Cité de la Peur</em>, il me reste l&#8217;autre film fantasmidable qui déchire, <em>Monty Python: Sacré Grall</em> pour ceux qui ne l&#8217;ont pas reconnu.</p>
<p>Le défaut que je vois, c&#8217;est que les gens vont croire qu&#8217;il s&#8217;agit d&#8217;un site qui se pose de grandes questions sur l&#8217;univers, alors que je suis plutôt du type à me donner des réponses, ou alors que c&#8217;est un blog anti-clérical, ce qui n&#8217;est pas faux, vous le verrez.</p>
<p>Le contenu maintenant. Je vais parler de sujets sur lesquels j&#8217;ai réfléchi et auxquels je vous livre mes pitoyables reflexions, à la manière de Scott Adams, mais je vous rassure, en moins bien.  Peut-être aussi de sujets que j&#8217;aime bien, uniquement s&#8217;il me semble que j&#8217;ai quelque chose à dire, c&#8217;est à dire rarement, donc mangas/bds, dessins animés japs, jeux vidéos (nintendo only), informatique, les standards, les chats.</p>
<p>Il est à noter que ce blog ne  &#8220;décollera&#8221; jamais : je posterai peu, car j&#8217;ai beaucoup, beaucoup d&#8217;autres activités webiques. Je vous conseille d&#8217;ores et déjà de vous abonner aux flux RSS et de ne plus jamais revenir sur le site lui-même ^_^</p>
<p>Edit et ouverture: j&#8217;en ai marre de tergiverser. Poubelle l&#8217;anglais pour le moment, il n&#8217;y aura que cette VF.  Je voulais que ce blog ne me complique pas la vie, alors allons-y !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salagir.com/1-bonjour-tout-le-monde/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
