<?xml version="1.0"?>
<rss version="2.0">

<channel>
	<title>Planet Webdev</title>
	<link>http://planetwebdev.net</link>
	<language>en</language>
	<description>Planet Webdev - http://planetwebdev.net</description>

<item>
	<title>Maestros del Web (Editorial): GeeksOnAPlane: emprendimientos de Miami y México DF</title>
	<guid isPermaLink="false">http://www.maestrosdelweb.com/?p=24601</guid>
	<link>http://www.maestrosdelweb.com/actualidad/geeksonaplane-emprendimientos-de-miami-y-mexico-df/</link>
	<description>&lt;p&gt;No hay mejor manera de abrir este articulo que citando a uno de los emprendedores y organizadores que hicieron que &lt;strong&gt;Geeks On A Plane&lt;/strong&gt; llegara a tierras Aztecas:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Lo que esta ahora sucediendo en la casa del Embajador de Estados Unidos en México pasara a la historia como un momento clave para el emprendimiento en Latino América – &lt;em&gt;Cesar Salazar – Cofundador de Mexican.vc&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;http://www.maestrosdelweb.com/images/2012/05/photo1.jpg&quot;&gt;&lt;img src=&quot;http://www.maestrosdelweb.com/images/2012/05/photo1-e1337188991392-337x450.jpg&quot; style=&quot;border: 5px solid white;&quot; height=&quot;273&quot; width=&quot;207&quot; alt=&quot;&quot; class=&quot;alignleft  wp-image-24673&quot; /&gt;&lt;/a&gt;Estoy completamente de acuerdo con Cesar, pero creo que no solo ha sido ese momento lo que ha marcado un hito en el ecosistema de emprendimiento de América Latina; ha sido el esfuerzo colectivo de todas las diferentes iniciativas de emprendedores de Latino América durante un periodo de 5 años que ha logrado que estemos ahora pasando por una de las mejores etapas en países como México, Chile, Colombia, Argentina y Brasil.&lt;/p&gt;
&lt;p&gt;Como todo, no siempre los primeros exploradores han sido los que han recibido el mérito y el reconocimiento que se merecen, estoy hablando de gente como Tomas Pollak, Nicolas Orellana, Leo Prieto, Juan Francisco Diez, Adan Vecindad, Carlos Mondragon, Santiago Siri, Damian Voltes, Ivan Sosa, Juan David Vargas y muchos otros que han tenido éxito en sus emprendimientos, pero a pesar de ello tenemos que reconocer que nunca hemos dejado de ser un “grupo de geeks” o “frikis” con ganas de cambiar el mundo.&lt;/p&gt;
&lt;p&gt;El esfuerzo de plantar la semilla emprendedora esta dando sus frutos con Startups como &lt;a href=&quot;http://feeds.feedburner.com/welcu.com&quot; target=&quot;_blank&quot;&gt;Welcu&lt;/a&gt;, &lt;a href=&quot;http://angel.co/yogome&quot; target=&quot;_blank&quot;&gt;Yogome&lt;/a&gt;, &lt;a href=&quot;http://angel.co/fontacto&quot; target=&quot;_blank&quot;&gt;Fontacto&lt;/a&gt;, &lt;a href=&quot;http://angel.co/ovia&quot; target=&quot;_blank&quot;&gt;Ovia&lt;/a&gt;, &lt;a href=&quot;http://feeds.feedburner.com/preyproject.com&quot; target=&quot;_blank&quot;&gt;PreyProject&lt;/a&gt;, &lt;a href=&quot;http://frogtek.org/&quot; target=&quot;_blank&quot;&gt;Frogtek&lt;/a&gt; y muchas otras mas que tienen a emprendedores Latino Americanos como fundadores.&lt;/p&gt;
&lt;h3&gt;Miami como punta de lanza para conectar con Hispanos en Estados Unidos.&lt;/h3&gt;
&lt;p&gt;Quede muy impresionado con la versatilidad de esa ciudad, a pesar de tener la etiqueta de “turística”; esta haciendo un esfuerzo para hacer uso de lo mejor que tiene: una conexión con dos mundos dentro de un mismo país – contacto con la población inmigrante latina y anglosajona de Estados Unidos.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Nadie conoce mejor a la población hispana en Estados Unidos  y Latino Americana que la comunidad de Miami – Adriana Cisneros – CEO de Corporativo Cisneros.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Sin embargo aunque esta ofreciendo muchos incentivos por parte de la Asociación de Empresarios del Condado de Miami y varios grupos de Meetups de Tecnología; no vi un hub de talento para alimentar tu Startup. Esta es una pieza fundamental para cualquier empresa tecnológica pueda crecer en un mercado tan demandante como el de Internet, esto no lo vi reflejado en este viaje; espero en algún momento regresar con mas tiempo para tener esto mas claro.&lt;/p&gt;
&lt;p&gt;Definitivamente hay capital en la ciudad, aunque no veo que sea un capital inteligente en el sentido que tenga la experiencia de fondear Startups y entiendan la tolerancia al riesgo que se requiere de un inversor en tecnología. Esto no quiere decir que no se pueda recibir inversión de capital riesgo o algún business ángel, en años venideros aterrizaran muchas empresas Latino Americanas en aquella hermosa ciudad que nos hechiza con sus playas y su ambiente Latino que se respira en cada esquina.&lt;/p&gt;
&lt;p&gt;Miami será una excelente opción cuando lleguen a tener suficientes Startups y empresas de tecnología en los alrededores para poder auto-abastecerse para que entre ellas mismas se puedan sustentar; sobre todo la necesidad de talento que requiere un ecosistema de emprendimiento tecnológico.&lt;/p&gt;
&lt;h3&gt;StartupWeekend Mexico DF, el pais Azteca despertando el interes de geeks de Silicon Valley.&lt;/h3&gt;
&lt;p&gt;Algo que se ha venido trabajando desde el 2009 con el primer evento de emprendimiento en la Ciudad de Mexico por parte de la iniciativa de &lt;a href=&quot;http://iweekend.org&quot; target=&quot;_blank&quot;&gt;iWeekend&lt;/a&gt;, varias reuniones de hackers Mexicanos como el &lt;a href=&quot;http://superhappydevhouse.org/w/page/16345504/FrontPage&quot; target=&quot;_blank&quot;&gt;SuperHappyDevHouse&lt;/a&gt; y &lt;a href=&quot;http://mobilecamp.mx/&quot; target=&quot;_blank&quot;&gt;MobilecampMX&lt;/a&gt;. Ha culminado con 4 eventos de &lt;a href=&quot;http://startupweekend.org/&quot; target=&quot;_blank&quot;&gt;StartupWeekend&lt;/a&gt; en México (&lt;a href=&quot;http://startupweekendgdl.org/&quot; target=&quot;_blank&quot;&gt;Guadalajara&lt;/a&gt;, &lt;a href=&quot;http://aguascalientes.startupweekend.org/&quot; target=&quot;_blank&quot;&gt;Aguascalientes&lt;/a&gt;, &lt;a href=&quot;http://morelia.startupweekend.org/&quot; target=&quot;_blank&quot;&gt;Morelia&lt;/a&gt; y &lt;a href=&quot;http://tijuana.startupweekend.org/&quot; target=&quot;_blank&quot;&gt;Tijuana&lt;/a&gt;) con rotundo éxito y que se proyecta hacer más de 15 en todo el país.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.maestrosdelweb.com/images/2012/05/Captura-de-pantalla-2012-05-16-a-las-2.13.09-PM.png&quot;&gt;&lt;img src=&quot;http://www.maestrosdelweb.com/images/2012/05/Captura-de-pantalla-2012-05-16-a-las-2.13.09-PM.png&quot; style=&quot;border: 5px solid white;&quot; height=&quot;179&quot; width=&quot;140&quot; alt=&quot;&quot; class=&quot;alignleft size-full wp-image-24670&quot; /&gt;&lt;/a&gt;Lo que hace memorable esta tercera edición de México DF sea espectacular, es que tuvo un jurado estelar con figuras como David Weekly, Dave McClure, Allen Taylor, e integrantes de GeeksOnAPlane y mas juzgando a 11 proyectos con un potencial de primer nivel. Se reunieron los líderes de todas la comunidades de tecnología de México desde Guadalajara hasta San Luis Potosí, trajeron a su mejor talento y se vio claro en lo que son los 3 primeros lugares del evento.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Estamos buscando proyectos que podamos fusionar con Startups en SiliconValley y el ganador de StartupWeekend tiene muchas sinergias con TaskRabbit una empresa de nuestro portafolio – Dave McClure hablando de Encarguitos.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Con el primer lugar que fue Encarguitos, así como Legal You (2do lugar) se vio claro como se pudo identificar una necesidad a nivel global, poder ejecutar a nivel local y como poderla escalar de manera orgánica. Esa fue la propuesta de valor que tuvo Encarguitos, que merecidamente ganaron en &lt;a href=&quot;http://startupweekenddf.com/&quot; target=&quot;_blank&quot;&gt;StartupWeekend México DF&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Me llamo la atención Instareal que es una app para colocar bienes inmuebles de manera sencilla y sindicalizarlos en varias plataformas de búsqueda de bienes raíces. La mención honorífica de RockMob fue para una app que te ayuda a poder quitar la “frustración” de aprender a tocar un instrumento musical y pudieron hacer una demostración en vivo para que alguien pudiera tocar una guitarra.&lt;/p&gt;
&lt;h3&gt;Convivencia de emprendedores, hackers e inversores en América Latina.&lt;/h3&gt;
&lt;p&gt;Lo mejor que esta haciendo &lt;a href=&quot;http://geeksonaplane.com&quot; target=&quot;_blank&quot;&gt;Geeks On A Plane&lt;/a&gt;, es habilitar eventos donde se reúne gente clave de las diferentes comunidades y provoca que puedan establecer una conexión que aunque sea momentánea, tenga el potencial de habilitar futuras conversaciones. Hemos visto eventos como &lt;a href=&quot;http://twitter.com/#!/traweln&quot; target=&quot;_blank&quot;&gt;Traweln&lt;/a&gt; y &lt;a href=&quot;http://twitter.com/#!/traweln&quot; target=&quot;_blank&quot;&gt;La Red Innova&lt;/a&gt; que han permitido mediante conferencias hacer estas conexiones en Chile y España, con representación por parte de iniciativas Ibéricas como &lt;a href=&quot;http://dad.es&quot; target=&quot;_blank&quot;&gt;Digital Asset Deployment&lt;/a&gt; (DAD – fondo de inversión) y &lt;a href=&quot;http://smartup.es&quot; target=&quot;_blank&quot;&gt;Smartup&lt;/a&gt; (firma de marketing digital).&lt;/p&gt;
&lt;p&gt;Ya que en un periodo de 10 días sabemos que la intimidad de compartir cuartos de hotel, comidas, cenas, almuerzos y como no, algunas bebidas “refrescantes” permitirá generar la confianza necesaria para que se pueda trabajar en futuros proyectos.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;La confianza que genera un emprendedor en el inversor, es la misma que tiene que generar un fondo de inversión con sus inversores. Es una pieza clave para que cualquier ecosistema de emprendimiento pueda florecer a pesar esta crisis global que se esta viviendo; por eso es clave encontrar a estas “figuras de confianza” para crearlo – Paul Ahlstrom – fundador de Alta Ventures.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Así que no se pierdan lo que se publica diariamente en el hashtag &lt;a href=&quot;http://twitter.com/#!/search/%23GOAP&quot; target=&quot;_blank&quot;&gt;#GOAP&lt;/a&gt; en twitter para estar al tanto de lo que acontece en esta gira por Latino America de los &lt;strong&gt;Geeks On A Plane&lt;/strong&gt;.&lt;/p&gt;
&lt;hr /&gt;&lt;p style=&quot;height: 64px;&quot;&gt;&lt;img src=&quot;http://www.maestrosdelweb.com/images/autores/360-33.jpg&quot; alt=&quot;Claudio Cossio&quot; style=&quot;float: left; padding: 0 5px;&quot; class=&quot;avatar&quot; /&gt; &lt;strong&gt;Claudio Cossio&lt;/strong&gt; para &lt;a href=&quot;http://www.maestrosdelweb.com&quot;&gt;Maestros del Web&lt;/a&gt;.&lt;br /&gt;&lt;a href=&quot;http://www.maestrosdelweb.com/actualidad/geeksonaplane-emprendimientos-de-miami-y-mexico-df/#respond&quot;&gt;Agrega tu comentario&lt;/a&gt; | &lt;a href=&quot;http://www.maestrosdelweb.com/actualidad/geeksonaplane-emprendimientos-de-miami-y-mexico-df/&quot;&gt;Enlace permanente&lt;/a&gt; al artículo&lt;/p&gt;&lt;hr style=&quot;clear: both;&quot; /&gt;
		&lt;p&gt;&lt;strong&gt;Síguenos en:&lt;/strong&gt; &lt;img src=&quot;http://www.maestrosdelweb.com/diseno/imagenes/twitter.png&quot; style=&quot;vertical-align: middle;&quot; /&gt; &lt;a href=&quot;http://twitter.com/maestros&quot;&gt;@maestros&lt;/a&gt; | &lt;img src=&quot;http://www.maestrosdelweb.com/diseno/imagenes/facebook.png&quot; style=&quot;vertical-align: middle;&quot; /&gt; &lt;a href=&quot;http://facebook.com/maestrosdelweb&quot;&gt;Fan page&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Thu, 17 May 2012 14:54:45 +0000</pubDate>
</item>
<item>
	<title>Variable not found: [Auges] Webcast sobre SignalR: ¡uau!</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-27752126.post-5937086874500553024</guid>
	<link>http://feedproxy.google.com/~r/vnf/~3/pUYTPASIuPI/auges-webcast-sobre-signalr-uau.html</link>
	<description>&lt;img src=&quot;http://lh4.ggpht.com/-r9SV68Em5Jc/TnopO3YqltI/AAAAAAAABno/Oiiof6sGueA/image%25255B2%25255D.png?imgmax=800&quot; style=&quot;margin: 0px 0px 10px 10px;&quot; title=&quot;AUGES: ASP.NET User Group España&quot; align=&quot;right&quot; width=&quot;200&quot; alt=&quot;AUGES: ASP.NET User Group España&quot; border=&quot;0&quot; /&gt;Simplemente informaros de que el próximo jueves 24 de mayo a las 19:00h (hora peninsular española), participaré en una charla con &lt;a href=&quot;http://auges.org/&quot;&gt;AUGES&lt;/a&gt; sobre SignalR, esa pequeña maravilla de la que ya &lt;a href=&quot;http://www.variablenotfound.com/search/label/signalr&quot;&gt;os he hablado por aquí en varias ocasiones&lt;/a&gt;, una ayuda imprescindible a la hora de crear sistemas interactivos, multiusuario y en tiempo real para la web.&lt;br /&gt;
&lt;br /&gt;
El “cartel” oficial del evento es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;&quot;&gt;
&lt;h4 style=&quot;margin-top: 0px;&quot;&gt;


SIGNALR: APLICACIONES MULTIUSUARIO, ASÍNCRONAS, Y EN TIEMPO REAL. ¡UAU!&lt;/h4&gt;
¿Te has preguntado alguna vez cómo es posible que en una aplicación web como Google Docs &lt;strong&gt;varios usuarios puedan interactuar&lt;/strong&gt; de forma simultánea? ¿Te interesa &lt;strong&gt;la tecnología que usan los grandes&lt;/strong&gt; como Facebook o Twitter para informarte en tiempo real de que algo ha ocurrido? ¿Piensas que &lt;strong&gt;crear un chat&lt;/strong&gt; basado puramente en ASP.NET no es tarea sencilla? ¿Te gustaría que el servidor pudiera &lt;strong&gt;enviar información a los clientes&lt;/strong&gt; en cualquier momento, sin esperar a que éstos soliciten una página o recurso?&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://lh4.ggpht.com/-3wcP7VaADnw/T607SXZZDAI/AAAAAAAACCQ/8gTEMgwQ3aQ/image%25255B7%25255D.png?imgmax=800&quot; style=&quot;background-image: none; display: inline; float: right; margin: 0px 0px 10px 10px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; height=&quot;54&quot; width=&quot;54&quot; alt=&quot;image&quot; border=&quot;0&quot; /&gt;Si has respondido que sí a alguna de estas preguntas, &lt;strong&gt;SignalR te entusiasmará&lt;/strong&gt;. Es un marco de trabajo open source que permite saltarse las barreras impuestas por HTTP y su clásico modelo de petición/respuesta para conseguir aplicaciones más interactivas, dinámicas y colaborativas, en las que el servidor toma la iniciativa.&lt;br /&gt;
&lt;br /&gt;
No te pierdas este evento y aprende a poner un factor “¡uau!” en tus desarrollos.&lt;/div&gt;
&lt;br /&gt;
Os recuerdo que se trata de &lt;strong&gt;un Webcast&lt;/strong&gt;, o sea, que podéis asistir a este evento desde vuestro sillón favorito, acompañados de una buena cerveza y un saco de palomitas. Y por supuesto, es &lt;strong&gt;totalmente gratuito&lt;/strong&gt;.&lt;br /&gt;
&lt;br /&gt;
Lo único que debéis hacer para poder asistir es registraros:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Día: jueves 24 de mayo, 19:00h (hora peninsular española)&lt;/li&gt;
&lt;li&gt;URL del registro: &lt;a href=&quot;https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032512978&amp;amp;Culture=es-ES&quot; title=&quot;https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032512978&amp;amp;Culture=es-ES&quot;&gt;https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032512978&amp;amp;Culture=es-ES&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
No me faltéis, que paso lista ;-)&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/27752126-5937086874500553024?l=www.variablenotfound.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/Z2EmKB85Krv482L7EgLpeqhKtoc/0/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/Z2EmKB85Krv482L7EgLpeqhKtoc/0/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/Z2EmKB85Krv482L7EgLpeqhKtoc/1/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/Z2EmKB85Krv482L7EgLpeqhKtoc/1/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/vnf?a=pUYTPASIuPI:B_-9KpTd6ps:ecdYMiMMAMM&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/vnf?d=ecdYMiMMAMM&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/vnf?a=pUYTPASIuPI:B_-9KpTd6ps:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/vnf?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/vnf?a=pUYTPASIuPI:B_-9KpTd6ps:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/vnf?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/vnf?a=pUYTPASIuPI:B_-9KpTd6ps:4cEx4HpKnUU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/vnf?i=pUYTPASIuPI:B_-9KpTd6ps:4cEx4HpKnUU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/vnf?a=pUYTPASIuPI:B_-9KpTd6ps:F7zBnMyn0Lo&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/vnf?i=pUYTPASIuPI:B_-9KpTd6ps:F7zBnMyn0Lo&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/vnf?a=pUYTPASIuPI:B_-9KpTd6ps:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/vnf?i=pUYTPASIuPI:B_-9KpTd6ps:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/vnf?a=pUYTPASIuPI:B_-9KpTd6ps:I9og5sOYxJI&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/vnf?d=I9og5sOYxJI&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/vnf/~4/pUYTPASIuPI&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Wed, 16 May 2012 14:36:31 +0000</pubDate>
	<author>noreply@blogger.com (José M. Aguilar)</author>
