<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:planet="http://planet.intertwingly.net/" xmlns:indexing="urn:atom-extension:indexing" indexing:index="no"><access:restriction xmlns:access="http://www.bloglines.com/about/specs/fac-1.0" relationship="deny"/>
  <title>Planet Webdev</title>
  <updated>2012-05-17T18:59:50Z</updated>
  <generator uri="http://intertwingly.net/code/venus/">Venus</generator>
  <author>
    <name>Héctor Delcourt</name>
    <email>armonth___AT___gmail.com</email>
  </author>
  <id>http://planetwebdev.net/atom.xml</id>
  <link href="http://planetwebdev.net/atom.xml" rel="self" type="application/atom+xml"/>
  <link href="http://planetwebdev.net" rel="alternate"/>

  <entry xml:lang="en">
    <id>http://www.maestrosdelweb.com/?p=24601</id>
    <link href="http://www.maestrosdelweb.com/actualidad/geeksonaplane-emprendimientos-de-miami-y-mexico-df/" rel="alternate" type="text/html"/>
    <title>GeeksOnAPlane: emprendimientos de Miami y México DF</title>
    <summary>No hay mejor manera de abrir este articulo que citando a uno de los emprendedores y organizadores que hicieron que Geeks On A Plane llegara a tierras Aztecas: 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 [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>No hay mejor manera de abrir este articulo que citando a uno de los emprendedores y organizadores que hicieron que <strong>Geeks On A Plane</strong> llegara a tierras Aztecas:</p>
<blockquote><p>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 – <em>Cesar Salazar – Cofundador de Mexican.vc</em></p></blockquote>
<p><a href="http://www.maestrosdelweb.com/images/2012/05/photo1.jpg"><img alt="" class="alignleft  wp-image-24673" height="273" src="http://www.maestrosdelweb.com/images/2012/05/photo1-e1337188991392-337x450.jpg" style="border: 5px solid white;" width="207"/></a>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.</p>
<p>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.</p>
<p>El esfuerzo de plantar la semilla emprendedora esta dando sus frutos con Startups como <a href="http://feeds.feedburner.com/welcu.com" target="_blank">Welcu</a>, <a href="http://angel.co/yogome" target="_blank">Yogome</a>, <a href="http://angel.co/fontacto" target="_blank">Fontacto</a>, <a href="http://angel.co/ovia" target="_blank">Ovia</a>, <a href="http://feeds.feedburner.com/preyproject.com" target="_blank">PreyProject</a>, <a href="http://frogtek.org/" target="_blank">Frogtek</a> y muchas otras mas que tienen a emprendedores Latino Americanos como fundadores.</p>
<h3>Miami como punta de lanza para conectar con Hispanos en Estados Unidos.</h3>
<p>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.</p>
<blockquote><p>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.</p></blockquote>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<h3>StartupWeekend Mexico DF, el pais Azteca despertando el interes de geeks de Silicon Valley.</h3>
<p>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 <a href="http://iweekend.org" target="_blank">iWeekend</a>, varias reuniones de hackers Mexicanos como el <a href="http://superhappydevhouse.org/w/page/16345504/FrontPage" target="_blank">SuperHappyDevHouse</a> y <a href="http://mobilecamp.mx/" target="_blank">MobilecampMX</a>. Ha culminado con 4 eventos de <a href="http://startupweekend.org/" target="_blank">StartupWeekend</a> en México (<a href="http://startupweekendgdl.org/" target="_blank">Guadalajara</a>, <a href="http://aguascalientes.startupweekend.org/" target="_blank">Aguascalientes</a>, <a href="http://morelia.startupweekend.org/" target="_blank">Morelia</a> y <a href="http://tijuana.startupweekend.org/" target="_blank">Tijuana</a>) con rotundo éxito y que se proyecta hacer más de 15 en todo el país.</p>
<p><a href="http://www.maestrosdelweb.com/images/2012/05/Captura-de-pantalla-2012-05-16-a-las-2.13.09-PM.png"><img alt="" class="alignleft size-full wp-image-24670" height="179" src="http://www.maestrosdelweb.com/images/2012/05/Captura-de-pantalla-2012-05-16-a-las-2.13.09-PM.png" style="border: 5px solid white;" width="140"/></a>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.</p>
<blockquote><p>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.</p></blockquote>
<p>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 <a href="http://startupweekenddf.com/" target="_blank">StartupWeekend México DF</a>.</p>
<p>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.</p>
<h3>Convivencia de emprendedores, hackers e inversores en América Latina.</h3>
<p>Lo mejor que esta haciendo <a href="http://geeksonaplane.com" target="_blank">Geeks On A Plane</a>, 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 <a href="http://twitter.com/#!/traweln" target="_blank">Traweln</a> y <a href="http://twitter.com/#!/traweln" target="_blank">La Red Innova</a> que han permitido mediante conferencias hacer estas conexiones en Chile y España, con representación por parte de iniciativas Ibéricas como <a href="http://dad.es" target="_blank">Digital Asset Deployment</a> (DAD – fondo de inversión) y <a href="http://smartup.es" target="_blank">Smartup</a> (firma de marketing digital).</p>
<p>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.</p>
<blockquote><p>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.</p></blockquote>
<p>Así que no se pierdan lo que se publica diariamente en el hashtag <a href="http://twitter.com/#!/search/%23GOAP" target="_blank">#GOAP</a> en twitter para estar al tanto de lo que acontece en esta gira por Latino America de los <strong>Geeks On A Plane</strong>.</p>
<hr/><p style="height: 64px;"><img alt="Claudio Cossio" class="avatar" src="http://www.maestrosdelweb.com/images/autores/360-33.jpg" style="float: left; padding: 0 5px;"/> <strong>Claudio Cossio</strong> para <a href="http://www.maestrosdelweb.com">Maestros del Web</a>.<br/><a href="http://www.maestrosdelweb.com/actualidad/geeksonaplane-emprendimientos-de-miami-y-mexico-df/#respond">Agrega tu comentario</a> | <a href="http://www.maestrosdelweb.com/actualidad/geeksonaplane-emprendimientos-de-miami-y-mexico-df/">Enlace permanente</a> al artículo</p><hr style="clear: both;"/>
		<p><strong>Síguenos en:</strong> <img src="http://www.maestrosdelweb.com/diseno/imagenes/twitter.png" style="vertical-align: middle;"/> <a href="http://twitter.com/maestros">@maestros</a> | <img src="http://www.maestrosdelweb.com/diseno/imagenes/facebook.png" style="vertical-align: middle;"/> <a href="http://facebook.com/maestrosdelweb">Fan page</a></p></div>
    </content>
    <updated>2012-05-17T14:54:45Z</updated>
    <category term="Actualidad"/>
    <category term="Editorial"/>
    <category term="Eventos"/>
    <category term="emprendimiento"/>
    <category term="geeks on a plane"/>
    <category term="geeoksonaplane"/>
    <category term="miami"/>
    <category term="startup"/>
    <author>
      <name>Claudio Cossio</name>
    </author>
    <source>
      <id>http://www.maestrosdelweb.com</id>
      <link href="http://www.maestrosdelweb.com" rel="alternate" type="text/html"/>
      <link href="http://feeds.feedburner.com/mweditorial" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Un espacio para los entusiastas del web</subtitle>
      <title>Maestros del Web</title>
      <updated>2012-05-17T18:59:47Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-27752126.post-5937086874500553024</id>
    <link href="http://www.variablenotfound.com/feeds/5937086874500553024/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://www.blogger.com/comment.g?blogID=27752126&amp;postID=5937086874500553024" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/27752126/posts/default/5937086874500553024?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/27752126/posts/default/5937086874500553024?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://feedproxy.google.com/~r/vnf/~3/pUYTPASIuPI/auges-webcast-sobre-signalr-uau.html" rel="alternate" type="text/html"/>
    <title>[Auges] Webcast sobre SignalR: ¡uau!</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><img align="right" alt="AUGES: ASP.NET User Group Espa&#xF1;a" border="0" src="http://lh4.ggpht.com/-r9SV68Em5Jc/TnopO3YqltI/AAAAAAAABno/Oiiof6sGueA/image%25255B2%25255D.png?imgmax=800" style="margin: 0px 0px 10px 10px;" title="AUGES: ASP.NET User Group Espa&#xF1;a" width="200"/>Simplemente informaros de que el próximo jueves 24 de mayo a las 19:00h (hora peninsular española), participaré en una charla con <a href="http://auges.org/">AUGES</a> sobre SignalR, esa pequeña maravilla de la que ya <a href="http://www.variablenotfound.com/search/label/signalr">os he hablado por aquí en varias ocasiones</a>, una ayuda imprescindible a la hora de crear sistemas interactivos, multiusuario y en tiempo real para la web.<br/>
<br/>
El “cartel” oficial del evento es el siguiente:<br/>
<br/>
<div style="">
<h4 style="margin-top: 0px;">


SIGNALR: APLICACIONES MULTIUSUARIO, ASÍNCRONAS, Y EN TIEMPO REAL. ¡UAU!</h4>
¿Te has preguntado alguna vez cómo es posible que en una aplicación web como Google Docs <strong>varios usuarios puedan interactuar</strong> de forma simultánea? ¿Te interesa <strong>la tecnología que usan los grandes</strong> como Facebook o Twitter para informarte en tiempo real de que algo ha ocurrido? ¿Piensas que <strong>crear un chat</strong> basado puramente en ASP.NET no es tarea sencilla? ¿Te gustaría que el servidor pudiera <strong>enviar información a los clientes</strong> en cualquier momento, sin esperar a que éstos soliciten una página o recurso?<br/>
<br/>
<img alt="image" border="0" height="54" src="http://lh4.ggpht.com/-3wcP7VaADnw/T607SXZZDAI/AAAAAAAACCQ/8gTEMgwQ3aQ/image%25255B7%25255D.png?imgmax=800" style="background-image: none; display: inline; float: right; margin: 0px 0px 10px 10px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="54"/>Si has respondido que sí a alguna de estas preguntas, <strong>SignalR te entusiasmará</strong>. 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.<br/>
<br/>
No te pierdas este evento y aprende a poner un factor “¡uau!” en tus desarrollos.</div>
<br/>
Os recuerdo que se trata de <strong>un Webcast</strong>, 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 <strong>totalmente gratuito</strong>.<br/>
<br/>
Lo único que debéis hacer para poder asistir es registraros:<br/>
<ul>
<li>Día: jueves 24 de mayo, 19:00h (hora peninsular española)</li>
<li>URL del registro: <a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032512978&amp;Culture=es-ES" title="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032512978&amp;Culture=es-ES">https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032512978&amp;Culture=es-ES</a> </li>
</ul>
No me faltéis, que paso lista ;-)<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/27752126-5937086874500553024?l=www.variablenotfound.com" width="1"/></div>
<p><a href="http://feedads.g.doubleclick.net/~a/Z2EmKB85Krv482L7EgLpeqhKtoc/0/da"><img border="0" ismap="true" src="http://feedads.g.doubleclick.net/~a/Z2EmKB85Krv482L7EgLpeqhKtoc/0/di"/></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Z2EmKB85Krv482L7EgLpeqhKtoc/1/da"><img border="0" ismap="true" src="http://feedads.g.doubleclick.net/~a/Z2EmKB85Krv482L7EgLpeqhKtoc/1/di"/></a></p><img height="1" src="http://feeds.feedburner.com/~r/vnf/~4/pUYTPASIuPI" width="1"/></div>
    </content>
    <updated>2012-05-16T14:36:31Z</updated>
    <published>2012-05-16T11:53:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="charlas"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="auges"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="signalr"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="eventos"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://www.variablenotfound.com/2012/05/auges-webcast-sobre-signalr-uau.html</feedburner:origLink>
    <author>
      <name>José M. Aguilar</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/11683750380776435448</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-27752126</id>
      <category term="flash"/>
      <category term="navidad"/>
      <category term="2009"/>
      <category term="vacaciones"/>
      <category term="historias"/>
      <category term="cadenas de conexi&#xF3;n"/>
      <category term="vs2008"/>
      <category term="interfaces"/>
      <category term="analytics"/>
      <category term="signalr"/>
      <category term="calidad"/>
      <category term="curiosidades"/>
      <category term="arquitectura"/>
      <category term="opini&#xF3;n"/>
      <category term="bytecode"/>
      <category term="reflexiones"/>
      <category term="webgrid"/>
      <category term="spam"/>
      <category term="inocentadas"/>
      <category term="haloscan"/>
      <category term="validadores"/>
      <category term="eswebcamp"/>
      <category term="xhtml"/>
      <category term="errores"/>
      <category term="connection strings"/>
      <category term="antipatrones"/>
      <category term="leyes"/>
      <category term="scripting"/>
      <category term="linq"/>
      <category term="nupack"/>
      <category term="xVal"/>
      <category term="paranoias"/>
      <category term="java"/>
      <category term="&#xE1;rboles de expresi&#xF3;n"/>
      <category term="azure"/>
      <category term="aniversario"/>
      <category term="optimizaci&#xF3;n"/>
      <category term="liame"/>
      <category term="niftydotnet"/>
      <category term="rest"/>
      <category term="nivel b&#xE1;sico"/>
      <category term="curso"/>
      <category term="1337"/>
      <category term="nivel medio"/>
      <category term="proyectos"/>
      <category term="nivel alto"/>
      <category term="est&#xE1;ndares"/>
      <category term="2.0"/>
      <category term="dsl"/>
      <category term="viajes"/>
      <category term="asp.net"/>
      <category term="patrones"/>
      <category term="blogging"/>
      <category term="error"/>
      <category term="dans"/>
      <category term="depuraci&#xF3;n"/>
      <category term="google"/>
      <category term="trabajo"/>
      <category term="knockout"/>
      <category term="ensamblador"/>
      <category term="fluent interfaces"/>
      <category term="technorati"/>
      <category term="webpages"/>
      <category term="chuletas"/>
      <category term="navegadores"/>
      <category term="msdewey"/>
      <category term="delegados"/>
      <category term="emoticonos"/>
      <category term="ep&#xF3;nimos"/>
      <category term="aspnetmvc"/>
      <category term="escaneo de puertos"/>
      <category term="mvp"/>
      <category term="productos"/>
      <category term="envidia"/>
      <category term="buenas pr&#xE1;cticas"/>
      <category term="Spectrum"/>
      <category term="frameworks"/>
      <category term="frases c&#xE9;lebres"/>
      <category term="servicios on-line"/>
      <category term="equipos"/>
      <category term="planetas"/>
      <category term="redes"/>
      <category term="troyanos"/>
      <category term="vs"/>
      <category term="t&#xE9;cnicas de spam"/>
      <category term="lambdas"/>
      <category term="antispam"/>
      <category term="silverlight"/>
      <category term="chacha"/>
      <category term="entrevistas"/>
      <category term="leet speak"/>
      <category term="ie"/>
      <category term="charlas"/>
      <category term="desarollo"/>
      <category term="jqGrid"/>
      <category term="jquery"/>
      <category term="historia"/>
      <category term="phishing"/>
      <category term="ado.net"/>
      <category term="scrum"/>
      <category term="homenaje"/>
      <category term="problema"/>
      <category term="virus"/>
      <category term="entity framework"/>
      <category term="webmatrix"/>
      <category term="conquista del mundo"/>
      <category term="consultas"/>
      <category term="nostalgia"/>
      <category term="software libre"/>
      <category term="ayuda"/>
      <category term="web"/>
      <category term="seguridad"/>
      <category term="rendimiento"/>
      <category term="desarrollo"/>
      <category term="redes sociales"/>
      <category term="interacci&#xF3;n"/>
      <category term="c#"/>
      <category term="desastres"/>
      <category term="css"/>
      <category term="libros"/>
      <category term="portales"/>
      <category term="cultura"/>
      <category term="creatividad"/>
      <category term=".net"/>
      <category term="dise&#xF1;o"/>
      <category term="visualstudio"/>
      <category term="vb.net"/>
      <category term="humor"/>
      <category term="m&#xE9;todos an&#xF3;nimos"/>
      <category term="productividad"/>
      <category term="summit2012"/>
      <category term="emuladores"/>
      <category term="motores de f&#xED;sica"/>
      <category term="bases de datos"/>
      <category term="auges"/>
      <category term="interfaces fluidos"/>
      <category term="webforms"/>
      <category term="t4"/>
      <category term="an&#xE1;lisis"/>
      <category term="programaci&#xF3;n"/>
      <category term="frikadas"/>
      <category term="componentes"/>
      <category term="software"/>
      <category term="html"/>
      <category term="utilidades"/>
      <category term="riqueza"/>
      <category term="cartujadotnet"/>
      <category term="comentarios"/>
      <category term="msil"/>
      <category term="enlaces"/>
      <category term="webapi"/>
      <category term="javascript"/>
      <category term="autobombo"/>
      <category term="localizacion"/>
      <category term="communityday"/>
      <category term="redondear esquinas"/>
      <category term="&#xF3;scar"/>
      <category term="trucos"/>
      <category term="innovadores"/>
      <category term="cms"/>
      <category term="vs2010"/>
      <category term="tecnolog&#xED;a"/>
      <category term="instalaci&#xF3;n"/>
      <category term="resumen"/>
      <category term="glimpse"/>
      <category term="ttt"/>
      <category term="vs2005"/>
      <category term="recomendaciones"/>
      <category term="linux"/>
      <category term="office"/>
      <category term="personal"/>
      <category term="ajax"/>
      <category term="empresa"/>
      <category term="genios"/>
      <category term="herramientas"/>
      <category term="protocolos"/>
      <category term="colaboraciones"/>
      <category term="variablenotfound.com"/>
      <category term="tags"/>
      <category term="blogger"/>
      <category term="SEO"/>
      <category term="buscadores"/>
      <category term="noticias"/>
      <category term="novedades"/>
      <category term="ofuscaci&#xF3;n de emails"/>
      <category term="orcas"/>
      <category term="orm"/>
      <category term="razor"/>
      <category term="eventos"/>
      <category term="microsoft"/>
      <category term="quaere"/>
      <category term="actualidad"/>
      <category term="mono"/>
      <category term="alegr&#xED;as"/>
      <category term="data"/>
      <category term="fiddler"/>
      <author>
        <name>José M. Aguilar</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/11683750380776435448</uri>
      </author>
      <link href="http://www.variablenotfound.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.variablenotfound.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/27752126/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/vnf" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Artículos, noticias, curiosidades, reflexiones... sobre el mundo del desarrollo de software, internet, u otros temas relacionados con la tecnología.</subtitle>
      <title>Variable not found</title>
      <updated>2012-05-17T16:49:09Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.maestrosdelweb.com/?p=20051</id>
    <link href="http://www.maestrosdelweb.com/editorial/curso-symfony2-instlando-bundles-de-terceros/" rel="alternate" type="text/html"/>
    <title>Curso Symfony 2: Instalando Bundles de Terceros</title>
    <summary>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 http://knpbundles.com/) [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>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 <a href="http://knpbundles.com/">http://knpbundles.com/</a>) podrás encontrar miles de bundles que podrías necesitar.</p>
