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

<channel>
	<title>BabyGeek</title>
	<atom:link href="http://babygeek.free.fr/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://babygeek.free.fr</link>
	<description>Le blog d&#039;un jeune geek</description>
	<lastBuildDate>Wed, 04 Jan 2012 21:00:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>[SQL] GROUP BY sur deux champs (exemple des conversations)</title>
		<link>http://babygeek.free.fr/index.php/webmasters/sql-group-by-sur-deux-champs-exemple-des-conversations/</link>
		<comments>http://babygeek.free.fr/index.php/webmasters/sql-group-by-sur-deux-champs-exemple-des-conversations/#comments</comments>
		<pubDate>Wed, 04 Jan 2012 20:59:36 +0000</pubDate>
		<dc:creator>BabyGeek</dc:creator>
				<category><![CDATA[Webmasters]]></category>

		<guid isPermaLink="false">http://babygeek.free.fr/?p=1216</guid>
		<description><![CDATA[Dans le cas d'un script de messagerie en ligne par exemple, vous voulez lister toutes les conversations actives d'un utilisateur. Nous avons donc une table `messages` composée des champs suivants: - INT A.I message_id - INT expediteur_id - INT destinataire_id - TEXT message Nous voulons afficher à l'utilisateur la liste des conversations qu'il a entrepris [...]]]></description>
			<content:encoded><![CDATA[<p>Dans le cas d'un script de messagerie en ligne par exemple, vous voulez <strong>lister toutes les conversations</strong> actives d'un utilisateur.</p>
<p>Nous avons donc une <strong>table `messages`</strong> composée des champs suivants:<br />
- INT A.I <strong>message_id</strong><br />
- INT <strong>expediteur_id</strong><br />
- INT <strong>destinataire_id</strong><br />
- TEXT <strong>message</strong></p>
<p>Nous voulons afficher à l'utilisateur <strong>la liste des conversations</strong> qu'il a entrepris avec d'autres utilisateurs.<br />
Pour cela nous utilisons la fonction <strong>GROUP BY avec deux paramètres</strong>:</p>

<div class="wp_syntax"><div class="code"><pre class="mysql" style="font-family:monospace;"><span style="color: #990099; font-weight: bold;">SELECT</span> <span style="color: #000099;">MAX</span><span style="color: #FF00FF;">&#40;</span>message_id<span style="color: #FF00FF;">&#41;</span>
<span style="color: #990099; font-weight: bold;">FROM</span> messages
<span style="color: #990099; font-weight: bold;">WHERE</span> <span style="color: #FF00FF;">&#40;</span><span style="color: #008000;">`expediteur<span style="color: #008080; font-weight: bold;">_</span>id`</span> <span style="color: #CC0099;">==</span> $leUserIdDuClient<span style="color: #FF00FF;">&#41;</span> <span style="color: #CC0099; font-weight: bold;">OR</span> <span style="color: #FF00FF;">&#40;</span><span style="color: #008000;">`destinataire<span style="color: #008080; font-weight: bold;">_</span>id`</span> <span style="color: #CC0099;">==</span> $leUserIdDuClient<span style="color: #FF00FF;">&#41;</span> 
<span style="color: #990099; font-weight: bold;">GROUP BY</span> <span style="color: #000099;">GREATEST</span><span style="color: #FF00FF;">&#40;</span> <span style="color: #008000;">`expediteur<span style="color: #008080; font-weight: bold;">_</span>id`</span> <span style="color: #000033;">,</span> <span style="color: #008000;">`destinataire<span style="color: #008080; font-weight: bold;">_</span>id`</span> <span style="color: #FF00FF;">&#41;</span> <span style="color: #000033;">,</span> <span style="color: #000099;">LEAST</span><span style="color: #FF00FF;">&#40;</span> <span style="color: #008000;">`expediteur<span style="color: #008080; font-weight: bold;">_</span>id`</span> <span style="color: #000033;">,</span> <span style="color: #008000;">`destinataire<span style="color: #008080; font-weight: bold;">_</span>id`</span> <span style="color: #FF00FF;">&#41;</span></pre></div></div>

<p><strong>Dans la clause WHERE</strong> on indique que l'on recherche les messages dans lesquels l'utilisateur est impliqué.<br />
Comme l'utilisateur se trouve soit dans <strong>expediteur_id</strong> soit dans <strong>destinataire_id</strong>, on classe simplement ces deux champs dans l'ordre décroissant pour grouper tous les messages concernant ces 2 utilisateurs (dans les deux sens), d'où l'utilisation de <strong>GREATEST</strong> et <strong>LEAST</strong>.<br />
<strong>Et le "MAX(message_id)" ?</strong> Dans notre exemple, il peut être utile d'afficher la date du dernier message en même temps à côté du nom de la conversation, ce bout de code permet donc de ne <strong>garder que le dernier message du groupe</strong>, à adapter bien sur.</p>
]]></content:encoded>
			<wfw:commentRss>http://babygeek.free.fr/index.php/webmasters/sql-group-by-sur-deux-champs-exemple-des-conversations/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>[PHP] Division des résultats d&#8217;une requête MySQL par pages</title>
		<link>http://babygeek.free.fr/index.php/webmasters/php-division-des-resultats-dune-requete-mysql-par-pages/</link>
		<comments>http://babygeek.free.fr/index.php/webmasters/php-division-des-resultats-dune-requete-mysql-par-pages/#comments</comments>
		<pubDate>Tue, 03 Jan 2012 17:16:50 +0000</pubDate>
		<dc:creator>BabyGeek</dc:creator>
				<category><![CDATA[Webmasters]]></category>

		<guid isPermaLink="false">http://babygeek.free.fr/?p=1207</guid>
		<description><![CDATA[Diviser les résultats d'une requête MySQL en pages permet d'augmenter l'expérience utilisateur et par la même occasion soulager le serveur, on affiche souvent en plusieurs pages les articles d'un blog ou les résultats d'une recherche. Dans ce tutoriel nous allons voir comment obtenir le résultat de la requête en fonction de la page demandée et [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Diviser les résultats d'une requête </strong>MySQL en pages permet d'<strong>augmenter l'expérience utilisateur</strong> et par la même occasion <strong>soulager le serveur</strong>, on affiche souvent en plusieurs pages les articles d'un blog ou les résultats d'une recherche.<br />
Dans ce tutoriel nous allons voir comment obtenir le résultat de la requête en fonction de la page demandée et comment afficher un petit menu de navigation en bas de page avec des accès rapides aux pages précédentes et suivantes.<br />
</p>
<h3>Structure</h3>
<p>On a une table avec des entrées que l'on veut afficher dans l'ordre <strong>décroissant</strong> grâce à l'index <strong>"id"</strong>.<br />
On utilisera<strong> le paramètre "floor"</strong> pour indiquer quelle page on veut au script PHP.<br />
On classera les résultats par <strong>étages décroissants de x entrées</strong>, dans ce tutoriel, <strong>10 entrées</strong>.<br />
Le premier étage correspondra aux 10 dernières entrées, le deuxième étage aux entrées 10-20 en partant des dernières, etc.<br />
Pour rendre l'URL plus <strong>"user-friendly"</strong> on ne commencera pas nos étages à floor=0 mais à floor=1, les étages représentant les pages, et la page "0" étant difficilement imaginable, d'où le décalage constant que vous pourrez apercevoir dans la suite du tutoriel.</p>
<h3>Requête MySQL</h3>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$sql</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;SELECT * FROM articles ORDER BY id DESC LIMIT &quot;</span><span style="color: #339933;">.</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'floor'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> ? <span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'floor'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #cc66cc;">10</span> <span style="color: #339933;">:</span> <span style="color: #0000ff;">&quot;0&quot;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;, 10&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$req</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$sql</span><span style="color: #009900;">&#41;</span> or <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Erreur:&lt;br&gt;'</span><span style="color: #339933;">.</span><span style="color: #000088;">$sql</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;br&gt;'</span><span style="color: #339933;">.</span><span style="color: #990000;">mysql_error</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>
<strong>ORDER BY id DESC</strong>: on range par id dans l'ordre décroissant<br />
<strong>($_GET['floor']-1)*10</strong> correspond au point de départ de la requête, pour floor=1, on commence au dernier message (0), pour floor=2 on commence par le dixième dernier message. <br />Ensuite le <strong>"..., 10"</strong> signifie que l'on demande 10 résultats maximum.<br />
L'opérateur ternaire ici présent indique que si aucun étage n'a été spécifié, on demande les dix derniers articles (soit 0 comme départ).</p>
<h3>Affichage du menu de navigation</h3>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;center&gt;Pages: '</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$req</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SELECT count(*) AS nbrEntrees FROM articles&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_fetch_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$req</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$total_pages</span> <span style="color: #339933;">=</span> <span style="color: #990000;">floor</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'nbr'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">/</span><span style="color: #cc66cc;">10</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// on fait des étages de 10, on rajoute 1 car entrées entre 0 et 10 ne correspondent pas à l'étage 0 mais au premier étage, ce qui créé un décalage sur toutes les entrées.</span>
<span style="color: #000088;">$requested</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'floor'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$cursor</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$requested</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> ? <span style="color: #0000ff;">&quot;1&quot;</span> <span style="color: #339933;">:</span> <span style="color: #000088;">$requested</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$cursor</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$cursor</span> <span style="color: #339933;">-</span> <span style="color: #cc66cc;">4</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// afficher les 4 pages précédentes</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cursor</span> <span style="color: #339933;">&lt;=</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$cursor</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span> 
&nbsp;
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cursor</span> <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;a href=&quot;index.php&quot;&gt;1&lt;/a&gt; ... '</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// si curseur loin de 1 (pas affichage de 1), affichage de 1 pour retour accueil rapide.</span>
&nbsp;
<span style="color: #000088;">$i</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span> 
<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span> <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">10</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$cursor</span> <span style="color: #339933;">&lt;=</span> <span style="color: #000088;">$total_pages</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">// afficher un lien supplémentaire tant que l'on en a pas affiché 10 et tant que l'on a pas dépassé le nombre de pages existantes</span>
<span style="color: #009900;">&#123;</span> 
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cursor</span><span style="color: #339933;">==</span><span style="color: #000088;">$requested</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$cursor</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">' | '</span><span style="color: #339933;">;</span> <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;a href=&quot;?floor='</span><span style="color: #339933;">.</span><span style="color: #000088;">$cursor</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&quot;&gt;'</span><span style="color: #339933;">.</span><span style="color: #000088;">$cursor</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;/a&gt; | '</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$i</span><span style="color: #339933;">++;</span> <span style="color: #666666; font-style: italic;">// le i n'est la que pour afficher seulement 10 liens pour les pages precedentes et suivantes</span>
	<span style="color: #000088;">$cursor</span><span style="color: #339933;">++;</span>	
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cursor</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span> <span style="color: #339933;">!=</span> <span style="color: #000088;">$total_pages</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'... &lt;a href=&quot;?floor='</span><span style="color: #339933;">.</span><span style="color: #000088;">$total_pages</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&quot;&gt;'</span><span style="color: #339933;">.</span><span style="color: #000088;">$total_pages</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;/a&gt;'</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// acces rapide fin</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;/center&gt;'</span><span style="color: #339933;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://babygeek.free.fr/index.php/webmasters/php-division-des-resultats-dune-requete-mysql-par-pages/feed/</wfw:commentRss>
		<slash:comments>94</slash:comments>
		</item>
		<item>
		<title>[Spry] Textfield et Textarea : ne pas valider un champ lorsqu&#8217;il ne contient que des espaces</title>
		<link>http://babygeek.free.fr/index.php/webmasters/spry-textfield-et-textarea-ne-pas-valider-un-champ-lorsquil-ne-contient-que-des-espaces/</link>
		<comments>http://babygeek.free.fr/index.php/webmasters/spry-textfield-et-textarea-ne-pas-valider-un-champ-lorsquil-ne-contient-que-des-espaces/#comments</comments>
		<pubDate>Tue, 26 Jul 2011 13:45:42 +0000</pubDate>
		<dc:creator>BabyGeek</dc:creator>
				<category><![CDATA[Webmasters]]></category>
		<category><![CDATA[espaces]]></category>
		<category><![CDATA[personnalisation]]></category>
		<category><![CDATA[spry]]></category>
		<category><![CDATA[textarea]]></category>
		<category><![CDATA[textfield]]></category>
		<category><![CDATA[validation]]></category>
		<category><![CDATA[widgets]]></category>

		<guid isPermaLink="false">http://babygeek.free.fr/index.php/webmasters/spry-textfield-et-textarea-ne-pas-valider-un-champ-lorsquil-ne-contient-que-des-espaces/</guid>
		<description><![CDATA[Spry – inclus dans Dreamweaver CS4 et ultérieur – permet le réglage de nombreuses options pour ses widgets, mais une d’elles pose problème : isRequired. L’option isRequired vérifie seulement que la longueur de la chaine entrée est supérieur à 1. Un espace étant considéré comme un caractère, si l’utilisateur entre un espace dans un champs [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Spry </strong>– inclus dans Dreamweaver CS4 et ultérieur – permet le réglage de nombreuses options pour ses <strong>widgets</strong>, mais une d’elles pose problème : <strong>isRequired</strong>.</p>
<p>L’option <strong>isRequired</strong> vérifie seulement que la longueur de la chaine entrée est supérieur à 1.</p>
<p>Un espace étant considéré comme un caractère, si l’utilisateur entre un espace dans un champs de texte, Spry le validera.</p>
<p>Le seul moyen pour régler ce problème est de modifier le <strong>code Javascript du widget</strong> qui pose problème.</p>
<p>Dans ce tuto nous allons régler le problème pour Textfied et Textaera. </p>
<p>J’ai cherché sur le net, on trouve quelques petits trucs pour Textfield mais pas pour textaera, réjouissez vous, vous êtes au bon endroit, ma méthode MARCHE pour Textfield et pour Textarea !</p>
<p>&#160;</p>
<h3>Théorie</h3>
<p>Nous allons rajouter dans la fonction de validation des widgets une <strong>expression régulière</strong> que nous allons tester, si elle s’avère fausse, le champs de texte ne contient pas les caractères requis, on déclenche l’état « Obligatoire ».</p>
<p>Vous pouvez personnaliser l’expression régulière que vous trouverez dans ce tutoriel, celle que je vous propose valide le champ seulement s’il contient des lettres, de ce fait si l’utilisateur tape seulement des espaces ou des caractères spéciaux comme « _, -, #.... » le formulaire ne sera pas validé.</p>
<p><b></b></p>
<h3>Régler le problème pour Textfield</h3>
<p><strong>Editez le fichier « SpryValidationTextField.js »</strong> normalement placé dans le dossier « SpryAssets ».</p>
<p><strong>Recherchez (CTRL + F) « Spry.Widget.ValidationTextField.ValidationDescriptors ».</strong></p>
<p>Au dessus de « ‘none’ », copiez collez ce code :</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #3366CC;">'myCustomType'</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
	validation<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>value<span style="color: #339933;">,</span> options<span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		 <span style="color: #003366; font-weight: bold;">var</span> filter <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> RegExp<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;^.*[a-zA-Z].*$&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                 <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>filter.<span style="color: #660066;">test</span><span style="color: #009900;">&#40;</span>value<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			 <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
		 <span style="color: #009900;">&#125;</span>
		 <span style="color: #000066; font-weight: bold;">else</span>
		 <span style="color: #009900;">&#123;</span>
			 <span style="color: #000066; font-weight: bold;">return</span> value<span style="color: #339933;">;</span>
		 <span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span></pre></div></div>

<p><strong>Enregistrez le fichier.</strong></p>
<p><strong></strong></p>
<p><strong>Retournez sur le code html de votre formulaire.</strong></p>
<p>Juste après la balise de fermeture &lt;/form&gt;, vous devriez avoir quelque chose comme :</p>
<p><a href="http://babygeek.free.fr/wp-content/upload/SpryValidationVars.jpg"><img src="http://babygeek.free.fr/wp-content/upload/SpryValidationVars_thumb.jpg" title="[Spry] Textfield et Textarea : ne pas valider un champ lorsqu&rsquo;il ne contient que des espaces" alt="SpryValidationVars thumb [Spry] Textfield et Textarea : ne pas valider un champ lorsqu&rsquo;il ne contient que des espaces" /></a></p>
<p>Trouver la variable qui correspond à votre champ de texte puis envoyez l’argument <strong>« myCustomType »</strong> en deuxième paramètre. Vous devriez obtenir quelque chose comme ceci :</p>
<p><a href="http://babygeek.free.fr/wp-content/upload/SpryCustomTypeVar.jpg"><img src="http://babygeek.free.fr/wp-content/upload/SpryCustomTypeVar_thumb.jpg" title="[Spry] Textfield et Textarea : ne pas valider un champ lorsqu&rsquo;il ne contient que des espaces" alt="SpryCustomTypeVar thumb [Spry] Textfield et Textarea : ne pas valider un champ lorsqu&rsquo;il ne contient que des espaces" /></a></p>
<p>Enregistrez, essayez , ça marche ! Si ça ne marche pas, vérifiez l’expression régulière « filter ».</p>
<p>&#160;</p>
<h3>Régler le problème pour TextArea</h3>
<p><strong>Editez le fichier « SpryValidationTextarea.js »</strong> normalement placé dans le dossier « SpryAssets ».</p>
<p><strong>Recherchez (CTRL + F) « Spry.Widget.ValidationTextarea.prototype.validate ».</strong></p>
<p>Au dessus de « this.counterChar() ; », copiez collez ce code :</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"> <span style="color: #003366; font-weight: bold;">var</span> filter <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> RegExp<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;^.*[a-zA-Z].*$&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>filter.<span style="color: #660066;">test</span><span style="color: #009900;">&#40;</span>val<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		ret <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span> 
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">switchClassName</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">requiredClass</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span>
 <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>ret<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">switchClassName</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">validClass</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span></pre></div></div>

<p><strong>Enregistrez , ouvrez votre formulaire, ça marche !</strong> Si cela ne fonctionne pas, vérifiez l’expression régulière « filter ».</p>
<p>&#160;</p>
<p>Note: Spry est une framework en perpétuel mouvement, il se peut que quelques mois après la rédaction de cet article, les codes donnés ci dessus ne fonctionnent plus. En tout cas l’idée générale est là, à vous d’adapter tout ça avec ce que vous avez.</p>
]]></content:encoded>
			<wfw:commentRss>http://babygeek.free.fr/index.php/webmasters/spry-textfield-et-textarea-ne-pas-valider-un-champ-lorsquil-ne-contient-que-des-espaces/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>CyberAmour et DigMeToo: une idée, deux sites web.</title>
		<link>http://babygeek.free.fr/index.php/my-softs/cyberamour-et-digmetoo-une-idee-deux-sites-web/</link>
		<comments>http://babygeek.free.fr/index.php/my-softs/cyberamour-et-digmetoo-une-idee-deux-sites-web/#comments</comments>
		<pubDate>Mon, 25 Jul 2011 16:39:08 +0000</pubDate>
		<dc:creator>BabyGeek</dc:creator>
				<category><![CDATA[Made in BabyGeek's Room]]></category>

		<guid isPermaLink="false">http://babygeek.free.fr/?p=1197</guid>
		<description><![CDATA[Hier, j'ai regardé "La vrai histoire de Mark Zuckerberg". Un étudiant de Harvard qui avait monté un site nommé "DigMeToo" était interviewé. Il avait reçu une offre d'emploi de Facebook. Ni une ni deux ce matin je me connecte sur DigMeToo.com, c'est alors que je découvre avec stupeur que le concept (et le fonctionnement) de [...]]]></description>
			<content:encoded><![CDATA[<p>Hier, j'ai regardé<strong> "La vrai histoire de Mark Zuckerberg"</strong>. <strong>Un étudiant de Harvard</strong> qui avait monté un <strong>site</strong> nommé <strong>"DigMeToo"</strong> était interviewé. Il avait reçu une <strong>offre d'emploi de Facebook.</strong></p>
<p>Ni une ni deux ce matin je me connecte sur <strong>DigMeToo.com</strong>, c'est alors que je découvre avec stupeur que <strong>le concept (et le fonctionnement) de DigMeToo.com est exactement le même que mon site <a href="http://www.cyberamour.com">CyberAmour.com</a> !</strong></p>
<p>Je me suis donc renseigné.</p>
<p>L'idée du site faisait partie d'un concours à Harvard, je ne sais donc pas exactement quand le gars a eu l'idée, le domaine a ensuite été<strong> acheté</strong> le <strong>6 Décembre 2010</strong> et le site a été <strong>ouvert</strong> le <strong>10 Décembre 2010</strong>.</p>
<p>J'ai eu l'idée de <strong>CyberAmour</strong> plusieurs mois avant que je commence à le coder puis j'ai <strong>acheté</strong> le domaine le <strong>15 Novembre 2010</strong>. A cause d'un probleme au niveau de mon registrar, je n'ai pu le mettre <strong>en ligne</strong> que <strong>début Décembre</strong>.<br />
En voyant le mince succès de mon site j'en ai fait la promo début Janvier, on peut d'ailleurs voir une poussée croissante de mon nombre de visiteurs à partir du 8 Janvier.</p>
<p><span style="text-decoration: underline;"><strong>Récapitulatif:</strong></span><br />
<strong>Mark Alan Isaacson et moi</strong> avons eu l'idée plus ou moins <strong>en même temps</strong>, chacun de notre côté.<br />
<strong>Rob Schaaf et moi</strong> avons mis en ligne le site plus ou moins <strong>en même temps</strong>, chacun de notre côté.<br />
<strong>DigMeToo.com</strong> propose de digger seulement une personne dans sa liste d'amis Facebook grâce à Facebook Connect, alors que <strong>CyberAmour.com</strong> permet de digger n'importe quelle personne grâce à son adresse email.</p>
<p><span style="text-decoration: underline;"><strong>Résultat:</strong></span><br />
En vérifiant les comptes FB Connect, quelqu'un de chez Facebook a remarqué DigMeToo et a envoyé une proposition d'emploi chez Facebook à <strong>Rob Schaaf</strong>.<br />
<strong><br />
Voici pourquoi, moi, BabyGeek, 14 ans, je suis un peu déçu ce 25/07/2011.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://babygeek.free.fr/index.php/my-softs/cyberamour-et-digmetoo-une-idee-deux-sites-web/feed/</wfw:commentRss>
		<slash:comments>40</slash:comments>
		</item>
		<item>
		<title>Betcoin: jeux de chance Bitcoin</title>
		<link>http://babygeek.free.fr/index.php/bitcoin/betcoin-jeux-de-chance-bitcoin/</link>
		<comments>http://babygeek.free.fr/index.php/bitcoin/betcoin-jeux-de-chance-bitcoin/#comments</comments>
		<pubDate>Sun, 19 Jun 2011 09:19:13 +0000</pubDate>
		<dc:creator>BabyGeek</dc:creator>
				<category><![CDATA[Bitcoin]]></category>

		<guid isPermaLink="false">http://babygeek.free.fr/?p=1168</guid>
		<description><![CDATA[Après DoubleYourBitcoins.co.cc au design plus que douteux, j'ai décidé de développer un site tout beau tout propre beaucoup plus complet avec tout un tas de jeux de hasard pour faire exploser son porte feuille Bitcoin: ça s'appelle Betcoin ! Betcoin est, encore une fois, administré par mes soins ce qui empêche totalement toute tentative de [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://betcoin.netne.net"><img class="aligncenter" title="Betcoin Screenshot" src="http://babygeek.free.fr/wp-content/upload/betcoin.jpg" alt="betcoin Betcoin: jeux de chance Bitcoin" width="543" height="362" /></a></p>
<p>Après DoubleYourBitcoins.co.cc au design plus que douteux, j'ai décidé de développer un site tout beau tout propre beaucoup plus complet avec tout un tas de <strong>jeux de hasard pour faire exploser son porte feuille Bitcoin: ça s'appelle <a href="http://betcoin.netne.net">Betcoin</a> !</strong></p>
<p><strong>Betcoin</strong> est, encore une fois, administré par mes soins ce qui empêche totalement toute tentative de hacking.</p>
<p><strong>Pourquoi Betcoin et pas un autre ?</strong> Tout simplement car <strong>Betcoin </strong>propose des jeux avec les <strong>pourcentages de chances les plus élevés</strong> du web.</p>
<p><strong>Vous êtes radins ?<a href="http://betcoin.netne.net/1on2"> </a></strong><a href="http://betcoin.netne.net/1on2">1Visitor/2</a> est fait pour vous, vous pouvez perdre au maximum 0.05 BTC et en gagner 0.5 !</p>
<p><strong>Vous voulez être sur de gagner ?</strong> <a href="http://betcoin.netne.net/instant-win">Instant Win</a> est fait pour vous, vous gagnez 10x votre mise toutes les 11 mises, vous êtes surs à 90% de gagner (si le compteur est à 3, vous jouez 8 fois et vous obtenez 10x votre mise !)</p>
<p><strong>Vous êtes joueur ?</strong> <a href="http://betcoin.netne.net/redbutton">The Red Button</a> est fait pour vous, vous appuyez dessus et 45% de chance de gagner 1 BTC.</p>
<p><strong>Vous voulez devenir riche maintenant ?</strong> <a href="http://betcoin.netne.net/jackpot">Jackpot ! </a>est fait pour vous, si c'est votre jour de chance vous pouvez gagner 50 BTC avec une mise d'1 BTC !</p>
<p><em>Tous les jeux n'ont pas été cités ci dessus, je suis en train d'en développer d'autres !</em></p>
<p>Vous l'aurez compris, il y en a pour tout le monde !</p>
<p>Et pour le lancement du site: <strong>Le site offre aux 15 premiers joueurs la possibilité de se faire rembourser s'ils perdent <img src='http://babygeek.free.fr/wp-includes/images/smilies/icon_biggrin.gif' alt="icon biggrin Betcoin: jeux de chance Bitcoin" class='wp-smiley' title="Betcoin: jeux de chance Bitcoin" />  !</strong></p>
<p><strong>Note avant de jouer:</strong> parfois le service de paiement MyBitcoin bug: il n'affiche pas l'adresse à laquelle envoyer les Bitcoins, il suffit d'effacer ses cookies et son cache puis de rejouer (vos BTCs ne seront pas envoyés 2 fois)!</p>
<p>L'argent mis de côté grâce aux perdants alimente la cagnotte des gagnants, donc en quelque sorte si vous perdez vous finirez par regagner une partie de votre argent en rejouant.</p>
<p>PS: j'ai tout vérifié mais il se peut qu'il reste des erreurs dans le code, si vous en voyez, merci de m'en informer, merci.</p>
<p><strong>Have fun !</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://babygeek.free.fr/index.php/bitcoin/betcoin-jeux-de-chance-bitcoin/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>Sécuriser son fichier wallet.dat</title>
		<link>http://babygeek.free.fr/index.php/bitcoin/securiser-son-fichier-wallet-dat/</link>
		<comments>http://babygeek.free.fr/index.php/bitcoin/securiser-son-fichier-wallet-dat/#comments</comments>
		<pubDate>Sat, 18 Jun 2011 13:00:55 +0000</pubDate>
		<dc:creator>BabyGeek</dc:creator>
				<category><![CDATA[Bitcoin]]></category>

		<guid isPermaLink="false">http://babygeek.free.fr/?p=1165</guid>
		<description><![CDATA[Je suppose que vous avez entendu parler du vol d'1/2 Million de dollars en Bitcoin récemment? En cause un virus tournant sous Windows, qui récupère le fichier wallet.dat (votre portefeuille bitcoin) dans votre ordinateur et l'envoie par mail au pirate (la fiche détaillée du virus sur le site de symantec). Ce type de virus étant [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter" title="Vol Wallet.dat" src="http://babygeek.free.fr/wp-content/upload/vol_wallet.jpg" alt="vol wallet Sécuriser son fichier wallet.dat" width="142" height="146" /></p>
<p>Je suppose que vous avez entendu parler du <strong>vol d'1/2 Million de dollars en Bitcoin</strong> récemment?<br />
En cause un <strong>virus tournant sous Windows, qui récupère le fichier wallet.dat</strong> (votre portefeuille bitcoin) dans votre ordinateur et l'envoie par mail au pirate (la fiche détaillée du virus sur <a href="http://www.symantec.com/security_response/writeup.jsp?docid=2011-061615-3651-99&amp;tabid=2">le site de symantec</a>).<br />
Ce type de virus étant d'une simplicité extrême à coder, je pense qu'un réseau de pickpockets numériques va très vite se développer: c'est pourquoi j'ai décidé aujourd'hui d'écrire un petit tuto (très théorique) pour vous aider à <strong>sécuriser au maximum votre petit butin.</p>
<p></strong></p>
<h3>Théorie</h3>
<p>La meilleure solution pour <strong>protéger son wallet </strong>et de le<strong> stocker sur une machine dédiée </strong>qui n'aura accès à internet que pour les transactions, et seulement pour les transactions.<br />
Si vous avez un netbook ou un vieil ordinateur que vous n'utilisez plus, vous pouvez vous en servir, mais la solution la plus pratique reste<strong> la machine virtuelle</strong>.<br />
Nous allons <strong>créer une machine virtuelle Ubuntu, y installer Bitcoin, transférer nos Bitcoins </strong>vers le nouveau wallet, <strong>crypter</strong> le wallet, <strong>effectuer une sauvegarde</strong> régulièrement du conteneur crypté vers un périphérique USB ou un serveur distant.<br />
Place à la pratique !</p>
<h3>Préparation de la machine virtuelle</h3>
<p><strong>Créez une machine virtuelle (VM) avec VirtualBox (par exemple) et installez y Ubuntu.</strong><br />
Lancez la VM, <a href="http://www.bitcoin.org">téléchargez le client Bitcoin</a>, décompressez le: tar -xvf bitcoin*, maintenant lançons Bitcoin: ./bitcoin*/bin/32/bitcoin<br />
Il va se mettre à télécharger tous les blocs, laissez le terminer puis <strong>envoyez tous vos Bitcoins de votre ancien wallet vers le nouveau </strong>(envoyez au début 0.01 pour tester que la transaction fonctionne bien).<br />
Une fois tous vos BTCs transférés, <strong>coupez la connexion au réseau sur la VM.</strong></p>
<h3>Cryptons tout ça!</h3>
<p>La création d'une machine isolée ne suffit pas: <strong>si l'hôte de la VM est infecté</strong>, ou si l'on vous vole physiquement votre ordinateur, <strong>votre wallet court un danger</strong>.<br />
C'est là qu'intervient le <strong>cryptage</strong> !<br />
Rendez vous dans<strong> /home/username/.bitcoin/</strong>, copiez le fichier wallet.dat sur une clé USB (temporaire, pour restaurer en cas de problème pendant les prochaines manipulations).<br />
Installez <strong>TrueCrypt</strong> sur votre VM, créez un conteneur de 1Go, créez un dossier "Bitcoin" dedans puis coupez à l'intérieur le contenu du dossier /home/username/.bitcoin/.<br />
Ce conteneur contient maintenant votre porte monnaie + les blocs.<br />
Vous devrez maintenant avant de lancer Bitcoin, monter le conteneur, puis lancez Bitcoin avec le paramètre "<strong>-datadir=PointDeMontageDuConteneur/Bitcoin</strong>".<br />
Mais... il reste un soucis: nous n'avons aucune sauvegarde de notre wallet, si le conteneur est supprimé ou corrompu nous perdrons tout ! Problème: les blocs sont inutiles et prennent pas mal de place, pas pratique donc de faire une sauvegarde du conteneur, à ce problème je n'ai qu'une solution: créer un conteneur de 10Mo et y copier régulièrement le wallet à partir du gros conteneur d'1Go. Vous pourrez ensuite envoyer votre conteneur de 10Mo sur un serveur FTP ou sur clé USB.</p>
<p>Note: Il est inutile de sauvegarder plusieurs fois de suite votre wallet si celui ci n'a pas rencontré de modifications (transactions, changement de l'adresse...).</p>
<p>Sinon, pour les paranos, il y a possibilité de crypter le fichier de la VM lui même (et ceci autant de fois que vous le souhaitez).</p>
<p><strong>Si j'ai pu vous éviter de perdre quelques centaines/milliers d'euros, vous pouvez me faire un don (voir en haut à droite du blog) <img src='http://babygeek.free.fr/wp-includes/images/smilies/icon_wink.gif' alt="icon wink Sécuriser son fichier wallet.dat" class='wp-smiley' title="Sécuriser son fichier wallet.dat" /> </strong></p>
]]></content:encoded>
			<wfw:commentRss>http://babygeek.free.fr/index.php/bitcoin/securiser-son-fichier-wallet-dat/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>[Bash] BTCValueNotifier</title>
		<link>http://babygeek.free.fr/index.php/bitcoin/bash-btcvalue-notifier/</link>
		<comments>http://babygeek.free.fr/index.php/bitcoin/bash-btcvalue-notifier/#comments</comments>
		<pubDate>Sun, 12 Jun 2011 14:26:32 +0000</pubDate>
		<dc:creator>BabyGeek</dc:creator>
				<category><![CDATA[Bitcoin]]></category>

		<guid isPermaLink="false">http://babygeek.free.fr/?p=1161</guid>
		<description><![CDATA[J'ai codé un petit script Bash qui affiche toutes les x secondes le taux de change du Bitcoin avec un wget sur la page d'API de différents markets, en y extrayant les informations et en les envoyant avec notify-send. Lien de téléchargement: BTCValueNotifier.sh Il suffit de le rendre exécutable, le lancer et le réduire, une [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter" title="BTCValue-notifier Screenshot" src="http://babygeek.free.fr/wp-content/upload/BTCValue-notifier.jpg" alt="BTCValue notifier [Bash] BTCValueNotifier" width="368" height="121" /></p>
<p>J'ai codé un petit <strong>script Bash qui affiche toutes les x secondes le taux de change du Bitcoin</strong> avec un wget sur la page d'API de différents markets, en y extrayant les informations et en les envoyant avec notify-send.</p>
<p><strong>Lien de téléchargement:</strong> <a href="http://babygeek.free.fr/files/Bitcoin/BTCValueNotifier.sh">BTCValueNotifier.sh</a></p>
<p>Il suffit de le <strong>rendre exécutable</strong>, le lancer et le réduire, une boucle dotée d'un sleep à la fin se charge de vous envoyer la valeur toutes les 120 secondes (ce nombre est modifiable dans le script).<br />
Si vous n'arrivez pas à le faire fonctionner, vérifiez que vous avez installé le paquet<strong> notify-send</strong>.</p>
<p><strong>EDIT 26 Juin:</strong> J'ai ajouté le <strong>support de TradeHill</strong> ainsi que différentes <strong>devises</strong>. Pour plus de simplicité j'ai créé une partie "CONFIG" où il est possible d'activer ou non certaines fonctionnalités.<br />
Enfin, pour plus de simplicité, j'ai décidé de passer le développement du script sur launchpad: <a href="https://launchpad.net/btcvaluenotifier">https://launchpad.net/btcvaluenotifier</a></p>
]]></content:encoded>
			<wfw:commentRss>http://babygeek.free.fr/index.php/bitcoin/bash-btcvalue-notifier/feed/</wfw:commentRss>
		<slash:comments>35</slash:comments>
		</item>
		<item>
		<title>Doublez vos Bitcoins [Chance]</title>
		<link>http://babygeek.free.fr/index.php/bitcoin/doublez-vos-bitcoins-chance/</link>
		<comments>http://babygeek.free.fr/index.php/bitcoin/doublez-vos-bitcoins-chance/#comments</comments>
		<pubDate>Sun, 12 Jun 2011 12:51:40 +0000</pubDate>
		<dc:creator>BabyGeek</dc:creator>
				<category><![CDATA[Bitcoin]]></category>

		<guid isPermaLink="false">http://babygeek.free.fr/?p=1152</guid>
		<description><![CDATA[J'ai développé hier après-midi un petit site de chance - au design laissant plus qu'à désirer - permettant de doubler ses bitcoins ! Il s'agit de http://www.DoubleYourBitcoins.co.cc Le principe est simple: Un joueur sur deux gagne, l'argent donné par le perdant sert à payer le gagnant, vous avez donc 50% de chance de gagner. Pour [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.doubleyourbitcoins.co.cc"><img class="aligncenter" title="DoubleYourBitcoins.co.cc Logo" src="http://babygeek.free.fr/wp-content/upload/doubleyourbtc_thumb.jpg" alt="doubleyourbtc thumb Doublez vos Bitcoins [Chance]" width="543" height="96" /></a></p>
<p>J'ai développé hier après-midi <strong>un petit site de chance</strong> - au design laissant plus qu'à désirer - permettant de <strong>doubler ses bitcoins ! Il s'agit de <a href="http://www.doubleyourbitcoins.co.cc">http://www.DoubleYourBitcoins.co.cc</a><br />
</strong></p>
<p>Le principe est simple: <strong>Un joueur sur deux gagne</strong>, l'argent donné par le perdant sert à payer le gagnant, vous avez donc<strong> 50% de chance de gagner.</strong></p>
<p>Pour le moment la mise minimum acceptée est 0.01BTC et maximum 1BTC.</p>
<p>Si jamais vous gagnez une somme que le serveur n'a pas en stock, je vous rembourse votre mise ou vous propose d'attendre un joueur perdant.</p>
<p><strong>Toutes les transactions sont, pour le moment, effectuées par mes soins pour éviter et détecter toutes tentatives de triche.</strong></p>
<p>Maintenant, vous allez me dire: "Ce genre de service existe déjà, pourquoi le tiens est-il mieux que les autres ?", voilà pourquoi:</p>
<ul>
<li><strong>DoubleYourBitoins.co.cc </strong>est géré par moi, et vous savez bien que je suis de confiance <img src='http://babygeek.free.fr/wp-includes/images/smilies/icon_smile.gif' alt="icon smile Doublez vos Bitcoins [Chance]" class='wp-smiley' title="Doublez vos Bitcoins [Chance]" />  ! J'ai 3200 de Karma sur Launchpad, je suis quelqu'un de sérieux <img src='http://babygeek.free.fr/wp-includes/images/smilies/icon_wink.gif' alt="icon wink Doublez vos Bitcoins [Chance]" class='wp-smiley' title="Doublez vos Bitcoins [Chance]" />  Si jamais je vous arnaque, vous n'avez qu'à détruire ma e-réputation, et me flooder sur irc.</li>
<li><strong>Toutes les transactions sont effectuées manuellement, plus de sécurité.</strong></li>
<li>Vous avez <strong>50% de chance de gagner</strong>, je prends ma taxe au niveau des gains, vous ne gagnez pas 200% de votre mise mais <strong>190%</strong>. Certains sites vous donnent 200% mais mettent un taux de chance à 47% des fois trafiqué.</li>
<li>Les autres sites génèrent un nombre aléatoire pour déterminer si vous avez perdu ou gagné, vous pouvez donc perdre plusieurs fois de suites, <strong>DoubleYourBitcoins.co.cc</strong> utilise un procédé simple:<strong> un visiteur sur deux gagne, si vous retentez votre chance après avoir perdu vous êtes quasiment sur de gagner.</strong></li>
<li><strong>DoubleYourBitcoin.co.cc</strong> peut si vous le souhaitez, vous créer un compte read-only sur son serveur ftp pour vous <strong>montrer son code source</strong>.</li>
<li><strong>Les transactions de Bitcoins sont effectuées par MyBitcoin.com - e-wallet très sérieux -</strong> vos bitcoins ne s'évaderont pas je ne sais où !</li>
<li>Le webmaster de DoubleYourBitcoin.co.cc est un gros geek: <strong>les paiements et le support sont très réactifs !</strong> Je me réveillerai la nuit s'il le faut pour effectuer les paiements.</li>
</ul>
<p>Alors ? Convaincu ?</p>
]]></content:encoded>
			<wfw:commentRss>http://babygeek.free.fr/index.php/bitcoin/doublez-vos-bitcoins-chance/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>Tout sur Bitcoin</title>
		<link>http://babygeek.free.fr/index.php/reseau/tout-sur-bitcoin/</link>
		<comments>http://babygeek.free.fr/index.php/reseau/tout-sur-bitcoin/#comments</comments>
		<pubDate>Sat, 11 Jun 2011 09:58:35 +0000</pubDate>
		<dc:creator>BabyGeek</dc:creator>
				<category><![CDATA[Réseau]]></category>

		<guid isPermaLink="false">http://babygeek.free.fr/?p=1145</guid>
		<description><![CDATA[Il y a quelques jours je découvrais Bitcoin et depuis je ne peux plus m'en passer. Aujourd'hui je vous parle de Bitcoin tout simplement car je pense que ce système va rapporter gros (c'est d'ailleurs déjà le cas): le 7 Février, la valeur d'1 BTC était de 0,88$, vendredi lorsque j'ai découvert le système elle [...]]]></description>
			<content:encoded><![CDATA[<p>Il y a quelques jours je découvrais Bitcoin et depuis je ne peux plus m'en passer.<br />
Aujourd'hui je vous parle de Bitcoin tout simplement car je pense que ce système va rapporter gros (c'est d'ailleurs déjà le cas): le 7 Février, la valeur d'1 BTC était de 0,88$, vendredi lorsque j'ai découvert le système elle était de 12$, et aujourd'hui, 5 jours après, elle est de 30 $ !!<br />
Après plusieurs jours de recherches, j'ai décidé de faire ici un grand tuto compilant tout ce que j'ai trouvé pour bien commencer dans l'aventure Bitcoin !<br />
</p>
<h3>Bitcoin - La nouvelle monnaie dont tout le monde parle</h3>
<p>Avant de commencer, je tenais à vous montrer quelques graphiques:</p>
<p><script type="text/javascript" src="http://www.gmodules.com/ig/ifr?url=http%3A%2F%2Fwww.google.com%2Fig%2Fmodules%2Fgoogle_insightsforsearch_interestovertime_searchterms.xml&amp;up__property=empty&amp;up__search_terms=bitcoin&amp;up__location=empty&amp;up__category=0&amp;up__time_range=empty&amp;up__compare_to_category=false&amp;synd=open&amp;w=530&amp;h=350&amp;lang=fr&amp;title=Google+Tendances+des+recherches&amp;border=%23ffffff%7C3px%2C1px+solid+%23999999&amp;output=js"></script></p>
<p><a href="http://bitcoincharts.com/charts/"><img class="aligncenter" title="BitcoinCharts" src="http://babygeek.free.fr/wp-content/upload/bitcoincharts.jpg" alt="bitcoincharts Tout sur Bitcoin" width="523" height="355" /></a></p>
<p>Source: <a href="http://bitcoincharts.com/charts/">http://bitcoincharts.com/charts/</a></p>
<p>Je vous l'accorde, une légère baisse ces deux derniers jours, mais je suis certains que cela va remonter.<br />
</p>
<h3>Bitcoin, quest-ce que c'est?</h3>
<p><iframe width="543" height="339" src="http://www.youtube.com/embed/Um63OQz3bjo" frameborder="0" allowfullscreen></iframe><br />
<br />
Bitcoin est une monnaie électronique décentralisée en P2P conçue en 2009 par Satoshi Nakamoto.<br />
Son unité est le BitCoin (ou BTC).<br />
Décentralisée, c'est à dire ? il n'y a aucune entreprise, aucune banque qui peut contrôler les transactions transitant sur le réseau. Plus que ça, l'argent est stockée dans un fichier sur l'ordinateur de chaque client connecté au réseau, de ce fait, personne ne peut voir combien vous avez de bitcoins, il faut par contre faire attention à ce fichier: s'il est perdu, toute l'argent est perdue, que vous soyez millionnaire ou pas, vous ne pourrez demander de compte à PERSONNE, le système est complètement décentralisé et il est IMPOSSIBLE de récupérer son argent en cas de perte.<br />
Le fonctionnement d'un tel système requiert beaucoup de ressources (vérification des transactions), comment faire sans banque centrale ? Simplement en utilisant les ressources des clients connectés au réseau et en les rémunérant en Bitcoin! Le fait de gagner des BTC en mettant à disposition son CPU ou  son GPU s'appelle le mining (on compare les clients à des mineurs qui creusent la roche dans le but de trouver de l'OR).</p>
<p>Mais dites, il faut une part de chance au mineur pour trouver son or, dans Bitcoin aussi !<br />
Toutes les transactions à vérifier sont stockées dans des "blocs", les blocs sont ensuite envoyés aux clients qui vont faire leur travail de mineurs, c'est à dire calculer le bloc et vérifier les transactions, le premier mineur qui parviendra à résoudre le bloc gagnera 50 BTC, même s'il n'a fait qu'1 calcul pour décoder la chaine et que les autres en ont fait 100 Milliards. A noter qu'à la création du réseau, 50 BTC ne représentait rien, actuellement cela représente 1300$!<br />
</p>
<h3>Comment miner ?</h3>
<p>Il existe différentes méthodes de miner, vous pouvez miner avec votre CPU ou avec votre GPU.<br />
Honnêtement, laissez tombez votre CPU et penchez vous plutôt du côté de votre carte graphique: en effet les GPUs sont plus aptes à régler rapidement les opérations de hashages.<br />
Pour vous donner une idée, avec un Intel Core 2 Quad je fais seulement du 4Mh/s (Méga Hashs par secondes, 1 Mh = 1000Kh) alors qu'avec une ATI Radeon HD 5670 (non overcloackée) je suis à 72Mh/s, en plus de cela, les bénéfices (gains - cout éléctricité) pourraient être négatifs avec un CPU. Les processeurs les plus puissants pour des particuliers ne dépassent pas la barre des 20Mh/s.</p>
<p>Si vous voulez vous faire une config dédiée au mining il vous faudra choisir du côté d'une ATI (leur technologie est plus performante pour le mining que les nVidia) HD RADEON 5970, qui est à ce jour l'une des plus rentable rapport/qualité prix. Vous pouvez consulter ce tableau comparatif de performances: https://en.bitcoin.it/wiki/Mining_hardware_comparison .</p>
<p>Maintenant que nous avons vu le côté matériel, un autre facteur entre en jeu: la probabilité de gagner les 50 BTC: elle est très faible, vous pouvez très bien gagner 50 BTC du premier jour ou bien ne pas en gagner pendant 15 ans ! Tout est histoire de probabilité ! Seriez vous prêt à parier des milliers de dollars que le prochain nombre aléatoire tiré par votre ordinateur sera 1 et pas 0 ?<br />
Pour régler ce problème des mining pool ont été crées ! Le principe d'une pool est simple: un serveur est connecté sur le réseau en tant qu'1 Client, mais il répartit les charges à pleins de "sous-clients" connectés à la pool, de cette façon la pool arrive à obtenir des performances époustouflantes comme 2400Gh/s, de ce fait la chance pour la pool de résoudre le bloc est plus grande, une fois le bloc résolut, la pool partage les 50 BTC entre tous les membres selon leur pourcentage d'actions effectuées pour obtenir le bloc (certaines pool prennent 3% de taxe sur les 50 BTC pour les frais de fonctionnement du serveur).</p>
<p>Le soucis est que le soft open source téléchargeable sur le site officiel ne supporte pas le mining GPU et n'est pas capable de se connecter à une pool.</p>
<p>Il existe donc plusieurs alternatives (elles aussi open source) permettant de faire ceci, personnellement j'utilise DiabloMiner: <a href="http://forum.bitcoin.org/?topic=1721.0">http://forum.bitcoin.org/?topic=1721.0</a>.</p>
<p>Quelques adresses:<br />
Une calculatrice rapide qui donne seulement les gains (sans électricité): <a href="http://www.alloscomp.com/bitcoin/calculator.php">http://www.alloscomp.com/bitcoin/calculator.php</a><br />
Une calculatrice un peu plus poussée qui permet notamment d'entrer le prix de l'électricité et la consommation de sa config: <a href="http://bitcoinx.com/profit/">http://bitcoinx.com/profit/</a><br />
</p>
<h3>Investir sur les Bitcoins</h3>
<p>Une autre façon de se faire de l'argent est l'investissement. Pourquoi s'embeter à miner pour gagner quelques dixièmes de BTC (dans le cas d'un particulier) alors que vous pouvez tout simplement en acheter ?<br />
Vu que le système est entièrement décentralisé, le seul moyen pour transformer son argent en bitcoin est de faire l'échange avec quelqu'un qui voudrait vendre ses bitcoins. Cela engage donc des procédures de particulier à particulier, des problèmes de confiance etc.. c'est pourquoi plusieurs sites dont le plus connu "MtGox" permettent de faire l'échange en tout sécurité: le site achète les BTC aux vendeurs, les stocke quelques secondes puis les vends à un acheteur (en prenant des frais bien sur <img src='http://babygeek.free.fr/wp-includes/images/smilies/icon_wink.gif' alt="icon wink Tout sur Bitcoin" class='wp-smiley' title="Tout sur Bitcoin" />  ), une sorte de médiateur.</p>
<p>Il faut aussi savoir que la valeur du BTC est directement liée à la demande, c'est à dire que la valeur augmente si des gens sont intéressés par le système, si demain un grand journal télévisé parle de Bitcoin, dans la nuit et les jours qui suivent, sa valeur risque d'exploser, et vu que sa valeur explose, tout le monde parle de bitcoin, et vu que tout le monde parle de bitcoin, la demande ne cesse d'augmenter et la valeur aussi.<br />
</p>
<h3>Utilisation de DiabloMiner dans une pool</h3>
<p>Tout d'abord vous devez vous inscrire dans une pool, puis créez un worker (on peut ajouter plusieurs worker à un compte pour faire fonctionner plusieurs ordinateurs au profit de ce même compte).</p>
<p>Téléchargez DiabloMiner ici: <a href="http://forum.bitcoin.org/?topic=1721.0">http://forum.bitcoin.org/?topic=1721.0</a><br />
Dans cet exemple on va partir du principe que vous êtes sous Windows (les linuxiens sauront, je pense, adapter ce que je dis à leur OS)<br />
Extrayez l'archive dans C:\DiabloMiner<br />
Vérifiez bien que les fichiers se trouvent dans C:\DiabloMiner et non dans C:\DiabloMiner\DiabloMiner<br />
Ensuite, ouvrez l'invité de commande (cmd),<br />
puis tapez<br />
cd C:\DiabloMiner<br />
DiabloMiner-Windows.exe --url=http://adressedupool:port --user=lenomduworker --pass=lepassduworker<br />
Remplacez ces infos par ce que vous donnera le site.<br />
Si vous voyez le nombre de Hash/s s'afficher en bas à gauche, c'est que ça marche,<br />
Si vous avez un message d'erreur c'est que votre carte graphique ou votre driver ne supporte pas openCL.<br />
openCL est une sorte d'API permettant à des programmes de communiquer avec le GPU pour lui faire exécuter les calculs qu'il souhaite.<br />
Si votre cg a moins de 3 ans elle supporte l'openCL, sinon cherchez sur Google si c'est le cas.<br />
Partons du principe que vous avez une carte graphique récente,<br />
si vous avez une nVidia, rendez vous sur cette page: <a href="http://www.nvidia.fr/Download/index.aspx?lang=fr">http://www.nvidia.fr/Download/index.aspx?lang=fr</a> et cherchez un driver récent pour votre cg, à ma connaissance le driver openCL n'est pas téléchargeable seul, il est inclus dans le driver de la cg, vérifiez dans la description du driver que soit marqué "Support d'OpenCL".<br />
si vous avez une ATI, si vous êtes sous Ubuntu suivez ce tutoriel qui fonctionne à la perfection: <a href="http://forum.bitcoin.org/?topic=3356.msg47489#msg47489">http://forum.bitcoin.org/?topic=3356.msg47489#msg47489</a><br />
sinon rendez vous sur cette page: <a href="http://support.amd.com/us/gpudownload/Pages/index.aspx">http://support.amd.com/us/gpudownload/Pages/index.aspx</a> téléchargez la nouvelle version de Catalyst Control Center pour votre carte, elle contient normalement le driver openCL.<br />
</p>
<h3>Mythes</h3>
<p><b>Le javascript miner peut remplacer Adsense</b><br />
Il y a quelques jours sont sortis tout un tas d'article à propos d'un mineur en Javascript permettant de faire bosser ses visiteurs à sa place et gagner de l'argent grâce à bitp.it !</p>
<p>Certaines personnes prétendent que ce système pourrait remplacer adsense, alors regardons les performances de ce système: elles sont extrèmement basses ! Avec le même processeur que cité plus haut j'obtiens un taux de 900 hashs/s, soit 0.9 kh/s contre 70000kh/s avec la plupart des cartes graphiques entrées de gammes, cela signifie que pour gagner mes BTC tranquillement sans abimer ma carte graphique il faudrait que j'ai 70.000 visiteurs uniques en permanence sur mon site qui tournent tous avec des processeurs 4 coeurs ! Maintenant faites le calcul: en prenant en compte le taux de change du BTC et les statistiques de visites actuels de votre site, combien vous faut-il de visites pour gagner 1$ sur BTC et combien vous faut-il de visites pour gagner 1$ sur Adsense ?<br />
<br />
<b>Quelqu'un a hacké Bitcoin [Javascript Miner] !</b><br />
Quelle fut ma surprise en tombant sur des articles de blogs quand même assez connus qui prétendaient qu'un hacker avait piraté Bitcoin et créé un système permettant de faire travailler ses visiteurs!<br />
C'est N'IMPORTE QUOI ! Le système n'a pas été piraté, il est toujours aussi fiable, il s'agit simplement d'un code javascript qui utilise le navigateur pour lui faire calculer des hash !<br />
</p>
<h3>Gagner des bitcoins gratuitement</h3>
<p>Si vous voulez tester rapidement le service, il existe des "Bitcoin Faucet" qui offrent à tous les débutants 0.01 BTC, voici les deux plus connus:</p>
<p>http://freebitcoins.appspot.com/</p>
<p>http://faucet.bitcoin.st/</p>
<p>Malheuresement, à l'heure où j'écris cet article, ces deux Faucets sont vides.</p>
<p>Voilà, je mettrais cette page à jour souvent, en attendant, bons investissements !</p>
]]></content:encoded>
			<wfw:commentRss>http://babygeek.free.fr/index.php/reseau/tout-sur-bitcoin/feed/</wfw:commentRss>
		<slash:comments>151</slash:comments>
		</item>
		<item>
		<title>[OVH] Rapatrier un domaine sur l&#8217;hébergement d&#8217;un autre compte</title>
		<link>http://babygeek.free.fr/index.php/webmasters/ovh-rappatrier-un-domaine-sur-lhebergement-dun-autre-compte-2/</link>
		<comments>http://babygeek.free.fr/index.php/webmasters/ovh-rappatrier-un-domaine-sur-lhebergement-dun-autre-compte-2/#comments</comments>
		<pubDate>Fri, 20 May 2011 15:10:44 +0000</pubDate>
		<dc:creator>BabyGeek</dc:creator>
				<category><![CDATA[Webmasters]]></category>

		<guid isPermaLink="false">http://babygeek.free.fr/?p=1141</guid>
		<description><![CDATA[Vous avez 2 comptes chez OVH avec sur chacun un abonnement pour un hébergement de x Go, il vous reste de la place sur votre compte A, votre domaine et votre hébergement sur le compte B arrivent à expiration, pourquoi racheter le domaine ainsi qu'un hébergement pour le compte B alors que vous pouvez tout [...]]]></description>
			<content:encoded><![CDATA[<p>Vous avez 2 comptes chez OVH avec sur chacun un abonnement pour un hébergement de x Go, il vous reste de la place sur votre compte A, votre domaine et votre hébergement sur le compte B arrivent à expiration, pourquoi racheter le domaine ainsi qu'un hébergement pour le compte B alors que vous pouvez tout simplement racheter le domaine et utiliser la place disponible sur l'hébergement du compte A ?!</p>
<p>Seul contrainte: nous voulons garder le même titulaire du domaine au niveau du WHOIS pour éviter que Google pense qu'il y a eu changement de propriétaire et qu'il supprime le référencement.</p>
<h3>Changer les permissions</h3>
<p style="text-align: center;"><img class="aligncenter" title="Contacts" src="http://babygeek.free.fr/wp-content/upload/contacts.jpg" alt="contacts [OVH] Rapatrier un domaine sur lhébergement dun autre compte" width="201" height="326" /></p>
<p>Rendez vous dans le manager de votre compte B, sélectionnez le site  concerné (je l'appellerais ici siteb.com), rendez vous dans  "Administration" &gt; "Gestion des contacts".</p>
<p style="text-align: center;"><a href="http://babygeek.free.fr/wp-content/upload/gestion_des_contacts.jpg"><img class="aligncenter" title="Gestion des contacts" src="http://babygeek.free.fr/wp-content/upload/gestion_des_contacts_thumb.jpg" alt="gestion des contacts thumb [OVH] Rapatrier un domaine sur lhébergement dun autre compte" width="541" height="213" /></a></p>
<p>Ensuite dans la partie "Contact administrateur", cliquez sur le crayon "Modifier".</p>
<p style="text-align: center;"><img class="aligncenter" title="Changement contact" src="http://babygeek.free.fr/wp-content/upload/changement_contact.jpg" alt="changement contact [OVH] Rapatrier un domaine sur lhébergement dun autre compte" width="481" height="208" /></p>
<p>Dans "Nouvel identifiant", entrez le NIC-handle du compte A puis cliquez sur Valider.</p>
<p>Déconnectez vous, rendez vous dans le manager de votre compte A, le domaine siteB.com devrait normalement être disponible dans votre liste de domaines.</p>
<h3>Migration du contenu du site</h3>
<p>Maintenant que le compte A peut accéder au domaine du compte B, on va pouvoir activer le MultiDom, cependant il faut avant préparer la migration.</p>
<p>Connectez vous au serveur ftp de votre hébergement A, créez y un dossier dédié à votre siteB, pour ma part ce sera "wwwsiteB".</p>
<p>Maintenant il vous faut migrer votre site vers ce dossier, si c'est un simple site en HTML, un copier coller du FTP B vers le FTP A devrait suffire, par contre s'il s'agit d'un CMS il faudra d'abord copier le contenu de la base MySQL_B dédié au CMS vers la base MySQL_A, copier coller les fichiers du CMS et modifier les paramètres notemment les variables d'absolute path ou les infos de connexion à la bdd.</p>
<p>A noter qu'il est préférable de faire des copier et non pas des couper pour laisser le site en ligne pendant le transfert avant l'activation du MultiDom.</p>
<p>Une fois tout ceci fait, pour vérifier que vous avez bien migré votre site, rendez vous sur hebergementA/wwwsiteB/. Si vous êtes un gros bidouilleur de CMS, veillez à avoir bien modifié tous vos scripts.</p>
<p>Vous pouvez maintenant passer  à la prochaine étape.</p>
<h3>Activer le MultiDom</h3>
<p style="text-align: center;"><img class="aligncenter" title="MultiDom" src="http://babygeek.free.fr/wp-content/upload/multiDomClick.jpg" alt="multiDomClick [OVH] Rapatrier un domaine sur lhébergement dun autre compte" width="522" height="322" /></p>
<p>Rendez vous sur le manager du compte A, sélectionnez le site associé à l'hébergement A, cliquez sur "Hébergement" puis "Multi-domaines".</p>
<p>Cliquez sur "Création".</p>
<p style="text-align: center;"><img class="aligncenter" title="multidom" src="http://babygeek.free.fr/wp-content/upload/multidom.jpg" alt="multidom [OVH] Rapatrier un domaine sur lhébergement dun autre compte" width="491" height="330" /></p>
<p>Dans "Multi-domaine", rentrez le nom de domaine siteB.com, dans "dossier cible", tapez l'emplacement ftp où vous avez migré votre site, ici: www/wwwsiteB/, cliquez ensuite sur Valider.</p>
<p>(Pour voir si le changement a été effectué, le plus simple est de créer une page www/wwwsiteB/test.html, et tenter d'accéder à www.siteb.com/test.html).</p>
<h3>Sécurité</h3>
<p>Imaginez le duplicate content de fou si Google plonge son nez dans www/wwwsiteB !</p>
<p>Il existe différentes manières d'y remédier, j'ai choisi la plus simple, la plus efficace et la plus accessible.</p>
<p>Connectez vous au serveur ftp de votre hébergement A, dans le dossier www, éditez/créez le fichier .htaccess et ajoutez-y les lignes suivantes:</p>

<div class="wp_syntax"><div class="code"><pre class="ini" style="font-family:monospace;"># INTERDICTION ACCES MultiDom
RedirectTemp /wwwsiteB/ http://www.sitea.fr/refuse.php</pre></div></div>

<p>Enregistrez, puis créez un fichier refuse.php à la racine de sitea dans lequel vous écrirez "&lt;?php echo "Acces refuse" ?&gt;".</p>
<p>Voilà, tout est terminé ! Si vous avez des questions, laissez simplement un commentaire !</p>
]]></content:encoded>
			<wfw:commentRss>http://babygeek.free.fr/index.php/webmasters/ovh-rappatrier-un-domaine-sur-lhebergement-dun-autre-compte-2/feed/</wfw:commentRss>
		<slash:comments>344</slash:comments>
		</item>
	</channel>
</rss>