</item>
<item>
	<title>Maestros del Web (Editorial): Curso Symfony 2: Instalando Bundles de Terceros</title>
	<guid isPermaLink="false">http://www.maestrosdelweb.com/?p=20051</guid>
	<link>http://www.maestrosdelweb.com/editorial/curso-symfony2-instlando-bundles-de-terceros/</link>
	<description>&lt;p&gt;En reiteradas ocaciones existe la necesidad de implementar librerías de terceros en nuestros proyectos con el objetivo primordial de aprovecharlas, reutilizar código y mejorar nuestros tiempos de entrega; como ya saben en Symfony 2 todo se distribuye en forma de “Bundles” y las librerías de terceros no son la excepción, además en symfony2bundles.org (actualmente &lt;a href=&quot;http://knpbundles.com/&quot;&gt;http://knpbundles.com/&lt;/a&gt;) podrás encontrar miles de bundles que podrías necesitar.&lt;/p&gt;
&lt;p&gt;En este capítulo nos concentraremos en la instalación de uno de los Bundles más atractivos para incluir en nuestros proyectos, se trata del &lt;a href=&quot;https://github.com/stof/StofDoctrineExtensionsBundle&quot;&gt;StofDoctrineExtensionsBundle&lt;/a&gt; por Christophe Coevoet el cual hace una implementación del complemento &lt;a href=&quot;https://github.com/l3pp4rd/DoctrineExtensions&quot;&gt;Doctrine2 behavioral extensions&lt;/a&gt; creado por Gediminas Morkevicius, cuyo propósito es proveer de los aclamados Comportamientos (behaviors) de Doctrine; en general explicaremos la configuración de 3 comportamientos ampliamente utilizados, como lo son Timestampable, Sluggable y Loggable, reiteramos que el objetivo del capítulo es la instalación de Bundles de Terceros en Symfony2 y no el de profundizar en todos los comportamientos que provee el StofDoctrineExtensionsBundle.&lt;/p&gt;
&lt;h3&gt;Paso 1: Instalando el Bundle&lt;/h3&gt;
&lt;p&gt;En Symfony 2 existen varias formas para la instalación de los bundles de terceros, entre ellas (y la más práctica) es la instalación por medio de submodule en GIT, si no sabes que es GIT te recomiendo visitar &lt;a href=&quot;http://progit.org/book/es/&quot;&gt;http://progit.org/book/es/&lt;/a&gt; y tratar de instalarlo en tu sistema.&lt;/p&gt;
&lt;p&gt;Comenzamos instalando la librería principal de Doctrine Behavioral Extensions, para ello accedemos a nuestra consola, nos ubicamos en la raíz del proyecto de symfony y ejecutamos:&lt;/p&gt;
&lt;div class=&quot;codigo&quot;&gt;
&lt;pre&gt;~$ git submodule add git://github.com/l3pp4rd/DoctrineExtensions.git vendor/gedmo-doctrine-extensions&lt;/pre&gt;
&lt;/div&gt;
&lt;div class=&quot;tipexperto&quot;&gt;&lt;h3&gt;Nota&lt;/h3&gt; &lt;div class=&quot;tipcont&quot;&gt;Si tienes problemas puedes descargar manualmente &lt;a href=&quot;https://github.com/l3pp4rd/DoctrineExtensions&quot;&gt;el paquete&lt;/a&gt;, sólo debes descomprimir su contenido y copiarlo al directorio /ruta_hacia_proyecto/&lt;strong&gt;vendor&lt;/strong&gt;/gedmo-doctrine-extensions&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Ahora si añadimos el StofDoctrineExtensionsBundle:&lt;/p&gt;
&lt;div class=&quot;codigo&quot;&gt;
&lt;pre&gt;~$ git submodule add git://github.com/stof/StofDoctrineExtensionsBundle.git vendor/bundles/Stof/DoctrineExtensionsBundle&lt;/pre&gt;
&lt;/div&gt;
&lt;div class=&quot;tipexperto&quot;&gt;&lt;h3&gt;Nota&lt;/h3&gt; &lt;div class=&quot;tipcont&quot;&gt;Si tienes problemas puedes descargar manualmente &lt;a href=&quot;https://github.com/stof/StofDoctrineExtensionsBundle&quot;&gt;el paquete&lt;/a&gt;, sólo debes descomprimir su contenido y copiarlo al directorio /ruta_hacia_proyecto/&lt;strong&gt;vendor/bundles&lt;/strong&gt;/Stof/DoctrineExtensionsBundle.&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Registramos los Namespaces en nuestro app/autoload.php:&lt;/p&gt;
&lt;pre class=&quot;brush: php; title: ; notranslate&quot;&gt;&amp;lt;?php

use Symfony\Component\ClassLoader\UniversalClassLoader;
use Doctrine\Common\Annotations\AnnotationRegistry;

$loader = new UniversalClassLoader();
$loader-&amp;gt;registerNamespaces(array(
    'Symfony'          =&amp;gt; array(__DIR__.'/../vendor/symfony/src', __DIR__.'/../vendor/bundles'),
    'Sensio'           =&amp;gt; __DIR__.'/../vendor/bundles',
    'JMS'              =&amp;gt; __DIR__.'/../vendor/bundles',
    'Doctrine\\Common' =&amp;gt; __DIR__.'/../vendor/doctrine-common/lib',
    'Doctrine\\DBAL'   =&amp;gt; __DIR__.'/../vendor/doctrine-dbal/lib',
    'Doctrine'         =&amp;gt; __DIR__.'/../vendor/doctrine/lib',
    'Monolog'          =&amp;gt; __DIR__.'/../vendor/monolog/src',
    'Assetic'          =&amp;gt; __DIR__.'/../vendor/assetic/src',
    'Metadata'         =&amp;gt; __DIR__.'/../vendor/metadata/src',
    // Aquí registramos:
    'Stof'  =&amp;gt; __DIR__.'/../vendor/bundles',
    'Gedmo' =&amp;gt; __DIR__.'/../vendor/gedmo-doctrine-extensions/lib',
));
// ... resto del archivo
&lt;/pre&gt;
&lt;p&gt;Añadimos el Bundle a nuestro app/AppKernel.php:&lt;/p&gt;
&lt;pre class=&quot;brush: php; title: ; notranslate&quot;&gt;&amp;lt;?php

use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Config\Loader\LoaderInterface;

class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
            new Symfony\Bundle\SecurityBundle\SecurityBundle(),
            new Symfony\Bundle\TwigBundle\TwigBundle(),
            new Symfony\Bundle\MonologBundle\MonologBundle(),
            new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
            new Symfony\Bundle\DoctrineBundle\DoctrineBundle(),
            new Symfony\Bundle\AsseticBundle\AsseticBundle(),
            new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
            new JMS\SecurityExtraBundle\JMSSecurityExtraBundle(),
            new MDW\BlogBundle\MDWBlogBundle(),
            new MDW\DemoBundle\MDWDemoBundle(),
            // Aquí Añadimos:
            new Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle(),
        );
// ... resto del archivo
&lt;/pre&gt;
&lt;p&gt;Básicamente es todo lo que se realiza para incluir un Bundle.&lt;/p&gt;
&lt;h3&gt;Paso 2: Configurando el Bundle&lt;/h3&gt;
&lt;p&gt;En nuestro caso el &lt;strong&gt;StofDoctrineExtensionsBundle&lt;/strong&gt; para funcionar requiere agregar configuración adicional al archivo app/config/&lt;strong&gt;config.yml&lt;/strong&gt; de la aplicación (la mayoría de los bundles pueden detallar tales configuraciones en su documentación), para ello agregamos estos segmentos:&lt;/p&gt;
&lt;p&gt;En la sección &lt;em&gt;Doctrine Configuration&lt;/em&gt;, añadimos al final el mapping para StofDoctrineExtensions Bundle:&lt;/p&gt;
&lt;div class=&quot;codigo&quot;&gt;
&lt;pre&gt;# Doctrine Configuration
doctrine:
    dbal:
        driver:   %database_driver%
        host:     %database_host%
        port:     %database_port%
        dbname:   %database_name%
        user:     %database_user%
        password: %database_password%
        charset:  UTF8

    orm:
        auto_generate_proxy_classes: %kernel.debug%
        auto_mapping: true
        # Añadimos el Mapping para StofDoctrineExtensionsBundle: -------------
        mappings:
            StofDoctrineExtensionsBundle: ~
# ... resto del archivo&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Luego añadimos &lt;em&gt;al final del mismo archivo&lt;/em&gt; la siguiente configuración:&lt;/p&gt;
&lt;div class=&quot;codigo&quot;&gt;
&lt;pre&gt;# Añadimos las configuraciones específicas para el StofDoctrineExtensionsBundle
stof_doctrine_extensions:
    default_locale: en_US
    orm:
        default:
            sluggable: true
            timestampable: true
            loggable: true
            #demás behaviors para activar&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Donde &lt;strong&gt;default:&lt;/strong&gt; representa la configuración para todos los entornos, eso quiere decir que puedes añadir una configuración específica para cada entorno.&lt;/p&gt;
&lt;h3&gt;Paso 3: Utilizando los Comportamientos (Behaviors) en los modelos&lt;/h3&gt;
&lt;p&gt;En este tutorial nos concentraremos en los comportamientos sluggable, timestampable y loggable, para hacer las cosas más fáciles se recomienda añadir el siguiente Namespace a cada una de nuestras entidades en donde queramos añadir los comportamientos:&lt;/p&gt;
&lt;pre class=&quot;brush: php; title: ; notranslate&quot;&gt;// añadimos luego del Namespace de la Entidad:
use Gedmo\Mapping\Annotation as Gedmo;
&lt;/pre&gt;
&lt;p&gt;Algunos Behaviors como Loggable disponen de Entidades propias que requieren crearse en base de datos, para garantizar ello solo debemos ejecutar en consola el comando siguiente, de este modo Doctrine creará las tablas necesarias para almacenar los datos generados por los comportamientos que lo requieran:&lt;/p&gt;
&lt;div class=&quot;codigo&quot;&gt;
&lt;pre&gt;~$ php app/console doctrine:schema:update --force&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Sluggable&lt;/strong&gt;: Permite que Doctrine cree automáticamente el “slug” o la típica cadena optimizada para buscadores utilizada comúnmente al indexar artículos de un blog. Para definir el slug debemos tener un &lt;em&gt;campo destino&lt;/em&gt; que es donde se almacenará y uno o más &lt;em&gt;campos origen&lt;/em&gt; (los Sluggable) de los cuales se construirá el slug y es tan simple como agregar los siguientes &lt;strong&gt;Metadatos&lt;/strong&gt; a nuestros campos del modelo:&lt;/p&gt;
&lt;pre class=&quot;brush: php; title: ; notranslate&quot;&gt;    // … dentro de una Entidad
    // Campo origen:
    /**
     * @var string $title
     *
     * @ORM\Column(name=&quot;title&quot;, type=&quot;string&quot;, length=255)
     * @Gedmo\Sluggable()
     */
    private $title;

    // … otras variables

    // Campo Destino:
    /**
     * @var string $slug
     *
     * @ORM\Column(name=&quot;slug&quot;, type=&quot;string&quot;, length=255)
     * @Gedmo\Slug(style=&quot;camel&quot;, separator=&quot;_&quot;, updatable=false, unique=true)
     */
    private $slug;
    // … dentro de una Entidad
&lt;/pre&gt;
&lt;p&gt;Note que el campo desde donde se creará el slug ($title) tiene el Metadato @Gedmo\Sluggable(), de hecho puede definir más de uno. En cambio el campo de destino ($slug) tiene el Metadato @Gedmo\Slug(…) y por convención debe ser uno solo, los argumentos style, separator, updatable y unique son opcionales y se detallan en la documentación propia del autor, en este ejemplo se tiene una forma básica de configuración.&lt;/p&gt;
&lt;p&gt;Cada vez que se cree un registro de la entidad, Doctrine automáticamente generará el slug y lo aplicará al campo destino, en el caso de modificaciones depende del valor del argumento updatable.&lt;br /&gt;
&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Timestampable:&lt;/strong&gt; permite que Doctrine gestione la actualización del Timestamp en campos específicos al realizar operaciones de inserción y/o actualización. Para definir un campo con Timestampable solo debemos añadir el Metadato Gedmo\Timestampable(on=”action”), donde &lt;em&gt;action&lt;/em&gt; puede ser created o updated respectivamente.&lt;/p&gt;
&lt;pre class=&quot;brush: php; title: ; notranslate&quot;&gt;    // … dentro de una Entidad
    // Campo created:
    /**
     * @var date $created
     *
     * @ORM\Column(name=&quot;created&quot;, type=&quot;date&quot;)
     * @Gedmo\Timestampable(on=&quot;create&quot;)
     */
    private $created;
    // Campo updated:
    /**
     * @var datetime $updated
     *
     * @ORM\Column(name=&quot;updated&quot;, type=&quot;datetime&quot;)
     * @Gedmo\Timestampable(on=&quot;update&quot;)
     */
    private $updated;
    // … dentro de una Entidad
&lt;/pre&gt;
&lt;p&gt;Doctrine automáticamente aplicará un nuevo Date al campo definido on=”create” al crear un nuevo registro de la entidad y actualizará el Timestamp del campo definido on=”update” al actualizar el registro de la entidad.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Loggable&lt;/strong&gt;: permite que Doctrine lleve un control de Versiones sobre los campos indicados, permitiendo consultar las versiones y revertir hacia una versión anterior.&lt;br /&gt;
Para crear campos con &lt;em&gt;log&lt;/em&gt; (control de versión) solo debemos añadir a cada campo el Metadato @Gedmo\Versioned(), además de añadir el Metadato @Gedmo\Loggable() a la Entidad correspondiente:&lt;/p&gt;
&lt;pre class=&quot;brush: php; title: ; notranslate&quot;&gt;// ... encabezados del archivo
// definimos el Metadato @Gedmo\Loggable() a la Entidad:
/**
 * MDW\BlogBundle\Entity\Articles
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass=&quot;MDW\BlogBundle\Entity\ArticlesRepository&quot;)
 * @Gedmo\Loggable()
 */
