<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-932956042341012858</id><updated>2012-02-16T20:11:27.915+01:00</updated><category term='HMTL5'/><category term='PHP'/><category term='Google Maps'/><category term='Symfony'/><category term='JavaScript'/><category term='Zend'/><category term='PDF'/><category term='Geolocalización'/><category term='Web Workers'/><category term='YQL Geo'/><title type='text'>el blog de epplestun</title><subtitle type='html'>Bienvenido al blog de epplestun, aquí podrás encontrar artículos relacionados con la programación web y con el desarrollo de aplicaciones para dispositivos móviles bajo la plataforma Android.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://epplestun.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/932956042341012858/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://epplestun.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>epplestun</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-932956042341012858.post-7506790668535248974</id><published>2010-06-10T10:27:00.003+02:00</published><updated>2010-06-10T10:34:58.247+02:00</updated><title type='text'>Charlas sobre HTML5 y JavaScript</title><content type='html'>Desde hace unas semanas estoy metido de lleno en diferentes eventos relacionados con la difusión de conocimiento. &lt;br /&gt;&lt;br /&gt;Entre esos eventos se encuentran &lt;span style="font-weight:bold;"&gt;Open Biko&lt;/span&gt; y el &lt;span style="font-weight:bold;"&gt;CADIUS de Donosti&lt;/span&gt; (que cambiará de nombre). En estos dos eventos me ha tocado hablar sobre JavaScript, MooTools y HTML5.&lt;br /&gt;&lt;br /&gt;Os dejo aquí la presentación sobre MooTools y el enlace a los slides de la charla sobre HTML5.&lt;br /&gt;&lt;br /&gt;Charla sobre MooTools:&lt;br /&gt;&lt;br /&gt;&lt;div style="width:425px" id="__ss_4369410"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/epplestun/cadius-que-esmootools" title="Cadius que es_moo_tools_"&gt;Cadius que es_moo_tools_&lt;/a&gt;&lt;/strong&gt;&lt;object id="__sse4369410" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=cadiusqueesmootools-100531155145-phpapp01&amp;stripped_title=cadius-que-esmootools" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse4369410" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=cadiusqueesmootools-100531155145-phpapp01&amp;stripped_title=cadius-que-esmootools" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="padding:5px 0 12px"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/epplestun"&gt;epplestun&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Charla sobre HTML5: &lt;a href="http://apirocks.com/html5/html5.html#slide1"&gt;http://apirocks.com/html5/html5.html#slide1&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/932956042341012858-7506790668535248974?l=epplestun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://epplestun.blogspot.com/feeds/7506790668535248974/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://epplestun.blogspot.com/2010/06/charlas-sobre-html5-y-javascript.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/932956042341012858/posts/default/7506790668535248974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/932956042341012858/posts/default/7506790668535248974'/><link rel='alternate' type='text/html' href='http://epplestun.blogspot.com/2010/06/charlas-sobre-html5-y-javascript.html' title='Charlas sobre HTML5 y JavaScript'/><author><name>epplestun</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-932956042341012858.post-6895608188506143779</id><published>2010-04-06T19:21:00.002+02:00</published><updated>2010-04-06T19:38:13.456+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='YQL Geo'/><category scheme='http://www.blogger.com/atom/ns#' term='Geolocalización'/><category scheme='http://www.blogger.com/atom/ns#' term='Google Maps'/><title type='text'>Librería YQL Geo</title><content type='html'>Cada día son más las aplicaciones que hacen uso de la geolocalización, dos de los ejemplos más claros son los de Twitter y Flickr, Twitter geolocaliza los mensajes y Flickr geolocaliza las fotos.&lt;br /&gt;&lt;br /&gt;Existen diferentes alternativas para trabajar la geolocalización mediante JavaScript, probablemente la opción más usada por los desarrolladores es la de usar la &lt;a href="http://code.google.com/apis/maps/documentation/reference.html"&gt;API de Google Maps&lt;/a&gt;, en la versión 2 con &lt;a href="http://code.google.com/apis/maps/documentation/reference.html#GClientGeocoder"&gt;GClientGeocoder&lt;/a&gt;, y la versión 3 con &lt;a href="http://code.google.com/apis/maps/documentation/v3/reference.html#Geocoder"&gt;google.maps.Geocoder&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Una de las alternativas al uso de la API de Google Maps es &lt;a href="http://isithackday.com/hacks/geo/yql-geo-library/"&gt;YQL Geo&lt;/a&gt;, una librería pensada para geolocalizar información, hacer geolozación inversa y análisis de contenido.&lt;br /&gt;&lt;br /&gt;YQL Geo hace uso de los siguientes servicios para devolver sus resultados.&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://developer.yahoo.com/geo/placemaker"&gt;Yahoo Placemaker&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://developer.yahoo.com/geo/geoplanet/"&gt;Yahoo GeoPlanet&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://jsonip.appspot.com/"&gt;jsonip.appspot.com&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://iplocationtools.com/ip_location_api.php"&gt;IP location tools&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://dev.w3.org/geo/api/spec-source.html"&gt;W3C Geo location&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://www.flickr.com/services/api/flickr.places.findByLatLon.html"&gt;Flickr.places.findByLatLon&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Su uso es extremandamente simple, tan solo hay que añadir la librería en la cabecera de la página y hacer uso del metodo get.&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint lang-js"&gt;&lt;br /&gt;yqlgeo.get(what, callback)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;what&lt;/strong&gt;&lt;br /&gt;Es cualquier cosa que se desee analizar, puede ser desde una URL a un documento web, un texto, una IP, una coordenada dada con longitud y latitud, o "visitor" para detectar la localización geografica del usuario que visita la página.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;callback&lt;/strong&gt;&lt;br /&gt;es el método de devolución que será llamado cuando se de una recuperación exitosa de la información. Los datos se devuelven en forma objeto - si hay algún error al recuperar la información se devolverá envuelto en una propiedad de error.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Ejemplos&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Obtener la localización geográfica de un texto&lt;/h4&gt;&lt;br /&gt;&lt;pre class="prettyprint lang-js"&gt;&lt;br /&gt;yqlgeo.get('paris,fr',function(o){&lt;br /&gt;  alert(o.place.name+' ('+&lt;br /&gt;    o.place.centroid.latitude+','+&lt;br /&gt;    o.place.centroid.longitude+&lt;br /&gt;  ')');&lt;br /&gt;});&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Obtener la información sobre la ubicación de lat/lon&lt;/h4&gt;&lt;br /&gt;&lt;pre class="prettyprint lang-js"&gt;&lt;br /&gt;yqlgeo.get(33.748,-84.393,function(o){&lt;br /&gt;  alert(o.place.name + ',' + o.place.country.content);&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;yqlgeo.get([33.748,-84.393],function(o){&lt;br /&gt;  alert(o.place.name + ',' + o.place.country.content);&lt;br /&gt;});&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Obtener todas las ubicaciones geográficas de una determinada URL&lt;/h4&gt;&lt;br /&gt;&lt;pre class="prettyprint lang-js"&gt;&lt;br /&gt;yqlgeo.get('http://icant.co.uk',function(o){&lt;br /&gt;  var out = '';&lt;br /&gt;  var all = o.place.length;&lt;br /&gt;  for(var i=0;i&lt;all;i++){&lt;br /&gt;    out+=o.place[i].name+'\n';&lt;br /&gt;  };&lt;br /&gt;  alert(out);&lt;br /&gt;});&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Obtener el lugar de un número de IP&lt;/h4&gt;&lt;br /&gt;&lt;pre class="prettyprint lang-js"&gt;&lt;br /&gt;yqlgeo.get('217.12.14.240',function(o){&lt;br /&gt;  alert(o.place.name + ',' + o.place.country.content +  &lt;br /&gt;        ' (' + o.place.centroid.latitude + ',' +&lt;br /&gt;               o.place.centroid.longitude + ')'&lt;br /&gt;        );&lt;br /&gt;});&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Localización de usuario (utilizando la API de geolocalización del W3C y la IP)&lt;/h4&gt;&lt;br /&gt;&lt;pre class="prettyprint lang-js"&gt;&lt;br /&gt;yqlgeo.get('visitor',function(o){&lt;br /&gt;  alert(o.place.name + ',' + o.place.country.content +  &lt;br /&gt;        ' (' + o.place.centroid.latitude + ',' +&lt;br /&gt;               o.place.centroid.longitude + ')'&lt;br /&gt;        );&lt;br /&gt;});&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/932956042341012858-6895608188506143779?l=epplestun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://epplestun.blogspot.com/feeds/6895608188506143779/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://epplestun.blogspot.com/2010/04/libreria-yql-geo.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/932956042341012858/posts/default/6895608188506143779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/932956042341012858/posts/default/6895608188506143779'/><link rel='alternate' type='text/html' href='http://epplestun.blogspot.com/2010/04/libreria-yql-geo.html' title='Librería YQL Geo'/><author><name>epplestun</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-932956042341012858.post-2239720949997632012</id><published>2010-04-06T12:44:00.000+02:00</published><updated>2010-04-06T12:51:14.191+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PDF'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Zend'/><category scheme='http://www.blogger.com/atom/ns#' term='Symfony'/><title type='text'>Generar PDFs en un proyecto usando symfony</title><content type='html'>Muchos de los desarrollos que realizamos diariamente requieren la generación de informes en formato PDF. Hoy me han pedido en el trabajo que busque información sobre como generar ficheros PDF en proyectos que usan symfony, trás &lt;a href="http://www.google.com/search?q=symfony+pdf+plugins&amp;ie=utf-8&amp;oe=utf-8&amp;aq=t&amp;rls=org.mozilla:es-ES:official&amp;client=firefox-a"&gt;Googlear&lt;/a&gt; un poco, estas son algunas alternativas que podemos utilizar:&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;sfPDFLatextPlugin&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;Este plugin permite utilizar la potencia de LaTex (&lt;a href="http://www.latex-project.org/"&gt;http://www.latex-project.org/&lt;/a&gt;) para generar ficheros PDF.&lt;br /&gt;&lt;br /&gt;- Licencia MIT&lt;br /&gt;- Estado BETA&lt;br /&gt;- Web &lt;a href="http://symfony.ibr-oss.de/article/sfpdflatexplugin/"&gt;http://symfony.ibr-oss.de/article/sfpdflatexplugin/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;sfTCPDFPlugin&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;Este plugin proporciona la abstracción de la librería &lt;a href="http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf"&gt;TCPDF&lt;/a&gt;. El interés principal de este "fork" de &lt;a href="http://www.fpdf.org/"&gt;FPDF&lt;/a&gt; reside en el hecho de que puede manejar cualquier cadena UTF8 con la codificación nativa de symfony.&lt;br /&gt;&lt;br /&gt;Un ejemplo de su uso se puede ver en la siguiente URL &lt;a href="http://symfonynerds.com/blog/?p=158"&gt;http://symfonynerds.com/blog/?p=158&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- Licencia MIT&lt;br /&gt;- Estado STABLE&lt;br /&gt;- web &lt;a href="http://www.symfony-project.org/plugins/sfTCPDFPlugin"&gt;http://www.symfony-project.org/plugins/sfTCPDFPlugin&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;sfDomPDFPlugin&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;El plugin sfDomPDFPlugin permite convertir HTML en PDF. El plugin utiliza la librería &lt;a href="http://www.digitaljunkies.ca/dompdf/"&gt;DomPDF&lt;/a&gt;. Es muy útil para la conversión de cosas como facturas y documentos personalizados en formato PDF no editable.&lt;br /&gt;&lt;br /&gt;Hay que tener en cuenta que DomPDF soporta CSS 2.1, sin embargo, es muy exigente con el formato, por lo hay que evitar el uso de abreviaturas de estilos o combinación de estilos.&lt;br /&gt;&lt;br /&gt;Para conocer la compatibilidad con CSS 2.1 consulta la siguiente URL &lt;a href="http://www.digitaljunkies.ca/dompdf/css21.php"&gt;http://www.digitaljunkies.ca/dompdf/css21.php&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- Licencia LGPL&lt;br /&gt;- Estado STABLE&lt;br /&gt;- Web &lt;a href="http://www.symfony-project.org/plugins/sfDomPDFPlugin"&gt;http://www.symfony-project.org/plugins/sfDomPDFPlugin&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Usar Zend PDF para generar ficheros PDF&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;Siguiendo con la filosofía de symfony, "No reinventar la rueda" podemos hacer uso de esta parte del Zend Framework.&lt;br /&gt;&lt;br /&gt;Para poder usar esta librería del Zend Framework, tienes que añadir en el directorio lib/vendor/Zend/ los siguientes ficheros y directorios:&lt;br /&gt;&lt;br /&gt;* Exception.php&lt;br /&gt;* Loader/&lt;br /&gt;* Loader.php&lt;br /&gt;* Pdf/&lt;br /&gt;&lt;br /&gt;Una vez hecho esto, deberás añadir el código siguiente a la clase ProjectConfiguration para proporcionar una manera simple de registrar el Zend autoloader.&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint lang-php"&gt;&lt;br /&gt;// config/ProjectConfiguration.class.php&lt;br /&gt;class ProjectConfiguration extends sfProjectConfiguration&lt;br /&gt;{&lt;br /&gt;  static protected $zendLoaded = false;&lt;br /&gt; &lt;br /&gt;  static public function registerZend()&lt;br /&gt;  {&lt;br /&gt;    if (self::$zendLoaded)&lt;br /&gt;    {&lt;br /&gt;      return;&lt;br /&gt;    }&lt;br /&gt; &lt;br /&gt;    set_include_path(sfConfig::get('sf_lib_dir').'/vendor'.PATH_SEPARATOR.get_include_path());&lt;br /&gt;    require_once sfConfig::get('sf_lib_dir').'/vendor/Zend/Loader/Autoloader.php';&lt;br /&gt;    Zend_Loader_Autoloader::getInstance();&lt;br /&gt;    self::$zendLoaded = true;&lt;br /&gt;  }&lt;br /&gt; &lt;br /&gt;  // ...&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Una vez tengamos cargado el autoloader de Zend podremos invocar a las clases para generar ficheros PDF.&lt;br /&gt;&lt;br /&gt;Un ejemplo del uso de Zend PDF lo puedes encontrar en la siguiente URL &lt;a href="http://framework.zend.com/manual/en/zend.pdf.usage.html"&gt;http://framework.zend.com/manual/en/zend.pdf.usage.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- Licencia New BSD License&lt;br /&gt;- Estado STABLE&lt;br /&gt;- Web &lt;a href="http://framework.zend.com/manual/en/zend.pdf.html"&gt;http://framework.zend.com/manual/en/zend.pdf.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/932956042341012858-2239720949997632012?l=epplestun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://epplestun.blogspot.com/feeds/2239720949997632012/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://epplestun.blogspot.com/2010/04/generar-pdfs-en-un-proyecto-usando.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/932956042341012858/posts/default/2239720949997632012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/932956042341012858/posts/default/2239720949997632012'/><link rel='alternate' type='text/html' href='http://epplestun.blogspot.com/2010/04/generar-pdfs-en-un-proyecto-usando.html' title='Generar PDFs en un proyecto usando symfony'/><author><name>epplestun</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-932956042341012858.post-5382687316971195347</id><published>2010-04-03T16:40:00.000+02:00</published><updated>2010-04-03T16:56:37.647+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='HMTL5'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Workers'/><title type='text'>Web Workers - Qué son y para que sirven</title><content type='html'>Con la llegada de HTML5 llegan nuevas funcionalidades a los navegadores web, es el caso del Storage (almacenamiento en el cliente), Geolocation (geolocalización) o los Web Workers (ejecución de scripts en procesos en segundo plano).&lt;br /&gt;&lt;br /&gt;En éste artículo vamos a ver que son y para que sirven los Web Workers (de ahora en adelante los llamaremos Workers).&lt;br /&gt;&lt;br /&gt;Los Workers no son más que una API que permite a los desarrolladores web ejecutar procesos en segundo plano, son totalmente independientemene a los procesos de la interfaz de usuario.&lt;br /&gt;&lt;br /&gt;Esto permite que las secuencias de comandos de larga duración no se vean interrumpidas por secuencias de comandos que responden a clicks u otras interacciones por parte del usuario, y de esta manera permite ejecutar tareas de larga duración sin necesidad de interrumpir la respuesta del usuario.&lt;br /&gt;&lt;br /&gt;Los Workers son relativamente gruesos y resistentes, y no están destinados a ser utilizados en grandes cantidades. Por ejemplo, no sería apropiado para lanzar un Worker por cada píxel de una imagen de cuatro megapíxeles.&lt;br /&gt;&lt;br /&gt;En general, los Workers se espera que sean de larga duración, tienen un alto costo inicial de rendimiento, y un alto costo por ejemplo la memoria.&lt;br /&gt;&lt;br /&gt;Un simple ejemplo del uso de Workers sería el siguiente, un programa que calcula el mayor numero primo:&lt;br /&gt;&lt;br /&gt;example01.html&lt;br /&gt;&lt;pre class="prettyprint lang-js"&gt;&lt;br /&gt;&amp;lt;!DOCTYPE HTML&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt; &amp;lt;head&amp;gt;&lt;br /&gt;  &amp;lt;title&amp;gt;Worker example: One-core computation&amp;lt;/title&amp;gt;&lt;br /&gt; &amp;lt;/head&amp;gt;&lt;br /&gt; &amp;lt;body&amp;gt;&lt;br /&gt;  &amp;lt;p&amp;gt;The highest prime number discovered so far is: &amp;lt;output id="result"&amp;gt;&amp;lt;/output&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;  &amp;lt;script&amp;gt;&lt;br /&gt;   var worker = new Worker('worker.js');&lt;br /&gt;   worker.onmessage = function (event) {&lt;br /&gt;     document.getElementById('result').textContent = event.data;&lt;br /&gt;   };&lt;br /&gt;  &amp;lt;/script&amp;gt;&lt;br /&gt; &amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;worker.js&lt;br /&gt;&lt;pre class="prettyprint lang-js"&gt;&lt;br /&gt;var n = 1;&lt;br /&gt;search: while (true) {&lt;br /&gt;  n += 1;&lt;br /&gt;  for (var i = 2; i &lt;= Math.sqrt(n); i += 1)&lt;br /&gt;    if (n % i == 0)&lt;br /&gt;     continue search;&lt;br /&gt;  // found a prime!&lt;br /&gt;  postMessage(n);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;La definición de un Worker se realiza mediante la instancia de la clase Worker, como argumento de la clase se indica el nombre del script a cargar (o los scripts, separados por comas, en caso de ser más de uno).&lt;br /&gt;&lt;br /&gt;Una vez instanciada la clase, se debe definir el proceso a realizar cuando recibe un mensaje por parte del script que esta ejecutandose en segundo plano, para ello, el objeto cuenta con el método onmessage, al que se debe pasar una función.&lt;br /&gt;&lt;br /&gt;La segunda parte, donde escribimos el código del script a ejecutar en segundo plano, no es más que un simple script, la único nuevo que se le añade es la función postMessage, esta función es la utilizada para realizar la comunicación con el Worker, la función envía la información necesaria al primer proceso, y ésta puede ser usada desde el primer proceso.&lt;br /&gt;&lt;br /&gt;Hasta aquí esta breve introducción al uso de Workers. Para más información leer los siguientes enlaces:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.whatwg.org/specs/web-workers/current-work/"&gt;http://www.whatwg.org/specs/web-workers/current-work/&lt;/a&gt;&lt;br /&gt;&lt;a href="https://developer.mozilla.org/En/Using_web_workers"&gt;https://developer.mozilla.org/En/Using_web_workers&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/932956042341012858-5382687316971195347?l=epplestun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://epplestun.blogspot.com/feeds/5382687316971195347/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://epplestun.blogspot.com/2010/04/web-workers-que-son-y-para-que-sirven_03.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/932956042341012858/posts/default/5382687316971195347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/932956042341012858/posts/default/5382687316971195347'/><link rel='alternate' type='text/html' href='http://epplestun.blogspot.com/2010/04/web-workers-que-son-y-para-que-sirven_03.html' title='Web Workers - Qué son y para que sirven'/><author><name>epplestun</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-932956042341012858.post-2020259135907764051</id><published>2010-03-28T01:14:00.000+01:00</published><updated>2010-03-28T11:02:12.187+02:00</updated><title type='text'>Nueva etapa en el blog de epplestun</title><content type='html'>Después de más de cinco años de la creación del blog, y tras no dedicarle el tiempo necesario (muchas veces por falta de tiempo), he decidido retomarlo de nuevo y ponerme en serio con él.&lt;br /&gt;&lt;br /&gt;En esta nueva etapa, intentaré comentar y compartir las cosas que encuentre de interés en el ámbito del desarrollo web (fundamentalmente PHP y JavaScript) y del desarrollo de aplicaciones para dispositivos móviles bajo la plataforma Android.&lt;br /&gt;&lt;br /&gt;Saludos :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/932956042341012858-2020259135907764051?l=epplestun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://epplestun.blogspot.com/feeds/2020259135907764051/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://epplestun.blogspot.com/2010/03/nueva-etapa-en-el-blog-de-epplestun.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/932956042341012858/posts/default/2020259135907764051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/932956042341012858/posts/default/2020259135907764051'/><link rel='alternate' type='text/html' href='http://epplestun.blogspot.com/2010/03/nueva-etapa-en-el-blog-de-epplestun.html' title='Nueva etapa en el blog de epplestun'/><author><name>epplestun</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry></feed>