<p>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 <a href="https://github.com/stof/StofDoctrineExtensionsBundle">StofDoctrineExtensionsBundle</a> por Christophe Coevoet el cual hace una implementación del complemento <a href="https://github.com/l3pp4rd/DoctrineExtensions">Doctrine2 behavioral extensions</a> 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.</p>
<h3>Paso 1: Instalando el Bundle</h3>
<p>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 <a href="http://progit.org/book/es/">http://progit.org/book/es/</a> y tratar de instalarlo en tu sistema.</p>
<p>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:</p>
<div class="codigo">
<pre>~$ git submodule add git://github.com/l3pp4rd/DoctrineExtensions.git vendor/gedmo-doctrine-extensions</pre>
</div>
<div class="tipexperto"><h3>Nota</h3> <div class="tipcont">Si tienes problemas puedes descargar manualmente <a href="https://github.com/l3pp4rd/DoctrineExtensions">el paquete</a>, sólo debes descomprimir su contenido y copiarlo al directorio /ruta_hacia_proyecto/<strong>vendor</strong>/gedmo-doctrine-extensions</div></div>
<p>Ahora si añadimos el StofDoctrineExtensionsBundle:</p>
<div class="codigo">
<pre>~$ git submodule add git://github.com/stof/StofDoctrineExtensionsBundle.git vendor/bundles/Stof/DoctrineExtensionsBundle</pre>
</div>
<div class="tipexperto"><h3>Nota</h3> <div class="tipcont">Si tienes problemas puedes descargar manualmente <a href="https://github.com/stof/StofDoctrineExtensionsBundle">el paquete</a>, sólo debes descomprimir su contenido y copiarlo al directorio /ruta_hacia_proyecto/<strong>vendor/bundles</strong>/Stof/DoctrineExtensionsBundle.</div></div>
<p>Registramos los Namespaces en nuestro app/autoload.php:</p>
<pre class="brush: php; title: ; notranslate">&lt;?php

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

$loader = new UniversalClassLoader();
$loader-&gt;registerNamespaces(array(
    'Symfony'          =&gt; array(__DIR__.'/../vendor/symfony/src', __DIR__.'/../vendor/bundles'),
    'Sensio'           =&gt; __DIR__.'/../vendor/bundles',
    'JMS'              =&gt; __DIR__.'/../vendor/bundles',
    'Doctrine\\Common' =&gt; __DIR__.'/../vendor/doctrine-common/lib',
    'Doctrine\\DBAL'   =&gt; __DIR__.'/../vendor/doctrine-dbal/lib',
    'Doctrine'         =&gt; __DIR__.'/../vendor/doctrine/lib',
    'Monolog'          =&gt; __DIR__.'/../vendor/monolog/src',
    'Assetic'          =&gt; __DIR__.'/../vendor/assetic/src',
    'Metadata'         =&gt; __DIR__.'/../vendor/metadata/src',
    // Aquí registramos:
    'Stof'  =&gt; __DIR__.'/../vendor/bundles',
    'Gedmo' =&gt; __DIR__.'/../vendor/gedmo-doctrine-extensions/lib',
));
// ... resto del archivo
</pre>
<p>Añadimos el Bundle a nuestro app/AppKernel.php:</p>
<pre class="brush: php; title: ; notranslate">&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
</pre>
<p>Básicamente es todo lo que se realiza para incluir un Bundle.</p>
<h3>Paso 2: Configurando el Bundle</h3>
<p>En nuestro caso el <strong>StofDoctrineExtensionsBundle</strong> para funcionar requiere agregar configuración adicional al archivo app/config/<strong>config.yml</strong> de la aplicación (la mayoría de los bundles pueden detallar tales configuraciones en su documentación), para ello agregamos estos segmentos:</p>
<p>En la sección <em>Doctrine Configuration</em>, añadimos al final el mapping para StofDoctrineExtensions Bundle:</p>
<div class="codigo">
<pre># 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</pre>
</div>
<p>Luego añadimos <em>al final del mismo archivo</em> la siguiente configuración:</p>
<div class="codigo">
<pre># 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</pre>
</div>
<p>Donde <strong>default:</strong> representa la configuración para todos los entornos, eso quiere decir que puedes añadir una configuración específica para cada entorno.</p>
<h3>Paso 3: Utilizando los Comportamientos (Behaviors) en los modelos</h3>
<p>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:</p>
<pre class="brush: php; title: ; notranslate">// añadimos luego del Namespace de la Entidad:
use Gedmo\Mapping\Annotation as Gedmo;
</pre>
<p>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:</p>
<div class="codigo">
<pre>~$ php app/console doctrine:schema:update --force</pre>
</div>
<p><strong>Sluggable</strong>: 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 <em>campo destino</em> que es donde se almacenará y uno o más <em>campos origen</em> (los Sluggable) de los cuales se construirá el slug y es tan simple como agregar los siguientes <strong>Metadatos</strong> a nuestros campos del modelo:</p>
<pre class="brush: php; title: ; notranslate">    // … dentro de una Entidad
    // Campo origen:
    /**
     * @var string $title
     *
     * @ORM\Column(name="title", type="string", length=255)
     * @Gedmo\Sluggable()
     */
    private $title;

    // … otras variables

    // Campo Destino:
    /**
     * @var string $slug
     *
     * @ORM\Column(name="slug", type="string", length=255)
     * @Gedmo\Slug(style="camel", separator="_", updatable=false, unique=true)
     */
    private $slug;
    // … dentro de una Entidad
</pre>
<p>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.</p>
<p>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.<br/>
<strong/></p>
<p><strong>Timestampable:</strong> 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 <em>action</em> puede ser created o updated respectivamente.</p>
<pre class="brush: php; title: ; notranslate">    // … dentro de una Entidad
    // Campo created:
    /**
     * @var date $created
     *
     * @ORM\Column(name="created", type="date")
     * @Gedmo\Timestampable(on="create")
     */
    private $created;
    // Campo updated:
    /**
     * @var datetime $updated
     *
     * @ORM\Column(name="updated", type="datetime")
     * @Gedmo\Timestampable(on="update")
     */
    private $updated;
    // … dentro de una Entidad