class Articles
{
    // … dentro de una Entidad
    // Campo $content será Versionable:
    /**
     * @var text $content
     *
     * @ORM\Column(name=&quot;content&quot;, type=&quot;text&quot;)
     * @Gedmo\Versioned()
     */
    private $content;
    // … demás contenido de la entidad
&lt;/pre&gt;
&lt;p&gt;Doctrine automáticamente supervisará los updates hacia los atributos marcados como Versioned de  la entidad y llevará un control de versiones en la Entidad (Stof\DoctrineExtensionsBundle\Entity\LogEntry), y gracias al Repositorio de dicha entidad (\Gedmo\Loggable\Entity\Repository\LogEntryRepository) podremos consultar las Versiones e incluso Revertir los cambios (función $logRepositoryInstance-&amp;gt;revert($Entity, $version);), aquí apreciamos un ejemplo de un controlador que lista los cambios:&lt;/p&gt;
&lt;pre class=&quot;brush: php; title: ; notranslate&quot;&gt;    // Ejemplo dentro de un Controller:
    public function updateArticleAction($id) {
      $em = $this-&amp;gt;getDoctrine()-&amp;gt;getEntityManager();

      $article = $em-&amp;gt;getRepository('MDWBlogBundle:Articles')-&amp;gt;findOneBy(array('id' =&amp;gt; $id));

      $article-&amp;gt;setContent('editado');
      $em-&amp;gt;persist($article);
      $em-&amp;gt;flush();

      $content = '';
      // ver cambios
      $log = $em-&amp;gt;getRepository('Stof\DoctrineExtensionsBundle\Entity\LogEntry');
      /* @var $log \Gedmo\Loggable\Entity\Repository\LogEntryRepository */

      $query_changues = $log-&amp;gt;getLogEntriesQuery($article); //use $log-&amp;gt;getLogEntries() para un result directo
      $changues = $query_changues-&amp;gt;getResult();
      /* @var $version Stof\DoctrineExtensionsBundle\Entity\LogEntry */
      foreach ($changues as $version) {
        $fields = $version-&amp;gt;getData();
        $content.= ' fecha: ' .
            $version-&amp;gt;getLoggedAt()-&amp;gt;format('d/m/Y H:i:s') .
            ' accion: &quot;'  . $version-&amp;gt;getAction() . '&quot;'.
            ' usuario: &quot;' . $version-&amp;gt;getUsername() . '&quot;'.
            ' objeto: &quot;'  . $version-&amp;gt;getObjectClass() . '&quot;'.
            ' id: &quot;'      . $version-&amp;gt;getObjectId() . '&quot;'.
            ' Version: &quot;' . $version-&amp;gt;getVersion() . '&quot;'.
            ' datos:';
            foreach ($fields as $field =&amp;gt; $value) {
              $content.= &quot;-- &quot; . $field . ': '. $value . '';
            }
      }
      // generamos una salida básica
      $r = new \Symfony\Component\HttpFoundation\Response();
      $r-&amp;gt;setContent($content);
      return $r;
    }
&lt;/pre&gt;
&lt;p&gt;De esta forma podemos aprovecharnos de algunos de los comportamientos más utilizados de Doctrine, reutilizar código y automatizar tareas en nuestros modelos.&lt;/p&gt;
&lt;h3&gt;Resumen Final&lt;/h3&gt;
&lt;p&gt;Como pudimos apreciar con Symfony2 disponemos de una amplia variedad de bundles de terceros a incluir para extender las capacidades de nuestras aplicaciones, aprovechar y reutilizar código mejorando considerablemente el tiempo en el desarrollo de nuestros proyectos; aprendimos que existen diversas formas de incluir nuestros bundles y que en dado caso podemos hacer instalaciones a mano, también de lo importante que es seguir la documentación de cada bundle para agregarlo en el Autoload o Kernel según corresponda y aplicar las configuraciones requeridas por el mismo.&lt;/p&gt;
&lt;hr /&gt;&lt;p style=&quot;height: 64px;&quot;&gt;&lt;img src=&quot;http://0.gravatar.com/avatar/0457a9460a25fb50aca9a46f561f37c9?s=64&amp;amp;d=http%3A%2F%2Fwww.maestrosdelweb.com%2Fwp-content%2Fthemes%2Fmdw2%2Fimages%2Fno-avatar64.png%3Fs%3D64&amp;amp;r=G&quot; style=&quot;float: left; padding: 0 5px;&quot; height=&quot;64&quot; width=&quot;64&quot; alt=&quot;Maycol Alvarez&quot; class=&quot;avatar avatar-64 photo&quot; /&gt; &lt;strong&gt;Maycol Alvarez&lt;/strong&gt; para &lt;a href=&quot;http://www.maestrosdelweb.com&quot;&gt;Maestros del Web&lt;/a&gt;.&lt;br /&gt;&lt;a href=&quot;http://www.maestrosdelweb.com/editorial/curso-symfony2-instlando-bundles-de-terceros/#respond&quot;&gt;Agrega tu comentario&lt;/a&gt; | &lt;a href=&quot;http://www.maestrosdelweb.com/editorial/curso-symfony2-instlando-bundles-de-terceros/&quot;&gt;Enlace permanente&lt;/a&gt; al artículo&lt;/p&gt;&lt;hr style=&quot;clear: both;&quot; /&gt;
		&lt;p&gt;&lt;strong&gt;Síguenos en:&lt;/strong&gt; &lt;img src=&quot;http://www.maestrosdelweb.com/diseno/imagenes/twitter.png&quot; style=&quot;vertical-align: middle;&quot; /&gt; &lt;a href=&quot;http://twitter.com/maestros&quot;&gt;@maestros&lt;/a&gt; | &lt;img src=&quot;http://www.maestrosdelweb.com/diseno/imagenes/facebook.png&quot; style=&quot;vertical-align: middle;&quot; /&gt; &lt;a href=&quot;http://facebook.com/maestrosdelweb&quot;&gt;Fan page&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Wed, 16 May 2012 14:13:07 +0000</pubDate>
</item>
<item>
	<title>Anieto2k: dynamo.js, añade un curioso efecto a tu HTML con jQuery</title>
	<guid isPermaLink="false">http://www.anieto2k.com/?p=10380</guid>
	<link>http://feedproxy.google.com/~r/anieto2k/Xzqf/~3/O7QYrYmduIA/</link>
	<description>&lt;a href=&quot;http://jordanscales.com/dynamo/&quot;&gt;Dynamo.js&lt;/a&gt; es un plugin jQuery que nos permite añadir un curioso efecto a nuestros contenidos HTML. El efecto me recuerda al reloj de la película &lt;a href=&quot;http://www.imdb.com/title/tt0107048/&quot;&gt;&quot;Atrapado en el tiempo&quot; de Bill Murray&lt;/a&gt;, ya que nos permite definir una serie de palabras que irán solapándose unas sobre las otras como si de el paso de minutos se tratara... no sé como explicarlo mejor, así que será mejor que &lt;a href=&quot;http://jordanscales.com/dynamo/&quot;&gt;lo veáis vosotros mismos&lt;/a&gt; :D

&lt;pre&gt;&lt;code&gt;//HTML
&amp;lt;p&amp;gt;I wish I could 
   &amp;lt;span &lt;strong&gt;class=&quot;dynamo&quot;&lt;/strong&gt; data-lines=&quot;modify,mutate,morph,switch&quot;&amp;gt;change&amp;lt;/span&amp;gt;
the text here.&amp;lt;/p&amp;gt;

// Javascript
$(function() {
  $('.dynamo').dynamo();
});
&lt;/code&gt;&lt;/pre&gt;

Además dispone de solo 4 atributos para personalizar el efecto y todos ellos los indicaremos en &lt;a href=&quot;http://www.anieto2k.com/2011/07/25/pom-programacion-orientada-a-maquetadores/&quot;&gt;el elemento HTML mediante atributos &lt;code&gt;data-*&lt;/code&gt; haciendo que este se programe a si mismo&lt;/a&gt;.
&lt;ul&gt;
	&lt;li&gt;&lt;code&gt;data-lines&lt;/code&gt;: Reemplazos separados por comas, el texto inicial no está incluido.&lt;/li&gt;
	&lt;li&gt;&lt;code&gt;data-speed&lt;/code&gt;: Velocidad de la transición (default: 350ms)&lt;/li&gt;
	&lt;li&gt;&lt;code&gt;data-delay&lt;/code&gt;: Retardo entre ciclos (default: 3000ms)&lt;/li&gt;
	&lt;li&gt;&lt;code&gt;data-center&lt;/code&gt;: Centrar el texto en contenedor dynamo (default: false)&lt;/li&gt;
&lt;/ul&gt;

Sencillo, ¿verdad?&lt;h3&gt;Artículos relacionados&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.anieto2k.com/2006/08/01/sistema-solar-en-javascript/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: Sistema Solar en Javascript&quot;&gt;Sistema Solar en Javascript&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.anieto2k.com/2008/07/25/spacegallery-la-galeria-al-estilo-timemachine-de-jquery/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: SpaceGallery, la galería al estilo TimeMachine de jQuery&quot;&gt;SpaceGallery, la galería al estilo TimeMachine de jQuery&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.anieto2k.com/2009/05/05/simulando-la-gravedad-con-jquery/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: Simulando la gravedad con jQuery&quot;&gt;Simulando la gravedad con jQuery&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.anieto2k.com/2007/09/24/efecto-bounce-con-scriptaculous/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: Efecto Bounce con Script.aculo.us&quot;&gt;Efecto Bounce con Script.aculo.us&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.anieto2k.com/2006/02/09/efecto-menu-mac-os/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: Efecto menu MAC OS&quot;&gt;Efecto menu MAC OS&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;http://www.anieto2k.com&quot; id=&quot;209.85.144.84&quot;&gt;&lt;img src=&quot;http://www.anieto2k.com/favicon.ico&quot; alt=&quot;aNieto2k&quot; rel=&quot;209.85.144.84&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/anieto2k/Xzqf/~4/O7QYrYmduIA&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Wed, 16 May 2012 11:50:48 +0000</pubDate>
</item>
<item>
	<title>Anieto2k: Node.js para yayodesarrolladores web</title>
	<guid isPermaLink="false">http://www.anieto2k.com/?p=10388</guid>
	<link>http://feedproxy.google.com/~r/anieto2k/Xzqf/~3/uh99FANHz4c/</link>
	<description>Me considero yayodesarrollador web, no por que sea viejo sino por que soy de esa generación de desarrolladores que conocieron la web en su fase 1.0 y que formaron parte de &lt;a href=&quot;http://www.anieto2k.com/2007/08/03/consecuencias-de-la-web-20-y-la-llegada-de-la-web-30/&quot;&gt;la estandarización de la web 2.0&lt;/a&gt;. Soy un desarrollador web que se encuentra más cómodo desarrollando en Javascript &quot;puro&quot; que&lt;a href=&quot;http://www.anieto2k.com/2009/04/01/%C2%BFes-jquery-el-mejor-framework-js/&quot;&gt; usando jQuery &lt;/a&gt;y que aún recuerda como hacer &lt;a href=&quot;http://www.anieto2k.com/2007/04/21/ajax-y-elegancia/&quot;&gt;una petición Ajax &quot;a pelo&quot;&lt;/a&gt;, usando el objeto &lt;code&gt;XMLHTTPRequest&lt;/code&gt; y el odiado &lt;code&gt;ActiveX&lt;/code&gt; para que IE no se queje.

De esa generación de &lt;a href=&quot;http://www.anieto2k.com/2005/12/06/primer-contacto-con-ajax/&quot;&gt;desarrolladores que acababan de conocer Ajax&lt;/a&gt; y lo usaban para todo, hasta para lo que ahora te da vergüenza admitir, que descubrieron que &lt;a href=&quot;http://www.anieto2k.com/2009/01/14/selectores-css-y-frameworks-actuales/&quot;&gt;los selectores &lt;code&gt;CSS3&lt;/code&gt;&lt;/a&gt; iban a revolucionar el Javascript que conocían y que &lt;a href=&quot;http://www.anieto2k.com/2008/09/02/probando-google-chrome-el-navegador-de-google/&quot;&gt;vieron como Google Chrome, con su motor  de Javascript V8 entraba en el mercado para literalmente darle la vuelta&lt;/a&gt;.

Y aquí es donde entre &lt;strong&gt;Node.js&lt;/strong&gt;, que está basado en el uso de &lt;em&gt;V8&lt;/em&gt; como motor de procesamiento de javascript, pero a diferencia de lo que habíamos visto en nuestros tiempo mozos, hace 10 años, esta vez se usa en el servidor... ¿!EN EL SERVIDOR!?, si si, como lo oyes, puedes programar en Javascript pero en el servidor...O.o.

La idea no es nueva, &lt;a href=&quot;http://www.anieto2k.com/2008/01/23/javascript-en-el-servidor-con-jaxer/&quot;&gt;por allá en el 2008 aparecía Jaxer que intentaba hacer algo parecido&lt;/a&gt;, y poco más he leido después de él. Y lo que se consigue es acercar las maravillas de un lenguaje como Javascript, &lt;a href=&quot;http://www.anieto2k.com/2006/10/15/javascript-no-obstructivo-manual-de-buenas-maneras/&quot;&gt;con capacidad de orientarse a eventos&lt;/a&gt; permitiendo &lt;a href=&quot;http://www.anieto2k.com/2009/11/19/gestion-de-eventos-vs-delegacion-de-eventos/&quot;&gt;programar de forma asíncrona fácilmente&lt;/a&gt; al servidor, todo ello por que este tipo de programación consigue unos resultados de rendimiento espectaculares al estar básicamente en estado latente esperando a que se ejecute el evento X o el evento Y.
&lt;h3&gt;Vale vale, pero ¿nos ponemos a ello?&lt;/h3&gt;
Lo primero es instalarlo, para ello, lo descargamos de la página oficial y lo instalamos (&lt;a href=&quot;http://nodejs.org/#download&quot;&gt;doble click en Windows y en Mac&lt;/a&gt;, &lt;a href=&quot;https://github.com/joyent/node/wiki/Installation&quot;&gt;make &amp;amp;&amp;amp; make install en Linux&lt;/a&gt;). Una vez instalado ya podemos ponernos a tocar código que es lo que nos gusta!
&lt;pre&gt;&lt;code&gt;// Cargamos el módulo HTTP
var http = require('http');

// Creamos un servidor HTTP que devolverá &quot;Hola Mundo!&quot; en cualquier petición
var server = http.createServer(function (request, response) {
  response.writeHead(200, {&quot;Content-Type&quot;: &quot;text/plain&quot;});
  response.end(&quot;Hola Mundo!\n&quot;);
});

// Escuchamos el puerto 8000
server.listen(8000);

// Mostramos un mensaje en la terminal
console.log(&quot;Server running at http://127.0.0.1:8000/&quot;);&lt;/code&gt;&lt;/pre&gt;
El típico &quot;&lt;em&gt;Hola Mundo&lt;/em&gt;&quot; nos muestra ya por donde van a ir los tiros en cuenta al asincronismo que os comentaba. El objeto server, queda asociado al puerto &lt;em&gt;8000&lt;/em&gt; que ejecutará el &lt;em&gt;callback&lt;/em&gt; definido unas líneas por encima.

Ahora para ejecutar esto en tu máquina, tendrás que guardar este código dentro de un fichero &lt;code&gt;.js&lt;/code&gt; para ser llamado por &lt;strong&gt;node.js&lt;/strong&gt; de la siguiente forma.

&lt;pre&gt;&lt;code&gt;node fichero.js&lt;/code&gt;&lt;/pre&gt;

El resultado, en la consola que hemos ejecutado el comando debería parecerse a esto:

&lt;a href=&quot;http://www.anieto2k.com/wp-content/uploads/2012/05/Captura-de-pantalla-2012-05-15-a-las-23.09.42.png&quot; rel=&quot;lightbox&quot;&gt;&lt;img src=&quot;http://www.anieto2k.com/wp-content/uploads/2012/05/Captura-de-pantalla-2012-05-15-a-las-23.09.42-498x300.png&quot; alt=&quot;Captura de pantalla 2012-05-15 a la(s) 23.09.42&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.anieto2k.com/wp-content/uploads/2012/05/Captura-de-pantalla-2012-05-15-a-las-23.09.42.png&quot;&gt;&lt;small&gt;(Ver Imagen)&lt;/small&gt;&lt;/a&gt;

Y como la consola indica, nos dirigiremos al enlace &lt;a href=&quot;http://127.0.0.1:8000/&quot;&gt;&lt;code&gt;http://127.0.0.1:8000/&lt;/code&gt;&lt;/a&gt; y veremos el texto &quot;&lt;strong&gt;Hola Mundo!&lt;/strong&gt;&quot;. Sencillo, rápido y funcional.
&lt;h3&gt;Módulo, módulos y más módulos&lt;/h3&gt;
Parte del éxito de Node.js reside en la comodidad para trabajar con módulos, y la facilidad de incluirlos a tu proyecto, traído de otros lenguajes se adhiere a nuestros proyectos de forma tan eficiente y práctica que no da pereza generar nuevos y nuevo módulos. De ahí que la comunidad se haya puesto las pilas y haya generado implementaciones de casi todos los componentes que te puedas imaginar.
&lt;h4&gt;&lt;code&gt;npm install package&lt;/code&gt;&lt;/h4&gt;
El comando &lt;code&gt;npm&lt;/code&gt;, se instala con &lt;strong&gt;Node.js&lt;/strong&gt; y mediante esa sencilla sintaxis podemos añadir un módulo a nuestro proyecto o al repositorio global de &lt;strong&gt;node.js&lt;/strong&gt; dejándolo disponible para todos los proyectos dentro de esa máquina (&lt;code&gt;node install -g package&lt;/code&gt;).

&lt;h4&gt;&lt;code&gt;package.json&lt;/code&gt;&lt;/h4&gt;
Para hacernos aún la vida más fácil, podemos especificar el fichero &lt;code&gt;package.json&lt;/code&gt;, en el que definiremos el nombre de nuestra aplicación y las dependencias que este necesita.
&lt;pre&gt;&lt;code&gt;{
    &quot;name&quot;: &quot;application-name&quot;
  , &quot;version&quot;: &quot;0.0.1&quot;
  , &quot;private&quot;: true
  , &quot;dependencies&quot;: {
      &quot;express&quot;: &quot;2.5.8&quot;
      , &quot;stylus&quot; : &quot;0.27.0&quot;
      , &quot;coffee-script&quot;: &quot;1.3.2&quot;
      , &quot;swig&quot;: &quot;0.11.2&quot;
  }
}&lt;/code&gt;&lt;/pre&gt;
Luego, como si de magia se tratara solicitamos que se instalen todas las dependencias del proyecto.

&lt;pre&gt;&lt;code&gt;npm install -d&lt;/code&gt;&lt;/pre&gt;

Y automáticamente empiezan a descargar los paquetes y guardarlos en la carpeta &lt;code&gt;node_modules/&lt;/code&gt; del proyecto.

&lt;a href=&quot;http://www.anieto2k.com/wp-content/uploads/2012/05/Captura-de-pantalla-2012-05-15-a-las-23.28.16.png&quot; rel=&quot;lightbox&quot;&gt;&lt;img src=&quot;http://www.anieto2k.com/wp-content/uploads/2012/05/Captura-de-pantalla-2012-05-15-a-las-23.28.16-498x300.png&quot; alt=&quot;Captura de pantalla 2012-05-15 a la(s) 23.28.16&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.anieto2k.com/wp-content/uploads/2012/05/Captura-de-pantalla-2012-05-15-a-las-23.28.16.png&quot;&gt;&lt;small&gt;(Ver Imagen)&lt;/small&gt;&lt;/a&gt;

Simplemente eso, cargamos lo que necesitamos y lo empezamos a usar en nuestro proyecto, así de sencillo. Esto da lugar a que un proyecto node.js, incluya frameworks para casi cualquier cosa, para escribir HTML más rápido (&lt;a href=&quot;http://jade-lang.com/&quot;&gt;jade&lt;/a&gt;), para hacer un Javascript más eficiente (&lt;a href=&quot;http://coffeescript.org/&quot;&gt;CoffeeScript&lt;/a&gt;) o para que las CSS's se comporten como un lenguaje de programación (&lt;a href=&quot;http://learnboost.github.com/stylus/&quot;&gt;Stylus&lt;/a&gt;), o como he dicho antes, para hacer casi cualquier cosa.

Incluso, proyectos que juntan estos y otros frameworks/módulos y definen una forma ágil y robusta de trabajar como &lt;a href=&quot;http://expressjs.com/&quot;&gt;ExpressJS&lt;/a&gt; o &lt;a href=&quot;http://meteor.com/&quot;&gt;Meteor&lt;/a&gt; que merecen la pena tratar con más detalle en otra serie de posts.&lt;h3&gt;Artículos relacionados&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.anieto2k.com/2012/05/13/js-el-hijo-bastardo-entre-javascript-y-c/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: *JS, el hijo bastardo entre Javascript y C&quot;&gt;*JS, el hijo bastardo entre Javascript y C&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.anieto2k.com/2007/03/09/comparativas-de-getelementsbyclassname/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: Comparativas de getElementsByClassName&quot;&gt;Comparativas de getElementsByClassName&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.anieto2k.com/2006/10/21/delicious-vs-digg/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: Delicious vs Digg&quot;&gt;Delicious vs Digg&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.anieto2k.com/2008/06/17/flock-2-mejora-gracias-a-firefox-3/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: Flock 2 mejora gracias a Firefox 3&quot;&gt;Flock 2 mejora gracias a Firefox 3&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.anieto2k.com/2008/03/03/createelements-una-funcion-para-ahorrarte-mucho-codigo/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: createElements() una función para ahorrarte mucho código&quot;&gt;createElements() una función para ahorrarte mucho código&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;http://www.anieto2k.com&quot; id=&quot;209.85.144.84&quot;&gt;&lt;img src=&quot;http://www.anieto2k.com/favicon.ico&quot; alt=&quot;aNieto2k&quot; rel=&quot;209.85.144.84&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/anieto2k/Xzqf/~4/uh99FANHz4c&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Wed, 16 May 2012 10:48:26 +0000</pubDate>
</item>
<item>
	<title>Línea de código: Poner música en tu web con HTML5</title>
	<guid isPermaLink="false">http://lineadecodigo.com/?p=4311</guid>
	<link>http://feedproxy.google.com/~r/LineaDeCodigo/~3/9kSvPpoyRNg/</link>
	<description>&lt;p&gt;Una de las cosas que ya está estandarizada en &lt;a href=&quot;http://www.manualweb.net/tutorial-html5/&quot; title=&quot;Tutorial de HTML5&quot;&gt;HTML5&lt;/a&gt; es la reproducción de elementos de audio. Es decir, podemos poder música en la web de una forma estándar.&lt;/p&gt;
&lt;p&gt;Para poder poner música en las webs, &lt;a href=&quot;http://www.manualweb.net/tutorial-html5/&quot; title=&quot;Tutorial de HTML5&quot;&gt;HTML5&lt;/a&gt; ha estandarizado el elemento &lt;a href=&quot;http://www.w3api.com/wiki/HTML5:AUDIO&quot; title=&quot;Elemento AUDIO de HTML5&quot;&gt;AUDIO&lt;/a&gt;. Así que, lo que tendremos que hacer, para poner un archivo de música será insertar la siguiente etiqueta:&lt;/p&gt;
&lt;pre style=&quot;font-family: monospace;&quot; class=&quot;html4strict&quot;&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;audio &lt;a href=&quot;http://w3api.com/wiki/HTML:src&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;src&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;cancion&quot;&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;audio&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Por lo tanto, si nuestra canción es &quot;micancion.mp3&quot; el código a utilizar será:&lt;/p&gt;
&lt;pre style=&quot;font-family: monospace;&quot; class=&quot;html4strict&quot;&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;audio &lt;a href=&quot;http://w3api.com/wiki/HTML:src&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;src&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;micancion.mp3&quot;&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;audio&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Si escribimos solamente este código no llegaremos muy lejos ya que, por defecto, el elemento de audio no se muestra. Por lo tanto no podremos utilizar los botones de play, stop, pause,... Así, si queremos que el elemento de &lt;a href=&quot;http://www.w3api.com/wiki/HTML5:AUDIO&quot; title=&quot;Elemento AUDIO de HTML5&quot;&gt;AUDIO&lt;/a&gt;&lt;a href=&quot;http://www.w3api.com/wiki/HTML5:AUDIO.controls&quot; title=&quot;Atributo controls del elemento AUDIO de HTML5&quot;&gt;controls&lt;/a&gt;.&lt;/p&gt;
&lt;pre style=&quot;font-family: monospace;&quot; class=&quot;html4strict&quot;&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;audio &lt;a href=&quot;http://w3api.com/wiki/HTML:src&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;src&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;micancion.mp3&quot;&lt;/span&gt; controls&amp;gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;audio&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Así ya tendremos el reproductor que nos permita poner la música en nuestra web con &lt;a href=&quot;http://www.manualweb.net/tutorial-html5/&quot; title=&quot;Tutorial de HTML5&quot;&gt;HTML5&amp;lt;/a.&amp;gt;&lt;/a&gt;&lt;/p&gt;&lt;a href=&quot;http://www.manualweb.net/tutorial-html5/&quot; title=&quot;Tutorial de HTML5&quot;&gt;
&lt;/a&gt;&lt;p&gt;&lt;a href=&quot;http://www.manualweb.net/tutorial-html5/&quot; title=&quot;Tutorial de HTML5&quot;&gt;Los formatos que podemos reproducir mediante el elemento &lt;/a&gt;&lt;a href=&quot;http://www.w3api.com/wiki/HTML5:AUDIO&quot; title=&quot;Elemento AUDIO de HTML5&quot;&gt;AUDIO&lt;/a&gt; de &lt;a href=&quot;http://www.manualweb.net/tutorial-html5/&quot; title=&quot;Tutorial de HTML5&quot;&gt;HTML5&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MPEG-1 audio layer 3&lt;/strong&gt;, que son los más que de sobra conocidos como MP3 y extensión .mp3.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Advanced Audio Coding&lt;/strong&gt;, mejoraban la calidad de sonido de los MP3 y es un formato promovido por Apple. Su extensión es .acc. Este formato funciona bajo pantentes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vorbis&lt;/strong&gt;, o conocido como Ogg Vorbis. Es un formato libre de patentes. La extensión que utilizan es .ogg&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Similar Posts:&lt;/strong&gt;
&lt;/p&gt;&lt;ul class=&quot;similar-posts&quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://lineadecodigo.com/html/embed-musica-de-fondo-en-tu-pagina-web/&quot; rel=&quot;bookmark&quot; title=&quot;Marzo 24, 2007&quot;&gt;Embed: Música de fondo en tu página web&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://lineadecodigo.com/java/reproducir-musica-por-java/&quot; rel=&quot;bookmark&quot; title=&quot;Abril 24, 2010&quot;&gt;Reproducir música por java&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://lineadecodigo.com/html5/iniciar-automaticamente-un-video-en-html5/&quot; rel=&quot;bookmark&quot; title=&quot;Enero 16, 2012&quot;&gt;Iniciar automáticamente un vídeo en HTML5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://lineadecodigo.com/html/cargar-un-video-avi-asf-o-wmv-en-mi-pagina-web/&quot; rel=&quot;bookmark&quot; title=&quot;Agosto 29, 2007&quot;&gt;Cargar un vídeo AVI, ASF o WMV en mi página web&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://lineadecodigo.com/html/utilizando-la-etiqueta-address/&quot; rel=&quot;bookmark&quot; title=&quot;Septiembre 8, 2010&quot;&gt;Utilizando la etiqueta ADDRESS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/QHshufBSbn13gqRN3Z9vawxqXjc/0/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/QHshufBSbn13gqRN3Z9vawxqXjc/0/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/QHshufBSbn13gqRN3Z9vawxqXjc/1/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/QHshufBSbn13gqRN3Z9vawxqXjc/1/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?a=9kSvPpoyRNg:SHyKfSBmggo:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?a=9kSvPpoyRNg:SHyKfSBmggo:F7zBnMyn0Lo&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?i=9kSvPpoyRNg:SHyKfSBmggo:F7zBnMyn0Lo&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?a=9kSvPpoyRNg:SHyKfSBmggo:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?i=9kSvPpoyRNg:SHyKfSBmggo:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?a=9kSvPpoyRNg:SHyKfSBmggo:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?a=9kSvPpoyRNg:SHyKfSBmggo:tKBiNdHYW3c&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?d=tKBiNdHYW3c&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/LineaDeCodigo/~4/9kSvPpoyRNg&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Wed, 16 May 2012 06:00:52 +0000</pubDate>
</item>
<item>
	<title>Berriart: Ejecutar crons y evitar que se solapen</title>
	<guid isPermaLink="false">http://www.berriart.com/?p=951</guid>
	<link>http://feedproxy.google.com/~r/berriart/~3/BJQ7x-_xiTA/</link>
	<description>&lt;p&gt;En más de una ocasión he tenido problemas de solapamiento a la hora de ejecutar &lt;em&gt;scripts&lt;/em&gt; desde el &lt;em&gt;crontab&lt;/em&gt;. Porque si decidimos usar un &lt;em&gt;cron job&lt;/em&gt; para ejecutar &lt;em&gt;scripts&lt;/em&gt; periódicamente con intervalos pequeños de tiempo, o también &lt;em&gt;scripts&lt;/em&gt; con mucho tiempo de ejecución (a veces incluso mezclamos ambas cosas) es probable que corramos el riesgo de que los &lt;em&gt;scripts&lt;/em&gt; se solapen y se cargue demasiado el servidor, o que incluso ‘se cuelgue’. Pienso además que nos pasa más a menudo a los programadores de PHP (sobretodo porque seguramente ese &lt;em&gt;cron job&lt;/em&gt; no debería estar hecho en PHP, pero somos así de monolingüistas).&lt;/p&gt;
&lt;p&gt;Una posible solución, y que es la que usaba hasta hace poco, es la de crear un fichero de control: Al iniciar la ejecución del &lt;em&gt;script&lt;/em&gt; lo primero sería comprobar si ese fichero existe y comenzar solo si no está creado, si todo va bien lo siguiente sería crearlo para evitar el solapamiento y borrarlo justo al finalizar la ejecución.&lt;/p&gt;
&lt;p&gt;Esta solución no me gustaba del todo porque si por cualquier razón el &lt;em&gt;script&lt;/em&gt; no acababa de ejecutarse, el fichero de control no se borraba y entonces nunca más se volvía a ejecutar hasta que te dabas cuenta y borrabas el fichero de control manualmente. Por eso he pensado que lo mejor es comprobar directamente si el &lt;em&gt;script&lt;/em&gt; está en ejecución antes de lanzar el siguiente sin usar fichero de control.&lt;/p&gt;
&lt;p&gt;Para probarlo he usado un script que seguro se va a solapar:&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;php&quot;&gt;&amp;lt;?php
while(1) {
    $zero = 0;
}
&lt;/pre&gt;
&lt;p&gt;Para ejecutarlo desde el &lt;em&gt;cron&lt;/em&gt; lo que he hecho es un pequeño &lt;em&gt;shell script&lt;/em&gt; que también va a ser el encargado de evitar el solapamiento:&lt;/p&gt;
&lt;pre name=&quot;code&quot;&gt;#!/bin/bash
PHP_EXECUTABLE=&quot;/usr/bin/php&quot;
SCRIPT_DIRECTORY=&quot;/home/alberto&quot;
SCRIPT_NAME=&quot;test.php&quot;
if ps -fea | grep $SCRIPT_NAME | grep -v grep
then
    date
    echo &quot;Overlaping message end&quot;
else
    cd $SCRIPT_DIRECTORY
    $PHP_EXECUTABLE $SCRIPT_DIRECTORY&quot;/&quot;$SCRIPT_NAME &amp;gt; /dev/null 2&amp;gt;&amp;amp;1
fi
&lt;/pre&gt;
&lt;p&gt;Como podéis ver lo que hago es comprobar con el comando &lt;em&gt;ps&lt;/em&gt; si el &lt;em&gt;script&lt;/em&gt; está en ejecución antes de lanzarlo de nuevo. Lo que hay que hacer luego simplemente es añadirlo al &lt;em&gt;crontab&lt;/em&gt;, en mi caso dejando un pequeño log para poder comprobar si se solapa o no:&lt;/p&gt;
&lt;pre name=&quot;code&quot;&gt;* * * * * /home/alberto/test.sh &amp;gt; /home/alberto/test.log
&lt;/pre&gt;
&lt;p&gt;¿Qué os parece el método? ¿Qué habéis hecho vosotros si alguna vez os ha pasado?&lt;/p&gt;
&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/berriart?a=BJQ7x-_xiTA:N3IAEJSEkuo:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/berriart?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/berriart?a=BJQ7x-_xiTA:N3IAEJSEkuo:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/berriart?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/berriart?a=BJQ7x-_xiTA:N3IAEJSEkuo:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/berriart?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/berriart?a=BJQ7x-_xiTA:N3IAEJSEkuo:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/berriart?i=BJQ7x-_xiTA:N3IAEJSEkuo:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/berriart?a=BJQ7x-_xiTA:N3IAEJSEkuo:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/berriart?i=BJQ7x-_xiTA:N3IAEJSEkuo:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/berriart/~4/BJQ7x-_xiTA&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Tue, 15 May 2012 21:29:09 +0000</pubDate>
</item>
<item>
	<title>Anieto2k: LESS.js, CSS enriquecido en el cliente</title>
	<guid isPermaLink="false">http://www.anieto2k.com/?p=10368</guid>
	<link>http://feedproxy.google.com/~r/anieto2k/Xzqf/~3/NxIDHvvD230/</link>
	<description>Hace unos días vimos&lt;a href=&quot;http://www.anieto2k.com/2012/05/07/sass-extiende-tus-csss/&quot;&gt; SASS, una herramienta pensada para agilizar la maquetación CSS&lt;/a&gt; de nuestros proyectos. Vimos que ofrecía una serie de herramientas que nos permitía trabajar con una versión enriquecida de CSS con variables, funciones, anidamiento de selectores,...

&lt;h3&gt;LESS.js&lt;/h3&gt;
Pues &lt;a href=&quot;http://lesscss.org/&quot;&gt;LESS.js, nos ofrece más de lo mismo&lt;/a&gt;, usando una sintaxis similar a que vimos con SASS, y nos ofrece las mismas maravillas que ya hemos visto.

&lt;h4&gt;Variables&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;@color: #4D926F;

#header {
  color: @color;
}
h2 {
  color: @color;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;Mixins&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;.rounded-corners (@radius: 5px) {
  border-radius: @radius;
  -webkit-border-radius: @radius;
  -moz-border-radius: @radius;
}

#header {
  .rounded-corners;
}
#footer {
  .rounded-corners(10px);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Anidamiento de selectores&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;#header {
  h1 {
    font-size: 26px;
    font-weight: bold;
  }
  p { font-size: 12px;
    a { text-decoration: none;
      &amp;amp;:hover { border-width: 1px }
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Funciones y operaciones&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;@the-border: 1px;
@base-color: #111;
@red:        #842210;

#header {
  color: @base-color * 3;
  border-left: @the-border;
  border-right: @the-border * 2;
}
#footer { 
  color: @base-color + #003300;
  border-color: desaturate(@red, 10%);
}
&lt;/code&gt;&lt;/pre&gt;

Como podemos ver, nuestros CSS's cogen una aspecto de lenguaje de programación que permite dinamizarlas fácilmente.

&lt;h3&gt;Compilación en el cliente&lt;/h3&gt;
A diferencia de SASS, &lt;em&gt;LESS.js&lt;/em&gt; permite compilar las hojas de estilos dinámicas (&lt;code&gt;.less&lt;/code&gt;) directamente en el navegador mediante una librería JS que cargaremos en nuestras páginas (para Chrome, Safari y Firefox). 

&lt;pre&gt;&lt;code&gt;&amp;lt;head&amp;gt;
	&amp;lt;link rel=&quot;stylesheet/less&quot; type=&quot;text/css&quot; href=&quot;styles.less&quot;&amp;gt;
	&amp;lt;script src=&quot;less.js&quot; type=&quot;text/javascript&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/head&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
Es importante poner las hojas de estilos antes de añadir la librería javascript e indicar que mediante el atributo &lt;code&gt;rel&lt;/code&gt; que el tipo de stylesheet del que se trata es uno de los que se han de compilar. 

Además, nos añade la capacidad de refrescar los estilos mediante el Watch Mode, que podremos activarlo mediante un parámetro en la URL a la que accedemos (&lt;code&gt;#!watch&lt;/code&gt;) o desde la consola de Firebug ejecutando &lt;code&gt;less.watch()&lt;/code&gt;.&lt;h3&gt;Artículos relacionados&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.anieto2k.com/2007/07/02/ampliando-mas-las-opciones-del-editor-enriquecido-de-wordpress/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: Ampliando más las opciones del editor enriquecido de WordPress&quot;&gt;Ampliando más las opciones del editor enriquecido de WordPress&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.anieto2k.com/2007/04/26/jwchat-jabber-web-chat/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: JWChat – Jabber Web Chat&quot;&gt;JWChat – Jabber Web Chat&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.anieto2k.com/2007/02/08/amplia-el-editor-enriquecido-de-wordpress-21/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: Amplia el editor enriquecido de WordPress 2.1&quot;&gt;Amplia el editor enriquecido de WordPress 2.1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.anieto2k.com/2007/11/21/cliente-twitter-para-android/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: Cliente Twitter para Android&quot;&gt;Cliente Twitter para Android&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.anieto2k.com/2006/01/03/solucion-temporal-a-los-problemas-con-el-wysiwyg/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: Solución temporal a los problemas con el WYSIWYG&quot;&gt;Solución temporal a los problemas con el WYSIWYG&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;http://www.anieto2k.com&quot; id=&quot;209.85.144.84&quot;&gt;&lt;img src=&quot;http://www.anieto2k.com/favicon.ico&quot; alt=&quot;aNieto2k&quot; rel=&quot;209.85.144.84&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/anieto2k/Xzqf/~4/NxIDHvvD230&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Tue, 15 May 2012 18:00:07 +0000</pubDate>
</item>
<item>
	<title>Anieto2k: La vuelta a las buenas costumbres y de como han cambiado las cosas</title>
	<guid isPermaLink="false">http://www.anieto2k.com/?p=10383</guid>
	<link>http://feedproxy.google.com/~r/anieto2k/Xzqf/~3/TbiuK9vw1Zk/</link>
	<description>Dicen que a veces hay que dejar de hacer algo un tiempo para luego volver con más ganas e ilusiones, no sé si será mi caso, pero creo que es el momento de volver.

&lt;strong&gt;aNieto2k&lt;/strong&gt; nació para solucionar una carencia de mi memoria, incapaz de almacenar de forma ordenada la cantidad de nuevos conocimientos que estaba absorbiendo en mi evolución como desarrollador, nació con la intención de servirme como hemeroteca de cosillas que probaba, y que explicada con mis palabras me sirviera para volver algún día a revisar como hacer esto o lo otro. Una forma de mantenerme al día en el frenético sector en el que estamos metidos, donde de un día para otro las cosas cambian radicalmente.

Y ahora, &lt;em&gt;casi 7 años después&lt;/em&gt;, quiero volver a coger las riendas de esa idea.

Como todos sabemos y asumimos, las cosas cambian y las personas no son un excepción, lo que hoy te puede parecer lo más interesante de repente te aburre y se vuelve rutinario, a veces sin ningún motivo y otros por que te satura. En mi caso, he sufrido ambos, pasaron los años y lo que hacía con pasión y dedicación cada día se convirtió en una obligación y en ese momento dejó de ser todo lo divertido que parecía en un principio.

Creo que ha pasado el tiempo suficiente para volver a cogerlo con ganas y disfrutar como lo hacía antes sin caer en los errores del pasado, tomándomelo con más calma y definir un poco más el camino que quiero que siga el blog.
&lt;h3&gt;¿Que ha pasado durante este tiempo?&lt;/h3&gt;
Personalmente muchas cosas y laboralmente muchas más, pero aunque crea que son muchas no son nada con lo que me he encontrado cuando me he puesto a investigar.

En el TODO list, tenía pendiente hacer cositas con Node.js, y cuando he empezado a tirar de la manta se ha destapado todo lo que Node.js ofrece, ya publicaré algunos artículos más concretos para los rezagados como yo que aún no le han metido mano, pero os puedo decir que viendo el código de alguna aplicaciones que hay por internet hace sentirse un abuelo de la programación que aún se sabe de memoria como definir una llamada Ajax usando el objeto &lt;code&gt;XMLHttpRequest&lt;/code&gt;, a pelo o hacer los &lt;code&gt;border-radius&lt;/code&gt; con una cantidad ingente de div's para incrustar imágenes con los bordes.

Como persona que se haya en la mediana edad (si, aunque no nos guste como suene es donde estamos trentañeros :D) tengo sentimientos enfrentados al respecto, unos de rechazo frente a lo nuevo y otros de admiración por los cambios, espero que con el uso se vayan disipando.

Así que bueno, pongamos la rueda a rodar a ver hasta donde nos lleva.

Gracias por estar ahí!&lt;h3&gt;Artículos relacionados&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.anieto2k.com/2006/06/14/guia-de-buenas-costumbres-para-la-web-movil/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: Guía de buenas costumbres para la web móvil&quot;&gt;Guía de buenas costumbres para la web móvil&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.anieto2k.com/2007/06/09/cssconsejos-y-buenas-practicas/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: CSS:Consejos y buenas prácticas&quot;&gt;CSS:Consejos y buenas prácticas&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.anieto2k.com/2009/05/19/jquery-vs-mootools-%c2%bfcual-es-mejor/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: jQuery vs MooTools, ¿cual es mejor?&quot;&gt;jQuery vs MooTools, ¿cual es mejor?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.anieto2k.com/2007/06/25/listado-de-universos-netvibes/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: Listado de Universos Netvibes&quot;&gt;Listado de Universos Netvibes&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.anieto2k.com/2006/01/02/problemas-con-wordpress-20-y-negrita/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: Problemas con WordPress 2.0 y negrita&quot;&gt;Problemas con WordPress 2.0 y negrita&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;http://www.anieto2k.com&quot; id=&quot;209.85.144.84&quot;&gt;&lt;img src=&quot;http://www.anieto2k.com/favicon.ico&quot; alt=&quot;aNieto2k&quot; rel=&quot;209.85.144.84&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/anieto2k/Xzqf/~4/TbiuK9vw1Zk&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Tue, 15 May 2012 17:43:36 +0000</pubDate>
</item>
<item>
	<title>Línea de código: Listas anidadas con jQuery Mobile</title>
	<guid isPermaLink="false">http://lineadecodigo.com/?p=4303</guid>
	<link>http://feedproxy.google.com/~r/LineaDeCodigo/~3/XgGnc7TB_Jo/</link>
	<description>&lt;p&gt;Ya vimos como hacer una lista simple de elementos y algunos atributos data para modificar esta lista con &lt;a href=&quot;http://www.manualweb.net/tutorial-jquery-mobile/&quot; title=&quot;Tutorial de jQuery Mobile&quot;&gt;jQuery Mobile&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;En este caso vamos a ver como podemos crear listas anidadas. Es decir una lista que, cuando seleccionemos una opción, nos muestre subopciones de dicha opción. Algo claro si pensamos en ciudades/regiones/países.&lt;/p&gt;
&lt;p&gt;En nuestro caso vamos a utilizar ciudades y comunidades autónomas de España. Algo que quedaría de la siguiente forma:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://img.aulambra.com/wp-content/uploads/2012/05/ListasAnidadas.png&quot; title=&quot;ListasAnidadas&quot; height=&quot;314&quot; width=&quot;448&quot; alt=&quot;&quot; class=&quot;aligncenter size-full wp-image-4305&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Para crear listas anidadas con &lt;a href=&quot;http://www.manualweb.net/tutorial-jquery-mobile/&quot; title=&quot;Tutorial de jQuery Mobile&quot;&gt;jQuery Mobile&lt;/a&gt; solo tenemos que seguir la implementación que haríamos directamente en &lt;a href=&quot;http://www.manualweb.net/tutorial-html/&quot; title=&quot;Manual de HTML&quot;&gt;HTML&lt;/a&gt;. Ya que será el formateador de &lt;a href=&quot;http://www.manualweb.net/tutorial-jquery-mobile/&quot; title=&quot;Tutorial de jQuery Mobile&quot;&gt;jQuery Mobile&lt;/a&gt; quien se encargue de realizar la anidación de la lista.&lt;/p&gt;
&lt;p&gt;Así el código quedaría de la siguiente forma:&lt;/p&gt;
&lt;pre style=&quot;font-family: monospace;&quot; class=&quot;html4strict&quot;&gt; 
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;a href=&quot;http://w3api.com/wiki/HTML:UL&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;ul&lt;/span&gt;&lt;/a&gt; data-role&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;listview&quot;&lt;/span&gt; data-inset&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;true&quot;&lt;/span&gt; data-filter&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;true&quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;a href=&quot;http://w3api.com/wiki/HTML:LI&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;li&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;a href=&quot;http://w3api.com/wiki/HTML:H3&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;h3&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;Castilla y León&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://w3api.com/wiki/HTML:H3&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;h3&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;a href=&quot;http://w3api.com/wiki/HTML:UL&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;ul&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;a href=&quot;http://w3api.com/wiki/HTML:LI&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;li&lt;/span&gt;&lt;/a&gt;&amp;gt;&amp;lt;&lt;a href=&quot;http://w3api.com/wiki/HTML:A&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;a&lt;/span&gt;&lt;/a&gt; &lt;a href=&quot;http://w3api.com/wiki/HTML:href&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;href&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;#&quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;Avila&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://w3api.com/wiki/HTML:A&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;a&lt;/span&gt;&lt;/a&gt;&amp;gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://w3api.com/wiki/HTML:LI&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;li&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;a href=&quot;http://w3api.com/wiki/HTML:LI&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;li&lt;/span&gt;&lt;/a&gt;&amp;gt;&amp;lt;&lt;a href=&quot;http://w3api.com/wiki/HTML:A&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;a&lt;/span&gt;&lt;/a&gt; &lt;a href=&quot;http://w3api.com/wiki/HTML:href&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;href&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;#&quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;Burgos&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://w3api.com/wiki/HTML:A&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;a&lt;/span&gt;&lt;/a&gt;&amp;gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://w3api.com/wiki/HTML:LI&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;li&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;a href=&quot;http://w3api.com/wiki/HTML:LI&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;li&lt;/span&gt;&lt;/a&gt;&amp;gt;&amp;lt;&lt;a href=&quot;http://w3api.com/wiki/HTML:A&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;a&lt;/span&gt;&lt;/a&gt; &lt;a href=&quot;http://w3api.com/wiki/HTML:href&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;href&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;#&quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;León&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://w3api.com/wiki/HTML:A&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;a&lt;/span&gt;&lt;/a&gt;&amp;gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://w3api.com/wiki/HTML:LI&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;li&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;a href=&quot;http://w3api.com/wiki/HTML:LI&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;li&lt;/span&gt;&lt;/a&gt;&amp;gt;&amp;lt;&lt;a href=&quot;http://w3api.com/wiki/HTML:A&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;a&lt;/span&gt;&lt;/a&gt; &lt;a href=&quot;http://w3api.com/wiki/HTML:href&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;href&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;#&quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;Palencia&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://w3api.com/wiki/HTML:A&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;a&lt;/span&gt;&lt;/a&gt;&amp;gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://w3api.com/wiki/HTML:LI&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;li&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;a href=&quot;http://w3api.com/wiki/HTML:LI&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;li&lt;/span&gt;&lt;/a&gt;&amp;gt;&amp;lt;&lt;a href=&quot;http://w3api.com/wiki/HTML:A&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;a&lt;/span&gt;&lt;/a&gt; &lt;a href=&quot;http://w3api.com/wiki/HTML:href&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;href&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;#&quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;Salamanca&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://w3api.com/wiki/HTML:A&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;a&lt;/span&gt;&lt;/a&gt;&amp;gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://w3api.com/wiki/HTML:LI&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;li&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;a href=&quot;http://w3api.com/wiki/HTML:LI&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;li&lt;/span&gt;&lt;/a&gt;&amp;gt;&amp;lt;&lt;a href=&quot;http://w3api.com/wiki/HTML:A&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;a&lt;/span&gt;&lt;/a&gt; &lt;a href=&quot;http://w3api.com/wiki/HTML:href&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;href&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;#&quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;Segovia&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://w3api.com/wiki/HTML:A&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;a&lt;/span&gt;&lt;/a&gt;&amp;gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://w3api.com/wiki/HTML:LI&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;li&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;a href=&quot;http://w3api.com/wiki/HTML:LI&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;li&lt;/span&gt;&lt;/a&gt;&amp;gt;&amp;lt;&lt;a href=&quot;http://w3api.com/wiki/HTML:A&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;a&lt;/span&gt;&lt;/a&gt; &lt;a href=&quot;http://w3api.com/wiki/HTML:href&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;href&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;#&quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;Soria&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://w3api.com/wiki/HTML:A&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;a&lt;/span&gt;&lt;/a&gt;&amp;gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://w3api.com/wiki/HTML:LI&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;li&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;a href=&quot;http://w3api.com/wiki/HTML:LI&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;li&lt;/span&gt;&lt;/a&gt;&amp;gt;&amp;lt;&lt;a href=&quot;http://w3api.com/wiki/HTML:A&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;a&lt;/span&gt;&lt;/a&gt; &lt;a href=&quot;http://w3api.com/wiki/HTML:href&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;href&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;#&quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;Valladolid&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://w3api.com/wiki/HTML:A&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;a&lt;/span&gt;&lt;/a&gt;&amp;gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://w3api.com/wiki/HTML:LI&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;li&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;a href=&quot;http://w3api.com/wiki/HTML:LI&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;li&lt;/span&gt;&lt;/a&gt;&amp;gt;&amp;lt;&lt;a href=&quot;http://w3api.com/wiki/HTML:A&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;a&lt;/span&gt;&lt;/a&gt; &lt;a href=&quot;http://w3api.com/wiki/HTML:href&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;href&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;#&quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;Zamora&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://w3api.com/wiki/HTML:A&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;a&lt;/span&gt;&lt;/a&gt;&amp;gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://w3api.com/wiki/HTML:LI&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;li&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://w3api.com/wiki/HTML:UL&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;ul&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://w3api.com/wiki/HTML:LI&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;li&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;a href=&quot;http://w3api.com/wiki/HTML:LI&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;li&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;a href=&quot;http://w3api.com/wiki/HTML:H3&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;h3&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;Extremadura&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://w3api.com/wiki/HTML:H3&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;h3&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;a href=&quot;http://w3api.com/wiki/HTML:UL&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;ul&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;a href=&quot;http://w3api.com/wiki/HTML:LI&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;li&lt;/span&gt;&lt;/a&gt;&amp;gt;&amp;lt;&lt;a href=&quot;http://w3api.com/wiki/HTML:A&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;a&lt;/span&gt;&lt;/a&gt; &lt;a href=&quot;http://w3api.com/wiki/HTML:href&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;href&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;#&quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;Badajoz&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://w3api.com/wiki/HTML:A&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;a&lt;/span&gt;&lt;/a&gt;&amp;gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://w3api.com/wiki/HTML:LI&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;li&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;a href=&quot;http://w3api.com/wiki/HTML:LI&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;li&lt;/span&gt;&lt;/a&gt;&amp;gt;&amp;lt;&lt;a href=&quot;http://w3api.com/wiki/HTML:A&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;a&lt;/span&gt;&lt;/a&gt; &lt;a href=&quot;http://w3api.com/wiki/HTML:href&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;href&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;#&quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;Caceres&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://w3api.com/wiki/HTML:A&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;a&lt;/span&gt;&lt;/a&gt;&amp;gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://w3api.com/wiki/HTML:LI&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;li&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://w3api.com/wiki/HTML:UL&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;ul&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://w3api.com/wiki/HTML:LI&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;li&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://w3api.com/wiki/HTML:UL&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;ul&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
 &lt;/pre&gt;
&lt;p&gt;Un punto importante para el formato que utiliza &lt;a href=&quot;http://www.manualweb.net/tutorial-jquery-mobile/&quot; title=&quot;Tutorial de jQuery Mobile&quot;&gt;jQuery Mobile&lt;/a&gt; es que el elemento de la lista superior lo maquetemos mediante un elemento &lt;a href=&quot;http://www.w3api.com/wiki/HTML:H3&quot; title=&quot;Elemento H3 de HTML&quot;&gt;H3&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Este simple código nos ayuda a tener listas anidadas con &lt;a href=&quot;http://www.manualweb.net/tutorial-jquery-mobile/&quot; title=&quot;Tutorial de jQuery Mobile&quot;&gt;jQuery Mobile&lt;/a&gt;. Pero podemos añadir alguna cosa y es que al entrar en la lista anidada perdemos la referencia a la lista padre. Y es por ello que vamos a insertar un elemento back en la cabecera de la lista anidada.&lt;/p&gt;
&lt;p&gt;Para esto nos vamos a apoyar en el API de &lt;a href=&quot;http://www.manualweb.net/tutorial-jquery-mobile/&quot; title=&quot;Tutorial de jQuery Mobile&quot;&gt;jQuery Mobile&lt;/a&gt; y en concreto en el atributo &lt;strong&gt;$.mobile.page.prototype.options.addBackBtn&lt;/strong&gt;. Y es que inicializando este atributo a true nos aparecerá el botón de back al entrar en la anidación de las listas.&lt;/p&gt;
&lt;p&gt;Para configurarlo deberemos de hacerlo al arrancar el framework jQuery. Es en este momento cuando se lanza el evento mobileinit. Por lo cual nos vamos a suscribir a este evento mediante un método &lt;a href=&quot;http://www.w3api.com/wiki/jQuery:Bind()&quot; title=&quot;Método bind de jQuery&quot;&gt;.bind()&lt;/a&gt; para realizar la inicialización.&lt;/p&gt;
&lt;pre style=&quot;font-family: monospace;&quot; class=&quot;javascript&quot;&gt;$&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;document&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;bind&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&quot;mobileinit&quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;{&lt;/span&gt;
    $.&lt;span style=&quot;color: #660066;&quot;&gt;mobile&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;page&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;prototype&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;options&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;addBackBtn&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Y ya tenemos el ejemplo de las listas anidadas con &lt;a href=&quot;http://www.manualweb.net/tutorial-jquery-mobile/&quot; title=&quot;Tutorial de jQuery Mobile&quot;&gt;jQuery Mobile&lt;/a&gt; montado. Eso sí, una de las cosas que veremos es que se pierden las cabeceras header y footer de la lista inicial. ¿Alguien sabe como resolverlo?&lt;strong&gt;Similar Posts:&lt;/strong&gt;
&lt;/p&gt;&lt;ul class=&quot;similar-posts&quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://lineadecodigo.com/desarrollo-movil/divisores-de-listas-con-jquery-mobile/&quot; rel=&quot;bookmark&quot; title=&quot;Mayo 11, 2012&quot;&gt;Divisores de listas con jQuery Mobile&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://lineadecodigo.com/desarrollo-movil/listas-de-elementos-en-jquery-mobile/&quot; rel=&quot;bookmark&quot; title=&quot;Mayo 10, 2012&quot;&gt;Listas de Elementos en jQuery Mobile&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://lineadecodigo.com/desarrollo-movil/hola-mundo-con-jquery-mobile/&quot; rel=&quot;bookmark&quot; title=&quot;Mayo 9, 2012&quot;&gt;Hola Mundo con jQuery Mobile&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://lineadecodigo.com/javascript/crear-eventos-con-javascript/&quot; rel=&quot;bookmark&quot; title=&quot;Septiembre 29, 2007&quot;&gt;Crear eventos con JavaScript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://lineadecodigo.com/jquery/numero-de-elementos-de-una-lista-con-jquery/&quot; rel=&quot;bookmark&quot; title=&quot;Enero 31, 2009&quot;&gt;Número de elementos de una lista con jQuery&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/LiHNKwf3gPd5_LWIuo_NwFjL97w/0/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/LiHNKwf3gPd5_LWIuo_NwFjL97w/0/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/LiHNKwf3gPd5_LWIuo_NwFjL97w/1/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/LiHNKwf3gPd5_LWIuo_NwFjL97w/1/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?a=XgGnc7TB_Jo:Kfi8p7zmmic:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?a=XgGnc7TB_Jo:Kfi8p7zmmic:F7zBnMyn0Lo&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?i=XgGnc7TB_Jo:Kfi8p7zmmic:F7zBnMyn0Lo&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?a=XgGnc7TB_Jo:Kfi8p7zmmic:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?i=XgGnc7TB_Jo:Kfi8p7zmmic:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?a=XgGnc7TB_Jo:Kfi8p7zmmic:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?a=XgGnc7TB_Jo:Kfi8p7zmmic:tKBiNdHYW3c&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?d=tKBiNdHYW3c&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/LineaDeCodigo/~4/XgGnc7TB_Jo&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Mon, 14 May 2012 17:52:02 +0000</pubDate>
</item>
<item>
	<title>Maestros del Web (Editorial): Curso Django: El Shell de Django</title>
	<guid isPermaLink="false">http://www.maestrosdelweb.com/?p=24410</guid>
	<link>http://www.maestrosdelweb.com/editorial/curso-django-el-shell-de-django/</link>
	<description>&lt;p&gt;En el &lt;a href=&quot;http://www.maestrosdelweb.com/editorial/curso-django-el-modelo-de-datos/&quot;&gt;capítulo anterior&lt;/a&gt;, vimos lo fácil que es crear un modelo con Django, en este capítulo veremos que podemos hacer con los modelos. Si llegaste a este capítulo y no leiste los anteriores, quizas lo encuentres un poco dificil de entender, así que dale &lt;a href=&quot;http://www.maestrosdelweb.com/guias/#guias-django&quot; title=&quot;Curso Django en Maestros del Web&quot;&gt;un vistazo a los capítulos anteriores&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Los modelos nos van a permitir manipular los datos: registrarlos, editarlos, actualizarlos, consultarlos, eliminarlos y realizar procesos con ellos. Toda está manipulación se reflejará luego en las vistas y posteriormente en las plantillas para mostrar los resultados en el navegador, esta manipulación se le conoce generalmente como: Consultas.&lt;/p&gt;
&lt;h2&gt;El Shell&lt;/h2&gt;
&lt;p&gt;El Shell es el interprete interactivo de Python, que nos permitirá probar los modelos, hacer consultas, analizar resultados, antes de elaborar las vistas. Es muy útil si queremos ahorrar tiempo al momento de responder a los requerimientos que los usuarios de la aplicación puedan necesitar.&lt;/p&gt;
&lt;p&gt;Para poder acceder a la shell, abrimos una terminal o ventana de comandos, y nos ubicamos en la carpeta de proyecto (en donde se encuentre el archivo manage.py) y digitamos:&lt;/p&gt;
&lt;div class=&quot;codigo&quot;&gt;
&lt;pre&gt;python manage.py shell&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Debemos visualizar el siguiente resultado:&lt;/p&gt;
&lt;div style=&quot;width: 460px;&quot; id=&quot;attachment_24585&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://www.maestrosdelweb.com/images/2012/05/django-shell-inicio.png&quot;&gt;&lt;img src=&quot;http://www.maestrosdelweb.com/images/2012/05/django-shell-inicio-450x82.png&quot; alt=&quot;Shell&quot; height=&quot;82&quot; class=&quot;size-medium wp-image-24585&quot; width=&quot;450&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Shell&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Lo importante es reconocer los elementos: &lt;a href=&quot;http://es.wikipedia.org/wiki/Prompt&quot; title=&quot;Prompt&quot;&gt;el prompt&lt;/a&gt; se representa por &amp;gt;&amp;gt;&amp;gt; y el resultado de nuestras instrucciones se visualizarán en nuevas líneas (sin ningún símbolo previo a ellas)&lt;/p&gt;
&lt;h2&gt;Las consultas&lt;/h2&gt;
&lt;p&gt;Las consultas en base a los modelos de Django son la base de todo el desarrollo en este framework estas consultas nos pueden permitir saber, por ejemplo, la lista de usuarios, los correos electronicos de los que hacen comentarios, el primero comentario de un artículo, los artículos del mes de mayo, y la lista de posiblidades es larga.&lt;/p&gt;
&lt;p&gt;Las consultas &lt;a href=&quot;https://docs.djangoproject.com/en/1.4/topics/db/queries/&quot; title=&quot;Consultas en Django&quot;&gt;están descritas muy claramente en la documentación oficial&lt;/a&gt;, para poder hacer esto más simple aquí también usaremos esta pequeña chuleta o cheat sheet como también es conocido.&lt;/p&gt;
&lt;div style=&quot;width: 351px;&quot; id=&quot;attachment_24589&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://www.maestrosdelweb.com/images/2012/05/django-queries.pdf&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.maestrosdelweb.com/images/2012/05/django-queries-341x450.jpg&quot; alt=&quot;Django Queryset CheatSheet&quot; height=&quot;450&quot; class=&quot;size-medium wp-image-24589&quot; width=&quot;341&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Django Queryset CheatSheet&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.djangoproject.com/en/1.4/ref/models/querysets/&quot; title=&quot;Querysets en Django&quot;&gt;La referencia de todos estos métodos&lt;/a&gt; se encuentran también en la documentación oficial.&lt;/p&gt;
&lt;h2&gt;Ejemplos&lt;/h2&gt;
&lt;p&gt;Ahora pasamos a lo divertido, &lt;a href=&quot;http://neosergio.github.com/recetario_mdw/&quot; title=&quot;Recetario de Maestros del Web&quot;&gt;seguimos trabajando con nuestro proyecto de ejemplo&lt;/a&gt;, para poder realizar algunos ejemplos tenemos que modificar y corregir el &lt;em&gt;models.py&lt;/em&gt; y dejarlo así: (ya no existe el modelo Bebida, ya no es necesario, también se debe eliminar cualquier rastro del modelo Bebida de &lt;em&gt;admin.py&lt;/em&gt;)&lt;/p&gt;
&lt;div style=&quot;width: 460px;&quot; id=&quot;attachment_24570&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://www.maestrosdelweb.com/images/2012/05/django-models-receta.png&quot;&gt;&lt;img src=&quot;http://www.maestrosdelweb.com/images/2012/05/django-models-receta-450x203.png&quot; alt=&quot;models.py&quot; height=&quot;203&quot; class=&quot;size-medium wp-image-24570&quot; width=&quot;450&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;models.py&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Una vez que tenemos listo el models.py , reiniciamos el modelo (si no recuerdas como reiniciar revisa el capítulo: &lt;a href=&quot;http://www.maestrosdelweb.com/editorial/curso-django-el-modelo-de-datos/&quot; title=&quot;El modelo de datos Django&quot;&gt;El modelo de datos&lt;/a&gt;)&lt;/p&gt;
&lt;div class=&quot;codigo&quot;&gt;
&lt;pre&gt;python manage.py reset principal&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Una vez con los modelos listos, es hora de probar el interprete interactivo (shell). No olvidar que la siguiente instrucción se debe lanzar desde el directorio donde se encuentra el archivo manage.py&lt;/p&gt;
&lt;div class=&quot;codigo&quot;&gt;
&lt;pre&gt;python manage.py shell&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Una vez dentro del shell, empezamos a importar los modelos, para ello digitamos&lt;/p&gt;
&lt;div class=&quot;codigo&quot;&gt;
&lt;pre&gt;from principal.models import Receta, Comentario&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Esta instrucción importa todo el modelo al shell. Aquí es donde podemos consultar el contenido de los modelos y otras consultas, la sintaxis es del tipo:&lt;/p&gt;
&lt;div class=&quot;codigo&quot;&gt;
&lt;pre&gt;Nombre_de_modelo.objects.metodo()&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Donde podemos reemplazar Nombre_de_modelo y método por las diversas opciones que están en el cheatsheet (chuleta)&lt;/p&gt;
&lt;div style=&quot;width: 460px;&quot; id=&quot;attachment_24571&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-01.png&quot;&gt;&lt;img src=&quot;http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-01-450x113.png&quot; alt=&quot;all()&quot; height=&quot;113&quot; class=&quot;size-medium wp-image-24571&quot; width=&quot;450&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;all()&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;En la imagen vemos como resultado una lista vacia [], entonces vamos a agregar elementos, para ello también necesitamos al modelo usuario que ya lo tiene Django, una vez que lo importamos sacamos al usuario cuya llave primaria (pk) sea 1.&lt;/p&gt;
&lt;div style=&quot;width: 460px;&quot; id=&quot;attachment_24569&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://www.maestrosdelweb.com/images/2012/05/django-importar-usuario-shell.png&quot;&gt;&lt;img src=&quot;http://www.maestrosdelweb.com/images/2012/05/django-importar-usuario-shell-450x69.png&quot; alt=&quot;User.objects.get(pk=1)&quot; height=&quot;69&quot; class=&quot;size-medium wp-image-24569&quot; width=&quot;450&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;User.objects.get(pk=1)&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Ahora si introducimos datos a los modelos: (la r es solo una variable cualquiera)&lt;/p&gt;
&lt;div style=&quot;width: 460px;&quot; id=&quot;attachment_24572&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-02.png&quot;&gt;&lt;img src=&quot;http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-02-450x137.png&quot; alt=&quot;create()&quot; height=&quot;137&quot; class=&quot;size-medium wp-image-24572&quot; width=&quot;450&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;create()&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Y comprobamos que se ha registrado:&lt;/p&gt;
&lt;div style=&quot;width: 263px;&quot; id=&quot;attachment_24573&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-03.png&quot;&gt;&lt;img src=&quot;http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-03.png&quot; alt=&quot;Receta.objects.all()&quot; height=&quot;67&quot; class=&quot;size-full wp-image-24573&quot; width=&quot;253&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Receta.objects.all()&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Agregamos un comentario a la receta anterior: (la c es solo una variable cualquiera)&lt;/p&gt;
&lt;div style=&quot;width: 393px;&quot; id=&quot;attachment_24574&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-04.png&quot;&gt;&lt;img src=&quot;http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-04.png&quot; alt=&quot;create() en Comentario&quot; height=&quot;139&quot; class=&quot;size-full wp-image-24574&quot; width=&quot;383&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;create() en Comentario&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Agregamos una receta mas: (Se puede escribir todo en una sola línea, yo lo hago para que se vea bien en la imagen)&lt;/p&gt;
&lt;div style=&quot;width: 460px;&quot; id=&quot;attachment_24575&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-05.png&quot;&gt;&lt;img src=&quot;http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-05-450x182.png&quot; alt=&quot;create() podría ir en una sola línea&quot; height=&quot;182&quot; class=&quot;size-medium wp-image-24575&quot; width=&quot;450&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;create() podría ir en una sola línea&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Sigamos jugando, ahora mostraremos las recetas cuyos ingredientes no empiecen con la letra A: (notar que luego de ingredientes hay &lt;strong&gt;dos&lt;/strong&gt; guiones bajos)&lt;/p&gt;
&lt;div style=&quot;width: 460px;&quot; id=&quot;attachment_24576&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-06.png&quot;&gt;&lt;img src=&quot;http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-06-450x55.png&quot; alt=&quot;exclude y startswith&quot; height=&quot;55&quot; class=&quot;size-medium wp-image-24576&quot; width=&quot;450&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;exclude y startswith&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Ahora las recetas, que mencionen en su preparación la palabra ‘tetera’:&lt;/p&gt;
&lt;div style=&quot;width: 460px;&quot; id=&quot;attachment_24577&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-07.png&quot;&gt;&lt;img src=&quot;http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-07-450x54.png&quot; alt=&quot;filter y contains&quot; height=&quot;54&quot; class=&quot;size-medium wp-image-24577&quot; width=&quot;450&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;filter y contains&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Y si queremos ordenar alfabéticamente por titulo de receta:&lt;/p&gt;
&lt;div style=&quot;width: 460px;&quot; id=&quot;attachment_24578&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-08.png&quot;&gt;&lt;img src=&quot;http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-08-450x76.png&quot; alt=&quot;order_by()&quot; height=&quot;76&quot; class=&quot;size-medium wp-image-24578&quot; width=&quot;450&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;order_by()&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Ahora lo invertimos:&lt;/p&gt;
&lt;div style=&quot;width: 460px;&quot; id=&quot;attachment_24579&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-09.png&quot;&gt;&lt;img src=&quot;http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-09-450x60.png&quot; alt=&quot;order_by y reverse&quot; height=&quot;60&quot; class=&quot;size-medium wp-image-24579&quot; width=&quot;450&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;order_by y reverse&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Mostramos los comentarios de cada receta:&lt;/p&gt;
&lt;div style=&quot;width: 405px;&quot; id=&quot;attachment_24580&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-10.png&quot;&gt;&lt;img src=&quot;http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-10.png&quot; alt=&quot;filter()&quot; height=&quot;112&quot; class=&quot;size-full wp-image-24580&quot; width=&quot;395&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;filter()&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Ahora me gustaría actualizar el titulo ‘Huevo Frito’ a la de ‘Huevito Frito’:&lt;/p&gt;
&lt;div style=&quot;width: 460px;&quot; id=&quot;attachment_24581&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-11.png&quot;&gt;&lt;img src=&quot;http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-11-450x62.png&quot; alt=&quot;update()&quot; height=&quot;62&quot; class=&quot;size-medium wp-image-24581&quot; width=&quot;450&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;update()&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Sigo agregando comentarios a la primera receta y deseo saber cuantos comentarios hay hasta el momento en ambas recetas:&lt;/p&gt;
&lt;div style=&quot;width: 460px;&quot; id=&quot;attachment_24582&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-12.png&quot;&gt;&lt;img src=&quot;http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-12-450x168.png&quot; alt=&quot;count()&quot; height=&quot;168&quot; class=&quot;size-medium wp-image-24582&quot; width=&quot;450&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;count()&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Agrego un comentario a la segunda receta (un comentario troll) y luego lo elimino:&lt;/p&gt;
&lt;div style=&quot;width: 404px;&quot; id=&quot;attachment_24583&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-13.png&quot;&gt;&lt;img src=&quot;http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-13.png&quot; alt=&quot;delete()&quot; height=&quot;196&quot; class=&quot;size-full wp-image-24583&quot; width=&quot;394&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;delete()&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Ahora deseo saber el nombre de usuario y correo electrónico del usuario que agregó la receta con el título exacto de ‘Agua hervida’:&lt;/p&gt;
&lt;div style=&quot;width: 460px;&quot; id=&quot;attachment_24584&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-14.png&quot;&gt;&lt;img src=&quot;http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-14-450x79.png&quot; alt=&quot;Todo está orientado a objetos&quot; height=&quot;79&quot; class=&quot;size-medium wp-image-24584&quot; width=&quot;450&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Todo está orientado a objetos&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Como verán hacer consultas en Django es simple, sin embargo &lt;a href=&quot;https://docs.djangoproject.com/en/dev/ref/models/querysets/&quot; title=&quot;Django QuerySet API Reference&quot;&gt;siempre es bueno tener la documentación a la mano&lt;/a&gt;, ya que recordar tantos métodos puede ser tedioso al principio.&lt;/p&gt;
&lt;div class=&quot;tipexperto&quot;&gt;
&lt;h4&gt;Nota:&lt;/h4&gt;
&lt;div class=&quot;tipcont&quot;&gt;Las consultas que se realizan en el Shell no se guardan en el proyecto, es por ello que si &lt;a href=&quot;http://neosergio.github.com/recetario_mdw/&quot;&gt;revisan el repositorio del proyecto de ejemplo&lt;/a&gt;, sólo encontraran cambios en models.py y admin.py (retirando la clase Bebida, que ya no es necesaria)&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Las consultas son el paso previo a trabajar con las vistas y las plantillas, nos permitirán entregar a los usuarios del proyecto, la información que requieran. El próximo capítulo será: Las vistas.&lt;/p&gt;
&lt;p&gt;Práctica tus propias consultas, juega con los modelos, diviértete, que el momento de aplicarlas serán en el próximo capítulo.&lt;/p&gt;
&lt;hr /&gt;&lt;p style=&quot;height: 64px;&quot;&gt;&lt;img src=&quot;http://1.gravatar.com/avatar/3ca2b43e8aedb28a82fdca67e28281a1?s=64&amp;amp;d=http%3A%2F%2Fwww.maestrosdelweb.com%2Fwp-content%2Fthemes%2Fmdw2%2Fimages%2Fno-avatar64.png%3Fs%3D64&amp;amp;r=G&quot; style=&quot;float: left; padding: 0 5px;&quot; height=&quot;64&quot; width=&quot;64&quot; alt=&quot;Sergio Infante Montero&quot; class=&quot;avatar avatar-64 photo&quot; /&gt; &lt;strong&gt;Sergio Infante Montero&lt;/strong&gt; para &lt;a href=&quot;http://www.maestrosdelweb.com&quot;&gt;Maestros del Web&lt;/a&gt;.&lt;br /&gt;&lt;a href=&quot;http://www.maestrosdelweb.com/editorial/curso-django-el-shell-de-django/#respond&quot;&gt;Agrega tu comentario&lt;/a&gt; | &lt;a href=&quot;http://www.maestrosdelweb.com/editorial/curso-django-el-shell-de-django/&quot;&gt;Enlace permanente&lt;/a&gt; al artículo&lt;/p&gt;&lt;hr style=&quot;clear: both;&quot; /&gt;
		&lt;p&gt;&lt;strong&gt;Síguenos en:&lt;/strong&gt; &lt;img src=&quot;http://www.maestrosdelweb.com/diseno/imagenes/twitter.png&quot; style=&quot;vertical-align: middle;&quot; /&gt; &lt;a href=&quot;http://twitter.com/maestros&quot;&gt;@maestros&lt;/a&gt; | &lt;img src=&quot;http://www.maestrosdelweb.com/diseno/imagenes/facebook.png&quot; style=&quot;vertical-align: middle;&quot; /&gt; &lt;a href=&quot;http://facebook.com/maestrosdelweb&quot;&gt;Fan page&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Mon, 14 May 2012 17:14:50 +0000</pubDate>
</item>
<item>
	<title>Variable not found: Enlaces interesantes 82</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-27752126.post-3882771534374934261</guid>
	<link>http://feedproxy.google.com/~r/vnf/~3/GC83Y6j9wJg/enlaces-interesantes-82.html</link>
	<description>&lt;a href=&quot;http://lh3.ggpht.com/-QAFlO4T-9Gg/T7Clv0pTabI/AAAAAAAACCc/yZHukT9Im38/s1600-h/image7_thumb_thumb_thumb_thumb_thumb.png&quot;&gt;&lt;img src=&quot;http://lh3.ggpht.com/-r8hftloxDLI/T7ClxD2evEI/AAAAAAAACCk/VrS_3GREbGA/image7_thumb_thumb_thumb_thumb_thumb%25255B1%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-width: 0px; display: inline; float: right; margin: 0px 0px 10px 10px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image7_thumb_thumb_thumb_thumb_thumb[2]&quot; align=&quot;right&quot; height=&quot;129&quot; width=&quot;172&quot; alt=&quot;image7_thumb_thumb_thumb_thumb_thumb[2]&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Estos son los enlaces publicados en &lt;a href=&quot;http://www.facebook.com/variablenotfound&quot;&gt;Variable not found en Facebook&lt;/a&gt; y &lt;a href=&quot;http://twitter.com/jmaguilar&quot;&gt;Twitter&lt;/a&gt; del 7 al 13 de mayo de 2012. Espero que os resulten interesantes :-)&lt;br /&gt;
&lt;h4&gt;
.Net&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://sblakemore.com/blog/post/What-JavaScript-taught-me-about-C-–-Understanding-‘Access-to-modified-closure’.aspx&quot;&gt;&lt;strong&gt;What JavaScript taught me about C# – Understanding ‘Access to modified closure’&lt;/strong&gt;&lt;/a&gt;       &lt;br /&gt;
Sean Blakemore &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://geeks.ms/blogs/etomas/archive/2012/05/10/cargar-informaci-243-n-de-reflection-sin-cargar-el-assembly.aspx&quot;&gt;Cargar información de reflection sin cargar el assembly&lt;/a&gt;&lt;/strong&gt;       &lt;br /&gt;
Eduard Tomás &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://blog.koalite.com/2012/05/hebras-lambdas-y-bugs/&quot;&gt;Hebras, lambdas… y bugs&lt;/a&gt;&lt;/strong&gt;       &lt;br /&gt;
Juan María Hernández &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.codeproject.com/Articles/380769/Creating-an-FTP-Server-in-Csharp&quot;&gt;Creating an FTP Server in C#&lt;/a&gt;&lt;/strong&gt;       &lt;br /&gt;
Rick Bassham &lt;a name=&quot;more&quot;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
Asp.net&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.strathweb.com/2012/05/output-caching-in-asp-net-web-api/&quot; title=&quot;Permalink to Output caching in ASP.NET Web API&quot;&gt;&lt;strong&gt;Output caching in ASP.NET Web API&lt;/strong&gt;&lt;/a&gt;       &lt;br /&gt;
Filip W. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://professionalaspnet.com/archive/2012/05/11/How-to-Include-Views-in-ASP.NET-MVC-_2600_-WebMatrix-Razor.aspx&quot;&gt;How to Include Views in ASP.NET MVC &amp;amp; WebMatrix Razor&lt;/a&gt; &lt;/strong&gt;      &lt;br /&gt;
Chris Love &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://blogs.msdn.com/b/jmstall/archive/2012/05/11/webapi-parameter-binding-under-the-hood.aspx&quot;&gt;WebAPI Parameter binding under the hood&lt;/a&gt;&lt;/strong&gt;       &lt;br /&gt;
Mike Stall &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://tpeczek.blogspot.com.es/2012/05/another-early-look-at-jquery-ui-grid-in.html&quot; title=&quot;Another early look at jQuery UI Grid in ASP.NET MVC – Data Types, Dataview, Pager, Sorting and F&quot;&gt;&lt;strong&gt;Another early look at jQuery UI Grid in ASP.NET MVC – Data Types, Dataview, Pager, Sorting and Filtering&lt;/strong&gt;&lt;/a&gt;       &lt;br /&gt;
Tomasz Pęczek &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.dotnetcurry.com/ShowArticle.aspx?ID=807&quot;&gt;Download Files in ASP.NET MVC 3 using Controller Action&lt;/a&gt;&lt;/strong&gt;       &lt;br /&gt;
Mahesh Sabnis &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.west-wind.com/weblog/posts/2012/May/08/Passing-multiple-POST-parameters-to-Web-API-Controller-Methods&quot;&gt;&lt;strong&gt;Passing multiple POST parameters to Web API Controller Methods&lt;/strong&gt;&lt;/a&gt;       &lt;br /&gt;
Rick Strahl &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.knockmeout.net/2012/05/knockout-2-dot-1-is-out.html&quot;&gt;Knockout 2.1 Is Out&lt;/a&gt;&lt;/strong&gt;       &lt;br /&gt;
Ryan Niemeyer &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://geeks.ms/blogs/phurtado/archive/2012/05/08/el-scroll-infinito.aspx&quot;&gt;El scroll infinito&lt;/a&gt;&lt;/strong&gt;       &lt;br /&gt;
Pedro Hurtado &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://michaelcrump.net/a-xaml-guy-digs-into-asp-net-mvc4-part-2-of&quot;&gt;&lt;strong&gt;A XAML Guy digs into ASP.NET MVC4 (Part 2 of ?)&lt;/strong&gt;&lt;/a&gt;       &lt;br /&gt;
Michael Crump &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://blogs.msdn.com/b/kiranchalla/archive/2012/05/06/in-memory-client-amp-host-and-integration-testing-of-your-web-api-service.aspx&quot;&gt;In memory client, host and integration testing of your Web API service&lt;/a&gt;&lt;/strong&gt;       &lt;br /&gt;
Kiran Challa &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://blogs.telerik.com/blogs/posts/12-05-08/there-s-a-tool-for-that-13-essential-tools-for-the-ninja-web-developer.aspx&quot;&gt;There’s a Tool for That: 13 Essential Tools for the Ninja Web Developer&lt;/a&gt;&lt;/strong&gt;       &lt;br /&gt;
Joshua Holt &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://visualstudiomagazine.com/articles/2012/05/04/implementing-websockets-in-wcf-4_5.aspx&quot;&gt;Implementing WebSockets in WCF 4.5&lt;/a&gt;&lt;/strong&gt;       &lt;br /&gt;
Peter Vogel &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://sebys.com.ar/2012/05/05/asp-net-web-api-paso-a-paso/&quot;&gt;ASP.NET Web API paso a paso&lt;/a&gt;&lt;/strong&gt;       &lt;br /&gt;
Sebastián Henzenn &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://weblogs.asp.net/jgalloway/archive/2012/05/04/asp-net-mvc-authentication-customizing-authentication-and-authorization-the-right-way.aspx&quot;&gt;ASP.NET MVC Authentication - Customizing Authentication and Authorization The Right Way&lt;/a&gt;&lt;/strong&gt;       &lt;br /&gt;
Jon Galloway &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://blogs.msdn.com/b/rjacobs/archive/2012/05/06/extending-asp-net-mvc-account-registration-with-workflow-wf4.aspx&quot;&gt;Extending ASP.NET MVC Account Registration with Workflow (WF4)&lt;/a&gt;&lt;/strong&gt;       &lt;br /&gt;
Ron Jacobs &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://weblogs.asp.net/davidfowler/archive/2012/05/04/api-improvements-made-in-signalr-0-5.aspx&quot;&gt;API Improvements made in SignalR 0.5&lt;/a&gt;&lt;/strong&gt;       &lt;br /&gt;
David Fowler&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
Azure / Cloud&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.everything-microsoft.com/2012/05/08/microsoft-renames-azure-services/&quot;&gt;Microsoft Renames Azure Services&lt;/a&gt;&lt;/strong&gt;       &lt;br /&gt;
Martin Brinkmann&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
Conceptos&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://blogs.msdn.com/b/ericlippert/archive/2012/05/07/guid-guide-part-three.aspx&quot;&gt;&lt;strong&gt;GUID guide, part three&lt;/strong&gt;&lt;/a&gt;       &lt;br /&gt;
Eric Lippert &lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
Data access&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://martinfowler.com/bliki/OrmHate.html&quot;&gt;&lt;strong&gt;OrmHate&lt;/strong&gt;&lt;/a&gt;       &lt;br /&gt;
Martin Fowler &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blogs.msdn.com/b/adonet/archive/2012/05/08/ef5-sample-provider-published.aspx&quot;&gt;&lt;strong&gt;EF5 Sample Provider Published&lt;/strong&gt;&lt;/a&gt;       &lt;br /&gt;
Pawel Kadluczka &lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
Html/Css/Javascript&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.stubbornella.org/content/2012/05/02/cross-browser-debugging-css/&quot; title=&quot;Permanent Link- Cross-Browser Debugging CSS&quot;&gt;&lt;strong&gt;Cross-Browser Debugging CSS&lt;/strong&gt;&lt;/a&gt;       &lt;br /&gt;
Nicole Sullivan &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://net.tutsplus.com/tutorials/javascript-ajax/prototypes-in-javascript-what-you-need-to-know/&quot;&gt;Prototypes in JavaScript&lt;/a&gt;&lt;/strong&gt;       &lt;br /&gt;
Leigh Kaszick &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.nczonline.net/blog/2012/05/08/working-with-files-in-javascript-part-1&quot;&gt;Working with files in JavaScript, Part 1&lt;/a&gt;&lt;/strong&gt;       &lt;br /&gt;
Nicholas C. Zakas &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://html5doctor.com/html5-audio-the-state-of-play/&quot;&gt;HTML5 Audio — The State of Play&lt;/a&gt;&lt;/strong&gt;       &lt;br /&gt;
Mark Boas &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.strathweb.com/2012/05/native-html5-push-notifications-with-asp-net-web-api-and-knockout-js/&quot; title=&quot;Permalink to Native HTML5 push notifications with ASP.NET Web API and Knockout.js&quot;&gt;&lt;strong&gt;Native HTML5 push notifications with ASP.NET Web API and Knockout.js&lt;/strong&gt;&lt;/a&gt;       &lt;br /&gt;
Filip W. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://net.tutsplus.com/tutorials/javascript-ajax/14-reason-why-nobody-used-your-jquery-plugin/&quot;&gt;14 Reasons Why Nobody Used Your jQuery Plugin&lt;/a&gt;&lt;/strong&gt;       &lt;br /&gt;
Jonathan Cutrell&lt;/li&gt;
&lt;ul&gt;&lt;/ul&gt;
&lt;/ul&gt;
&lt;h4&gt;
Visual Studio/Complementos/Herramientas&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://blogs.jetbrains.com/dotnet/2012/05/dotpeek-10-is-released/&quot;&gt;dotPeek 1.0 is Released&lt;/a&gt;&lt;/strong&gt;       &lt;br /&gt;
Jura Gorohovsky (vía @hhariri) &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.genbetadev.com/gestores-de-contenido/etiquetando-haciendo-crecer-nuestro-arbol-del-repositorio-de-codigo&quot;&gt;Etiquetando,haciendo crecer nuestro árbol del repositorio de código&lt;/a&gt;&lt;/strong&gt; y &lt;strong&gt;&lt;a href=&quot;http://www.genbetadev.com/gestores-de-contenido/branching-haciendo-crecer-nuestro-arbol-del-repositorio-de-codigo&quot;&gt;Branching, haciendo crecer nuestro árbol del repositorio de código&lt;/a&gt;&lt;/strong&gt;       &lt;br /&gt;
Juan Quijano &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://blogs.msdn.com/b/visualstudio/archive/2012/05/08/visual-studio-11-user-interface-updates-coming-in-rc.aspx&quot;&gt;Visual Studio 11 User Interface Updates Coming in RC&lt;/a&gt;&lt;/strong&gt;       &lt;br /&gt;
Monty Hammontree   &lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
Otros&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.hanselman.com/blog/TheFloppyDiskMeansSaveAnd14OtherOldPeopleIconsThatDontMakeSenseAnymore.aspx&quot;&gt;&lt;strong&gt;The Floppy Disk means Save, and 14 other old people Icons that don't make sense anymore&lt;/strong&gt;&lt;/a&gt;       &lt;br /&gt;
Scott Hanselman &lt;/li&gt;
&lt;/ul&gt;
Y no olvidéis que podéis seguir esta información en vivo y en directo desde &lt;a href=&quot;http://www.facebook.com/variablenotfound&quot;&gt;Variable not found en Facebook&lt;/a&gt;, o a través de &lt;a href=&quot;http://twitter.com/jmaguilar&quot;&gt;Twitter&lt;/a&gt;.     &lt;br /&gt;
&lt;br /&gt;
Publicado en &lt;a href=&quot;http://www.variablenotfound.com/&quot;&gt;Variable not found&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/27752126-3882771534374934261?l=www.variablenotfound.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/Ls1Q1M7V2BPRKSA5C9lBCxAR57o/0/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/Ls1Q1M7V2BPRKSA5C9lBCxAR57o/0/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/Ls1Q1M7V2BPRKSA5C9lBCxAR57o/1/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/Ls1Q1M7V2BPRKSA5C9lBCxAR57o/1/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/vnf?a=GC83Y6j9wJg:i3ChVOptABw:ecdYMiMMAMM&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/vnf?d=ecdYMiMMAMM&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/vnf?a=GC83Y6j9wJg:i3ChVOptABw:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/vnf?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/vnf?a=GC83Y6j9wJg:i3ChVOptABw:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/vnf?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/vnf?a=GC83Y6j9wJg:i3ChVOptABw:4cEx4HpKnUU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/vnf?i=GC83Y6j9wJg:i3ChVOptABw:4cEx4HpKnUU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/vnf?a=GC83Y6j9wJg:i3ChVOptABw:F7zBnMyn0Lo&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/vnf?i=GC83Y6j9wJg:i3ChVOptABw:F7zBnMyn0Lo&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/vnf?a=GC83Y6j9wJg:i3ChVOptABw:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/vnf?i=GC83Y6j9wJg:i3ChVOptABw:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/vnf?a=GC83Y6j9wJg:i3ChVOptABw:I9og5sOYxJI&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/vnf?d=I9og5sOYxJI&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/vnf/~4/GC83Y6j9wJg&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Mon, 14 May 2012 07:15:00 +0000</pubDate>
	<author>noreply@blogger.com (José M. Aguilar)</author>
</item>
<item>
	<title>Línea de código: Conversaciones sobre Programación. Build 2012.02</title>
	<guid isPermaLink="false">http://lineadecodigo.com/?p=4284</guid>
	<link>http://feedproxy.google.com/~r/LineaDeCodigo/~3/7qG3DOqdcp8/</link>
	<description>&lt;p&gt;&lt;img src=&quot;http://img.aulambra.com/wp-content/uploads/2009/10/logo_aulambra.png&quot; style=&quot;margin: 10px;&quot; title=&quot;logo_aulambra&quot; height=&quot;100&quot; width=&quot;100&quot; alt=&quot;&quot; class=&quot;alignright size-full wp-image-2023&quot; /&gt;Segunda entrega del resumen en los &lt;strong&gt;&lt;a href=&quot;http://lineadecodigo.com/conversacion/grupos-de-conversacion-sobre-programacion-en-facebook/&quot; title=&quot;Grupos de Conversación en Facebook sobre lenguajes de programación en español&quot;&gt;grupos de conversación de Facebook sobre lenguajes de programación en español&lt;/a&gt;.&lt;/strong&gt; La verdad es que no dejo de estar sorprendido de la cantidad y calidad de las conversaciones en los grupos. Y muy agradecido de toda la gente que está participando en ellos.&lt;/p&gt;
&lt;p&gt;Esta semana hemos lanzado uno nuevo, &lt;a href=&quot;http://lineadecodigo.com/conversacion/nuevo-grupo-de-conversacion-sobre-bases-de-datos/&quot; title=&quot;Grupo de Conversación sobre Bases de Datos&quot;&gt;el grupo de conversación sobre Bases de Datos&lt;/a&gt;. Y así, de la nada, ya hay 100 miembros conversando. Una pasada.&lt;/p&gt;
&lt;p&gt;Pero echemos un vistazo a las últimas conversaciones de los grupos sobre programación en español...&lt;/p&gt;
&lt;h3&gt;HTML5 en Español&lt;br /&gt;
&lt;a href=&quot;https://www.facebook.com/groups/html5.es/&quot;&gt;https://www.facebook.com/groups/html5.es/&lt;/a&gt;&lt;br /&gt;
&lt;em style=&quot;font-size: 0.7em;&quot;&gt;106 miembros (+31)&lt;/em&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.facebook.com/groups/html5.es/permalink/196944440426427/&quot; title=&quot;Documento HTML Polyglot&quot;&gt;Documento de trabajo HTML Polyglot&lt;/a&gt;, o lo que quiere hacer la &lt;a href=&quot;http://www.w3.org&quot;&gt;W3C&lt;/a&gt; para que los documentos sean multi-idioma.&lt;/li&gt;
&lt;li&gt;Un artículo que habla de las &lt;a href=&quot;https://www.facebook.com/groups/html5.es/permalink/197072073746997/&quot; title=&quot;7 tecnologías que sostienen Facebook&quot;&gt;7 tecnologías que sostienen Facebook&lt;/a&gt;, de los chicos de &lt;a href=&quot;http://www.genbeta.com/&quot; title=&quot;Genbeta&quot;&gt;Genbeta&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Pregunta sobre &lt;a href=&quot;https://www.facebook.com/groups/html5.es/permalink/198296236957914/&quot; title=&quot;Poner un favicon en una página web&quot;&gt;cómo poner el Favicon en una página web&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;¿Alguién conoce un &lt;a href=&quot;https://www.facebook.com/groups/html5.es/permalink/199156506871887/&quot; title=&quot;Hosting con soporte Phyton con Django&quot;&gt;hosting con soporte de Phyton con Django&lt;/a&gt;?&lt;/li&gt;
&lt;li&gt;Dudas sobre &lt;a href=&quot;https://www.facebook.com/groups/html5.es/permalink/200923810028490/&quot; title=&quot;Cómo subir un fichero con un INPUT file y Perl&quot;&gt;cómo subir un fichero con un input file y el lenguaje Perl&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;Además se están manteniendo varios documentos:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.facebook.com/groups/html5.es/doc/152308228223382/&quot; title=&quot;Test para probar HTMl5&quot;&gt;Test para probar HTML5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.facebook.com/groups/html5.es/doc/152306054890266/&quot; title=&quot;Herramientas para desarrollar en HTML5&quot;&gt;Herramientas para desarrollar con HTML5&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h3&gt;Java en Español&lt;br /&gt;
&lt;a href=&quot;https://www.facebook.com/groups/java.es/&quot;&gt;https://www.facebook.com/groups/java.es/&lt;/a&gt;&lt;br /&gt;
&lt;em style=&quot;font-size: 0.7em;&quot;&gt;156 miembros (+66)&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;Lo más importante es que hemos &lt;a href=&quot;http://lineadecodigo.com/conversacion/con-que-ide-empezarias-a-aprender-java/&quot; title=&quot;¿Qué IDE utilizarias para empezar a aprender Java?&quot;&gt;lanzando una encuesta sobre qué IDE utilizarías para empezar a aprender el lenguaje de Java&lt;/a&gt;. No dejes de contestar y añadir tus comentarios.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.facebook.com/groups/java.es/doc/414873981869857/&quot; title=&quot;Método de ordenación burbuja para arrays&quot;&gt;Cómo resolver el método de ordenación de Arrays con el método burbuja&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.facebook.com/groups/java.es/permalink/414870695203519/&quot; title=&quot;Páginas con Tutoriales para empezar con Java&quot;&gt;Páginas con tutoriales para empezar con Java&lt;/a&gt; (y &lt;a href=&quot;https://www.facebook.com/groups/java.es/permalink/420347981322457/&quot; title=&quot;Páginas con Tutoriales para empezar con Java&quot;&gt;2&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Se pedía &lt;a href=&quot;https://www.facebook.com/groups/java.es/permalink/415979385092650/&quot; title=&quot;Ayuda para el algoritmo de un Número Feliz&quot;&gt;ayuda sobre cómo resolver el algoritmo del Número Feliz&lt;/a&gt;.... y &lt;a href=&quot;https://www.facebook.com/groups/java.es/permalink/416369071720348/&quot; title=&quot;Número Feliz con Java&quot;&gt;ya está resuelto y publicado&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Se ha &lt;a href=&quot;https://www.facebook.com/groups/java.es/permalink/415849171772338/&quot; title=&quot;Calcular la Serie de Taylor en Java&quot;&gt;comentado y resuelto como construir un programa para calcular la serie de Taylor&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Ayuda para encontrar &lt;a href=&quot;https://www.facebook.com/groups/java.es/permalink/417771101580145/&quot; title=&quot;Información y Ejemplo de la Anotación @intercepts&quot;&gt;información y ejemplo de la anotación @Intercepts&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;a href=&quot;http://lineadecodigo.com/author/pablo-ruiz/&quot; title=&quot;Pablo Ruiz&quot;&gt;Pablo Ruiz&lt;/a&gt;&lt;/em&gt; está publicando artículos muy interesantes con los &lt;a href=&quot;https://www.facebook.com/groups/java.es/permalink/418420224848566/&quot; title=&quot;Ejercicios de la Certificación Java&quot;&gt;ejercicios de la Certificación Java&lt;/a&gt; en &lt;a href=&quot;https://www.facebook.com/groups/java.es/permalink/419639228059999/&quot; title=&quot;Blog de Pablo Ruiz&quot;&gt;su blog&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;¿&lt;a href=&quot;https://www.facebook.com/groups/java.es/permalink/418328488191073/&quot; title=&quot;Sirven los tutoriales de Eclipse para Netbeans&quot;&gt;Sirven los tutoriales de Eclipse para Netbeans&lt;/a&gt;?&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.facebook.com/groups/java.es/permalink/418627111494544/&quot; title=&quot;Primeros Pasos de JSF&quot;&gt;Primeros pasos de JSF&lt;/a&gt;, &lt;a href=&quot;https://www.facebook.com/groups/java.es/permalink/418730241484231/&quot; title=&quot;Primera pantalla con JSF&quot;&gt;Primera pantalla con JSF&lt;/a&gt; y &lt;a href=&quot;https://www.facebook.com/groups/java.es/permalink/418914368132485/&quot; title=&quot;Manejando ManageBean en JSF&quot;&gt;Manejando ManageBean en JSF&lt;/a&gt; por &lt;em&gt;Julio Pari.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Ing Guillermo Gonzalez&lt;/em&gt; propone ir publicando &lt;a href=&quot;https://www.facebook.com/groups/java.es/permalink/419425571414698/&quot; title=&quot;Algoritmos Básicos para la gente que Empieza&quot;&gt;algoritmos básicos e irles resolviendo para ayudar a la gente que empieza&lt;/a&gt;. (y &lt;a href=&quot;https://www.facebook.com/groups/java.es/permalink/420596044630984/&quot; title=&quot;Ayuda con Algoritmos para novatos con Java&quot;&gt;2&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.facebook.com/groups/java.es/permalink/419621021395153/&quot; title=&quot;Material de Certificación Java&quot;&gt;¿Quieres material de certificación Java?&lt;/a&gt;... Ya se ha publicado &lt;a href=&quot;https://www.facebook.com/groups/java.es/permalink/419627108061211/&quot; title=&quot;Ejemplos de Certificación Java&quot;&gt;algunos ejemplos&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Un poco de &lt;a href=&quot;https://www.facebook.com/groups/java.es/permalink/419740344716554/&quot; title=&quot;Ayuda en un código de manejo de Scanner&quot;&gt;ayuda en un código con el manejo de Scanner&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.facebook.com/groups/java.es/permalink/419770264713562/&quot; title=&quot;Ayuda con Java Server Faces&quot;&gt;Ayuda con Java Server Faces&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.facebook.com/groups/java.es/permalink/419699408053981/&quot; title=&quot;Arquitectura para construir una aplicación web&quot;&gt;¿Qué arquitectura seguir para construir una aplicación web?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.facebook.com/groups/java.es/permalink/419940944696494/&quot; title=&quot;Pastebin, aplicación para compartir código web&quot;&gt;Pastebin&lt;/a&gt; una buena aplicación para compartir código fuente.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.facebook.com/groups/java.es/permalink/420002518023670/&quot; title=&quot;Blog de Algoritmos y Cia&quot;&gt;Algoritmos y cia&lt;/a&gt;, un buen blog para compartir algoritmos básicos.&lt;/li&gt;
&lt;li&gt;Ayuda para declarar un &lt;a href=&quot;https://www.facebook.com/groups/java.es/permalink/419926398031282/&quot; title=&quot;Array para insertar cualquier tipo de objeto&quot;&gt;array dónde puedas  insertar cualquier tipo de objeto&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.facebook.com/groups/java.es/permalink/420148648009057/&quot; title=&quot;Crear ventanas personalizadas con Susbtances&quot;&gt;Crear ventanas personalizadas con Substances&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Aunque no te lo creas, &lt;a href=&quot;https://www.facebook.com/groups/java.es/permalink/420355854655003/&quot; title=&quot;Emulador de MSDOS&quot;&gt;se busca un emulador de MSDOS&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Cómo &lt;a href=&quot;https://www.facebook.com/groups/java.es/permalink/420132684677320/&quot; title=&quot;Separar un número de dígitos&quot;&gt;separar a un número en dígitos&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.facebook.com/groups/java.es/permalink/420279081329347/&quot; title=&quot;Modelos de Persistencia que no sean de consultas&quot;&gt;Capas de persistencia de datos que no sean el típico manejo de sentencias de un modelo E/R&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Javascript en Español&lt;br /&gt;
&lt;a href=&quot;https://www.facebook.com/groups/javascript.es/&quot;&gt;https://www.facebook.com/groups/javascript.es/&lt;/a&gt;&lt;br /&gt;
&lt;em style=&quot;font-size: 0.7em;&quot;&gt;84 miembros (+18)&lt;/em&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Una &lt;a href=&quot;https://www.facebook.com/groups/javascript.es/permalink/387491987956252/&quot; title=&quot;Chuleta con ayudas para Javascript&quot;&gt;chuleta sobre Javascript&lt;/a&gt;, bastante interesante.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;jQuery en Español&lt;br /&gt;
&lt;a href=&quot;https://www.facebook.com/groups/jquery.es/&quot;&gt;https://www.facebook.com/groups/jquery.es/&lt;/a&gt;&lt;br /&gt;
&lt;em style=&quot;font-size: 0.7em;&quot;&gt;99 miembros (+17)&lt;/em&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.facebook.com/groups/jquery.es/permalink/230596510384339/&quot; title=&quot;Hola Mundo con jQuery Mobile&quot;&gt;El Hola Mundo con jQuery Mobile&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;PHP en Español&lt;br /&gt;
&lt;a href=&quot;https://www.facebook.com/groups/HypertextPreprocessor.es/&quot;&gt;https://www.facebook.com/groups/HypertextPreprocessor.es/&lt;/a&gt;&lt;br /&gt;
&lt;em style=&quot;font-size: 0.7em;&quot;&gt;89 miembros (+26)&lt;/em&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Un &lt;a href=&quot;https://www.facebook.com/groups/HypertextPreprocessor.es/permalink/340508512681153/&quot; title=&quot;Vídeo sobre la gente de Linux&quot;&gt;vídeo sobre la gente de Linux&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;El &lt;a href=&quot;https://www.facebook.com/groups/HypertextPreprocessor.es/permalink/341810909217580/&quot; title=&quot;Framework Codeigniter&quot;&gt;framework CodeIgniter&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Ayuda a Raúl para montar el &lt;a href=&quot;https://www.facebook.com/groups/HypertextPreprocessor.es/permalink/343588932373111/&quot; title=&quot;Consultas para mostrar listado de libros&quot;&gt;código que consulta una base de datos y muestra un listado de libros&lt;/a&gt;. (y &lt;a href=&quot;https://www.facebook.com/groups/HypertextPreprocessor.es/permalink/343710989027572/&quot; title=&quot;Ayuda para sacar un Listado de Libros&quot;&gt;2&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;¿&lt;a href=&quot;https://www.facebook.com/groups/HypertextPreprocessor.es/permalink/344776318921039/&quot; title=&quot;Configurar el PHP en Aptana&quot;&gt;Cómo configurar el PHP en Aptana&lt;/a&gt;?&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.facebook.com/groups/HypertextPreprocessor.es/permalink/345096205555717/&quot; title=&quot;Programación Orientada a Aspectos en PHP&quot;&gt;Programación Orientada a Aspectos en PHP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Problemas con &lt;a href=&quot;https://www.facebook.com/groups/HypertextPreprocessor.es/permalink/344130968985574/&quot; title=&quot;Problemas con localhost y Drupal&quot;&gt;el localhost y Drupal&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.facebook.com/groups/HypertextPreprocessor.es/permalink/345497462182258/&quot; title=&quot;Algunas novedades de lo que encontramos en PHP 5.4.0&quot;&gt;Algunas novedades de lo que encontramos en PHP 5.4.0&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Bases de Datos en Español&lt;br /&gt;
&lt;a href=&quot;https://www.facebook.com/groups/basesdedatos.es/&quot; title=&quot;Bases de Datos en Español&quot;&gt;https://www.facebook.com/groups/basesdedatos.es/&lt;/a&gt;&lt;br /&gt;
&lt;em style=&quot;font-size: 0.7em;&quot;&gt;100 miembros&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;Una gran acogida del grupo sobre bases de datos en español con una cifra de 100 usuarios desde el inicio.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.facebook.com/groups/basesdedatos.es/permalink/356412641088816/&quot; title=&quot;Mejor forma de extraer datos de una BD&quot;&gt;¿Cual es la mejor forma de extraer datos de una base de datos?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Algunas &lt;a href=&quot;https://www.facebook.com/groups/basesdedatos.es/permalink/356382191091861/&quot; title=&quot;Tablas para practicar con Oracle&quot;&gt;tablas para practicar con Oracle&lt;/a&gt; por &lt;em&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;a href=&quot;http://lineadecodigo.com/author/pablo-ruiz/&quot; title=&quot;Pablo Ruiz&quot;&gt;Pablo Ruiz&lt;/a&gt;&lt;/span&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Ayuda para &lt;a href=&quot;https://www.facebook.com/groups/basesdedatos.es/permalink/358160824247331/&quot; title=&quot;Manejar links e imagenes en una base de datos&quot;&gt;manejar links e imágenes en una base de datos&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.facebook.com/groups/basesdedatos.es/permalink/358114370918643/&quot; title=&quot;Descargar Microsoft SQL Server&quot;&gt;Dónde encontrar Microsft SQL Server&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Como &lt;a href=&quot;https://www.facebook.com/groups/basesdedatos.es/permalink/358144370915643/&quot; title=&quot;Empezar con los modelos y las bases de datos&quot;&gt;empezar en el mundo de los modelos y las bases de datos&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;strong&gt;Similar Posts:&lt;/strong&gt;
&lt;/p&gt;&lt;ul class=&quot;similar-posts&quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://lineadecodigo.com/conversacion/nuevo-grupo-de-conversacion-sobre-bases-de-datos/&quot; rel=&quot;bookmark&quot; title=&quot;Mayo 7, 2012&quot;&gt;Nuevo grupo de conversación sobre Bases de Datos&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://lineadecodigo.com/conversacion/conversaciones-sobre-programacion-build-2012-01/&quot; rel=&quot;bookmark&quot; title=&quot;Mayo 3, 2012&quot;&gt;Conversaciones sobre Programación. Build 2012.01&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://lineadecodigo.com/conversacion/grupos-de-conversacion-sobre-programacion-en-facebook/&quot; rel=&quot;bookmark&quot; title=&quot;Marzo 30, 2012&quot;&gt;Grupos de Conversación sobre Programación en Facebook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://lineadecodigo.com/javascript/jssql-un-motor-de-base-de-datos-en-javascript/&quot; rel=&quot;bookmark&quot; title=&quot;Octubre 14, 2010&quot;&gt;JSSQL: Un motor de base de datos en javascript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://lineadecodigo.com/eventos/java-intro-programming-bootcamp-3rd-session/&quot; rel=&quot;bookmark&quot; title=&quot;Enero 13, 2007&quot;&gt;Java Intro Programming Bootcamp – 3rd session&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/0F6O9Utord4F5Z35nc7lN_0o_E4/0/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/0F6O9Utord4F5Z35nc7lN_0o_E4/0/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/0F6O9Utord4F5Z35nc7lN_0o_E4/1/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/0F6O9Utord4F5Z35nc7lN_0o_E4/1/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?a=7qG3DOqdcp8:G52v8jHD0wo:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?a=7qG3DOqdcp8:G52v8jHD0wo:F7zBnMyn0Lo&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?i=7qG3DOqdcp8:G52v8jHD0wo:F7zBnMyn0Lo&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?a=7qG3DOqdcp8:G52v8jHD0wo:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?i=7qG3DOqdcp8:G52v8jHD0wo:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?a=7qG3DOqdcp8:G52v8jHD0wo:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?a=7qG3DOqdcp8:G52v8jHD0wo:tKBiNdHYW3c&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?d=tKBiNdHYW3c&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/LineaDeCodigo/~4/7qG3DOqdcp8&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Sun, 13 May 2012 21:34:14 +0000</pubDate>
</item>
<item>
	<title>Otro blog más: Los tuits de la semana (45)</title>
	<guid isPermaLink="false">http://obm.corcoles.net/?p=7601</guid>
	<link>http://obm.corcoles.net/20120513/los-tuits-de-la-semana-45/</link>
	<description>&lt;p&gt;Tampoco ha sido esta una semana especialmente interesante en &lt;a href=&quot;http://twitter.com/chechar&quot;&gt;@chechar&lt;/a&gt;…&lt;/p&gt;
&lt;h3&gt;Los de autobombo&lt;/h3&gt;
&lt;blockquote&gt;&lt;p&gt;RT &lt;a href=&quot;http://twitter.com/UOCsevilla&quot;&gt;@UOCsevilla&lt;/a&gt; En el blog -&amp;gt; el 16/05 3a sesión de #debateSIC sobre prospectiva tecnológica con &lt;a href=&quot;http://twitter.com/chechar&quot;&gt;@chechar&lt;/a&gt; y Jesús Pérez de &lt;a href=&quot;http://twitter.com/vodafone_es&quot;&gt;@vodafone_es&lt;/a&gt; &lt;a href=&quot;http://territori.blogs.uoc.edu/es/2012/05/sic-prospectiva-tecnologica/&quot;&gt;http://territori.blogs.uoc.edu/es/2012/05/sic-prospectiva-tecnologica/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Pues sí, el Miércoles estaré en Sevilla intentando adivinar un poco el futuro… Y el contenido de mi presentación aún puede cambiar:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;lo que pienso contar la semana que viene en Sevilla en #debateSIC. se admiten propuestas de mejora ;-) &lt;a href=&quot;http://j.mp/IGZOzy&quot;&gt;http://j.mp/IGZOzy&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Los de diseño y desarrollo web&lt;/h3&gt;
&lt;blockquote&gt;&lt;p lang=&quot;en&quot;&gt;RT &lt;a href=&quot;http://twitter.com/kazuhito&quot;&gt;@kazuhito&lt;/a&gt; Check out this presentation : For a Future-Friendly Web (Mobilism 2012) &lt;a href=&quot;http://www.slideshare.net/bradfrostweb/for-a-futurefriendly-web-mobilism-2012&quot;&gt;http://www.slideshare.net/bradfrostweb/for-a-futurefriendly-web-mobilism-2012&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;p&gt;presentación: &lt;span lang=&quot;en&quot;&gt;Polyfills For The Pragmatist &lt;a href=&quot;http://j.mp/IMfLj5&quot;&gt;http://j.mp/IMfLj5&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;p&gt;Apañao, el artículo de Wired sobre A/B testing &lt;a href=&quot;http://j.mp/IYHSkR&quot; hreflang=&quot;en&quot;&gt;http://j.mp/IYHSkR&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;p lang=&quot;en&quot;&gt;Test Everything: Notes on the A/B Revolution &lt;a href=&quot;http://j.mp/JeGaYI&quot;&gt;http://j.mp/JeGaYI&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;p lang=&quot;en&quot;&gt;RT &lt;a href=&quot;http://twitter.com/lucascepeda&quot;&gt;@lucascepeda&lt;/a&gt; Principles of User Interface Design &lt;a href=&quot;http://bit.ly/J0mfNY&quot;&gt;http://bit.ly/J0mfNY&lt;/a&gt; #UX #UI&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;p lang=&quot;en&quot;&gt;Mozilla Shrinks Memory Use in Firefox &lt;span lang=&quot;es&quot;&gt;(de momento sólo en las nightly)&lt;/span&gt; &lt;a href=&quot;http://j.mp/IFEzsU&quot;&gt;http://j.mp/IFEzsU&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;p&gt;impresionante índice de las tecnologías que mueven la plataforma web: &lt;a href=&quot;http://platform.html5.org/&quot; hreflang=&quot;en&quot;&gt;http://platform.html5.org/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Y uno de visualización de la información&lt;/h3&gt;
&lt;blockquote&gt;&lt;p&gt;impresionante selección de herramientas #infoviz de datavisualization.ch &lt;a href=&quot;http://j.mp/J9JyV2&quot; hreflang=&quot;en&quot;&gt;http://j.mp/J9JyV2&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;La semana que viene, más y mejor (esperemos).&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;a2a_button_facebook_like addtoany_special_service&quot;&gt;&lt;/a&gt;&lt;a class=&quot;a2a_button_twitter_tweet addtoany_special_service&quot;&gt;&lt;/a&gt;&lt;a class=&quot;a2a_button_google_plusone addtoany_special_service&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.addtoany.com/share_save#url=http%3A%2F%2Fobm.corcoles.net%2F20120513%2Flos-tuits-de-la-semana-45%2F&amp;amp;title=Los%20tuits%20de%20la%20semana%20%2845%29&quot; id=&quot;wpa2a_4&quot; class=&quot;a2a_dd a2a_target addtoany_share_save&quot;&gt;Share/Bookmark&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Sun, 13 May 2012 18:07:46 +0000</pubDate>
</item>
<item>
	<title>Línea de código: Detectar la rotación del dispositivo con jQuery Mobile</title>
	<guid isPermaLink="false">http://lineadecodigo.com/?p=4270</guid>
	<link>http://feedproxy.google.com/~r/LineaDeCodigo/~3/Cibkx2I7juA/</link>
	<description>&lt;p&gt;Una de las capacidades de los dispositivos móviles, ya sean smartphones o tablets, es que podemos girar el dispositivo y visualizar el contenido en dos posiciones.&lt;/p&gt;
&lt;p&gt;Las dos posiciones son conocidas como &lt;strong&gt;landscape&lt;/strong&gt; (apaisado u horizontal) y &lt;strong&gt;portrait&lt;/strong&gt; (retrato o vertical).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://img.aulambra.com/wp-content/uploads/2012/05/portrait-landscape.png&quot; title=&quot;portrait-landscape&quot; height=&quot;333&quot; width=&quot;539&quot; alt=&quot;&quot; class=&quot;aligncenter size-full wp-image-4278&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Cuando estamos contruyendo nuestra aplicación para dispositivos móviles es interesante el conocer cuándo el usuario ha decidido rotar el dispositivo. Ya que puede ser que necesitemos reajustar algo en la visualización de nuestra página.&lt;/p&gt;
&lt;p&gt;Es por ello que &lt;a href=&quot;http://www.manualweb.net/tutorial-jquery-mobile/&quot; title=&quot;Tutorial de jQuery Mobile&quot;&gt;jQuery Mobile&lt;/a&gt; nos proporciona un mecanismo para detectar la rotación del dispositivo. Este mecanismo es un evento, &lt;strong&gt;el evento orientationchange&lt;/strong&gt;. Entonces lo que tenemos que hacer es escuchar al evento orientationchange y asignar una función para cuando se produzca dicho evento. Esto lo conseguimos mediante el método &lt;a href=&quot;http://www.w3api.com/wiki/jQuery:Bind()&quot; title=&quot;Método bind de jQuery&quot;&gt;.bind()&lt;/a&gt;.&lt;/p&gt;
&lt;pre style=&quot;font-family: monospace;&quot; class=&quot;javascript&quot;&gt;$&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;window&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;bind&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&quot;orientationchange&quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;event&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;{&lt;/span&gt;...&lt;span style=&quot;color: #009900;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Dentro de la información del evento nos viene la orientación en la que el usuario ha puesto al dispositivo. En concreto viene en &lt;strong&gt;event.orientation&lt;/strong&gt;. Los valores de event.orientation son &quot;landscape&quot; y &quot;portrait&quot;.&lt;/p&gt;
&lt;p&gt;Así, lo que haremos será, si viene el valor de event.orientation, asignaremos ese valor al contenido de una capa que hemos añadido en el contenido de la página&lt;/p&gt;
&lt;pre style=&quot;font-family: monospace;&quot; class=&quot;javascript&quot;&gt;$&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;window&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;bind&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&quot;orientationchange&quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;event&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;{&lt;/span&gt;
  &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;event.&lt;span style=&quot;color: #660066;&quot;&gt;orientation&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;
    $&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&quot;#contenido&quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&quot;Me han reorientado a &quot;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; event.&lt;span style=&quot;color: #660066;&quot;&gt;orientation&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;La capa sería:&lt;/p&gt;
&lt;pre style=&quot;font-family: monospace;&quot; class=&quot;html4strict&quot;&gt; 
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;a href=&quot;http://w3api.com/wiki/HTML:DIV&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;div&lt;/span&gt;&lt;/a&gt; data-role&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;content&quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;
  Ejemplo que controla la rotaci&lt;span style=&quot;color: #ddbb00;&quot;&gt;&amp;amp;oacute;&lt;/span&gt;n del dispositivo movil.
  &lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;a href=&quot;http://w3api.com/wiki/HTML:SPAN&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;span&lt;/span&gt;&lt;/a&gt; &lt;a href=&quot;http://w3api.com/wiki/HTML:id&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;id&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;contenido&quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;Inicio de la Aplicación&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://w3api.com/wiki/HTML:SPAN&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;span&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://w3api.com/wiki/HTML:DIV&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;div&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
 &lt;/pre&gt;
&lt;p&gt;Para la gestión del evento deberemos de esperar a que se haya cargado todo el contenido de la página. Es por ello que pondremos el código de gestión del evento para detectar la rotación del dispositivo dentro del evento &lt;a href=&quot;http://www.w3api.com/wiki/jQuery:Ready()&quot; title=&quot;Méotdo ready de jQuery&quot;&gt;.ready()&lt;/a&gt; de &lt;a href=&quot;http://www.manualweb.net/tutorial-jquery/&quot; title=&quot;Tutorial de jQuery&quot;&gt;jQuery&lt;/a&gt;.&lt;/p&gt;
&lt;pre style=&quot;font-family: monospace;&quot; class=&quot;javascript&quot;&gt;$&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;document&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;ready&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;{&lt;/span&gt;
  $&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;window&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;bind&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&quot;orientationchange&quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;event&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;{&lt;/span&gt;
    &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;event.&lt;span style=&quot;color: #660066;&quot;&gt;orientation&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;
      $&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&quot;#contenido&quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&quot;Me han reorientado a &quot;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; event.&lt;span style=&quot;color: #660066;&quot;&gt;orientation&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
  &lt;span style=&quot;color: #009900;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Por último deberemos de hacer es lanzar, por nosotros mismos, el evento orientationchange para que se calcule la orientación inicial del dispositivo. Pera esto nos apoyamos en el método &lt;a href=&quot;http://www.w3api.com/wiki/jQuery:Trigger()&quot; title=&quot;Método trigger de jQuery&quot;&gt;.trigger()&lt;/a&gt;.&lt;/p&gt;
&lt;pre style=&quot;font-family: monospace;&quot; class=&quot;javascript&quot;&gt;$&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;window&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;trigger&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&quot;orientationchange&quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Similar Posts:&lt;/strong&gt;
&lt;/p&gt;&lt;ul class=&quot;similar-posts&quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://lineadecodigo.com/jquery/evitar-que-se-ejecute-un-evento-con-jquery/&quot; rel=&quot;bookmark&quot; title=&quot;Junio 11, 2010&quot;&gt;Evitar que se ejecute un evento con jQuery&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://lineadecodigo.com/jquery/modificar-el-contenido-de-una-capa-con-jquery/&quot; rel=&quot;bookmark&quot; title=&quot;Mayo 27, 2010&quot;&gt;Modificar el contenido de una capa con jQuery&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://lineadecodigo.com/jquery/cargar-contenido-con-el-scroll-usando-jquery/&quot; rel=&quot;bookmark&quot; title=&quot;Mayo 24, 2010&quot;&gt;Cargar contenido con el scroll usando jQuery&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://lineadecodigo.com/jquery/cambios-en-un-combo-con-jquery/&quot; rel=&quot;bookmark&quot; title=&quot;Mayo 17, 2011&quot;&gt;Cambios en un combo con jQuery&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://lineadecodigo.com/desarrollo-movil/listas-anidadas-con-jquery-mobile/&quot; rel=&quot;bookmark&quot; title=&quot;Mayo 14, 2012&quot;&gt;Listas anidadas con jQuery Mobile&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/CDN4OCvO_y_-A3o7Jy3K5XuD81E/0/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/CDN4OCvO_y_-A3o7Jy3K5XuD81E/0/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/CDN4OCvO_y_-A3o7Jy3K5XuD81E/1/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/CDN4OCvO_y_-A3o7Jy3K5XuD81E/1/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?a=Cibkx2I7juA:nuGqk11Moaw:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?a=Cibkx2I7juA:nuGqk11Moaw:F7zBnMyn0Lo&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?i=Cibkx2I7juA:nuGqk11Moaw:F7zBnMyn0Lo&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?a=Cibkx2I7juA:nuGqk11Moaw:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?i=Cibkx2I7juA:nuGqk11Moaw:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?a=Cibkx2I7juA:nuGqk11Moaw:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?a=Cibkx2I7juA:nuGqk11Moaw:tKBiNdHYW3c&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/LineaDeCodigo?d=tKBiNdHYW3c&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/LineaDeCodigo/~4/Cibkx2I7juA&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Sun, 13 May 2012 18:00:28 +0000</pubDate>
</item>

</channel>
</rss>

