<?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>Scipion Strike Back</title>
	<atom:link href="http://scipion.es/feed/" rel="self" type="application/rss+xml" />
	<link>http://scipion.es</link>
	<description>Reinventando la rueda</description>
	<lastBuildDate>Wed, 25 Aug 2010 20:20:42 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>El Web Comic en español también tira</title>
		<link>http://scipion.es/2010/08/el-web-comic-en-espanol-tambien-tira/</link>
		<comments>http://scipion.es/2010/08/el-web-comic-en-espanol-tambien-tira/#comments</comments>
		<pubDate>Wed, 25 Aug 2010 20:20:42 +0000</pubDate>
		<dc:creator>Scipion</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[metaBlog]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[comic]]></category>
		<category><![CDATA[social media]]></category>
		<category><![CDATA[web comic]]></category>

		<guid isPermaLink="false">http://scipion.es/?p=297</guid>
		<description><![CDATA[Llevo tiempo sin escribir y me ha parecido bien volver con algo que le habia dado vueltas hace tiempo, que son los comics en la web escritos por hipanohablantes.  Son un fenomeno muy extendido y para el que se requiere de talento, estilo e incluso humor es el comiclog, o web comic.
Son muy conocidos Dilbert [...]]]></description>
			<content:encoded><![CDATA[<p>Llevo tiempo sin escribir y me ha parecido bien volver con algo que le habia dado vueltas hace tiempo, que son los comics en la web escritos por hipanohablantes.  Son un fenomeno muy extendido y para el que se requiere de talento, estilo e incluso humor es el comiclog, o web comic.</p>
<p>Son muy conocidos Dilbert y XKCD de hecho en Estados Unidos el web comic tiene muchos adeptos, pero hay que saber que en españa también se hacen webcomics con humor.</p>
<p><strong>El listo</strong></p>
<p><a href="http://listocomics.com/" target="_blank">http://listocomics.com/</a><br />
Humor con estilo propio claramente marcado.</p>
<p style="text-align: center;"><a href="http://listocomics.com/"><img class="aligncenter" title="Listo Comics" src="http://listocomics.com/comics/2010-03-06-esperanza.gif" alt="" width="420" height="205" /></a></p>
<p>wordpress con comicpress.<br />
Mucha acogida desde twitter.</p>
<p>En una entrevista que le hicieron al autor en Antena 3 me hizo mucha gracia su teoría de como un chiste es bueno. Lo piensa en el bar, y si cuando llega a casa lo recuerda, es que es bueno.</p>
<p><strong>Runtime Comics</strong><br />
humor y erótico<br />
<a href="http://www.runtimecomics.com/" target="_blank"> http://www.runtimecomics.com/</a></p>
<p style="text-align: center;"><a href="http://www.runtimecomics.com/"><img class="aligncenter" title="Runtime Comics" src="http://www.runtimecomics.com/comicmix/otros096-cancer.gif" alt="" width="329" height="388" /></a></p>
<p>Alojado en un wordpress<br />
Con mucha acogida desde facebook.</p>
<p><strong>Conejo Frustrado</strong><br />
Cada semana una tira nueva.<br />
<a href="http://www.conejofrustrado.com/" target="_blank">http://www.conejofrustrado.com/</a><br />
wordpress con ComicPress</p>
<p><img class="aligncenter" src="http://www.conejofrustrado.com/comics/2010-05-02-Conejo-Frustrado-74-Hablame-de-ti.jpg" alt="" width="760" height="277" /><br />
El conejoRodolfito tiene presencia en twitter incluso más que la cuenta oficial del conejo frustrado.<br />
La web está licenciada bajo la Creative Comons (Reconocimiento-No comercial-Sin obras derivadas 2.5 España) por lo que se permite copiar, distribuir y comunicar públicamente la obra siempre que se cite al autor, no te lucres y mantengas la obra inalterada.</p>
<p><strong>Tira Ecol</strong></p>
<p><a href="http://www.tiraecol.net/" target="_blank">http://www.tiraecol.net/</a></p>
<p><img class="aligncenter" title="tiraecol.net" src="http://www.tiraecol.net/modules/comic/cache/images/tiraecol-376.png" alt="" width="700" height="240" /><br />
Utiliza la plataforma bcoos para publicar la tira cómica. bcoos es un content-community management system escrito en PHP con MySql.</p>
<p>Ácido y con chispa, algunas tiras parece que se salen un poco de madre pero tiene cosas muy buenas.</p>
<p><strong>La legión del espacio</strong><br />
La primera tira es del 30 de Octubre del 2004.<br />
<a href="http://www.legiondelespacio.com/" target="_blank">http://www.legiondelespacio.com/</a></p>
<p><img class="aligncenter" title="La legion del espacio" src="http://www.legiondelespacio.com/app/webroot/upload/strips/esp_313.jpg" alt="" width="725" height="358" /><br />
La web es una aplicación dedicada de Pyndoo.com, en general está desarrollada para Apache-Php-MySql y mucho uso de flash para casi todo excepto para los comentarios y la imagen en sí de la tira.</p>
<p>Todas las tiras giran en torno al Legión del espacio, cómo no, en un universo futurista que han creado de ciencia-ficción y humor.</p>
<p>Estos son algunos que me han llamado la atención especialmente, pero hay cantidad de artistas que se dedican al comic y publican en la web por su cuenta y riesgo. Las risas suelen ser lo más recurrido, también porque para una tira de vez en cuando es lo más cómodo. Al estilo de las comedias de situación de toda la vida en donde lo que pasa en un capitulo no transciende al siguiente.</p>
]]></content:encoded>
			<wfw:commentRss>http://scipion.es/2010/08/el-web-comic-en-espanol-tambien-tira/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gana una portada en meneame con el Mundial</title>
		<link>http://scipion.es/2010/06/gana-una-portada-en-meneame-con-el-mundial/</link>
		<comments>http://scipion.es/2010/06/gana-una-portada-en-meneame-con-el-mundial/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 12:51:31 +0000</pubDate>
		<dc:creator>Scipion</dc:creator>
				<category><![CDATA[Digresion]]></category>
		<category><![CDATA[blogs]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[meneame]]></category>
		<category><![CDATA[web2.0]]></category>

		<guid isPermaLink="false">http://scipion.es/?p=354</guid>
		<description><![CDATA[Que el mundial está creando mucha expectación, eso ya lo sabe todo el mundo, pero lo curioso de la situación en el mundo de la web 2.0 (o al menos particularmente en Meneame.net) es la velocidad a la que se publican los resultados de los partidos.
Aprovechando esa expectación es posible llevar a portada en poco más de media [...]]]></description>
			<content:encoded><![CDATA[<p>Que el mundial está creando mucha expectación, eso ya lo sabe todo el mundo, pero lo curioso de la situación en el mundo de la web 2.0 (o al menos particularmente en Meneame.net) es la velocidad a la que se publican los resultados de los partidos.</p>
<p>Aprovechando esa expectación es posible llevar a portada en poco más de media hora la noticia del resultado de cualquier partido(si el resultado es de España aun menos).</p>
<p><img class="alignleft" src="http://farm5.static.flickr.com/4122/4748273863_08c42467a6.jpg" alt="" width="267" height="128" /></p>
<p>Eso si, tienes que estar pendiente no la envíe nadie antes que tú. Me imagino a un puñado de usuarios pendientes de que acabe el partido y pulsando a F5 en las webs de <em>marca</em>, <em>as </em>o <em>el mundo deportivo</em> para enviar la noticia.</p>
<p>Que si los árbitros, que si Sara Carbonero o que si el balon es de playa, pero lo que tira de verdad son los resultados, y los de España (o la roja como le llama ya todo el mundo) tiran aun más:</p>
<p><em>España a cuartos 1-0: 3200 meneos</em></p>
<p><em>420 comentarios</em></p>
<p>y lo mejor de todo:</p>
<p><em>hace 16 horas 9 minutos, publicado hace 16 horas 7 minutos</em></p>
<p>¿Publicado <strong>en 2 minutos</strong>? Pues sí. Si miramos otros resultados de la selección que se publican nada más enviar la noticia vemos que la media ronda los 3 minutos. Y lo mejor es que si perdemos tampoco pasa nada porque la derrota ante Suiza también salió a portada en poco más de diez minutillos.</p>
<p><a href="http://www.meneame.net/story/espana-a-cuartos-1">http://www.meneame.net/story/espana-a-cuartos-1</a></p>
<p><a href="http://www.meneame.net/story/espana-gana-a-chile-1-2">http://www.meneame.net/story/espana-gana-a-chile-1-2</a></p>
<p><a href="http://www.meneame.net/story/espana-gana-a-honduras-2">http://www.meneame.net/story/espana-gana-a-honduras-2</a></p>
<p><a href="http://www.meneame.net/story/espana-pierde-primer-partido-mundial-1-ante-suiza">http://www.meneame.net/story/espana-pierde-primer-partido-mundial-1-ante-suiza</a></p>
<p>Así que ya sabes, si tienes espíritu de karmawhore lo que tienes que hacer es &#8220;hacer cola&#8221; en una web deportiva en el próximo partido del mundial, y lanzarlo a la lista de pendientes enseguida. Si a demás lo twitteas y lo pones en tu facebook para que lo voten tus &#8220;amigos&#8221; mejor que mejor.</p>
<p>Actualización:</p>
<p>holanda &#8211; brasil</p>
<p><a href="http://www.meneame.net/story/holanda-2-1-brasil-holanda-pasa-semifinales-holanda-eliminada">http://www.meneame.net/story/holanda-2-1-brasil-holanda-pasa-semifinales-holanda-eliminada</a></p>
<p><em>Publicado en 5 minutos y no habla de españa</em></p>
<p>uruguay &#8211; ghana</p>
<p><a href="http://www.meneame.net/story/uruguay-gana-penalties-ghana-clasifica-para-semifinales">http://www.meneame.net/story/uruguay-gana-penalties-ghana-clasifica-para-semifinales</a></p>
<p><em>publicado en 10 minutos</em></p>
]]></content:encoded>
			<wfw:commentRss>http://scipion.es/2010/06/gana-una-portada-en-meneame-con-el-mundial/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Estadísticas en JavaScript</title>
		<link>http://scipion.es/2010/06/estadisticas-en-javascript/</link>
		<comments>http://scipion.es/2010/06/estadisticas-en-javascript/#comments</comments>
		<pubDate>Sat, 05 Jun 2010 09:28:47 +0000</pubDate>
		<dc:creator>Scipion</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[estadisticas]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[web2.0]]></category>

		<guid isPermaLink="false">http://scipion.es/?p=337</guid>
		<description><![CDATA[Ya que hace tiempo que no escribo nada, voy a mostra una extensión de jQuery que hace maravillas  con gráficas para representar los datos indicados. La biblioteca es bastante útil para los que necesiten mostrar estadísticas en una web.
Aunque hace tiempo que existe, Highchars me ha sorprendido por la gran versatilidad que tiene. Gráficas de [...]]]></description>
			<content:encoded><![CDATA[<p>Ya que hace tiempo que no escribo nada, voy a mostra una extensión de jQuery que hace maravillas  con gráficas para representar los datos indicados. La biblioteca es bastante útil para los que necesiten mostrar estadísticas en una web.</p>
<p>Aunque hace tiempo que existe, Highchars me ha sorprendido por la gran versatilidad que tiene. Gráficas de barras, de rectas, acumulados etc y varias posibilidades de diseño para cada tipo.</p>
<p><img class="aligncenter" title="Estadisticas JavaScript" src="http://farm5.static.flickr.com/4024/4671410704_49170844de.jpg" alt="" width="500" height="305" /></p>
<p>Usarla es igual de fácil que cualquier extensión de jQuery con la única diferencia que hay que indicar los datos a representar:</p>
<pre>var chart1; // globally available
$(document).ready(function() {
      chart1 = new Highcharts.Chart({
         chart: {
            renderTo: 'chart-container-1',
            defaultSeriesType: 'bar'
         },
         title: {
            text: 'Fruit Consumption'
         },
         xAxis: {
            categories: ['Apples', 'Bananas', 'Oranges']
         },
         yAxis: {
            title: {
               text: 'Fruit eaten'
            }
         },
         series: [{
            name: 'Jane',
            data: [1, 0, 4]
         }, {
            name: 'John',
            data: [5, 7, 3]
         }]
      });
   });</pre>
<p>En la variable <em>series </em>es donde se encuentran los datos indicados, ahí cada campo <em>data </em>es un vector con toda la información a representar. Pero de todas formas ellos <a href="http://www.highcharts.com/documentation/how-to-use" target="_blank">explican bien</a> como se debe de usar la biblioteca. Si tienes ya experiencia con jQuery no te resultará dificil para nada. La biblioteca completa la podeis descargar <a href="http://www.highcharts.com/download" target="_blank">aquí</a> de la página oficial.</p>
<p>Algunos gráficos vinenen preparados para introducir movimiento en la representación, los llaman <em>dinamic chars</em>. Vienen al pelo para trabajar con ajax y descargar datos de la web periodicamente sin necesidad de recargar la página.</p>
<p>Así que parece que se lo han montado bastante bien los chicos de HighChars.</p>
]]></content:encoded>
			<wfw:commentRss>http://scipion.es/2010/06/estadisticas-en-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Función Random</title>
		<link>http://scipion.es/2010/04/funcion-random/</link>
		<comments>http://scipion.es/2010/04/funcion-random/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 16:08:09 +0000</pubDate>
		<dc:creator>Scipion</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[caos]]></category>
		<category><![CDATA[random]]></category>

		<guid isPermaLink="false">http://scipion.es/?p=321</guid>
		<description><![CDATA[En todos los lenguajes de programación modernos existe una manera de generar numeros aleatorios. Esta funcionalidad es necesaria en informática, y por lo tanto para todas las areas en las que influye.
La aleatoriedad se utiliza en teoría de juegos, criptografía, estadística, simulaciones y en general para cualquier fín en el que se desea un resultado [...]]]></description>
			<content:encoded><![CDATA[<p>En todos los lenguajes de programación modernos existe una manera de generar numeros aleatorios. Esta funcionalidad es necesaria en informática, y por lo tanto para todas las areas en las que influye.<br />
La aleatoriedad se utiliza en teoría de juegos, criptografía, estadística, simulaciones y en general para cualquier fín en el que se desea un resultado no predecible. Esto no quiere decir no acotado.</p>
<p>En realidad los numeros aleatorios no son tal. Simplemente son series de numeros muy largas y complejas (o simplemente sin sentido) por lo que no se hace posible predecir el siguiente numero de la serie, por eso también se pueden encontrar llamados como pseudo-aleatorios.</p>
<p>Hace un tiempo ví que se comentaba el fallo en la funcion random en PHP en windows. El problema venía de la posible precibilidad de la función, por lo que la convertía en inútil. <a href="http://www.random.org/analysis/" target="_blank">Aquí</a> podeis encontrar el ejemplo que comento y como se acabó solucionando.</p>
<p>Con un sencillo programa en Java podemos comprobar que este lenguaje no sufre esa deficiencia.</p>
<div class="wp-caption aligncenter" style="width: 360px"><img title="Función Random en Java" src="http://farm4.static.flickr.com/3050/4558167392_810e167c4d.jpg" alt="Función Random en Java" width="350" height="350" /><p class="wp-caption-text">Función Random en Java</p></div>
<p>Incluso Podemos hacerlo algo más artístico y generar colores aleatoriamente:</p>
<p><img class="aligncenter" src="http://farm4.static.flickr.com/3628/4557536461_ae8f8e2b94.jpg" alt="" width="350" height="350" /></p>
<p>Si quereis probar a generar puntos aleatorios aquí está el código:</p>
<pre>import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage;
import java.io.File;
import java.util.Random;
import javax.imageio.ImageIO;

public class RandomImage {
	public static void main(String args[]){

		Random r=new Random();
		int num=r.nextInt();

		int x=350;
		int y=350;

		BufferedImage bi = new BufferedImage(x,y,BufferedImage.TYPE_INT_RGB);

		for(int i=0; i&amp;ltx; i++){
			for(int j=0; j&amp;lty; j++){
				num=Math.abs(r.nextInt()%2);
				if(num==1){
					bi.setRGB(i, j, 0xFFFFFF);
				}
				else{
					bi.setRGB(i, j, 0x000000);
				}
			}
		}

		try{
			ImageIO.write((RenderedImage)bi,"png", new File("randomJava.png"));
		}
		catch(Exception e1){}

	}
}</pre>
<p>En general los métodos de generación de numeros pseudoaleatorios tanto en Java como en .Net se aunto inician con la hora del sistema. La hora en milisegundos se utiliza como semilla. Es una forma de escojer una posición inicial en la serie de numeros preexistiente. Es por esto que no hay que instanciar un objeto &#8216;Random&#8217; cada vez que queramos un numero aleatorio, porque si se instancian dos objetos en el mismo milisegundo (cosa más posible de lo que parece a primera vista) las dos llamadas generarían el mismo numero.<br />
Es por esto que exísten los metodos nextInt(), nextDouble() y en general nextCualquierCosa para generar el siguiente numero aleatorio en el formato deseado.</p>
]]></content:encoded>
			<wfw:commentRss>http://scipion.es/2010/04/funcion-random/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>about Firefox</title>
		<link>http://scipion.es/2010/03/about-firefox/</link>
		<comments>http://scipion.es/2010/03/about-firefox/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 16:34:44 +0000</pubDate>
		<dc:creator>Scipion</dc:creator>
				<category><![CDATA[Navegadores]]></category>
		<category><![CDATA[about]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[mozilla]]></category>

		<guid isPermaLink="false">http://scipion.es/?p=279</guid>
		<description><![CDATA[Las llamadas páginas &#8216;about:&#8217; son aquellas que añaden funcionalidades extra al navegador. No son para nada un estandar y cada navegador hace con ellas lo que quiere.
Mozilla Firefox las utiliza ampliamente aunque para la mayoria de la gente pasan totalmente desapercibidas.
Son herramientas muy sencillas pero con utilidad. Incluso hay algun addons de Firefox que utilizan [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://farm1.static.flickr.com/83/262875283_ca33f09edd_m.jpg" alt="" width="240" height="232" />Las llamadas páginas &#8216;about:&#8217; son aquellas que añaden funcionalidades extra al navegador. No son para nada un estandar y cada navegador hace con ellas lo que quiere.</p>
<p>Mozilla Firefox las utiliza ampliamente aunque para la mayoria de la gente pasan totalmente desapercibidas.</p>
<p>Son herramientas muy sencillas pero con utilidad. Incluso hay algun addons de Firefox que utilizan la nomenclatura &#8216;about:x&#8217; para seguir esta filosofia.</p>
<p><strong>about:plugins</strong></p>
<p>Lista todos los plugins instalados, una breve descripción y si están activos o no.</p>
<p><strong>about:cache</strong></p>
<p>Muestra la memoria que está ocupando la caché y tienes tres sub secciones:</p>
<p>about:cache?device=memory</p>
<p>about:cache?device=disk</p>
<p>about:cache?device=offline</p>
<p>Entrando en cada una de ellas te muestra con detalle donde estan almacenados los archivos de caché, cuanto ocupan, la última modificación, cuando expiran etc.</p>
<p><strong>about:sessionrestore</strong></p>
<p>Incluso si te acabas de cargar la sesion anterior por equivocacion puedes volver a restaurarla durante la sesion actual. En caso de que la hayas descartado e iniciado una nueva, escribes este comando en la barra de direcciones y te ofrece la opcion de restaurar la sesion antigua selecionando las ventanas y pestañas a restaurar.</p>
<p>Cuando el navegador se cierra de manera inesperada y más tarde se vuelve a ejecutar, es esta página la que aparece como inicio por seguridad.</p>
<p><strong>about:blank</strong> página en blanco</p>
<p><strong>about:mozilla</strong></p>
<p>Esto es lo que se llama un &#8220;huevo de pascua&#8221; una pequeña broma que meten desde mozilla y muestra lo siguiente:</p>
<blockquote><p>Mammon se durmió. Y la bestia renació, propagándose por toda la Tierra, y sus seguidores fueron legión. Y proclamaron los nuevos tiempos y sacrificaron cosechas con fuego, con la astucia de los zorros. Y construyeron un nuevo mundo a su propia imagen como prometían las palabras sagradas, y la palabra<br />
de la bestia y sus crías. Mammon se despertó, y súbitamente no era más que un rezagado.</p>
<p>de El Libro de Mozilla, 11:9<br />
(10ª edición)</p></blockquote>
<p>Esto es así en la version 3.6, para más versiones teneis el <a href="http://www.mozilla.org/book/" target="_blank">libro de mozilla</a> o varias versiones en la <a href="http://es.wikipedia.org/wiki/El_libro_de_Mozilla" target="_blank">wikipedia</a>. Humor ante todo.</p>
<p><strong>about:config</strong></p>
<p>Para trabajar con la configuración como su nombre indica. Te advierte de que tengas cuidado.</p>
<p><strong>about:robots</strong></p>
<p>Otro &#8220;huevo de pascua&#8221; mezca de la cultura de ciencia ficción y chorradas en general que se ve que les gusta a los chicos de mozilla. Solo que este es especifico de firefox y no aparece en otro software de mozilla:</p>
<blockquote><p>¡Bienvenidos humanos!</p>
<p>¡Venimos a visitaros en son de paz y con buena voluntad!</p>
<p>*             Un robot no debe dañar a un ser humano o, por su inacción, dejar que un ser humano sufra daño.</p>
<p>*             Los robots han visto cosas que vosotros no creeríais.</p>
<p>*             Los robots son sus amigos de plástico con quien les gustará estar.</p>
<p>*             Los robots tienen brillantes culos metálicos que no deben ser chupados.</p>
<p>&#8230;Y tienen un plan.</p></blockquote>
<p>Otros navegadores tambien incorporan este sistema com el Chrome, Exporer, Konqueror y Opera como tambien lo hacen Flock, Epifany y SeaMonkey, este último al ser un fork de Firefox incorpora exactamente los mismos. Netescape ya incluia las paginas &#8216;about:&#8217; en icluso tenia muchos más &#8220;huevos de pascua&#8221;.<br />
En el caso de Safari las paginas about no existen, aunque no por ello deja de implementar funcionalidades extra de otro modo.</p>
]]></content:encoded>
			<wfw:commentRss>http://scipion.es/2010/03/about-firefox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Closures en JavaScript. Patrón Modulo</title>
		<link>http://scipion.es/2010/03/closures-en-javascript-patron-modulo/</link>
		<comments>http://scipion.es/2010/03/closures-en-javascript-patron-modulo/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 18:15:15 +0000</pubDate>
		<dc:creator>Scipion</dc:creator>
				<category><![CDATA[Ingenieria del software]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[closure]]></category>
		<category><![CDATA[function]]></category>
		<category><![CDATA[modulo]]></category>
		<category><![CDATA[patron]]></category>
		<category><![CDATA[var]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://scipion.es/?p=263</guid>
		<description><![CDATA[Si hace un tiemplo comentaba que en JavaScript el patrón singleton es implícito, voy a revisar otro patrón que sirve para modularizar nuestro código. Las clausuras de JavaScript o Closure es algo que tiene que conocer cualquiera que se dedique en profundidad a este lenguaje.
Closures
Una closure es en definitiva un objeto que es definido e [...]]]></description>
			<content:encoded><![CDATA[<p>Si hace un tiemplo comentaba que en JavaScript el <a href="http://scipion.es/2010/03/patron-singleton-implicito-en-javascript/" target="_blank">patrón singleton</a> es implícito, voy a revisar otro patrón que sirve para modularizar nuestro código. Las clausuras de JavaScript o Closure es algo que tiene que conocer cualquiera que se dedique en profundidad a este lenguaje.</p>
<p><strong>Closures</strong><br />
Una closure es en definitiva un objeto que es definido e instanciado en el momento de su declaración. Así hay que tener en cuenta que esta metodología cumple el patron modulo, al declarar el módulo, y el singleton, ya que no permite reinstanciaciones del mismo objeto porque se declara y se ejecuta.</p>
<pre>var clos = (function(){

	var vprivada=999; // solo accesible desde esta closure

	function fprivada(param){
		vprivada=param;
	}

	var prop={};
	prop.funcion=function(){
		document.write("123456789");
	}
	prop.variable=119;

	return prop;

}());</pre>
<p>Como la función es ejecutada al mismo tiempo que es declarada es necesario devolver el objeto que se genera dentro de ella. Si no asignamos la función a nada la closure es anónima, pero no deja de ejecutarse por ello.</p>
<p><strong>Aumentar la closure</strong><br />
Para ampliar las propiedades de nuestro objeto podemos escribir otra closure y asignársela, el problema es que si lo hacemos sin más perdemos las propiedades anteriores, por eso debemos pasarle por parámetro todo el código anterior, es decir, la misma closure.</p>
<pre>var clos=(function(prop2){

	prop2.funcion2=function(){
		document.write("999888777");
	}
	prop2.variable2=219;

	return prop2;
}(clos));</pre>
<p>En caso de que no exista podemos crear una nueva closure al vuelo para evitar los errores de ejecución.</p>
<pre>var clos=(function(prop){

	...

	return prop;
}( clos|| {} ));</pre>
<p>De esta manera podemos distribuir nuestro código entre distintos archivos en caso de que fuese necesario. En una página donde tengamos implementadas pocas funcionalidades esto no es necesario, pero cuando va creciendo la cantidad de cosas que queremos hacer con JavaScript, modularizar el código de esta manera resulta bastante útil.</p>
<p>También es importante saber que podemos extender nuestra closure con otras para hacerla más rica. Así incorporando librerías de terceros (como jQuery) podemos personalizar el producto a nuestras necesidades. Esto podria considerarse un tipo de herencia implicita, para ver la herencia explicita <a href="http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth" target="_blank">aquí</a>.</p>
<p>Ya he visto que en ciertos perfiles laborales se indica explícitamente el conocimiento de closures. Cuando estamos programando en paralelo con un compañero de trabajo y se dividen las funcionalidades a programar, debe de hacerse con aumentos de closures, que hace fácil unificar el código y también puede permitir acotar a la hora de buscar fallos.</p>
]]></content:encoded>
			<wfw:commentRss>http://scipion.es/2010/03/closures-en-javascript-patron-modulo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>000 Ipads</title>
		<link>http://scipion.es/2010/03/000-ipads/</link>
		<comments>http://scipion.es/2010/03/000-ipads/#comments</comments>
		<pubDate>Sat, 13 Mar 2010 18:59:41 +0000</pubDate>
		<dc:creator>Scipion</dc:creator>
				<category><![CDATA[Digresion]]></category>
		<category><![CDATA[metaBlog]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[Tiempo Real]]></category>
		<category><![CDATA[trends]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[web2.0]]></category>

		<guid isPermaLink="false">http://scipion.es/?p=248</guid>
		<description><![CDATA[000 Ipads es el Trending del día (en Irlanda) en twitter. Por lo visto esta extraña cifra de cero iPads viene a cuenta de que a salido a la venta y está triunfando.
Desde mashable apuntan que son 90.000 y en el apartado de tecnología de la CNN dicen que son 120.000 vendidos el primer día [...]]]></description>
			<content:encoded><![CDATA[<p>000 Ipads es el Trending del día (en Irlanda) en <a href="http://search.twitter.com/search?q=000+Ipads" target="_blank">twitter</a>. Por lo visto esta extraña cifra de cero iPads viene a cuenta de que a salido a la venta y está triunfando.</p>
<p>Desde <a href="http://mashable.com/2010/03/12/ipad-preorder-numbers/" target="_blank">mashable</a> apuntan que son 90.000 y en el apartado de tecnología de la CNN dicen que son <a href="http://brainstormtech.blogs.fortune.cnn.com/2010/03/13/day-1-estimate-120000-ipads-sold/" target="_blank">120.000 vendidos</a> el primer día de los cuales <a href="http://brainstormtech.blogs.fortune.cnn.com/2010/03/12/apple-sells-50000-ipads-in-two-hours/" target="_blank">50.000 en las primeras 2 horas</a>.</p>
<p style="text-align: center;"><img class="aligncenter" title="iPad" src="http://farm5.static.flickr.com/4060/4309759389_0e323117f7.jpg" alt="" width="289" height="350" /></p>
<p>Queda bastante claro que esta tableta pseudo-inutil causa estragos. Los fanboys de apple rondan por doquier y mantienen a su venerada empresa con las acciones bien altas.</p>
<p>Por lo visto los chicos de twitter tienen bastante en cuenta los singnos de puntuación a la hora de tomar los Trends. Cómo se suele puntuar en los números de más de 3 cifras (a veces con comas), los trends se han hecho un lio.</p>
<p>El algoritmo que hace hash a las palabras que aparecen en un twitt lo más probable es que lo realice de más de una palabra, ya que en ocasiones aparecen treads de incuso 4 conceptos, así no es raro pensar que realiza hash de todas las frases separadas por signos de puntuación, motivo por el que aparece este &#8220;fallo&#8221; en los temas de irlanda.</p>
<p style="text-align: center;"><img class="aligncenter" title="Twitter" src="http://farm5.static.flickr.com/4044/4429300343_40e76b39a3.jpg" alt="" width="400" height="300" /></p>
<p>No es de extrañar que con toda esta plataforma detrás de un servicio, aunque parezca tan sencillo, tiene un volumen de mensajes que <a href="http://blog.twitter.com/2010/02/measuring-tweets.html" target="_blank">supera los 40 millones</a> diarios. Es normal que procesando, almacenando y buscando entre toda esta inmensa maraña de mensajes de 140 caracteres Twitter tenga cada vez más caídas de servicio, aunque aun no son muchas, ya se dejan notar.</p>
]]></content:encoded>
			<wfw:commentRss>http://scipion.es/2010/03/000-ipads/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Patrón Singleton implícito en JavaScript</title>
		<link>http://scipion.es/2010/03/patron-singleton-implicito-en-javascript/</link>
		<comments>http://scipion.es/2010/03/patron-singleton-implicito-en-javascript/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 19:02:56 +0000</pubDate>
		<dc:creator>Scipion</dc:creator>
				<category><![CDATA[Ingenieria del software]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[patron]]></category>
		<category><![CDATA[singleton]]></category>

		<guid isPermaLink="false">http://scipion.es/?p=223</guid>
		<description><![CDATA[Uno de los tantos patrones arquitectónicos en ingeniería del software es el llamado Singleton. No voy a explicar el patrón singleton por completo, simplemente decír que como idea principal se define una clase de la que solo existirá una instancia.
Por lo tanto en una clase qu cumpla con el singleton se define el método getInstancia() [...]]]></description>
			<content:encoded><![CDATA[<p>Uno de los tantos <a href="http://es.wikipedia.org/wiki/Patr%C3%B3n_de_dise%C3%B1o" target="_blank">patrones arquitectónicos</a> en ingeniería del software es el llamado <em>Singleton</em>. No voy a explicar el patrón singleton por completo, simplemente decír que como idea principal se define una clase de la que solo existirá una instancia.</p>
<p><img class="aligncenter" src="http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Singleton_UML_class_diagram.svg/250px-Singleton_UML_class_diagram.svg.png" alt="" width="250" height="150" />Por lo tanto en una clase qu cumpla con el singleton se define el método <em>getInstancia()</em> que solo se ocupa de devolver la única instancia existente. Así que el constructor no se ejecuta siempre, solamente invoca cuando no existe ninguna instancia. Cuando si la hay se devuelve la referencia a ella. Así de sencillo.</p>
<p>Y esto se implementa así en cualquier lenguaje orientado a objetos. De hecho incluso en JavaScript se puede implementar una clase con estas caracteristicas, el unico problema es que en JavaScript no hay métodos privados y siempre podría hacer un <em>new miClase()</em> y me devolveria una instancia nueva.</p>
<p>Pues bien, hay una caracteristica en JavaScript que me hace pensar que esto se puede hacer sin ningun problema, solo por las caracteristicas del propio lenguaje, ya que <a href="http://scipion.es/2009/12/sintaxis-javascript-var-function/" target="_blank">una funcion es una funcion y una variable también puede serlo</a> etc. y jugando con esto podemos definir una clase que compla el partrón implicitamente y otra que no.</p>
<h2>Definir el objeto</h2>
<p>Objeto que no cumple el patrón singleton:</p>
<pre>function objetoNoSingleton(){
   this.cadena = "cadena de texto";
   this.metodo = function(){
      alert(cadena);
   }
}</pre>
<p>Objeto que cumple el patrón singleton:</p>
<pre>var objetoSingleton = {
   cadena : "cadena de texto",
   metodo : function() {
      alert(cadena);
   }
}</pre>
<p>Este objeto singleton es una variable y un objeto, pero es un objeto de clase irreproducible, de hecho al ejecutar <em>new objetoSingleton()</em> la instrucción falla.</p>
<h2>Añadiendo funcionalidades</h2>
<p>Existen diferencias de sintaxis debido al lenguaje. De hecho si queremos utilizar la propiedad prototype (no la libreria) para añadir métodos o variables a los objetos también existen diferencias.<br />
Objeto que no cumple el patrón singleton:</p>
<pre>objetoNoSingleton.prototype.valor2 = "valor dos";
objetoNoSingleton.prototype.metodo2 = function(){
   alert(valor2);
}</pre>
<p>Para ser ejecutado necesitamos una instancia ya que estamos añadiendo funcionalidades a una clase no a un objeto en particular:</p>
<pre>var instanciaNoSingleton = new objetoNoSingleton();
instanciaNoSingleton.metodo2();</pre>
<p>Objeto que cumple el patrón singleton no hay que usar <em>prototype</em>. Crear un nuevo elemento en el objeto es simplemente nombrarlo y asignarle valor porque ya es una instancia.</p>
<pre>objetoSingleton.valor2 = "valor dos";
objetoSingleton.metodo2 = function(){
   alert(valor2);
}

objetoSingleton.metodo2();</pre>
<p>Con un objeto único se elimina el método getInstancia() típico del patrón Singleton, pero en si también desaparece la función new, por lo que en realidad el objeto a usar va a ser siempre la misma instancia.</p>
]]></content:encoded>
			<wfw:commentRss>http://scipion.es/2010/03/patron-singleton-implicito-en-javascript/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>UP y desarrollo ágil. Estragegia para triunfar en un proyecto</title>
		<link>http://scipion.es/2010/02/up-y-desarrollo-agil-estragegia-para-triunfar-en-un-proyecto/</link>
		<comments>http://scipion.es/2010/02/up-y-desarrollo-agil-estragegia-para-triunfar-en-un-proyecto/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 11:27:10 +0000</pubDate>
		<dc:creator>Scipion</dc:creator>
				<category><![CDATA[Ingenieria del software]]></category>
		<category><![CDATA[desarrollo agil]]></category>
		<category><![CDATA[Proceso Unificado]]></category>
		<category><![CDATA[RUP]]></category>
		<category><![CDATA[UP]]></category>

		<guid isPermaLink="false">http://scipion.es/?p=167</guid>
		<description><![CDATA[Las metodoligías ágiles, en lo que a modelos de proceso se refiere no son ya algo nuevo, pero puede que sí lo sea su uso. Como en general todo lo que se decidió usar a raíz de la crisis del software, hace más de 20 años, es en la actualidad cuando la industria del software [...]]]></description>
			<content:encoded><![CDATA[<p>Las metodoligías ágiles, en lo que a modelos de proceso se refiere no son ya algo nuevo, pero puede que sí lo sea su uso. Como en general todo lo que se decidió usar a raíz de la crisis del software, hace más de 20 años, es en la actualidad cuando la industria del software se va dando cuenta que es útil.</p>
<p>El proceso unificado (UP) combina buenas prácticas comunmente aceptadas, un ciclo de vida iterativo y desarrollo dirigido por los riesgos (risk-driven), esto es, los riesgos son abordados para ser solucionados cuanto antes. Se considera un riesgo aquellas partes en las que las decisiones a tomar son criticas.</p>
<div class="wp-caption aligncenter" style="width: 455px"><img title="UP" src="http://upload.wikimedia.org/wikipedia/commons/4/4d/Rup_espanol.gif" alt="Etapas del UP" width="445" height="351" /><p class="wp-caption-text">Etapas del UP</p></div>
<p>El proyecto software será dividido en iteraciones. Las iteraciones se pueden considerar unidades de desarrollo. Cada una es un miniproyecto. En la literatura (<a href="  http://www.craiglarman.com/wiki/downloads/applying_uml/larman-ch2-applying-agile-iterative- evolutionary.pdf" target="_blank">larman.pdf</a>) al respecto del modelo UP (o RUP en ocasiones por Rational UP) se puede encontrar como consejo a la duracion de una iteración entre 2 y 6 semanas. Y a demas las iteraciones seran de duración fija, así que si en una iteración tenemos demasiado trabajo es momento de no dormir, y <strong>planificar menos tareas</strong> para la proxima iteración.</p>
<p>El resultado de una itración es un sistema ejecutable pero incompleto, <strong>NO un prototipo</strong>, el desarrollo iterativo no es prototipado. Lo que se tendrá es un subconjutno del sistema final.</p>
<p>Pero lo que caracteriza realmente los modelos ágiles es la relacion con el cliente. El cliente siempre que se le entrege algo lo probará y dira:  &#8220;sí, es lo que yo queria &#8230; pero&#8221;. Las continuas entregas y rectificaciones del cliente nos ayuda a adaptar el producto a las necesidades de quien nos contrata para desarrollarlo.</p>
<p>Así cada ciclo de desarrollo se convierte en un proceso de:</p>
<p>Construcción-Retroalimentación-Adaptación</p>
<p>Entregarle al cliente lo que él quiere y no lo que pensó sin mucha idea cuando firmó el contrato es lo que hace que los proyectos concluyan satisfactoriamente. Dentro de los <a href="http://www.agilemanifesto.org/" target="_blank">modelos ágiles</a> hay muchas variantes, el UP es una de ellas que da buenos resultados.</p>
]]></content:encoded>
			<wfw:commentRss>http://scipion.es/2010/02/up-y-desarrollo-agil-estragegia-para-triunfar-en-un-proyecto/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Validar formularios en JavaScript</title>
		<link>http://scipion.es/2010/02/validar-formularios-en-javascript/</link>
		<comments>http://scipion.es/2010/02/validar-formularios-en-javascript/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 17:55:07 +0000</pubDate>
		<dc:creator>Scipion</dc:creator>
				<category><![CDATA[Aplicacion web]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[formularios]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[validar]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://scipion.es/?p=174</guid>
		<description><![CDATA[En toda aplicación web de hoy en día no pasa sin que el usuario meta la pata, aunque sea de forma premeditada, por eso los fromularios hay que comprobar que no nos la cuelan. Validar los datos hay algo que siempre hay que hacer en el lado del servidor, pero le podemos dar agilidad a [...]]]></description>
			<content:encoded><![CDATA[<p>En toda aplicación web de hoy en día no pasa sin que el usuario meta la pata, aunque sea de forma premeditada, por eso los fromularios hay que comprobar que no nos la cuelan. Validar los datos hay algo que <strong>siempre </strong>hay que hacer en el lado del servidor, pero le podemos dar agilidad a la web si antes de mandar el formulario lo verificamos en el lado del cliente.</p>
<p><img class="aligncenter" src="http://farm5.static.flickr.com/4061/4370979886_a729c6248d.jpg" alt="" width="500" height="313" /></p>
<p>Esto para nada es un problema nuevo, y ya se ha intentado solucionar de muchas maneras en JavaScript. Algunas de las librerias(bibliotecas) son especificas para validación, otras son usos especificos de otras más genericas. En cualquier caso si quieres ponerte a escribir tus funciones JS que validen los formularios que sepas que estas Reinventando la Rueda, porque ya se ha hecho unas cuantas veces:</p>
<p>Ketchup basado en JQuery:</p>
<p><a href="http://demos.usejquery.com/ketchup-plugin/" target="_blank">http://demos.usejquery.com/ketchup-plugin/</a></p>
<p>Vanadium:</p>
<p><a href="http://vanadiumjs.com/" target="_blank">http://vanadiumjs.com/</a></p>
<p>JQuery:</p>
<p><a href="http://bassistance.de/jquery-plugins/jquery-plugin-validation/" target="_blank">http://bassistance.de/jquery-plugins/jquery-plugin-validation/</a> (<a href="http://jquery.bassistance.de/validate/demo/" target="_blank">demo</a>)</p>
<p>Validation con Prototype:</p>
<p><a href="http://tetlaw.id.au/view/javascript/really-easy-field-validation" target="_blank">http://tetlaw.id.au/view/javascript/really-easy-field-validation</a> (<a href="http://tetlaw.id.au/upload/pages/really-easy-field-validation/" target="_blank">demo</a>)</p>
<p>MooTools:</p>
<p><a href="http://mootools.floor.ch/en/demos/formcheck/" target="_blank">http://mootools.floor.ch/en/demos/formcheck/</a> (<a href="http://mootools.floor.ch/en/labs/formcheck/forum-registration/" target="_blank">demo</a>)</p>
<p>JsVal:</p>
<p><a href="http://jsval.fantastic-bits.de/" target="_blank">http://jsval.fantastic-bits.de/</a></p>
<p>Validanguage:</p>
<p><a href="http://www.drlongghost.com/validanguage.php" target="_blank">http://www.drlongghost.com/validanguage.php</a> (<a href="http://www.drlongghost.com/validanguage/demos" target="_blank">demo</a>)</p>
<p>Django (basado en Google App Engine):</p>
<p><a href="http://code.google.com/appengine/articles/djangoforms.html" target="_blank">http://code.google.com/appengine/articles/djangoforms.html</a></p>
<p>LiveValidation:</p>
<p><a href="http://livevalidation.com/" target="_blank">http://livevalidation.com/</a> (<a href="http://livevalidation.com/examples" target="_blank">demo/ejemplos</a>)</p>
<p>wForms:</p>
<p><a href="http://www.formassembly.com/wForms/" target="_blank">http://www.formassembly.com/wForms/</a> (<a href="http://www.formassembly.com/wForms/tutorials/custom_validation.php" target="_blank">demo</a>)</p>
<p>Yav (última versión del 2008):</p>
<p><a href="http://yav.sourceforge.net/" target="_blank">http://yav.sourceforge.net/</a></p>
<p>JSValidate/JValidate:</p>
<p><a href="http://www.jsvalidate.com/" target="_blank">http://www.jsvalidate.com/</a> , <a href="http://www.jvalidate.com/" target="_blank">http://www.jvalidate.com/</a></p>
<p>fValidator:</p>
<p><a href="http://zendold.lojcomm.com.br/fvalidator/" target="_blank">http://zendold.lojcomm.com.br/fvalidator/</a></p>
<p>qForms (últmia versión del 2007):</p>
<p><a href="http://www.pengoworks.com/index.cfm?action=get:qforms" target="_blank">http://www.pengoworks.com/index.cfm?action=get:qforms</a></p>
<p>Validatious:</p>
<p><a href="http://validatious.org/" target="_blank">http://validatious.org/</a></p>
<p>Si te quieres montar tu propia libreria puedes empezar con los <a title="w3schools" href="http://www.w3schools.com/js/js_form_validation.asp" target="_blank">ejemplos</a> propuestos en w3schools.</p>
<p>Libreria de validacion abandonada en 2004 <a href="http://chrysalis.sourceforge.net/javascript/" target="_blank">chrysalis</a>.</p>
<p>A parte de la validación el elemento visual es también algo que deja que desear bastante en los formularios. <a href="http://customformelements.net/" target="_blank">CustomFormElements</a> da un aspecto agradable a los formularios web, incluso se pueden parecer a aplicaciones de escritorio. Está disponible para usar con Mootools y JQuery.</p>
]]></content:encoded>
			<wfw:commentRss>http://scipion.es/2010/02/validar-formularios-en-javascript/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