</pre>
<p>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.</p>
<p><strong>Loggable</strong>: permite que Doctrine lleve un control de Versiones sobre los campos indicados, permitiendo consultar las versiones y revertir hacia una versión anterior.<br/>
Para crear campos con <em>log</em> (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:</p>
<pre class="brush: php; title: ; notranslate">// ... encabezados del archivo
// definimos el Metadato @Gedmo\Loggable() a la Entidad:
/**
 * MDW\BlogBundle\Entity\Articles
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="MDW\BlogBundle\Entity\ArticlesRepository")
 * @Gedmo\Loggable()
 */
class Articles
{
    // … dentro de una Entidad
    // Campo $content será Versionable:
    /**
     * @var text $content
     *
     * @ORM\Column(name="content", type="text")
     * @Gedmo\Versioned()
     */
    private $content;
    // … demás contenido de la entidad
</pre>
<p>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-&gt;revert($Entity, $version);), aquí apreciamos un ejemplo de un controlador que lista los cambios:</p>
<pre class="brush: php; title: ; notranslate">    // Ejemplo dentro de un Controller:
    public function updateArticleAction($id) {
      $em = $this-&gt;getDoctrine()-&gt;getEntityManager();

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

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

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

      $query_changues = $log-&gt;getLogEntriesQuery($article); //use $log-&gt;getLogEntries() para un result directo
      $changues = $query_changues-&gt;getResult();
      /* @var $version Stof\DoctrineExtensionsBundle\Entity\LogEntry */
      foreach ($changues as $version) {
        $fields = $version-&gt;getData();
        $content.= ' fecha: ' .
            $version-&gt;getLoggedAt()-&gt;format('d/m/Y H:i:s') .
            ' accion: "'  . $version-&gt;getAction() . '"'.
            ' usuario: "' . $version-&gt;getUsername() . '"'.
            ' objeto: "'  . $version-&gt;getObjectClass() . '"'.
            ' id: "'      . $version-&gt;getObjectId() . '"'.
            ' Version: "' . $version-&gt;getVersion() . '"'.
            ' datos:';
            foreach ($fields as $field =&gt; $value) {
              $content.= "-- " . $field . ': '. $value . '';
            }
      }
      // generamos una salida básica
      $r = new \Symfony\Component\HttpFoundation\Response();
      $r-&gt;setContent($content);
      return $r;
    }
</pre>
<p>De esta forma podemos aprovecharnos de algunos de los comportamientos más utilizados de Doctrine, reutilizar código y automatizar tareas en nuestros modelos.</p>
<h3>Resumen Final</h3>
<p>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.</p>
<hr/><p style="height: 64px;"><img alt="Maycol Alvarez" class="avatar avatar-64 photo" height="64" src="http://0.gravatar.com/avatar/0457a9460a25fb50aca9a46f561f37c9?s=64&amp;d=http%3A%2F%2Fwww.maestrosdelweb.com%2Fwp-content%2Fthemes%2Fmdw2%2Fimages%2Fno-avatar64.png%3Fs%3D64&amp;r=G" style="float: left; padding: 0 5px;" width="64"/> <strong>Maycol Alvarez</strong> para <a href="http://www.maestrosdelweb.com">Maestros del Web</a>.<br/><a href="http://www.maestrosdelweb.com/editorial/curso-symfony2-instlando-bundles-de-terceros/#respond">Agrega tu comentario</a> | <a href="http://www.maestrosdelweb.com/editorial/curso-symfony2-instlando-bundles-de-terceros/">Enlace permanente</a> al artículo</p><hr style="clear: both;"/>
		<p><strong>Síguenos en:</strong> <img src="http://www.maestrosdelweb.com/diseno/imagenes/twitter.png" style="vertical-align: middle;"/> <a href="http://twitter.com/maestros">@maestros</a> | <img src="http://www.maestrosdelweb.com/diseno/imagenes/facebook.png" style="vertical-align: middle;"/> <a href="http://facebook.com/maestrosdelweb">Fan page</a></p></div>
    </content>
    <updated>2012-05-16T14:13:07Z</updated>
    <category term="Editorial"/>
    <category term="Symfony"/>
    <category term="Behaviors"/>
    <category term="bundles"/>
    <category term="capitulo12"/>
    <category term="curso"/>
    <category term="Doctrine"/>
    <category term="guia"/>
    <category term="symfony 2"/>
    <category term="symfony2"/>
    <author>
      <name>Maycol Alvarez</name>
    </author>
    <source>
      <id>http://www.maestrosdelweb.com</id>
      <link href="http://www.maestrosdelweb.com" rel="alternate" type="text/html"/>
      <link href="http://feeds.feedburner.com/mweditorial" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Un espacio para los entusiastas del web</subtitle>
      <title>Maestros del Web</title>
      <updated>2012-05-17T18:59:47Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.anieto2k.com/?p=10380</id>
    <link href="http://feedproxy.google.com/~r/anieto2k/Xzqf/~3/O7QYrYmduIA/" rel="alternate" type="text/html"/>
    <title>dynamo.js, añade un curioso efecto a tu HTML con jQuery</title>
    <summary>Dynamo.js 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 "Atrapado en el tiempo" de Bill Murray, 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 [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://jordanscales.com/dynamo/">Dynamo.js</a> 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 <a href="http://www.imdb.com/title/tt0107048/">"Atrapado en el tiempo" de Bill Murray</a>, 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 <a href="http://jordanscales.com/dynamo/">lo veáis vosotros mismos</a> :D

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

// Javascript
$(function() {
  $('.dynamo').dynamo();
});
</code></pre>

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

Sencillo, ¿verdad?<h3>Artículos relacionados</h3>
<ul><li><a href="http://www.anieto2k.com/2006/08/01/sistema-solar-en-javascript/" rel="bookmark" title="Permanent Link: Sistema Solar en Javascript">Sistema Solar en Javascript</a></li><li><a href="http://www.anieto2k.com/2008/07/25/spacegallery-la-galeria-al-estilo-timemachine-de-jquery/" rel="bookmark" title="Permanent Link: SpaceGallery, la galer&#xED;a al estilo TimeMachine de jQuery">SpaceGallery, la galería al estilo TimeMachine de jQuery</a></li><li><a href="http://www.anieto2k.com/2009/05/05/simulando-la-gravedad-con-jquery/" rel="bookmark" title="Permanent Link: Simulando la gravedad con jQuery">Simulando la gravedad con jQuery</a></li><li><a href="http://www.anieto2k.com/2007/09/24/efecto-bounce-con-scriptaculous/" rel="bookmark" title="Permanent Link: Efecto Bounce con Script.aculo.us">Efecto Bounce con Script.aculo.us</a></li><li><a href="http://www.anieto2k.com/2006/02/09/efecto-menu-mac-os/" rel="bookmark" title="Permanent Link: Efecto menu MAC OS">Efecto menu MAC OS</a></li></ul><p><a href="http://www.anieto2k.com" id="209.85.144.84"><img alt="aNieto2k" rel="209.85.144.84" src="http://www.anieto2k.com/favicon.ico"/></a></p><img height="1" src="http://feeds.feedburner.com/~r/anieto2k/Xzqf/~4/O7QYrYmduIA" width="1"/></div>
    </content>
    <updated>2012-05-16T11:50:48Z</updated>
    <category term="javascript"/>
    <category term="Programacion"/>
    <category term="webdev"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://www.anieto2k.com/2012/05/16/dynamo-js-anade-un-curioso-efecto-a-tu-html-con-jquery/</feedburner:origLink>
    <author>
      <name>aNieto2k</name>
    </author>
    <source>
      <id>http://www.anieto2k.com</id>
      <link href="http://www.anieto2k.com" rel="alternate" type="text/html"/>
      <link href="http://feeds.feedburner.com/anieto2k/Xzqf" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Desarrollo web, Wordpress, y alguna cosilla más</subtitle>
      <title>aNieto2K</title>
      <updated>2012-05-16T18:59:24Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.anieto2k.com/?p=10388</id>
    <link href="http://feedproxy.google.com/~r/anieto2k/Xzqf/~3/uh99FANHz4c/" rel="alternate" type="text/html"/>
    <title>Node.js para yayodesarrolladores web</title>
    <summary>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 la estandarización de la web 2.0. Soy un desarrollador web que se encuentra más cómodo desarrollando en Javascript "puro" que usando jQuery y que [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">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 <a href="http://www.anieto2k.com/2007/08/03/consecuencias-de-la-web-20-y-la-llegada-de-la-web-30/">la estandarización de la web 2.0</a>. Soy un desarrollador web que se encuentra más cómodo desarrollando en Javascript "puro" que<a href="http://www.anieto2k.com/2009/04/01/%C2%BFes-jquery-el-mejor-framework-js/"> usando jQuery </a>y que aún recuerda como hacer <a href="http://www.anieto2k.com/2007/04/21/ajax-y-elegancia/">una petición Ajax "a pelo"</a>, usando el objeto <code>XMLHTTPRequest</code> y el odiado <code>ActiveX</code> para que IE no se queje.

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

Y aquí es donde entre <strong>Node.js</strong>, que está basado en el uso de <em>V8</em> 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, <a href="http://www.anieto2k.com/2008/01/23/javascript-en-el-servidor-con-jaxer/">por allá en el 2008 aparecía Jaxer que intentaba hacer algo parecido</a>, y poco más he leido después de él. Y lo que se consigue es acercar las maravillas de un lenguaje como Javascript, <a href="http://www.anieto2k.com/2006/10/15/javascript-no-obstructivo-manual-de-buenas-maneras/">con capacidad de orientarse a eventos</a> permitiendo <a href="http://www.anieto2k.com/2009/11/19/gestion-de-eventos-vs-delegacion-de-eventos/">programar de forma asíncrona fácilmente</a> 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.
<h3>Vale vale, pero ¿nos ponemos a ello?</h3>
Lo primero es instalarlo, para ello, lo descargamos de la página oficial y lo instalamos (<a href="http://nodejs.org/#download">doble click en Windows y en Mac</a>, <a href="https://github.com/joyent/node/wiki/Installation">make &amp;&amp; make install en Linux</a>). Una vez instalado ya podemos ponernos a tocar código que es lo que nos gusta!
<pre><code>// Cargamos el módulo HTTP
var http = require('http');

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

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

// Mostramos un mensaje en la terminal
console.log("Server running at http://127.0.0.1:8000/");</code></pre>
El típico "<em>Hola Mundo</em>" nos muestra ya por donde van a ir los tiros en cuenta al asincronismo que os comentaba. El objeto server, queda asociado al puerto <em>8000</em> que ejecutará el <em>callback</em> 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 <code>.js</code> para ser llamado por <strong>node.js</strong> de la siguiente forma.

<pre><code>node fichero.js</code></pre>

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

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

Y como la consola indica, nos dirigiremos al enlace <a href="http://127.0.0.1:8000/"><code>http://127.0.0.1:8000/</code></a> y veremos el texto "<strong>Hola Mundo!</strong>". Sencillo, rápido y funcional.
<h3>Módulo, módulos y más módulos</h3>
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.
<h4><code>npm install package</code></h4>
El comando <code>npm</code>, se instala con <strong>Node.js</strong> y mediante esa sencilla sintaxis podemos añadir un módulo a nuestro proyecto o al repositorio global de <strong>node.js</strong> dejándolo disponible para todos los proyectos dentro de esa máquina (<code>node install -g package</code>).

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

<pre><code>npm install -d</code></pre>

Y automáticamente empiezan a descargar los paquetes y guardarlos en la carpeta <code>node_modules/</code> del proyecto.

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

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 (<a href="http://jade-lang.com/">jade</a>), para hacer un Javascript más eficiente (<a href="http://coffeescript.org/">CoffeeScript</a>) o para que las CSS's se comporten como un lenguaje de programación (<a href="http://learnboost.github.com/stylus/">Stylus</a>), 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 <a href="http://expressjs.com/">ExpressJS</a> o <a href="http://meteor.com/">Meteor</a> que merecen la pena tratar con más detalle en otra serie de posts.<h3>Artículos relacionados</h3>
<ul><li><a href="http://www.anieto2k.com/2012/05/13/js-el-hijo-bastardo-entre-javascript-y-c/" rel="bookmark" title="Permanent Link: *JS, el hijo bastardo entre Javascript y C">*JS, el hijo bastardo entre Javascript y C</a></li><li><a href="http://www.anieto2k.com/2007/03/09/comparativas-de-getelementsbyclassname/" rel="bookmark" title="Permanent Link: Comparativas de getElementsByClassName">Comparativas de getElementsByClassName</a></li><li><a href="http://www.anieto2k.com/2006/10/21/delicious-vs-digg/" rel="bookmark" title="Permanent Link: Delicious vs Digg">Delicious vs Digg</a></li><li><a href="http://www.anieto2k.com/2008/06/17/flock-2-mejora-gracias-a-firefox-3/" rel="bookmark" title="Permanent Link: Flock 2 mejora gracias a Firefox 3">Flock 2 mejora gracias a Firefox 3</a></li><li><a href="http://www.anieto2k.com/2008/03/03/createelements-una-funcion-para-ahorrarte-mucho-codigo/" rel="bookmark" title="Permanent Link: createElements() una funci&#xF3;n para ahorrarte mucho c&#xF3;digo">createElements() una función para ahorrarte mucho código</a></li></ul><p><a href="http://www.anieto2k.com" id="209.85.144.84"><img alt="aNieto2k" rel="209.85.144.84" src="http://www.anieto2k.com/favicon.ico"/></a></p><img height="1" src="http://feeds.feedburner.com/~r/anieto2k/Xzqf/~4/uh99FANHz4c" width="1"/></div>
    </content>
    <updated>2012-05-16T10:48:26Z</updated>
    <category term="javascript"/>
    <category term="nodejs"/>
    <category term="Programacion"/>
    <category term="webdev"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://www.anieto2k.com/2012/05/16/node-js-para-yayodesarrolladores-web/</feedburner:origLink>
    <author>
      <name>aNieto2k</name>
    </author>
    <source>
      <id>http://www.anieto2k.com</id>
      <link href="http://www.anieto2k.com" rel="alternate" type="text/html"/>
      <link href="http://feeds.feedburner.com/anieto2k/Xzqf" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Desarrollo web, Wordpress, y alguna cosilla más</subtitle>
      <title>aNieto2K</title>
      <updated>2012-05-16T18:59:24Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://lineadecodigo.com/?p=4311</id>
    <link href="http://feedproxy.google.com/~r/LineaDeCodigo/~3/9kSvPpoyRNg/" rel="alternate" type="text/html"/>
    <title>Poner música en tu web con HTML5</title>
    <summary>Una de las cosas que ya está estandarizada en HTML5 es la reproducción de elementos de audio. Es decir, podemos poder música en la web de una forma estándar. Para poder poner música en las webs, HTML5 ha estandarizado el elemento AUDIO. Así que, lo que tendremos que hacer, para poner un archivo de música [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Una de las cosas que ya está estandarizada en <a href="http://www.manualweb.net/tutorial-html5/" title="Tutorial de HTML5">HTML5</a> es la reproducción de elementos de audio. Es decir, podemos poder música en la web de una forma estándar.</p>
<p>Para poder poner música en las webs, <a href="http://www.manualweb.net/tutorial-html5/" title="Tutorial de HTML5">HTML5</a> ha estandarizado el elemento <a href="http://www.w3api.com/wiki/HTML5:AUDIO" title="Elemento AUDIO de HTML5">AUDIO</a>. Así que, lo que tendremos que hacer, para poner un archivo de música será insertar la siguiente etiqueta:</p>
<pre class="html4strict" style="font-family: monospace;"><span style="color: #009900;">&lt;audio <a href="http://w3api.com/wiki/HTML:src"><span style="color: #000066;">src</span></a><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"cancion"</span>&gt;&lt;<span style="color: #66cc66;">/</span>audio&gt;</span></pre>
<p>Por lo tanto, si nuestra canción es "micancion.mp3" el código a utilizar será:</p>
<pre class="html4strict" style="font-family: monospace;"><span style="color: #009900;">&lt;audio <a href="http://w3api.com/wiki/HTML:src"><span style="color: #000066;">src</span></a><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"micancion.mp3"</span>&gt;&lt;<span style="color: #66cc66;">/</span>audio&gt;</span></pre>
<p>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 <a href="http://www.w3api.com/wiki/HTML5:AUDIO" title="Elemento AUDIO de HTML5">AUDIO</a><a href="http://www.w3api.com/wiki/HTML5:AUDIO.controls" title="Atributo controls del elemento AUDIO de HTML5">controls</a>.</p>
<pre class="html4strict" style="font-family: monospace;"><span style="color: #009900;">&lt;audio <a href="http://w3api.com/wiki/HTML:src"><span style="color: #000066;">src</span></a><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"micancion.mp3"</span> controls&gt;&lt;<span style="color: #66cc66;">/</span>audio&gt;</span></pre>
<p>Así ya tendremos el reproductor que nos permita poner la música en nuestra web con <a href="http://www.manualweb.net/tutorial-html5/" title="Tutorial de HTML5">HTML5&lt;/a.&gt;</a></p><a href="http://www.manualweb.net/tutorial-html5/" title="Tutorial de HTML5">
</a><p><a href="http://www.manualweb.net/tutorial-html5/" title="Tutorial de HTML5">Los formatos que podemos reproducir mediante el elemento </a><a href="http://www.w3api.com/wiki/HTML5:AUDIO" title="Elemento AUDIO de HTML5">AUDIO</a> de <a href="http://www.manualweb.net/tutorial-html5/" title="Tutorial de HTML5">HTML5</a></p>
<ul>
<li><strong>MPEG-1 audio layer 3</strong>, que son los más que de sobra conocidos como MP3 y extensión .mp3.</li>
<li><strong>Advanced Audio Coding</strong>, 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</li>
<li><strong>Vorbis</strong>, o conocido como Ogg Vorbis. Es un formato libre de patentes. La extensión que utilizan es .ogg</li>
</ul>
<p><strong>Similar Posts:</strong>
</p><ul class="similar-posts">
<li><a href="http://lineadecodigo.com/html/embed-musica-de-fondo-en-tu-pagina-web/" rel="bookmark" title="Marzo 24, 2007">Embed: Música de fondo en tu página web</a></li>
<li><a href="http://lineadecodigo.com/java/reproducir-musica-por-java/" rel="bookmark" title="Abril 24, 2010">Reproducir música por java</a></li>
<li><a href="http://lineadecodigo.com/html5/iniciar-automaticamente-un-video-en-html5/" rel="bookmark" title="Enero 16, 2012">Iniciar automáticamente un vídeo en HTML5</a></li>
<li><a href="http://lineadecodigo.com/html/cargar-un-video-avi-asf-o-wmv-en-mi-pagina-web/" rel="bookmark" title="Agosto 29, 2007">Cargar un vídeo AVI, ASF o WMV en mi página web</a></li>
<li><a href="http://lineadecodigo.com/html/utilizando-la-etiqueta-address/" rel="bookmark" title="Septiembre 8, 2010">Utilizando la etiqueta ADDRESS</a></li>
</ul>
<p/>

<p><a href="http://feedads.g.doubleclick.net/~a/QHshufBSbn13gqRN3Z9vawxqXjc/0/da"><img border="0" ismap="true" src="http://feedads.g.doubleclick.net/~a/QHshufBSbn13gqRN3Z9vawxqXjc/0/di"/></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/QHshufBSbn13gqRN3Z9vawxqXjc/1/da"><img border="0" ismap="true" src="http://feedads.g.doubleclick.net/~a/QHshufBSbn13gqRN3Z9vawxqXjc/1/di"/></a></p><img height="1" src="http://feeds.feedburner.com/~r/LineaDeCodigo/~4/9kSvPpoyRNg" width="1"/></div>
    </content>
    <updated>2012-05-16T06:00:52Z</updated>
    <category term="HTML5"/>
    <category term="acc"/>
    <category term="advanced audio coding"/>
    <category term="audio"/>
    <category term="controls"/>
    <category term="mp3"/>
    <category term="mpeg-1"/>
    <category term="Ogg"/>
    <category term="vorbis"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://lineadecodigo.com/html5/poner-musica-en-tu-web-con-html5/</feedburner:origLink>
    <author>
      <name>Víctor Cuervo</name>
    </author>
    <source>
      <id>http://lineadecodigo.com</id>
      <link href="http://lineadecodigo.com" rel="alternate" type="text/html"/>
      <link href="http://feeds.feedburner.com/LineaDeCodigo" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>/* Programación en la red */</subtitle>
      <title>Linea de Codigo</title>
      <updated>2012-05-16T18:59:08Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.berriart.com/?p=951</id>
    <link href="http://feedproxy.google.com/~r/berriart/~3/BJQ7x-_xiTA/" rel="alternate" type="text/html"/>
    <link href="http://www.berriart.com/2012/05/15/ejecutar-crons-evitar-solapen/#comments" rel="replies" type="text/html"/>
    <link href="http://www.berriart.com/2012/05/15/ejecutar-crons-evitar-solapen/feed/atom/" rel="replies" type="application/atom+xml"/>
    <title xml:lang="en">Ejecutar crons y evitar que se solapen</title>
    <summary xml:lang="en">En más de una ocasión he tenido problemas de solapamiento a la hora de ejecutar scripts desde el crontab. Porque si decidimos usar un cron job para ejecutar scripts periódicamente con intervalos pequeños de tiempo, o también scripts con mucho tiempo de ejecución (a veces incluso mezclamos ambas cosas) es probable que corramos el riesgo [...]</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>En más de una ocasión he tenido problemas de solapamiento a la hora de ejecutar <em>scripts</em> desde el <em>crontab</em>. Porque si decidimos usar un <em>cron job</em> para ejecutar <em>scripts</em> periódicamente con intervalos pequeños de tiempo, o también <em>scripts</em> con mucho tiempo de ejecución (a veces incluso mezclamos ambas cosas) es probable que corramos el riesgo de que los <em>scripts</em> 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 <em>cron job</em> no debería estar hecho en PHP, pero somos así de monolingüistas).</p>
<p>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 <em>script</em> 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.</p>
<p>Esta solución no me gustaba del todo porque si por cualquier razón el <em>script</em> 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 <em>script</em> está en ejecución antes de lanzar el siguiente sin usar fichero de control.</p>
<p>Para probarlo he usado un script que seguro se va a solapar:</p>
<pre class="php" name="code">&lt;?php
while(1) {
    $zero = 0;
}
</pre>
<p>Para ejecutarlo desde el <em>cron</em> lo que he hecho es un pequeño <em>shell script</em> que también va a ser el encargado de evitar el solapamiento:</p>
<pre name="code">#!/bin/bash
PHP_EXECUTABLE="/usr/bin/php"
SCRIPT_DIRECTORY="/home/alberto"
SCRIPT_NAME="test.php"
if ps -fea | grep $SCRIPT_NAME | grep -v grep
then
    date
    echo "Overlaping message end"
else
    cd $SCRIPT_DIRECTORY
    $PHP_EXECUTABLE $SCRIPT_DIRECTORY"/"$SCRIPT_NAME &gt; /dev/null 2&gt;&amp;1
fi
</pre>
<p>Como podéis ver lo que hago es comprobar con el comando <em>ps</em> si el <em>script</em> está en ejecución antes de lanzarlo de nuevo. Lo que hay que hacer luego simplemente es añadirlo al <em>crontab</em>, en mi caso dejando un pequeño log para poder comprobar si se solapa o no:</p>
<pre name="code">* * * * * /home/alberto/test.sh &gt; /home/alberto/test.log
</pre>
<p>¿Qué os parece el método? ¿Qué habéis hecho vosotros si alguna vez os ha pasado?</p>
<img height="1" src="http://feeds.feedburner.com/~r/berriart/~4/BJQ7x-_xiTA" width="1"/></div>
    </content>
    <updated>2012-05-15T21:29:09Z</updated>
    <published>2012-05-15T21:26:42Z</published>
    <category scheme="http://www.berriart.com" term="Desarrollo web"/>
    <category scheme="http://www.berriart.com" term="Programaci&#xF3;n"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://www.berriart.com/2012/05/15/ejecutar-crons-evitar-solapen/</feedburner:origLink>
    <author>
      <name>artberri</name>
      <uri>http://www.berriart.com</uri>
    </author>
    <source>
      <id>http://www.berriart.com/feed/atom/</id>
      <logo>http://creativecommons.org/images/public/somerights20.gif</logo>
      <link href="http://www.berriart.com" rel="alternate" type="text/html"/>
      <link href="http://feeds.feedburner.com/berriart" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://creativecommons.org/licenses/by-nc/2.0/" rel="license" type="text/html"/>
      <subtitle xml:lang="en">Un programador hablando de diseño............</subtitle>
      <title xml:lang="en">Berriart</title>
      <updated>2012-05-15T21:29:09Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.anieto2k.com/?p=10368</id>
    <link href="http://feedproxy.google.com/~r/anieto2k/Xzqf/~3/NxIDHvvD230/" rel="alternate" type="text/html"/>
    <title>LESS.js, CSS enriquecido en el cliente</title>
    <summary>Hace unos días vimos SASS, una herramienta pensada para agilizar la maquetación CSS 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,... LESS.js Pues LESS.js, nos ofrece más de lo mismo, usando una sintaxis similar a que vimos [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Hace unos días vimos<a href="http://www.anieto2k.com/2012/05/07/sass-extiende-tus-csss/"> SASS, una herramienta pensada para agilizar la maquetación CSS</a> 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,...

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

<h4>Variables</h4>
<pre><code>@color: #4D926F;

#header {
  color: @color;
}
h2 {
  color: @color;
}
</code></pre>

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

#header {
  .rounded-corners;
}
#footer {
  .rounded-corners(10px);
}
</code></pre>
<h4>Anidamiento de selectores</h4>
<pre><code>#header {
  h1 {
    font-size: 26px;
    font-weight: bold;
  }
  p { font-size: 12px;
    a { text-decoration: none;
      &amp;:hover { border-width: 1px }
    }
  }
}
</code></pre>
<h4>Funciones y operaciones</h4>
<pre><code>@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%);
}
</code></pre>

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

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

<pre><code>&lt;head&gt;
	&lt;link rel="stylesheet/less" type="text/css" href="styles.less"&gt;
	&lt;script src="less.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;/head&gt;
