<?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-02-05T07:59:48Z</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=22824</id>
    <link href="http://www.maestrosdelweb.com/editorial/comunicacion-efectiva/" rel="alternate" type="text/html"/>
    <title>Es viernes: ¿Qué tan efectiva es tu comunicación?</title>
    <summary>Aunque en la actualidad la comunicación parece más fluida que nunca, debido a los múltiples canales a nuestra disposición, el reto de comunicar nuestras ideas adecuadamente es grande. Tanto en asuntos personales como en el trabajo, los medios que utilizamos a través de Internet en ocasiones son los mismos pero no podemos expresarnos igual. Perdemos [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Aunque en la actualidad la comunicación parece más fluida que nunca, debido a los múltiples canales a nuestra disposición, <strong>el reto de comunicar nuestras ideas adecuadamente es grande</strong>. Tanto en asuntos personales como en el trabajo, los medios que utilizamos a través de Internet en ocasiones son los mismos pero no podemos expresarnos igual. Perdemos muchas horas de nuestro tiempo aclarando ideas, resolviendo dudas sobre el <strong>-tono-</strong> del mensaje o realizando llamadas telefónicas para resolver malos entendidos. </p>
<p><a href="http://www.flickr.com/photos/falh/5333649914/"><img alt="&#xBF;Qu&#xE9; tan efectiva es tu comunicaci&#xF3;n?" src="http://www.maestrosdelweb.com/images/2012/02/work-space.png"/></a></p>
<p>En un mundo tan globalizado las dinámicas de trabajo han <a href="http://www.maestrosdelweb.com/editorial/nuevos-servicios-y-estructuras-de-comunicacion-%C2%BFcomo-te-comunicas-en-internet/">cambiado nuestra forma de comunicarnos</a>. Utilizamos servicios y herramientas que buscan agilizar la producción y obtener resultados. Pero, en ocasiones existe un grave ruido en la comunicación que bloquea nuestra productividad. Trabajar a distancia permite darse cuenta del problema en la comunicación efectiva, porque no sólo te enfrentas a la mala redacción de mensajes, la falta de estructura en las ideas, sino también a diferencias culturales que pueden ser muy significativas al momento de comunicarnos.</p>
<h3>Una comunicación eficaz </h3>
<p>El problema no son los medios que utilizamos, somos nosotros que, con tanta información y muchas cosas por hacer, no logramos estructurar nuestro pensamiento al momento de comunicarnos. <a href="http://www.maestrosdelweb.com/editorial/es-viernes-responder-correos-efectivamente/">Escribimos correos de forma automática</a>, respondemos dudas, pero has pensado <strong>¿qué tan efectivos son tus mensajes?</strong> ¿qué tan eficaz es tu manera de expresarte en un correo? ¿cuántos párrafos escribes con la misma idea y no concretas? ¿lees detenidamente los correos antes de responder? ¿resuelves las preguntas de tu mensaje?</p>
<ul>
<li><strong>La comunicación del freelance: </strong>Una persona que trabaja de manera independiente y a distancia, necesita de una comunicación eficaz con los clientes. Debido a que no tiene una oficina para atender a sus clientes y tampoco un departamento de quejas, la confianza del cliente estará depositada completamente en el individuo. El freelance debe dedicar tiempo a comunicarse periodicamente con el cliente durante el desarrollo de su proyecto, su prioridad será resolver a tiempo sus dudas y comunicar sus avances para que el cliente vea que hay resultados.</li>
<li><strong>Responde entre líneas: </strong> En lo personal, me gusta responder entre líneas y de manera puntual. Es decir, cuando hay dudas en el mensaje, procuro responder por cada duda o cada párrafo según la idea. Esto me permite revisar que no se me escapa nada y me ahorro tiempo en redactar otro correo en caso de no haber respondido adecuadamente. </li>
<li><strong>No más de 500 palabras:</strong> Por la cantidad de correos que una persona recibe al día, difícilmente leerá de manera detenida un mensaje que supera las 500 palabras ¿por qué? simple: es abrumador. Por eso, procura que tus mensajes sean cortos, estructurados en párrafos, que el asunto del mensaje sea descriptivo y escribir los correos con keywords para que sea fácil de encontrar.</li>
<li><strong>Visualización de las ideas:</strong> Si tu mensaje busca comunicarle al cliente los avances, usa imágenes incluso que pueda visualizarlo en línea, esta comunicación es más efectiva que redactar un texto sobre los avances. Recuerda que uno prefiere ver el vídeo o un ejemplo sobre la idea y no leer o escuchar sobre la idea.</li>
<li><strong>Desarrollo de puntos:</strong> Cada idea puede ser un punto a desarrollar, practica el uso de la enumeración o de las viñetas. Esto ayuda mucho en la estructura de tu mensaje, además le permite a tu receptor señalar que tiene dudas en un punto en específico en lugar de escribir de nuevo toda la idea y tratar de explicarlo. </li>
<li><strong>Reportes:</strong> Si tu cliente se comunica poco o se tarda en responder tus mensajes, procura crear una dinámica de reportes periódicos y envíalos a tu cliente aunque no responda. Esto te ayudará a tí en la documentación de los avances y también a tu cliente que aunque no responda rápidamente, sabe que estas avanzando y todo está en su inbox.</li>
<li><strong>Estados de cuenta:</strong> Cuando eres freelance no tienes garantizado un pago el mismo día y cada mes, en ocasiones debes pedir que te paguen o que se cumpla con tu contrato de servicios. Si tu proyecto es de varios meses y se te paga cada cierto tiempo, no temas en enviar tu estado de cuenta y pedir el cobro. Tengo varias experiencias de freelance que no dan seguimiento a sus pagos y tampoco facilitan al cliente las múltiples formas en que puede hacerlo.</li>
<li><strong>Seguimiento: </strong>Este negocio es de seguimiento, buena comunicación y dedicación. Procura darle seguimiento a tus clientes, las propuestas y busca oportunidades a través de una comunicación eficaz. Una conversación o mensaje cordial en ocasiones puede ser un puerta de oportunidades para conseguir nuevos proyectos. <strong>Porque cada conversación es una oportunidad</strong>.</li>
</ul>
<p>Tengo varios años en el medio <a href="http://www.maestrosdelweb.com/editorial/es-viernes-los-retos-del-trabajo-en-equipo-a-distancia/">trabajando con freelance a distancia</a>, con diferentes nacionalidades y con objetivos en común. Siempre he notado el tema de la comunicación y tantos problemas para concretar proyectos debido a la comunicación poco eficaz que logramos establecer. Si trabajas a distancia, recuerda que es importante comunicarse adecuadamente, porque de ello dependen los buenos resultados y una relación saludable con el cliente. Feliz fin de semana. Enjoy!</p>
<hr/><p style="height: 64px;"><img alt="Stephanie Falla Aroche" class="avatar" src="http://www.maestrosdelweb.com/images/autores/128.png" style="float: left; padding: 0 5px;"/> <strong>Stephanie Falla Aroche</strong> para <a href="http://www.maestrosdelweb.com">Maestros del Web</a>.<br/><a href="http://www.maestrosdelweb.com/editorial/comunicacion-efectiva/#respond">Agrega tu comentario</a> | <a href="http://www.maestrosdelweb.com/editorial/comunicacion-efectiva/">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-02-03T16:01:40Z</updated>
    <category term="Editorial"/>
    <category term="Productividad"/>
    <category term="comunicaci&#xF3;n efectiva"/>
    <category term="comunicacion"/>
    <category term="correo efectivo"/>
    <category term="es viernes!"/>
    <category term="freelance"/>
    <category term="trabajo a distancia"/>
    <author>
      <name>Stephanie Falla Aroche</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-02-03T19:59:32Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.maestrosdelweb.com/?p=22769</id>
    <link href="http://www.maestrosdelweb.com/editorial/ipo-facebook/" rel="alternate" type="text/html"/>
    <title>El icónico IPO de facebook y cómo otras importantes empresas llegaron a la bolsa</title>
    <summary>Gracias a la reciente decisión que tomó Facebook llenando ayer por fin los papeles para su IPO, el mundo de las grandes industrias en el mercado de valores vuelve a girar la cabeza con fuerza hacia las empresas de tecnología. Desde hace un tiempo estaba la expectativa y ahora que es inminente todos están hablando de [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Gracias a la reciente decisión que tomó <a href="http://dealbook.nytimes.com/2012/02/01/facebook-files-for-an-i-p-o/?emc=na">Facebook llenando ayer por fin los papeles para su IPO</a>, el mundo de las grandes industrias en el mercado de valores vuelve a girar la cabeza con fuerza hacia las empresas de tecnología. Desde hace un tiempo <a href="http://www.streetinsider.com/IPOs/Is+Facebooks+Plan+for+2012+IPO+the+Best+Idea+Ever%3F/6569530.html">estaba la expectativa</a> y ahora que es inminente todos están hablando de ello (<a href="https://www.google.com/search?ix=ieb&amp;sourceid=chrome&amp;ie=UTF-8&amp;q=facebook+ipo#q=facebook+ipo&amp;hl=en&amp;prmd=imvnsul&amp;source=lnms&amp;tbm=nws&amp;psj=1&amp;ei=w9ApT_fvK8e62wXtu9zWAg&amp;sa=X&amp;oi=mode_link&amp;ct=mode&amp;cd=5&amp;ved=0CBoQ_AUoBA&amp;bav=on.2,or.r_gc.r_pw.r_cp.,cf.osb&amp;fp=d91b70ca7a7fc89a&amp;biw=1366&amp;bih=643">13.300 resultados en Google News lo confirman</a>).</p>
<div class="wp-caption aligncenter" id="attachment_22771" style="width: 590px;"><a href="http://www.maestrosdelweb.com/images/2012/02/WALL-ST..jpg"><img alt="" class="size-medium wp-image-22771" height="385" src="http://www.maestrosdelweb.com/images/2012/02/WALL-ST.-450x301.jpg" title="Foto de Wall St. por Antonio Morales en Flickr" width="580"/></a><p class="wp-caption-text">Foto de Wall St. por Antonio Morales en Flickr</p></div>
<p>Pero, ¿Por qué tanta conmoción y expectativa? ¿Cuál es la importancia real de los IPO para las empresas tech? ¿Cómo afectan estas empresas súper valoradas al mercado de valores y qué efecto tiene para ellas volverse públicas?</p>
<h3>Antes que nada, ¿Qué es un IPO?</h3>
<p>El <strong>IPO</strong> (<a href="http://en.wikipedia.org/wiki/Initial_public_offering">Initial Public Offering / Public Market Launch</a>) es el momento -hablamos de una fecha y hora específicas- en el que aparecen por primera vez en el mercado las acciones de una compañía para que las compre el público general. <strong>Es el lanzamiento oficial de esa compañía en la bolsa de valores</strong>.</p>
<p>El revuelo en medios sobre el IPO de Facebook podría dar la impresión de que este tema tiene que ver sólo con las empresas de tecnología o que trabajan en Internet. Pero es todo lo contrario. Hasta la empresa más “análoga” y menos conocida como marca puede tener un IPO.</p>
<p>De hecho, si revisamos el <a href="http://www.renaissancecapital.com/IPOHome/Rankings/biggest.aspx">ranking de los 25 IPO más exitosos hasta hoy</a>, veremos que en la lista apenas aparecen empresas de tecnología y no hay ninguna de Internet. Entonces, aunque Facebook cueste 50 mil millones de dólares y su marca esté en boca de todos eso no le garantiza que su IPO será un éxito en el mercado.</p>
<h3>¿Por qué es importante para una empresa?</h3>
<p>El principal objetivo de un IPO es obtener capital de expansión y cotizarse en el mercado, esa es la parte de la cuestión que queda clara en menos de <a href="http://youtu.be/t5DG0Ut5jS8" target="_blank">dos minutos de vídeo</a>:</p>
<p>&lt;iframe allowfullscreen="allowfullscreen" frameborder="0" height="385" src="http://www.youtube.com/embed/t5DG0Ut5jS8" width="600"&gt;&lt;/iframe&gt;</p>
<p>Los IPO son un aspecto crucial de la economía mundial, especialmente en países como Estados Unidos donde la expectativa de éxito a futuro es como un pequeño motor que <a href="http://money.howstuffworks.com/10-biggest-ipo-flops.htm">puede actuar para mantener a flote o terminar hundiendo a las empresas</a>.</p>
<p>Además, la organización de un IPO no es cosa fácil. Requiere tiempo, papeleo, asesoría y una considerable inversión de mercadeo y estrategia comercial. Al final es una “presentación en sociedad” que puede generar exposición como marca y posibles alianzas además del crecimiento económico y la expansión comercial. Por eso la función o consecuencias del IPO pueden ser diferentes en cada caso.</p>
<h3>El impacto de los IPO en las empresas de tecnología</h3>
<p>En el mundo del emprendimiento estadounidense la cúspide de una empresa tecnológica es su salida al mercado de valores. Pero suele llamar mucho la atención de los medios el momento en que se  <a href="http://www.maestrosdelweb.com/actualidad/1799/"> inicia el papeleo correspondiente</a> para entrar a venderse en Wall Street.</p>
<p>Esto es porque para entrar en la bolsa, una empresa tiene que abrir sus prácticas contables, las cifras de ventas y planes de marketing para todo el que quiera verlos. Es más o menos como funcionan las patentes: la información se expone y al mismo tiempo se protege.</p>
<p>El primer paso concreto, al menos para las empresas en Estados Unidos, es llenar diferentes documentos exigidos por el <a href="http://en.wikipedia.org/wiki/U.S._Securities_and_Exchange_Commission">SEC</a>: la Agencia Federal que regula la industria de los valores en ese país. Todo esto se acumula en un sistema de información específicamente diseñado para el análisis financiero de empresas que entrarán o están en la bolsa llamado <a href="http://en.wikipedia.org/wiki/EDGAR">EDGAR</a> y que puede ser consultado por cualquier persona desde Internet.</p>
<p>Uno de los documentos más sobresalientes de esa lista es el <a href="http://en.wikipedia.org/wiki/Form_S-1">Formulario S-1</a>, que agrupa una gran cantidad de datos financieros sobre la empresa: cuánto vale, qué crecimiento ha tenido desde su creación, quiénes y en qué participación son dueños de la empresa, cuántas ganancias genera, cuántos empleados tiene y cuánto ganan etc. Si vemos por ejemplo <a href="http://sec.gov/Archives/edgar/data/1271024/000119312511016022/ds1.htm">el S-1 de LinkedIn</a> y <a href="http://sec.gov/Archives/edgar/data/1326801/000119312512034517/d287954ds1.htm">el S-1 de Facebook</a>, nos daremos cuenta de que es bastante información revelada.</p>
<p>La entrada de una empresa como Facebook al mercado de valores donde están las grandes industrias tradicionales, desde Coca-Cola hasta General Motors y la BP, es una cosa muy atractiva para los medios y para los expertos del negocio bursátil. Que las startups se revelen como gigantes comerciales hace que cada vez sea más claro el papel de internet en la economía mundial.</p>
<div class="wp-caption aligncenter" id="attachment_22770" style="width: 590px;"><a href="http://www.maestrosdelweb.com/images/2012/02/NASDAQ.jpg"><img alt="" class="size-medium wp-image-22770" height="385" src="http://www.maestrosdelweb.com/images/2012/02/NASDAQ-450x299.jpg" title="Foto del mercado de acciones m&#xE1;s grande en US: NASDAQ. Por Julien Gong en Flickr" width="580"/></a><p class="wp-caption-text">Foto del mercado de acciones más grande en US: NASDAQ. Por Julien Gong en Flickr</p></div>
<h3>Los IPOs más conocidos en nuestro ambiente tecnológico</h3>
<p>Un repaso rápido con algunos datos de los IPO que han marcado precedentes en el mercado accionario de empresas tecnológicas:</p>
<ul>
<li><strong>Apple (diciembre 12, 1980) – <a href="http://www.nasdaq.com/symbol/aapl">AAPL</a> (NASDAQ)</strong>
<p>Cuando Apple salió al mercado de acciones generó más capital que ningún otro IPO desde 1956, fecha en que salieron al mercado las acciones de Ford. Cada acción inició con un valor de US $14 y cerró ese mismo día en US $29, con lo que la compañía quedó valorada en US $1.778 billones.</p>
<p>En 2006, luego de que Steve Jobs anunciara <a href="http://www.apple.com/pr/library/2005/06/06Apple-to-Use-Intel-Microprocessors-Beginning-in-2006.html">los primeros computadores de Apple con procesador Intel</a>, las acciones de Apple alcanzaron los US $85 y <a href="http://www.macobserver.com/stockwatch/2006/01/16.1.shtml">superaron la capitalización del mercado de Dell</a>.</p></li>
<li><strong>Microsoft (marzo 13, 1986) - <a href="http://www.nasdaq.com/symbol/msft">MSFT</a> (NASDAQ)</strong>
<p>Abrió en US $21 por acción, y cerró el día en US $27.75. El punto más alto de las acciones llegó en 1999 con un precio por acción de US$ 119. Pero más allá del comportamiento de las acciones de esta compañía, que ha sido más bien estable y creciente, son las prácticas de negocio que según muchos <a href="http://readon.ly/4986">“aniquilan a la competencia”</a> lo que ha llamado la atención mediática a lo largo de su historia.</p></li>
<li><strong>Yahoo (Abril 12, 1996) – <a href="http://www.nasdaq.com/symbol/yhoo">YHOO</a> (NASDAQ)</strong>
<p>La muy anticipada entrada a Wall Street comenzó con US $24 por acción y llegó a un tope de US $43 antes de cerrar el primer día con US $33. El 3 de enero del 2000 llegó al precio más alto: US $118.75, pero luego con el <a href="http://es.wikipedia.org/wiki/Burbuja_punto_com">estallido de la burbuja.com</a> el precio de la acción llegó a caer hasta US $4.05 el 26 de septiembre de 2001. Hoy la acción de Yahoo cuesta casi US $16.</p></li>
<li><strong>Google (Agosto 19, 2004) – <a href="http://www.nasdaq.com/symbol/goog">GOOG</a> (NASDAQ)</strong>
<p>Años después de prometer un ingreso a la bolsa, el IPO de Google abrió en US $85 por acción y cerró en US $100.34, capitalizando a la compañía en un total de acciones en el mercado de US $23 billones de dólares. La gestión a raíz de este IPO fue tan grandiosa que en halloween de 2007 llegaron al tope de <a href="http://weblogs.baltimoresun.com/business/hancock/blog/2007/10/google_shares_hit_700.html">US $700 por acción</a>.</p>
<p>Luego de un <a href="http://en.wikipedia.org/wiki/History_of_Google">largo y ascendente camino bursátil</a> lleno de adquisiciones, alianzas e innovación, la acción de Google cuesta más de US $580.</p></li>
<li><strong>LinkedIn (mayo 19, 2011) – <a href="http://www.nyse.com/about/listed/lcddata.html?ticker=LNKD">LNKD</a> (NYSE)</strong>
<p>Es <a href="http://www.reuters.com/article/2011/05/19/us-linkedin-ipo-risks-idUSTRE74H0TL20110519">la primera gran red social de internet en el mercado de valores</a>, fue el mayor IPO de la industria tecnológica después del de Google en 2004. Abrieron en US $45 por acción y terminaron el día en US $94.25. Podría considerarse que el IPO de LinkedIn <a href="http://technology.inc.com/2011/05/24/what-will-facebook-get-out-of-linkedins-ipo/">es el precedente que más impulsó la decisión de Facebook</a> de lanzar su propio IPO y llamó la atención de los medios sobre otros posibles IPO en el mundo de las empresas tech para el 2012.</p></li>
<li><strong>Groupon (noviembre 4, 2011) – <a href="http://www.nasdaq.com/symbol/grpn">GRPN</a> (NASDAQ)</strong>
<p>En lo que fue una <a href="http://www.suntimes.com/business/roeder/5758186-452/the-deal-groupon-ipo-has-gall.html">más bien lenta, replanteada varias veces y no tan exitosa</a> entrada al mercado de valores, el IPO de Groupon dejó claro lo riesgosas que pueden resultar las inversiones en empresas de “crecimiento nunca antes visto”. Abrió con US $16 – $18 por acción, llegó a un tope de US $29.52 y cerró en US $20. Sin embargo para el 22 de noviembre de 2011 ya estaba en US $17.3 por acción y <a href="http://techcrunch.com/2011/11/23/non-news-three-weeks-later-groupons-stock-plummets-below-ipo-price/">con apariencia de seguir bajando</a>.</p></li>
<li><strong>Zynga (Diciembre 16, 2011) – <a href="http://www.nasdaq.com/symbol/znga">ZNGA</a> (NASDAQ)</strong>
<p>Nombrada como la segunda startup más valiosa del mundo para el 2011 después de Facebook, Zynga entró al mercado de valores en US $10 por acción, subió a US $11.50 pero cerró en US $9.50. Para ser <a href="http://www.reuters.com/article/2011/11/30/us-zynga-ipo-idUSTRE7AT2FJ20111130">el debut prometedor que se esperaba</a>, en ese momento no llenó con creces las expectativas. La acción de Zynga hoy está en US $10.60. Eso podría cambiar pronto, pues con los documentos presentados por Facebook para el inminente IPO se sabe que Zynga es el 12% de su negocio.</p></li>
<li><strong>Facebook (Febrero 1, 2012) – FB (?)</strong>
<p>El que podría ser el IPO más grande de la historia de las empresas tech ya está listo en documentaciones en EDGAR desde ayer (ya mencionamos <a href="http://sec.gov/Archives/edgar/data/1326801/000119312512034517/d287954ds1.htm">su formulario S-1</a>) y así todos <a href="http://articles.businessinsider.com/2012-02-01/tech/31011924_1_zynga-ad-revenue-mark-zuckerberg">sus datos financieros están expuestos al escrutinio</a> de quienes comprarán las acciones o evalúan el poderío de su capital. La incertidumbre sobre qué pasará el día en que se estrenen en Wall Street está en la mente de todos, pero sin duda será algo sin precedentes</p></li>
</ul>
<hr/><p style="height: 64px;"><img alt="Daniela Jaramillo" class="avatar avatar-64 photo" height="64" src="http://0.gravatar.com/avatar/a7c0b0d1b3528ef1791c0be0a31823a5?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>Daniela Jaramillo</strong> para <a href="http://www.maestrosdelweb.com">Maestros del Web</a>.<br/><a href="http://www.maestrosdelweb.com/editorial/ipo-facebook/#respond">Agrega tu comentario</a> | <a href="http://www.maestrosdelweb.com/editorial/ipo-facebook/">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-02-02T16:26:13Z</updated>
    <category term="Editorial"/>
    <category term="Apple IPO"/>
    <category term="EDGAR"/>
    <category term="Facebook IPO"/>
    <category term="Formulario S-1"/>
    <category term="Google IPO"/>
    <category term="Groupon IPO"/>
    <category term="Initial Public Offering"/>
    <category term="IPO"/>
    <category term="LinkedIn IPO"/>
    <category term="Mercado burs&#xE1;til"/>
    <category term="Microsoft IPO"/>
    <category term="NASDAQ"/>
    <category term="SEC"/>
    <category term="Wall Street"/>
    <category term="Zynga IPO"/>
    <author>
      <name>Daniela Jaramillo</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-02-03T19:59:33Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-27752126.post-4075930113289782465</id>
    <link href="http://www.variablenotfound.com/feeds/4075930113289782465/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://www.blogger.com/comment.g?blogID=27752126&amp;postID=4075930113289782465" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/27752126/posts/default/4075930113289782465?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/27752126/posts/default/4075930113289782465?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://feedproxy.google.com/~r/vnf/~3/Wu39XxmnfDk/validacion-manual-con-data-annotations.html" rel="alternate" type="text/html"/>
    <title>Validación manual con Data Annotations</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><img align="right" alt="Microsoft .NET" border="0" height="50" src="http://lh5.ggpht.com/-y33LGS5zgnE/Tv8yaqnLUTI/AAAAAAAABts/TPejSo7Odpo/image%25255B2%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="Microsoft .NET" width="199"/> Habitualmente asociamos la validación de entidades basadas en anotaciones de datos, o <em>data annotations</em>, a tecnologías como <em>dynamic data</em> o ASP.NET MVC, y estamos acostumbrados a que la validación se realice de forma automática, pero nada más lejos de la realidad. <strong>Podemos utilizar <em>data annotations</em> desde cualquier tipo de aplicación .NET</strong> (Webforms, Winforms, WPF, Consola, o cualquier otra en la que tengamos disponible <span style="font-family: Courier New;">System.ComponentModel.DataAnnotations</span>), puesto que existe la posibilidad de invocar manualmente los procedimientos de validación.<br/>
<br/>
En este post vamos a ver <strong>cómo realizar validaciones basadas en anotaciones de forma manual</strong>, lo cual puede tener su utilidad en gran número de escenarios.<br/>
<a name="more"/><br/>
Resumidamente, esta técnica consiste en decorar cada una de las propiedades con una serie de atributos llamados anotaciones (definidos en <code>System.ComponentModel.DataAnnotations</code>)  que indican las comprobaciones que se aplicarán a la entidad para determinar su validez. La siguiente porción de código muestra una entidad en la que se están indicando estas restricciones en cada una de sus propiedades:<br/>
<pre style="background-color: transparent; overflow: visible; padding: 0px;"><span style="font-family: Consolas;"><span style="color: blue;"><span style="font-size: 10pt;">public</span></span><span style="font-size: 10pt;"> <span style="color: blue;">class</span> <span style="color: #2b91af;">Friend</span>
{
    [<span style="color: #2b91af;">Required</span>, <span style="color: #2b91af;">StringLength(<span style="color: black;">50</span>)</span>]
    <span style="color: blue;">public</span> <span style="color: blue;">string</span> Name { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }
 
    [<span style="color: #2b91af;">Range</span>(0, 120)]
    <span style="color: blue;">public</span> <span style="color: blue;">int</span> Age { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }
}</span></span></pre>
En el citado espacio de nombres encontramos <strong>atributos que cubren la mayoría de casos</strong> frecuentes: <code>Required</code> (propiedad obligatoria), <code>RegularExpression</code> (validar contra una expresión regular), <code>StringLength (</code>longitud máxima y mínima de un texto), <code>Range</code> (rangos de valores permitidos), y <code>CustomValidation</code> (validaciones personalizadas). Además, este conjunto de anotaciones puede ser extendido muy fácilmente creando atributos que hereden de <code>ValidationAttribute</code>, disponible también en <code>System.ComponentModel.DataAnnotations</code>.<br/>
<h3>






Validación manual de objetos</h3>
De lo más sencillo: la clase estática <code>Validator</code>, disponible también en el <em>namespace</em> <code>System.ComponentModel.DataAnnotations</code>, ofrece métodos que permiten realizar las comprobaciones de forma directa sobre objetos o propiedades concretas.<br/>
<br/>
En este caso, dado que lo que nos interesa es validar las entidades completas, utilizaremos el método <code>Validator.TryValidateObject()</code>, al que suministraremos:<br/>
<ul>
<li>el objeto a validar, </li>
<li>un contexto de validación (que debemos crear previamente), </li>
<li>una colección de <code>ValidationResult</code> en la que almacenaremos los errores, </li>
<li>y, por último, si deseamos validar todas las propiedades (indicando <code>true</code>), o por el contrario preferimos parar el proceso en cuanto se detecte el primer error (<code>false</code>). </li>
</ul>
La implementación de la validación podría ser como la que la sigue:<br/>
<pre style="background-color: transparent; overflow: visible; padding: 0px;"><span style="font-family: Consolas;"><span style="font-size: 10pt;">    <span style="color: blue;">private</span> <span style="color: #2b91af;">IEnumerable</span>&lt;<span style="color: #2b91af;">ValidationResult</span>&gt; getValidationErrors(<span style="color: blue;">object</span> obj)
    {
        <span style="color: blue;">var</span> validationResults = <span style="color: blue;">new</span> <span style="color: #2b91af;">List</span>&lt;<span style="color: #2b91af;">ValidationResult</span>&gt;();
        <span style="color: blue;">var</span> context = <span style="color: blue;">new</span> <span style="color: #2b91af;">ValidationContext</span>(obj, <span style="color: blue;">null</span>, <span style="color: blue;">null</span>);
        <span style="color: #2b91af;">Validator</span>.TryValidateObject(obj, context, validationResults, <span style="color: blue;">true</span>);
        <span style="color: blue;">return</span> validationResults;
    }</span></span></pre>
El método retornará una lista de errores vacía cuando el objeto haya superado las restricciones impuestas, o llena con los objetos <code>ValidationResult</code> que describen los problemas encontrados.<br/>
<br/>
Y podríamos utilizarlo desde una aplicación de consola de la siguiente forma:<br/>
<pre style="background-color: transparent; overflow: visible; padding: 0px;"><span style="font-family: Consolas;"><span style="font-size: 10pt;">    <span style="color: blue;">var</span> friend = <span style="color: blue;">new</span> <span style="color: #2b91af;">Friend</span> { Age = -1, Name = <span style="color: #a31515;">""</span> };
    <span style="color: blue;">var</span> errors = getValidationErrors(friend);
    <span style="color: blue;">foreach</span> (<span style="color: blue;">var</span> error <span style="color: blue;">in</span> errors)
    {
        <span style="color: #2b91af;">Console</span>.WriteLine(error.ErrorMessage);
    }</span></span></pre>
<div style="background-color: black; color: white; font-family: consolas; font-size: 10pt; margin: 10px auto 10px 30px; padding: 3px;">
The Name field is required. <br/>
<br/>
The field Age must be between 0 and 120. </div>
Los mensajes de validación que aparecen pueden ser definidos en la misma anotación, por ejemplo así:<br/>
<pre style="background-color: transparent; overflow: visible; padding: 0px;"><span style="font-family: Consolas;"><span style="font-size: 10pt;">    [<span style="color: #2b91af;">Required</span>(ErrorMessage=<span style="color: #a31515;">"Please, enter the name"</span>)]
    <span style="color: blue;">public</span> <span style="color: blue;">string</span> Name { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</span></span></pre>
<h3>






¿Y si los metadatos están en otra clase?</h3>
<strong>Hay escenarios en los que no tenemos acceso a la clase</strong> en la que deseamos introducir las anotaciones. Un ejemplo claro lo encontramos cuando nos interesa especificar las restricciones en una clase generada por un proceso automático, como el diseñador de EDM de Entity framework; cualquier cambio realizado sobre el código generado será sobrescrito sin piedad al modificar el modelo.<br/>
<br/>
En estos casos, <strong>es una práctica frecuente definir los metadatos en clases “buddy”</strong>, que son copias exactas de la entidad a anotar, pero que serán utilizadas únicamente como contenedores de anotaciones. Las clases buddy se vinculan con la entidad original utilizando el atributo <code><a href="http://msdn.microsoft.com/es-es/library/system.componentmodel.dataannotations.metadatatypeattribute.aspx">MetadataType</a></code> de la siguiente forma:<br/>
<pre style="background-color: transparent; overflow: visible; padding: 0px;"><span style="font-family: Consolas;"><span style="font-size: 10pt;">    <span style="color: green;">// This class has been generated by a tool</span>
    <span style="color: blue;">public</span> <span style="color: blue;">partial</span> <span style="color: blue;">class</span> <span style="color: #2b91af;">Friend</span>
    {
        <span style="color: blue;">public</span> <span style="color: blue;">string</span> Name { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }
        <span style="color: blue;">public</span> <span style="color: blue;">int</span> Age { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }
    }
 
    <span style="color: green;">// Let's associate the buddy class FriendMetadata</span>
    <span style="background-color: yellow;">[<span style="color: #2b91af;">MetadataType</span>(<span style="color: blue;">typeof</span>(<span style="color: #2b91af;">FriendMetadata</span>))]</span>
    <span style="color: blue;">public</span> <span style="color: blue;">partial</span> <span style="color: blue;">class</span> <span style="color: #2b91af;">Friend</span>
    {
        
    }
 
    <span style="color: green;">// Buddy class</span>
    <span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: #2b91af;">FriendMetadata</span>
    {
        [<span style="color: #2b91af;">Required</span>]
        <span style="color: blue;">public</span> <span style="color: blue;">string</span> Name { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }
 
        [<span style="color: #2b91af;">Range</span>(0, 120)]
        <span style="color: blue;">public</span> <span style="color: blue;">int</span> Age { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }
    }</span></span></pre>
Observad que para poder utilizar esta técnica es necesario que la entidad a la que queremos añadir anotaciones sea creada como parcial. En caso contrario no podríamos indicarle con <code>MetadataType</code> dónde se encuentran definidos sus atributos de validación.<br/>
<br/>
Pues bien, resulta que algunos marcos de trabajo (como ASP.NET MVC) están preparados para detectar este escenario y obtener de forma automática los metadatos desde la clase buddy, pero <strong>si estamos realizando la validación de forma manual el atributo <code>[MetadataType]</code> no será tenido en cuenta</strong>. <br/>
<br/>
Por tanto, debemos ser nosotros los que indiquemos expresamente dónde se encuentran los metadatos, para lo que, afortunadamente, contamos con la ayuda de <a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.typedescriptor.aspx"><code/></a><a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.typedescriptor.aspx">TypeDescriptor</a>  (definida en <code>System.ComponentModel</code>), desde donde podemos indicar el origen de los metadatos de clases simplemente registrando el proveedor desde el cual pueden ser obtenidos.<br/>
<br/>
El procedimiento para conseguirlo es bastante simple: creamos un proveedor de descripciones basado en metadatos utilizando la clase <a href="http://msdn.microsoft.com/es-es/library/system.componentmodel.dataannotations.associatedmetadatatypetypedescriptionprovider.aspx">AssociatedMetadataTypeTypeDescriptionProvider</a><code/> (uuf con el nombrecito ;-)) en el que vinculamos la clase “original” con la que contiene los metadatos (la clase buddy), y a continuación añadimos dicho proveedor a la primera.<br/>
<br/>
Por ejemplo, para hacer que las anotaciones de la clase <code>Friend</code> se obtengan desde el tipo <code>FriendMetadata</code> podríamos incluir el siguiente código de inicialización:<br/>
<pre style="background-color: transparent; overflow: visible; padding: 0px;"><span style="font-family: Consolas;"><span style="color: blue;"><span style="font-size: 10pt;">var</span></span><span style="font-size: 10pt;"> descriptionProvider = <span style="color: blue;">new</span> <span style="color: #2b91af;">AssociatedMetadataTypeTypeDescriptionProvider</span>(
     <span style="color: blue;">typeof</span>(<span style="color: #2b91af;">Friend</span>), 
     <span style="color: blue;">typeof</span>(<span style="color: #2b91af;">FriendMetadata</span>)
                          );
<span style="color: #2b91af;">TypeDescriptor</span>.AddProviderTransparent(descriptionProvider, <span style="color: blue;">typeof</span>(<span style="color: #2b91af;">Friend</span>));</span></span></pre>
Otra posibilidad más genérica sería implementarlo como se muestra a continuación, donde buscamos en todo el ensamblado actual clases decoradas con el atributo <code>MetadataType</code>, registrando el proveedor de metadatos indicado en dicho atributo de forma automática:<br/>
<pre style="background-color: transparent; overflow: visible; padding: 0px;"><span style="font-family: Consolas;"><span style="color: blue;"><span style="font-size: 10pt;">private</span></span><span style="font-size: 10pt;"> <span style="color: blue;">static</span> <span style="color: blue;">void</span> registerBuddyClasses()
{
    <span style="color: blue;">var</span> buddyAssociations = 
        <span style="color: blue;">from</span> t <span style="color: blue;">in</span> <span style="color: #2b91af;">Assembly</span>.GetExecutingAssembly().GetTypes()
        <span style="color: blue;">let</span> md = t.GetCustomAttributes(<span style="color: blue;">typeof</span>(<span style="color: #2b91af;">MetadataTypeAttribute</span>), <span style="color: blue;">false</span>)
                .FirstOrDefault() <span style="color: blue;">as</span> <span style="color: #2b91af;">MetadataTypeAttribute</span>
        <span style="color: blue;">where</span> md != <span style="color: blue;">null</span>
        <span style="color: blue;">select</span> <span style="color: blue;">new</span> { Type = t, Buddy = md.MetadataClassType };
 
    <span style="color: blue;">foreach</span> (<span style="color: blue;">var</span> association <span style="color: blue;">in</span> buddyAssociations)
    {
        <span style="color: blue;">var</span> descriptionProvider = 
            <span style="color: blue;">new</span> <span style="color: #2b91af;">AssociatedMetadataTypeTypeDescriptionProvider</span>(
                association.Type, association.Buddy
            );
        <span style="color: #2b91af;">TypeDescriptor</span>.AddProviderTransparent(descriptionProvider, association.Type);
    }
}</span></span></pre>
De esta forma, bastará con invocar el método <code>registerBuddyClasses()</code> durante la inicialización de la aplicación para que las clases buddy sean registradas de forma automática.<br/>
<br/>
Pero más interesante es, sin duda, que <strong>podríamos implementar nuevas fórmulas para indicar dónde se encuentran los metadatos</strong> de una clase. Por ejemplo, sería realmente sencillo modificar el método anterior para sustituir el atributo <code>MetadataType</code> por una convención de nombrado del tipo “las clases llamadas <code>FooMetadata</code> contendrán los metadatos de las clases de llamadas <code>Foo</code>”:<br/>
<pre style="background-color: transparent; overflow: visible; padding: 0px;"><span style="font-family: Consolas;"><span style="color: blue;"><span style="font-size: 10pt;">private</span></span><span style="font-size: 10pt;"> <span style="color: blue;">static</span> <span style="color: blue;">void</span> registerBuddyClassesUsingConventions()
{
    <span style="color: blue;">var</span> allAssemblyTypes = <span style="color: #2b91af;">Assembly</span>.GetExecutingAssembly().GetTypes().ToList();
    <span style="color: blue;">var</span> buddyAssociations =
        <span style="color: blue;">from</span> t <span style="color: blue;">in</span> allAssemblyTypes
        <span style="color: blue;">let</span> buddy = allAssemblyTypes
                    .FirstOrDefault(other =&gt; other.Name == t.Name + <span style="color: #a31515;">"Metadata"</span>)
        <span style="color: blue;">where</span> buddy != <span style="color: blue;">null</span>
        <span style="color: blue;">select</span> <span style="color: blue;">new</span> { Type = t, Buddy = buddy };
 
    <span style="color: blue;">foreach</span> (<span style="color: blue;">var</span> association <span style="color: blue;">in</span> buddyAssociations)
    {
        <span style="color: blue;">var</span> descriptionProvider =
            <span style="color: blue;">new</span> <span style="color: #2b91af;">AssociatedMetadataTypeTypeDescriptionProvider</span>(
                association.Type, association.Buddy
            );
        <span style="color: #2b91af;">TypeDescriptor</span>.AddProviderTransparent(descriptionProvider, association.Type);
    }
}</span></span></pre>
<h3>






¿Y si quiero usar IValidatableObject?</h3>
Cuando realizamos las validaciones de forma manual tampoco se ejecutarán por defecto las validaciones implementadas utilizando el interfaz <code><a href="http://msdn.microsoft.com/es-es/library/system.componentmodel.dataannotations.ivalidatableobject.aspx">IValidatableObject</a></code>, por lo que también debemos gestionar el escenario nosotros mismos.<br/>
<br/>
El interfaz <code>IValidatableObject</code> (definido <code>System.ComponentModel.DataAnnotations</code>) obliga a implementar un único método, llamado <code>Validate()</code>, que retornará una lista de objetos <code>ValidationResult</code> con los resultados de las comprobaciones.<br/>
<br/>
A continuación se muestra un ejemplo de implementación de este interfaz sobre una entidad:<br/>
<pre style="background-color: transparent; overflow: visible; padding: 0px;"><span style="font-family: Consolas;"><span style="color: blue;"><span style="font-size: 10pt;">public</span></span><span style="font-size: 10pt;"> <span style="color: blue;">class</span> <span style="color: #2b91af;">Friend</span> : <span style="color: #2b91af;">IValidatableObject</span>
{
    <span style="color: blue;">public</span> <span style="color: blue;">string</span> Name { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }
    <span style="color: blue;">public</span> <span style="color: blue;">int</span> Age { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }
 
    <span style="color: blue;">public</span> <span style="color: #2b91af;">IEnumerable</span>&lt;<span style="color: #2b91af;">ValidationResult</span>&gt; Validate(<span style="color: #2b91af;">ValidationContext</span> validationContext)
    {
        <span style="color: blue;">if</span> (Name.Equals(<span style="color: #a31515;">"albert"</span>, <span style="color: #2b91af;">StringComparison</span>.CurrentCultureIgnoreCase))
        {
            <span style="color: blue;">yield</span> <span style="color: blue;">return</span> <span style="color: blue;">new</span> <span style="color: #2b91af;">ValidationResult</span>(<span style="color: #a31515;">"I don't like Alberts!"</span>);
        }
    }
}</span></span></pre>
Ahora, si queremos ampliar nuestro método <code>getValidationErrors()</code>, mostrado anteriormente, para que soporte también el interfaz <code>IValidatableObject</code>, podríamos realizar la siguiente implementación del mismo:<br/>
<pre style="background-color: transparent; overflow: visible; padding: 0px;"><span style="font-family: Consolas;"><span style="font-size: 10pt;">    <span style="color: blue;">private</span> <span style="color: blue;">static</span> <span style="color: #2b91af;">IEnumerable</span>&lt;<span style="color: #2b91af;">ValidationResult</span>&gt; getValidationErrors(<span style="color: blue;">object</span> obj)
    {
        <span style="color: green;">// First, data annotations</span>
        <span style="color: blue;">var</span> validationResults = <span style="color: blue;">new</span> <span style="color: #2b91af;">List</span>&lt;<span style="color: #2b91af;">ValidationResult</span>&gt;();
        <span style="color: blue;">var</span> context = <span style="color: blue;">new</span> <span style="color: #2b91af;">ValidationContext</span>(obj, <span style="color: blue;">null</span>, <span style="color: blue;">null</span>);
        <span style="color: #2b91af;">Validator</span>.TryValidateObject(obj, context, validationResults, <span style="color: blue;">true</span>);
 
        <span style="color: green;">// Second, validate using IValidatableObject</span>
        <span style="color: blue;">var</span> validatable = obj <span style="color: blue;">as</span> <span style="color: #2b91af;">IValidatableObject</span>;
        <span style="color: blue;">if</span>(validatable!=<span style="color: blue;">null</span>) 
            validationResults.AddRange(validatable.Validate(context));
 
        <span style="color: blue;">return</span> validationResults;
    }</span></span></pre>
De esta forma, podríamos comprobar la ejecución como sigue:<br/>
<pre style="background-color: transparent; overflow: visible; padding: 0px;"><span style="font-family: Consolas;"><span style="font-size: 10pt;">    <span style="color: blue;">var</span> friend = <span style="color: blue;">new</span> <span style="color: #2b91af;">Friend</span> { Age = -1, Name = <span style="color: #a31515;">"albert"</span> };
    <span style="color: blue;">var</span> errors = getValidationErrors(friend);
    <span style="color: blue;">foreach</span> (<span style="color: blue;">var</span> error <span style="color: blue;">in</span> errors)
    {
        <span style="color: #2b91af;">Console</span>.WriteLine(error.ErrorMessage);
    }</span></span></pre>
<div style="background-color: black; color: white; font-family: consolas; font-size: 10pt; margin: 10px auto 10px 30px; padding: 3px;">
The field Age must be between 0 and 120. <br/>
<br/>
I don’t like Alberts! </div>
En resumen, en este post hemos visto cómo utilizar las herramientas que ofrece el framework .NET para trabajar con validaciones basadas en <em>data annotations</em> de forma manual, lo que abre su ámbito de utilización a prácticamente cualquier tipo de aplicación para este marco de trabajo. Por el camino hemos repasado los mecanismos de anotaciones, y diversos escenarios como la externalización de atributos en clases buddy o el uso de la interfaz <code>IValidatableObject</code>.<br/>
<br/>
<a href="https://skydrive.live.com/redir.aspx?cid=c3a43a99b617d787&amp;resid=C3A43A99B617D787!278&amp;parid=C3A43A99B617D787!128&amp;authkey=!AMw05jN0Rcp-1RU">Descargar un proyecto VS2010 con el código y pruebas desde Skydrive.</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-4075930113289782465?l=www.variablenotfound.com" width="1"/></div>
<p><a href="http://feedads.g.doubleclick.net/~a/ZoO2RnVuoZr9dEoBz0NtMBPg_jk/0/da"><img border="0" ismap="true" src="http://feedads.g.doubleclick.net/~a/ZoO2RnVuoZr9dEoBz0NtMBPg_jk/0/di"/></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/ZoO2RnVuoZr9dEoBz0NtMBPg_jk/1/da"><img border="0" ismap="true" src="http://feedads.g.doubleclick.net/~a/ZoO2RnVuoZr9dEoBz0NtMBPg_jk/1/di"/></a></p><img height="1" src="http://feeds.feedburner.com/~r/vnf/~4/Wu39XxmnfDk" width="1"/></div>
    </content>
    <updated>2012-02-01T17:37:58Z</updated>
    <published>2012-02-01T10:47:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="validadores"/>
    <category scheme="http://www.blogger.com/atom/ns#" term=".net"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="trucos"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://www.variablenotfound.com/2012/02/validacion-manual-con-data-annotations.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="paranoias"/>
      <category term="xVal"/>
      <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="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="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="frikadas"/>
      <category term="programaci&#xF3;n"/>
      <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="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-02-05T07:12:29Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://blog.davilac.es/?p=186</id>
    <link href="http://blog.davilac.es/186/social-media/las-paginas-de-empresa-de-twitter-podrian-valer-25m/" rel="alternate" type="text/html"/>
    <title>Las páginas de empresa de Twitter podrían valer 25m$</title>
    <summary>Eso es lo que afirma la web adage.com, que el nuevo diseño para empresas de Twitter estaría disponible por 25.000$ (unos 19.000€). Un mail de un ejecutivo de Twitter al que habrían tenido acceso afirma que conseguir la página vale 25.000$ en gasto publicitario.   El nuevo diseño se lanzó de manera limitada para 21 [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Eso es lo que afirma la web <a href="http://adage.com/article/digital/twitter-roll-brand-pages-paying-advertisers/232381/">adage.com</a>, que el nuevo diseño para empresas de Twitter estaría disponible por 25.000$ (unos 19.000€). Un mail de un ejecutivo de Twitter al que habrían tenido acceso afirma que conseguir la página vale 25.000$ en gasto publicitario.</p>
<p><img alt="" class="aligncenter size-large wp-image-187" height="330" src="http://blog.davilac.es/wp-content/uploads/2012/02/cocacola-twitter-550x330.png" title="cocacola-twitter" width="550"/></p>
<p> </p>
<p>El nuevo diseño se lanzó de manera limitada para 21 grandes marcas (tales como Coca Cola o McDonalds) hace un mes. La misma información afirma que las marcas elegidas se comprometieron a una inversión publicitaria de 2 millones de dólares.</p>
<p>Veremos por tanto cómo y de qué manera llegan (si llegan) estas páginas a las PYMEs. Hay que tener en cuenta que aquí Twitter compite contra ni más ni menos que Facebook, que lleva mucha más experiencia en el terreno, aparte de ofrecerlo gratis, así que veremos qué hace al final Twitter.</p></div>
    </content>
    <updated>2012-02-01T08:54:23Z</updated>
    <category term="Social Media"/>
    <author>
      <name>Davilac</name>
    </author>
    <source>
      <id>http://blog.davilac.es</id>
      <link href="http://blog.davilac.es/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://blog.davilac.es" rel="alternate" type="text/html"/>
      <subtitle>Empresa de Internet Marketing</subtitle>
      <title>Davilac Blog</title>
      <updated>2012-02-05T07:59:24Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-27752126.post-8834948775836902214</id>
    <link href="http://www.variablenotfound.com/feeds/8834948775836902214/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://www.blogger.com/comment.g?blogID=27752126&amp;postID=8834948775836902214" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/27752126/posts/default/8834948775836902214?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/27752126/posts/default/8834948775836902214?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://feedproxy.google.com/~r/vnf/~3/JOq0DjNEN4c/enlaces-interesantes-69.html" rel="alternate" type="text/html"/>
    <title>Enlaces interesantes 69</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://lh5.ggpht.com/-gVh5uOH2UQI/TyedcmXngwI/AAAAAAAABvc/d9n68quaHoY/s1600-h/image7_thumb_thumb_thumb_thumb2.png"><img align="right" alt="Enlaces interesantes" border="0" height="129" src="http://lh5.ggpht.com/-kQV8VQ_AqZU/TyeddgEbNUI/AAAAAAAABvk/fslgf51tsn0/image7_thumb_thumb_thumb_thumb_thumb.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="Enlaces interesantes" 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 16 al 29 de enero de 2012. Espero que os resulten interesantes. :-)<br/>
<a name="more"/><br/>
<h4>

.Net</h4>
<ul>
<li><a href="http://whereslou.com/2012/01/24/introducing-dragonfly-another-net-http-server"><strong>Introducing Dragonfly – another .NET HTTP server</strong></a>       <br/>Louis DeJardin </li>
<li><a href="http://geekswithblogs.net/simonc/archive/2012/01/24/inside-the-concurrent-collections-concurrentqueue.aspx"><strong>Inside the Concurrent Collections: ConcurrentQueue</strong></a>       <br/>Simon Cooper </li>
<li><strong><a href="http://blogs.msdn.com/b/csharpfaq/archive/2012/01/23/using-async-for-file-access-alan-berman.aspx">Using Async for File Access</a>         </strong>C# Team </li>
<li><strong><a href="http://blogs.microsoft.co.il/blogs/sasha/archive/2012/01/20/aggressive-inlining-in-the-clr-4-5-jit.aspx">Aggressive Inlining in the CLR 4.5 JIT</a></strong>       <br/>Sasha Goldshtein </li>
<li><strong><a href="http://blogs.msdn.com/b/ericlippert/archive/2012/01/16/what-is-the-defining-characteristic-of-a-local-variable.aspx">What is the defining characteristic of a local variable?</a></strong>       <br/>Eric Lippert </li>
<li><a href="http://geekswithblogs.net/BlackRabbitCoder/archive/2012/01/12/c.net-little-pitfalls-stopwatch-ticks-are-not-timespan-ticks.aspx" title="Title of this entry"><strong>C#/.NET Little Pitfalls: Stopwatch Ticks are not TimeSpan Ticks</strong></a>       <br/>James Michael Hare </li>
<li><a href="http://geekswithblogs.net/simonc/archive/2012/01/12/inside-the-concurrent-collections-concurrentstack.aspx" title="Title of this entry"><strong>Inside the Concurrent Collections: ConcurrentStack</strong></a>       <br/>Simon Cooper       <ul/>
</li>
</ul>
<h4>

Asp.net</h4>
<ul>
<li><a href="http://www.matthidinger.com/archive/2012/01/23/adding-rich-selector-support-for-mvc.aspx"><strong>Adding rich Selector support for MVC</strong></a>       <br/>Matt Hidinger </li>
<li><a href="http://www.collectivematters.com/2012/01/solving-real-world-theming-challenges-with-mvc4-and-sass/"><strong>Solving Real-world Theming Challenges with MVC4 and Sass</strong></a>       <br/>Harvey Kandola </li>
<li><strong><a href="http://blogs.msdn.com/b/cdndevs/archive/2012/01/23/javascript-and-css-minifying-bundling-with-the-microsoft-web-optimization-nuget-package.aspx">Javascript and CSS Minifying/Bundling with the Microsoft.Web.Optimization Nuget package</a></strong>       <br/>Maxime Rouiller </li>
<li><strong><a href="http://desarrolloweb.com/articulos/validaciones-propias-aspnet-mvc-dotnet.html">Validaciones propias en ASP.NET MVC</a></strong>       <br/>Eduard Tomás       <ul/>
</li>
<li><strong><a href="http://blogs.msdn.com/b/chunliu/archive/2012/01/20/the-flowchart-of-the-ie-rendering-modes.aspx">The flowchart of the IE rendering modes</a></strong>       <br/>Chun Liu </li>
<li><strong><a href="http://weblogs.asp.net/jeff/archive/2012/01/23/pop-forums-v9-2-posted-to-codeplex-with-new-lanuages-post-voting-and-the-scoring-game.aspx">POP Forums v9.2 posted to CodePlex, with new languages, post voting and the scoring game</a></strong>       <br/>Jeff Putz </li>
<li><strong><a href="http://www.codefrenzy.net/2012/01/23/asp-net-response-redirect/">ASP.NET Response.Redirect</a></strong>       <br/>Annie Luxton </li>
<li><strong><a href="http://code-inside.de/blog-in/2012/01/23/fix-the-value-x-is-not-valid-for-foo-in-asp-net-mvc">Fix: the value ‘x’ is not valid for Foo in ASP.NET MVC</a></strong>       <br/>Code Inside Team       <ul/>
</li>
<li><a href="http://mrubino.net/2012/01/23/deploy-web-con-configuracion-dinamic/"><strong>Web Deploy – config Transformation</strong></a>       <br/>Marc Rubiño </li>
<li><a href="http://www.jasoft.org/Blog/post/Como-simular-otros-navegadores-para-probar-desarrollos-Web.aspx" title="C&#xF3;mo simular otros navegadores para probar desarrollos Web"><strong>Cómo simular otros navegadores para probar desarrollos Web</strong></a>       <br/>José Manuel Alarcón       <ul/>
</li>
<li><strong><a href="http://weblogs.asp.net/jgalloway/archive/2012/01/17/10-things-asp-net-developers-should-know-about-web-config-inheritance-and-overrides.aspx">10 Things ASP.NET Developers Should Know About Web.config Inheritance and Overrides</a></strong>       <br/>Jon Galloway </li>
<li><a href="http://www.jasoft.org/Blog/post/Como-obtener-rutas-absolutas-en-ASPNET.aspx" title="C&#xF3;mo obtener rutas absolutas en ASP.NET"><strong>Cómo obtener rutas absolutas en ASP.NET</strong></a>       <br/>José Manuel Alarcón </li>
<li><strong><a href="http://mrubino.net/2012/01/17/push-con-singalr/">Push con SingalR</a></strong>       <br/>Marc Rubiño </li>
<li><a href="http://blog.maartenballiauw.be/post/2012/01/20/Tracking-API-usage-with-Google-Analytics.aspx" title="Tracking API usage with Google Analytics"><strong>Tracking API usage with Google Analytics</strong></a>       <br/>Maarten Balliauw       <ul/>
</li>
<li><strong><a href="http://gregorsuttie.com/2012/01/15/mvc-get-some-help/">MVC – get some help</a></strong>       <br/>Gregor Suttie </li>
</ul>
<h4>

Azure / Cloud</h4>
<ul>
<li><strong><a href="http://www.estoyenlanube.com/release-de-sql-azure-importexport/">Release de SQL Azure Import/Export</a></strong>       <br/>Ibon Landa </li>
<li><strong><a href="http://blogs.msdn.com/b/scicoria/archive/2012/01/19/making-windows-azure-drive-letter-persistent.aspx">Making Windows Azure Drive Letter Persistent</a></strong>       <br/>Shawn Cicoria       <ul/>
</li>
<li><strong><a href="http://weblogs.asp.net/scottgu/archive/2012/01/19/getting-started-with-windows-azure.aspx">Getting Started with Windows Azure</a> </strong>      <br/>Scott Guthrie </li>
</ul>
<h4>

Conceptos</h4>
<ul>
<li><a href="http://sebys.com.ar/2012/01/09/gof-singleton/"><strong>Gof – Singleton</strong></a>       <br/>Sebis </li>
</ul>
<h4>

Data access</h4>
<ul>
<li><strong><a href="http://thedatafarm.com/blog/data-access/what-do-you-want-to-see-in-entity-framework/">What do you want to see in Entity Framework?</a></strong>       <br/>Julie Lerman </li>
<li><strong><a href="http://www.heidisql.com/">HeidiSQL: Windows based interface for managing MySQL and Microsoft SQL databases</a></strong>       <br/>Ansgar Becker </li>
<li><strong><a href="http://www.codeproject.com/Articles/316816/RaptorDB-The-Key-Value-Store-V2">RaptorDB - The Key Value Store V2</a></strong>       <br/>Mehdi Gholam </li>
<li><strong><a href="http://geeks.ms/blogs/jtorrecilla/archive/2012/01/18/orm-orapoco-trabajando-contra-oracle.aspx">OraPoco: Trabajando contra Oracle</a></strong>       <br/>Javier Torrecilla </li>
<li><a href="http://blogs.msdn.com/b/diego/archive/2012/01/15/why-entity-framework-vnext-will-be-ef5-and-nothing-else.aspx"><strong>Why Entity Framework vNext will be EF5 and nothing else</strong></a>       <br/>Diego B. Vega  </li>
</ul>
<h4>

Html/Css/Javascript</h4>
<ul>
<li><strong><a href="http://net.tutsplus.com/tutorials/javascript-ajax/from-jquery-to-javascript-a-reference/">From jQuery to JavaScript: A Reference</a></strong>       <br/>Jeffrey Way </li>
<li><strong><a href="http://lostechies.com/derickbailey/2012/01/24/some-thoughts-on-functional-javascript/">Some Thoughts On Functional JavaScript</a></strong>       <br/>Derick Bailey       <ul/>
</li>
<li><strong><a href="http://www.elijahmanor.com/2012/01/find-jquery-bug-2-point-of-no-return.html">Find the jQuery Bug #2: Point of No Return</a> </strong>      <br/>Elijah Manor </li>
<li><a href="http://blog.boyet.com/blog/javascriptlessons/javascript-for-c-developers-coercion/"><strong>JavaScript for C# developers: coercion</strong></a>       <br/>Julian M. Bucknall       <ul/>
</li>
<li><strong><a href="http://geeks.ms/blogs/gperez/archive/2012/01/25/modernizr-ejemplo-pr-225-ctico-2-utilizando-border-radius-elemento-date-y-atributo-required.aspx">Modernizr–Ejemplo práctico 2 : Utilizando Border Radius, elemento date y atributo required</a></strong>       <br/>Gonzalo Pérez </li>
<li><strong><a href="http://html5doctor.com/server-sent-events/">Server-Sent Events</a> </strong>      <br/>Remy Sharp </li>
<li><strong><a href="http://dotnetslackers.com/articles/aspnet/Using-HTML5-Web-Storage-in-ASP-NET.aspx">Using HTML5 Web Storage in ASP.NET</a></strong>       <br/>Bipin Joshi </li>
<li><a href="http://www.etnassoft.com/2012/01/24/creando-objetos-y-aplicaciones-configurables-en-javascript/" title="Enlace permanente a Creando objetos y aplicaciones configurables en Javascript"><strong>Creando objetos y aplicaciones configurables en Javascript</strong></a>       <br/>Carlos Benítez       <ul/>
</li>
<li><strong><a href="http://www.jquery4u.com/tools/10-excellent-free-rich-text-editors/">10 Excellent Free Rich-Text Editors</a></strong>       <br/>jQuery4u </li>
<li><a href="http://freshbrewedcode.com/derekgreer/2012/01/22/solid-javascript-the-dependency-inversion-principle/" title="Permanent Link to SOLID JavaScript- The Dependency Inversion Principle"><strong>SOLID JavaScript- The Dependency Inversion Principle</strong></a>       <br/>Derek Greer       <ul/>
</li>
<li><strong><a href="http://www.kirupa.com/html5/easing_functions_css3.htm">Easing Functions in CSS3</a></strong>       <br/>Kirupa Chinnathambi </li>
<li><strong><a href="http://jclaes.blogspot.com/2012/01/how-wikipedia-uses-html5-to-save.html">How Wikipedia uses HTML5 to save bandwidth</a></strong>       <br/>Jef Claes       <ul/>
</li>
<li><a href="http://codebrief.com/2012/01/the-top-10-javascript-mvc-frameworks-reviewed/"><strong>The Top 10 Javascript MVC Frameworks Reviewed</strong></a>       <br/>Gordon L. Hempton </li>
<li><a href="http://css3.bradshawenterprises.com/" title="Using CSS3 Transitions, Transforms and Animation"><strong>Using CSS3 Transitions, Transforms and Animation</strong></a>       <br/>Rich Bradshaw </li>
</ul>
<h4>

Visual Studio/Complementos</h4>
<ul>
<li><strong><a href="http://blogs.jetbrains.com/dotnet/2012/01/importing-exporting-templates-and-patterns-in-resharper-61/">Importing / Exporting Templates and Patterns in ReSharper 6.1</a></strong>       <br/>Hadi Hariri </li>
<li><a href="http://www.alvinashcraft.com/2012/01/23/c-resharper-awesome-tip-8-extract-class-from-parameters/"><strong>C# + ReSharper = Awesome: Tip #8 – Extract Class From Parameters</strong></a>       <br/>Alvin Ashcraft </li>
<li><a href="http://www.alvinashcraft.com/2012/01/20/c-resharper-awesome-tip-7move-string-to-resource/"><strong>C# + ReSharper = Awesome: Tip #7–Move String to Resource</strong></a>       <br/>Alvin Ashcraft's </li>
<li><strong><a href="http://geeks.ms/blogs/jorge/archive/2012/01/23/stylecop-v4-7-6-0-disponible.aspx">StyleCop v4.7.6.0 disponible</a></strong>       <br/>Jorge Serrano   </li>
</ul>
<h4>

Otros</h4>
<ul>
<li><a href="http://www.troyhunt.com/2012/01/breaking-captcha-with-automated-humans.html" title="Breaking CAPTCHA with automated humans"><strong>Breaking CAPTCHA with automated humans</strong></a>       <br/>Troy Hunt </li>
<li><strong><a href="http://googlecode.blogspot.com/2012/01/lets-make-tcp-faster.html">Let's make TCP faster</a></strong>       <br/>Yuchung Cheng </li>
<li><a href="http://jmalarcon.es/post/El-Cargo-Cult-de-las-pequenas-empresas.aspx"><strong>El "Cargo Cult" de las pequeñas empresas</strong></a>       <br/>José Manuel Alarcón </li>
<li><a href="http://jmalarcon.es/post/El-efecto-Mateo-y-su-influencia.aspx" title="El efecto Mateo y su influencia"><strong>El efecto Mateo y su influencia</strong></a>       <br/>José Manuel Alarcón </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-8834948775836902214?l=www.variablenotfound.com" width="1"/></div>
<p><a href="http://feedads.g.doubleclick.net/~a/M0arkBNm-h4Dt8TaHBCIAYGF73Q/0/da"><img border="0" ismap="true" src="http://feedads.g.doubleclick.net/~a/M0arkBNm-h4Dt8TaHBCIAYGF73Q/0/di"/></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/M0arkBNm-h4Dt8TaHBCIAYGF73Q/1/da"><img border="0" ismap="true" src="http://feedads.g.doubleclick.net/~a/M0arkBNm-h4Dt8TaHBCIAYGF73Q/1/di"/></a></p><img height="1" src="http://feeds.feedburner.com/~r/vnf/~4/JOq0DjNEN4c" width="1"/></div>
    </content>
    <updated>2012-01-31T13:23:05Z</updated>
    <published>2012-01-31T07:53: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/01/enlaces-interesantes-69.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="paranoias"/>
      <category term="xVal"/>
      <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="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="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="frikadas"/>
      <category term="programaci&#xF3;n"/>
      <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="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-02-05T07:12:29Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.yukei.net/?p=1674</id>
    <link href="http://feedproxy.google.com/~r/yukei/~3/tzou5eEIxeA/" rel="alternate" type="text/html"/>
    <title>Mejorando la privacidad en BitTorrent</title>
    <summary>Algunos tips para mejorar la privacidad del intercambio de archivos a través de BitTorrent: cómo cifrar el flujo de red y configurar listas de bloqueos de IPs</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Tras el cierre de MegaUpload y otros servicios para compartir archivos, muchos han optado por volver a visitar a un viejo conocido: <strong>BitTorrent</strong> (el protocolo, no el cliente).</p>
<p>Afortunadamente, los clientes más nuevos y populares han incluido un par de opciones que nos permiten aumentar (aunque sea sólo un poco) el nivel de privacidad de nuestras conexiones.</p>
<p><span id="more-1674"/></p>
<p>Las opciones que nos interesan son fundamentalmente dos:</p>
<ul>
<li><strong>Activar el cifrado de las conexiones </strong>para evitar la escucha del tráfico por parte de terceros.</li>
<li><strong>Configurar una lista de bloqueo de IPs</strong> para bloquear distribuidores de malware, spyware y otras molestias</li>
</ul>
<p>Adicionalmente, si te sientes especialmente paranoico, puedes desactivar el intercambio de pares a través de <em>DHT</em>, puesto que al activar esta opción vas a compartir tu dirección IP y otros datos a través de una red distribuída — por otra parte, al desactivarla probablemente vas a tener menos pares y vas a depender en mayor medida de los pares que estén registrados en el tracker central.</p>
<h3>En <a href="http://static.yukei.net/wp-content/uploads/2012/01/transmission-privacy.png"><img alt="" class="alignright size-thumbnail wp-image-1675" height="120" src="http://static.yukei.net/wp-content/uploads/2012/01/transmission-privacy-120x120.png" title="Opciones de privacidad en Transmission" width="120"/></a>Transmission</h3>
<p><a href="http://www.transmissionbt.com/" title="Transmission - A fast, easy and free bittorrent client">Transmission</a> es cliente pequeño y sencillo, pero con las opciones justas. Está para varias distribuciones de Linux (en Ubuntu viene preinstalado) y Mac.</p>
<p>Para activar estas opciones, debemos ir a <strong>Editar → Preferencias</strong> y luego a la pestaña <strong>Privacidad</strong>.</p>
<ol>
<li>Activa la opción para <strong>habilitar la lista de bloqueo</strong>. Puedes obtener buenas listas de bloqueo desde <a href="http://www.iblocklist.com/lists.php" title="Listas de bloqueo de malware y otras molestias p2p">I-BlockList</a>; donde encontrarás listas clásicas como las <a href="http://www.iblocklist.com/list.php?list=bt_level1">level-1</a>, <a href="http://www.iblocklist.com/list.php?list=bt_level2">level-2</a> y <a href="http://www.iblocklist.com/list.php?list=bt_level3">level-3</a>, en orden ascendiente según tu nivel de paranoia. Tan solo debes copiar la URL y pegarla en el campo indicado. El programa refrescará automáticamente la lista de bloqueos de modo que permanezca actualizada.</li>
<li>En la sección <strong>Privacidad</strong>, selecciona el modo de cifrado: <em>permitir, preferir o requerir</em>. A estas alturas, me parece que la gran mayoría de clientes de BitTorrent traen alguna opción de cifrado activada por defecto, por lo que la opción de <strong>requerir cifrado</strong> no debería darte mayores problemas.</li>
</ol>
<p>Si deseas desactivar el intercambio de pares por <em>DHT</em>, puedes hacerlo en la misma pestaña.</p>
<h3>En Deluge</h3>
<p><a href="http://deluge-torrent.org/" title="Deluge BitTorrent Client">Deluge</a> es un cliente liviano y multiplataforma, disponible para Linux, Mac y Windows.</p>
<p>Para activar las opciones de privacidad, debes ir a <strong>Editar → Preferencias</strong> y luego</p>
<ol>
<li>En la categoría <strong>Red</strong>, activar las opciones de cifrado: <strong>forzado </strong>tanto para entrante como saliente, <strong>flujo completo</strong> en el nivel y activar la casilla de <strong>cifrar flujo completo</strong></li>
<li>Si aun no lo has activado, anda a la categoría <strong>Complementos </strong>y activa <strong>Blocklist</strong></li>
<li>En la categoría <strong>Lista de bloqueados, </strong>ingresa una de las alternativas disponibles en <a href="http://www.iblocklist.com/lists.php" title="Listas de bloqueo de malware y otras molestias p2p">I-BlockList</a>. Puedes indicar cada cuántos días quieres refrescar la lista de bloqueos (yo lo tengo cada 5) y ya estás listo.</li>
</ol>
<p>Finalmente, si quieres desactivar <em>DHT</em>, debes hacerlo también desde la categoría de <strong>Red, </strong>en la sección de <strong>Extras de red.</strong></p>

	<p class="tags">Tags: <a href="http://www.yukei.net/tag/bittorrent-2/" rel="tag" title="bittorrent">bittorrent</a>, <a href="http://www.yukei.net/tag/p2p/" rel="tag" title="P2P">P2P</a>, <a href="http://www.yukei.net/tag/privacidad/" rel="tag" title="privacidad">privacidad</a></p>

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.yukei.net/2007/09/wordpress-23-y-las-preocupaciones-por-la-privacidad/" title="WordPress 2.3 y las preocupaciones por la privacidad (25 septiembre, 2007)">WordPress 2.3 y las preocupaciones por la privacidad</a> (3)</li>
	<li><a href="http://www.yukei.net/2005/11/torrents-de-los-conciertos-de-pearl-jam-en-chile/" title="Torrents de los conciertos de Pearl Jam en Chile (25 noviembre, 2005)">Torrents de los conciertos de Pearl Jam en Chile</a> (35)</li>
	<li><a href="http://www.yukei.net/2004/02/sin-querer-queriendo/" title="Sin querer queriendo (23 febrero, 2004)">Sin querer queriendo</a> (0)</li>
	<li><a href="http://www.yukei.net/2009/12/servidor-de-musica-daap-en-ubuntu/" title="Servidor de m&#xFA;sica DAAP en Ubuntu (28 diciembre, 2009)">Servidor de música DAAP en Ubuntu</a> (0)</li>
	<li><a href="http://www.yukei.net/2003/11/qu-pasa-en-el-negocio-de-la-msica/" title="Qu&#xE9; pasa en el negocio de la m&#xFA;sica (9 noviembre, 2003)">Qué pasa en el negocio de la música</a> (4)</li>
</ul>

<img height="1" src="http://feeds.feedburner.com/~r/yukei/~4/tzou5eEIxeA" width="1"/></div>
    </content>
    <updated>2012-01-31T12:30:28Z</updated>
    <category term="BitTorrent"/>
    <category term="P2P"/>
    <category term="bittorrent"/>
    <category term="privacidad"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://www.yukei.net/2012/01/mejorando-la-privacidad-en-bittorrent/</feedburner:origLink>
    <author>
      <name>Felipe Lavín Z.</name>
    </author>
    <source>
      <id>http://www.yukei.net</id>
      <logo>http://creativecommons.org/images/public/somerights20.gif</logo>
      <link href="http://www.yukei.net" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://creativecommons.org/licenses/by-sa/3.0/" rel="license"/>
      <link href="http://www.yukei.net/feed/" rel="self" type="application/atom+xml"/>
      <subtitle>técnica y análisis para un mundo digital</subtitle>
      <title>yukei.net</title>
      <updated>2012-02-05T07:59:16Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.maestrosdelweb.com/?p=22689</id>
    <link href="http://www.maestrosdelweb.com/editorial/guia-flex-premisos-configuraciones/" rel="alternate" type="text/html"/>
    <title>Guía Flex: Permisos y Configuraciones</title>
    <summary>En este capítulo de la guía revisaremos una parte importante sobre el tipo de permisos y configuraciones que hay que seleccionar al momento de desarrollar aplicaciones para BlackBerry PlayBook. Hasta el momento hemos revisado diferentes aspectos sobre el desarrollo para esta plataforma así como nociones del uso de Flex como framework para el desarrollo de [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>En este capítulo de la guía revisaremos una parte importante sobre el <strong>tipo de permisos y configuraciones</strong> que hay que seleccionar al momento de desarrollar aplicaciones para <a href="http://us.blackberry.com/developers/tablet/adobe.jsp">BlackBerry PlayBook</a>. Hasta el momento hemos revisado diferentes aspectos sobre el desarrollo para esta plataforma así como nociones del uso de Flex como framework para el desarrollo de aplicaciones móviles, ahora toca el turno de aprender a hacer el setup de las configuraciones de nuestras apps. </p>
<p>No olvidemos que existen diferentes puntos de partida desde las cuales podemos pensar una aplicación siendo managers, ingenieros y/o usuarios y es este último aspecto en el cuál nos concentraremos como desarrolladores para facilitar lo más posible la vida al usuario como responsables de las aplicaciones. </p>
<p>En los capítulos anteriores hemos revisado diversos temas muy importantes para el desarrollo de aplicaciones Flex para móviles los cuales te recomendamos ampliamente revisar a detalle:</p>
<ul>
<li><a href="http://www.maestrosdelweb.com/editorial/guia-flex/">Desarrollo para BlackBerry PlayBook</a></li>
<li><a href="http://www.maestrosdelweb.com/editorial/guia-flex-hola-mundo-playbook/">Hola Mundo</a></li>
<li><a href="http://www.maestrosdelweb.com/editorial/guia-flex-playbook-fundamentos/">Fundamentos de Desarrollo Flex para PlayBook</a></li>
<li><a href="http://www.maestrosdelweb.com/editorial/guia-flex-actionscript-3-eventos-blackberry-playbook/">ActionScript 3.0 y Eventos</a></li>
<li><a href="http://www.maestrosdelweb.com/editorial/guia-flex-actionscript-3-eventos-blackberry-playbook/">Componentes y Layout</a></li>
<li><a href="http://www.maestrosdelweb.com/editorial/guia-flex-diseno-aplicaciones/">Diseño de Aplicaciones</a></li>
</ul>
<p>Sin más recomendaciones por el momento, comencemos con la configuración de los permisos para nuestras aplicaciones!</p>
<h3>Establecer Permisos para nuestras Aplicaciones</h3>
<p>En el momento en el que desarrollamos una aplicación para <strong>BlackBerry PlayBook</strong> y en general para cualquier tipo de dispositivo móvil (Android o iOS) mediante Flash Builder,  será necesario definir algunos permisos para que la aplicación pueda funcionar correctamente. Las aplicaciones de <strong>AIR</strong> contienen diferentes opciones que pueden ser resueltas desde la interface de Flash Builder al momento de definir un proyecto móvil. </p>
<p style="text-align: center;"><img alt="Permisos y Configuraciones BlackBerry PlayBook" class="aligncenter size-medium wp-image-22700" height="450" src="http://www.maestrosdelweb.com/images/2012/01/image7_1-419x450.jpg" width="419"/></p>
<p>Entre las opciones disponibles podemos encontrar las siguientes:</p>
<table border="1" width="90%">
<tbody><tr>
<th scope="col">Nombre</th>
<th scope="col">Descripción</th>
</tr>
<tr>
<td>access_shared</td>
<td>lectura y escritura de archivos compartidos</td>
</tr>
<tr>
<td>record_audio</td>
<td>acceso al audio del micrófono</td>
</tr>
<tr>
<td>read_geolocation</td>
<td>lectura de la posición del dispositivo</td>
</tr>
<tr>
<td>use_camera</td>
<td>acceso a la cámara</td>
</tr>
<tr>
<td>access_internet</td>
<td>uso de las conexiones a internet</td>
</tr>
<tr>
<td>play_audio</td>
<td>reproducir una señal de audio</td>
</tr>
<tr>
<td>post_notification</td>
<td>mandar notificaciones al usuario</td>
</tr>
<tr>
<td>set_audio_volume</td>
<td>cambiar el volumen del audio del dispositivo</td>
</tr>
</tbody></table>
<p>Todos estos permisos también están disponibles en un archivo XML llamado blackberry-tablet.xml asociado a la aplicación que podría tener un código similar al siguiente:</p>
<div class="codigo">
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  &lt;qnx&gt;
&lt;initialWindow&gt;
&lt;systemChrome&gt;none&lt;/systemChrome&gt;
&lt;transparent&gt;false&lt;/transparent&gt;
&lt;/initialWindow&gt;
&lt;author&gt;Edgar Parada&lt;/author&gt;
&lt;authorId&gt;ABC123456YjsnUk235h&lt;/authorId&gt; --&gt;
&lt;icon&gt;
&lt;image&gt;logo.png&lt;/image&gt;
&lt;/icon&gt; --&gt;
&lt;buildId&gt;1&lt;/buildId&gt;
&lt;permission&gt;access_shared&lt;/permission&gt;
&lt;permission&gt;read_geolocation&lt;/permission&gt;
&lt;permission&gt;use_camera&lt;/permission&gt;
&lt;permission&gt;access_internet&lt;/permission&gt;
&lt;/qnx&gt;
</pre>
</div>
<h3>AIR Descriptor</h3>
<p>Cada aplicación de AIR requiere de un archivo llamado <strong>descriptor</strong>, es un simple documento XML que define varias propiedades de nuestra aplicaciones. Al utilizar Flash Builder no tendremos que preocuparnos por crear un <strong>descriptor</strong> de forma manual sin embargo es importante conocer al menos sus características principales.</p>
<p>Veamos un sencillo ejemplo del código de archivo de tipo <strong>descriptor</strong>:</p>
<div class="codigo">
<pre>&lt;?xml version="1.0" encoding="utf-8" ?&gt;
  &lt;application xmlns="http://ns.adobe.com/air/application/3.1"&gt;
&lt;id&gt;maestros.HolaMundo&lt;/id&gt;
&lt;versionNumber&gt;1.0.0&lt;/versionNumber&gt;
&lt;filename&gt;Hola Mundo&lt;/filename&gt;
&lt;name&gt;Ejemplo de Hola Mundo&lt;/name&gt;
&lt;description&gt;
&lt;text xml:lang="en"&gt;This is an example.&lt;/text&gt;
&lt;text xml:lang="es"&gt;Esto es un ejemplo.&lt;/text&gt;
&lt;/description&gt;
&lt;initialWindow&gt;
&lt;title&gt;Hola Mundo&lt;/title&gt;
&lt;content&gt;
HolaMundo.swf
&lt;/content&gt;
&lt;/initialWindow&gt;
&lt;icon&gt;
&lt;image16x16&gt;icons/small.png&lt;/image16x16&gt;
&lt;image32x32&gt;icons/medium.png&lt;/image32x32&gt;
&lt;image48x48&gt;icons/big.png&lt;/image48x48&gt;
&lt;image128x128&gt;icons/bigger.png&lt;/image128x128&gt;
&lt;/icon&gt;
&lt;/application&gt;
</pre>
</div>
<h4>Versión Requerida de AIR</h4>
<p>El atributo del elemento raíz es uno de los más importantes dentro del <strong>descriptor</strong> ya que especifíca la versión requerida del runtime de AIR que debe de estar instalada en la BlackBerry PlayBook a ejecutar las nuestras aplicaciones.</p>
<div class="codigo">
<pre>&lt;application xmlns="http://ns.adobe.com/air/application/3.1"&gt;
</pre>
</div>
<p>Podemos revisar la versión de del runtime de AIR instalada en nuestro dispositivo desde las opciones generales:</p>
<p style="text-align: center;"><img alt="Configuraci&#xF3;n AIR SDK" class="aligncenter size-medium wp-image-22702" height="258" src="http://www.maestrosdelweb.com/images/2012/01/image7_2-450x258.jpg" width="450"/></p>
<p>Por lo regular en una computadora de escritorio el usuario tienen la libertad de instalar la versión del runtime de <strong>AIR</strong> que necesite de manera independiente pero en el caso de <em>BlackBerry PlayBook</em> la versión depende de la actualización del sistema operativo. Algo que vuelve a <em>BlackBerry Tablet OS</em> un ambiente muy interesante para los desarrolladores de Flash es que es muy común encontrar las últimas versiones disponibles rápidamente.</p>
<h4>Identidad de la Aplicación AIR</h4>
<p>Los elementos <em>id, versionNumber, filename, name</em> y <em>description</em> sirven para definir la identidad de una aplicación AIR.</p>
<p>El <strong>id</strong> es una cadena que identifica a la aplicación, mejor conocida como application ID, hay ciertas restricciones de caracteres que pueden utilizarse pero en general es bastante flexible: 0–9, a–z, A–Z, puntos y guiones.</p>
<p>El atributo <strong>versionNumber</strong> especifica como su nombre lo indica la versión de la aplicación, es un elemento que es requerido y como ya lo habíamos comentado en la sección de tips de experto del capítulo de <a href="http://www.maestrosdelweb.com/editorial/guia-flex-componentes-layout-blackberry-playbook/">Componentes y Layout</a> es oportuno volver a mencionar que hay que modificar la propiedad <strong>versionNumber</strong> asignada por defecto a <strong>1.0.0</strong> para hacerlo compatible con el modelo de desarrollo para PlayBook. </p>
<ul>
<li><strong>filename</strong> es la cadena que se utilizará como nombre del archivo de nuestra aplicación cuando se instala en el dispositivo, si no se especifíca también se utiliza como el nombre de la carpeta de instalación.</li>
<li><strong>name</strong> es un atributo opcional pero se recomienda utilizarlo ya que es el título mostrado al momento de instalar la aplicación. Inclusive desde AIR 1.1, se puede especificar este valor para múltiples idiomas.</li>
<li><strong>description</strong> como su nombre lo indica es la descripción de la aplicación que se muestra al momento de instalar la aplicación.</li>
</ul>
<h4>Configuración del Contenido Principal</h4>
<p>El nodo <strong>initialWindow</strong> dentro del <strong>descriptor</strong> define la configuración del contenido principal de nuestras aplicaciones, para el contexto de una aplicación de escritorio tiene diferentes características pero al ser usado en un contexto para dispositivos móviles solamente son usadas: <em>aspectRatio, autoOrients, content, fullScreen, renderMode y softKeyboardBehavior</em>.</p>
<p style="text-align: center;"><img alt="Configuraci&#xF3;n del Contenido Aplicaciones PlayBook" class="aligncenter size-medium wp-image-22712" height="161" src="http://www.maestrosdelweb.com/images/2012/01/image7_3-450x161.jpg" width="450"/></p>
<p>El <strong>aspectRatio</strong> especifica la relación de aspecto de la aplicación, puede tener valores de <em>portrait</em> o <em>landscape</em> y aunque la relación de aspecto varia entre dispositivos en el caso de PlayBook es más común utilizar <em>landscape</em> para nuestras aplicaciones.</p>
<p>Para el caso de <strong>autoOrients</strong> se refiere a cuando la orientación del contenido automáticamente se reorienta conforme cambia la orientación física del dispositivo. En el caso de activar esta opción sería una buena idea establecer los valores de <strong>align</strong> y <strong>scaleMode</strong> de stage a <strong>StageAlign.TOP_LEFT</strong> y <strong>StageScaleMode.NO_SCALE</strong> respectivamente.</p>
<p>El atributo <strong>content</strong> es la URL del archivo principal de la aplicación, es un valor asignado de forma relativa al folder de instalación de la aplicación. <strong>fullScreen</strong> como su nombre lo indica es una opción que permite forzar la aplicación a ejecutarse en modo a pantalla completa, por defecto esta opción esta seleccionada.</p>
<p>Para el caso de <strong>renderMode</strong>, es un valor que nos permite seleccionar el tipo de aceleración por hardware que tendremos si es que esta soportado por el dispositivo, no es recomendable utilizarlo en aplicaciones hechas con Flex sin embargo en el caso de juegos puede ser una buena alternativa.</p>
<p>Y en cuanto al último elemento relativo a aplicaciones móviles <strong>softKeyboardBehavior</strong> es un valor que afecta el comportamiento de la aplicación cuando se muestra el teclado virtual. Por defecto mueve la aplicación hacia arriba y deja en foco al campo de texto u objeto interactivo en pantalla.</p>
<p>Como pudimos ver son bastantes las opciones que tenemos disponibles al momento de definir el comportamiento de una aplicación móvil hecha con Flex para BlackBerry PlayBook, como desarrolladores de la plataforma es importante conocerlas y aprovechar sus diferentes posibilidades.</p>
<div class="tipexperto">
<h3>Tips de Experto</h3>
<ul>
<li>Una de las características más poderosas del desarrollo con AIR implica el uso de extensiones nativas (<strong>ANE</strong>) que son una combinación  de ActionScript y código nativo que le permite al desarrollador extender las capacidades del runtime de AIR. Para comenzar a desarrollar extensiones nativas para BlackBerry PlayBook con AIR recomendamos el <a href="http://supportforums.blackberry.com/t5/Tablet-OS-SDK-for-Adobe-AIR/Creating-Air-Native-Extensions-for-BBX/ta-p/1376479">siguiente enlace</a>.
</li>
<li>La documentación del <a href="http://us.blackberry.com/developers/tablet/adobe-documentation.jsp">SDK de AIR para PlayBook</a> ha sido actualizada recientemente y ya incluye una versión que podemos probar para el <strong>SDK 2.0 Beta</strong>, será interesante echarle un vistazo para probar las opciones que estarán disponibles para BlackBerry PlayBook a lo largo de 2012.</li>
</ul>
</div>
<hr/><p style="height: 64px;"><img alt="Edgar Parada" class="avatar avatar-64 photo" height="64" src="http://0.gravatar.com/avatar/43a333edcbd64011edcdaa23d110e25e?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>Edgar Parada</strong> para <a href="http://www.maestrosdelweb.com">Maestros del Web</a>.<br/><a href="http://www.maestrosdelweb.com/editorial/guia-flex-premisos-configuraciones/#respond">Agrega tu comentario</a> | <a href="http://www.maestrosdelweb.com/editorial/guia-flex-premisos-configuraciones/">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-01-30T16:15:29Z</updated>
    <category term="AIR"/>
    <category term="Editorial"/>
    <category term="Flash"/>
    <category term="Flex"/>
    <category term="Gu&#xED;as"/>
    <category term="Temas legales"/>
    <category term="blackberry"/>
    <category term="configuraciones"/>
    <category term="flex"/>
    <category term="guia flex"/>
    <category term="permisos"/>
    <category term="playbook"/>
    <author>
      <name>Edgar Parada</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-02-03T19:59:33Z</updated>
    </source>
  </entry>

  <entry xml:lang="es">
    <id>http://obm.corcoles.net/?p=7314</id>
    <link href="http://obm.corcoles.net/20120129/los-tuitlinks-de-la-semana-30-edicion-jumbo/" rel="alternate" type="text/html"/>
    <title>Los tuitlinks de la semana (30, edición ‘jumbo’)</title>
    <summary>Después de un fin de semana de no recoger los mejores enlaces aparecidos por @chechar, se nos ha acumulado un poco… Los de diseño y desarrollo web Mon Dieu! Sir Tim Berners-Lee created the web in France, not Switzerland http://j.mp/wXxhQT HTML5 Cross Browser Polyfills. The All-In-One Entirely-Not-Alphabetical No-Bullshit Guide to HTML5 Fallbacks http://j.mp/wIqbvV video.js. vídeo [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Después de un fin de semana de no recoger los mejores enlaces aparecidos por <a href="http://twitter.com/chechar">@chechar</a>, se nos ha acumulado un poco…</p><h3>Los de diseño y desarrollo web</h3><blockquote><p lang="en">Mon Dieu! Sir Tim Berners-Lee created the web in France, not Switzerland <a href="http://j.mp/wXxhQT" hreflang="en">http://j.mp/wXxhQT</a></p></blockquote><blockquote><p lang="en">HTML5 Cross Browser Polyfills. The All-In-One Entirely-Not-Alphabetical No-Bullshit Guide to HTML5 Fallbacks <a href="http://j.mp/wIqbvV">http://j.mp/wIqbvV</a></p></blockquote><blockquote><p>video.js. vídeo html con ‘fallback’ a flash <a href="http://j.mp/wWYRpu" hreflang="en">http://j.mp/wWYRpu</a></p></blockquote><blockquote><p>#interfaces *muy* interesante, *muy* de acuerdo: <span lang="en">Bring Back the Stylus! <a href="http://j.mp/wYwNKz">http://j.mp/wYwNKz</a></span></p></blockquote><blockquote><p>otro gran recurso #webdev: <a href="http://css3clickchart.com/" hreflang="en">http://css3clickchart.com/</a></p></blockquote><blockquote><p>y otro más: docs de HTML, CSS JS y el DOM (de la MDN) y jQuery y PHP (oficiales), bien indexadas… <a href="http://dochub.io/" hreflang="en">http://dochub.io/</a></p></blockquote><blockquote><p lang="en">#infoviz Rickshaw: A JavaScript toolkit for creating interactive time series graphs <a href="http://j.mp/whPHAl">http://j.mp/whPHAl</a></p></blockquote><blockquote><p>curso rápido HTML5 (HTML, CSS, etiquetas específicas, Canvas) de Microsoft, en castellano, vía <a href="http://twitter.com/genbetadev">@genbetadev</a> <a href="http://j.mp/yb43S2">http://j.mp/yb43S2</a></p></blockquote><blockquote><p lang="en">RT <a href="http://twitter.com/brucel">@brucel</a> Confused about which #HTML5/CSS3/etc features to use? When to use polyfills? <a href="http://html5please.us">http://html5please.us</a> is here to help! via <a href="http://twitter.com/paul_irish">@paul_irish</a></p></blockquote><blockquote><p>MUY de acuerdo #webdev #ibooks2 <span lang="en">We need a standard zipped HTML file format <a href="http://j.mp/yClIgx">http://j.mp/yClIgx</a></span></p></blockquote><blockquote><p>Ojo al cambio en el algoritmo… <span lang="en">Official Google Webmaster Central Blog: Page layout algorithm improvement <a href="http://j.mp/AtnfMd">http://j.mp/AtnfMd</a></span></p></blockquote><blockquote><p>Nokia tiene un mapamundi en webgl… <a href="http://j.mp/zonds3">http://j.mp/zonds3</a></p></blockquote><blockquote><p>un repaso a las posibles alternativas para tablas HTML+CSS ‘responsive’ <a href="http://j.mp/zbCka4" hreflang="en">http://j.mp/zbCka4</a></p></blockquote><blockquote><p><a href="http://mobilewebbestpractices.com/" hreflang="en">http://mobilewebbestpractices.com/</a></p></blockquote><h3>Los tecnológicos</h3><blockquote><p lang="en">#molamazo Kinect and Windows Phone combine to create holographic game engine <a href="http://j.mp/wX1Hrf">http://j.mp/wX1Hrf</a></p></blockquote><blockquote><p lang="en">#technostalgia Neo Geo! <a href="http://j.mp/zOUrFN">http://j.mp/zOUrFN</a></p></blockquote><blockquote><p>desde las primeras herramientas de cálculo hasta los ordenadores actuales, en dos minutos… <a href="http://j.mp/w2kFOA">http://j.mp/w2kFOA</a></p></blockquote><blockquote><p lang="en">RT <a href="http://twitter.com/brucel">@brucel</a> RT <a href="http://twitter.com/lturrentine">@lturrentine</a>: 4K of IBM memory found in my grandpa’s pole barn, captured in a 692K photo. <a href="http://bit.ly/w3BunI">http://bit.ly/w3BunI</a> via <a href="http://twitter.com/simonstl">@simonstl</a></p></blockquote><blockquote><p lang="en">How Google Spawned The 384-Chip Server <a href="http://j.mp/wmxN5X">http://j.mp/wmxN5X</a></p></blockquote><blockquote><p lang="en">Tom Bissell on the making of ‘Madden NFL’ <span lang="es">(probablemente la mayor franquicia de videojuegos de la historia)</span> <a href="http://j.mp/A7pnPB">http://j.mp/A7pnPB</a></p></blockquote><blockquote><p>#longreads Sobre el futuro de YouTube y los contenidos de vídeo para consumo ¿masivo? <span lang="en">Streaming Dreams <a href="http://j.mp/xItUL0">http://j.mp/xItUL0</a></span></p></blockquote><blockquote><p>Doom (el juego, sí) para calculadoras científicas. viva la ley de Moore <a href="http://j.mp/yVPA0z" hreflang="en">http://j.mp/yVPA0z</a></p></blockquote><h3>Dos de visualización</h3><blockquote><p>arte + visualización <a href="http://j.mp/yv580A" hreflang="en">http://j.mp/yv580A</a></p></blockquote><blockquote><p lang="en">RT <a href="http://twitter.com/mathtourist">@mathtourist</a>: Visualizing Classical Music as a Roller Coaster Ride – The Atlantic <a href="http://bit.ly/zjUXvi">http://bit.ly/zjUXvi</a></p></blockquote><h3>De propiedad intelectual…</h3><blockquote><p>de arte y apropiación… y los problemas que conlleva para la propiedad intelectual. en el NYT <a href="http://j.mp/A7a2YQ" hreflang="en">http://j.mp/A7a2YQ</a></p></blockquote><blockquote><p lang="en">Why the feds smashed Megaupload. <span lang="es">de Ars Technica, que no es exactamente</span> ‘pro big content’ <a href="http://j.mp/yGIp8s">http://j.mp/yGIp8s</a></p></blockquote><blockquote><p>Coincido prácticamente al 100%: El cierre de Megaupload en un campo que puede tener puertas <a href="http://www.error500.net/articulo/el-cierre-megaupload-en-un-campo-que-puede-tener-puertas">http://www.error500.net/articulo/el-cierre-megaupload-en-un-campo-que-puede-tener-puertas</a></p></blockquote><blockquote><p lang="en">The Cost of Knowledge. Researchers taking a stand against Elsevier. #openaccess <a href="http://j.mp/w8GCDn">http://j.mp/w8GCDn</a></p></blockquote><blockquote><p lang="en">#openaccess :-) The Royal Society opens up permanently <a href="http://j.mp/wpANF4">http://j.mp/wpANF4</a></p></blockquote><h3>Y el visual para cerrar</h3><blockquote><p>RT <a href="http://twitter.com/esenabre">@esenabre</a> Recordando esa Rapsodia Húngara nº 2 de Liszt interpretada por Tom &amp; Jerry</p></blockquote><p><a href="http://obm.corcoles.net/20120129/los-tuitlinks-de-la-semana-30-edicion-jumbo/"><em>Click here to view the embedded video.</em></a></p></div>
    </content>
    <updated>2012-01-29T16:06:26Z</updated>
    <category term="CSS (y m&#xE1;s)"/>
    <category term="Enlaces"/>
    <category term="Le&#xED;do por ah&#xED;..."/>
    <category term="tuitlinks"/>
    <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-01-29T19:59:10Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.anieto2k.com/2012/01/29/twitterweek-2012-01-29/</id>
    <link href="http://feedproxy.google.com/~r/anieto2k/Xzqf/~3/BtW0c48NAhQ/" rel="alternate" type="text/html"/>
    <title>TwitterWeek – 2012-01-29</title>
    <summary>En mi twitter he publicado estos enlaces que creo os pueden interesar. http://t.co/76AuAhg3 &lt;-- Font.js, potente librería para trabajar con fuentes desde #javascript # http://t.co/oVcAKegD &lt;-- Pure.js, un motor de plantillas avanzado en #javascript con directivas de reemplazo. # http://t.co/uiptJt7X &lt;-- WordPress Transients, ejemplos prácticos de opciones que caducan con el tiempo.http://bit.ly/wxZtyZ # http://t.co/2lOVUiHC &lt;-- [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">En <a href="http://www.twitter.com/anieto2k">mi twitter</a> he publicado estos enlaces que creo os pueden interesar.<ul class="aktt_tweet_digest">
	<li><a href="http://t.co/76AuAhg3" rel="nofollow">http://t.co/76AuAhg3</a> &lt;-- Font.js, potente librería para trabajar con fuentes desde #<a class="aktt_hashtag" href="http://search.twitter.com/search?q=%23javascript">javascript</a> <a class="aktt_tweet_time" href="http://twitter.com/aNieto2k/statuses/161718141179801600">#</a></li>
	<li><a href="http://t.co/oVcAKegD" rel="nofollow">http://t.co/oVcAKegD</a>  &lt;-- Pure.js, un motor de plantillas avanzado en #<a class="aktt_hashtag" href="http://search.twitter.com/search?q=%23javascript">javascript</a> con directivas de reemplazo. <a class="aktt_tweet_time" href="http://twitter.com/aNieto2k/statuses/161718699345190912">#</a></li>
	<li><a href="http://t.co/uiptJt7X" rel="nofollow">http://t.co/uiptJt7X</a> &lt;-- WordPress Transients, ejemplos prácticos de opciones que caducan con el tiempo.<a href="http://bit.ly/wxZtyZ" rel="nofollow">http://bit.ly/wxZtyZ</a> <a class="aktt_tweet_time" href="http://twitter.com/aNieto2k/statuses/161744960775921664">#</a></li>
	<li><a href="http://t.co/2lOVUiHC" rel="nofollow">http://t.co/2lOVUiHC</a> &lt;-- Server-Sent Events, envia eventos al servidor desde #<a class="aktt_hashtag" href="http://search.twitter.com/search?q=%23javascript">javascript</a> <a class="aktt_tweet_time" href="http://twitter.com/aNieto2k/statuses/161842970579050496">#</a></li>
	<li><a href="http://t.co/GEZ30nkM" rel="nofollow">http://t.co/GEZ30nkM</a>  &lt;-- Jerarquia de ejecución de un theme de #<a class="aktt_hashtag" href="http://search.twitter.com/search?q=%23wordpress">wordpress</a> <a class="aktt_tweet_time" href="http://twitter.com/aNieto2k/statuses/162442306492960770">#</a></li>
	<li><a href="http://t.co/EH0Gg1R5" rel="nofollow">http://t.co/EH0Gg1R5</a> &lt;-- Explorando el modelo MVC de cliente con Backbone.js <a class="aktt_tweet_time" href="http://twitter.com/aNieto2k/statuses/162553519889588224">#</a></li>
	<li><a href="http://t.co/Lyh4QbmT" rel="nofollow">http://t.co/Lyh4QbmT</a>  &lt;-- Usando la Vibrator API – Part of WebAPI: by @<a class="aktt_username" href="http://twitter.com/robertnyman">robertnyman</a> (RT @<a class="aktt_username" href="http://twitter.com/paulrouget">paulrouget</a> ) <a class="aktt_tweet_time" href="http://twitter.com/aNieto2k/statuses/162557679045316608">#</a></li>
	<li><a href="http://t.co/G6YpjMYC" rel="nofollow">http://t.co/G6YpjMYC</a> &lt;-- Dust.js, motor de plantillas para #<a class="aktt_hashtag" href="http://search.twitter.com/search?q=%23javascript">javascript</a> pensado para separar limpiamente nuestro código. <a class="aktt_tweet_time" href="http://twitter.com/aNieto2k/statuses/162827844962099200">#</a></li>
	<li><a href="http://t.co/cWOE7ZZ3" rel="nofollow">http://t.co/cWOE7ZZ3</a> &lt;-- Creando ficheros mediante BlobBuilder del File API de #<a class="aktt_hashtag" href="http://search.twitter.com/search?q=%23javascript">javascript</a> #interesante <a class="aktt_tweet_time" href="http://twitter.com/aNieto2k/statuses/163030030048432128">#</a></li>
</ul>
<h3>Artículos relacionados</h3>
<ul><li><a href="http://www.anieto2k.com/2012/01/22/twitterweek-2012-01-22/" rel="bookmark" title="Permanent Link: TwitterWeek &#x2013; 2012-01-22">TwitterWeek – 2012-01-22</a></li><li><a href="http://www.anieto2k.com/2012/01/01/twitterweek-2012-01-01/" rel="bookmark" title="Permanent Link: TwitterWeek &#x2013; 2012-01-01">TwitterWeek – 2012-01-01</a></li><li><a href="http://www.anieto2k.com/2012/01/08/speech-javascript-api-habla-con-las-paginas-web/" rel="bookmark" title="Permanent Link: Speech Javascript API, habla con las p&#xE1;ginas web">Speech Javascript API, habla con las páginas web</a></li><li><a href="http://www.anieto2k.com/2012/01/15/twitterweek-2012-01-15/" rel="bookmark" title="Permanent Link: TwitterWeek &#x2013; 2012-01-15">TwitterWeek – 2012-01-15</a></li><li><a href="http://www.anieto2k.com/2012/01/08/twitterweek-2012-01-08/" rel="bookmark" title="Permanent Link: TwitterWeek &#x2013; 2012-01-08">TwitterWeek – 2012-01-08</a></li></ul><p><a href="http://www.anieto2k.com" id="209.85.224.88"><img alt="aNieto2k" rel="209.85.224.88" src="http://www.anieto2k.com/favicon.ico"/></a></p><img height="1" src="http://feeds.feedburner.com/~r/anieto2k/Xzqf/~4/BtW0c48NAhQ" width="1"/></div>
    </content>
    <updated>2012-01-29T10:15:00Z</updated>
    <category term="tweets"/>
    <category term="tweet"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://www.anieto2k.com/2012/01/29/twitterweek-2012-01-29/</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-01-29T19:59:29Z</updated>
    </source>
  </entry>

  <entry xml:lang="es">
    <id>http://obm.corcoles.net/?p=7263</id>
    <link href="http://obm.corcoles.net/20120128/al-construir/" rel="alternate" type="text/html"/>
    <title>Al construir</title>
    <summary>Lo que tenéis aquí encima es una fantástica charla dada por Wilson Miner, que creo que debería ser de consumo obligatorio para todos los interesados en el diseño y desarrollo de productos interactivos de algún tipo. Miner se autodescribe como diseñador y desarrollador web. Entre sus méritos se cuentan un papel central en el rediseño [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://obm.corcoles.net/20120128/al-construir/"><em>Click here to view the embedded video.</em></a></p><hr/><p>Lo que tenéis aquí encima es una fantástica charla dada por <a href="http://www.wilsonminer.com/about/" hreflang="en">Wilson Miner</a>, que creo que debería ser de consumo obligatorio para todos los interesados en el diseño y desarrollo de productos interactivos de algún tipo.</p><p>Miner se autodescribe como diseñador y desarrollador web. Entre sus méritos se cuentan un papel central en el rediseño de apple.com hacia 2006 (que todavía marca gran parte de su aspecto actual) y haber participado de manera muy significativa en el desarrollo del framework Django (en su parte más gráfica). Ahi es nada.</p><p>El marco de la charla era la conferencia <a href="http://2011.buildconf.com/" hreflang="en">Build 2011</a> y me la he encontrado <a hreflang="en">en webmonkey</a>.</p><p>Como ya ha pasado alguna vez, me ha parecido lo suficientemente interesante como para querer hacerla llegar a quien no domine lo bastante el inglés, o sea que aquí abajo tenéis una transcripción/traducción. Mucho más recomendable ver el vídeo, pero por si acaso, aquí tenéis :-).</p><hr/><p>No voy a hablar de Apple hoy. Debería mencionar que hubo más gente implicada en diseñar apple.com. Eso, a veces, se saca de contexto.</p><p>Mi mujer me ha dicho que no debería hacer esto, pero creo que os debo algún tipo de advertencia antes de comenzar. Esta va a ser una charla extraña. Nunca antes he hecho nada exactamente como esto. Así que estoy nervioso, pero un poco emocionado. Pero quiero daros una pequeña justificación, de salida, de por qué voy dar esta extraña charla. Yo, como todos, creo, a veces, en el pasado he sido muy cínico sobre el potencial de lo que hacemos. He dicho con frecuencia, en momentos de frustración, “no es más que una web, no va a cambiar el mundo, supéralo”. Pero sí, creo, y hemos visto muchas de las razones, diría, hoy, que este es un momento especialmente emocionante para diseñar interfaces y herramientas y productos interactivos digitales. Y quiero compartir con vosotros algunas de las experiencias e información que he encontrado recientemente que han hecho que pensara así. No os voy a decir qué hacer con ello. No tengo muchos consejos para vosotros hoy. Pero espero poder compartir por qué estoy tan emocionado por hacer el trabajo que hacemos, ahora mismo, en este punto del mundo.</p><p><img alt="Foto de una casa de piedra" class="aligncenter size-full wp-image-7264" height="326" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image001.png" title="Imagen 1" width="580"/></p><p>Comenzaré por mi casa. No vivo aquí ahora, pero esta es la casa en que crecí. Mis amigos decían que vivía en un museo. Y era más o menos cierto. Estaba rodeado de colecciones. Muebles victorianos, viejos libros polvorientos, bicicletas, coches, imprentas, instrumentos musicales, equipos estéreo, ordenadores…</p><p>Cuando murió mi padre el año pasado, todas estas cosas, que eran <em>sus</em> cosas, volvieron a salir a la superficie de mi vida.</p><p><img alt="Foto de un coche, un Porsche" class="aligncenter size-full wp-image-7265" height="327" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image002.png" title="Imagen 2" width="580"/></p><p>Le encantaban los coches. Este es el coche que se compró después de su primer tratamiento de quimioterapia. Porque dijo que nadie le iba a decir a un profesor de universidad, con cáncer, que no podía conducir un Porsche.</p><p><img alt="Foto de un ni&#xF1;o, una tienda de c&#xE1;mping y un coche" class="aligncenter size-full wp-image-7266" height="327" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image003.png" title="Imagen 3" width="580"/></p><p>Este es el coche que usó para llevarme a casa desde el hospital, cuando nací. Cuando yo era niño él coleccionaba coches clásicos. Le recordaban los coches con que soñaba de joven.</p><p><img alt="Foto de un coche cl&#xE1;sico" class="aligncenter size-full wp-image-7267" height="328" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image004.png" title="Imagen 4" width="581"/></p><p>Cuando el dinero escaseó, este es el coche que no vendió. Porque yo le rogué que lo conservase. Lo usé para mi graduación en el instituto. Le dije que, si alguna vez llegaba a ser mi coche, que no lo vendería nunca.</p><p>Volcamos tanto de nosotros mismos en estas cosas… pero son sólo cosas. Son sólo herramientas, satisfacen una necesidad, nos llevan a donde queremos ir. Pero también son una especie de tótem. Símbolos de nosotros mismos. Son bajeles vacíos; los llenamos con nuestras historias; cambian constantemente, para reflejar nuestros deseos, nuestras esperanzas para el futuro y nuestras mejores imágenes de nosotros mismos.</p><p><img alt="Captura de pantalla de la presentaci&#xF3;n. Cita de Marshall McLuhan. Sigue en el texto" class="aligncenter size-full wp-image-7268" height="326" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image005.png" title="Imagen 5" width="579"/></p><p>“Damos forma a nuestras herramientas y después estas nos dan forma a nosotros.” Ya habéis oído hablar de este tipo antes. Es una cita de <a href="http://es.wikipedia.org/wiki/Marshall_McLuhan">Marshall McLuhan</a>, que… es difícil de describir. Era otro profesor de universidad, y una especie de ‘celebrity’ académica en los sesenta y los setenta. La cita sale de su libro <a href="http://en.wikipedia.org/wiki/Understanding_Media:_The_Extensions_of_Man" hreflang="en">Understanding Media: The Extensions of Man</a>, que salió en 1964. Trata de los medios electrónicos, en especial la televisión, y de su impacto sobre la sociedad y la cultura. Y una de las cosas que dice es que las cosas que hacemos, sea la televisión, o la radio o el teléfono… cada una de estas cosas crea un nuevo entorno.</p><p><img alt="Foto en blanco y negro de un peque&#xF1;o grupo de personas alrededor de una televisi&#xF3;n" class="aligncenter size-full wp-image-7269" height="328" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image006.png" title="Imagen 6" width="580"/></p><p>Al introducir un nuevo medio, y este es una de los términos favoritos de McLuhan –probablemente hayáis oído su frase más célebre, “el medio es el mensaje”– al introducir un nuevo medio en la sociedad, McLuhan dice que cambia nuestra perspectiva, nuestras actitudes, cambia nuestros sentimientos sobre cómo nos relacionamos con el mundo, cambia nuestros sentimientos sobre cosas como la política, o la guerra.</p><p><img alt="Foto de un anuncio antiguo de bombillas" class="aligncenter size-full wp-image-7270" height="326" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image007.png" title="Imagen 7" width="580"/></p><p>Incluso una bombilla, que no tiene ningún contenido, a diferencia de la televisión. McLuhan dice que también la bombilla actúa como medio, crea un nuevo entorno: alarga la jornada de trabajo, cambia cómo y cuándo puede interactuar y reunirse la gente, cambia cómo nos comportamos y por tanto cambia cómo pensamos.</p><p><img alt="Foto en blanco y negro de un coche antiguo" class="aligncenter size-full wp-image-7271" height="326" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image008.png" title="Imagen 8" width="580"/></p><p>El coche es un ejemplo especialmente notable, visible, de este tipo de efecto sobre el entorno. Puede que el coche tenga un aspecto muy diferente por fuera hoy, pero como máquina, de hecho no ha cambiado gran cosa en cien años. Pero pensad en cómo hemos cambiado el mundo a su alrededor: hemos construido autopistas, fábricas, compañías petrolíferas… Hemos cambiado todo nuestro entorno a partir del coche. Hemos cambiado toda nuestra forma de vivir.</p><p>Las ideas de McLuhan eran realmente fascinantes y algo extrañas, y muy adelantadas a su tiempo, pero son difíciles de comunicar después, porque la forma en que las comunicaba él era tan única e idiosincrática. Era un gran creyente en el poder de las palabras combinadas con las imágenes, e incluso música y juegos de palabras, y todas esas cosas, al servicio de la comunicación de una idea. Así que, en ese espíritu, he montado un vídeo breve, con algunas de sus palabras en la primera parte —no es su voz pero sí sus escritos— y en la segunda parte creo que reconoceréis la voz.</p><p><img alt="Captura de v&#xED;deo. La Tierra desde el espacio" class="aligncenter size-full wp-image-7272" height="326" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image009.png" title="Imagen 9" width="580"/></p><p>“Todos los medios son extensiones de alguna facultad humana, mental o física. La rueda es una extensión del pie. Un libro es una extensión del ojo. La ropa es una extensión de la piel. La circuitería eléctrica es una extensión del sistema nervioso central. La extensión de cualquier sentido en particular desplaza al resto de sentidos y cambia la forma en que pensamos, la forma en que vemos el mundo, y a nosotros mismos. Cuando se hacen estos cambios, el hombre cambia.”</p><p>[Voz de Steve Jobs] “Creo que una de las cosas que realmente nos separa de los primates superiores es que somos constructores de herramientas. Leí un estudio que medía la eficiencia del movimiento para diversas especies del planeta. El cóndor usa el mínimo de energía para desplazarse un kilómetro. Los humanos aparecían con una demostración bastante poco impresionante, poco más o menos al cabo de un tercio de la lista. Una demostración bastante poco orgullosa de la cumbre de la creación.</p><p><img alt="Captura de un v&#xED;deo. Una bicicleta en primer&#xED;simo primer plano" class="aligncenter size-full wp-image-7273" height="326" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image010.png" title="Imagen 10" width="580"/></p><p>“O sea que… no quedaba muy bien, pero alguien de<cite lang="en">Scientific American</cite> tuvo la brillante idea de comprobar la eficacia del movimiento de un hombre en bicicleta. Y un hombre en bicicleta, un humano en bicicleta, se carga al cóndor de muchísimo. Y eso es lo que es para mí un ordenador. Lo que un ordenador es para mí es la herramienta más notable que se nos haya ocurrido nunca. Es el equivalente de una bicicleta para nuestras mentes.”</p><p><img alt="Captura de v&#xED;deo. La foto desde el espacio" class="aligncenter size-full wp-image-7274" height="325" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image011.png" title="Imagen 11" width="580"/></p><p>Ese último clip es de un globo que hicieron unos tipos y al que le colocaron una cámara digital. Y lo siguieron con sus iPhones para poder controlar dónde aterrizaba. Pero… tomó imágenes <em>desde el espacio</em>. Me parece alucinante. No tenemos que construir lanzaderas espaciales para cambiar nuestra perspectiva de esa forma. Es impresionante lo que se puede hacer con las herramientas adecuadas.</p><p>Puede que reconozcáis ese clip, puede que reconozcáis algunos de los otros clips, de haberos visto en la web: estoy muy agradecido a todos sus creadores por el permiso para usarlos hoy, y compartiré un enlace al final donde podréis encontrar enlaces a todos esos vídeos y todas las otras cosas a que hago referencia hoy de pasada [<a href="http://www.wilsonminer.com/build2011/" hreflang="en">http://www.wilsonminer.com/build2011/</a>], por si estáis interesados. Y estoy seguro de que reconocéis la voz de Steve Jobs, al final. Me encanta esa idea de los ordenadores: “son como una bicicleta para la mente”. Es una gran forma en que pensar en las herramientas, como extensiones casi biónicas, que nos dan poder, de nuestras propias capacidades humanas.</p><p>McLuhan también tenía algunas cosas que decir sobre los ordenadores. Pero llegó un poco pronto —murió en 1980— para ver lo que probablemente sea el desarrollo de mayor impacto de la evolución de los ordenadores, que es cómo se han vuelto efectivamente invisibles.</p><p><img alt="Foto, en blanco y negro, de una pared llena de interruptores y cables" class="aligncenter size-full wp-image-7275" height="326" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image012.png" title="Imagen 12" width="580"/></p><p>Este es <a href="http://es.wikipedia.org/wiki/ENIAC">ENIAC</a>, el que la mayoría de gente considera el primer ordenador. Y es un enorme objeto industrial. Es, básicamente, una sala llena de tubos e interruptores y enchufes. Se interactúa con él alimentándole tarjetas perforadas, trozos de papel con agujeros, y calculaba y procesaba y escupía una respuesta por el otro lado. Técnicamente, es un ordenador. Pero para nosotros no parece un ordenador. Parece algo viejo, del pasado, algo mecánico.</p><p><img alt="Foto de un ordenador antiguo. Del tama&#xF1;o de una nevera y con una pantalla muy rudimentaria" class="aligncenter size-full wp-image-7276" height="324" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image013.png" title="Imagen 13" width="579"/></p><p>Este es el <a href="http://es.wikipedia.org/wiki/PDP-1">PDP-1</a>, creado en el MIT en 1960, unos quince años más tarde. Lo interesante de este ordenador es que tiene una pantalla.</p><p><img alt="Foto de una persona frente a la pantalla del ordenador de la foto anterior" class="aligncenter size-full wp-image-7277" height="325" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image014.png" title="Imagen 14" width="580"/></p><p>Y un año después de que aparezca, este tipo, <a href="http://en.wikipedia.org/wiki/Steve_Russell" hreflang="en">Steve Russell</a>,  programador, hace básicamente la única cosa lógica que se puede hacer con la primera pantalla de ordenador y crea un juego por ordenador.</p><p><img alt="Primer plano de la pantalla del ordenador. Se aprecian tres puntos que parecen estar en movimiento" class="aligncenter size-full wp-image-7278" height="326" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image015.png" title="Imagen 15" width="579"/></p><p>Este, como habéis visto antes, es <a href="http://es.wikipedia.org/wiki/Spacewar!">SpaceWar!</a>, uno de los primeros juegos por ordenador conocidos. Es un juego para dos jugadores: cada jugador controla una nave espacial que vuela por la pantalla e intentas disparar a la nave del otro jugador mientras intentas evitar ser atrapado por el campo gravitacional de la estrella del centro de la pantalla. De hecho, creo que parece divertido. Pero si piensas en el tipo de cambio que tiene lugar aquí… en vez de alimentar pequeños trozos de papel y esperar una respuesta al otro lado, estás interactuando de forma realmente directa y obteniendo una respuesta en la pantalla. Ahora lo damos por hecho, pero esta viene a ser la historia original de la interacción persona-ordenador. Todo lo que hemos hecho en diseño de interacción, desde entonces hasta ahora, básicamente gira alrededor de esta interacción central entre la persona y la pantalla.</p><p><img alt="Foto del mismo ordenador, rodeado de armarios de perif&#xE9;ricos" class="aligncenter size-full wp-image-7279" height="324" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image016.png" title="Imagen 16" width="580"/></p><p>Así que… redujimos un poco el tamaño del ordenador –ya sólo ocupa una parte de la sala–, le añadimos una pantalla, de forma que se puede interactuar con él de manera funcional, y entonces añadimos una red, y más o menos conectamos juntos los ordenadores, ya conocemos la historia… pero en este momento creo que es interesante que cambia algo: en vez de añadir a la ecuación, comenzamos a quitar cosas, a hacerlas invisibles. Primero nos cargamos la red, creamos redes inalámbricas  de forma que todo pueda estar conectado continuamente. Y hacemos el ordenador algo más pequeño, un poco más ligero, hasta que también empieza a desaparecer.</p><p><img alt="Se ven tres palabras: ordenador, pantalla, red. Ordenador y pantalla aparecen en un color difuminado" class="aligncenter size-full wp-image-7280" height="325" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image017.png" title="Imagen 17." width="579"/></p><p>Y lo que queda, la cosa que todavía vemos y con que podemos interactuar, es la pantalla.</p><p>Cuando pensamos sobre el futuro, en la ciencia ficción, hay pantallas por todos lados. Imaginamos un mundo en que todo el mundo se despierta y va al trabajo y duerme y juega rodeado de pantallas.</p><p><img alt="Captura de una pel&#xED;cula de ciencia ficci&#xF3;n no determinada. Un hombre habla con una ni&#xF1;a por videoconferencia" class="aligncenter size-full wp-image-7281" height="326" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image018.png" title="Imagen 18" width="578"/></p><p>Y hace veinte años, hace diez años incluso, todavía parecía futurístico. Quizá hasta un poco inquietante. Pero si miras a tu alrededor, con atención, de hecho no está tan lejos de cómo vivimos. Pensad en ello. ¿Cuál es vuestro tiempo-hasta-la-pantalla, por la mañana?</p><p><img alt="Foto de una chica en la oscuridad, tumbada en la cama, con la cara iluminada por lo que parece ser una pantalla que est&#xE1; mirando" class="aligncenter size-full wp-image-7282" height="325" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image019.png" title="Imagen 19" width="578"/></p><p>¿Cuánto tardáis desde estar completamente dormidos a estar delante de una pantalla? ¿Cinco segundos? ¿Treinta segundos? ¿Quizá cinco minutos, si os estáis moviendo realmente despacio?</p><p><img alt="Plano tres cuartos de una mujer, en penumbra, con la cara iluminada por la pantalla del m&#xF3;vil que esr&#xE1; mirando" class="aligncenter size-full wp-image-7283" height="325" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image020.png" title="Imagen 20" width="579"/></p><p>¿Cuánto más de nuestro tiempo inactivo pasamos interactuando frente a una pantalla? Esperando el autobús, leyendo el Kindle en el tren, encogidos en el sofá con el iPad… Todos estos huecos, pequeños huecos de nuestras vidas, se están llenando lentamente, o deprisa, de pantallas.</p><p><img alt="Captura de un v&#xED;deo. Tr&#xE1;fco muy denso en una autopista de cinco carriles por sentido" class="aligncenter size-full wp-image-7284" height="325" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image021.png" title="Imagen 21" width="578"/></p><p>El coche dio forma a nuestro entorno en el siglo XX de una forma enorme, tectónica. No creo que sea exagerar decir que la pantalla será igual de importante para dar forma a nuestro entorno en el siglo XXI. Lo que sucede en esas pantallas es bastante importante. Porque las cosas con que elegimos rodearnos darán forma a aquello en que nos convertiremos.</p><p>No hacemos sólo interfaces bonitas: de hecho estamos en el proceso de construir un entorno en el que pasaremos la mayor parte de nuestro tiempo el resto de nuestras vidas. Somos los diseñadores, somos los constructores. ¿Cómo queremos que sea ese entorno? ¿Cómo nos queremos sentir?</p><p>Quiero dejar eso en el ambiente, un momento… Volveremos a ello.</p><p>Pero primero quiero acercarme a ello desde otro ángulo, quiero comenzar con otra cosa. Algo que creo que nos resulta bastante importante, como diseñadores. Creo que es clave de cómo vemos el mundo. Y es la simplicidad.</p><p><img alt="Una diapositiva de la presentaci&#xF3;n. Una receta de cocina sencilla" class="aligncenter size-full wp-image-7285" height="325" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image022.png" title="Imagen 22" width="579"/></p><p>Esto es una receta. Es una receta bastante simple, con pocos ingredientes. La mayor parte de los presentes, si se esforzaran lo suficiente, podrían hacerla.</p><p><img alt="Foto de un m&#xFA;sico" class="aligncenter size-full wp-image-7286" height="324" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image023.png" title="Imagen 23" width="579"/></p><p>Este es mi amigo Mark. A pesar de ser un bombardinista de talento, hace un año Mark no había cocinado nunca nada, en toda su vida. No sabía cómo poner agua a hervir. Llegaba a sentirse físicamente incómodo estando en una cocina. No sabía cómo funcionaba una cocina.</p><p><img alt="Foto de la persona de la foto anterior. A su lado, la misma receta, con un nivel de detalle mucho m&#xE1;s alto" class="aligncenter size-full wp-image-7287" height="324" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image024.png" title="Imagen 24" width="580"/></p><p>Para Mark no existen las recetas sencillas. No existe una receta sencilla para alguien que no sabe cómo funciona una cocina. Comienza explicando qué aspecto tienen frutas y verduras.</p><p>Hay una fantástica cita apócrifa sobre el diseño de interacción, que la única interfaz intuitiva es el pezón: todo lo demás se aprende. Damos mucha información y comprensión por sentada porque ya la hemos aprendido. Y como diseñadores a veces nos engañamos a pensar que nuestras soluciones son simples, o que son intuitivas, cuando en realidad se apoyan sobre conjuntos de información y comprensión adquirida bastante complejos.</p><p><img alt="Diagrama. Se ve una revista abierta y se sobreimponen sobre ella fechas e instrucciones de aspecto complicado" class="aligncenter size-full wp-image-7288" height="324" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image025.png" title="Imagen 25" width="580"/></p><p>Esta es una gran imagen relacionada con los temas que compartía antes, creada por <a href="http://www.subtraction.com/about" hreflang="en">Khoi Vinh</a>. Son instrucciones para usar una revista. Se basa en las páginas de instrucciones  que han comenzado a aparecer con la nueva generación de revistas para iPad, con que inventaban todas estas interacciones complejas y botones ocultos para revelar menús de control y desplazamientos con tres dedos y todo este tipo de cosas. Así que tuvieron que inventar estos arcanos juegos de jeroglíficos para explicarlas a los usuarios que, en su mayoría, no tenían ninguna experiencia con toda la plataforma, para comenzar. Así que Khoi creó la imagen para reirse un poco de ello, una página de instrucciones similar para una revista física: arrastras a la izquierda para pasar, doblas una esquina para marcar la página.</p><p>Resulta divertido porque no nos hacen falta instrucciones para usar una revista. Sabemos cómo funcionan. Pero creo que también muestra la complejidad de su interfaz. Hay muchas convenciones aprendidas en juego, como marcar las páginas, por ejemplo. O que hay que pasar las primeras páginas de anuncios a toda página para llegar al índice. O que las columnas y piezas breves van al inicio y las más largas al final. De hecho, es relativamente complejo.</p><p><img alt="Un anuncio antiguo de Apple. El texto dice: si sabes se&#xF1;alar, sabes usar un Macintosh" class="aligncenter size-full wp-image-7289" height="325" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image026.png" title="Imagen 26" width="579"/></p><p>Como diseñadores constantemente hacemos suposiciones sobre lo que sabe nuestro público, lo que ya han aprendido. Cómo usar el ratón, por ejemplo: en algún momento, todo usuario ha tenido que aprender a usar el ratón. Que se puede hacer clic en el texto subrayado. O que arrastrar el dedo por la pantalla pasa al siguiente cuadro. Pero esas suposiciones están comenzando a cambiar más deprisa que el ritmo al que estamos acostumbrados del pasado.</p><p>La radio necesitó unos 40 años para llegar a una penetración de mercado de quince millones de usuarios. La televisión tardó unos 10 años para llegar al mismo número. El iPhone tardó menos de 3 años. YouTube lo hizo en unos 6 meses.</p><p><img alt="Radio: 40 a&#xF1;os. Televisi&#xF3;n: 10 a&#xF1;os. iPhone: 3 a&#xF1;os. YouTube: 6 meses" class="aligncenter size-full wp-image-7290" height="324" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image027.png" title="Imagen 27" width="579"/></p><p>Puede que ya hayáis oído algunos de estos números: han circulado mucho, son muy convenientes cuando intentas evidenciar el cambio de ritmo del cambio tecnológico. Hay gente que ha señalado, creo que con mucha razón, que pueden resultar engañosos, una comparación de peras con naranjas: la adopción de YouTube es una cosa muy diferente de la adopción de algo como la radio, que implica la compra de un objeto físico que la gente mete en su casa, y una red de emisión y toda una infraestructura. Pero ambas actúan como una especie de agente de cambio del entorno. Si pensamos en ellas como herramientas, en el sentido de McLuhan de la palabra, como nuevos medios que crean nuevos entornos, sí índica un mayor ritmo de cambio, en que creamos estos nuevos entornos mucho más deprisa que en el pasado. Y tenemos menos tiempo para acostumbrarnos a ellos, aprenderlos.</p><p>Así que no basta con confiar en lo que sabemos, o en lo que creemos que sabemos, o en lo que esperamos que sepan los demás. Si el entorno cambia constantemente necesitamos aprender constantemente. Y para hacerlo tenemos que desprendernos de lo que sabemos. Los budistas llaman a esto “la mente que no sabe”. Los maestros zen preguntan a sus estudiantes “¿quién eres?”. Crees que lo sabes, pero no lo sabes. Es la mente que no sabe la que está abierta al aprendizaje, al descubrimiento, a ver la verdad de la forma del mundo como es realmente, no como esperamos que sea.</p><p><img alt="Diapositiva de la presentaci&#xF3;n. Cita de Alistair Smith. Sigue en el texto" class="aligncenter size-full wp-image-7291" height="325" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image028.png" title="Imagen 28" width="578"/></p><p>“En tiempos de cambio, los que aprenden son los que heredarán el mundo, mientras que los que saben están maravillosamente preparados para un mundo que ya no existe.”</p><p>McLuhan dijo que si quieres entender este tipo de rápido cambio tecnológico, deberías mirar qué están haciendo los artistas.</p><p><img alt="Captura de v&#xED;deo. Primer&#xED;simo primer plano de Marshall McLuhan" class="aligncenter size-full wp-image-7303" height="324" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image029.png" title="Imagen 29" width="578"/></p><p>“El artista siempre está un paso por delante de la tecnología, y está en realidad implicado en darte imágenes de qué tipo de efectos es probable que tenga sobre ti, más adelante. El <i>pop art</i> simplemente te dice que la única forma de arte que te queda hoy es tu propio entorno natural. Ahora hay que programar, como si dijésemos, una obra de arte y un entorno. Así que, tener que enfrentarse de golpe con la necesidad de usar el propio entorno humano como forma de arte es una forma de llamar la atención sobre el hecho de que los nuevos entornos creados por los nuevos medios requieren una cierta cantidad de programación y control humanos.”</p><p><img alt="Foto de una instalaci&#xF3;n art&#xED;stica, vista desde fuera de la sala. Luces de neon dibujan formas sobre una pared de la sala" class="aligncenter size-full wp-image-7292" height="325" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image030.png" title="Imagen 30" width="579"/></p><p>Esta es una instalación reciente del artista <a href="http://en.wikipedia.org/wiki/Robert_Irwin_%28artist%29" hreflang="en">Robert Irwin</a>. La forma en que trabaja, es invitado a un lugar como el Museo de Arte Contemporáneo de San Diego, en este caso, y va hasta allí para lo que él llama “estar disponible y responder”. Observa el espacio. A veces es una galería, a veces es un espacio público, como un parque o un jardín, lo observa y responde a lo que ve. Le añade algo. O cambia algo. De una forma que transforma el espacio. Así que cuando la gente accede al espacio, experimentan algo diferente. Perciben el espacio de manera diferente.</p><p><img alt="Foto de una instalaci&#xF3;n. Personas caminan por una enorme sala con enormes placas de color en suelo y techo" class="aligncenter size-full wp-image-7293" height="326" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image031.png" title="Imagen 31" width="580"/></p><p>Ese es el arte que crea. Es esa experiencia de que te cambien tu percepción ligeramente, y que te hagan ser consciente de tu propia percepción a base de que la manipulen.</p><p><img alt="Cuadro abstracto. L&#xED;neas irregulares de color sobre un fondo de color curri" class="aligncenter size-full wp-image-7294" height="326" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image032.png" title="Imagen 32" width="578"/></p><p>Este es un cuadro que creó en los cincuenta, como los que llamó expresionistas abstractos de segunda generación, al final del movimiento, intentando crear cuadros ricos y emocionantes, que no intentan representar nada sino que intentan crear una sensación de energía y experiencia. Mientras trabaja con estos cuadros abstractos uno de los temas que surge continuamente es que la gente sigue viendo imágenes en ellos. Ven una nube en el cielo, un paisaje o lo que sea. O sea que intenta pensar qué puede hacer para eliminar ese tipo de imaginería.</p><p><img alt="Cuadro abstracto. Tres l&#xED;neas sobre un fonde de color uniforme" class="aligncenter size-full wp-image-7295" height="324" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image033.png" title="Imagen 33" width="579"/></p><p>Y crea estos cuadros que, básicamente, son sólo líneas rectas. Intenta obtener esa misma energía con menos elementos, sólo color y espacio y líneas. Y entonces da un paso más.</p><p><img alt="Primer&#xED;simo primer plano de un cuadro abstracto. Puntos verdes y rojos en un patr&#xF3;n regular" class="aligncenter size-full wp-image-7296" height="324" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image034.png" title="Imagen 34" width="579"/></p><p>Creó cuadros con puntos rojos y verdes alternados, que si estás a poca distancia no parecen nada, como un lienzo en blanco. Pero si te quedas ahí y miras suficiente tiempo, hay una energía, es como si vibrase. Percibes la energía del color incluso cuando no ves nada. Así que, con cada paso, elimina elementos. Para que puedas tener más control. Comienza a obsesionarse no sólo con controlar el lienzo, sino todo el espacio a su alrededor, las paredes y la iluminación y toda la sala. Va a las galerías en que se instala su obra por la noche y pinta las paredes obsesivamente y sustituye las luces.</p><p><img alt="Foto de una vidriera que mira hacia Manhattan desde el MOMA" class="aligncenter size-full wp-image-7297" height="325" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image035.png" title="Imagen 35" width="580"/></p><p>Entonces, en 1970, una joven curadora del MOMA, en Nueva York, se da cuenta de que una pequeña sala del tercer piso del museo estará vacía unos meses e intenta obtener respaldo para una instalación de este controvertido artista, Robert Irwin. Le dicen que no, pero también confirman básicamente que la sala estará vacía. Así que, bajo su propia autoridad, le invita a hacerlo de todas formas.</p><p>Así que va a Nueva York a hacer una instalación en el MOMA que el MOMA no había pedido y que no iba a pagar. Comienza a ir al museo por la noche, cuando la mayoría de visitantes se ha ido y se queda hasta que se van los vigilantes. Y vuelve temprano por la mañana, antes de que llegue nadie. Y pasa el tiempo allí intentando entender qué puede hacer con esa sala horrible, apartada en una esquina del tercer piso del MOMA en Nueva York. Al llegar planeaba hacer uno del tipo de experimentos que había estado haciendo en su estudio, parte de su arsenal de trucos. Pero la sala es tan extraña y tan fea que, sencillamente, no funciona. Nada parece correcto.</p><p><img alt="Robert Irwin y un colaborador trabajan sobre el suelo de una sala" class="aligncenter size-full wp-image-7298" height="325" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image036.png" title="Imagen 36" width="579"/></p><p>Así que, en vez de poner algo en la sala, cambia la sala en sí. Limpia las paredes y repara el suelo y después le hace tres cosas a la sala: primero cambia las luces —por cierto: no hay fotos de la instalación, y muy raramente hay fotos de su obra, pero he usado fotos de su obra posterior en que usa técnicas similares para que os podáis hacer una idea de qué estaba haciendo—, sustituye un banco de luces fluorescentes de la sala con una serie de colores cálidos y fríos alternados. En segundo lugar, coloca una cuerda de piano en tensión, a la altura de los ojos, frente a una de las paredes de la sala, una de las paredes más feas e intrusivas, de forma que al mirarla, resulta difícil enfocar sobre ella: el ojo no se queda allí, es como si eliminase del espacio la pared intrusiva. La tercera cosa, cuelga una gran sábana de tejido translúcido a mitad de la altura del techo, de forma que la mitad de las luces que ha instalado titilan al otro lado. Y eso es todo. Es toda la instalación. No hay ninguna placa ni atribución, ni ninguna señal de que haya arte en la sala. Como visitante, sólo tienes que pasar por esta sala vacía del museo y decidir qué está pasando. Si era intencional, o si estaba acabado o, realmente, qué estaba pasando exactamente.</p><p>Así que la instalación permanece seis meses y, literalmente, no hay reacción, ni del museo ni de nadie. Este tipo, literalmente, se cuela en el MOMA, donde cada centímetro de espacio está cuidadosamente planeado, deja su huella en una sala y nadie se da cuenta. Pero para Irwin esto cambia las reglas de todo. Vuelve a su estudio en Los Ángeles y, básicamente, lo recoge todo y lo cierra. Todo lo que hace desde ese momento fluye desde esa sala en el MOMA en Nueva York.</p><p><img alt="Robert Irwin en una sala en que se est&#xE1; montando una de sus instalaciones" class="aligncenter size-full wp-image-7299" height="324" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image037.png" title="Imagen 37" width="579"/></p><p>Todo lo que Irwin hizo en esa sala era una respuesta a la sala misma. No creó la sala. No la controlaba. Le respondió. Añadió tres cosas simples, tres cosas completamente ordinarias e inocuas. Pero, a causa de la forma en que las integró en la sala, tuvieron un impacto. Se convirtieron en sus gestos decisivos. No sólo cambiaba el aspecto de la sala, cambiaba la sensación que provocaba.</p><p>Los cambios más mínimos pueden ser transformativos. Pero tienen que ser los cambios correctos. Para descubrir cuáles son hace falta paciencia. Hay que prestar atención. Tienes que estar disponible y responder.</p><p>Hemos hablado mucho últimamente de diseño ‘responsive’, sensible, y creo que es fantástico, porque es uno de esos pequeños cambios en la manera de pensar que abre de par en par un nuevo juego de preguntas y posibilidades. Esa sensibilidad no es sólo algo que podemos incorporarle al producto: es una actitud que podemos adoptar. Podemos aprender a escuchar al entorno cambiante, para estar disponibles y responder. Como Robert Irwin en esa sala del MOMA, podemos llegar con todo nuestro arsenal de trucos, con todas nuestras soluciones comprobadas y ciertas, y puede que no logremos nuestro objetivo. Pero podemos quedarnos en la sala y podemos seguir intentándolo hasta encontrar la pieza que encaja.</p><p>Hay una cita sobre arquitectura, de John Ruskin, un crítico de arte de la Inglaterra victoriana.</p><p><img alt="Cita comentada en el texto" class="aligncenter size-full wp-image-7300" height="326" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image038.png" title="Imagen 38" width="579"/></p><p>Dijo “al construir, pensemos que construimos para siempre. Que no sea sólo para el deleite actual o para el uso actual. Que sea una obra por la que nos den las gracias nuestros descendientes”.</p><p>No tendemos a pensar en que las cosas que construimos durarán mucho. Sitios web y “apps”. Tienen una vida media corta. Incluso las plataformas y sistemas operativos más longevos no son más que un punto en la línea temporal, comparados con una casa, o un coche, o una silla.</p><p>Pero vosotros y yo no diseñamos cosas que permanecen inmóviles. Diseñamos organismos. Diseñamos ecosistemas. Elegimos los mejores atributos para la supervivencia, los ensamblamos y los lanzamos al mundo. Y muchos de ellos mueren. Pero los que sobreviven son los que se adaptan al entorno. Evolucionan. Mutan. Responden. Las cosas que construimos tienen vidas tan breves que creo que nos podemos volver miopes. A veces nuestra imaginación no llega tan lejos en el futuro, y no miramos muy hacia atrás buscando inspiración. Cuando diseñamos la nueva generación de herramientas interactivas para este ecosistema de pantallas, tenemos un horizonte por delante más grande que simplemente la siguiente plataforma de software o la siguiente versión de una tecnología. Tenemos un linaje tras nosotros más grande que sólo la web, o el diseño de software, o incluso que los ordenadores.</p><p>Steve Jobs decía que lo que nos separa de los primates superiores es que somos constructores de herramientas. Creamos cosas. Creamos cosas que nos cambian la vida y creamos cosas que cambian el mundo. Es una tradición grande y duradera. Damos forma a nuestras herramientas y nuestras herramientas nos dan forma a nosotros. Somos un producto de nuestro mundo, y nuestro mundo está hecho de cosas. Cosas que usamos, cosas que amamos, cosas que llevamos encima y las cosas que creamos. Somos producto de nuestro mundo, pero también somos su diseñador. El diseño son las elecciones que hacemos sobre el mundo en que queremos vivir. Elegimos dónde vivir, aquello con que nos rodeamos, en qué gastar nuestro tiempo y energía. Hacemos nuestro mundo lo que es y nos convertimos en el tipo de gente que lo habita.</p><p>Cuando desaparecemos, todo lo que queda de nosotros es lo que hemos creado. Es posible que las cosas que vosotros y yo construimos no dejen una huella visible en la Tierra. Pero todo lo que creamos ocupa un espacio, crea ruido, lucha por nuestra atención. ¿Con qué queremos pasar más tiempo? ¿Qué queremos que nos dé forma? ¿Qué nos nutre? ¿Qué queremos ver crecer?</p><p>Creo que todos tenemos una idea. Y todos tenemos algo que queremos crear  simplemente por la razón de que queremos que exista. Algo pequeño. Pero con significado. ¿Sabéis qué podemos hacer al salir de aquí? Podemos construir cosas. Cosas que le dan un empujoncito al mundo en la que, esperamos, es la dirección correcta. Podemos dejar una marca en el universo. Es una gran profesión.</p><p>Gracias.</p><p><a href="http://wilsonminer.com/build2011"><img alt="wilsonminer.com/build2011" class="aligncenter size-full wp-image-7301" height="325" src="http://obm.corcoles.net/wp-content/uploads/2012/01/image039.png" title="Imagen 39" width="578"/></a></p></div>
    </content>
    <updated>2012-01-28T14:54:29Z</updated>
    <category term="CSS (y m&#xE1;s)"/>
    <category term="Le&#xED;do por ah&#xED;..."/>
    <category term="Lost in translation"/>
    <category term="dise&#xF1;o"/>
    <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-01-29T19:59:10Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.maestrosdelweb.com/?p=22653</id>
    <link href="http://www.maestrosdelweb.com/editorial/piensa-o-realizas-tus-suenos/" rel="alternate" type="text/html"/>
    <title>Es viernes: ¿Piensas o realizas tus sueños?</title>
    <summary>¿Cuánto tiempo inviertes en pensar? planificar, desear y analizar antes de accionar. Hace unos días conversaba con una amiga y me decía que ella piensa demasiado las cosas, pero que al momento de -hacer- simplemente encuentras muchas excusas que no le permiten ejecutar. Creo que en ocasiones podemos sabotear nuestros sueños, aspiraciones y planes porque [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><strong>¿Cuánto tiempo inviertes en pensar?</strong> planificar, desear y analizar antes de accionar. Hace unos días conversaba con una amiga y me decía que ella piensa demasiado las cosas, pero que al momento de -hacer- simplemente encuentras muchas excusas que no le permiten ejecutar. Creo que en ocasiones podemos sabotear nuestros sueños, aspiraciones y planes porque hemos entrenado más nuestra dinámica de pensar y no alimentamos el hábito de -hacer lo que deseamos-.</p>
<p><a href="http://www.flickr.com/photos/jparmelee/4536027051/"><img alt="&#xBF;Eres de los que hacen o los que piensan?" src="http://www.maestrosdelweb.com/images/2012/01/run.png"/></a></p>
<p>En esta ocasión no quiero hablar de trabajo, aunque aplica muy bien cuando <a href="http://www.maestrosdelweb.com/editorial/es-viernes-pensar-demasiado-y-ejecutar-poco-productividad/">piensas demasiado y ejecutas poco</a>. Quisiera que reflexionemos sobre nuestras dinámica de pensar tanto las cosas, planificar y cuando llega el momento de ejecutar simplemente no lo hacemos ¿por qué somos así? ¿qué nos sabotea? ¿acaso nuestra mente?¿nuestra autoestima?¿tenemos temor? ¿no creemos que lo vamos a lograr? piensa por un momento tu respuesta y evalúa las causas.</p>
<h3>¿Cuáles son tus metas personales?</h3>
<p>Cuando yo pienso en mis metas personales me gusta verlas por año a corto plazo, por etapa a mediano plazo y por aspiraciones de largo plazo. Voy a explicar mi dinámica para que lo entiendas, dialoguemos un poco sobre ese esquema y me cuentes si puedes organizar las tuyas de esa manera o me compartas tu propio esquema.</p>
<ul>
<li><strong>Metas a corto plazo:</strong> Son todas aquellas metas que me propongo realizar en un tiempo corto y definido. <strong>Por ejemplo</strong>, durante el mes de enero tengo como meta leer una biografía de 500 páginas, correr media maratón (21Kms), reducir el azúcar de mi comida y tonificar mis brazos. Como verás, son cosas personales y sencillas que me satisfacen. </li>
<li><strong>Metas a mediano plazo:</strong> Estas metas están ligadas con periodos más largos que llevan un proceso de dedicación y disciplina. <strong>Por ejemplo</strong>, durante 4 meses estaré entrenando para realizar mi primera maratón (42kms) para ello el entreno es riguroso y disciplinado. Además, quiero perder 5 libras, tonificar abdomen y piernas. Tengo la meta de terminar de escribir mi segundo ebook y compartirlo con ustedes en este medio.</li>
<li><strong>Metas a largo plazo: </strong>El tipo de metas que llevan más tiempo, requieren constancia y que sean realistas. Tampoco debemos menospreciarlas porque se ven lejanas, al contrario requieren más reto precisamente porque el proceso es más sostenido. <strong>Por ejemplo</strong>, mi meta a largo plazo es terminar mi maestría y mejorar mi inglés. Son dos metas sencillas, para cumplir durante un periodo de año y medio de forma muy realista. </li>
</ul>
<p>Esto es sólo un ejemplo de todas las posibilidades para armar tu esquema de metas, para estructurarlas de tal forma que <a href="http://www.maestrosdelweb.com/editorial/es-viernes-son-alcanzables-tus-propositos/">sean posibles realizarlas</a>. En ocasiones nuestras metas pueden ser más prontas como arreglar el jardín, <a href="http://www.maestrosdelweb.com/editorial/es-viernes-ordenar-tu-escritorio/">cambiar nuestro escritorio</a> de lugar, sacar de tu armario la ropa que ya no usas, <a href="http://www.maestrosdelweb.com/editorial/es-viernes-disfruta-de-tu-familia/">visitar a tu familia</a> que no ves en meses o caminar por la playa un fin de semana. Sólo espero que en esta lecturas puedas encontrar algunas ideas para practicar y compartir con otros. Feliz fin de semana. Enjoy!</p>
<hr/><p style="height: 64px;"><img alt="Stephanie Falla Aroche" class="avatar" src="http://www.maestrosdelweb.com/images/autores/128.png" style="float: left; padding: 0 5px;"/> <strong>Stephanie Falla Aroche</strong> para <a href="http://www.maestrosdelweb.com">Maestros del Web</a>.<br/><a href="http://www.maestrosdelweb.com/editorial/piensa-o-realizas-tus-suenos/#respond">Agrega tu comentario</a> | <a href="http://www.maestrosdelweb.com/editorial/piensa-o-realizas-tus-suenos/">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-01-27T17:58:32Z</updated>
    <category term="Editorial"/>
    <category term="Productividad"/>
    <category term="es viernes!"/>
    <category term="metas"/>
    <category term="planificaci&#xF3;n"/>
    <author>
      <name>Stephanie Falla Aroche</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-02-03T19:59:31Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-27752126.post-7220179047086470305</id>
    <link href="http://www.variablenotfound.com/feeds/7220179047086470305/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://www.blogger.com/comment.g?blogID=27752126&amp;postID=7220179047086470305" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/27752126/posts/default/7220179047086470305?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/27752126/posts/default/7220179047086470305?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://feedproxy.google.com/~r/vnf/~3/KZMWKcZoslM/introduccion-signalr-i-conceptos.html" rel="alternate" type="text/html"/>
    <title>Introducción a SignalR (I): Conceptos básicos</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><img align="right" alt="Uau!!" border="0" height="157" src="http://lh6.ggpht.com/-nD6ITJOSkno/TxQj-U7Y4yI/AAAAAAAABuk/T2HeCKsE7HM/image61.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="Uau!!" width="159"/>Una aplicación que mezcla <strong>internet, asincronía, y múltiples usuarios colaborando e interactuando al mismo</strong> tiempo siempre es merecedora de un “¡uau!”. Seguro que, al igual que un servidor, en algún momento os habéis quedado maravillados con la interactividad que presentan algunos sistemas web modernos, como Facebook, Google Docs, o muchos otros, en las que estamos recibiendo actualizaciones, prácticamente en tiempo real, sin necesidad de recargar la página. <br/>
<br/>
Por ejemplo, en Google Docs, si estamos editando un documento online y otro usuario accede al mismo, podemos ver sobre la marcha que ha entrado, e incluso las modificaciones que va realizando sobre el documento. O algo más cotidiano, en un simple chat vía web van apareciendo los mensajes tecleados por nuestros compañeros de sala como por arte de magia. Ambos sistemas utilizan el mismo tipo de solución: el envío <strong>asíncrono de datos entre servidor y clientes en tiempo real</strong>.<br/>
<br/>
En esta serie de artículos veremos cómo podemos implementar sorprendentes funcionalidades de este tipo utilizando SignalR, un framework open source desarrollado por gente del equipo de ASP.NET, que nos facilitará bastante la tarea.<br/>
<a name="more"/><h3>



¿Cómo puede el servidor enviar eventos al cliente de forma asíncrona?</h3>
Crear este tipo de sistemas usando herramientas convencionales nos puede causar algunos dolores de cabeza, principalmente porque los protocolos que sustentan la web están basados en un modelo cliente-servidor síncrono: uno o varios clientes realizan una conexión hacia el servidor y le transmiten una acción a realizar, éste la procesa y les retorna la respuesta, cerrándose la conexión de forma inmediata.<br/>
<br/>
<img align="right" alt="Polling" border="0" height="266" src="http://lh6.ggpht.com/-DxUukW_-2DI/TxQj_Ejdo6I/AAAAAAAABuo/XikeoudxXuk/image9.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="Polling" width="197"/>A priori, no hay forma de que el servidor sea el que notifique a los clientes los cambios de estado (por ejemplo, la llegada en un chat de un mensaje procedente de otro usuario), salvo que éstos utilicen un mecanismo de <em>polling</em>, es decir, que estén continuamente estableciendo conexiones con el servidor para ver si hay algún nuevo evento a tener en cuenta. <br/>
<br/>
Aunque válido en determinados escenarios, hay otros en los que se trata de una solución demasiado costosa, sobre todo cuando hay que gestionar un alto número de clientes conectados.<br/>
<br/>
El ideal sería utilizar una conexión persistente, siempre abierta, entre cliente y servidor, que permitiría el envío y recepción de mensajes y eventos de forma bidireccional entre ambos. De esta forma, si el servidor tiene algo que enviar a sus clientes, simplemente tendría que transmitirlo por el canal que mantendría abierto con cada uno de ellos.<br/>
<br/>
<img align="left" alt="Conexi&#xF3;n persistente" border="0" height="222" src="http://lh4.ggpht.com/-lEWF_YRWjw4/TxQj_t35PCI/AAAAAAAABu0/Ydbxj4HNvG8/image13.png?imgmax=800" style="background-image: none; border-width: 0px; display: inline; float: left; margin: 0px 10px 10px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="Conexi&#xF3;n persistente" width="202"/>Sin embargo, hasta ahora esto sólo se podía conseguir usando sockets, lo cual, en entorno web, requería la existencia de algún tipo de elemento activo sobre la página (Silverlight, Flash, o applets Java, por ejemplo) capaz de establecer este tipo de comunicaciones.<br/>
<br/>
Afortunadamente, la W3C parece dispuesta a cambiar esta situación al introducir de forma nativa los famosos WebSockets, cuya <a href="http://dev.w3.org/html5/websockets/">definición se encuentra todavía en borrador</a>. Esta nueva API permitirá abrir conexiones directas desde el navegador usando Javascript, por lo que podría ayudarnos bastante una vez su implementación sea universal en los agentes de usuario. De momento no es así, aunque ya está disponible en algunos de ellos (<a href="http://html5demos.com/web-socket">podéis ver una demo simple aquí</a> con Chrome).<br/>
<img align="right" alt="Logo de HTML5" border="0" height="155" src="http://lh5.ggpht.com/-6oLrTSyQIbQ/TxQkAho-q6I/AAAAAAAABu8/d9ynr_E8i_g/image41.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="Logo de HTML5" width="155"/><br/>
También existe otra iniciativa de la W3C que podría ayudar a enviar mensajes o eventos desde el servidor a los clientes suscritos, llamada <a href="http://dev.w3.org/html5/eventsource/">Server-Sent Events</a>. Como en el caso anterior, se encuentra en borrador, aunque ya algunos navegadores lo implementan (<a href="http://googlecodesamples.com/html5/sse/sse.html">podéis ver una demo aquí</a> con Chrome), por lo que todavía no podemos utilizarla de forma segura.<br/>
<br/>
Por esta razón, existen hoy en día múltiples soluciones que permiten solventar las limitaciones del protocolo, como las englobadas bajo la denominación <a href="http://es.wikipedia.org/wiki/Tecnolog%C3%ADa_Push">Server push</a> o <a href="http://en.wikipedia.org/wiki/Comet_(programming)">Comet</a>, aprovechando los recursos existentes en los protocolos utilizados para crear, o al menos simular, este canal abierto continuo entre cliente y servidor utilizando <a href="http://ajaxpatterns.org/Periodic_Refresh">polling</a>, <a href="http://es.wikipedia.org/wiki/Tecnolog%C3%ADa_Push#Long_polling">long polling</a>, <a href="http://ajaxpatterns.org/HTTP_Streaming">HTTP streaming</a>, y otros artificios.<br/>
<br/>
<img align="left" alt="Long polling" border="0" height="219" src="http://lh5.ggpht.com/-iPq8DEdAyg4/TxQkB_WRebI/AAAAAAAABvE/gPNWXaGnFIY/image17.png?imgmax=800" style="background-image: none; border-width: 0px; display: inline; float: left; margin: 0px 10px 10px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="Long polling" width="204"/>Por ejemplo, el mecanismo <em>long polling</em> utiliza peticiones HTTP para crear una conexión “pseudopersistente”. El servidor, en lugar de procesar la petición y retornar la respuesta de forma inmediata, espera hasta que haya disponible algún evento o mensaje a enviar al cliente; en este momento, lo retorna como respuesta a la petición original y cierra la conexión. El cliente, por su parte, procesa esta respuesta y realiza inmediatamente después una nueva petición al servidor, que volverá a quedar abierta a la espera de mensajes, y así sucesivamente.<br/>
<br/>
En definitiva, se trata de un mecanismo más limpio y eficiente que el polling, puesto que evita gran cantidad de peticiones absurdas que se producen cuando en el servidor no hay eventos pendientes de notificar. Además, dado que utiliza HTTP estándar, es válida para todo tipo de agentes de usuario, y bastante amigable para proxies, filtros, firewalls y otros inconvenientes que puede haber por el camino entre los dos extremos.<br/>
<br/>
Y en este punto es donde entra en escena <a href="https://github.com/SignalR/SignalR">SignalR</a>, un conjunto de componentes desarrollados por <a href="http://twitter.com/#!/DamianEdwards">Damian Edwards</a> y <a href="http://twitter.com/#!/davidfowl/">David Fowler</a>, miembros del equipo de ASP.NET en Microsoft, que nos abstrae de los detalles subyacentes y nos ofrece la visión y ventajas de un entorno conectado en el que podemos comunicar cliente y servidor bidireccionalmente, de forma asíncrona, y con una sencillez pasmosa. SignalR nos hace ver como si cliente y servidor estuvieran conectados de forma continua y facilita el envío de mensajes asíncronos bidireccionales entre ambos extremos.<br/>
<br/>
Por último, es importante decir que SignalR no es específico para ASP.NET MVC, ni para WebForms: <strong>podemos utilizarlo con cualquier tipo de proyecto web</strong>. De hecho, incluso se puede utilizar en otro tipo de proyectos usando un servidor self-hosted :-)<br/>
<h3>



SignalR, conceptualmente</h3>
SignalR ofrece una visión a muy alto nivel de la comunicación entre el servidor y los múltiples clientes que se encuentren a él conectados. Y cuando digo “alto nivel”, creedme que estoy hablando de muchos metros de altura ;-)<br/>
<br/>
Como desarrolladores, <strong>trabajaremos sobre una conexión virtualmente siempre abierta</strong>: en servidor podremos detectar cuándo se ha conectado un nuevo cliente, cuándo se ha desconectado, recibir mensajes de éstos, enviar mensajes a los clientes conectados…, en definitiva, todo lo que podemos necesitar para crear aplicaciones asíncronas multiusuario.<br/>
<br/>
Sin embargo, en realidad estas conexiones persistentes no existen, o no tienen por qué existir. Se trata de una abstracción creada por SignalR, que el que se encargará del trabajo sucio que hay por debajo, manteniendo la conexión de los clientes con el servidor mediante distintos mecanismos denominados “transportes”, que son el conjunto de tecnologías utilizadas para mantener crear la conexión continua, o al menos la ilusión de su existencia.<br/>
<br/>
Lo interesante de los protocolos de transporte es que pueden ser sustituidos de forma transparente sin afectar a nuestras aplicaciones, que trabajarán aisladas de estos detalles. Nuestros sistemas funcionarán exactamente igual sea cual sea el transporte utilizado, lo que permite que éste sea elegido en cada escenario en función de la disponibilidad de las tecnologías en ambos extremos. <br/>
<br/>
Por ejemplo, el transporte <em>Websockets</em> es capaz de crear una conexión con el servidor y mantenerla abierta de forma continua, aunque requiere que esta tecnología esté disponible tanto en el cliente (en el caso de clientes web, es necesario que el navegador implemente Websockets) como en el servidor.<br/>
<br/>
<img align="right" alt="Long polling, el transporte utilizado por defecto en SignalR" border="0" height="219" src="http://lh6.ggpht.com/-44ec-CVvFd8/TxQkC_3yDII/AAAAAAAABvI/98CA-8MrXnk/image21.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="Long polling, el transporte utilizado por defecto en SignalR" width="204"/>Debido a ello, y para asegurar la máxima compatibilidad con los clientes, actualmente se utiliza por defecto el transporte denominado <em>Long polling</em>, que ya hemos comentado anteriormente.<br/>
<br/>
Observad que, a pesar de la relativa complejidad que supondría implementar algo así a mano, nosotros no tendremos que hacer nada: SignalR se encarga de llevar a cabo todas estas tareas para ofrecernos la sensación de estar siempre conectados.<br/>
<br/>
Su componente cliente será el encargado de realizar las conexiones, mantenerse a la espera de noticias del servidor, reconectar cuando se reciban eventos o cuando por cualquier otra causa se haya perdido la conectividad, etc., ofreciéndonos una superficie de desarrollo muy simplificada.<br/>
<br/>
El lado servidor de SignalR, por otra parte, será el encargado de recibir la conexión y mantenerla en espera, almacenar los mensajes recibidos, realizar el seguimiento de clientes conectados, enviar mensajes a través de un bus interno, etc., y de la misma forma, ofreciéndonos un API bastante simple para implementar nuestros servicios.<br/>
<h3>



Implementación de servicios con SignalR</h3>
SignalR nos ofrece dos fórmulas para trabajar sobre las conexiones que crea con el servidor: <br/>
<ul>
<li><strong>usando “conexiones persistentes”</strong>, es la de más bajo nivel y proporciona mecanismos simples para registrar conexiones y desconexiones de clientes y comunicarse de forma bidireccional con ellos. De hecho, esta forma de crear servicios es <strong>bastante similar a como hacemos utilizando sockets</strong>. </li>
<li><strong>usando “hubs”</strong>, que ofrece una abstracción aún mayor, permitiendo la comunicación entre cliente y servidor de forma casi mágica. Esta es la opción que convendrá utilizar en la mayoría de ocasiones, por la potencia que aporta y su gran comodidad de uso. </li>
</ul>
En cualquiera de los dos casos, y ya centrándonos en el entorno web más habitual, donde el servidor es una aplicación ASP.NET y los clientes van a ser las páginas o vistas en las que tendremos un motor de scripting, la implementación de servicios consistirá en:<br/>
<ul>
<li>en el servidor, crear el servicio (también llamado <em>endpoint</em>) con las funcionalidades que nos interese, utilizando las clases disponibles en el ensamblado SignalR. </li>
<li>en cliente, crear el consumidor del servicio utilizando las clases disponibles en la biblioteca de scripts <em>jQuery.SignalR.js</em> (o su correspondiente versión minimizada). </li>
</ul>
Cada una de las dos fórmulas citadas tiene sus particularidades, por lo que las estudiaremos mediante el desarrollo de <strong>ejemplos independientes en futuros posts de la serie</strong>.<br/>
<br/>
Pero primero, veamos rápidamente cómo podemos incluir este componente en nuestros proyectos, aunque desde luego más sencillo no puede ser… ;-)<br/>
<h3>



Instalación de SignalR</h3>
El sitio web oficial del producto (<a href="http://www.campusmvp.com/Catalogo/Product-Desarrollo-Web-con-ASP.NET-MVC-3_92.aspx">signalr.net</a>), a día de hoy, es una simple redirección hacia <a href="https://github.com/SignalR/SignalR">Github</a>, donde se encuentra la documentación y el código fuente del proyecto. Aunque podríamos descargarlo desde ahí, la opción más sencilla, como siempre, es utilizar Nuget:<br/>
<br/>
<pre style="background-color: transparent; overflow: visible; padding: 0px;"><span style="font-family: Consolas;"><span style="font-size: 10pt;">PM&gt; <span style="background-color: yellow;">Install-Package signalr</span>
Attempting to resolve dependency 'SignalR.Server (≥ 0.3.5)'.
Attempting to resolve dependency 'Microsoft.Web.Infrastructure (≥ 1.0.0.0)'.
Attempting to resolve dependency 'SignalR.Js (≥ 0.3.5)'.
Attempting to resolve dependency 'jQuery (≥ 1.6)'.
Successfully installed 'Microsoft.Web.Infrastructure 1.0.0.0'.
Successfully installed 'SignalR.Server 0.3.5'.
Successfully installed 'SignalR.Js 0.3.5'.
Successfully installed 'SignalR 0.3.5'.
Successfully added 'Microsoft.Web.Infrastructure 1.0.0.0' to SignalRDemo.
Successfully added 'SignalR.Server 0.3.5' to SignalRDemo.
Successfully added 'SignalR.Js 0.3.5' to SignalRDemo.
Successfully added 'SignalR 0.3.5' to SignalRDemo.</span></span></pre>
<br/>
Esta instalación incluye, además de algún elemento infraestructural, dos componentes de SignalR:<br/>
<ul>
<li><strong>SignalR.Server</strong>, que es la biblioteca de servidor principal para integrar en aplicaciones ASP.NET.  </li>
<li><strong>SignalR.Js</strong>, la biblioteca Javascript necesaria para conectar desde cliente (páginas web) con el servidor.</li>
</ul>
Existen también otros clientes específicos para .NET, como <strong>SignalR.Client</strong> (cliente genérico), <strong>SignalR.Client.Silverlight</strong> (específico para SL), o <strong>SignalR.Client.WP7</strong> (específico para Windows Phone 7), que podemos instalar de forma independiente. <br/>
<br/>
Además, tanto en Nuget como en el sitio web del producto podéis encontrar otros paquetes interesantes a los que vale la pena echar un vistazo, como <strong>SignalR.Sample</strong>, un ejemplo completo de uso de este componente, <strong>SignalR.SelfHost</strong>, que permite activar el servidor sin usar ASP.NET, o <strong>SignalR.Websockets</strong>, un adaptador (o transporte, en argot SignalR) para usar Websockets para el mantenimiento de la conexión entre cliente y servidor.<br/>
<br/>
Observaréis que en todos los casos se trata de versiones muy preliminares pero que podemos ir probando y disfrutando desde ya, porque funcionan bastante bien. Podéis comprobarlo accediendo a <a href="http://jabbr.net/">http://jabbr.net/</a>, un chat implementado sobre SignalR donde podréis encontrar charlando hasta a los mismísimos padres de la criatura. :-)<br/>
<br/>
En el próximo post veremos cómo implementar clientes y servicios SignalR utilizando conexiones persistentes, el enfoque de menor nivel ofrecido por este fantástico componente.<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-7220179047086470305?l=www.variablenotfound.com" width="1"/></div>
<p><a href="http://feedads.g.doubleclick.net/~a/eoSFgZcDlpCnQFFBVuO4pbmkXEw/0/da"><img border="0" ismap="true" src="http://feedads.g.doubleclick.net/~a/eoSFgZcDlpCnQFFBVuO4pbmkXEw/0/di"/></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/eoSFgZcDlpCnQFFBVuO4pbmkXEw/1/da"><img border="0" ismap="true" src="http://feedads.g.doubleclick.net/~a/eoSFgZcDlpCnQFFBVuO4pbmkXEw/1/di"/></a></p><img height="1" src="http://feeds.feedburner.com/~r/vnf/~4/KZMWKcZoslM" width="1"/></div>
    </content>
    <updated>2012-01-25T18:41:13Z</updated>
    <published>2012-01-17T19:58:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="desarrollo"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="asp.net"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="aspnetmvc"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="ajax"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="signalr"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://www.variablenotfound.com/2012/01/introduccion-signalr-i-conceptos.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="paranoias"/>
      <category term="xVal"/>
      <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="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="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="frikadas"/>
      <category term="programaci&#xF3;n"/>
      <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="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-02-05T07:12:29Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-27752126.post-7918748243823975697</id>
    <link href="http://www.variablenotfound.com/feeds/7918748243823975697/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://www.blogger.com/comment.g?blogID=27752126&amp;postID=7918748243823975697" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/27752126/posts/default/7918748243823975697?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/27752126/posts/default/7918748243823975697?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://feedproxy.google.com/~r/vnf/~3/ri35IjEnO_A/libro-dependency-injection-in-net.html" rel="alternate" type="text/html"/>
    <title>Libro: Dependency injection in .NET</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">La inyección de dependencias es uno de esos conceptos rodeados de misterio que parecen reservados a gurús, arquitectos, y otros profesionales <em>de gama alta</em>, y aplicables exclusivamente en proyectos mastodóndicos.<br/>
<br/>
Y nada más lejos de la realidad: DI se basa en principios relativamente simples, e incluso diría intuitivos, para lograr evitar el acoplamiento entre componentes, es aplicable en todo tipo y tamaño de aplicaciones, y por tanto todas ellas pueden beneficiarse de las ventajas que aporta, como la simplicidad, mantenibilidad, extensibilidad, o facilidad para la realización de pruebas unitarias.<br/>
<a name="more"/><br/>
<img align="right" alt="Dependency Injection in .NET. Manning." border="0" height="215" src="http://lh4.ggpht.com/-wJvQO65rEUg/TvnAD2bTtAI/AAAAAAAABtU/sf0YaZLUHHs/image4.png?imgmax=800" style="background-image: none; border-width: 0px; display: inline; margin-top: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="Dependency Injection in .NET. Manning." width="171"/>Pero, sinceramente, jamás pensé que el tema que pudiera dar tanto de sí como para escribir un libro. Por eso me ha sorprendido la lectura, por cortesía de <a href="http://auges.org/">Auges</a>, del libro “<a href="http://www.manning.com/seemann/">Dependency Injection in .NET</a>”, escrito por por <a href="http://blog.ploeh.dk/">Mark Seemann</a> y publicado por la editorial Manning, donde he podido comprobar que mis conocimientos sobre inyección de dependencias, aunque válidos, eran bastante superficiales.<br/>
<br/>
El libro se estructura en cuatro grandes bloques a través de los cuales se realiza un completo recorrido guiado por los conceptos, utilización y herramientas para aplicar DI:<br/>
<ul>
<li><strong>“Putting Dependency Injection on the map”</strong> contiene tres capítulos introductorios, útiles para poner en contexto el patrón y las ventajas que conlleva su uso y describir los conceptos fundamentales utilizados: dependencias, tipos, tiempo de vida, intercepción, contenedores, y muchos otros.</li>
<li><strong>“DI catalog”</strong> es una completa relación de patrones de uso de la inyección de dependencias, antipatrones o malos usos que podemos hacer de la misma, y refactorizaciones que podemos utilizar para solucionar escenarios frecuentes.</li>
<li><strong>“DIY DI”</strong> describe técnicas asociadas a la ID, como la composición de objetos, la gestión del ciclo de vida, y la intercepción de llamadas.</li>
<li><strong>“DI containers”</strong> es un completo bloque donde se describe el uso de los principales contenedores disponibles para la plataforma .NET: Castle Windsor, StructureMap, Spring.NET, Autofac, Unity y MEF.</li>
</ul>
En definitiva, se trata una lectura recomendable para desarrolladores .NET, tanto para aquellos que no hayan tenido experiencia previa con la Inyección de Dependencias y anden buscando fórmulas para reducir el acoplamiento entre componentes, como para los que ya se han enfrentado a ella y desean conocer en mayor profundidad las bases que la sustentan.<br/>
Como puntos negativos, que está disponible exclusivamente en inglés, y que algunos capítulos se hacen algo densos y requieren varias pasadas para poder asimilar las ideas transmitidas.<br/>
<br/>
Enlace: <a href="http://www.manning.com/seemann/" title="http://www.manning.com/seemann/">http://www.manning.com/seemann/</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-7918748243823975697?l=www.variablenotfound.com" width="1"/></div>
<p><a href="http://feedads.g.doubleclick.net/~a/U5JP1iUNrROsi_wx452Ka0Cik_U/0/da"><img border="0" ismap="true" src="http://feedads.g.doubleclick.net/~a/U5JP1iUNrROsi_wx452Ka0Cik_U/0/di"/></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/U5JP1iUNrROsi_wx452Ka0Cik_U/1/da"><img border="0" ismap="true" src="http://feedads.g.doubleclick.net/~a/U5JP1iUNrROsi_wx452Ka0Cik_U/1/di"/></a></p><img height="1" src="http://feeds.feedburner.com/~r/vnf/~4/ri35IjEnO_A" width="1"/></div>
    </content>
    <updated>2012-01-25T12:25:17Z</updated>
    <published>2012-01-25T12:25:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="libros"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="patrones"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://www.variablenotfound.com/2012/01/libro-dependency-injection-in-net.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="paranoias"/>
      <category term="xVal"/>
      <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="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="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="frikadas"/>
      <category term="programaci&#xF3;n"/>
      <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="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-02-05T07:12:29Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.anieto2k.com/2012/01/22/twitterweek-2012-01-22/</id>
    <link href="http://feedproxy.google.com/~r/anieto2k/Xzqf/~3/UpYFfNeAp54/" rel="alternate" type="text/html"/>
    <title>TwitterWeek – 2012-01-22</title>
    <summary>En mi twitter he publicado estos enlaces que creo os pueden interesar. http://t.co/3GbJFvdU &lt;-- ¿Muchos marcadores en tus mapas de Google Maps? Algunas ideas para atajar el problema # http://t.co/aAp2cPhc &lt;-- Circle Menu, plugin #jquery para crear menus circulares # http://t.co/oI3JC50h &lt;-- http://t.co/mSuFZL5R.ui, otro framework #javascript basado en #jquery para ayudarnos a desarrollar para móviles [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">En <a href="http://www.twitter.com/anieto2k">mi twitter</a> he publicado estos enlaces que creo os pueden interesar.<ul class="aktt_tweet_digest">
	<li><a href="http://t.co/3GbJFvdU" rel="nofollow">http://t.co/3GbJFvdU</a> &lt;-- ¿Muchos marcadores en tus mapas de Google Maps? Algunas ideas para atajar el problema <a class="aktt_tweet_time" href="http://twitter.com/aNieto2k/statuses/159197052771893248">#</a></li>
	<li><a href="http://t.co/aAp2cPhc" rel="nofollow">http://t.co/aAp2cPhc</a> &lt;-- Circle Menu, plugin #<a class="aktt_hashtag" href="http://search.twitter.com/search?q=%23jquery">jquery</a> para crear menus circulares <a class="aktt_tweet_time" href="http://twitter.com/aNieto2k/statuses/159203635706855425">#</a></li>
	<li><a href="http://t.co/oI3JC50h" rel="nofollow">http://t.co/oI3JC50h</a>  &lt;-- <a href="http://t.co/mSuFZL5R.ui" rel="nofollow">http://t.co/mSuFZL5R.ui</a>, otro framework #<a class="aktt_hashtag" href="http://search.twitter.com/search?q=%23javascript">javascript</a> basado en #<a class="aktt_hashtag" href="http://search.twitter.com/search?q=%23jquery">jquery</a> para ayudarnos a desarrollar para móviles <a class="aktt_tweet_time" href="http://twitter.com/aNieto2k/statuses/159908172017057792">#</a></li>
</ul>
<h3>Artículos relacionados</h3>
<ul><li><a href="http://www.anieto2k.com/2012/01/01/twitterweek-2012-01-01/" rel="bookmark" title="Permanent Link: TwitterWeek &#x2013; 2012-01-01">TwitterWeek – 2012-01-01</a></li><li><a href="http://www.anieto2k.com/2012/01/08/speech-javascript-api-habla-con-las-paginas-web/" rel="bookmark" title="Permanent Link: Speech Javascript API, habla con las p&#xE1;ginas web">Speech Javascript API, habla con las páginas web</a></li><li><a href="http://www.anieto2k.com/2012/01/15/twitterweek-2012-01-15/" rel="bookmark" title="Permanent Link: TwitterWeek &#x2013; 2012-01-15">TwitterWeek – 2012-01-15</a></li><li><a href="http://www.anieto2k.com/2012/01/29/twitterweek-2012-01-29/" rel="bookmark" title="Permanent Link: TwitterWeek &#x2013; 2012-01-29">TwitterWeek – 2012-01-29</a></li><li><a href="http://www.anieto2k.com/2012/01/08/twitterweek-2012-01-08/" rel="bookmark" title="Permanent Link: TwitterWeek &#x2013; 2012-01-08">TwitterWeek – 2012-01-08</a></li></ul><p><a href="http://www.anieto2k.com" id="209.85.224.88"><img alt="aNieto2k" rel="209.85.224.88" src="http://www.anieto2k.com/favicon.ico"/></a></p><img height="1" src="http://feeds.feedburner.com/~r/anieto2k/Xzqf/~4/UpYFfNeAp54" width="1"/></div>
    </content>
    <updated>2012-01-22T10:15:00Z</updated>
    <category term="tweets"/>
    <category term="tweet"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://www.anieto2k.com/2012/01/22/twitterweek-2012-01-22/</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-01-29T19:59:28Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://javierperez.com/?p=832</id>
    <link href="http://feedproxy.google.com/~r/javierperez_com/~3/M1nNsOzp0u0/" rel="alternate" type="text/html"/>
    <title>¿Eres inteligente? Relación entre el cociente intelectual y comportamientos e ideas del ser humano</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Tendencia al suicidio = Menos inteligente Un estudio realizado por investigadores de varias universidades del mundo, sobre informes médicos de 24 años referentes a más de un millón de hombres, relaciona el cociente intelectual con la falta de tendencia al suicidio. … <a href="http://javierperez.com/eres-inteligente-relacion-entre-el-cociente-intelectual-y-comportamientos-e-ideas-del-ser-humano/">Sigue leyendo <span class="meta-nav">→</span></a></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><h2>Tendencia al suicidio = Menos inteligente</h2><p><a class="external-link" href="http://www.bmj.com/content/340/bmj.c2506.abstract">Un estudio</a> realizado por investigadores de varias universidades del mundo, sobre informes médicos de 24 años referentes a más de un millón de hombres, relaciona el cociente intelectual con la falta de tendencia al suicidio. Es decir, que las personas con más tendencias suicidas suelen tener menor cociente intelectual, sin capacidad para enfrentarse a los problemas o eventos traumáticos.</p><h2>Conservador y religioso = Menos inteligente</h2><p>Los más inteligentes suelen tender a probar cosas nuevas. 14.000 adolescentes norteamericanos evaluados en 2001 y 2002 dan como <a class="external-link" href="http://www.psicofxp.com/forums/religion-y-espiritualidad.239/1008525-segun-estudio-religiosos-menor-coeficiente-intelectual.html">resultado</a> esta relación entre ser conservador y la falta de inteligencia.</p><h2>Usar Internet Explorer = Menos inteligente</h2><p>Un <a class="external-link" href="http://mashable.com/2011/07/29/internet-explorer-iq/">estudio</a> muy controvertido y cuya veracidad o autoridad está en entredicho, relaciona el uso del navegador de Microsoft, Internet Explorer, y la falta de cociente intelectual.</p><h2>Consumir drogas = Más inteligente</h2><p>El <a class="external-link" href="http://mexico.cnn.com/salud/2011/11/16/un-alto-coeficiente-intelectual-relacionado-con-el-consumo-de-drogas">estudio</a> sobre esta relación comenzó en 1970, del Estudio Británico de Cohorte, realizando un seguimiento a miles de niños (5-16 años) durante décadas hasta que cumplieron los 30 años.  Este estudio venía a demostrar también que los más inteligentes son más propensos a probar y experimentar cosas nuevas.</p><h2>Hermano mayor = Más inteligente</h2><p>Este <a class="external-link" href="http://edant.clarin.com/diario/2007/06/23/sociedad/s-05401.htm">estudio</a> revelaría que los hermanos mayores son estadística y significativamente más inteligentes que sus hermanos pequeños (análisis de 241.310 hombres de 18-19 años). Se concluye además que por ese motivo los hermanos pequeños suelen ser más simpáticos, porque tratan de competir con su hermano mayor por otras vías.</p><h2>Te gusta música clásica = Más inteligente</h2><p><a class="external-link" href="http://musicthatmakesyoudumb.virgil.gr/">Un estudiante de doctorado del Instituto de Tecnología de California</a> ideó un sistema para calcular una estadística que relacionara los gustos musicales con el nivel intelectual, en base a los datos de Facebook de estudiantes de diferentes universidades americanas, contrastándolos con sus notas académicas. El resultado fue que los que decían que Beethoven era su músico preferido eran los más inteligentes, y los menos inteligentes los que les gustaba el RAP o el reguetón.</p><h2>Hombre fiel y ateo = Más inteligente</h2><p>Este <a class="external-link" href="http://www.eltiempo.com/archivo/documento/CMS-7335527">estudio</a> también hace incapié en la falta de fé religiosa, además de en la fidelidad en la pareja, como síntoma de más inteligencia, estadísticamente hablando.</p><h2>Cerebro en desarrollo = ???</h2><p>Y si aún no ha terminado la edad de desarrollo cerebral (hasta los 18-20 años), ten en cuenta que tu cociente intelectual <a class="external-link" href="http://cuidatusaludcondiane.com/el-coeficiente-intelectual-puede-cambiar-en-la-adolescencia/">aún puede variar</a>, y no necesariamente a más inteligente…</p><p><img alt="" height="488" src="http://lh4.ggpht.com/-HFNONFslm_c/TxnoZgeEN2I/AAAAAAAAe5E/jmFLSkur_LI/Homer%25253A%252520inteligencia.jpg" width="650"/></p> <img height="1" src="http://feeds.feedburner.com/~r/javierperez_com/~4/M1nNsOzp0u0" width="1"/></div>
    </content>
    <updated>2012-01-20T22:19:45Z</updated>
    <category term="Sociolog&#xED;a"/>
    <category term="cociente intelectual"/>
    <category term="inteligencia"/>
    <category term="sociolog&#xED;a"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://javierperez.com/eres-inteligente-relacion-entre-el-cociente-intelectual-y-comportamientos-e-ideas-del-ser-humano/</feedburner:origLink>
    <author>
      <name>Javier Pérez</name>
    </author>
    <source>
      <id>http://javierperez.com</id>
      <link href="http://javierperez.com" rel="alternate" type="text/html"/>
      <link href="http://feeds.feedburner.com/javierperez_com" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>de la Axarquía</subtitle>
      <title>Javier Pérez</title>
      <updated>2012-01-28T19:59:15Z</updated>
    </source>
  </entry>
</feed>

