<?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-3768117653639066982</id><updated>2012-02-16T13:34:11.513+01:00</updated><category term='patrones de diseño'/><category term='wikipedia'/><category term='programación'/><category term='series tv'/><category term='sql'/><category term='futbol sala'/><category term='literatura'/><category term='dan simmons'/><category term='php'/><category term='in'/><category term='noticias'/><category term='chorradas'/><category term='pitinikys'/><category term='¿cultura?'/><category term='general'/><category term='ciencia ficción'/><category term='db2'/><category term='csi'/><title type='text'>El Blog del Galifate</title><subtitle type='html'>Pues no sé, cosas varias (java, internete, futbol sala, etc.)</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://galifate.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3768117653639066982/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://galifate.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Manuel</name><uri>http://www.blogger.com/profile/08998778448360154474</uri><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>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3768117653639066982.post-8935306265843254097</id><published>2007-03-13T16:21:00.000+01:00</published><updated>2008-12-10T12:51:23.967+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chorradas'/><category scheme='http://www.blogger.com/atom/ns#' term='noticias'/><category scheme='http://www.blogger.com/atom/ns#' term='general'/><title type='text'>Ojo con los perros policia, no te vayan a morder  tus mp3</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_X1AlDmp3auk/RfbMQ2mrZoI/AAAAAAAAABc/OYE1mYmFOUI/s1600-h/genImage.aspx.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_X1AlDmp3auk/RfbMQ2mrZoI/AAAAAAAAABc/OYE1mYmFOUI/s320/genImage.aspx.jpg" alt="" id="BLOGGER_PHOTO_ID_5041441422795564674" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pues eso, se ve que en Malasia tienen una nueva arma para luchar contra la piratería. Ni más ni menos que dos &lt;span style="font-weight: bold;"&gt;perros sabueso&lt;/span&gt; que meten sus hocicos en todas partes en busca de CDs y DVDs con contenido pirata (musiquilla y pelis). Se trata de dos labradores hembras de color negro que se llaman "Flo" y "Lucky", y te pueden pillar tus cds piratillas si te les arrimas a acariciarles el morro.&lt;br /&gt;Como podeis ver, se trata de lo último en tecnología, un par de chuchos que te pillan la carga de un avión y en diez minutos te pueden encontrar los cds piratas (así como mearse en tu maleta llena de camisetas de Custo Barcelona).&lt;br /&gt;&lt;br /&gt;Ojo, que esto es una noticia de &lt;a href="http://today.reuters.com/news/articlenews.aspx?type=technologyNews&amp;storyid=2007-03-13T140538Z_01_KLR293175_RTRUKOC_0_US-MALAYSIA-PIRACY.xml&amp;amp;src=rss"&gt;Reuters&lt;/a&gt;, no es ninguna "chorrada" (o si). Pues no que sale el ministro de comercio de allí y dice algo así como : &lt;span style="font-style: italic;"&gt;[...]la llegada de Lucky y Flo hará de Malasia el primer país del mundo de comprobar la capacidad de los perros para detectar discos ópticos escondidos[...]&lt;/span&gt;. Ya veo al resto de países subiéndose al carro del uso de chuchos para luchar contra la piratería.&lt;br /&gt;En un consejo de ministros de un país como, por ejemplo, España algunos ministros están currando en sus &lt;span style="font-style: italic;"&gt;business&lt;/span&gt; vitales pa la nación, es decir, jugando al remigio y fumando puracos reogados en Chivas... (nótese que se ha respetado la transcripción literal)&lt;br /&gt;- Oye pavo, ¿as visto lo del notas ese de Malasia?&lt;br /&gt;- ¿Lo que?&lt;br /&gt;- El compi de comercio de malasia, que ha sacao un par de perras que en lugar de buscar coca esnifan cds o al revés o algo asín.&lt;br /&gt;- Que s'ha pillao un par de prostitutas? Eso ya lo hacemos nostros desde hace años neng.&lt;br /&gt;- ¡Que no tronco! Un par de chuchos que arrebuscan entre maletas y tal y te pillan los cds piratas y tal.&lt;br /&gt;- ¡¡¡Wala!!! ¿Y funciona o que?&lt;br /&gt;- Pos se ve que sí.&lt;br /&gt;- Pos nene, podríamos meter en el próximo presupuesto lo mismo. Subimos unos milloncejos el presupuesto, que, por supuesto, irá a parar a nuestras buchacas, y usamos los perros de nuestros hijos.&lt;br /&gt;- No se..., los perracos de nuestros niños deben estar ya resfriados de tanto estar de noche en el parque con nuestros hijos. ¿Que harán siempre por las noches en el parque? Ahí, a oscuras.&lt;br /&gt;- Yo una vez oí algo de "mandanga" y "chiflis". Serán juegos. Pero siempre acaban llegando a casa con los dedos un poco quemaos, ¿que no?... Bueno, es igual, ¿lo hacemos o que?&lt;br /&gt;- Pos vale, más pa la saca. Asín, además no podrán decir que no estamos a la última en el tema.&lt;br /&gt;- Pos eso, ya tenemos otra lei. Bueno, dame 4 cartas y pasame la botella.&lt;br /&gt;&lt;br /&gt;Trilo rilo...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3768117653639066982-8935306265843254097?l=galifate.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galifate.blogspot.com/feeds/8935306265843254097/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3768117653639066982&amp;postID=8935306265843254097' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3768117653639066982/posts/default/8935306265843254097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3768117653639066982/posts/default/8935306265843254097'/><link rel='alternate' type='text/html' href='http://galifate.blogspot.com/2007/03/ojo-con-los-perros-policia-no-te-vayan.html' title='Ojo con los perros policia, no te vayan a morder  tus mp3'/><author><name>Manuel</name><uri>http://www.blogger.com/profile/08998778448360154474</uri><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_X1AlDmp3auk/RfbMQ2mrZoI/AAAAAAAAABc/OYE1mYmFOUI/s72-c/genImage.aspx.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3768117653639066982.post-855999841302810906</id><published>2007-03-05T15:43:00.000+01:00</published><updated>2007-03-05T15:43:29.890+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='patrones de diseño'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Introducción al patrón "peso mosca" con PHP 5</title><content type='html'>&lt;span class="txt"&gt;&lt;span class="contentpagetitle"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;Puesto que estoy un poco pez en esto del PHP, y no me vendría mal aprender puesto que en &lt;a href="http://www.smallsquid.com/"&gt;SmallSquid &lt;/a&gt;usamos esta tecnología, voy a colgar o traducir de vez en cuando algún artículo que vea por ahí sobre el tema. Éste, en concreto, lo he sacado de &lt;a href="http://www.devshed.com/c/a/PHP/Introducing-the-Flyweight-Pattern-with-PHP-5/"&gt;DevShed&lt;/a&gt;. Así que vamos allá.&lt;br /&gt;&lt;br /&gt;Antes de seguir, aviso a los que no quieren que le "rayen" con cosas densas. Pasad del rollo y mirar algún otro post o id directamente a los tentáculos del &lt;a href="http://www.smallsquid.com/"&gt;chipirón&lt;/a&gt;, que siempre hay cosas más interesantes que leer.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Introducción&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Entre la considerable variedad de patrones de diseño estructural que se pueden implementar con PHP 4 (y PHP 5), hay uno en particular que merece especial atención. Es de fácil aplicación en el contexto de una aplicación web dada, y ofrece una funcionalidad remarcable cuando se usa para prevenir la instanciación innecesaria de diferentes clases.&lt;br /&gt;&lt;br /&gt;Dejadme explicaros brevemente como funciona el patrón &lt;span style="font-weight: bold;"&gt;flyweight&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Esto os dará una mejor idea de cómo y cuando se puede usar.&lt;br /&gt;&lt;p nd="3"&gt;En pocas palabras, cuando se aplica el patrón "peso  mosca", es posible especificar programáticamente que una clase concreta va a tener sólo un número predeterminado de instancias, las cuales son compartidas dentro de la misma implementación. Este simple concepto presenta un beneficio inmediato: previene instanciaciones innecesarias de la clase en cuestión, lo que da un claro aumento del rendimiento en sistemas que deben trabajar con cargas pesadas.&lt;br /&gt;&lt;/p&gt;&lt;p nd="4"&gt;Ciertamente, si vuelves a leer la definición anterior, está claro que una clase "peso mosca" se puede considerar un método directo para mantener la creación de objetos cuidadosamente balanceada.&lt;br /&gt;&lt;/p&gt;&lt;p nd="5"&gt;Sin embargo, esta sesión no está limitada a presentar la aburrida teoría de cómo funciona este patrón. Tendrás la oportunidad de aprender y probar varios ejemplos prácticos relacionados con el  patrón, de modo que  puedes empezar a aplicarlo rápidamente en tus propias aplicaciones PHP.&lt;br /&gt;&lt;/p&gt;&lt;p nd="6"&gt;Una nota final antes de seguir: todos los ejemplos que verás aquí se harán con PHP5, pero pueden ser fácilmente modificables para trabajar con PHP4 también.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p nd="7"&gt;&lt;span class="txt"&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Definir una clase objetivo&lt;/span&gt;&lt;/span&gt;&lt;span class="txt"&gt;&lt;br /&gt;&lt;br /&gt;&lt;p nd="2"&gt;Para demostrar una implementación práctica de patrón de diseño "peso mosca" con PHP5, voy a empezar creando una clase objetivo. Esta clase será utilizada por un objeto flywight para mantener las instancias de esta clase limitadas a un número especificado.&lt;br /&gt;&lt;/p&gt;&lt;p nd="3"&gt;Como verás, cualquier intento de crear nuevas instancias de la clase dará como resultado la devolución, al código llamador, del mismo objeto. Ahora, ¿estás empezando a entender como funcionar el patrón? Seguro que sí.&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p nd="7"&gt;&lt;br /&gt;&lt;span class="txt"&gt;&lt;p nd="4"&gt;Habiendo explicado la lógica que planeo seguir en este caso, aquí está definición de la clase mencionada.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span nd="5" style=";font-family:Courier;font-size:85%;"  &gt;&lt;br /&gt;&lt;code&gt;// define 'TextInputBox' class&lt;br /&gt;class TextInputBox{&lt;br /&gt;private $name;&lt;br /&gt;private $size;&lt;br /&gt;private $maxlength;&lt;br /&gt;// assign default values for properties of input box&lt;br /&gt;public function __construct($name='default_name',$size=16,$maxlength=32){&lt;br /&gt;if(!preg_match("/[a-zA-Z]+/",$name)){&lt;br /&gt;throw new Exception('Invalid value for name property!');&lt;br /&gt;}&lt;br /&gt;if(!is_int($size)||$size&lt;0||$size&gt;32){&lt;br /&gt;throw new Exception('Invalid value for size property!');&lt;br /&gt;}&lt;br /&gt;if(!is_int($maxlength)||$maxlength&lt;16||$maxlength&gt;64){&lt;br /&gt;throw new Exception('Invalid value for maxlength property!');&lt;br /&gt;}&lt;br /&gt;$this-&gt;name=$name;&lt;br /&gt;$this-&gt;size=$size;&lt;br /&gt;$this-&gt;maxlength=$maxlength;&lt;br /&gt;}&lt;br /&gt;// get (X)HTML markup of input text box&lt;br /&gt;public function getHTML(){&lt;br /&gt;return '&lt; type="text" name=""&gt;name.'"&lt;br /&gt;size="'.$this-&gt;size.'" maxlength="'.$this-&gt;maxlength.'" /&gt;';&lt;br /&gt;}&lt;br /&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p nd="7"&gt;&lt;span&gt;Como puedes ver, la definición de la clase "TextInputBox" es muy fácil de entender. En pocas palabras, lo que hace esta clase es mostrar una simple caja de texto, que es útil para hacer formularios online.&lt;br /&gt;&lt;p nd="31"&gt;Ahora que has visto la definición de la anterior clase objetivo, vamos a crear otra. Esta nueva clase será para mostrar un botón de envío normal y corriente, de modo que sea posible construir un formulario de contacto simple programáticamente.&lt;br /&gt;&lt;/p&gt;&lt;p nd="32"&gt;La definición de esta nueva clase se puede ver a continuación, así que presta atención:&lt;/p&gt;&lt;br /&gt;&lt;code&gt;// define 'SubmitButton' class&lt;br /&gt;class SubmitButton{&lt;br /&gt;private $name;&lt;br /&gt;private $value;&lt;br /&gt;public function __construct($name='default_name',$value='SendData'){&lt;br /&gt;if(!preg_match("/[a-zA-Z]+/",$name)){&lt;br /&gt;throw new Exception('Invalid value for name property!');&lt;br /&gt;}&lt;br /&gt;if(!preg_match("/[a-zA-Z]+/",$value)){&lt;br /&gt;throw new Exception('Invalid argument for value property!');&lt;br /&gt;}&lt;br /&gt;$this-&gt;name=$name;&lt;br /&gt;$this-&gt;value=$value;&lt;br /&gt;}&lt;br /&gt;// get (X)HTML markup of submit button&lt;br /&gt;public function getHTML(){&lt;br /&gt;return '&lt; type="submit" name=""&gt;name.'" value="'.$this-&gt;value.'"/&gt;';&lt;br /&gt;}&lt;br /&gt;}&lt;/code&gt;&lt;p nd="52"&gt;En este momento, hemos creado dos clases simples que son capaces de pintar diferentes elementos de un formulario web. La cuestión que viene ahora es: ¿cómo ponerlas a trabajar juntas?&lt;br /&gt;&lt;/p&gt;&lt;p nd="53"&gt;Para responder a esto, abajo se puede ver un pequeño script que muestra un formulario de contacto simple usando las dos clases previas, que está formado por tres cajas de texto y el correspondiente botón de envío. Aquí está el código en cuestión:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;&lt;br /&gt;try{&lt;br /&gt;// instantiate input text box objects&lt;br /&gt;$nameBox=new TextInputBox('name');&lt;br /&gt;$addressBox=new TextInputBox('address');&lt;br /&gt;$emailBox=new TextInputBox('email');&lt;br /&gt;// instantiate submit button&lt;br /&gt;$subButton=new SubmitButton('send');&lt;br /&gt;// display form&lt;br /&gt;echo '&lt;&gt;'."n".'Name '.$nameBox-&gt;getHTML().'&lt;br /&gt;'."n".'Address '.$addressBox-&gt;getHTML().'&lt;br /&gt;'."n".'Email '.$emailBox-&gt;getHTML().'&lt;br /&gt;'."n".$subButton-&gt;getHTML()."n".'';&lt;br /&gt;}&lt;br /&gt;catch(Exception $e){&lt;br /&gt;echo $e-&gt;getMessage();&lt;br /&gt;exit();&lt;br /&gt;}&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;p nd="68"&gt;Como se ha demostrado antes, el par de clases que se han creado antes se usaron para mostrar un simple formulario de contacto que contiene tres cajas de texto, para que los usuarios puedan introducir su nombre, dirección y e-mail. Hasta aquí todo correcto,¿verdad?&lt;/p&gt;&lt;p nd="68"&gt;Ahora, planteémonos la siguiente pregunta: ¿Qué pasa si quieres hacer un generador de formularios que sólo crea tres instancias de la clase "InputTextBox" previa, sin importar las veces que intentes instanciar nuevos objetos?&lt;br /&gt;&lt;/p&gt;&lt;p nd="70"&gt;Bién, aquí es donde el patrón flyweight entra en escena. Es posible definir una clase factoría que sólo retorna al código llamador, tres instancias de la misma clase "InputTextBox". Esto implica que la instanciación de objetos estaría completamente equilibrada dentro de la aplicación.&lt;br /&gt;&lt;/p&gt;&lt;p nd="71"&gt;La cosa se está poniendo interesante,¿que no? En las siguientes lineas vamos a ver como crear la clase factoría del patrón. Como dijimos antes, será responsable de devolver tres instancias únicas de la clase “InputTextBox”.&lt;/p&gt;&lt;br /&gt;&lt;span class="txt"&gt;&lt;span class="txt"&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Definir la clase factoría de "peso mosca"&lt;/span&gt;&lt;/span&gt;&lt;span class="txt"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p nd="7"&gt;&lt;span class="txt"&gt;&lt;br /&gt;&lt;p nd="2"&gt;De acuerdo con los conceptos de la sección anterior, aplicar el patrón "peso mosca" es sólo cuestión de definir una &lt;span style="font-style: italic;"&gt;factory class &lt;/span&gt;que será capaz de retornar al cliente sólo tres instancias de la clase "InputTextBox" que hemos definido previamente.&lt;br /&gt;&lt;/p&gt;&lt;p nd="3"&gt;Para responder a este requerimiento definimos una clase factoria flyweight. Obviamente devuelve tres objetos de cajas de texto al llamador. La definición de esta nueva clase es como sigue:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;code&gt;// define 'FlyweightFormElementFactory' class&lt;br /&gt;class FlyweightFormElementFactory{&lt;br /&gt;private $formElements=array();&lt;br /&gt;public function __construct(){&lt;br /&gt;$this-&gt;formElements['name']=NULL;&lt;br /&gt;$this-&gt;formElements['address']=NULL;&lt;br /&gt;$this-&gt;formElements['email']=NULL;&lt;br /&gt;}&lt;br /&gt;// return only three text input boxes&lt;br /&gt;public function fetchFormElement($elementName){&lt;br /&gt;if($elementName!='name'&amp;&amp;amp;$elementName!=&lt;br /&gt;'address'&amp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;$elementName!='email'){&lt;br /&gt;throw new Exception('Invalid name for form element!');&lt;br /&gt;}&lt;br /&gt;if($this-&gt;formElements[$elementName]==NULL){&lt;br /&gt;$this-&gt;formElements[$elementName]=new TextInputBox&lt;br /&gt;($elementName);&lt;br /&gt;}&lt;br /&gt;return $this-&gt;formElements[$elementName];&lt;br /&gt;}&lt;br /&gt;}&lt;/code&gt;&lt;/p&gt;&lt;p nd="23"&gt;Como puedes ver, la anterior factoría sólo suministra un método, llamado “fetchFormElement(),” el cual es responsable de crear tres instancias de la clase "TextInputBox" creada previamente. &lt;/p&gt;&lt;p nd="24"&gt;Bien, si usas esta factoría para hacer un formulario de contacto simple, siempre devolverá los mismos objetos &lt;span style="font-style: italic;"&gt;input text, &lt;/span&gt;no importa cuantas veces es invocada la clase en toda la aplicación. Lógicamente, esto previene las instanciaciones innecesarias de objetos que no son realmente requeridas, aumentando el rendimiento general de cualquier aplicación. Muy bien, ¿no?.&lt;br /&gt;&lt;/p&gt;&lt;p nd="25"&gt;Sin embargo, una vez entiendes cómo funciona la anterior factory, hay que dar otra paso más para demostrar la funcionalidad de la clase.&lt;br /&gt;&lt;/p&gt;&lt;p nd="26"&gt;Por lo tanto, en la siguiente sección vamos a configurar una ejemplo práctico que nos enseñará como usar la factory class para crear un básico formulario online que sólo contiene tres cajas de texto.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p nd="27"&gt;&lt;span class="txt"&gt;&lt;span&gt;&lt;span class="txt"&gt;&lt;span class="txt"&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Viendo el patrón "peso mosca" en acción&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p nd="2"&gt;Para demostrar la funcionalidad suministrada por la factoría flyweight que hemos hecho, primero definiremos una generador de formularios genérico para hacer formularios online, y a continuación desarrollaremos un ejemplo en el que se van a poner a trabajar juntas todas las clases.&lt;br /&gt;&lt;/p&gt;&lt;p nd="3"&gt;Como verás en breve, aplicar el patrón de diseño "peso mosca" nos permitirá construir una fromulario de contacto básico que sólo contendrá los tres campos de entrada ya vistos. De acuerdo con la lógica seguida por el patrón, cualquier intento de crear nuevos objetos del formulario será rechazado, manteniendo equilibrada la creación de objetos.&lt;br /&gt;&lt;/p&gt;&lt;p nd="4"&gt;Dicho esto, aquí está la definición que corresponde a la clase generadora de formularios:   &lt;/p&gt;&lt;p&gt;&lt;code&gt;// define 'FormGenerator' class&lt;br /&gt;class FormGenerator{&lt;br /&gt;private $method='post';&lt;br /&gt;private $action='processform.php';&lt;br /&gt;private $formElements=array();&lt;br /&gt;public function addFormElement(TextInputBox $formElement){&lt;br /&gt;$this-&gt;formElements[]=$formElement;&lt;br /&gt;}&lt;br /&gt;// fetch (X)HTML markup of web form&lt;br /&gt;public function displayForm(){&lt;br /&gt;$html='&lt; method=""&gt;method.'" action="'.$this-&gt;action.'"&gt;';&lt;br /&gt;foreach($this-&gt;formElements as $formElement){&lt;br /&gt; $html.=$formElement-&gt;getHTML().'&lt;&gt;';&lt;br /&gt;}&lt;br /&gt;$html.='&lt; type="submit" value="Send Data"&gt;&lt; /form&gt;';&lt;br /&gt;return $html;&lt;br /&gt;}&lt;br /&gt;}&lt;/code&gt;&lt;/p&gt;&lt;p nd="23"&gt;Ahora échale un vistazo al siguiente ejemplo, que construye el formulario de contacto usando la factory:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;code&gt;// example building a web form using the Flyweight design pattern&lt;br /&gt;try{&lt;br /&gt;// instantiate 'FlyweightFormElementFactory' object&lt;br /&gt;$flyweightFormElemFactory=new FlyweightFormElementFactory();&lt;br /&gt;// instantiate input text boxes&lt;br /&gt;$flyweightNameBox=$flyweightFormElemFactory-&gt;fetchFormElement('name');&lt;br /&gt;$flyweightAddressBox=$flyweightFormElemFactory-&gt;fetchFormElement('address');&lt;br /&gt;$flyweightEmailBox=$flyweightFormElemFactory-&gt;fetchFormElement('email');&lt;br /&gt;// instantiate 'FormGenerator' object&lt;br /&gt;$formGenerator=new FormGenerator();&lt;br /&gt;// add input text objects to form generator&lt;br /&gt;$formGenerator-&gt;addFormElement($flyweightNameBox);&lt;br /&gt;$formGenerator-&gt;addFormElement($flyweightAddressBox);&lt;br /&gt;$formGenerator-&gt;addFormElement($flyweightEmailBox);&lt;br /&gt;echo $formGenerator-&gt;displayForm();&lt;br /&gt;}&lt;br /&gt;catch(Exception $e){&lt;br /&gt;echo $e-&gt;getMessage();&lt;br /&gt;exit();&lt;br /&gt;}&lt;/code&gt;&lt;/p&gt;&lt;p nd="44"&gt;Como hemos visto, el formulario de ejemplo está hecho usando la funcionalidad de la factoría, cobinando con el generador de formularios. Lógicamente, este proceso es bastante fácil de seguir, y ciertamente no tiene nada de especial.&lt;br /&gt;&lt;/p&gt;&lt;p nd="45"&gt;Sin embargo, mira qué pasa cuando intentamos instanciar una nueva text box:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;code&gt;// try instantiating a different input text box (triggers an exception)&lt;br /&gt;// $flyweightNameBox1=$flyweightFormElemFactory-&gt;fetchFormElement('postalcode');&lt;/code&gt;&lt;/p&gt;&lt;p nd="48"&gt;En este caso el script lanza una excepción y se aborta la ejecución del programa. Ahora tenemos otra situación en la que intentamos crear dos text input que se llamen "name". En este caso, el script devuelve dos objetos idénticos:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;code&gt;// instantiate two identical 'name' input boxes&lt;br /&gt;$flyweightNameBox1=$flyweightFormElemFactory-&gt;fetchFormElement('name');&lt;br /&gt;$flyweightNameBox2=$flyweightFormElemFactory-&gt;fetchFormElement('name');&lt;br /&gt;if($flyweightNameBox1===$flyweightNameBox2){&lt;br /&gt;throw new Exception('Input text boxes objects are the same!');&lt;br /&gt;}&lt;/code&gt;&lt;/p&gt;&lt;p nd="55"&gt;Ahora deberías tener bastante claro como trabaja el patrón peso mos&lt;/p&gt;¿Ya te das cuenta cómo una aplicación PHP puede controlar la instanciación de clases via este útil patrón? Seguro que sí.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3768117653639066982-855999841302810906?l=galifate.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galifate.blogspot.com/feeds/855999841302810906/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3768117653639066982&amp;postID=855999841302810906' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3768117653639066982/posts/default/855999841302810906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3768117653639066982/posts/default/855999841302810906'/><link rel='alternate' type='text/html' href='http://galifate.blogspot.com/2007/02/introduccin-al-patrn-peso-mosca-con-php.html' title='Introducción al patrón &quot;peso mosca&quot; con PHP 5'/><author><name>Manuel</name><uri>http://www.blogger.com/profile/08998778448360154474</uri><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-3768117653639066982.post-6812601825429939836</id><published>2007-03-01T14:48:00.000+01:00</published><updated>2007-03-01T15:28:31.130+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wikipedia'/><category scheme='http://www.blogger.com/atom/ns#' term='¿cultura?'/><title type='text'>Aquí está la Conservapedia</title><content type='html'>Pues si, la &lt;a href="http://www.conservapedia.com/Main_Page"&gt;Conservapedia&lt;/a&gt;...&lt;br /&gt;Pues resulta que es una versión alternativa de la &lt;a href="http://www.wikipedia.org/"&gt;Wikipedia &lt;/a&gt;en la que se pretende que los hechos históricos lleguen fieles a la &lt;span style="font-style: italic;"&gt;realidad&lt;/span&gt; a nuestras generaciones posteriores, libres del &lt;span style="font-style: italic;"&gt;vandalismo intelectual &lt;/span&gt;al que son sometidos en la Wikipedia de toda la vida y bla bla bla...&lt;br /&gt;Vaya, que la Conservapedia es una versión más cerrada y el elitista de la Wikipedia. Como éllos se definen en la página principal: "&lt;span style="font-weight: bold;"&gt;Una enciclopedia conservadora en la que puedes confiar&lt;/span&gt;".&lt;br /&gt;¡¡¡Siii, claaaaaro!!!&lt;br /&gt;&lt;br /&gt;Sea verdad o no, no deja de ser una herramienta de información entretenida, donde te puedes pasar un buen rato quitándote la duda de quien era tal o quien era pascual. Por ejemplo, &lt;a href="http://www.conservapedia.com/Marc_Antony"&gt;Marc Antony&lt;/a&gt; no es el notas ese que hace como que canta y que está liao con la JLo (yeilou, que guay). O la &lt;span style="font-style: italic;"&gt;&lt;a href="http://www.conservapedia.com/Rosetta_Stone"&gt;Rosetta Stone&lt;/a&gt; &lt;/span&gt;puede ser una canción de &lt;span style="font-style: italic;"&gt;Tool&lt;/span&gt; y el cacho piedra con escritura egipcia gracias a la cual se empezaron a descifrar los jeroglíficos.&lt;br /&gt;&lt;br /&gt;De todos modos, hay que decir que la información que proporciona sus entradas es bastante pobre y hasta puede ser de risa (mirar la "abundante" información de los ejemplos anteriores). Otras entradas pueden ser directamente vergonzosas, y para muestra...  cuchara de palo: &lt;a href="http://www.conservapedia.com/index.php?title=Atheism&amp;direction=next&amp;amp;oldid=15546"&gt;ateísmo.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3768117653639066982-6812601825429939836?l=galifate.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galifate.blogspot.com/feeds/6812601825429939836/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3768117653639066982&amp;postID=6812601825429939836' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3768117653639066982/posts/default/6812601825429939836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3768117653639066982/posts/default/6812601825429939836'/><link rel='alternate' type='text/html' href='http://galifate.blogspot.com/2007/03/aqu-est-la-conservapedia.html' title='Aquí está la Conservapedia'/><author><name>Manuel</name><uri>http://www.blogger.com/profile/08998778448360154474</uri><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-3768117653639066982.post-4764040669649039078</id><published>2007-02-28T15:16:00.000+01:00</published><updated>2007-02-28T15:23:55.558+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='db2'/><title type='text'>El siguiente valor de una secuencia en DB2</title><content type='html'>Como de higos a peras hay que hacer algo de &lt;span style="font-weight: bold;"&gt;SQL&lt;/span&gt; (mínimo pero algo) y salir un poco del &lt;a href="http://www.hibernate.org/"&gt;Hibernate&lt;/a&gt;, cuando toca hay que desenpolvar alguna instrucción que normalmente se ejecuta automáticamente.&lt;br /&gt;&lt;br /&gt;Por ejemplo, vamos sacar el siguiente valor de una secuencia, ¿ok?.&lt;br /&gt;&lt;br /&gt;Si la secuencia se llama &lt;span style="font-weight: bold;"&gt;ID_MISECUENCIA&lt;/span&gt;, para obtener el siguiente valor de la secuencia tenemos lo siguiente:&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;SELECT NEXTVAL FOR ID_MISECUENCIA FROM SYSIBM.SYSDUMMY1&lt;/code&gt;&lt;/blockquote&gt;Pos eso, una chorrada más pal saco.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3768117653639066982-4764040669649039078?l=galifate.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galifate.blogspot.com/feeds/4764040669649039078/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3768117653639066982&amp;postID=4764040669649039078' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3768117653639066982/posts/default/4764040669649039078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3768117653639066982/posts/default/4764040669649039078'/><link rel='alternate' type='text/html' href='http://galifate.blogspot.com/2007/02/el-siguiente-valor-de-una-secuencia-en.html' title='El siguiente valor de una secuencia en DB2'/><author><name>Manuel</name><uri>http://www.blogger.com/profile/08998778448360154474</uri><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-3768117653639066982.post-8733108048515197014</id><published>2007-02-26T16:40:00.000+01:00</published><updated>2007-02-26T17:17:51.110+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='futbol sala'/><category scheme='http://www.blogger.com/atom/ns#' term='pitinikys'/><title type='text'>Los Pitinikys campeolones!!!</title><content type='html'>Ahí estamos el F.S. Los Pitinikys, volviendo a ganar la potente liga de invierno de futbol sala de Horta en el grupo E de la 2ª división. La liga ha finalizado y a nosotros nos queda jugar un partido atrasado con el &lt;span style="font-weight: bold;"&gt;Deportivo BDN. &lt;/span&gt;Eso quiere decir que ya somos campeones, y sin estrenar mis botas nuevas que han jubilado a mis pobres &lt;span style="font-style: italic;"&gt;Luanvi&lt;/span&gt;.&lt;br /&gt;Ha sido una liga disputada, como siempre, a ver qué equipo era menos malo y que cantidad despropósitos podía acumular en menor cuantía.&lt;br /&gt;Si quieres reírte ven a &lt;a href="http://www.bcndeportiva.com/"&gt;vernos&lt;/a&gt;, es como visualizar un episodio de Benny Hill, pero sustituyendo las mujeres en bikini por pavos en mala forma y amenizado con la música los evangelistas que celebran sus misas en la carpa de al lao.&lt;br /&gt;&lt;br /&gt;&lt;table style="width: 380px; height: 310px;" border="1" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td colspan="9"&gt;CLASIFICACIÓN GENERAL&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td colspan="9" height="15"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td colspan="9"&gt;F. SALA 2ª DIV. GRUPO E&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td colspan="9" height="15"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;        &lt;td&gt;EQUIPO&lt;/td&gt;       &lt;td&gt;GF&lt;/td&gt;       &lt;td&gt;GC&lt;/td&gt;       &lt;td&gt;DG&lt;/td&gt;       &lt;td&gt;PJ&lt;/td&gt;       &lt;td&gt;PG&lt;/td&gt;       &lt;td&gt;PE&lt;/td&gt;       &lt;td&gt;PP&lt;/td&gt;       &lt;td&gt;Pnts&lt;/td&gt;     &lt;/tr&gt;          &lt;tr&gt;        &lt;td style="font-weight: bold;"&gt;LOS PITINIKYS&lt;/td&gt;       &lt;td&gt;59&lt;/td&gt;       &lt;td&gt;35&lt;/td&gt;       &lt;td&gt;24&lt;/td&gt;       &lt;td&gt;16&lt;/td&gt;       &lt;td&gt;9&lt;/td&gt;       &lt;td&gt;4&lt;/td&gt;       &lt;td&gt;3&lt;/td&gt;       &lt;td&gt;31&lt;/td&gt;     &lt;/tr&gt;          &lt;tr&gt;        &lt;td&gt;BALLANTEAM&lt;/td&gt;       &lt;td&gt;67&lt;/td&gt;       &lt;td&gt;39&lt;/td&gt;       &lt;td&gt;28&lt;/td&gt;       &lt;td&gt;16&lt;/td&gt;       &lt;td&gt;9&lt;/td&gt;       &lt;td&gt;2&lt;/td&gt;       &lt;td&gt;5&lt;/td&gt;       &lt;td&gt;29&lt;/td&gt;     &lt;/tr&gt;          &lt;tr&gt;        &lt;td&gt;ULTRAUTO&lt;/td&gt;       &lt;td&gt;75&lt;/td&gt;       &lt;td&gt;50&lt;/td&gt;       &lt;td&gt;25&lt;/td&gt;       &lt;td&gt;16&lt;/td&gt;       &lt;td&gt;9&lt;/td&gt;       &lt;td&gt;2&lt;/td&gt;       &lt;td&gt;5&lt;/td&gt;       &lt;td&gt;29&lt;/td&gt;     &lt;/tr&gt;          &lt;tr&gt;        &lt;td&gt;SET I MIG&lt;/td&gt;       &lt;td&gt;73&lt;/td&gt;       &lt;td&gt;49&lt;/td&gt;       &lt;td&gt;24&lt;/td&gt;       &lt;td&gt;16&lt;/td&gt;       &lt;td&gt;9&lt;/td&gt;       &lt;td&gt;2&lt;/td&gt;       &lt;td&gt;5&lt;/td&gt;       &lt;td&gt;29&lt;/td&gt;     &lt;/tr&gt;          &lt;tr&gt;        &lt;td&gt;DEPORTIVO BDN&lt;/td&gt;       &lt;td&gt;45&lt;/td&gt;       &lt;td&gt;38&lt;/td&gt;       &lt;td&gt;7&lt;/td&gt;       &lt;td&gt;16&lt;/td&gt;       &lt;td&gt;8&lt;/td&gt;       &lt;td&gt;3&lt;/td&gt;       &lt;td&gt;5&lt;/td&gt;       &lt;td&gt;27&lt;/td&gt;     &lt;/tr&gt;          &lt;tr&gt;        &lt;td&gt;EL SOCAVON&lt;/td&gt;       &lt;td&gt;64&lt;/td&gt;       &lt;td&gt;49&lt;/td&gt;       &lt;td&gt;15&lt;/td&gt;       &lt;td&gt;16&lt;/td&gt;       &lt;td&gt;7&lt;/td&gt;       &lt;td&gt;3&lt;/td&gt;       &lt;td&gt;6&lt;/td&gt;       &lt;td&gt;24&lt;/td&gt;     &lt;/tr&gt;          &lt;tr&gt;        &lt;td&gt;PORTO PI&lt;/td&gt;       &lt;td&gt;47&lt;/td&gt;       &lt;td&gt;46&lt;/td&gt;       &lt;td&gt;1&lt;/td&gt;       &lt;td&gt;16&lt;/td&gt;       &lt;td&gt;6&lt;/td&gt;       &lt;td&gt;3&lt;/td&gt;       &lt;td&gt;7&lt;/td&gt;       &lt;td&gt;21&lt;/td&gt;     &lt;/tr&gt;          &lt;tr&gt;        &lt;td&gt;F.C. COUTO&lt;/td&gt;       &lt;td&gt;39&lt;/td&gt;       &lt;td&gt;99&lt;/td&gt;       &lt;td&gt;-60&lt;/td&gt;       &lt;td&gt;16&lt;/td&gt;       &lt;td&gt;3&lt;/td&gt;       &lt;td&gt;1&lt;/td&gt;       &lt;td&gt;12&lt;/td&gt;       &lt;td&gt;10&lt;/td&gt;     &lt;/tr&gt;          &lt;tr&gt;        &lt;td&gt;LA QUINTA&lt;/td&gt;       &lt;td&gt;30&lt;/td&gt;       &lt;td&gt;94&lt;/td&gt;       &lt;td&gt;-64&lt;/td&gt;       &lt;td&gt;16&lt;/td&gt;       &lt;td&gt;2&lt;/td&gt;       &lt;td&gt;0&lt;/td&gt;       &lt;td&gt;14&lt;/td&gt;       &lt;td&gt;6&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3768117653639066982-8733108048515197014?l=galifate.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galifate.blogspot.com/feeds/8733108048515197014/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3768117653639066982&amp;postID=8733108048515197014' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3768117653639066982/posts/default/8733108048515197014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3768117653639066982/posts/default/8733108048515197014'/><link rel='alternate' type='text/html' href='http://galifate.blogspot.com/2007/02/los-pitinikys-campeolones.html' title='Los Pitinikys campeolones!!!'/><author><name>Manuel</name><uri>http://www.blogger.com/profile/08998778448360154474</uri><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-3768117653639066982.post-4985978539315567509</id><published>2007-02-26T15:51:00.000+01:00</published><updated>2008-12-10T12:51:24.163+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='csi'/><category scheme='http://www.blogger.com/atom/ns#' term='series tv'/><title type='text'>Hola CSI Las Vegas VI, adiós Horatio</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_X1AlDmp3auk/ReL3LrQmtsI/AAAAAAAAAAg/IVfR32nmzWs/s1600-h/15114_b.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_X1AlDmp3auk/ReL3LrQmtsI/AAAAAAAAAAg/IVfR32nmzWs/s320/15114_b.jpg" alt="" id="BLOGGER_PHOTO_ID_5035859113316628162" border="0" /&gt;&lt;/a&gt;Bueno, por fin vuelve el majo de Grissom y se va el facha del Horatio. Esta noche empieza la sexta temporada en &lt;a href="http://www.csi.telecinco.es/dn_193.htm"&gt;Tele5 &lt;/a&gt;(por el xxxx te la hinco). La verdad es que esperaba este momento desde que terminó la anterior temporada de &lt;span style="font-style: italic;"&gt;Las Vegas&lt;/span&gt; puesto que el jodío del Horatio, y su manía de no mirar a la peña a la cara, no me caía nada bien.&lt;br /&gt;&lt;br /&gt;Sin embargo, uno le acaba pillando cariño al panocho ese y a su pose de piernas abiertas. A ver si vuelven hacer un par de capítulos arrejuntaos los de Las Vegas y los &lt;span style="font-style: italic;"&gt;spanglish&lt;/span&gt; hablantes de Miami. Lo que a uno no le acaba de cuadrar es la "relación" extraña esa que tiene el notas con el mujerón ese que por lo visto tenía cáncer terminal. Ni un besito, ni un arrumaco ... joder, si la tía quería echar una cana al aire con cualquiera antes de morir ¿no podría haber pillao al pobre notas ese que no se come un rosco y tiene cara de buen pavo (Sr. Wolf o algo así)?&lt;br /&gt;&lt;br /&gt;En fin, que he pasao de odiar al panocho a querer ser como él de mayor: cara arrugada, lupas wapas, piernas abiertas en pose de jota y un Hummer para vacilar por ahí con la señora. La parienta se la puede quedar él, que estará mu buena pero era más tonta que un pie.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3768117653639066982-4985978539315567509?l=galifate.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galifate.blogspot.com/feeds/4985978539315567509/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3768117653639066982&amp;postID=4985978539315567509' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3768117653639066982/posts/default/4985978539315567509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3768117653639066982/posts/default/4985978539315567509'/><link rel='alternate' type='text/html' href='http://galifate.blogspot.com/2007/02/hola-csi-las-vegas-vi-adis-horatio.html' title='Hola CSI Las Vegas VI, adiós Horatio'/><author><name>Manuel</name><uri>http://www.blogger.com/profile/08998778448360154474</uri><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_X1AlDmp3auk/ReL3LrQmtsI/AAAAAAAAAAg/IVfR32nmzWs/s72-c/15114_b.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3768117653639066982.post-1293104225719339479</id><published>2007-02-22T22:20:00.000+01:00</published><updated>2007-02-22T23:21:42.681+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='literatura'/><category scheme='http://www.blogger.com/atom/ns#' term='dan simmons'/><category scheme='http://www.blogger.com/atom/ns#' term='ciencia ficción'/><title type='text'>Como me molan los libros de ciencia ficción</title><content type='html'>Pues resulta que últimamente estoy leyendo &lt;span style="font-style: italic; font-weight: bold;"&gt;Olympo: La Caída&lt;/span&gt; de Dan Simmons. Éste es uno de mis autores favoritos, y os recomiendo todo lo que podais pillar de él. Bueno, de él, de Orson Scott Card, de Greg Bear y alguno más que debo tener rulando por mi librería.&lt;br /&gt;&lt;br /&gt;Una de las cosas con las que más disfruto es con las "idas de olla" sobre física. Bueno, al final, más que física se trata de metafísica. Es como cuando estamos los informáticos (soy un capullo de esos) hablando de nuestros temitas. En medio de una conversación de este tipo a veces me abstraigo de la chachara e intento "escuchar" lo que estamos diciendo como si no fuera un informático de las narices. Cuando me pasa eso no puedo pensar más que: "menudas gilipolleces sin sentido podemos llegar a decir". Pero aún así, uno disfruta con esos temas.&lt;br /&gt;&lt;br /&gt;Pues una cosa parecida me pasa de vez cuando cuando leo este tipo de libros. Os pongo el ejemplo que me ha hecho escribir esta sarta de tonterías. Es un extracto del libro que he nombrado al principio:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"[...]He hecho algunos estudios preliminares en el ordenador cuántico de la nave -continuó Orphu-. Cuando se representa la conciencia humana como el fenómeno de frente de onda que realmente es,  se halla el factor en terabytes de los datos cuánticos qubit en la base del frente de onda de la realidad física misma, se aplican los adecuados campos relativistas de Coulomb que se transforman en estas funciones de onda de mente-conciencia-realidad, entonces se ve fácilmente cómo los posthumanos abrieron Agujeros Brana a nuevos universos y luego se teletransportaron allí." (Olimpo II: La Caída, 2006, Dan Simmons).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;A&lt;/span&gt;&lt;span&gt;hí está el rollo. Y que conste que el pavo que escribe este tipo de paranoias, si no recuerdo mal, era profe universitario de literatura inglesa. Nada de físico, ni matemático ni nada de eso.&lt;br /&gt;&lt;br /&gt;Ale, una chorrada más.&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3768117653639066982-1293104225719339479?l=galifate.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galifate.blogspot.com/feeds/1293104225719339479/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3768117653639066982&amp;postID=1293104225719339479' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3768117653639066982/posts/default/1293104225719339479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3768117653639066982/posts/default/1293104225719339479'/><link rel='alternate' type='text/html' href='http://galifate.blogspot.com/2007/02/como-me-molan-los-libros-de-ciencia.html' title='Como me molan los libros de ciencia ficción'/><author><name>Manuel</name><uri>http://www.blogger.com/profile/08998778448360154474</uri><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-3768117653639066982.post-2282594916710167436</id><published>2007-02-16T12:20:00.000+01:00</published><updated>2007-02-16T12:41:27.732+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='in'/><category scheme='http://www.blogger.com/atom/ns#' term='db2'/><title type='text'>Operador IN en DB2 con operandos agrupados</title><content type='html'>Pos aquí estamos. Me voy a apuntar aquí una cosita por si se me olvida. Hay un operador en SQL llamado &lt;span style="font-style: italic; font-weight: bold;"&gt;IN&lt;/span&gt;, con el que uno puede hacer un &lt;span style="font-weight: bold; font-style: italic;"&gt;OR &lt;/span&gt;de varios operantes. El rollo es el que sigue:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;select * from tabla where t1 in (valor1, valor2, etc..)&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Esto vendría a ser lo mismo que hacer ...&lt;br /&gt;&lt;br /&gt;&lt;code&gt;select * from tabla where t1=valor1 or t1=valor2 or etc...&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;También está la opción de ejecutar la operación con parejas o tripletas:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;select * from tabla where (t1,t2) in ((valor11,valor12),(valor21,valor22),etc...)&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Esto vendría a ser ...&lt;br /&gt;&lt;code&gt;&lt;br /&gt;select * from tabla where (t1=valor11 and t2=valor12)&lt;br /&gt;                         or (t1=valor21 and t2=valor22) or etc...&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Este es el rollo que le mola al Oracle, pero es que ahora estoy metido en temitas de DB2 y esta opción no rula. Pero tranquis, que esto se puede hacer del siguiente modo:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;select * from tabla where (t1,t2) in (&lt;span style="font-weight: bold;"&gt;values &lt;/span&gt;(valor11,valor12),(valor21,valor22),etc...)&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;Esta tontería me ha costado un rato, puesto que lo que he encontrado en la documentación online de &lt;a href="http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.ii.doc/admin/tfpwrk02.htm"&gt;IBM&lt;/a&gt; no es exactamente lo mismo. Después de hacer diferentes pruebas, me ha dado por poner lo del &lt;span style="font-weight: bold; font-style: italic;"&gt;values &lt;/span&gt;y, ale!, a rular.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3768117653639066982-2282594916710167436?l=galifate.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galifate.blogspot.com/feeds/2282594916710167436/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3768117653639066982&amp;postID=2282594916710167436' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3768117653639066982/posts/default/2282594916710167436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3768117653639066982/posts/default/2282594916710167436'/><link rel='alternate' type='text/html' href='http://galifate.blogspot.com/2007/02/operador-in-en-db2-con-operandos.html' title='Operador IN en DB2 con operandos agrupados'/><author><name>Manuel</name><uri>http://www.blogger.com/profile/08998778448360154474</uri><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-3768117653639066982.post-5461479025358466107</id><published>2007-02-15T23:34:00.000+01:00</published><updated>2008-12-10T12:51:24.340+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general'/><title type='text'>Esta es la segunda entrada</title><content type='html'>Bueno, aquí estamos a ver si entendemos el tema y tal.&lt;br /&gt;De momento he intentado modificar mi perfil para ponerme una fotico. La cosa es que esto te pide una URL que apunte a la foto, pero también te da la opción de alojar imagenes gracias al triángulo amoroso picassa-hello-blogger. Conclusión, no he podido poner foto porque lo que quiero es subirla como se puede hacer en una entrada cualquiera. Para muestra un botón...&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_X1AlDmp3auk/RdThPiYF0_I/AAAAAAAAAAU/PZdBGji82D4/s1600-h/mono.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_X1AlDmp3auk/RdThPiYF0_I/AAAAAAAAAAU/PZdBGji82D4/s320/mono.jpg" alt="" id="BLOGGER_PHOTO_ID_5031894340721824754" border="0" /&gt;&lt;/a&gt;Esta es la imagen que tengo rollo avatar en mi cuenta &lt;a href="http://www.gmail.com/"&gt;gmail.&lt;/a&gt; No creo que sea tan difícil dar la misma posibilidad a la hora de elegir la imagen que me represente en mi perfil de blogger. De hecho con Gmail no hay ningún problema. Si todas las aplicaciones de &lt;a href="http://www.google.com/"&gt;Google &lt;/a&gt;las puedes gestionar con la misma cuenta, ¿no sería lógico que el perfil por defecto se conservase también en Blogger?&lt;br /&gt;&lt;br /&gt;Tengo que decir que este será mi primer blog personal, con el que pretendo experimentar un poco y decir lo que me venga en gana, sin temática concreta ni historias. Bueno, quizás caiga algo de &lt;a href="http://java.sun.com/"&gt;Java&lt;/a&gt;, que es con lo que trabajo principalmente. También puede que hable de vez en cuando de mi equipo de futbol sala. Por supuesto, hasta puede que hable de como va el proyecto &lt;a href="http://www.smallsquid.com/"&gt;SmallSquid&lt;/a&gt;, del cual soy uno de los co-fundadores (bueno, vendría a ser el segundo de a bordo, siguiente al &lt;span style="font-style: italic;"&gt;alma matter&lt;/span&gt; del proyecto Jose Manuel Pérez).&lt;br /&gt;&lt;br /&gt;Por último, tengo que avisar que mi forma de escribir no es muy buena. Es más bien tirando a nefasta (léxico-gramático-semánticamente), así que ya estais avisados (si es que alguien lee esto).&lt;br /&gt;&lt;br /&gt;Pues eso, a medida que pasen los días iré puliendo &lt;a href="http://galifate.blogspot.com/"&gt;el blog del galifate&lt;/a&gt; hasta que tenga una forma una poco respetable, y hasta puede que explique lo que es un "galifate" (o al menos lo que he podido deducir de lo que he oído en directo).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3768117653639066982-5461479025358466107?l=galifate.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galifate.blogspot.com/feeds/5461479025358466107/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3768117653639066982&amp;postID=5461479025358466107' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3768117653639066982/posts/default/5461479025358466107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3768117653639066982/posts/default/5461479025358466107'/><link rel='alternate' type='text/html' href='http://galifate.blogspot.com/2007/02/esta-es-la-segunda-entrada.html' title='Esta es la segunda entrada'/><author><name>Manuel</name><uri>http://www.blogger.com/profile/08998778448360154474</uri><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_X1AlDmp3auk/RdThPiYF0_I/AAAAAAAAAAU/PZdBGji82D4/s72-c/mono.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3768117653639066982.post-3757589366982356053</id><published>2007-02-14T23:51:00.000+01:00</published><updated>2007-02-15T12:29:01.637+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general'/><title type='text'>Mi primera entrada</title><content type='html'>Esta entrada es una prueba del funcionamiento de esta herramienta para crear blogs. Veremos qué resulta.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3768117653639066982-3757589366982356053?l=galifate.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galifate.blogspot.com/feeds/3757589366982356053/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3768117653639066982&amp;postID=3757589366982356053' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3768117653639066982/posts/default/3757589366982356053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3768117653639066982/posts/default/3757589366982356053'/><link rel='alternate' type='text/html' href='http://galifate.blogspot.com/2007/02/mi-primera-entrada.html' title='Mi primera entrada'/><author><name>Manuel</name><uri>http://www.blogger.com/profile/08998778448360154474</uri><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></feed>
