<?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>jaiunblog.com &#124; j&#039;ai un blog - graphisme, design, programmation &#187; programmation</title>
	<atom:link href="http://jaiunblog.com/category/programmation/feed/" rel="self" type="application/rss+xml" />
	<link>http://jaiunblog.com</link>
	<description>un peu de tout et beaucoup de rien ça fait du bien !</description>
	<lastBuildDate>Thu, 02 Feb 2012 14:35:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>spirale</title>
		<link>http://jaiunblog.com/3724/spirale/</link>
		<comments>http://jaiunblog.com/3724/spirale/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 12:30:00 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[graphisme]]></category>
		<category><![CDATA[programmation]]></category>
		<category><![CDATA[maths]]></category>
		<category><![CDATA[processing]]></category>
		<category><![CDATA[spirale]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://jaiunblog.com/?p=3724</guid>
		<description><![CDATA[Voici une portion de code processing (v1.5 et/ou v2) que l&#8217;on retrouve dans ma carte de vœux 2012, une étape nécessaire avant l&#8217;assemblage de « mes briques de code ». Deux notions de maths sont utiles, le calcul de distances entre deux points et l&#8217;équation paramétrique d&#8217;un cercle mais pas besoin de comprendre rigoureusement pour [...]]]></description>
			<content:encoded><![CDATA[<!-- Flash Video Resizer 1.4 : 425pixel --><p><img src="http://jaiunblog.com/blog/wp-content/uploads/2012/02/spirale.png" alt="" title="spirale" width="425" height="295" class="alignnone size-full wp-image-3726" />Voici une portion de code processing (v1.5 et/ou v2) que l&#8217;on retrouve dans ma carte de vœux 2012, une étape nécessaire avant l&#8217;assemblage de « mes briques de code ».<br />
Deux notions de maths sont utiles, le calcul de distances entre deux points et l&#8217;équation paramétrique d&#8217;un cercle mais pas besoin de comprendre rigoureusement pour s&#8217;amuser avec ces formules :)</p>
<pre class="brush: java; title: ;">
float x, y; //position du point
float a; // une sorte de rayon
int tx, ty; // target du point

void setup() {
  size(640, 360);
  background(250);
  smooth();
  frameRate(500);
  x=400;
  y=200;
  tx=320;
  ty=180;

  strokeWeight(2);
  a=sqrt(sq(x-tx)+sq(y-ty)); // distance entre deux points (pythagore)
}

void draw()
{
  fill(0, 10); //effet trace (motion trail)
  noStroke();
  rect(0, 0, 640, 360);
  stroke(255);
  point(x, y);

  // calcul de la position
  float angle=radians(frameCount*4); // à chaque image on bouge de 4°
  if (a&gt;1) {
    x=cos(angle)*a+tx; // équation d'un cercle de rayon a et centre tx
    y=sin(angle)*a+ty; //
    a=a-0.05; // réduction du rayon
  } else {
    x=tx;
    y=ty;
  }
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://jaiunblog.com/3724/spirale/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>processing</title>
		<link>http://jaiunblog.com/3690/processing/</link>
		<comments>http://jaiunblog.com/3690/processing/#comments</comments>
		<pubDate>Wed, 04 Jan 2012 17:39:39 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[programmation]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[liste]]></category>
		<category><![CDATA[p5]]></category>
		<category><![CDATA[processing]]></category>
		<category><![CDATA[supprimer]]></category>

		<guid isPermaLink="false">http://jaiunblog.com/?p=3690</guid>
		<description><![CDATA[On peut faire pas mal d&#8217;opérations sur les Array dans Processing mais pour supprimer un élément, j&#8217;ai rien vu, de plus subset compte de 1 à n les éléments de la liste (=array) ! Voici une function _remove pour les listes de chiffres, à adapter selon vos besoins. int[] s= { 1, 2, 3, 4}; [...]]]></description>
			<content:encoded><![CDATA[<!-- Flash Video Resizer 1.4 : 425pixel --><p>On peut faire pas mal d&#8217;opérations sur les Array dans Processing mais pour supprimer un élément, j&#8217;ai rien vu, de plus <a href="http://processing.org/reference/subset_.html">subset</a> compte de 1 à n les éléments de la liste (=array) !<br />
Voici une function _remove pour les listes de chiffres, à adapter selon vos besoins.</p>
<pre class="brush: java; title: ;">
int[] s= { 1, 2, 3, 4};

int[] _remove(int[] s, int r) {
  return concat(subset(s, 0, r), subset(s, r+1, s.length-r-1));
}

void setup() {
  println(&quot;s=&quot;+join(nf(s, 0), &quot;, &quot;));
  s=_remove(s, 1); //on compte comme dans l'array à partir de 0
  println(&quot;s=&quot;+join(nf(s, 0), &quot;, &quot;));
}
</pre>
<p>Comme la manipulation sur les tableaux en 2D n&#8217;est pas simple (enfin il faut juste mettre un type devant), voici la version 2D</p>
<pre class="brush: java; title: ;">
int[][] _remove(int[][] s,int r){
 return (int[][]) concat((int[][]) subset(s,0,r),(int[][]) subset(s,r+1,s.length-r-1));
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://jaiunblog.com/3690/processing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>processing #8 : SQLibrary</title>
		<link>http://jaiunblog.com/3615/processing-8-sqlibrary/</link>
		<comments>http://jaiunblog.com/3615/processing-8-sqlibrary/#comments</comments>
		<pubDate>Thu, 22 Sep 2011 15:12:26 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[programmation]]></category>
		<category><![CDATA[tutorials]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[processing]]></category>

		<guid isPermaLink="false">http://jaiunblog.com/?p=3615</guid>
		<description><![CDATA[Aujourd&#8217;hui, je vais vous présenter une petite librairie pour Processing, SQLibrary. Cette librairie permet de connecter Processing et MySQL, je détaille peu, il s&#8217;agit d&#8217;un retour d&#8217;expérience personnelle que je partage pour les utilisateurs francophones. Lancer MAMP :) Premier exemple,ajouter dans une BDD. import de.bezier.data.sql.*; MySQL msql; String nom,prenom; int age; /* dans phpMyAdmin : [...]]]></description>
			<content:encoded><![CDATA[<!-- Flash Video Resizer 1.4 : 425pixel --><p><img src="http://jaiunblog.com/blog/wp-content/uploads/2011/05/p5.png" alt="" title="p5" width="425" height="170" class="alignnone size-full wp-image-3421" /></p>
<p>Aujourd&#8217;hui, je vais vous présenter une petite librairie pour Processing, <a href="http://bezier.de/processing/libs/sql/">SQLibrary</a>.<br />
Cette librairie permet de connecter Processing et MySQL, je détaille peu, il s&#8217;agit d&#8217;un retour d&#8217;expérience personnelle que je partage pour les utilisateurs francophones. </p>
<p>Lancer MAMP :)<br />
Premier exemple,ajouter dans une BDD.</p>
<pre class="brush: java; title: ;">
import de.bezier.data.sql.*;

MySQL msql;
String nom,prenom;
int age;

/* dans phpMyAdmin :
CREATE TABLE IF NOT EXISTS `stu` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nom` varchar(255) NOT NULL,
  `prenom` varchar(255) NOT NULL,
  `age` int(11) NOT NULL,
  PRIMARY KEY (`id`)
)
*/

void setup() {
  msql = new MySQL( this, &quot;localhost:8889&quot;, &quot;esad&quot;, &quot;root&quot;, &quot;root&quot; );

  if ( msql.connect() )
  {
    nom=&quot;bond&quot;;
    prenom=&quot;james&quot;;
    age=17;
    msql.execute(&quot;INSERT INTO stu (nom,prenom,age) VALUES ('&quot;+nom+&quot;','&quot;+prenom+&quot;',&quot;+age+&quot;)&quot;);
  }
}
</pre>
<p>Ce second exemple permet d&#8217;avoir le prochain ID (auto-incrementé) :</p>
<pre class="brush: java; title: ;">
import de.bezier.data.sql.*;

MySQL msql;

void setup() {
  msql = new MySQL( this, &quot;localhost:8889&quot;, &quot;esad&quot;, &quot;root&quot;, &quot;root&quot; );

  if ( msql.connect() )
  {
    msql.query( &quot;SHOW TABLE STATUS LIKE 'students'&quot; );
    msql.next();
    println(msql.getInt(&quot;Auto_increment&quot;));
  }
}
</pre>
<p>en php</p>
<pre class="brush: php; title: ;">
$query 		= &quot;SHOW TABLE STATUS LIKE '$tablename'&quot;;
$result 	= mysql_query($query) ;

$row = mysql_fetch_assoc($result);
echo $row['Auto_increment'];
</pre>
<p>Voilà pour ce court épisode du jour, d&#8217;autres exemples sont fournis avec la librairie.</p>
]]></content:encoded>
			<wfw:commentRss>http://jaiunblog.com/3615/processing-8-sqlibrary/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Marco Tempest</title>
		<link>http://jaiunblog.com/3598/marco-tempest/</link>
		<comments>http://jaiunblog.com/3598/marco-tempest/#comments</comments>
		<pubDate>Wed, 21 Sep 2011 12:57:37 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[graphisme]]></category>
		<category><![CDATA[programmation]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[ipod]]></category>
		<category><![CDATA[magie]]></category>

		<guid isPermaLink="false">http://jaiunblog.com/?p=3598</guid>
		<description><![CDATA[La magie de la vérité, des mensonges&#8230; et des iPods.]]></description>
			<content:encoded><![CDATA[<!-- Flash Video Resizer  : NO RESIZE --><p><object width="422" height="304"><param name="movie" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf"></param><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always"/><param name="wmode" value="transparent"></param><param name="bgColor" value="#ffffff"></param><param name="flashvars" value="vu=http://video.ted.com/talk/stream/2011G/Blank/MarcoTempest_2011G-320k.mp4&#038;su=http://images.ted.com/images/ted/tedindex/embed-posters/MarcoTempest_2011G-embed.jpg&#038;vw=512&#038;vh=288&#038;ap=0&#038;ti=1211&#038;lang=fre_fr&#038;introDuration=15330&#038;adDuration=4000&#038;postAdDuration=830&#038;adKeys=talk=marco_tempest_the_magic_of_truth_and_lies_on_ipods;year=2011;theme=spectacular_performance;theme=master_storytellers;theme=what_makes_us_happy;theme=new_on_ted_com;theme=a_taste_of_tedglobal_2011;event=TEDGlobal+2011;tag=Arts;tag=Design;tag=Entertainment;tag=Technology;tag=art;tag=illusion;tag=magic;tag=music;&#038;preAdTag=tconf.ted/embed;tile=1;sz=512x288;" /><embed src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" pluginspace="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="transparent" bgColor="#ffffff" width="422" height="304" allowFullScreen="true" allowScriptAccess="always" flashvars="vu=http://video.ted.com/talk/stream/2011G/Blank/MarcoTempest_2011G-320k.mp4&#038;su=http://images.ted.com/images/ted/tedindex/embed-posters/MarcoTempest_2011G-embed.jpg&#038;vw=410&#038;vh=218&#038;ap=0&#038;ti=1211&#038;lang=fre_fr&#038;introDuration=15330&#038;adDuration=4000&#038;postAdDuration=830&#038;adKeys=talk=marco_tempest_the_magic_of_truth_and_lies_on_ipods;year=2011;theme=spectacular_performance;theme=master_storytellers;theme=what_makes_us_happy;theme=new_on_ted_com;theme=a_taste_of_tedglobal_2011;event=TEDGlobal+2011;tag=Arts;tag=Design;tag=Entertainment;tag=Technology;tag=art;tag=illusion;tag=magic;tag=music;&#038;preAdTag=tconf.ted/embed;tile=1;sz=422x218;"></embed></object></p>
<p>La magie de la vérité, des mensonges&#8230; et des iPods.</p>
]]></content:encoded>
			<wfw:commentRss>http://jaiunblog.com/3598/marco-tempest/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mamp</title>
		<link>http://jaiunblog.com/3595/mamp/</link>
		<comments>http://jaiunblog.com/3595/mamp/#comments</comments>
		<pubDate>Mon, 12 Sep 2011 15:57:25 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[programmation]]></category>
		<category><![CDATA[mamp]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://jaiunblog.com/?p=3595</guid>
		<description><![CDATA[Si quelqu&#8217;un connaît Monsieur Mamp… Host localhost Port 3306 // je veux bien mais c&#8217;est 8889 dans les préférences User root Password root Et dans le php.ini display_errors = Off C&#8217;est pas sympa pour les newbies ;¬) on basculera en display_errors = On (pomme + s, relancer Mamp)]]></description>
			<content:encoded><![CDATA[<!-- Flash Video Resizer 1.4 : 425pixel --><p>Si quelqu&#8217;un connaît Monsieur Mamp…</p>
<blockquote><p>
Host 	localhost<br />
Port 	3306 // je veux bien mais c&#8217;est <strong>8889</strong> dans les préférences<br />
User 	root<br />
Password  root</p></blockquote>
<p>Et dans le php.ini</p>
<pre class="brush: php; title: ;">
display_errors = Off
</pre>
<p>C&#8217;est pas sympa pour les newbies ;¬) on basculera en display_errors = On  (pomme + s, relancer Mamp)</p>
]]></content:encoded>
			<wfw:commentRss>http://jaiunblog.com/3595/mamp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>processing #7 : proControll</title>
		<link>http://jaiunblog.com/3584/processing-7-procontroll/</link>
		<comments>http://jaiunblog.com/3584/processing-7-procontroll/#comments</comments>
		<pubDate>Mon, 12 Sep 2011 12:51:08 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[programmation]]></category>
		<category><![CDATA[tutorials]]></category>
		<category><![CDATA[joypad]]></category>
		<category><![CDATA[joystick]]></category>
		<category><![CDATA[librairie]]></category>
		<category><![CDATA[manette]]></category>
		<category><![CDATA[processing]]></category>

		<guid isPermaLink="false">http://jaiunblog.com/?p=3584</guid>
		<description><![CDATA[Aujourd&#8217;hui, je vais aborder une extension librairie qui offre pas mal de possibilités : procontroll. Pour installer cette librairie, le plus simple est de la dézipper dans utilisateurs > benoît > documents > processing > librairies selon vos préférences de Processing : À quoi sert cette librairie ? Elle permet de brancher plusieurs périphériques de [...]]]></description>
			<content:encoded><![CDATA[<!-- Flash Video Resizer 1.4 : 425pixel --><p><img src="http://jaiunblog.com/blog/wp-content/uploads/2011/05/p5.png" alt="" title="p5" width="425" height="170" class="alignnone size-full wp-image-3421" /><br />
Aujourd&#8217;hui, je vais aborder une <del datetime="2011-09-12T12:17:58+00:00">extension</del> librairie qui offre pas mal de possibilités : <a href="http://www.creativecomputing.cc/p5libs/procontroll/">procontroll</a>.<br />
Pour installer cette librairie, le plus simple est de la dézipper dans </p>
<blockquote><p>utilisateurs > benoît > documents > processing > librairies</p></blockquote>
<p>selon vos préférences de Processing :</p>
<p><a href="http://jaiunblog.com/blog/wp-content/uploads/2011/09/preference.png"><img src="http://jaiunblog.com/blog/wp-content/uploads/2011/09/preference-425x270.png" alt="" title="preference" width="425" height="270" class="alignnone size-medium wp-image-3585" /></a> </p>
<p><strong>À quoi sert cette librairie ?</strong><br />
Elle permet de brancher plusieurs périphériques de type joypad, joystick, souris et de récupérer les événements liés.<br />
Premier point : débrancher les périphériques exotiques des ports USB (paradoxalement ma souris Logitech sans fil est incompatible).<br />
Un exemple est livré, celui affiche dans la console les périphériques disponibles :</p>
<pre class="brush: java; title: ;">
import procontroll.*;
import java.io.*;

ControllIO controll;

void setup(){
  size(400,400);

  controll = ControllIO.getInstance(this);
  controll.printDevices();

  for(int i = 0; i &lt; controll.getNumberOfDevices(); i++){
    ControllDevice device = controll.getDevice(i);

    println(device.getName()+&quot; has:&quot;);
    println(&quot; &quot; + device.getNumberOfSliders() + &quot; sliders&quot;);
    println(&quot; &quot; + device.getNumberOfButtons() + &quot; buttons&quot;);
    println(&quot; &quot; + device.getNumberOfSticks() + &quot; sticks&quot;);

    device.printSliders();
    device.printButtons();
    device.printSticks();
  }
}
</pre>
<p>Si ma souris Logitech est branchée, ça coince :</p>
<blockquote><p>Failed to enumerate device: Device open failed: -536870203<br />
<<< available proCONTROLL devices: >>></p></blockquote>
<p>en la débranchant (sans relancer Processing juste stop -> play), on découvre que je suis sur un Mac ;¬)</p>
<blockquote><p>
0<br />
0</p>
<p><<< available proCONTROLL devices: >>></p>
<p>     0: Apple Internal Keyboard / Trackpad<br />
     1: Apple Internal Keyboard / Trackpad</p>
<p><<< >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><br />
Apple Internal Keyboard / Trackpad has:<br />
 0 sliders<br />
 180 buttons<br />
 0 sticks</p>
<p><<< available Apple Internal Keyboard / Trackpad buttons: >>></p>
<p>     0: Left Control<br />
     1: Left Shift<br />
     2: Left Alt<br />
     3: Left Windows<br />
     4: Right Control<br />
     5: Right Shift<br />
     6: Right Alt<br />
     7: Right Windows<br />
     8: Unknown<br />
     9: Unknown<br />
     10: Unknown<br />
     11: A<br />
     12: B<br />
     13: C<br />
     14: D<br />
     15: E<br />
     16: F<br />
     17: G<br />
     18: H<br />
     19: I<br />
     20: J<br />
     21: K<br />
     22: L<br />
     23: M<br />
     24: N<br />
     25: O<br />
     26: P<br />
     27: Q<br />
     28: R<br />
     29: S<br />
     30: T<br />
     31: U<br />
     32: V<br />
     33: W<br />
     34: X<br />
     35: Y<br />
     36: Z<br />
     37: 1<br />
     38: 2<br />
     39: 3<br />
     40: 4<br />
     41: 5<br />
     42: 6<br />
     43: 7<br />
     44: 8<br />
     45: 9<br />
     46: 0<br />
     47: Return<br />
     48: Escape<br />
     49: Back<br />
     50: Tab<br />
     51:<br />
     52: -<br />
     53: =<br />
     54: [<br />
     55: ]<br />
     56: \<br />
     57: .<br />
     58: ;<br />
     59: &#8216;<br />
     60: ~<br />
     61: ,<br />
     62: .<br />
     63: /<br />
     64: Caps Lock<br />
     65: F1<br />
     66: F2<br />
     67: F3<br />
     68: F4<br />
     69: F5<br />
     70: F6<br />
     71: F7<br />
     72: F8<br />
     73: F9<br />
     74: F10<br />
     75: F11<br />
     76: F12<br />
     77: SysRq<br />
     78: Scroll Lock<br />
     79: Pause<br />
     80: Insert<br />
     81: Home<br />
     82: Pg Up<br />
     83: Delete<br />
     84: End<br />
     85: Pg Down<br />
     86: Right<br />
     87: Left<br />
     88: Down<br />
     89: Up<br />
     90: Num Lock<br />
     91: Num /<br />
     92: Unknown<br />
     93: Num -<br />
     94: Num +<br />
     95: Num Enter<br />
     96: Num 1<br />
     97: Num 2<br />
     98: Num 3<br />
     99: Num 4<br />
     100: Num 5<br />
     101: Num 6<br />
     102: Num 7<br />
     103: Num 8<br />
     104: Num 9<br />
     105: Num 0<br />
     106: Num .<br />
     107: \<br />
     108: Apps<br />
     109: Power<br />
     110: Num =<br />
     111: F13<br />
     112: F14<br />
     113: F15<br />
     114: Unknown<br />
     115: Unknown<br />
     116: Unknown<br />
     117: Unknown<br />
     118: Unknown<br />
     119: Unknown<br />
     120: Unknown<br />
     121: Unknown<br />
     122: Unknown<br />
     123: Unknown<br />
     124: Unknown<br />
     125: Unknown<br />
     126: Unknown<br />
     127: Stop<br />
     128: Unknown<br />
     129: Unknown<br />
     130: Unknown<br />
     131: Unknown<br />
     132: Unknown<br />
     133: Unknown<br />
     134: Unknown<br />
     135: Unknown<br />
     136: Unknown<br />
     137: Caps Lock<br />
     138: Num Lock<br />
     139: Scroll Lock<br />
     140: ,<br />
     141: Unknown<br />
     142: Unknown<br />
     143: Unknown<br />
     144: Unknown<br />
     145: Unknown<br />
     146: Unknown<br />
     147: Unknown<br />
     148: Unknown<br />
     149: Unknown<br />
     150: Unknown<br />
     151: Unknown<br />
     152: Unknown<br />
     153: Unknown<br />
     154: Unknown<br />
     155: Unknown<br />
     156: Unknown<br />
     157: Unknown<br />
     158: Unknown<br />
     159: Unknown<br />
     160: Unknown<br />
     161: SysRq<br />
     162: Unknown<br />
     163: Unknown<br />
     164: Pg Up<br />
     165: Return<br />
     166: Unknown<br />
     167: Unknown<br />
     168: Unknown<br />
     169: Unknown<br />
     170: Unknown<br />
     171: Unknown<br />
     172: Left Control<br />
     173: Left Shift<br />
     174: Left Alt<br />
     175: Left Windows<br />
     176: Right Control<br />
     177: Right Shift<br />
     178: Right Alt<br />
     179: Right Windows</p>
<p><<< >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><br />
Apple Internal Keyboard / Trackpad has:<br />
 2 sliders<br />
 3 buttons<br />
 1 sticks</p>
<p><<< available Apple Internal Keyboard / Trackpad sliders: >>></p>
<p>     0: x relative<br />
     1: y relative</p>
<p><<< >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>></p>
<p><<< available Apple Internal Keyboard / Trackpad buttons: >>></p>
<p>     0: Left<br />
     1: Right<br />
     2: Middle</p>
<p><<< >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>></p>
<p><<< available Apple Internal Keyboard / Trackpad sticks: >>></p>
<p>     0: y x</p>
<p><<< >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
</p></blockquote>
<p>Et si je branche un joypad (l&#8217;affreux de la freebox v6)</p>
<blockquote><p>
0<br />
0<br />
0<br />
0</p>
<p><<< available proCONTROLL devices: >>></p>
<p>     0: Apple Internal Keyboard / Trackpad<br />
     1: Apple Internal Keyboard / Trackpad<br />
     2: Apple Internal Keyboard / Trackpad<br />
     3: Generic   USB  Joystick  </p>
<p><<< >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><br />
Apple Internal Keyboard / Trackpad has:<br />
 0 sliders<br />
 180 buttons<br />
 0 sticks</p>
<p><<< available Apple Internal Keyboard / Trackpad buttons: >>></p>
<p>     0: Left Control<br />
    (&#8230;)<br />
     179: Right Windows</p>
<p><<< >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><br />
Apple Internal Keyboard / Trackpad has:<br />
 2 sliders<br />
 1 buttons<br />
 1 sticks</p>
<p><<< available Apple Internal Keyboard / Trackpad sliders: >>></p>
<p>     0: x relative<br />
     1: y relative</p>
<p><<< >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>></p>
<p><<< available Apple Internal Keyboard / Trackpad buttons: >>></p>
<p>     0: Left</p>
<p><<< >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>></p>
<p><<< available Apple Internal Keyboard / Trackpad sticks: >>></p>
<p>     0: y x</p>
<p><<< >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><br />
Apple Internal Keyboard / Trackpad has:<br />
 2 sliders<br />
 3 buttons<br />
 1 sticks</p>
<p><<< available Apple Internal Keyboard / Trackpad sliders: >>></p>
<p>     0: x relative<br />
     1: y relative</p>
<p><<< >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>></p>
<p><<< available Apple Internal Keyboard / Trackpad buttons: >>></p>
<p>     0: Left<br />
     1: Right<br />
     2: Middle</p>
<p><<< >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>></p>
<p><<< available Apple Internal Keyboard / Trackpad sticks: >>></p>
<p>     0: y x</p>
<p><<< >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><br />
Generic   USB  Joystick   has:<br />
 5 sliders<br />
 13 buttons<br />
 0 sticks</p>
<p><<< available Generic   USB  Joystick   sliders: >>></p>
<p>     0: x absolute<br />
     1: y absolute<br />
     2: z absolute<br />
     3: z absolute<br />
     4: rz absolute</p>
<p><<< >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>></p>
<p><<< available Generic   USB  Joystick   buttons: >>></p>
<p>     0: 0<br />
     1: 1<br />
     2: 2<br />
     3: 3<br />
     4: 4<br />
     5: 5<br />
     6: 6<br />
     7: 7<br />
     8: 8<br />
     9: 9<br />
     10: 10<br />
     11: 11<br />
     12: cooliehat: pov</p>
<p><<< >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
</p></blockquote>
<p>Un autre modèle :</p>
<blockquote><p><<< >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><br />
USB GAMEPAD 8116 has:<br />
 5 sliders<br />
 11 buttons<br />
 0 sticks</p>
<p><<< available USB GAMEPAD 8116 sliders: >>></p>
<p>     0: z absolute<br />
     1: rz absolute<br />
     2: x absolute<br />
     3: y absolute<br />
     4: slider absolute</p>
<p><<< >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>></p>
<p><<< available USB GAMEPAD 8116 buttons: >>></p>
<p>     0: 0<br />
     1: 1<br />
     2: 2<br />
     3: 3<br />
     4: 4<br />
     5: 5<br />
     6: 6<br />
     7: 7<br />
     8: 8<br />
     9: 9<br />
     10: cooliehat: pov</p>
<p><<< >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
</p></blockquote>
<p>On connait le nom du périphérique<br />
il suffit de régler cette ligne selon votre nom de périphérique comme ci-dessous<br />
à la ligne 26 : device = controll.getDevice(&laquo;&nbsp;USB GAMEPAD 8116&#8243;);</p>
<pre class="brush: java; title: ;">
import procontroll.*;
import java.io.*;

ControllIO controll;
ControllDevice device;
ControllSlider sliderX; //selon votre sauce
ControllSlider sliderY; //idem
ControllButton b0,b1,b2,b3,b4,b5,b6,b7,b8,b9; //idem

void setup() {
  size(400, 400);

  controll = ControllIO.getInstance(this);
  for (int i = 0; i &lt; controll.getNumberOfDevices(); i++) {
    ControllDevice device = controll.getDevice(i);

    println(device.getName()+&quot; has:&quot;);
    println(&quot; &quot; + device.getNumberOfSliders() + &quot; sliders&quot;);
    println(&quot; &quot; + device.getNumberOfButtons() + &quot; buttons&quot;);
    println(&quot; &quot; + device.getNumberOfSticks() + &quot; sticks&quot;);

    device.printSliders();
    device.printButtons();
    device.printSticks();
  }
  device = controll.getDevice(&quot;USB GAMEPAD 8116&quot;);
  device.setTolerance(0.05f);
  device.rumble(100,1);
  sliderX = device.getSlider(2);
  sliderY = device.getSlider(3);

  b0 = device.getButton(0);
  b1 = device.getButton(1);
  b2 = device.getButton(2);
  b3 = device.getButton(3);
  b4 = device.getButton(4);
  b5 = device.getButton(5);
  b6 = device.getButton(6);
  b7 = device.getButton(7);
  b8 = device.getButton(8);
  b9 = device.getButton(9);

  fill(0);
  rectMode(CENTER);

}

void draw() {
  background(255);

  if (b0.pressed()) {
    fill(255, 0, 0);
    println(&quot;b0&quot;);
  }
  else if (b1.pressed()) {
    fill(0, 255, 0);
    println(&quot;b0&quot;);
  }
  else if (b2.pressed()) {
    fill(0, 0,255);
    println(&quot;b2&quot;);
  }
  else if (b3.pressed()) {
    fill(255,255, 0);
    println(&quot;b3&quot;);
  }
  else if (b4.pressed()) {
    fill(0,255, 255);
    println(&quot;b4&quot;);
  }
   else if (b5.pressed()) {
    fill(255, 0, 255);
    println(&quot;b5&quot;);
  }
  else if (b6.pressed()) {
    fill(255, 255, 255);
    println(&quot;b6&quot;);
  }
   else if (b7.pressed()) {
    fill(127, 0, 255);
    println(&quot;b7&quot;);
  }
  else if (b8.pressed()) {
    fill(255, 0, 255);
    println(&quot;b8&quot;);
  }
  else if (b9.pressed()) {
    fill(255, 0, 255);
    println(&quot;b9&quot;);
  }
  else {
    fill(0);
  }

  float x = sliderX.getTotalValue() + width/2;
  float y = sliderY.getTotalValue() + height/2;

  if (x &gt; width + 20 || x &lt; - 20 || y &gt; height + 20 || y &lt; - 20) {
    sliderX.reset();
    sliderY.reset();
  }

  rect(x, y, 20, 20);
}
</pre>
<p>Je vous laisse décortiquer tout ça :)<br />
Have fun !</p>
]]></content:encoded>
			<wfw:commentRss>http://jaiunblog.com/3584/processing-7-procontroll/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>l&#8217;histoire d&#8217;Internet</title>
		<link>http://jaiunblog.com/3575/lhistoire-dinternet/</link>
		<comments>http://jaiunblog.com/3575/lhistoire-dinternet/#comments</comments>
		<pubDate>Fri, 09 Sep 2011 10:56:55 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[graphisme]]></category>
		<category><![CDATA[programmation]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[documentaire]]></category>
		<category><![CDATA[internet]]></category>

		<guid isPermaLink="false">http://jaiunblog.com/?p=3575</guid>
		<description><![CDATA[Très bien résumé et c&#8217;est sous-titré en français via le menu cc sur la version youtube : http://www.youtube.com/watch?v=9hIQjrMHTv4]]></description>
			<content:encoded><![CDATA[<!-- Flash Video Resizer 1.4 : 425pixel --><p><iframe width="425" height="261" src="http://www.youtube.com/embed/9hIQjrMHTv4" frameborder="0" allowfullscreen></iframe></p>
<p>Très bien résumé et c&#8217;est sous-titré en français via le menu cc sur la version youtube : <a href="http://www.youtube.com/watch?v=9hIQjrMHTv4">http://www.youtube.com/watch?v=9hIQjrMHTv4</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jaiunblog.com/3575/lhistoire-dinternet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>5 ans</title>
		<link>http://jaiunblog.com/3553/5-ans/</link>
		<comments>http://jaiunblog.com/3553/5-ans/#comments</comments>
		<pubDate>Sun, 04 Sep 2011 15:57:17 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[programmation]]></category>
		<category><![CDATA[tutorials]]></category>

		<guid isPermaLink="false">http://jaiunblog.com/?p=3553</guid>
		<description><![CDATA[Aujourd&#8217;hui, je peux dire que j&#8217;ai un blog depuis le 4 septembre 2006, les meilleurs en maths auront calculé l&#8217;âge du capitaine ! En attendant de poster et archiver des choses passionnantes, j&#8217;en profite pour mettre cette astuce WordPress. Comme je suis graphiste et que j&#8217;aime la typo, la version française de l&#8217;administration de WordPress [...]]]></description>
			<content:encoded><![CDATA[<!-- Flash Video Resizer 1.4 : 425pixel --><p>Aujourd&#8217;hui, je peux dire que j&#8217;ai un blog depuis le 4 septembre 2006, les meilleurs en maths auront calculé l&#8217;âge du capitaine !</p>
<p>En attendant de poster et archiver des choses passionnantes, j&#8217;en profite pour mettre cette astuce WordPress.</p>
<p>Comme je suis graphiste et que j&#8217;aime la typo, la version française de l&#8217;administration de WordPress m&#8217;irrite avec sa césure douteuse.<br />
L&#8217;affreux<br />
« Tableau de<br />
bord »</p>
<p>On peut le modifier dans les fichiers .po et .mo mais la moindre mise à jour du moteur annulera le changement.<br />
Pour le renommer avec un nom plus court ;¬) on peut ajouter dans le « dossier de votre thème/functions.php » (le créer si nécessaire) ces quelques lignes.</p>
<pre class="brush: php; title: ;">
&lt;?php
add_filter( 'gettext', 'dash' );
add_filter( 'ngettext', 'dash' );

function dash( $translated )
{
    $translated = str_ireplace( 'Tableau de bord', 'Home', $translated );
    return $translated;
}
?&gt;
</pre>
<p>D&#8217;autres modifications de l&#8217;administration de WordPress chez <a href="http://sixrevisions.com/wordpress/how-to-customize-the-wordpress-admin-area/">six revisions</a><br />
Une « classe » php pour aller plus loin, plus vite, plus fort, plus haut.<br />
<a href="https://gist.github.com/792b7aa5b695d1092520">wp-admin-menu-classes.php</a><br />
Mode d&#8217;emploi :<br />
Copier wp-admin-menu-classes.php dans votre thème, puis ajouter selon vos besoins les codes suivants dans functions.php.</p>
<pre class="brush: php; title: ;">
&lt;?php
require_once('wp-admin-menu-classes.php');
add_action('admin_menu','my_admin_menu');
function my_admin_menu() {
  swap_admin_menu_sections('Pages','Posts');              // Swap location of Posts Section with Pages Section
  rename_admin_menu_section('Media','Photos &amp; Video');    // Rename Media Section to &quot;Photos &amp; Video&quot;
  delete_admin_menu_section('Links');                     // Get rid of Links Section
  $movie_tags_item_array = get_admin_menu_item_array('Movies','Movie Tags');  // Save off the Movie Tags Menu
  update_admin_menu_section('Movies',array(               // Rename two Movie Menu Items and Delete the Movie Tags Item
    array('rename-item','item'=&gt;'Movies','new_title'=&gt;'List Movies'),
    array('rename-item','item'=&gt;'Add New','new_title'=&gt;'Add Movie'),
    array('delete-item','item'=&gt;'Movie Tags'),
  ));
  copy_admin_menu_item('Movies',array('Actors','Add New')); // Copy the 'Add New' over from Actors
  renamed_admin_menu_item('Movies','Add New','Add Actor');  // Rename copied Actor 'Add New' to 'Add Actor
  add_admin_menu_item('Movies',array(                       // (Another way to get a 'Add Actor' Link to a section.)
    'title' =&gt; 'Alt Add Actor ',
    'slug' =&gt; 'post-new.php?post_type=actor',
  ), array(// Add Back the Movie Tags at the end.
    'where'=&gt;'end'
  ));
  add_admin_menu_item('Movies', $movie_tags_item_array, array(// Add Back the Movie Tags at the end.
    'where'=&gt;'end'
  ));
  delete_admin_menu_section('Actors');                      // Finally just get rid of the actors section
}
?&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://jaiunblog.com/3553/5-ans/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>inter-face</title>
		<link>http://jaiunblog.com/3516/inter-face/</link>
		<comments>http://jaiunblog.com/3516/inter-face/#comments</comments>
		<pubDate>Fri, 15 Jul 2011 23:31:02 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[programmation]]></category>
		<category><![CDATA[capteur]]></category>
		<category><![CDATA[faciale]]></category>
		<category><![CDATA[midi]]></category>
		<category><![CDATA[mouvement]]></category>
		<category><![CDATA[musique]]></category>
		<category><![CDATA[reconnaissance]]></category>

		<guid isPermaLink="false">http://jaiunblog.com/?p=3516</guid>
		<description><![CDATA[FaceOSC from Kyle McDonald on Vimeo.]]></description>
			<content:encoded><![CDATA[<!-- Flash Video Resizer 1.4 : 425pixel --><p><iframe src="http://player.vimeo.com/video/26098366?title=0&amp;byline=0&amp;portrait=0" width="425" height="265" frameborder="0"></iframe>
<p><a href="http://vimeo.com/26098366">FaceOSC</a> from <a href="http://vimeo.com/kylemcdonald">Kyle McDonald</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://jaiunblog.com/3516/inter-face/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>paper.js</title>
		<link>http://jaiunblog.com/3477/paper-js/</link>
		<comments>http://jaiunblog.com/3477/paper-js/#comments</comments>
		<pubDate>Mon, 27 Jun 2011 15:09:32 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[graphisme]]></category>
		<category><![CDATA[programmation]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[scriptographer]]></category>

		<guid isPermaLink="false">http://jaiunblog.com/?p=3477</guid>
		<description><![CDATA[Voilà un projet à suivre de près ! Paper.js est un framework open source de dessin vectoriel pour canvas (html5) compatible Scriptographer. L&#8217;ensemble est développé par Jürg Lehni &#038; Jonathan Puckey. ps : Bravo pour cet exemple !]]></description>
			<content:encoded><![CDATA[<!-- Flash Video Resizer 1.4 : 425pixel --><p><img src="http://jaiunblog.com/blog/wp-content/uploads/2011/06/paper-425x208.png" alt="" title="paper" width="425" height="208" class="alignnone size-medium wp-image-3478" /></p>
<p>Voilà un projet à suivre de près ! <a href="http://paperjs.org/">Paper.js</a> est un framework open source de dessin vectoriel pour canvas (html5) compatible <a href="http://scriptographer.org/">Scriptographer</a>. L&#8217;ensemble est développé par <a href="http://lehni.org/">Jürg Lehni</a> &#038; <a href="http://twitter.com/#!/jonathanpuckey">Jonathan Puckey</a>.<br />
ps : Bravo pour <a href="http://paperjs.org/examples/nyan-rainbow/">cet exemple</a> !</p>
]]></content:encoded>
			<wfw:commentRss>http://jaiunblog.com/3477/paper-js/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>premiers pas en processing #6</title>
		<link>http://jaiunblog.com/3442/premiers-pas-en-processing-6/</link>
		<comments>http://jaiunblog.com/3442/premiers-pas-en-processing-6/#comments</comments>
		<pubDate>Thu, 26 May 2011 15:09:46 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[graphisme]]></category>
		<category><![CDATA[programmation]]></category>
		<category><![CDATA[tutorials]]></category>
		<category><![CDATA[processing]]></category>

		<guid isPermaLink="false">http://jaiunblog.com/?p=3442</guid>
		<description><![CDATA[Et si on sauvegardait en png nos images ? void setup(){ size(400,400); } void draw(){ background(random(255),random(15),0); noLoop(); save(&#34;image.png&#34;); } C&#8217;est honteux que ça soit si simple ! Pire, en étant sur la fenêtre de l&#8217;éditeur faites pomme + k (ça ouvre le dossier de la sauvegarde) ! void setup(){ size(400,400); } void draw(){ background(random(255),random(15),0); saveFrame(&#34;anim-####.png&#34;); [...]]]></description>
			<content:encoded><![CDATA[<!-- Flash Video Resizer 1.4 : 425pixel --><p><img src="http://jaiunblog.com/blog/wp-content/uploads/2011/05/p5.png" alt="" title="p5" width="425" height="170" class="alignnone size-full wp-image-3421" /><br />
Et si on sauvegardait en png nos images ?</p>
<pre class="brush: java; title: ;">
void setup(){
  size(400,400);
}

void draw(){
  background(random(255),random(15),0);
  noLoop();
  save(&quot;image.png&quot;);
}
</pre>
<p>C&#8217;est honteux que ça soit si simple ! Pire, en étant sur la fenêtre de l&#8217;éditeur faites pomme + k (ça ouvre le dossier de la sauvegarde) !</p>
<pre class="brush: java; title: ;">
void setup(){
  size(400,400);
}

void draw(){
  background(random(255),random(15),0);
  saveFrame(&quot;anim-####.png&quot;);
}
</pre>
<p>Encore plus honteux ? non ?</p>
<p>Un photomaton ?<br />
On n&#8217;a pas vu comment afficher une webcam mais voici la doc :<br />
<a href="http://processing.org/reference/libraries/video/Capture.html">http://processing.org/reference/libraries/video/Capture.html</a><br />
Remarque : cette fonction est dans la partie librairie de la documentation (il s&#8217;agit d&#8217;extension), d&#8217;ailleurs dans l&#8217;exemple la première ligne s&#8217;occupe de charger cette librairie.</p>
<pre class="brush: java; title: ;">
import processing.video.*;
Capture myCapture;

void setup()
{
  size(200, 200);

  // The name of the capture device is dependent those
  // plugged into the computer. To get a list of the
  // choices, uncomment the following line
  // println(Capture.list());
  // And to specify the camera, replace &quot;Camera Name&quot;
  // in the next line with one from Capture.list()
  // myCapture = new Capture(this, width, height, &quot;Camera Name&quot;, 30);

  // This code will try to use the last device used
  // by a QuickTime program
  myCapture = new Capture(this, width, height, 30);
}

void captureEvent(Capture myCapture) {
  myCapture.read();
}

void draw() {
  image(myCapture, 0, 0);
}
</pre>
<p><strong>Je fais ma sauce :</strong></p>
<pre class="brush: java; title: ;">
import processing.video.*;
Capture myCapture;

void setup()
{
  size(400, 300);
  myCapture = new Capture(this, width, height, 30);
}

void captureEvent(Capture myCapture) {
  myCapture.read();
}

void draw() {
  image(myCapture, 0, 0);
}

void mouseClicked(){
  save(&quot;capture.png&quot;);
}
</pre>
<p>C&#8217;est quoi les void setup, draw, captureEvent, mousePressed ?<br />
Le setup et le draw, on connait.<br />
Le captureEvent c&#8217;est pour lire la webcam, le programme « écoute » les informations envoyées par celle-ci.<br />
et enfin le <a href="http://processing.org/reference/mouseClicked_.html">mouseClicked</a> lui écoute l&#8217;état du clic.</p>
]]></content:encoded>
			<wfw:commentRss>http://jaiunblog.com/3442/premiers-pas-en-processing-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>premiers pas en processing #5</title>
		<link>http://jaiunblog.com/3428/premiers-pas-en-processing-5/</link>
		<comments>http://jaiunblog.com/3428/premiers-pas-en-processing-5/#comments</comments>
		<pubDate>Thu, 26 May 2011 11:46:59 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[graphisme]]></category>
		<category><![CDATA[programmation]]></category>
		<category><![CDATA[tutorials]]></category>
		<category><![CDATA[processing]]></category>

		<guid isPermaLink="false">http://jaiunblog.com/?p=3428</guid>
		<description><![CDATA[à l&#8217;aventure ! - Avoir une idée (c&#8217;est bien) Je voudrais simuler une grille magnétique de 10 pixels (magnétisme de la grille ou snap to grid dans Illustrator). - Comprendre Quand je clique sur un point avec pour coordonnées (6,17), sur une grille de 10 px ça donne (10,20). - Traduire Deux stratégies : 1/ [...]]]></description>
			<content:encoded><![CDATA[<!-- Flash Video Resizer 1.4 : 425pixel --><p><img src="http://jaiunblog.com/blog/wp-content/uploads/2011/05/p51.png" alt="" title="p5" width="425" height="431" class="alignnone size-full wp-image-3437" /><br />
<strong>à l&#8217;aventure !</strong><br />
- Avoir une idée (c&#8217;est bien)<br />
Je voudrais simuler une grille magnétique de 10 pixels (magnétisme de la grille ou snap to grid dans Illustrator).<br />
- Comprendre<br />
Quand je clique sur un point avec pour coordonnées (6,17), sur une grille de 10 px ça donne (10,20).<br />
- Traduire<br />
Deux stratégies :<br />
1/ utiliser ses connaissances  </p>
<pre class="brush: java; title: ;">
int monX;

void draw(){
 if(mouseX&lt;10){
    monX=0;
}
if(mouseX&lt;20){
    monX=10;
}
if(mouseX&lt;30){
    monX=20;
}

println(monX);

}
</pre>
<p>Ça marche ! oui ça marche, mais ça renvoie toujours 20, un truc cloche…<br />
Je vais encadrer entre deux valeurs ;<br />
si le mouseX est supérieur ou égal à 0 ET plus petit que 10 alors monX = 0… </p>
<pre class="brush: java; title: ;">
int monX;

void draw(){
 if(mouseX&gt;=0 &amp;&amp; mouseX&lt;10){
    monX=0;
}
if(mouseX&gt;=10 &amp;&amp; mouseX&lt;20){
    monX=10;
}
if(mouseX&gt;=20 &amp;&amp; mouseX&lt;30){
    monX=20;
}
if(mouseX&gt;=30 &amp;&amp; mouseX&lt;40){
    monX=30;
}
if(mouseX&gt;=40 &amp;&amp; mouseX&lt;50){
    monX=40;
}
println(monX);

}
</pre>
<p>Voilà, un bon début mais c&#8217;est fastidieux (ou fast idiot), une pratique courante chez les débutants.</p>
<p>2/ approfondir ses connaissances<br />
Via la documentation : <a href="http://processing.org/reference/">http://processing.org/reference/</a> (pas simple)… ou via des exemples à disséquer.<br />
Remettre le problème à plat en pensant à ses cours de mathématiques.<br />
Ici, l&#8217;astuce est dans la fonction round() pour arrondir.</p>
<pre class="brush: java; title: ;">println(round(1.6));</pre>
<p>Ceci affiche 2.<br />
Dans mon idée, nous aurions 16 et nous voudrions 20.<br />
Alors 16 &#8211; je divise par 10 -> 1.6 &#8211; je round( ) -> 2 &#8211; je multiplie par 10 -> 20 ! bingo !<br />
En code, ça donne ceci :</p>
<pre class="brush: java; title: ;">round(mouseX/10)*10;</pre>
<p><strong><br />
Première utilisation :<br />
</strong></p>
<pre class="brush: java; title: ;">
int a,b,c,d;

void draw() {
  a=round(pmouseX/10)*10;
  b=round(pmouseY/10)*10;
  c=round(mouseX/10)*10;
  d=round(mouseY/10)*10;
  line(a, b, c, d);
}
</pre>
<p><strong>Variante :</strong></p>
<pre class="brush: java; title: ;">
int a, b, grille;

void setup() {
  size(360, 360);
  noStroke();
  grille=40;
  background(255);
}
void draw() {
  if (mousePressed) {
    a=round(mouseX/grille)*grille;
    b=round(mouseY/grille)*grille;
    fill(random(200)+55, 0, random(200)+55);
    rect(a+5, b+5, grille-10, grille-10);
  }
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://jaiunblog.com/3428/premiers-pas-en-processing-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>premiers pas en processing #4</title>
		<link>http://jaiunblog.com/3427/premiers-pas-en-processing-4/</link>
		<comments>http://jaiunblog.com/3427/premiers-pas-en-processing-4/#comments</comments>
		<pubDate>Wed, 25 May 2011 19:47:23 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[graphisme]]></category>
		<category><![CDATA[programmation]]></category>
		<category><![CDATA[tutorials]]></category>
		<category><![CDATA[processing]]></category>

		<guid isPermaLink="false">http://jaiunblog.com/?p=3427</guid>
		<description><![CDATA[Aujourd&#8217;hui, on ajoute le « if » (une condition), ce qui permet d&#8217;améliorer avec deux lignes les scripts précédents et on aborde la notion de variable. Nos outils de dessin sont « amusants » mais, premier problème, la souris dessine en permanence, on ne peut pas lever le crayon… Gribouillis : void setup(){ size(400,400); } [...]]]></description>
			<content:encoded><![CDATA[<!-- Flash Video Resizer 1.4 : 425pixel --><p><img src="http://jaiunblog.com/blog/wp-content/uploads/2011/05/p5.png" alt="" title="p5" width="425" height="170" class="alignnone size-full wp-image-3421" /></p>
<p>Aujourd&#8217;hui, on ajoute le « if » (une condition), ce qui permet d&#8217;améliorer avec deux lignes les scripts précédents et on aborde la notion de variable.<br />
Nos outils de dessin sont  « amusants » mais, premier problème, la souris dessine en permanence, on ne peut pas lever le crayon…</p>
<p><strong>Gribouillis : </strong></p>
<pre class="brush: java; title: ;">
void setup(){
 size(400,400);
}

void draw(){
    line(pmouseX,pmouseY,mouseX,mouseY);
}
</pre>
<p><strong>Gribouillis amélioré : </strong></p>
<pre class="brush: java; title: ;">
void setup(){
 size(400,400);
}

void draw(){
  if(mousePressed){
    line(pmouseX,pmouseY,mouseX,mouseY);
  }
}
</pre>
<p>Explication : on a toujours notre draw en boucle mais si (if) la souris est cliqué (mousePressed) il dessine sinon il n&#8217;a pas de consigne donc il ne fait rien.<br />
<strong>variante :</strong></p>
<pre class="brush: java; title: ;">
void setup(){
 size(400,400);
 smooth();
}

void draw(){
  if(mousePressed){
    stroke(random(0,155));
    line(pmouseX+random(-10,10),
    pmouseY+random(-10,10),
    mouseX,
    mouseY);
  }
}
</pre>
<p>La fonction random(a,b) donne un chiffre (à virgule) entre a et b.</p>
<p><strong>Les variables :</strong><br />
On reviendra sur les variables mais voici une première approche :</p>
<pre class="brush: java; title: ;">
void setup(){
 size(400,400);
 background(255);
}

void draw(){
  if(mousePressed){
    a=pmouseX;
    b=pmouseY;
    c=mouseX;
    d=mouseY;
    line(a,b,c,d);
  }
}
</pre>
<p>Ceci marche dans pas mal de langage (javascript, actionscript, php…) mais ici on a une erreur :<br />
« Cannot find anything named &laquo;&nbsp;a&nbsp;&raquo; »<br />
<strong>correction :</strong></p>
<pre class="brush: java; title: ;">
void setup(){
 size(400,400);
 background(255);
}

void draw(){
  if(mousePressed){
    int a=pmouseX;
    int b=pmouseY;
    int c=mouseX;
    int d=mouseY;
    line(a,b,c,d);
  }
}
</pre>
<p><strong>presque pareil :</strong></p>
<pre class="brush: java; title: ;">
int a,b,c,d;

void setup(){
 size(400,400);
 background(255);
}

void draw(){
  if(mousePressed){
    a=pmouseX;
    b=pmouseY;
    c=mouseX;
    d=mouseY;
    line(a,b,c,d);
  }
}
</pre>
<p>C&#8217;est quoi « int a » ?<br />
int comme integer,<br />
a est le nom de la variable (a n&#8217;est pas un nom pratique pour savoir ce qu&#8217;elle contient, mais ici c&#8217;est pour faire un raccourci temporaire)<br />
« int a » sera une variable qui stocke un chiffre entier.<br />
C&#8217;est quoi int a,b,c,d; ?<br />
c&#8217;est la version courte de<br />
int a;<br />
int b;<br />
int c;<br />
int d;</p>
<p>Les deux derniers exemples affichent la même chose,  l&#8217;un déclare les variables au début, l&#8217;autre dans le draw.<br />
<strong>comparatif : </strong></p>
<pre class="brush: java; title: ;">
int age,taille; //je déclare age et taille

void setup(){
 age=25;
 int taille=180; // je déclare la taille
 println(&quot;il mesure &quot;+taille+&quot; cm&quot;); // ça marche
}

void draw(){
  println(&quot;et il a &quot;+age+&quot; ans.&quot;); //ça marche
  println(&quot;il mesure &quot;+taille+&quot; cm&quot;); // taille = 0

  noLoop();
}
</pre>
<p><strong>à tester :</strong></p>
<pre class="brush: java; title: ;">
int age; //je déclare age

void setup(){
 age=25;
 int taille=180; // je déclare la taille
 println(&quot;il mesure &quot;+taille+&quot; cm&quot;); // ça marche
}

void draw(){
  println(&quot;et il a &quot;+age+&quot; ans.&quot;); //ça marche
  println(&quot;il mesure &quot;+taille+&quot; cm&quot;); // ça plante

  noLoop();
}
</pre>
<p>Il est parfois nécessaire de faire des  tests, println() permet d&#8217;afficher du texte et des variables dans la console de Processing (cadre du bas).<br />
<strong>à retenir :</strong> si les variables sont déclarées dans des fonctions (draw, setup, autres), elles sont lisibles que dans leurs fonctions (on parle de visibilité des variables) ;<br />
si elles sont déclarées hors fonction (à la racine ou au début par convention), elles sont lisibles dans toutes les fonctions (draw, setup…).</p>
<p><strong>une autre possibilité :</strong></p>
<pre class="brush: java; title: ;">
int age=25;

void setup(){
  println(&quot;il a &quot;+age+&quot; ans.&quot;);
}

void draw(){
  println(&quot;il a &quot;+age+&quot; ans.&quot;);
  noLoop();
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://jaiunblog.com/3427/premiers-pas-en-processing-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>premiers pas en processing #3</title>
		<link>http://jaiunblog.com/3412/premiers-pas-en-processing-3/</link>
		<comments>http://jaiunblog.com/3412/premiers-pas-en-processing-3/#comments</comments>
		<pubDate>Tue, 24 May 2011 17:18:13 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[graphisme]]></category>
		<category><![CDATA[programmation]]></category>
		<category><![CDATA[tutorials]]></category>
		<category><![CDATA[processing]]></category>

		<guid isPermaLink="false">http://jaiunblog.com/?p=3412</guid>
		<description><![CDATA[Suite des notions de Processing, avec aujourd&#8217;hui des exemples assez simples. mouseX et mouseY : mouseX et mouseY donnent la position de la souris dans la fenêtre de l&#8217;application. void setup(){ size(800,600); //taille background(255); //fond } void draw(){ // draw = en boucle // par défaut à 60 FPS smooth(); //lissage noStroke(); //pas de contour [...]]]></description>
			<content:encoded><![CDATA[<!-- Flash Video Resizer 1.4 : 425pixel --><p><img src="http://jaiunblog.com/blog/wp-content/uploads/2011/05/p5.png" alt="" title="p5" width="425" height="170" class="alignnone size-full wp-image-3421" /><br />
Suite des notions de Processing, avec aujourd&#8217;hui des exemples assez simples.<br />
<strong>mouseX et mouseY :</strong><br />
mouseX et mouseY donnent la position de la souris dans la fenêtre de l&#8217;application.</p>
<pre class="brush: java; title: ;">
void setup(){
  size(800,600); //taille
  background(255); //fond
}

void draw(){

//  draw = en boucle
//  par défaut à 60 FPS

  smooth(); //lissage
  noStroke(); //pas de contour
  fill(random(255),random(5),random(255));
  //une couleur aléatoire avec peu de vert
  ellipse(mouseX,mouseY,200,200);
  // un cercle de 200 px positionné à l'endroit de la souris

//  on remonte à la ligne 6

}
</pre>
<p><strong>Autre exemple :</strong><br />
On peut aussi ajouter de la transparence sur les couleurs en ajoutant une 4e valeur entre 0 (transparent) et 255 (opaque).</p>
<pre class="brush: java; title: ;">
void setup()
{
  size(400,400);
  smooth();
  background(255);
}

void draw()
{
  stroke(random(255),0,random(25)+25,100);
  strokeWeight(50);
  line(200,200,mouseX,mouseY);
}
</pre>
<p><img src="http://jaiunblog.com/blog/wp-content/uploads/2011/05/processing_10.png" alt="" title="processing_10" width="425" height="448" class="alignnone size-full wp-image-3415" /></p>
<p><strong>pmouseX et pmouseY :</strong><br />
Processing offre deux variables systèmes assez pratiques, pmouseX et pmouseY, celle-ci renvoient l&#8217;ancienne position de la souris à « l&#8217;image » précédente. Les exemples suivants devraient vous aider à comprendre.</p>
<pre class="brush: java; title: ;">
void setup()
{
  size(400,400);
  smooth();
  background(255);
  frameRate(3); //3 images par seconde
}

void draw()
{
  //ancienne position
  strokeWeight(5);
  stroke(255,0,0);  //rouge
  point(pmouseX,pmouseY);

  //nouvelle position
  strokeWeight(10);
  stroke(0,0,0); //noir
  point(mouseX,mouseY);
}
</pre>
<p>Une variante :</p>
<pre class="brush: java; title: ;">
void setup()
{
  size(400,400);
  background(255);
  frameRate(3); //3 images par seconde
}

void draw()
{
  //ajout d'une ligne
  noSmooth();
  strokeWeight(1);
  stroke(200); //gris
  line(pmouseX,pmouseY,mouseX,mouseY);

  smooth();

  //ancienne position
  strokeWeight(5);
  stroke(255);  // blanc
  point(pmouseX,pmouseY);

  //nouvelle position
  strokeWeight(10);
  stroke(0); //noir
  point(mouseX,mouseY);

}
</pre>
<p><img src="http://jaiunblog.com/blog/wp-content/uploads/2011/05/processing_10.jpg" alt="" title="processing_10" width="425" height="468" class="alignnone size-full wp-image-3417" /></p>
<p>Petite remarque, j&#8217;ai ajouté noSmooth() pour les lignes, ça enlève le lissage sur les lignes (question de goût ?).</p>
<p>Voilà pour aujourd&#8217;hui, demain on affinera ces exemples.</p>
]]></content:encoded>
			<wfw:commentRss>http://jaiunblog.com/3412/premiers-pas-en-processing-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>premiers pas en processing #2</title>
		<link>http://jaiunblog.com/3399/premiers-pas-en-processing-2/</link>
		<comments>http://jaiunblog.com/3399/premiers-pas-en-processing-2/#comments</comments>
		<pubDate>Mon, 23 May 2011 12:24:08 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[graphisme]]></category>
		<category><![CDATA[programmation]]></category>
		<category><![CDATA[tutorials]]></category>
		<category><![CDATA[processing]]></category>

		<guid isPermaLink="false">http://jaiunblog.com/?p=3399</guid>
		<description><![CDATA[Suite de la découverte de Processing, avec aujourd&#8217;hui un peu plus de commandes et de syntaxes (le vocabulaire du langage). Après avoir vu, la taille, le frameRate, le setup, le draw et le random, voici comment dessiner un rectangle, une ellipse, un point et une ligne. Un rectangle : size(800,600); rect(10,10,200,400); // position x,y du [...]]]></description>
			<content:encoded><![CDATA[<!-- Flash Video Resizer 1.4 : 425pixel --><p><img src="http://jaiunblog.com/blog/wp-content/uploads/2011/05/p5.png" alt="" title="p5" width="425" height="170" class="alignnone size-full wp-image-3421" /><br />
Suite de la découverte de Processing, avec aujourd&#8217;hui un peu plus de commandes et de syntaxes (le vocabulaire du langage).</p>
<p>Après avoir vu, la taille, le frameRate, le setup, le draw et le random, voici comment dessiner un rectangle, une ellipse, un point et une ligne.</p>
<p><strong>Un rectangle :</strong></p>
<pre class="brush: java; title: ;">
  size(800,600);
  rect(10,10,200,400); // position x,y du coin en haut à gauche - largueur, hauteur
</pre>
<p>Première remarque, pas besoin de setup et de draw, ça marche directement !<br />
Grosse parenthèse : On pourrait mettre ces deux lignes dans le setup, le résultat serait visuellement le même ; par contre je viens de tester dans le draw() la fonction size() ne marche pas (c&#8217;est logique).<br />
La bonne pratique est de mettre se qui définit l’environnement dans le <a href="http://processing.org/reference/setup_.html">setup()</a>, la taille, la couleur de fond, les chargements d&#8217;images…<br />
<strong>À tester : </strong></p>
<pre class="brush: java; title: ;">
  rect(10,10,200,400);
  rect(10,10,400,200);
  rect(400,300,200,200);
</pre>
<p><strong>Une ellipse :</strong></p>
<pre class="brush: java; title: ;">
  size(800,600);
  ellipse(10,10,200,400); // (x, y, largueur, hauteur)
</pre>
<p>Remarque : on verra plus tard comment avoir le même mode de positionnement pour le rect et l&#8217;ellipse.<br />
<strong>À tester : </strong></p>
<pre class="brush: java; title: ;">
  ellipse(10,10,200,400);
  ellipse(10,10,400,200);
  ellipse(400,300,200,200);
</pre>
<p><strong>Le point :</strong></p>
<pre class="brush: java; title: ;">
  size(800,600);
  point(10,10);
</pre>
<p>Il faut avoir l&#8217;œil car cette exemple affiche un pixel noir sur fond gris.</p>
<pre class="brush: java; title: ;">
   size(800,600);
   strokeWeight(20);
   point(10,10);
</pre>
<p>Là, c&#8217;est mieux ? La commande <a href="http://processing.org/reference/strokeWeight_.html">strokeWeight(20)</a> donne un contour de 20 pixel de diamètre mais c&#8217;est un peu cracra du pixel, il manque le lissage. </p>
<pre class="brush: java; title: ;">
   size(800,600);
   smooth();
   strokeWeight(20);
   point(10,10);
</pre>
<p>Remarque : <a href="http://processing.org/reference/smooth_.html">smooth()</a> peut aussi servir sur les ellipses et autres formes.</p>
<p><strong>La ligne :</strong></p>
<pre class="brush: java; title: ;">
   size(800,600);
   line(10,10,790,590); //origine x, origine y, arrivée x, arrivée y
</pre>
<hr />
<br />
<strong>Ça manque de couleurs ?</strong></p>
<pre class="brush: java; title: ;">
  size(800,600);
  background(255); // fond blanc
  fill(255,100,0); //remplissage orange
  stroke(0,0,255); //contour bleu
  rect(10,10,200,400); // position x,y du coin en haut à gauche - largueur, hauteur
</pre>
<p><strong><br />
let&#8217;s go fun :</strong></p>
<pre class="brush: java; title: ;">
void setup(){
  size(424,424);
  background(255);
  smooth();
  stroke(255,0,0);
  strokeWeight(20);
  ellipse(212,212,500,500);
  stroke(0,0,255);
  ellipse(212,212,400,400);
  stroke(255,0,0);
  ellipse(212,212,300,300);
  stroke(0,0,255);
  ellipse(212,212,200,200);
  stroke(255,0,0);
  ellipse(212,212,100,100);
}
</pre>
<p><img src="http://jaiunblog.com/blog/wp-content/uploads/2011/05/processing1.png" alt="" title="processing" width="425" height="448" class="alignnone size-full wp-image-3406" /></p>
<p>Remarque : je dessine les cercles du plus grand au plus petit car par défaut ils sont remplis de la couleur blanche, il existe <a href="http://processing.org/reference/noFill_.html">noFill()</a> et <a href="http://processing.org/reference/noStroke_.html">noStroke()</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://jaiunblog.com/3399/premiers-pas-en-processing-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>premiers pas en processing #1</title>
		<link>http://jaiunblog.com/3384/premiers-pas-en-processing/</link>
		<comments>http://jaiunblog.com/3384/premiers-pas-en-processing/#comments</comments>
		<pubDate>Sat, 21 May 2011 12:48:21 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[graphisme]]></category>
		<category><![CDATA[programmation]]></category>
		<category><![CDATA[tutorials]]></category>
		<category><![CDATA[processing]]></category>

		<guid isPermaLink="false">http://jaiunblog.com/?p=3384</guid>
		<description><![CDATA[Voici quelques lignes de code pour vous aider à faire vos premiers pas en Processing. Je vous conseille de wikipedier/googler processing.org ; être étudiant en graphisme et ne pas connaître l&#8217;existence et les possibilités de cet outil serait dommage ! Deux ouvrages en français sont sortis cette année et disponibles dans les bonnes librairies (j&#8217;ai [...]]]></description>
			<content:encoded><![CDATA[<!-- Flash Video Resizer 1.4 : 425pixel --><p><img src="http://jaiunblog.com/blog/wp-content/uploads/2011/05/p5.png" alt="" title="p5" width="425" height="170" class="alignnone size-full wp-image-3421" /><br />
Voici quelques lignes de code pour vous aider à faire vos premiers pas en Processing.<br />
Je vous conseille de wikipedier/googler processing.org ; être étudiant en graphisme et ne pas connaître l&#8217;existence et les <a href="http://fr.flossmanuals.net/Processing/Exemplesdutilisations">possibilités</a> de cet outil serait dommage !<br />
Deux ouvrages en français sont sortis cette année et disponibles dans les bonnes librairies (j&#8217;ai déjà parlé du <a href="http://jaiunblog.com/3198/processing-livre-en-francais/">premier ou dernier</a>).<br />
Un manuel en français est disponible gratuitement : <a href="http://fr.flossmanuals.net/Processing/Introduction">http://fr.flossmanuals.net/Processing/Introduction</a>.<br />
De très bons cours sont en ligne :<br />
Là : <a href="http://www.ecole-art-aix.fr/rubrique81.html">http://www.ecole-art-aix.fr/rubrique81.html</a><br />
et chez le dernier : <a href="http://www.hyperbate.com/dernier/?page_id=2482">http://www.hyperbate.com/dernier/?page_id=2482</a><br />
Les anglophiles trouveront leur bonheur sur le site <a href="http://processing.org/learning/">officiel</a> !<br />
Et enfin, ceux qui veulent un support vidéo (eng) : <a href="http://www.youtube.com/watch?v=rJrh0RipoVo">http://www.youtube.com/watch?v=rJrh0RipoVo</a><br />
il y a une dizaine de vidéos :)</p>
<hr />
Voici une humble contribution en support de mes cours.</p>
<p><strong>INTRODUCTION</strong></p>
<p>En général, on commence par apprendre ses 3 lignes et leur structure.<br />
Comme dans de nombreux langages, // permet de commenter la ligne.<br />
<strong>Exemple 1 :</strong></p>
<pre class="brush: java; title: ;">
void setup(){
  size(800,600); // pour avoir une fenêtre de 800 par 600 pixels.
}
</pre>
<p>Sur Mac l&#8217;accolade :<br />
alt + ( = {<br />
alt + ) = }</p>
<p>Pour voir le résultat, on compile avec le bouton lecture en haut à gauche.<br />
Première remarque, il ne se passe rien, seconde remarque, c&#8217;est gris.<br />
<strong>Exemple 2 :</strong></p>
<pre class="brush: java; title: ;">
void setup(){
  size(800,600); // pour avoir une fenêtre de 800 par 600 pixels.
  background(0); // fond noir
}
</pre>
<p>C&#8217;est de la folie tout ça ?<br />
La commande background permet de changer la couleur du fond.<br />
À tester :</p>
<pre class="brush: java; title: ;">
  background(255);
  background(0);
  background(255/2);
  background(255,0,0);
  background(0,255,0);
  background(100,255,50);
  background(100,100,100);
  background(#ff6600);
  background(red); // ne marche pas
  background(#f60); // ne marche pas
</pre>
<p>Plutôt simple ?<br />
Non ?<br />
Astuce : Dans le menu File Edit (…) Tools -> Color Selector</p>
<p><strong>On continue avec le setup et le draw.</strong><br />
<strong>Exemple 3 :</strong></p>
<pre class="brush: java; title: ;">
void setup(){
  size(800,600);
}

void draw(){

}
</pre>
<p>Exemple inutile servant juste à montrer la  syntaxe du draw. Le draw est le rafraichissement d&#8217;écran en boucle, comme si vous clignez des yeux. Le setup s&#8217;exécute juste une fois en lancement du programme.<br />
<strong>Exemple 4 :</strong></p>
<pre class="brush: java; title: ;">
void setup(){
  size(800,600);
  frameRate(2); //la cadence en images par seconde ou FPS pour frames per second
}

void draw(){
  background(random(255)); //un gris aléatoire
}
</pre>
<p>J&#8217;ai ralenti la cadence pour nos amis les épileptiques et pour faire le test j&#8217;ai utilisé random(unChiffre) qui donne un chiffre (à virgule) entre 0 et 255.<br />
À tester :</p>
<pre class="brush: java; title: ;">
void setup(){
  size(800,600);
  frameRate(2); //la cadence en images par seconde ou FPS pour frames per second
}

void draw(){
  background(random(255)); //un gris aléatoire
  background(0); // noir
}
</pre>
<p>puis</p>
<pre class="brush: java; title: ;">
void setup(){
  size(800,600);
  frameRate(2); //la cadence en images par seconde ou FPS pour frames per second
}

void draw(){
  background(0); // noir
  background(random(255)); //un gris aléatoire
}
</pre>
<p> Voilà, ça fait 5 <del datetime="2011-05-21T11:44:40+00:00">fruits et légumes</del> notions de processing pour aujourd&#8217;hui.</p>
]]></content:encoded>
			<wfw:commentRss>http://jaiunblog.com/3384/premiers-pas-en-processing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>deux-points</title>
		<link>http://jaiunblog.com/3341/deux-points/</link>
		<comments>http://jaiunblog.com/3341/deux-points/#comments</comments>
		<pubDate>Tue, 19 Apr 2011 12:53:13 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[programmation]]></category>
		<category><![CDATA[meta]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://jaiunblog.com/?p=3341</guid>
		<description><![CDATA[Petite correction typographique française pour les amateurs de WordPress. Ici il s&#8217;agit juste de la fonction qui affiche les customs fields (champs personnalisés) avec « nom: valeur », la fonction ajoute une espace insécable devant les deux-points. À ajouter dans functions.php dans le thème (créer le fichier functions.php ci-besoin) : add_filter(&#34;the_meta_key&#34;,&#34;deuxpoints&#34;); function deuxpoints($t){ //$t=str_replace(&#34;:&#34;,&#34;&#38;nbsp;:&#34;,$t); ancienne [...]]]></description>
			<content:encoded><![CDATA[<!-- Flash Video Resizer 1.4 : 425pixel --><p>Petite correction typographique française pour les amateurs de WordPress. Ici il s&#8217;agit juste de la fonction <?php the_meta(); ?> qui affiche les customs fields (champs personnalisés) avec « nom: valeur », la fonction ajoute une espace insécable devant les deux-points.<br />
À ajouter dans functions.php dans le thème (créer le fichier functions.php ci-besoin) :</p>
<pre class="brush: php; title: ;">
add_filter(&quot;the_meta_key&quot;,&quot;deuxpoints&quot;);
function deuxpoints($t){
	//$t=str_replace(&quot;:&quot;,&quot;&amp;nbsp;:&quot;,$t); ancienne version
	$t=preg_replace(&quot;/(\S):/&quot;,&quot;$1&amp;nbsp;:&quot;,$t); //Regex mon amour
	return $t;
}
</pre>
<p>Voilà pour la forme :)</p>
]]></content:encoded>
			<wfw:commentRss>http://jaiunblog.com/3341/deux-points/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>impromptu</title>
		<link>http://jaiunblog.com/3330/impromptu/</link>
		<comments>http://jaiunblog.com/3330/impromptu/#comments</comments>
		<pubDate>Tue, 12 Apr 2011 14:16:41 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[graphisme]]></category>
		<category><![CDATA[programmation]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[piano]]></category>

		<guid isPermaLink="false">http://jaiunblog.com/?p=3330</guid>
		<description><![CDATA[Dancing Phalanges from Andrew Sorensen on Vimeo. Très étrange, jouer du piano avec un clavier du code ! Je vous invite à lire l&#8217;article (fr) chez l&#8217;excellentissime Cuarto derecha. Où voir le programme ici : http://impromptu.moso.com.au/]]></description>
			<content:encoded><![CDATA[<!-- Flash Video Resizer 1.4 : 425pixel --><p><iframe src="http://player.vimeo.com/video/8732631" width="425" height="318" frameborder="0"></iframe>
<p><a href="http://vimeo.com/8732631">Dancing Phalanges</a> from <a href="http://vimeo.com/impromptu">Andrew Sorensen</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p>Très étrange, jouer du piano avec <del datetime="2011-04-12T14:10:45+00:00">un clavier</del> du code !<br />
Je vous invite à lire l&#8217;article (fr) chez l&#8217;excellentissime <a href="http://www.cuartoderecha.com/4870/">Cuarto derecha</a>.</p>
<p>Où voir le programme ici : <a href="http://impromptu.moso.com.au/">http://impromptu.moso.com.au/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jaiunblog.com/3330/impromptu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Processing (livre en français)</title>
		<link>http://jaiunblog.com/3198/processing-livre-en-francais/</link>
		<comments>http://jaiunblog.com/3198/processing-livre-en-francais/#comments</comments>
		<pubDate>Tue, 22 Feb 2011 15:26:42 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[graphisme]]></category>
		<category><![CDATA[programmation]]></category>
		<category><![CDATA[livre]]></category>
		<category><![CDATA[processing]]></category>

		<guid isPermaLink="false">http://jaiunblog.com/?p=3198</guid>
		<description><![CDATA[Tu es créatif ? Tu as un ordinateur (linux, mac os x, ou windows) ? Tu aimes les logiciels Adobe autant que tu les détestes, parfois même tu pestes contre eux… Pousser par une logique étrange, depuis 10 ans, Adobe s&#8217;enfonce dans son monopole. Pour exemple, je ne comprends pas pourquoi l&#8217;outil pour faire des [...]]]></description>
			<content:encoded><![CDATA[<!-- Flash Video Resizer 1.4 : 425pixel --><p><img class="alignnone size-full wp-image-3199" style="border:1px solid #eee;" title="livre processing " src="http://jaiunblog.com/blog/wp-content/uploads/2011/02/27440100060660L.gif" alt="" width="321" height="475" /></p>
<p>Tu es créatif ? Tu as un ordinateur (linux, mac os x, ou windows) ? Tu aimes les logiciels Adobe autant que tu les détestes, parfois même <a href="http://dearadobe.com/">tu pestes contre eux</a>…<br />
Pousser par une logique étrange, depuis 10 ans, Adobe s&#8217;enfonce dans son monopole. Pour exemple, je ne comprends pas pourquoi l&#8217;outil pour faire des <a href="http://fr.wikipedia.org/wiki/Spirale">spirales</a> sous Illustrator est si incomplet (sur wikipédia on voit 8 sortes de spirale !) et pourquoi un outil à <a href="http://www.adobe.com/designcenter/illustrator/articles/illcs2at_flaretool_02.html"><em>lens flare</em></a> existe — pour un logiciel de dessin vectoriel, ce genre de priorité m&#8217;exaspère !<br />
Même Photoshop est complètement pervers, on peut ouvrir des gif animés en forçant l&#8217;ouverture (Fichier &gt; Importation  &gt; Images vidéo dans des calques, puis taper le nom du gif ou *.* sur CS4) mais via « ouvrir » c&#8217;est bridé (et qu&#8217;on accuse pas les chinois !).</p>
<p>Je reviens à mes moutons…<br />
Ami du pixel et de la courbe de Bézier, ton outil ne suit plus ta créativité, tes idées ne sont plus réalisables dans des temps normaux et tu veux t&#8217;ouvrir à d&#8217;autres horizons !</p>
<p>La programmation va devenir ton ami. Depuis 10 ans, les choses ont évolué ! Processing change la donne, simplifie l&#8217;écriture et devient l&#8217;outil idéal (avec toujours la possibilité de combiner le rendu avec des logiciels d&#8217;images), le potentiel est infini ! Attention, Processing n&#8217;est pas un Photshop / Illustrator killer mais pose une vraie question sur l&#8217;usage de l&#8217;ordinateur dans la création.</p>
<p>Depuis quelques jours, est sorti un livre simple et en français, celui-ci cible par son approche les étudiants en école d&#8217;art (et les curieux).<br />
Les débutants  devraient comprendre facilement les nombreux exemples pédagogiques ainsi que les notions  de programmations abordées, le vocabulaire et la grammaire de processing.<br />
Ceux qui ont des connaissances en code (as, javascript, php…) auront sous la main de quoi basculer rapidement.</p>
<p>Chez Pearson <a href="http://www.pearson.fr/livre/?GCOI=27440100060660">Processing, Le code informatique comme outil de création</a> ou ailleurs.</p>
]]></content:encoded>
			<wfw:commentRss>http://jaiunblog.com/3198/processing-livre-en-francais/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>mon premier bookmarklet</title>
		<link>http://jaiunblog.com/2995/mon-premier-bookmarklet/</link>
		<comments>http://jaiunblog.com/2995/mon-premier-bookmarklet/#comments</comments>
		<pubDate>Thu, 09 Sep 2010 20:50:44 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[programmation]]></category>
		<category><![CDATA[tutorials]]></category>
		<category><![CDATA[bookmarklet]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[typographie]]></category>

		<guid isPermaLink="false">http://jaiunblog.com/?p=2995</guid>
		<description><![CDATA[Amis du code et de la typographie (du code de typographie aussi), voici une modeste contribution. Souvent je compte à la main le nom de signe par ligne dans un paragraphe de texte, la règle voudrait entre 52 et 78 signes par ligne pour une optimisation de la lecture sur le papier ; à l&#8217;écran [...]]]></description>
			<content:encoded><![CDATA[<!-- Flash Video Resizer 1.4 : 425pixel --><p>Amis du code et de la typographie (du code de typographie aussi), voici une modeste contribution.<br />
Souvent je compte à la main le nom de signe par ligne dans un paragraphe de texte, la règle voudrait entre 52 et 78 signes par ligne pour une optimisation de la lecture sur le papier ; à l&#8217;écran on pourrait ajuster les lignes un peu plus longues mais vu la qualité du texte dans les navigateurs, on peut appliquer des valeurs identiques.</p>
<blockquote><p>The optimum line length in legibility terms is 2–3 alphabets, or 52–78 characters with spaces. (<a href="http://csswizardry.com/type-tips/#tip-09">via</a>)</p></blockquote>
<p>En javscript pour compter la sélection, ça donne ceci (tester sur firefox et webkit) :</p>
<pre class="brush: jscript; title: ;">
function getSelectedText(){
if (window.getSelection){
var str = window.getSelection();
}else if (document.getSelection){
var str = document.getSelection();
}else {
var str = document.selection.createRange().text;
}
return str;
}
var sel = getSelectedText();
alert(sel.toString().length);
</pre>
<p>On teste !<br />
sélectionner un texte puis cliquer <a href="javascript:function%20getSelectedText(){if(window.getSelection){var%20str=window.getSelection()}else%20if(document.getSelection){var%20str=document.getSelection()}else{var%20str=document.selection.createRange().text}return%20str}var%20sel=getSelectedText();alert(sel.toString().length);">ici</a></p>
<p>Le bookmarklet c&#8217;est une version <a href="http://dean.edwards.name/packer/">compressée sur une ligne</a> avec une <a href="http://meyerweb.com/eric/tools/dencoder/">moulinette url Encode</a>.</p>
<pre class="brush: jscript; title: ;">
javascript:function%20getSelectedText(){if(window.getSelection){var%20str=window.getSelection()}else%20if(document.getSelection){var%20str=document.getSelection()}else{var%20str=document.selection.createRange().text}return%20str}var%20sel=getSelectedText();alert(sel.toString().length);
</pre>
<p>Pour les novices, pour avoir ce script sur une autre page que mon blog, il suffit de glisser/déposer -> <a href="javascript:function%20getSelectedText(){if(window.getSelection){var%20str=window.getSelection()}else%20if(document.getSelection){var%20str=document.getSelection()}else{var%20str=document.selection.createRange().text}return%20str}var%20sel=getSelectedText();alert(sel.toString().length);">compte-signe</a> dans la barre des signets (marque-pages) !<br />
Voilà (j&#8217;ai essayer de mettre une icône au signet mais ça me semble <a href="http://www.tapper-ware.net/blog/?p=97">difficile</a>). </p>
]]></content:encoded>
			<wfw:commentRss>http://jaiunblog.com/2995/mon-premier-bookmarklet/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
	</channel>
</rss>