</code></pre>
Es importante poner las hojas de estilos antes de añadir la librería javascript e indicar que mediante el atributo <code>rel</code> 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 (<code>#!watch</code>) o desde la consola de Firebug ejecutando <code>less.watch()</code>.<h3>Artículos relacionados</h3>
<ul><li><a href="http://www.anieto2k.com/2007/07/02/ampliando-mas-las-opciones-del-editor-enriquecido-de-wordpress/" rel="bookmark" title="Permanent Link: Ampliando m&#xE1;s las opciones del editor enriquecido de WordPress">Ampliando más las opciones del editor enriquecido de WordPress</a></li><li><a href="http://www.anieto2k.com/2007/04/26/jwchat-jabber-web-chat/" rel="bookmark" title="Permanent Link: JWChat &#x2013; Jabber Web Chat">JWChat – Jabber Web Chat</a></li><li><a href="http://www.anieto2k.com/2007/02/08/amplia-el-editor-enriquecido-de-wordpress-21/" rel="bookmark" title="Permanent Link: Amplia el editor enriquecido de WordPress 2.1">Amplia el editor enriquecido de WordPress 2.1</a></li><li><a href="http://www.anieto2k.com/2007/11/21/cliente-twitter-para-android/" rel="bookmark" title="Permanent Link: Cliente Twitter para Android">Cliente Twitter para Android</a></li><li><a href="http://www.anieto2k.com/2006/01/03/solucion-temporal-a-los-problemas-con-el-wysiwyg/" rel="bookmark" title="Permanent Link: Soluci&#xF3;n temporal a los problemas con el WYSIWYG">Solución temporal a los problemas con el WYSIWYG</a></li></ul><p><a href="http://www.anieto2k.com" id="209.85.144.84"><img alt="aNieto2k" rel="209.85.144.84" src="http://www.anieto2k.com/favicon.ico"/></a></p><img height="1" src="http://feeds.feedburner.com/~r/anieto2k/Xzqf/~4/NxIDHvvD230" width="1"/></div>
    </content>
    <updated>2012-05-15T18:00:07Z</updated>
    <category term="CSS"/>
    <category term="javascript"/>
    <category term="Programacion"/>
    <category term="webdev"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://www.anieto2k.com/2012/05/15/less-js-css-enriquecido-en-el-cliente/</feedburner:origLink>
    <author>
      <name>aNieto2k</name>
    </author>
    <source>
      <id>http://www.anieto2k.com</id>
      <link href="http://www.anieto2k.com" rel="alternate" type="text/html"/>
      <link href="http://feeds.feedburner.com/anieto2k/Xzqf" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Desarrollo web, Wordpress, y alguna cosilla más</subtitle>
      <title>aNieto2K</title>
      <updated>2012-05-16T18:59:24Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.anieto2k.com/?p=10383</id>
    <link href="http://feedproxy.google.com/~r/anieto2k/Xzqf/~3/TbiuK9vw1Zk/" rel="alternate" type="text/html"/>
    <title>La vuelta a las buenas costumbres y de como han cambiado las cosas</title>
    <summary>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. aNieto2k nació para solucionar una carencia de mi memoria, incapaz de almacenar de forma ordenada la cantidad de nuevos conocimientos que [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">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.

<strong>aNieto2k</strong> 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, <em>casi 7 años después</em>, 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.
<h3>¿Que ha pasado durante este tiempo?</h3>
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 <code>XMLHttpRequest</code>, a pelo o hacer los <code>border-radius</code> 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í!<h3>Artículos relacionados</h3>
<ul><li><a href="http://www.anieto2k.com/2006/06/14/guia-de-buenas-costumbres-para-la-web-movil/" rel="bookmark" title="Permanent Link: Gu&#xED;a de buenas costumbres para la web m&#xF3;vil">Guía de buenas costumbres para la web móvil</a></li><li><a href="http://www.anieto2k.com/2007/06/09/cssconsejos-y-buenas-practicas/" rel="bookmark" title="Permanent Link: CSS:Consejos y buenas pr&#xE1;cticas">CSS:Consejos y buenas prácticas</a></li><li><a href="http://www.anieto2k.com/2009/05/19/jquery-vs-mootools-%c2%bfcual-es-mejor/" rel="bookmark" title="Permanent Link: jQuery vs MooTools, &#xBF;cual es mejor?">jQuery vs MooTools, ¿cual es mejor?</a></li><li><a href="http://www.anieto2k.com/2007/06/25/listado-de-universos-netvibes/" rel="bookmark" title="Permanent Link: Listado de Universos Netvibes">Listado de Universos Netvibes</a></li><li><a href="http://www.anieto2k.com/2006/01/02/problemas-con-wordpress-20-y-negrita/" rel="bookmark" title="Permanent Link: Problemas con WordPress 2.0 y negrita">Problemas con WordPress 2.0 y negrita</a></li></ul><p><a href="http://www.anieto2k.com" id="209.85.144.84"><img alt="aNieto2k" rel="209.85.144.84" src="http://www.anieto2k.com/favicon.ico"/></a></p><img height="1" src="http://feeds.feedburner.com/~r/anieto2k/Xzqf/~4/TbiuK9vw1Zk" width="1"/></div>
    </content>
    <updated>2012-05-15T17:43:36Z</updated>
    <category term="General"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://www.anieto2k.com/2012/05/15/la-vuelta-a-las-buenas-costumbres-y-de-como-han-cambiado-las-cosas/</feedburner:origLink>
    <author>
      <name>aNieto2k</name>
    </author>
    <source>
      <id>http://www.anieto2k.com</id>
      <link href="http://www.anieto2k.com" rel="alternate" type="text/html"/>
      <link href="http://feeds.feedburner.com/anieto2k/Xzqf" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Desarrollo web, Wordpress, y alguna cosilla más</subtitle>
      <title>aNieto2K</title>
      <updated>2012-05-16T18:59:25Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://lineadecodigo.com/?p=4303</id>
    <link href="http://feedproxy.google.com/~r/LineaDeCodigo/~3/XgGnc7TB_Jo/" rel="alternate" type="text/html"/>
    <title>Listas anidadas con jQuery Mobile</title>
    <summary>Ya vimos como hacer una lista simple de elementos y algunos atributos data para modificar esta lista con jQuery Mobile. 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. En nuestro caso [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Ya vimos como hacer una lista simple de elementos y algunos atributos data para modificar esta lista con <a href="http://www.manualweb.net/tutorial-jquery-mobile/" title="Tutorial de jQuery Mobile">jQuery Mobile</a>.</p>
<p>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.</p>
<p>En nuestro caso vamos a utilizar ciudades y comunidades autónomas de España. Algo que quedaría de la siguiente forma:</p>
<p><img alt="" class="aligncenter size-full wp-image-4305" height="314" src="http://img.aulambra.com/wp-content/uploads/2012/05/ListasAnidadas.png" title="ListasAnidadas" width="448"/></p>
<p>Para crear listas anidadas con <a href="http://www.manualweb.net/tutorial-jquery-mobile/" title="Tutorial de jQuery Mobile">jQuery Mobile</a> solo tenemos que seguir la implementación que haríamos directamente en <a href="http://www.manualweb.net/tutorial-html/" title="Manual de HTML">HTML</a>. Ya que será el formateador de <a href="http://www.manualweb.net/tutorial-jquery-mobile/" title="Tutorial de jQuery Mobile">jQuery Mobile</a> quien se encargue de realizar la anidación de la lista.</p>
<p>Así el código quedaría de la siguiente forma:</p>
<pre class="html4strict" style="font-family: monospace;"> 
<span style="color: #009900;">&lt;<a href="http://w3api.com/wiki/HTML:UL"><span style="color: #000000; font-weight: bold;">ul</span></a> data-role<span style="color: #66cc66;">=</span><span style="color: #ff0000;">"listview"</span> data-inset<span style="color: #66cc66;">=</span><span style="color: #ff0000;">"true"</span> data-filter<span style="color: #66cc66;">=</span><span style="color: #ff0000;">"true"</span>&gt;</span>
<span style="color: #009900;">&lt;<a href="http://w3api.com/wiki/HTML:LI"><span style="color: #000000; font-weight: bold;">li</span></a>&gt;</span>
<span style="color: #009900;">&lt;<a href="http://w3api.com/wiki/HTML:H3"><span style="color: #000000; font-weight: bold;">h3</span></a>&gt;</span>Castilla y León<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://w3api.com/wiki/HTML:H3"><span style="color: #000000; font-weight: bold;">h3</span></a>&gt;</span>
<span style="color: #009900;">&lt;<a href="http://w3api.com/wiki/HTML:UL"><span style="color: #000000; font-weight: bold;">ul</span></a>&gt;</span>
<span style="color: #009900;">&lt;<a href="http://w3api.com/wiki/HTML:LI"><span style="color: #000000; font-weight: bold;">li</span></a>&gt;&lt;<a href="http://w3api.com/wiki/HTML:A"><span style="color: #000000; font-weight: bold;">a</span></a> <a href="http://w3api.com/wiki/HTML:href"><span style="color: #000066;">href</span></a><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"#"</span>&gt;</span>Avila<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://w3api.com/wiki/HTML:A"><span style="color: #000000; font-weight: bold;">a</span></a>&gt;&lt;<span style="color: #66cc66;">/</span><a href="http://w3api.com/wiki/HTML:LI"><span style="color: #000000; font-weight: bold;">li</span></a>&gt;</span>
<span style="color: #009900;">&lt;<a href="http://w3api.com/wiki/HTML:LI"><span style="color: #000000; font-weight: bold;">li</span></a>&gt;&lt;<a href="http://w3api.com/wiki/HTML:A"><span style="color: #000000; font-weight: bold;">a</span></a> <a href="http://w3api.com/wiki/HTML:href"><span style="color: #000066;">href</span></a><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"#"</span>&gt;</span>Burgos<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://w3api.com/wiki/HTML:A"><span style="color: #000000; font-weight: bold;">a</span></a>&gt;&lt;<span style="color: #66cc66;">/</span><a href="http://w3api.com/wiki/HTML:LI"><span style="color: #000000; font-weight: bold;">li</span></a>&gt;</span>
<span style="color: #009900;">&lt;<a href="http://w3api.com/wiki/HTML:LI"><span style="color: #000000; font-weight: bold;">li</span></a>&gt;&lt;<a href="http://w3api.com/wiki/HTML:A"><span style="color: #000000; font-weight: bold;">a</span></a> <a href="http://w3api.com/wiki/HTML:href"><span style="color: #000066;">href</span></a><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"#"</span>&gt;</span>León<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://w3api.com/wiki/HTML:A"><span style="color: #000000; font-weight: bold;">a</span></a>&gt;&lt;<span style="color: #66cc66;">/</span><a href="http://w3api.com/wiki/HTML:LI"><span style="color: #000000; font-weight: bold;">li</span></a>&gt;</span>
<span style="color: #009900;">&lt;<a href="http://w3api.com/wiki/HTML:LI"><span style="color: #000000; font-weight: bold;">li</span></a>&gt;&lt;<a href="http://w3api.com/wiki/HTML:A"><span style="color: #000000; font-weight: bold;">a</span></a> <a href="http://w3api.com/wiki/HTML:href"><span style="color: #000066;">href</span></a><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"#"</span>&gt;</span>Palencia<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://w3api.com/wiki/HTML:A"><span style="color: #000000; font-weight: bold;">a</span></a>&gt;&lt;<span style="color: #66cc66;">/</span><a href="http://w3api.com/wiki/HTML:LI"><span style="color: #000000; font-weight: bold;">li</span></a>&gt;</span>
<span style="color: #009900;">&lt;<a href="http://w3api.com/wiki/HTML:LI"><span style="color: #000000; font-weight: bold;">li</span></a>&gt;&lt;<a href="http://w3api.com/wiki/HTML:A"><span style="color: #000000; font-weight: bold;">a</span></a> <a href="http://w3api.com/wiki/HTML:href"><span style="color: #000066;">href</span></a><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"#"</span>&gt;</span>Salamanca<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://w3api.com/wiki/HTML:A"><span style="color: #000000; font-weight: bold;">a</span></a>&gt;&lt;<span style="color: #66cc66;">/</span><a href="http://w3api.com/wiki/HTML:LI"><span style="color: #000000; font-weight: bold;">li</span></a>&gt;</span>
<span style="color: #009900;">&lt;<a href="http://w3api.com/wiki/HTML:LI"><span style="color: #000000; font-weight: bold;">li</span></a>&gt;&lt;<a href="http://w3api.com/wiki/HTML:A"><span style="color: #000000; font-weight: bold;">a</span></a> <a href="http://w3api.com/wiki/HTML:href"><span style="color: #000066;">href</span></a><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"#"</span>&gt;</span>Segovia<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://w3api.com/wiki/HTML:A"><span style="color: #000000; font-weight: bold;">a</span></a>&gt;&lt;<span style="color: #66cc66;">/</span><a href="http://w3api.com/wiki/HTML:LI"><span style="color: #000000; font-weight: bold;">li</span></a>&gt;</span>
<span style="color: #009900;">&lt;<a href="http://w3api.com/wiki/HTML:LI"><span style="color: #000000; font-weight: bold;">li</span></a>&gt;&lt;<a href="http://w3api.com/wiki/HTML:A"><span style="color: #000000; font-weight: bold;">a</span></a> <a href="http://w3api.com/wiki/HTML:href"><span style="color: #000066;">href</span></a><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"#"</span>&gt;</span>Soria<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://w3api.com/wiki/HTML:A"><span style="color: #000000; font-weight: bold;">a</span></a>&gt;&lt;<span style="color: #66cc66;">/</span><a href="http://w3api.com/wiki/HTML:LI"><span style="color: #000000; font-weight: bold;">li</span></a>&gt;</span>
<span style="color: #009900;">&lt;<a href="http://w3api.com/wiki/HTML:LI"><span style="color: #000000; font-weight: bold;">li</span></a>&gt;&lt;<a href="http://w3api.com/wiki/HTML:A"><span style="color: #000000; font-weight: bold;">a</span></a> <a href="http://w3api.com/wiki/HTML:href"><span style="color: #000066;">href</span></a><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"#"</span>&gt;</span>Valladolid<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://w3api.com/wiki/HTML:A"><span style="color: #000000; font-weight: bold;">a</span></a>&gt;&lt;<span style="color: #66cc66;">/</span><a href="http://w3api.com/wiki/HTML:LI"><span style="color: #000000; font-weight: bold;">li</span></a>&gt;</span>
<span style="color: #009900;">&lt;<a href="http://w3api.com/wiki/HTML:LI"><span style="color: #000000; font-weight: bold;">li</span></a>&gt;&lt;<a href="http://w3api.com/wiki/HTML:A"><span style="color: #000000; font-weight: bold;">a</span></a> <a href="http://w3api.com/wiki/HTML:href"><span style="color: #000066;">href</span></a><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"#"</span>&gt;</span>Zamora<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://w3api.com/wiki/HTML:A"><span style="color: #000000; font-weight: bold;">a</span></a>&gt;&lt;<span style="color: #66cc66;">/</span><a href="http://w3api.com/wiki/HTML:LI"><span style="color: #000000; font-weight: bold;">li</span></a>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://w3api.com/wiki/HTML:UL"><span style="color: #000000; font-weight: bold;">ul</span></a>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://w3api.com/wiki/HTML:LI"><span style="color: #000000; font-weight: bold;">li</span></a>&gt;</span>
<span style="color: #009900;">&lt;<a href="http://w3api.com/wiki/HTML:LI"><span style="color: #000000; font-weight: bold;">li</span></a>&gt;</span>
<span style="color: #009900;">&lt;<a href="http://w3api.com/wiki/HTML:H3"><span style="color: #000000; font-weight: bold;">h3</span></a>&gt;</span>Extremadura<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://w3api.com/wiki/HTML:H3"><span style="color: #000000; font-weight: bold;">h3</span></a>&gt;</span>
<span style="color: #009900;">&lt;<a href="http://w3api.com/wiki/HTML:UL"><span style="color: #000000; font-weight: bold;">ul</span></a>&gt;</span>
<span style="color: #009900;">&lt;<a href="http://w3api.com/wiki/HTML:LI"><span style="color: #000000; font-weight: bold;">li</span></a>&gt;&lt;<a href="http://w3api.com/wiki/HTML:A"><span style="color: #000000; font-weight: bold;">a</span></a> <a href="http://w3api.com/wiki/HTML:href"><span style="color: #000066;">href</span></a><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"#"</span>&gt;</span>Badajoz<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://w3api.com/wiki/HTML:A"><span style="color: #000000; font-weight: bold;">a</span></a>&gt;&lt;<span style="color: #66cc66;">/</span><a href="http://w3api.com/wiki/HTML:LI"><span style="color: #000000; font-weight: bold;">li</span></a>&gt;</span>
<span style="color: #009900;">&lt;<a href="http://w3api.com/wiki/HTML:LI"><span style="color: #000000; font-weight: bold;">li</span></a>&gt;&lt;<a href="http://w3api.com/wiki/HTML:A"><span style="color: #000000; font-weight: bold;">a</span></a> <a href="http://w3api.com/wiki/HTML:href"><span style="color: #000066;">href</span></a><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"#"</span>&gt;</span>Caceres<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://w3api.com/wiki/HTML:A"><span style="color: #000000; font-weight: bold;">a</span></a>&gt;&lt;<span style="color: #66cc66;">/</span><a href="http://w3api.com/wiki/HTML:LI"><span style="color: #000000; font-weight: bold;">li</span></a>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://w3api.com/wiki/HTML:UL"><span style="color: #000000; font-weight: bold;">ul</span></a>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://w3api.com/wiki/HTML:LI"><span style="color: #000000; font-weight: bold;">li</span></a>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://w3api.com/wiki/HTML:UL"><span style="color: #000000; font-weight: bold;">ul</span></a>&gt;</span>
 </pre>
<p>Un punto importante para el formato que utiliza <a href="http://www.manualweb.net/tutorial-jquery-mobile/" title="Tutorial de jQuery Mobile">jQuery Mobile</a> es que el elemento de la lista superior lo maquetemos mediante un elemento <a href="http://www.w3api.com/wiki/HTML:H3" title="Elemento H3 de HTML">H3</a>.</p>
<p>Este simple código nos ayuda a tener listas anidadas con <a href="http://www.manualweb.net/tutorial-jquery-mobile/" title="Tutorial de jQuery Mobile">jQuery Mobile</a>. 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.</p>
<p>Para esto nos vamos a apoyar en el API de <a href="http://www.manualweb.net/tutorial-jquery-mobile/" title="Tutorial de jQuery Mobile">jQuery Mobile</a> y en concreto en el atributo <strong>$.mobile.page.prototype.options.addBackBtn</strong>. Y es que inicializando este atributo a true nos aparecerá el botón de back al entrar en la anidación de las listas.</p>
<p>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 <a href="http://www.w3api.com/wiki/jQuery:Bind()" title="M&#xE9;todo bind de jQuery">.bind()</a> para realizar la inicialización.</p>
<pre class="javascript" style="font-family: monospace;">$<span style="color: #009900;">(</span>document<span style="color: #009900;">)</span>.<span style="color: #660066;">bind</span><span style="color: #009900;">(</span><span style="color: #3366CC;">"mobileinit"</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span>
    $.<span style="color: #660066;">mobile</span>.<span style="color: #660066;">page</span>.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">options</span>.<span style="color: #660066;">addBackBtn</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span>
<span style="color: #009900;">}</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span></pre>
<p>Y ya tenemos el ejemplo de las listas anidadas con <a href="http://www.manualweb.net/tutorial-jquery-mobile/" title="Tutorial de jQuery Mobile">jQuery Mobile</a> 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?<strong>Similar Posts:</strong>
</p><ul class="similar-posts">
<li><a href="http://lineadecodigo.com/desarrollo-movil/divisores-de-listas-con-jquery-mobile/" rel="bookmark" title="Mayo 11, 2012">Divisores de listas con jQuery Mobile</a></li>
<li><a href="http://lineadecodigo.com/desarrollo-movil/listas-de-elementos-en-jquery-mobile/" rel="bookmark" title="Mayo 10, 2012">Listas de Elementos en jQuery Mobile</a></li>
<li><a href="http://lineadecodigo.com/desarrollo-movil/hola-mundo-con-jquery-mobile/" rel="bookmark" title="Mayo 9, 2012">Hola Mundo con jQuery Mobile</a></li>
<li><a href="http://lineadecodigo.com/javascript/crear-eventos-con-javascript/" rel="bookmark" title="Septiembre 29, 2007">Crear eventos con JavaScript</a></li>
<li><a href="http://lineadecodigo.com/jquery/numero-de-elementos-de-una-lista-con-jquery/" rel="bookmark" title="Enero 31, 2009">Número de elementos de una lista con jQuery</a></li>
</ul>
<p/>

<p><a href="http://feedads.g.doubleclick.net/~a/LiHNKwf3gPd5_LWIuo_NwFjL97w/0/da"><img border="0" ismap="true" src="http://feedads.g.doubleclick.net/~a/LiHNKwf3gPd5_LWIuo_NwFjL97w/0/di"/></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/LiHNKwf3gPd5_LWIuo_NwFjL97w/1/da"><img border="0" ismap="true" src="http://feedads.g.doubleclick.net/~a/LiHNKwf3gPd5_LWIuo_NwFjL97w/1/di"/></a></p><img height="1" src="http://feeds.feedburner.com/~r/LineaDeCodigo/~4/XgGnc7TB_Jo" width="1"/></div>
    </content>
    <updated>2012-05-14T17:52:02Z</updated>
    <category term="Desarrollo M&#xF3;vil"/>
    <category term="addBackBtn"/>
    <category term="bind"/>
    <category term="H3"/>
    <category term="jquery mobile"/>
    <category term="listas"/>
    <category term="listas anidadas"/>
    <category term="mobileinit"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://lineadecodigo.com/desarrollo-movil/listas-anidadas-con-jquery-mobile/</feedburner:origLink>
    <author>
      <name>Víctor Cuervo</name>
    </author>
    <source>
      <id>http://lineadecodigo.com</id>
      <link href="http://lineadecodigo.com" rel="alternate" type="text/html"/>
      <link href="http://feeds.feedburner.com/LineaDeCodigo" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>/* Programación en la red */</subtitle>
      <title>Linea de Codigo</title>
      <updated>2012-05-16T18:59:08Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.maestrosdelweb.com/?p=24410</id>
    <link href="http://www.maestrosdelweb.com/editorial/curso-django-el-shell-de-django/" rel="alternate" type="text/html"/>
    <title>Curso Django: El Shell de Django</title>
    <summary>En el capítulo anterior, 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 un vistazo a los capítulos anteriores. Los modelos nos van [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>En el <a href="http://www.maestrosdelweb.com/editorial/curso-django-el-modelo-de-datos/">capítulo anterior</a>, 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 <a href="http://www.maestrosdelweb.com/guias/#guias-django" title="Curso Django en Maestros del Web">un vistazo a los capítulos anteriores</a>.</p>
<p>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.</p>
<h2>El Shell</h2>
<p>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.</p>
<p>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:</p>
<div class="codigo">
<pre>python manage.py shell</pre>
</div>
<p>Debemos visualizar el siguiente resultado:</p>
<div class="wp-caption aligncenter" id="attachment_24585" style="width: 460px;"><a href="http://www.maestrosdelweb.com/images/2012/05/django-shell-inicio.png"><img alt="Shell" class="size-medium wp-image-24585" height="82" src="http://www.maestrosdelweb.com/images/2012/05/django-shell-inicio-450x82.png" width="450"/></a><p class="wp-caption-text">Shell</p></div>
<p>Lo importante es reconocer los elementos: <a href="http://es.wikipedia.org/wiki/Prompt" title="Prompt">el prompt</a> se representa por &gt;&gt;&gt; y el resultado de nuestras instrucciones se visualizarán en nuevas líneas (sin ningún símbolo previo a ellas)</p>
<h2>Las consultas</h2>
<p>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.</p>
<p>Las consultas <a href="https://docs.djangoproject.com/en/1.4/topics/db/queries/" title="Consultas en Django">están descritas muy claramente en la documentación oficial</a>, para poder hacer esto más simple aquí también usaremos esta pequeña chuleta o cheat sheet como también es conocido.</p>
<div class="wp-caption aligncenter" id="attachment_24589" style="width: 351px;"><a href="http://www.maestrosdelweb.com/images/2012/05/django-queries.pdf" target="_blank"><img alt="Django Queryset CheatSheet" class="size-medium wp-image-24589" height="450" src="http://www.maestrosdelweb.com/images/2012/05/django-queries-341x450.jpg" width="341"/></a><p class="wp-caption-text">Django Queryset CheatSheet</p></div>
<p><a href="https://docs.djangoproject.com/en/1.4/ref/models/querysets/" title="Querysets en Django">La referencia de todos estos métodos</a> se encuentran también en la documentación oficial.</p>
<h2>Ejemplos</h2>
<p>Ahora pasamos a lo divertido, <a href="http://neosergio.github.com/recetario_mdw/" title="Recetario de Maestros del Web">seguimos trabajando con nuestro proyecto de ejemplo</a>, para poder realizar algunos ejemplos tenemos que modificar y corregir el <em>models.py</em> y dejarlo así: (ya no existe el modelo Bebida, ya no es necesario, también se debe eliminar cualquier rastro del modelo Bebida de <em>admin.py</em>)</p>
<div class="wp-caption aligncenter" id="attachment_24570" style="width: 460px;"><a href="http://www.maestrosdelweb.com/images/2012/05/django-models-receta.png"><img alt="models.py" class="size-medium wp-image-24570" height="203" src="http://www.maestrosdelweb.com/images/2012/05/django-models-receta-450x203.png" width="450"/></a><p class="wp-caption-text">models.py</p></div>
<p>Una vez que tenemos listo el models.py , reiniciamos el modelo (si no recuerdas como reiniciar revisa el capítulo: <a href="http://www.maestrosdelweb.com/editorial/curso-django-el-modelo-de-datos/" title="El modelo de datos Django">El modelo de datos</a>)</p>
<div class="codigo">
<pre>python manage.py reset principal</pre>
</div>
<p>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</p>
<div class="codigo">
<pre>python manage.py shell</pre>
</div>
<p>Una vez dentro del shell, empezamos a importar los modelos, para ello digitamos</p>
<div class="codigo">
<pre>from principal.models import Receta, Comentario</pre>
</div>
<p>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:</p>
<div class="codigo">
<pre>Nombre_de_modelo.objects.metodo()</pre>
</div>
<p>Donde podemos reemplazar Nombre_de_modelo y método por las diversas opciones que están en el cheatsheet (chuleta)</p>
<div class="wp-caption aligncenter" id="attachment_24571" style="width: 460px;"><a href="http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-01.png"><img alt="all()" class="size-medium wp-image-24571" height="113" src="http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-01-450x113.png" width="450"/></a><p class="wp-caption-text">all()</p></div>
<p>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.</p>
<div class="wp-caption aligncenter" id="attachment_24569" style="width: 460px;"><a href="http://www.maestrosdelweb.com/images/2012/05/django-importar-usuario-shell.png"><img alt="User.objects.get(pk=1)" class="size-medium wp-image-24569" height="69" src="http://www.maestrosdelweb.com/images/2012/05/django-importar-usuario-shell-450x69.png" width="450"/></a><p class="wp-caption-text">User.objects.get(pk=1)</p></div>
<p>Ahora si introducimos datos a los modelos: (la r es solo una variable cualquiera)</p>
<div class="wp-caption aligncenter" id="attachment_24572" style="width: 460px;"><a href="http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-02.png"><img alt="create()" class="size-medium wp-image-24572" height="137" src="http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-02-450x137.png" width="450"/></a><p class="wp-caption-text">create()</p></div>
<p>Y comprobamos que se ha registrado:</p>
<div class="wp-caption aligncenter" id="attachment_24573" style="width: 263px;"><a href="http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-03.png"><img alt="Receta.objects.all()" class="size-full wp-image-24573" height="67" src="http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-03.png" width="253"/></a><p class="wp-caption-text">Receta.objects.all()</p></div>
<p>Agregamos un comentario a la receta anterior: (la c es solo una variable cualquiera)</p>
<div class="wp-caption aligncenter" id="attachment_24574" style="width: 393px;"><a href="http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-04.png"><img alt="create() en Comentario" class="size-full wp-image-24574" height="139" src="http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-04.png" width="383"/></a><p class="wp-caption-text">create() en Comentario</p></div>
<p>Agregamos una receta mas: (Se puede escribir todo en una sola línea, yo lo hago para que se vea bien en la imagen)</p>
<div class="wp-caption aligncenter" id="attachment_24575" style="width: 460px;"><a href="http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-05.png"><img alt="create() podr&#xED;a ir en una sola l&#xED;nea" class="size-medium wp-image-24575" height="182" src="http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-05-450x182.png" width="450"/></a><p class="wp-caption-text">create() podría ir en una sola línea</p></div>
<p>Sigamos jugando, ahora mostraremos las recetas cuyos ingredientes no empiecen con la letra A: (notar que luego de ingredientes hay <strong>dos</strong> guiones bajos)</p>
<div class="wp-caption aligncenter" id="attachment_24576" style="width: 460px;"><a href="http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-06.png"><img alt="exclude y startswith" class="size-medium wp-image-24576" height="55" src="http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-06-450x55.png" width="450"/></a><p class="wp-caption-text">exclude y startswith</p></div>
<p>Ahora las recetas, que mencionen en su preparación la palabra ‘tetera’:</p>
<div class="wp-caption aligncenter" id="attachment_24577" style="width: 460px;"><a href="http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-07.png"><img alt="filter y contains" class="size-medium wp-image-24577" height="54" src="http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-07-450x54.png" width="450"/></a><p class="wp-caption-text">filter y contains</p></div>
<p>Y si queremos ordenar alfabéticamente por titulo de receta:</p>
<div class="wp-caption aligncenter" id="attachment_24578" style="width: 460px;"><a href="http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-08.png"><img alt="order_by()" class="size-medium wp-image-24578" height="76" src="http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-08-450x76.png" width="450"/></a><p class="wp-caption-text">order_by()</p></div>
<p>Ahora lo invertimos:</p>
<div class="wp-caption aligncenter" id="attachment_24579" style="width: 460px;"><a href="http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-09.png"><img alt="order_by y reverse" class="size-medium wp-image-24579" height="60" src="http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-09-450x60.png" width="450"/></a><p class="wp-caption-text">order_by y reverse</p></div>
<p>Mostramos los comentarios de cada receta:</p>
<div class="wp-caption aligncenter" id="attachment_24580" style="width: 405px;"><a href="http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-10.png"><img alt="filter()" class="size-full wp-image-24580" height="112" src="http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-10.png" width="395"/></a><p class="wp-caption-text">filter()</p></div>
<p>Ahora me gustaría actualizar el titulo ‘Huevo Frito’ a la de ‘Huevito Frito’:</p>
<div class="wp-caption aligncenter" id="attachment_24581" style="width: 460px;"><a href="http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-11.png"><img alt="update()" class="size-medium wp-image-24581" height="62" src="http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-11-450x62.png" width="450"/></a><p class="wp-caption-text">update()</p></div>
<p>Sigo agregando comentarios a la primera receta y deseo saber cuantos comentarios hay hasta el momento en ambas recetas:</p>
<div class="wp-caption aligncenter" id="attachment_24582" style="width: 460px;"><a href="http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-12.png"><img alt="count()" class="size-medium wp-image-24582" height="168" src="http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-12-450x168.png" width="450"/></a><p class="wp-caption-text">count()</p></div>
<p>Agrego un comentario a la segunda receta (un comentario troll) y luego lo elimino:</p>
<div class="wp-caption aligncenter" id="attachment_24583" style="width: 404px;"><a href="http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-13.png"><img alt="delete()" class="size-full wp-image-24583" height="196" src="http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-13.png" width="394"/></a><p class="wp-caption-text">delete()</p></div>
<p>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’:</p>
<div class="wp-caption aligncenter" id="attachment_24584" style="width: 460px;"><a href="http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-14.png"><img alt="Todo est&#xE1; orientado a objetos" class="size-medium wp-image-24584" height="79" src="http://www.maestrosdelweb.com/images/2012/05/django-shell-ejemplo-14-450x79.png" width="450"/></a><p class="wp-caption-text">Todo está orientado a objetos</p></div>
<p>Como verán hacer consultas en Django es simple, sin embargo <a href="https://docs.djangoproject.com/en/dev/ref/models/querysets/" title="Django QuerySet API Reference">siempre es bueno tener la documentación a la mano</a>, ya que recordar tantos métodos puede ser tedioso al principio.</p>
<div class="tipexperto">
<h4>Nota:</h4>
<div class="tipcont">Las consultas que se realizan en el Shell no se guardan en el proyecto, es por ello que si <a href="http://neosergio.github.com/recetario_mdw/">revisan el repositorio del proyecto de ejemplo</a>, sólo encontraran cambios en models.py y admin.py (retirando la clase Bebida, que ya no es necesaria)</div>
</div>
<p>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.</p>
<p>Práctica tus propias consultas, juega con los modelos, diviértete, que el momento de aplicarlas serán en el próximo capítulo.</p>
<hr/><p style="height: 64px;"><img alt="Sergio Infante Montero" class="avatar avatar-64 photo" height="64" src="http://1.gravatar.com/avatar/3ca2b43e8aedb28a82fdca67e28281a1?s=64&amp;d=http%3A%2F%2Fwww.maestrosdelweb.com%2Fwp-content%2Fthemes%2Fmdw2%2Fimages%2Fno-avatar64.png%3Fs%3D64&amp;r=G" style="float: left; padding: 0 5px;" width="64"/> <strong>Sergio Infante Montero</strong> para <a href="http://www.maestrosdelweb.com">Maestros del Web</a>.<br/><a href="http://www.maestrosdelweb.com/editorial/curso-django-el-shell-de-django/#respond">Agrega tu comentario</a> | <a href="http://www.maestrosdelweb.com/editorial/curso-django-el-shell-de-django/">Enlace permanente</a> al artículo</p><hr style="clear: both;"/>
		<p><strong>Síguenos en:</strong> <img src="http://www.maestrosdelweb.com/diseno/imagenes/twitter.png" style="vertical-align: middle;"/> <a href="http://twitter.com/maestros">@maestros</a> | <img src="http://www.maestrosdelweb.com/diseno/imagenes/facebook.png" style="vertical-align: middle;"/> <a href="http://facebook.com/maestrosdelweb">Fan page</a></p></div>
    </content>
    <updated>2012-05-14T17:14:50Z</updated>
    <category term="django"/>
    <category term="Editorial"/>
    <category term="curso django"/>
    <category term="Django"/>
    <category term="python"/>
    <category term="shell"/>
    <author>
      <name>Sergio Infante Montero</name>
    </author>
    <source>
      <id>http://www.maestrosdelweb.com</id>
      <link href="http://www.maestrosdelweb.com" rel="alternate" type="text/html"/>
      <link href="http://feeds.feedburner.com/mweditorial" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Un espacio para los entusiastas del web</subtitle>
      <title>Maestros del Web</title>
      <updated>2012-05-17T18:59:47Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-27752126.post-3882771534374934261</id>
    <link href="http://www.variablenotfound.com/feeds/3882771534374934261/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://www.blogger.com/comment.g?blogID=27752126&amp;postID=3882771534374934261" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/27752126/posts/default/3882771534374934261?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/27752126/posts/default/3882771534374934261?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://feedproxy.google.com/~r/vnf/~3/GC83Y6j9wJg/enlaces-interesantes-82.html" rel="alternate" type="text/html"/>
    <title>Enlaces interesantes 82</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://lh3.ggpht.com/-QAFlO4T-9Gg/T7Clv0pTabI/AAAAAAAACCc/yZHukT9Im38/s1600-h/image7_thumb_thumb_thumb_thumb_thumb.png"><img align="right" alt="image7_thumb_thumb_thumb_thumb_thumb[2]" border="0" height="129" src="http://lh3.ggpht.com/-r8hftloxDLI/T7ClxD2evEI/AAAAAAAACCk/VrS_3GREbGA/image7_thumb_thumb_thumb_thumb_thumb%25255B1%25255D.png?imgmax=800" style="background-image: none; border-width: 0px; display: inline; float: right; margin: 0px 0px 10px 10px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image7_thumb_thumb_thumb_thumb_thumb[2]" width="172"/></a>Estos son los enlaces publicados en <a href="http://www.facebook.com/variablenotfound">Variable not found en Facebook</a> y <a href="http://twitter.com/jmaguilar">Twitter</a> del 7 al 13 de mayo de 2012. Espero que os resulten interesantes :-)<br/>
<h4>
.Net</h4>
<ul>
<li><a href="http://sblakemore.com/blog/post/What-JavaScript-taught-me-about-C-&#x2013;-Understanding-&#x2018;Access-to-modified-closure&#x2019;.aspx"><strong>What JavaScript taught me about C# – Understanding ‘Access to modified closure’</strong></a>       <br/>
Sean Blakemore </li>
<li><strong><a href="http://geeks.ms/blogs/etomas/archive/2012/05/10/cargar-informaci-243-n-de-reflection-sin-cargar-el-assembly.aspx">Cargar información de reflection sin cargar el assembly</a></strong>       <br/>
Eduard Tomás </li>
<li><strong><a href="http://blog.koalite.com/2012/05/hebras-lambdas-y-bugs/">Hebras, lambdas… y bugs</a></strong>       <br/>
Juan María Hernández </li>
<li><strong><a href="http://www.codeproject.com/Articles/380769/Creating-an-FTP-Server-in-Csharp">Creating an FTP Server in C#</a></strong>       <br/>
Rick Bassham <a name="more"/></li>
</ul>
<h4>
Asp.net</h4>
<ul>
<li><a href="http://www.strathweb.com/2012/05/output-caching-in-asp-net-web-api/" title="Permalink to Output caching in ASP.NET Web API"><strong>Output caching in ASP.NET Web API</strong></a>       <br/>
Filip W. </li>
<li><strong><a href="http://professionalaspnet.com/archive/2012/05/11/How-to-Include-Views-in-ASP.NET-MVC-_2600_-WebMatrix-Razor.aspx">How to Include Views in ASP.NET MVC &amp; WebMatrix Razor</a> </strong>      <br/>
Chris Love </li>
<li><strong><a href="http://blogs.msdn.com/b/jmstall/archive/2012/05/11/webapi-parameter-binding-under-the-hood.aspx">WebAPI Parameter binding under the hood</a></strong>       <br/>
Mike Stall </li>
<li><a href="http://tpeczek.blogspot.com.es/2012/05/another-early-look-at-jquery-ui-grid-in.html" title="Another early look at jQuery UI Grid in ASP.NET MVC &#x2013; Data Types, Dataview, Pager, Sorting and F"><strong>Another early look at jQuery UI Grid in ASP.NET MVC – Data Types, Dataview, Pager, Sorting and Filtering</strong></a>       <br/>
Tomasz Pęczek </li>
<li><strong><a href="http://www.dotnetcurry.com/ShowArticle.aspx?ID=807">Download Files in ASP.NET MVC 3 using Controller Action</a></strong>       <br/>
Mahesh Sabnis </li>
<li><a href="http://www.west-wind.com/weblog/posts/2012/May/08/Passing-multiple-POST-parameters-to-Web-API-Controller-Methods"><strong>Passing multiple POST parameters to Web API Controller Methods</strong></a>       <br/>
Rick Strahl </li>
<li><strong><a href="http://www.knockmeout.net/2012/05/knockout-2-dot-1-is-out.html">Knockout 2.1 Is Out</a></strong>       <br/>
Ryan Niemeyer </li>
<li><strong><a href="http://geeks.ms/blogs/phurtado/archive/2012/05/08/el-scroll-infinito.aspx">El scroll infinito</a></strong>       <br/>
Pedro Hurtado </li>
<li><a href="http://michaelcrump.net/a-xaml-guy-digs-into-asp-net-mvc4-part-2-of"><strong>A XAML Guy digs into ASP.NET MVC4 (Part 2 of ?)</strong></a>       <br/>
Michael Crump </li>
<li><strong><a href="http://blogs.msdn.com/b/kiranchalla/archive/2012/05/06/in-memory-client-amp-host-and-integration-testing-of-your-web-api-service.aspx">In memory client, host and integration testing of your Web API service</a></strong>       <br/>
Kiran Challa </li>
<li><strong><a href="http://blogs.telerik.com/blogs/posts/12-05-08/there-s-a-tool-for-that-13-essential-tools-for-the-ninja-web-developer.aspx">There’s a Tool for That: 13 Essential Tools for the Ninja Web Developer</a></strong>       <br/>
Joshua Holt </li>
<li><strong><a href="http://visualstudiomagazine.com/articles/2012/05/04/implementing-websockets-in-wcf-4_5.aspx">Implementing WebSockets in WCF 4.5</a></strong>       <br/>
Peter Vogel </li>
<li><strong><a href="http://sebys.com.ar/2012/05/05/asp-net-web-api-paso-a-paso/">ASP.NET Web API paso a paso</a></strong>       <br/>
Sebastián Henzenn </li>
<li><strong><a href="http://weblogs.asp.net/jgalloway/archive/2012/05/04/asp-net-mvc-authentication-customizing-authentication-and-authorization-the-right-way.aspx">ASP.NET MVC Authentication - Customizing Authentication and Authorization The Right Way</a></strong>       <br/>
Jon Galloway </li>
<li><strong><a href="http://blogs.msdn.com/b/rjacobs/archive/2012/05/06/extending-asp-net-mvc-account-registration-with-workflow-wf4.aspx">Extending ASP.NET MVC Account Registration with Workflow (WF4)</a></strong>       <br/>
Ron Jacobs </li>
<li><strong><a href="http://weblogs.asp.net/davidfowler/archive/2012/05/04/api-improvements-made-in-signalr-0-5.aspx">API Improvements made in SignalR 0.5</a></strong>       <br/>
David Fowler</li>
</ul>
<h4>
Azure / Cloud</h4>
<ul>
<li><strong><a href="http://www.everything-microsoft.com/2012/05/08/microsoft-renames-azure-services/">Microsoft Renames Azure Services</a></strong>       <br/>
Martin Brinkmann</li>
</ul>
<h4>
Conceptos</h4>
<ul>
<li><a href="http://blogs.msdn.com/b/ericlippert/archive/2012/05/07/guid-guide-part-three.aspx"><strong>GUID guide, part three</strong></a>       <br/>
Eric Lippert </li>
</ul>
<h4>
Data access</h4>
<ul>
<li><a href="http://martinfowler.com/bliki/OrmHate.html"><strong>OrmHate</strong></a>       <br/>
Martin Fowler </li>
<li><a href="http://blogs.msdn.com/b/adonet/archive/2012/05/08/ef5-sample-provider-published.aspx"><strong>EF5 Sample Provider Published</strong></a>       <br/>
Pawel Kadluczka </li>
</ul>
<h4>
Html/Css/Javascript</h4>
<ul>
<li><a href="http://www.stubbornella.org/content/2012/05/02/cross-browser-debugging-css/" title="Permanent Link- Cross-Browser Debugging CSS"><strong>Cross-Browser Debugging CSS</strong></a>       <br/>
Nicole Sullivan </li>
<li><strong><a href="http://net.tutsplus.com/tutorials/javascript-ajax/prototypes-in-javascript-what-you-need-to-know/">Prototypes in JavaScript</a></strong>       <br/>
Leigh Kaszick </li>
<li><strong><a href="http://www.nczonline.net/blog/2012/05/08/working-with-files-in-javascript-part-1">Working with files in JavaScript, Part 1</a></strong>       <br/>
Nicholas C. Zakas </li>
<li><strong><a href="http://html5doctor.com/html5-audio-the-state-of-play/">HTML5 Audio — The State of Play</a></strong>       <br/>
Mark Boas </li>
<li><a href="http://www.strathweb.com/2012/05/native-html5-push-notifications-with-asp-net-web-api-and-knockout-js/" title="Permalink to Native HTML5 push notifications with ASP.NET Web API and Knockout.js"><strong>Native HTML5 push notifications with ASP.NET Web API and Knockout.js</strong></a>       <br/>
Filip W. </li>
<li><strong><a href="http://net.tutsplus.com/tutorials/javascript-ajax/14-reason-why-nobody-used-your-jquery-plugin/">14 Reasons Why Nobody Used Your jQuery Plugin</a></strong>       <br/>
Jonathan Cutrell</li>
<ul/>
</ul>
<h4>
Visual Studio/Complementos/Herramientas</h4>
<ul>
<li><strong><a href="http://blogs.jetbrains.com/dotnet/2012/05/dotpeek-10-is-released/">dotPeek 1.0 is Released</a></strong>       <br/>
Jura Gorohovsky (vía @hhariri) </li>
<li><strong><a href="http://www.genbetadev.com/gestores-de-contenido/etiquetando-haciendo-crecer-nuestro-arbol-del-repositorio-de-codigo">Etiquetando,haciendo crecer nuestro árbol del repositorio de código</a></strong> y <strong><a href="http://www.genbetadev.com/gestores-de-contenido/branching-haciendo-crecer-nuestro-arbol-del-repositorio-de-codigo">Branching, haciendo crecer nuestro árbol del repositorio de código</a></strong>       <br/>
Juan Quijano </li>
<li><strong><a href="http://blogs.msdn.com/b/visualstudio/archive/2012/05/08/visual-studio-11-user-interface-updates-coming-in-rc.aspx">Visual Studio 11 User Interface Updates Coming in RC</a></strong>       <br/>
Monty Hammontree   </li>
</ul>
<h4>
Otros</h4>
<ul>
<li><a href="http://www.hanselman.com/blog/TheFloppyDiskMeansSaveAnd14OtherOldPeopleIconsThatDontMakeSenseAnymore.aspx"><strong>The Floppy Disk means Save, and 14 other old people Icons that don't make sense anymore</strong></a>       <br/>
Scott Hanselman </li>
</ul>
Y no olvidéis que podéis seguir esta información en vivo y en directo desde <a href="http://www.facebook.com/variablenotfound">Variable not found en Facebook</a>, o a través de <a href="http://twitter.com/jmaguilar">Twitter</a>.     <br/>
<br/>
Publicado en <a href="http://www.variablenotfound.com/">Variable not found</a><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/27752126-3882771534374934261?l=www.variablenotfound.com" width="1"/></div>
<p><a href="http://feedads.g.doubleclick.net/~a/Ls1Q1M7V2BPRKSA5C9lBCxAR57o/0/da"><img border="0" ismap="true" src="http://feedads.g.doubleclick.net/~a/Ls1Q1M7V2BPRKSA5C9lBCxAR57o/0/di"/></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Ls1Q1M7V2BPRKSA5C9lBCxAR57o/1/da"><img border="0" ismap="true" src="http://feedads.g.doubleclick.net/~a/Ls1Q1M7V2BPRKSA5C9lBCxAR57o/1/di"/></a></p><img height="1" src="http://feeds.feedburner.com/~r/vnf/~4/GC83Y6j9wJg" width="1"/></div>
    </content>
    <updated>2012-05-14T07:15:00Z</updated>
    <published>2012-05-14T07:15:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="enlaces"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://www.variablenotfound.com/2012/05/enlaces-interesantes-82.html</feedburner:origLink>
    <author>
      <name>José M. Aguilar</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/11683750380776435448</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-27752126</id>
      <category term="flash"/>
      <category term="navidad"/>
      <category term="2009"/>
      <category term="vacaciones"/>
      <category term="historias"/>
      <category term="cadenas de conexi&#xF3;n"/>
      <category term="vs2008"/>
      <category term="interfaces"/>
      <category term="analytics"/>
      <category term="signalr"/>
      <category term="calidad"/>
      <category term="curiosidades"/>
      <category term="arquitectura"/>
      <category term="opini&#xF3;n"/>
      <category term="bytecode"/>
      <category term="reflexiones"/>
      <category term="webgrid"/>
      <category term="spam"/>
      <category term="inocentadas"/>
      <category term="haloscan"/>
      <category term="validadores"/>
      <category term="eswebcamp"/>
      <category term="xhtml"/>
      <category term="errores"/>
      <category term="connection strings"/>
      <category term="antipatrones"/>
      <category term="leyes"/>
      <category term="scripting"/>
      <category term="linq"/>
      <category term="nupack"/>
      <category term="xVal"/>
      <category term="paranoias"/>
      <category term="java"/>
      <category term="&#xE1;rboles de expresi&#xF3;n"/>
      <category term="azure"/>
      <category term="aniversario"/>
      <category term="optimizaci&#xF3;n"/>
      <category term="liame"/>
      <category term="niftydotnet"/>
      <category term="rest"/>
      <category term="nivel b&#xE1;sico"/>
      <category term="curso"/>
      <category term="1337"/>
      <category term="nivel medio"/>
      <category term="proyectos"/>
      <category term="nivel alto"/>
      <category term="est&#xE1;ndares"/>
      <category term="2.0"/>
      <category term="dsl"/>
      <category term="viajes"/>
      <category term="asp.net"/>
      <category term="patrones"/>
      <category term="blogging"/>
      <category term="error"/>
      <category term="dans"/>
      <category term="depuraci&#xF3;n"/>
      <category term="google"/>
      <category term="trabajo"/>
      <category term="knockout"/>
      <category term="ensamblador"/>
      <category term="fluent interfaces"/>
      <category term="technorati"/>
      <category term="webpages"/>
      <category term="chuletas"/>
      <category term="navegadores"/>
      <category term="msdewey"/>
      <category term="delegados"/>
      <category term="emoticonos"/>
      <category term="ep&#xF3;nimos"/>
      <category term="aspnetmvc"/>
      <category term="escaneo de puertos"/>
      <category term="mvp"/>
      <category term="productos"/>
      <category term="envidia"/>
      <category term="buenas pr&#xE1;cticas"/>
      <category term="Spectrum"/>
      <category term="frameworks"/>
      <category term="frases c&#xE9;lebres"/>
      <category term="servicios on-line"/>
      <category term="equipos"/>
      <category term="planetas"/>
      <category term="redes"/>
      <category term="troyanos"/>
      <category term="vs"/>
      <category term="t&#xE9;cnicas de spam"/>
      <category term="lambdas"/>
      <category term="antispam"/>
      <category term="silverlight"/>
      <category term="chacha"/>
      <category term="entrevistas"/>
      <category term="leet speak"/>
      <category term="ie"/>
      <category term="charlas"/>
      <category term="desarollo"/>
      <category term="jqGrid"/>
      <category term="jquery"/>
      <category term="historia"/>
      <category term="phishing"/>
      <category term="ado.net"/>
      <category term="scrum"/>
      <category term="homenaje"/>
      <category term="problema"/>
      <category term="virus"/>
      <category term="entity framework"/>
      <category term="webmatrix"/>
      <category term="conquista del mundo"/>
      <category term="consultas"/>
      <category term="nostalgia"/>
      <category term="software libre"/>
      <category term="ayuda"/>
      <category term="web"/>
      <category term="seguridad"/>
      <category term="rendimiento"/>
      <category term="desarrollo"/>
      <category term="redes sociales"/>
      <category term="interacci&#xF3;n"/>
      <category term="c#"/>
      <category term="desastres"/>
      <category term="css"/>
      <category term="libros"/>
      <category term="portales"/>
      <category term="cultura"/>
      <category term="creatividad"/>
      <category term=".net"/>
      <category term="dise&#xF1;o"/>
      <category term="visualstudio"/>
      <category term="vb.net"/>
      <category term="humor"/>
      <category term="m&#xE9;todos an&#xF3;nimos"/>
      <category term="productividad"/>
      <category term="summit2012"/>
      <category term="emuladores"/>
      <category term="motores de f&#xED;sica"/>
      <category term="bases de datos"/>
      <category term="auges"/>
      <category term="interfaces fluidos"/>
      <category term="webforms"/>
      <category term="t4"/>
      <category term="an&#xE1;lisis"/>
      <category term="programaci&#xF3;n"/>
      <category term="frikadas"/>
      <category term="componentes"/>
      <category term="software"/>
      <category term="html"/>
      <category term="utilidades"/>
      <category term="riqueza"/>
      <category term="cartujadotnet"/>
      <category term="comentarios"/>
      <category term="msil"/>
      <category term="enlaces"/>
      <category term="webapi"/>
      <category term="javascript"/>
      <category term="autobombo"/>
      <category term="localizacion"/>
      <category term="communityday"/>
      <category term="redondear esquinas"/>
      <category term="&#xF3;scar"/>
      <category term="trucos"/>
      <category term="innovadores"/>
      <category term="cms"/>
      <category term="vs2010"/>
      <category term="tecnolog&#xED;a"/>
      <category term="instalaci&#xF3;n"/>
      <category term="resumen"/>
      <category term="glimpse"/>
      <category term="ttt"/>
      <category term="vs2005"/>
      <category term="recomendaciones"/>
      <category term="linux"/>
      <category term="office"/>
      <category term="personal"/>
      <category term="ajax"/>
      <category term="empresa"/>
      <category term="genios"/>
      <category term="herramientas"/>
      <category term="protocolos"/>
      <category term="colaboraciones"/>
      <category term="variablenotfound.com"/>
      <category term="tags"/>
      <category term="blogger"/>
      <category term="SEO"/>
      <category term="buscadores"/>
      <category term="noticias"/>
      <category term="novedades"/>
      <category term="ofuscaci&#xF3;n de emails"/>
      <category term="orcas"/>
      <category term="orm"/>
      <category term="razor"/>
      <category term="eventos"/>
      <category term="microsoft"/>
      <category term="quaere"/>
      <category term="actualidad"/>
      <category term="mono"/>
      <category term="alegr&#xED;as"/>
      <category term="data"/>
      <category term="fiddler"/>
      <author>
        <name>José M. Aguilar</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/11683750380776435448</uri>
      </author>
      <link href="http://www.variablenotfound.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.variablenotfound.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/27752126/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/vnf" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Artículos, noticias, curiosidades, reflexiones... sobre el mundo del desarrollo de software, internet, u otros temas relacionados con la tecnología.</subtitle>
      <title>Variable not found</title>
      <updated>2012-05-17T16:49:09Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://lineadecodigo.com/?p=4284</id>
    <link href="http://feedproxy.google.com/~r/LineaDeCodigo/~3/7qG3DOqdcp8/" rel="alternate" type="text/html"/>
    <title>Conversaciones sobre Programación. Build 2012.02</title>
    <summary>Segunda entrega del resumen en los grupos de conversación de Facebook sobre lenguajes de programación en español. 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. Esta semana hemos lanzado uno nuevo, el [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><img alt="" class="alignright size-full wp-image-2023" height="100" src="http://img.aulambra.com/wp-content/uploads/2009/10/logo_aulambra.png" style="margin: 10px;" title="logo_aulambra" width="100"/>Segunda entrega del resumen en los <strong><a href="http://lineadecodigo.com/conversacion/grupos-de-conversacion-sobre-programacion-en-facebook/" title="Grupos de Conversaci&#xF3;n en Facebook sobre lenguajes de programaci&#xF3;n en espa&#xF1;ol">grupos de conversación de Facebook sobre lenguajes de programación en español</a>.</strong> 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.</p>
<p>Esta semana hemos lanzado uno nuevo, <a href="http://lineadecodigo.com/conversacion/nuevo-grupo-de-conversacion-sobre-bases-de-datos/" title="Grupo de Conversaci&#xF3;n sobre Bases de Datos">el grupo de conversación sobre Bases de Datos</a>. Y así, de la nada, ya hay 100 miembros conversando. Una pasada.</p>
<p>Pero echemos un vistazo a las últimas conversaciones de los grupos sobre programación en español...</p>
<h3>HTML5 en Español<br/>
<a href="https://www.facebook.com/groups/html5.es/">https://www.facebook.com/groups/html5.es/</a><br/>
<em style="font-size: 0.7em;">106 miembros (+31)</em></h3>
<ul>
<li><a href="https://www.facebook.com/groups/html5.es/permalink/196944440426427/" title="Documento HTML Polyglot">Documento de trabajo HTML Polyglot</a>, o lo que quiere hacer la <a href="http://www.w3.org">W3C</a> para que los documentos sean multi-idioma.</li>
<li>Un artículo que habla de las <a href="https://www.facebook.com/groups/html5.es/permalink/197072073746997/" title="7 tecnolog&#xED;as que sostienen Facebook">7 tecnologías que sostienen Facebook</a>, de los chicos de <a href="http://www.genbeta.com/" title="Genbeta">Genbeta</a>.</li>
<li>Pregunta sobre <a href="https://www.facebook.com/groups/html5.es/permalink/198296236957914/" title="Poner un favicon en una p&#xE1;gina web">cómo poner el Favicon en una página web</a>.</li>
<li>¿Alguién conoce un <a href="https://www.facebook.com/groups/html5.es/permalink/199156506871887/" title="Hosting con soporte Phyton con Django">hosting con soporte de Phyton con Django</a>?</li>
<li>Dudas sobre <a href="https://www.facebook.com/groups/html5.es/permalink/200923810028490/" title="C&#xF3;mo subir un fichero con un INPUT file y Perl">cómo subir un fichero con un input file y el lenguaje Perl</a>.</li>
</ul>
<div>Además se están manteniendo varios documentos:</div>
<div>
<ul>
<li><a href="https://www.facebook.com/groups/html5.es/doc/152308228223382/" title="Test para probar HTMl5">Test para probar HTML5</a></li>
<li><a href="https://www.facebook.com/groups/html5.es/doc/152306054890266/" title="Herramientas para desarrollar en HTML5">Herramientas para desarrollar con HTML5</a></li>
</ul>
</div>
<h3>Java en Español<br/>
<a href="https://www.facebook.com/groups/java.es/">https://www.facebook.com/groups/java.es/</a><br/>
<em style="font-size: 0.7em;">156 miembros (+66)</em></h3>
<p>Lo más importante es que hemos <a href="http://lineadecodigo.com/conversacion/con-que-ide-empezarias-a-aprender-java/" title="&#xBF;Qu&#xE9; IDE utilizarias para empezar a aprender Java?">lanzando una encuesta sobre qué IDE utilizarías para empezar a aprender el lenguaje de Java</a>. No dejes de contestar y añadir tus comentarios.</p>
<ul>
<li><a href="https://www.facebook.com/groups/java.es/doc/414873981869857/" title="M&#xE9;todo de ordenaci&#xF3;n burbuja para arrays">Cómo resolver el método de ordenación de Arrays con el método burbuja</a></li>
<li><a href="https://www.facebook.com/groups/java.es/permalink/414870695203519/" title="P&#xE1;ginas con Tutoriales para empezar con Java">Páginas con tutoriales para empezar con Java</a> (y <a href="https://www.facebook.com/groups/java.es/permalink/420347981322457/" title="P&#xE1;ginas con Tutoriales para empezar con Java">2</a>)</li>
<li>Se pedía <a href="https://www.facebook.com/groups/java.es/permalink/415979385092650/" title="Ayuda para el algoritmo de un N&#xFA;mero Feliz">ayuda sobre cómo resolver el algoritmo del Número Feliz</a>.... y <a href="https://www.facebook.com/groups/java.es/permalink/416369071720348/" title="N&#xFA;mero Feliz con Java">ya está resuelto y publicado</a>.</li>
<li>Se ha <a href="https://www.facebook.com/groups/java.es/permalink/415849171772338/" title="Calcular la Serie de Taylor en Java">comentado y resuelto como construir un programa para calcular la serie de Taylor</a>.</li>
<li>Ayuda para encontrar <a href="https://www.facebook.com/groups/java.es/permalink/417771101580145/" title="Informaci&#xF3;n y Ejemplo de la Anotaci&#xF3;n @intercepts">información y ejemplo de la anotación @Intercepts</a>.</li>
<li><em><a href="http://lineadecodigo.com/author/pablo-ruiz/" title="Pablo Ruiz">Pablo Ruiz</a></em> está publicando artículos muy interesantes con los <a href="https://www.facebook.com/groups/java.es/permalink/418420224848566/" title="Ejercicios de la Certificaci&#xF3;n Java">ejercicios de la Certificación Java</a> en <a href="https://www.facebook.com/groups/java.es/permalink/419639228059999/" title="Blog de Pablo Ruiz">su blog</a>.</li>
<li>¿<a href="https://www.facebook.com/groups/java.es/permalink/418328488191073/" title="Sirven los tutoriales de Eclipse para Netbeans">Sirven los tutoriales de Eclipse para Netbeans</a>?</li>
<li><a href="https://www.facebook.com/groups/java.es/permalink/418627111494544/" title="Primeros Pasos de JSF">Primeros pasos de JSF</a>, <a href="https://www.facebook.com/groups/java.es/permalink/418730241484231/" title="Primera pantalla con JSF">Primera pantalla con JSF</a> y <a href="https://www.facebook.com/groups/java.es/permalink/418914368132485/" title="Manejando ManageBean en JSF">Manejando ManageBean en JSF</a> por <em>Julio Pari.</em></li>
<li><em>Ing Guillermo Gonzalez</em> propone ir publicando <a href="https://www.facebook.com/groups/java.es/permalink/419425571414698/" title="Algoritmos B&#xE1;sicos para la gente que Empieza">algoritmos básicos e irles resolviendo para ayudar a la gente que empieza</a>. (y <a href="https://www.facebook.com/groups/java.es/permalink/420596044630984/" title="Ayuda con Algoritmos para novatos con Java">2</a>)</li>
<li><a href="https://www.facebook.com/groups/java.es/permalink/419621021395153/" title="Material de Certificaci&#xF3;n Java">¿Quieres material de certificación Java?</a>... Ya se ha publicado <a href="https://www.facebook.com/groups/java.es/permalink/419627108061211/" title="Ejemplos de Certificaci&#xF3;n Java">algunos ejemplos</a>.</li>
<li>Un poco de <a href="https://www.facebook.com/groups/java.es/permalink/419740344716554/" title="Ayuda en un c&#xF3;digo de manejo de Scanner">ayuda en un código con el manejo de Scanner</a>.</li>
<li><a href="https://www.facebook.com/groups/java.es/permalink/419770264713562/" title="Ayuda con Java Server Faces">Ayuda con Java Server Faces</a>.</li>
<li><a href="https://www.facebook.com/groups/java.es/permalink/419699408053981/" title="Arquitectura para construir una aplicaci&#xF3;n web">¿Qué arquitectura seguir para construir una aplicación web?</a></li>
<li><a href="https://www.facebook.com/groups/java.es/permalink/419940944696494/" title="Pastebin, aplicaci&#xF3;n para compartir c&#xF3;digo web">Pastebin</a> una buena aplicación para compartir código fuente.</li>
<li><a href="https://www.facebook.com/groups/java.es/permalink/420002518023670/" title="Blog de Algoritmos y Cia">Algoritmos y cia</a>, un buen blog para compartir algoritmos básicos.</li>
<li>Ayuda para declarar un <a href="https://www.facebook.com/groups/java.es/permalink/419926398031282/" title="Array para insertar cualquier tipo de objeto">array dónde puedas  insertar cualquier tipo de objeto</a>.</li>
<li><a href="https://www.facebook.com/groups/java.es/permalink/420148648009057/" title="Crear ventanas personalizadas con Susbtances">Crear ventanas personalizadas con Substances</a></li>
<li>Aunque no te lo creas, <a href="https://www.facebook.com/groups/java.es/permalink/420355854655003/" title="Emulador de MSDOS">se busca un emulador de MSDOS</a>.</li>
<li>Cómo <a href="https://www.facebook.com/groups/java.es/permalink/420132684677320/" title="Separar un n&#xFA;mero de d&#xED;gitos">separar a un número en dígitos</a>.</li>
<li><a href="https://www.facebook.com/groups/java.es/permalink/420279081329347/" title="Modelos de Persistencia que no sean de consultas">Capas de persistencia de datos que no sean el típico manejo de sentencias de un modelo E/R</a>.</li>
</ul>
<h3>Javascript en Español<br/>
<a href="https://www.facebook.com/groups/javascript.es/">https://www.facebook.com/groups/javascript.es/</a><br/>
<em style="font-size: 0.7em;">84 miembros (+18)</em></h3>
<ul>
<li>Una <a href="https://www.facebook.com/groups/javascript.es/permalink/387491987956252/" title="Chuleta con ayudas para Javascript">chuleta sobre Javascript</a>, bastante interesante.</li>
</ul>
<h3>jQuery en Español<br/>
<a href="https://www.facebook.com/groups/jquery.es/">https://www.facebook.com/groups/jquery.es/</a><br/>
<em style="font-size: 0.7em;">99 miembros (+17)</em></h3>
<ul>
<li><a href="https://www.facebook.com/groups/jquery.es/permalink/230596510384339/" title="Hola Mundo con jQuery Mobile">El Hola Mundo con jQuery Mobile</a></li>
</ul>
<h3>PHP en Español<br/>
<a href="https://www.facebook.com/groups/HypertextPreprocessor.es/">https://www.facebook.com/groups/HypertextPreprocessor.es/</a><br/>
<em style="font-size: 0.7em;">89 miembros (+26)</em></h3>
<ul>
<li>Un <a href="https://www.facebook.com/groups/HypertextPreprocessor.es/permalink/340508512681153/" title="V&#xED;deo sobre la gente de Linux">vídeo sobre la gente de Linux</a>.</li>
<li>El <a href="https://www.facebook.com/groups/HypertextPreprocessor.es/permalink/341810909217580/" title="Framework Codeigniter">framework CodeIgniter</a>.</li>
<li>Ayuda a Raúl para montar el <a href="https://www.facebook.com/groups/HypertextPreprocessor.es/permalink/343588932373111/" title="Consultas para mostrar listado de libros">código que consulta una base de datos y muestra un listado de libros</a>. (y <a href="https://www.facebook.com/groups/HypertextPreprocessor.es/permalink/343710989027572/" title="Ayuda para sacar un Listado de Libros">2</a>)</li>
<li>¿<a href="https://www.facebook.com/groups/HypertextPreprocessor.es/permalink/344776318921039/" title="Configurar el PHP en Aptana">Cómo configurar el PHP en Aptana</a>?</li>
<li><a href="https://www.facebook.com/groups/HypertextPreprocessor.es/permalink/345096205555717/" title="Programaci&#xF3;n Orientada a Aspectos en PHP">Programación Orientada a Aspectos en PHP</a></li>
<li>Problemas con <a href="https://www.facebook.com/groups/HypertextPreprocessor.es/permalink/344130968985574/" title="Problemas con localhost y Drupal">el localhost y Drupal</a>.</li>
<li><a href="https://www.facebook.com/groups/HypertextPreprocessor.es/permalink/345497462182258/" title="Algunas novedades de lo que encontramos en PHP 5.4.0">Algunas novedades de lo que encontramos en PHP 5.4.0</a></li>
</ul>
<h3>Bases de Datos en Español<br/>
<a href="https://www.facebook.com/groups/basesdedatos.es/" title="Bases de Datos en Espa&#xF1;ol">https://www.facebook.com/groups/basesdedatos.es/</a><br/>
<em style="font-size: 0.7em;">100 miembros</em></h3>
<p>Una gran acogida del grupo sobre bases de datos en español con una cifra de 100 usuarios desde el inicio.</p>
<ul>
<li><a href="https://www.facebook.com/groups/basesdedatos.es/permalink/356412641088816/" title="Mejor forma de extraer datos de una BD">¿Cual es la mejor forma de extraer datos de una base de datos?</a></li>
<li>Algunas <a href="https://www.facebook.com/groups/basesdedatos.es/permalink/356382191091861/" title="Tablas para practicar con Oracle">tablas para practicar con Oracle</a> por <em><span style="text-decoration: underline;"><a href="http://lineadecodigo.com/author/pablo-ruiz/" title="Pablo Ruiz">Pablo Ruiz</a></span></em></li>
<li>Ayuda para <a href="https://www.facebook.com/groups/basesdedatos.es/permalink/358160824247331/" title="Manejar links e imagenes en una base de datos">manejar links e imágenes en una base de datos</a><em>.</em></li>
<li><a href="https://www.facebook.com/groups/basesdedatos.es/permalink/358114370918643/" title="Descargar Microsoft SQL Server">Dónde encontrar Microsft SQL Server</a><em>.</em></li>
<li>Como <a href="https://www.facebook.com/groups/basesdedatos.es/permalink/358144370915643/" title="Empezar con los modelos y las bases de datos">empezar en el mundo de los modelos y las bases de datos</a>.</li>
</ul>
<p> <strong>Similar Posts:</strong>
</p><ul class="similar-posts">
<li><a href="http://lineadecodigo.com/conversacion/nuevo-grupo-de-conversacion-sobre-bases-de-datos/" rel="bookmark" title="Mayo 7, 2012">Nuevo grupo de conversación sobre Bases de Datos</a></li>
<li><a href="http://lineadecodigo.com/conversacion/conversaciones-sobre-programacion-build-2012-01/" rel="bookmark" title="Mayo 3, 2012">Conversaciones sobre Programación. Build 2012.01</a></li>
<li><a href="http://lineadecodigo.com/conversacion/grupos-de-conversacion-sobre-programacion-en-facebook/" rel="bookmark" title="Marzo 30, 2012">Grupos de Conversación sobre Programación en Facebook</a></li>
<li><a href="http://lineadecodigo.com/javascript/jssql-un-motor-de-base-de-datos-en-javascript/" rel="bookmark" title="Octubre 14, 2010">JSSQL: Un motor de base de datos en javascript</a></li>
<li><a href="http://lineadecodigo.com/eventos/java-intro-programming-bootcamp-3rd-session/" rel="bookmark" title="Enero 13, 2007">Java Intro Programming Bootcamp – 3rd session</a></li>
</ul>
<p/>

<p><a href="http://feedads.g.doubleclick.net/~a/0F6O9Utord4F5Z35nc7lN_0o_E4/0/da"><img border="0" ismap="true" src="http://feedads.g.doubleclick.net/~a/0F6O9Utord4F5Z35nc7lN_0o_E4/0/di"/></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/0F6O9Utord4F5Z35nc7lN_0o_E4/1/da"><img border="0" ismap="true" src="http://feedads.g.doubleclick.net/~a/0F6O9Utord4F5Z35nc7lN_0o_E4/1/di"/></a></p><img height="1" src="http://feeds.feedburner.com/~r/LineaDeCodigo/~4/7qG3DOqdcp8" width="1"/></div>
    </content>
    <updated>2012-05-13T21:34:14Z</updated>
    <category term="Conversaci&#xF3;n"/>
    <category term="algoritmos"/>
    <category term="anotaciones"/>
    <category term="arquitectura"/>
    <category term="arrays"/>
    <category term="bases de datos"/>
    <category term="certificaci&#xF3;n"/>
    <category term="CodeIgniter"/>
    <category term="django"/>
    <category term="e/r"/>
    <category term="Eclipse"/>
    <category term="facebook"/>
    <category term="favicon"/>
    <category term="HTML Polyglot"/>
    <category term="input file"/>
    <category term="intercepts"/>
    <category term="Java"/>
    <category term="jquery mobile"/>
    <category term="jsf"/>
    <category term="ManageBean"/>
    <category term="m&#xE9;todo burbuja"/>
    <category term="Microsoft SLQ Server"/>
    <category term="modelos"/>
    <category term="msdos"/>
    <category term="n&#xFA;mero feliz"/>
    <category term="netbeans"/>
    <category term="Pastebin"/>
    <category term="perl"/>
    <category term="persitencia"/>
    <category term="Phyton"/>
    <category term="Scanner"/>
    <category term="serie de taylor"/>
    <category term="substances"/>
    <category term="tablas"/>
    <category term="tutoriales"/>
    <category term="video"/>
    <category term="w3c"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://lineadecodigo.com/conversacion/conversaciones-sobre-programacion-build-2012-02/</feedburner:origLink>
    <author>
      <name>Víctor Cuervo</name>
    </author>
    <source>
      <id>http://lineadecodigo.com</id>
      <link href="http://lineadecodigo.com" rel="alternate" type="text/html"/>
      <link href="http://feeds.feedburner.com/LineaDeCodigo" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>/* Programación en la red */</subtitle>
      <title>Linea de Codigo</title>
      <updated>2012-05-16T18:59:09Z</updated>
    </source>
  </entry>

  <entry xml:lang="es">
    <id>http://obm.corcoles.net/?p=7601</id>
    <link href="http://obm.corcoles.net/20120513/los-tuits-de-la-semana-45/" rel="alternate" type="text/html"/>
    <title>Los tuits de la semana (45)</title>
    <summary>Tampoco ha sido esta una semana especialmente interesante en @chechar… Los de autobombo RT @UOCsevilla En el blog -&gt; el 16/05 3a sesión de #debateSIC sobre prospectiva tecnológica con @chechar y Jesús Pérez de @vodafone_es http://territori.blogs.uoc.edu/es/2012/05/sic-prospectiva-tecnologica/ Pues sí, el Miércoles estaré en Sevilla intentando adivinar un poco el futuro… Y el contenido de mi presentación [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Tampoco ha sido esta una semana especialmente interesante en <a href="http://twitter.com/chechar">@chechar</a>…</p>
<h3>Los de autobombo</h3>
<blockquote><p>RT <a href="http://twitter.com/UOCsevilla">@UOCsevilla</a> En el blog -&gt; el 16/05 3a sesión de #debateSIC sobre prospectiva tecnológica con <a href="http://twitter.com/chechar">@chechar</a> y Jesús Pérez de <a href="http://twitter.com/vodafone_es">@vodafone_es</a> <a href="http://territori.blogs.uoc.edu/es/2012/05/sic-prospectiva-tecnologica/">http://territori.blogs.uoc.edu/es/2012/05/sic-prospectiva-tecnologica/</a></p>
</blockquote>
<p>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:</p>
<blockquote><p>lo que pienso contar la semana que viene en Sevilla en #debateSIC. se admiten propuestas de mejora ;-) <a href="http://j.mp/IGZOzy">http://j.mp/IGZOzy</a></p>
</blockquote>
<h3>Los de diseño y desarrollo web</h3>
<blockquote><p lang="en">RT <a href="http://twitter.com/kazuhito">@kazuhito</a> Check out this presentation : For a Future-Friendly Web (Mobilism 2012) <a href="http://www.slideshare.net/bradfrostweb/for-a-futurefriendly-web-mobilism-2012">http://www.slideshare.net/bradfrostweb/for-a-futurefriendly-web-mobilism-2012</a></p>
</blockquote>
<blockquote><p>presentación: <span lang="en">Polyfills For The Pragmatist <a href="http://j.mp/IMfLj5">http://j.mp/IMfLj5</a></span></p>
</blockquote>
<blockquote><p>Apañao, el artículo de Wired sobre A/B testing <a href="http://j.mp/IYHSkR" hreflang="en">http://j.mp/IYHSkR</a></p>
</blockquote>
<blockquote><p lang="en">Test Everything: Notes on the A/B Revolution <a href="http://j.mp/JeGaYI">http://j.mp/JeGaYI</a></p>
</blockquote>
<blockquote><p lang="en">RT <a href="http://twitter.com/lucascepeda">@lucascepeda</a> Principles of User Interface Design <a href="http://bit.ly/J0mfNY">http://bit.ly/J0mfNY</a> #UX #UI</p>
</blockquote>
<blockquote><p lang="en">Mozilla Shrinks Memory Use in Firefox <span lang="es">(de momento sólo en las nightly)</span> <a href="http://j.mp/IFEzsU">http://j.mp/IFEzsU</a></p>
</blockquote>
<blockquote><p>impresionante índice de las tecnologías que mueven la plataforma web: <a href="http://platform.html5.org/" hreflang="en">http://platform.html5.org/</a></p>
</blockquote>
<h3>Y uno de visualización de la información</h3>
<blockquote><p>impresionante selección de herramientas #infoviz de datavisualization.ch <a href="http://j.mp/J9JyV2" hreflang="en">http://j.mp/J9JyV2</a></p>
</blockquote>
<p>La semana que viene, más y mejor (esperemos).</p>
<p><a class="a2a_button_facebook_like addtoany_special_service"/><a class="a2a_button_twitter_tweet addtoany_special_service"/><a class="a2a_button_google_plusone addtoany_special_service"/><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fobm.corcoles.net%2F20120513%2Flos-tuits-de-la-semana-45%2F&amp;title=Los%20tuits%20de%20la%20semana%20%2845%29" id="wpa2a_4">Share/Bookmark</a></p></div>
    </content>
    <updated>2012-05-13T18:07:46Z</updated>
    <category term="CSS (y m&#xE1;s)"/>
    <category term="Enlaces"/>
    <category term="webdev"/>
    <author>
      <name>csr</name>
    </author>
    <source>
      <id>http://obm.corcoles.net</id>
      <link href="http://obm.corcoles.net/category/css-y-mas/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://obm.corcoles.net" rel="alternate" type="text/html"/>
      <subtitle>ideas al azar</subtitle>
      <title>otro blog más » CSS (y más)</title>
      <updated>2012-05-17T06:59:05Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://lineadecodigo.com/?p=4270</id>
    <link href="http://feedproxy.google.com/~r/LineaDeCodigo/~3/Cibkx2I7juA/" rel="alternate" type="text/html"/>
    <title>Detectar la rotación del dispositivo con jQuery Mobile</title>
    <summary>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. Las dos posiciones son conocidas como landscape (apaisado u horizontal) y portrait (retrato o vertical). Cuando estamos contruyendo nuestra aplicación para dispositivos móviles es interesante el conocer cuándo el [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>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.</p>
<p>Las dos posiciones son conocidas como <strong>landscape</strong> (apaisado u horizontal) y <strong>portrait</strong> (retrato o vertical).</p>
<p><img alt="" class="aligncenter size-full wp-image-4278" height="333" src="http://img.aulambra.com/wp-content/uploads/2012/05/portrait-landscape.png" title="portrait-landscape" width="539"/></p>
<p>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.</p>
<p>Es por ello que <a href="http://www.manualweb.net/tutorial-jquery-mobile/" title="Tutorial de jQuery Mobile">jQuery Mobile</a> nos proporciona un mecanismo para detectar la rotación del dispositivo. Este mecanismo es un evento, <strong>el evento orientationchange</strong>. 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 <a href="http://www.w3api.com/wiki/jQuery:Bind()" title="M&#xE9;todo bind de jQuery">.bind()</a>.</p>
<pre class="javascript" style="font-family: monospace;">$<span style="color: #009900;">(</span>window<span style="color: #009900;">)</span>.<span style="color: #660066;">bind</span><span style="color: #009900;">(</span><span style="color: #3366CC;">"orientationchange"</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">(</span>event<span style="color: #009900;">)</span><span style="color: #009900;">{</span>...<span style="color: #009900;">}</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span></pre>
<p>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 <strong>event.orientation</strong>. Los valores de event.orientation son "landscape" y "portrait".</p>
<p>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</p>
<pre class="javascript" style="font-family: monospace;">$<span style="color: #009900;">(</span>window<span style="color: #009900;">)</span>.<span style="color: #660066;">bind</span><span style="color: #009900;">(</span><span style="color: #3366CC;">"orientationchange"</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">(</span>event<span style="color: #009900;">)</span><span style="color: #009900;">{</span>
  <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">(</span>event.<span style="color: #660066;">orientation</span><span style="color: #009900;">)</span>
    $<span style="color: #009900;">(</span><span style="color: #3366CC;">"#contenido"</span><span style="color: #009900;">)</span>.<span style="color: #660066;">html</span><span style="color: #009900;">(</span><span style="color: #3366CC;">"Me han reorientado a "</span> <span style="color: #339933;">+</span> event.<span style="color: #660066;">orientation</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
<span style="color: #009900;">}</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span></pre>
<p>La capa sería:</p>
<pre class="html4strict" style="font-family: monospace;"> 
<span style="color: #009900;">&lt;<a href="http://w3api.com/wiki/HTML:DIV"><span style="color: #000000; font-weight: bold;">div</span></a> data-role<span style="color: #66cc66;">=</span><span style="color: #ff0000;">"content"</span>&gt;</span>
  Ejemplo que controla la rotaci<span style="color: #ddbb00;">&amp;oacute;</span>n del dispositivo movil.
  <span style="color: #009900;">&lt;<a href="http://w3api.com/wiki/HTML:SPAN"><span style="color: #000000; font-weight: bold;">span</span></a> <a href="http://w3api.com/wiki/HTML:id"><span style="color: #000066;">id</span></a><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"contenido"</span>&gt;</span>Inicio de la Aplicación<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://w3api.com/wiki/HTML:SPAN"><span style="color: #000000; font-weight: bold;">span</span></a>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://w3api.com/wiki/HTML:DIV"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span>
 </pre>
<p>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 <a href="http://www.w3api.com/wiki/jQuery:Ready()" title="M&#xE9;otdo ready de jQuery">.ready()</a> de <a href="http://www.manualweb.net/tutorial-jquery/" title="Tutorial de jQuery">jQuery</a>.</p>
<pre class="javascript" style="font-family: monospace;">$<span style="color: #009900;">(</span>document<span style="color: #009900;">)</span>.<span style="color: #660066;">ready</span><span style="color: #009900;">(</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span>
  $<span style="color: #009900;">(</span>window<span style="color: #009900;">)</span>.<span style="color: #660066;">bind</span><span style="color: #009900;">(</span><span style="color: #3366CC;">"orientationchange"</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">(</span>event<span style="color: #009900;">)</span><span style="color: #009900;">{</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">(</span>event.<span style="color: #660066;">orientation</span><span style="color: #009900;">)</span>
      $<span style="color: #009900;">(</span><span style="color: #3366CC;">"#contenido"</span><span style="color: #009900;">)</span>.<span style="color: #660066;">html</span><span style="color: #009900;">(</span><span style="color: #3366CC;">"Me han reorientado a "</span> <span style="color: #339933;">+</span> event.<span style="color: #660066;">orientation</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">}</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
<span style="color: #009900;">}</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span></pre>
<p>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 <a href="http://www.w3api.com/wiki/jQuery:Trigger()" title="M&#xE9;todo trigger de jQuery">.trigger()</a>.</p>
<pre class="javascript" style="font-family: monospace;">$<span style="color: #009900;">(</span>window<span style="color: #009900;">)</span>.<span style="color: #660066;">trigger</span><span style="color: #009900;">(</span><span style="color: #3366CC;">"orientationchange"</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span></pre>
<p><strong>Similar Posts:</strong>
</p><ul class="similar-posts">
<li><a href="http://lineadecodigo.com/jquery/evitar-que-se-ejecute-un-evento-con-jquery/" rel="bookmark" title="Junio 11, 2010">Evitar que se ejecute un evento con jQuery</a></li>
<li><a href="http://lineadecodigo.com/jquery/modificar-el-contenido-de-una-capa-con-jquery/" rel="bookmark" title="Mayo 27, 2010">Modificar el contenido de una capa con jQuery</a></li>
<li><a href="http://lineadecodigo.com/jquery/cargar-contenido-con-el-scroll-usando-jquery/" rel="bookmark" title="Mayo 24, 2010">Cargar contenido con el scroll usando jQuery</a></li>
<li><a href="http://lineadecodigo.com/jquery/cambios-en-un-combo-con-jquery/" rel="bookmark" title="Mayo 17, 2011">Cambios en un combo con jQuery</a></li>
<li><a href="http://lineadecodigo.com/desarrollo-movil/listas-anidadas-con-jquery-mobile/" rel="bookmark" title="Mayo 14, 2012">Listas anidadas con jQuery Mobile</a></li>
</ul>
<p/>

<p><a href="http://feedads.g.doubleclick.net/~a/CDN4OCvO_y_-A3o7Jy3K5XuD81E/0/da"><img border="0" ismap="true" src="http://feedads.g.doubleclick.net/~a/CDN4OCvO_y_-A3o7Jy3K5XuD81E/0/di"/></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/CDN4OCvO_y_-A3o7Jy3K5XuD81E/1/da"><img border="0" ismap="true" src="http://feedads.g.doubleclick.net/~a/CDN4OCvO_y_-A3o7Jy3K5XuD81E/1/di"/></a></p><img height="1" src="http://feeds.feedburner.com/~r/LineaDeCodigo/~4/Cibkx2I7juA" width="1"/></div>
    </content>
    <updated>2012-05-13T18:00:28Z</updated>
    <category term="Desarrollo M&#xF3;vil"/>
    <category term="bind"/>
    <category term="cambiar"/>
    <category term="event"/>
    <category term="event.orientation"/>
    <category term="jquery mobile"/>
    <category term="landscape"/>
    <category term="orientationchange"/>
    <category term="portrait"/>
    <category term="rotaci&#xF3;n"/>
    <category term="trigger"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://lineadecodigo.com/desarrollo-movil/detectar-la-rotacion-del-dispositivo-con-jquery-mobile/</feedburner:origLink>
    <author>
      <name>Víctor Cuervo</name>
    </author>
    <source>
      <id>http://lineadecodigo.com</id>
      <link href="http://lineadecodigo.com" rel="alternate" type="text/html"/>
      <link href="http://feeds.feedburner.com/LineaDeCodigo" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>/* Programación en la red */</subtitle>
      <title>Linea de Codigo</title>
      <updated>2012-05-16T18:59:08Z</updated>
    </source>
  </entry>
</feed>

