{"id":1969,"date":"2015-04-30T10:14:42","date_gmt":"2015-04-30T15:14:42","guid":{"rendered":"http:\/\/alejandroayala.solmedia.ec\/?p=1969"},"modified":"2015-04-30T11:33:46","modified_gmt":"2015-04-30T16:33:46","slug":"processing-y-javascript","status":"publish","type":"post","link":"https:\/\/alejandroayala.solmedia.ec\/?p=1969","title":{"rendered":"Processing y Javascript. Artes Visuales para programadores"},"content":{"rendered":"<p><a href=\"https:\/\/processing.org\/\" target=\"_blank\">Processing<\/a> es un lenguaje de programaci\u00f3n que permite desarrollar aplicaciones en un contexto audio visual, acercando a los artistas la posibilidad de usar la tecnolog\u00eda en trabajos art\u00edsticos.<\/p>\n<p>Este lenguaje esta construido sobre Java pero usa una sintaxis mucho m\u00e1s f\u00e1cil, orientado a lo gr\u00e1fico.<\/p>\n<p><!--more--><\/p>\n<p>Hace alg\u00fan tiempo pude probarlo y jugar un rato con \u00e9l. Viene con un <em>IDE<\/em> incorporado, as\u00ed que es muy f\u00e1cil empezar a usarlo. Van a la <a href=\"https:\/\/processing.org\/download\/\" target=\"_blank\">p\u00e1gina de descargas<\/a> y obtienen el archivo seg\u00fan su sistema operativo, no hay que instalar nada, solo descomprimen y en el caso de Linux ejecutan el archivo <em><strong>processing<\/strong><\/em>.<\/p>\n<p>Algunas capturas de pantalla del IDE y el ejemplo del <strong>\u00abojo de Sauron\u00bb<\/strong> ejecut\u00e1ndose:<\/p>\n<div id=\"attachment_1978\" style=\"width: 260px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/solmedia.ec\/blog\/wp-content\/uploads\/2015\/04\/processing01.png\"><img aria-describedby=\"caption-attachment-1978\" loading=\"lazy\" class=\"wp-image-1978 size-medium\" src=\"http:\/\/solmedia.ec\/blog\/wp-content\/uploads\/2015\/04\/processing01-250x300.png\" alt=\"El IDE de Processing con un &quot;sketch&quot; en blanco listo para empezar a programar\" width=\"250\" height=\"300\" srcset=\"http:\/\/solmedia.ec\/blog\/wp-content\/uploads\/2015\/04\/processing01-250x300.png 250w, http:\/\/solmedia.ec\/blog\/wp-content\/uploads\/2015\/04\/processing01.png 500w\" sizes=\"(max-width: 250px) 100vw, 250px\" \/><\/a><p id=\"caption-attachment-1978\" class=\"wp-caption-text\">El IDE de Processing con un \u00absketch\u00bb en blanco listo para empezar a programar<\/p><\/div>\n<div id=\"attachment_1981\" style=\"width: 767px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/solmedia.ec\/blog\/wp-content\/uploads\/2015\/04\/processing031.png\"><img aria-describedby=\"caption-attachment-1981\" loading=\"lazy\" class=\"wp-image-1981 size-full\" src=\"http:\/\/solmedia.ec\/blog\/wp-content\/uploads\/2015\/04\/processing031.png\" alt=\"Ventanas a la izquierda con el listado de ejemplos, a la derecha el sketch con el c\u00f3digo y el &quot;ojo de Sauron&quot; ejecut\u00e1ndose\" width=\"757\" height=\"599\" srcset=\"http:\/\/solmedia.ec\/blog\/wp-content\/uploads\/2015\/04\/processing031.png 757w, http:\/\/solmedia.ec\/blog\/wp-content\/uploads\/2015\/04\/processing031-300x237.png 300w, http:\/\/solmedia.ec\/blog\/wp-content\/uploads\/2015\/04\/processing031-660x522.png 660w\" sizes=\"(max-width: 757px) 100vw, 757px\" \/><\/a><p id=\"caption-attachment-1981\" class=\"wp-caption-text\">Ventanas a la izquierda con el listado de ejemplos, a la derecha el sketch con el c\u00f3digo y el \u00abojo de Sauron\u00bb ejecut\u00e1ndose<\/p><\/div>\n<p>Cuando empec\u00e9 a jugar un poco con el programa pude encontrar que<strong><em> \u00abpor debajo\u00bb<\/em><\/strong> todo estaba contenido por una clase llamada <a href=\"http:\/\/processing.googlecode.com\/svn\/trunk\/processing\/build\/javadoc\/core\/processing\/core\/PApplet.html\" target=\"_blank\">PApplet<\/a>, una especie de <em>Applet<\/em> para <em>Processing<\/em>, ese d\u00eda puse final a mis ganas de seguir probando cosas con \u00e9l, sobre todo por el poco o nulo futuro de los <em>applets<\/em>, a mi me interesaba la <em>web<\/em>, as\u00ed que ah\u00ed lo deje.<\/p>\n<p>Por casualidad encontr\u00e9 un <em>port<\/em> de <a href=\"http:\/\/processingjs.org\" target=\"_blank\"><em>Processing<\/em> para <em>Javascript<\/em><\/a>, y ah\u00ed la cosa cambi\u00f3. El creador de <a href=\"https:\/\/en.wikipedia.org\/wiki\/John_Resig\" target=\"_blank\">jQuery<\/a> era el padre de este <em>port<\/em>. La cosa pinta muy bien, cualquier archivo <strong>creado en <em>procesing<\/em> es \u00abtransformado\u00bb a <em>Javascript<\/em> y <\/strong><em><strong>HTML5<\/strong>,<\/em> <strong><em>canvas<\/em><\/strong> para ser mas exacto, de esta manera es muy f\u00e1cil llevar las creaciones de <em>Processing<\/em> sin instalar ning\u00fan <em>pluggin<\/em> Java, \u00bfno es fant\u00e1stico?<\/p>\n<p>Entonces \u00bfc\u00f3mo podemos agregar nuestro archivo .<em>pde<\/em>(extensi\u00f3n que usa <em>Processing<\/em> al guardar el trabajo) y transformarlo a <em>Javascript<\/em>?<\/p>\n<p>De la p\u00e1gina de <a href=\"http:\/\/processingjs.org\/\">ProcessingJS<\/a> tenemos para descargar dos archivos, <a href=\"https:\/\/raw.github.com\/processing-js\/processing-js\/v1.4.8\/processing.js\" target=\"_blank\">processing.js<\/a> y <a href=\"https:\/\/raw.github.com\/processing-js\/processing-js\/v1.4.8\/processing.min.js\" target=\"_blank\">processing.min.js<\/a>, aunque son los mismos, el uno se usa para ambientes de Desarrollo y el otro para ambientes de Producci\u00f3n, al momento de escribir esta entrada la versi\u00f3n se encontraba en la 1.4.8.<\/p>\n<p>Agregamos nuestro <em>script<\/em> de <em>ProcessingJS<\/em> a nuestro <em>HTML<\/em>, yo lo he puesto junto con la p\u00e1gina, pero ustedes ya saben como agregar scripts.<\/p>\n<p>[html highlight=\u00bb5,10&#8243;]<br \/>\n&lt;!DOCTYPE html&gt;<br \/>\n&lt;html&gt;<br \/>\n    &lt;head&gt;<br \/>\n        &lt;title&gt;Sauron &#8211; Processing example&lt;\/title&gt;<br \/>\n        &lt;script src=&quot;processing.js&quot; &gt;&lt;\/script&gt;<br \/>\n        &lt;meta charset=&quot;UTF-8&quot;&gt;<br \/>\n    &lt;\/head&gt;<br \/>\n    &lt;body&gt;<br \/>\n        &lt;h2&gt;Sauron &#8211; Processing example&lt;\/h2&gt;<br \/>\n        &lt;canvas data-processing-sources=&quot;sauron.pde&quot;&gt;&lt;\/canvas&gt;<br \/>\n    &lt;\/body&gt;<br \/>\n&lt;\/html&gt;<br \/>\n[\/html]<\/p>\n<p>La l\u00ednea 5 agrega la librer\u00eda de <em>ProcessingJS<\/em> y en la l\u00ednea 10 mediante el camvas y el atributo <em><strong>data-processing-sources<\/strong><\/em> se indica el archivo de <em>Processing<\/em>, en mi caso el archivo se llama <em><strong>sauron.pde<\/strong><\/em> y est\u00e1 junto al archivo <em>html<\/em> por eso sus rutas. Eso ser\u00eda todo, y como se dir\u00eda: un <em>sketch<\/em> vale m\u00e1s que mil palabras, les dejo a continuaci\u00f3n con el Ojo de Sauron. Pasen el puntero del <em>mouse<\/em> sobre el ojo y nunca m\u00e1s se librar\u00e1n de \u00e9l.<\/p>\n<p>Que lo disfruten<\/p>\n<h3>El Ojo de Sauron<\/h3>\n<p><script src=\"\/wp-content\/uploads\/2015\/04\/processing.js\"><\/script><br \/>\n<canvas data-processing-sources=\"\/wp-content\/uploads\/2015\/04\/sauron.pde\"><\/canvas><\/p>\n\n<div class=\"twitter-share\"><a href=\"https:\/\/twitter.com\/intent\/tweet?via=a1ejo_ayala\" class=\"twitter-share-button\" data-size=\"large\">Twittear<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Processing es un lenguaje de programaci\u00f3n que permite desarrollar aplicaciones en un contexto audio visual, acercando a los artistas la posibilidad de usar la tecnolog\u00eda en trabajos art\u00edsticos. Este lenguaje esta construido sobre Java pero usa una sintaxis mucho m\u00e1s f\u00e1cil, orientado a lo gr\u00e1fico.<\/p>\n","protected":false},"author":1,"featured_media":1984,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[8],"tags":[494,495],"_links":{"self":[{"href":"https:\/\/alejandroayala.solmedia.ec\/index.php?rest_route=\/wp\/v2\/posts\/1969"}],"collection":[{"href":"https:\/\/alejandroayala.solmedia.ec\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/alejandroayala.solmedia.ec\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/alejandroayala.solmedia.ec\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/alejandroayala.solmedia.ec\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1969"}],"version-history":[{"count":13,"href":"https:\/\/alejandroayala.solmedia.ec\/index.php?rest_route=\/wp\/v2\/posts\/1969\/revisions"}],"predecessor-version":[{"id":1989,"href":"https:\/\/alejandroayala.solmedia.ec\/index.php?rest_route=\/wp\/v2\/posts\/1969\/revisions\/1989"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/alejandroayala.solmedia.ec\/index.php?rest_route=\/wp\/v2\/media\/1984"}],"wp:attachment":[{"href":"https:\/\/alejandroayala.solmedia.ec\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1969"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alejandroayala.solmedia.ec\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1969"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alejandroayala.solmedia.ec\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1969"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}