<?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>Exponential Fault &#187; javascript</title>
	<atom:link href="http://weblog.lo2k.net/tag/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://weblog.lo2k.net</link>
	<description></description>
	<lastBuildDate>Fri, 25 Feb 2011 16:26:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Faire un cluster de calcul avec JavaScript.</title>
		<link>http://weblog.lo2k.net/2011/02/faire-un-cluster-de-calcul-avec-javascript/</link>
		<comments>http://weblog.lo2k.net/2011/02/faire-un-cluster-de-calcul-avec-javascript/#comments</comments>
		<pubDate>Thu, 24 Feb 2011 08:40:53 +0000</pubDate>
		<dc:creator>X-Blaster</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[Google Web Toolkit]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://weblog.lo2k.net/?p=483</guid>
		<description><![CDATA[Je vais vous proposez une idée simple, &#8220;faire un cluster avec l&#8217;idle CPU des gens qui trainent sur des sites webs&#8221;. Comment ? En JavaScript bien sûr ! Vous vous souvenez tous de Folding@Home (ou Seti@Home même si le coté UFO me botte beaucoup moins), pourquoi ne pas reprendre l&#8217;idée en AJAX ? Rapide coup [...]]]></description>
			<content:encoded><![CDATA[<p>Je vais vous proposez une idée simple, &#8220;faire un cluster avec l&#8217;idle CPU des gens qui trainent sur des sites webs&#8221;. Comment ? En JavaScript bien sûr !</p>
<p>Vous vous souvenez tous de <a class="zem_slink" title="Folding@home" rel="wikipedia" href="http://en.wikipedia.org/wiki/Folding%40home">Folding@Home</a> (ou Seti@Home même si le coté UFO me botte beaucoup moins), pourquoi ne pas reprendre l&#8217;idée en AJAX ?</p>
<h2>Rapide coup d&#8217;oeil des technos existantes</h2>
<p>Les navigateurs Web récents on fait un énorme bon en terme de performance sur l’interprétation du JavaScript. Vous trouverez facilement sur google de nombreux articles qui traitent du sujet.</p>
<p><img class="alignnone" title="Spider Benchmark" src="http://s.techairlines.com/wp-content/uploads/2010/03/SunSpiderResults.png" alt="" width="463" height="328" /></p>
<p>Si vous suivez ce blog vous avez dû tester un petit portage que j&#8217;avais fais de JBox2D avec GWT et les Canvas. Je vous laisse retenter l’expérience et vous verrez que <a href="http://labs.lo2k.net/gwt-physical-engine-2/">le moteur physique</a> est beaucoup plus rapide qu&#8217;il y a un an.</p>
<p>Pour rappel, GWT (<a class="zem_slink" title="Google Web Toolkit" rel="homepage" href="http://code.google.com/webtoolkit/">Google Web Toolkit</a>) permet de traduire du code Java en JavaScript. Bon ce n&#8217;est pas magique et il y a des limites mais ce compilateur permet assez facilement de porter des choses assez complexes.</p>
<p>Un langage de plus en plus rapide, un bon compilateur passons donc a l&#8217;étape suivante !</p>
<h2>Mise en oeuvre</h2>
<p>Le JavaScript est un langage de script fournit par le serveur et exécuté par le client. Il n&#8217;y a donc aucune installation et aucune restrictions (sauf en terme de sécurité, et ça se comprend) mais il n&#8217;y a aucune limitation en terme d&#8217;usage CPU.</p>
<p>Il est donc facile de faire un script qui récupère des données a traiter et l&#8217;algo de traitement (tant qu&#8217;a faire) effectue un certain nombre de calculs complexes puis transmet la réponse (en json par exemple) a un serveur.</p>
<p>Votre navigateur web permet donc (en terme pompeux), l&#8217;injection en javascript des données, le traitement et la transmission des résultats a un serveur.</p>
<p>Ici la seule difficulté, c&#8217;est le développement d&#8217;un serveur qui envoie les données a traiter et récupère les résultats et il faut le dire&#8230; c&#8217;est vraiment pas compliqué.</p>
<p><strong>Vous avez donc grâce au couple HTML/JS un outil de déploiement facile de cluster.</strong> Et ben ça alors ! J&#8217;irais même plus loin en disant qu&#8217;il est UNIVERSEL puisqu&#8217;ici même votre téléphone (Android ou IPhone) pourra aussi contribuer au cluster. Tout ce qui peut aller sur le net (et qui a un navigateur JS) pourra contribuer aux calculs.</p>
<p>Mais, il y a forcément un bémol. L&#8217;utilisateur doit consciemment ou inconsciemment laisser son navigateur sur une page ou le script de calcul est présent. Je dis bien &#8220;inconsciemment&#8221; car l&#8217;utilisateur ne sais pas que du javascript tourne en arrière plan d&#8217;une page web. <strong>Un utilisateur mal intentionné pourrait donc recycler son site web en une énorme ferme de calcul </strong>(Je ne parlerais même pas ici d&#8217;attaque de <a class="zem_slink" title="Cross-site scripting" rel="wikipedia" href="http://en.wikipedia.org/wiki/Cross-site_scripting">cross site scripting</a>) . Il faut bien comprendre qu&#8217;une simple balise SCRIPT dans une page web transforme un simple ordi en une partie du cluster.<script type="text/javascript">// <![CDATA[
 " pourait transformer un navigateur en une partie du cluster.
// ]]&gt;</script></p>
<h2>Applications possibles dès à présent</h2>
<p>Je vais ici proposer 3 idées d&#8217;utilisation d&#8217;un tel système de cluster.</p>
<h3>Google labs dans le domaine médical</h3>
<p>Vous l&#8217;aurez compris il faut que l&#8217;utilisateur soit présent sur la page pour que le calcul se fasse.</p>
<p>Imaginons que Google demande a ses utilisateurs de GMail et Google Docs de participer a un projet de calcul pour le domaine médical (type folding@Home). Il suffirait que l&#8217;utilisateur accepte (en connaissance de cause) et le script JS pourrait être lancer en arrière plan.</p>
<p>Des centaines de milliers de navigateur utiliseraient donc leur temps idle CPU pour le domaine médicale. Merveilleux <img src='http://weblog.lo2k.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<h3>Crack de clé WPA</h3>
<p>Ici on est dans un domaine moins glamour. Un étudiant a prouver qu&#8217;il était possible de <a href="http://www.livehacking.com/2011/01/11/amazon-ec2-used-to-hack-wi-fi-wpa-now-redundant/">cracker des clé WPA avec le cloud d&#8217;Amazon</a>, ici il suffirait de transposer ce principe sur un site web. Tout utilisateurs se connectant ce site web pourrait donc contribuer (sans le savoir) au hack de cette clé WPA.</p>
<p>L&#8217;utilisateur mal intentionné pourrait rajouter volontairement un script sur son site web ou alors l&#8217;injecter sur un site très connu par une attaque de type &#8220;cross site scripting&#8221; injectant ainsi son code de clustering.</p>
<p>J&#8217;insiste lourdement là dessus <strong>mais ce genre de pratique ne pourra JAMAIS être détecté </strong>car vous n&#8217;avez aucun contrôle sur les intentions du code JavaScript d&#8217;un site web.</p>
<h3>Open Cloud</h3>
<p>Ici l&#8217;idée est de faire un système de peer2peer mais en terme de temps CPU.</p>
<p>Toutes personnes restant sur la page de &#8220;l&#8217;open cloud&#8221; obtiendrait un crédit temps CPU. Si il souhaite utiliser le cloud il pourra exécuter grâce a une API JS ou même GWT du code qui sera exécuté plus ou moins rapidement en fonction de son crédit temps.</p>
<p>Imaginez le super calculateur qui pourrait émerger d&#8217;une telle structure !</p>
<h2>Conclusion</h2>
<p>L&#8217;évolution d&#8217;application en AJAX nous réserve a mon avis bien des surprises. Ce sujet me passionne particulièrement en ce moment et j&#8217;espère assez rapidement mettre en place une sorte de &#8220;Proof Of Concept&#8221; avec un challenge de clé Sha1.</p>
<p>J&#8217;espère que cet article vous aura intéressé et n&#8217;hésitez pas a laisser un commentaire <img src='http://weblog.lo2k.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><img class="zemanta-pixie-img" style="border: none; float: right;" src="http://img.zemanta.com/pixy.gif?x-id=a3afa766-dd37-4e09-8aa5-55182215e5cb" alt="" /></div>
]]></content:encoded>
			<wfw:commentRss>http://weblog.lo2k.net/2011/02/faire-un-cluster-de-calcul-avec-javascript/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Un moteur physique avec des canvas grâce à GWT</title>
		<link>http://weblog.lo2k.net/2009/10/un-moteur-physique-avec-des-canvas-grace-a-gwt/</link>
		<comments>http://weblog.lo2k.net/2009/10/un-moteur-physique-avec-des-canvas-grace-a-gwt/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 13:57:23 +0000</pubDate>
		<dc:creator>X-Blaster</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[gwt]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://weblog.lo2k.net/?p=210</guid>
		<description><![CDATA[Chose promise&#8230; chose promise !!! Je viens de faire un petit &#8220;proof of concept&#8221;. Qu&#8217;est-ce qui est plus difficile que de faire un petit moteur 2D en full javascript/canvas ? Un petit moteur 2D en full javascript/canvas avec un moteur physique ! Il n&#8217;y a aucune bidouille et le rendu est entièrement fait par votre [...]]]></description>
			<content:encoded><![CDATA[<p>Chose promise&#8230; chose promise !!!</p>
<p>Je viens de faire un petit &#8220;proof of concept&#8221;.</p>
<p>Qu&#8217;est-ce qui est plus difficile que de faire un petit moteur 2D en full javascript/canvas ?<br />
Un <a href="http://labs.lo2k.net/gwt-physical-engine">petit moteur 2D en full javascript/canvas <strong>avec un moteur physique</strong></a> !</p>
<p><a href="http://labs.lo2k.net/gwt-physical-engine/"><img class="alignnone size-full wp-image-211" title="jbox2d_in_gwt" src="http://weblog.lo2k.net/wp-content/uploads/2009/10/jbox2d_in_gwt.png" alt="jbox2d_in_gwt" width="493" height="324" /></a></p>
<p>Il n&#8217;y a aucune bidouille et le rendu est entièrement fait par votre navigateur préféré. Je note qu&#8217;a part <a href="http://www.google.com/chrome">Google Chrome</a>, les autres s&#8217;en sortent assez rapidement très très mal.</p>
<p>Pour la réalisation, j&#8217;ai tout simplement intégré JBox2D dans un module GWT.</p>
<p>Il faut être clair c&#8217;est rapidement &#8220;TRES LENT&#8221; et soumis a encore quelques petits glitches, cependant cela montre que &#8220;c&#8217;est possible&#8221; sans trop se prendre la tête.</p>
<p>Pour ceux qui sont intéressés, je pourrais fournir le code source.</p>
<p>Edit:</p>
<p>Un <a href="http://labs.lo2k.net/gwt-physical-engine-2/">2eme exemple</a> avec &#8220;spawn&#8221; des caisses avec la souris.</p>
]]></content:encoded>
			<wfw:commentRss>http://weblog.lo2k.net/2009/10/un-moteur-physique-avec-des-canvas-grace-a-gwt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

