<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Ideas de un Conejo</title><link>http://juank.black-byte.com</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/IdeasDeUnConejo" /><description>Más allá de los sistemas de información: (C#)=&gt; videojuegos, soluciones a problemas interesantes y Sistemas Operativos</description><language>en-US</language><lastBuildDate>Wed, 10 Apr 2013 12:24:18 PDT</lastBuildDate><generator>http://wordpress.org/?v=3.5.1</generator><sy:updatePeriod xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">hourly</sy:updatePeriod><sy:updateFrequency xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">1</sy:updateFrequency><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/IdeasDeUnConejo" /><feedburner:info uri="ideasdeunconejo" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by-sa/3.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><item><title>Despierta, desarrollar apps con HTML5/JS y Azure Mobile Services es el futuro y el presente</title><link>http://feedproxy.google.com/~r/IdeasDeUnConejo/~3/XD7w3d34zg4/</link><category>Azure</category><category>HTML 5</category><category>Windows Phone</category><category>Andoird</category><category>HTML</category><category>HTML5</category><category>iOS</category><category>javascript</category><category>Mobile Services</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">JuanK</dc:creator><pubDate>Mon, 18 Mar 2013 22:25:41 PDT</pubDate><guid isPermaLink="false">http://juank.black-byte.com/?p=1786</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>&#160;</p>
<p>No es la primera vez que les hablo de <a href="http://blogs.msdn.com/b/juank/archive/2013/02/25/como-desarrollar-apps-windows-phone-8-ios-android-visual-studio-azure.aspx" target="_blank">Mobile Services</a>, y de seguro no será la última.</p>
<p>Hace apenas unas semanas les contaba con entusiasmo que utilizando Mobile Services podemos crear un backend para Apps de iOS, Android, Windows Phone 8 y Windows 8.</p>
<p>&#160;</p>
<p>No contentos con eso ahora cuentas además con SDK de Mobile Services para <strong>Windows Phone 7.5</strong> y soporte para <strong>Phonegap</strong> y en esencia para<strong> cualquier sitio web </strong>que quiera consumir los servicios que has creado.</p>
<p>&#160;</p>
<p>Versiones actuales de IE8+, Chrome, Safari, Firefox y Phonegap 2.3.0+ ofrecen la mis estructura de consulta y storage que los otros SDK existentes.</p>
<p><a href="http://juank.black-byte.com/wordpress/uploads/2013/03/image10.png"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="http://juank.black-byte.com/wordpress/uploads/2013/03/image_thumb10.png" width="239" height="309" /></a></p>
<p>&#160;</p>
<p>Por si fuera poco, Mobile Services te permite autenticar las solicitudes por cualquiera de los siguientes identity providers</p>
<table cellspacing="0" cellpadding="2" width="160" border="0">
<tbody>
<tr>
<td width="34"><a href="http://juank.black-byte.com/wordpress/uploads/2013/03/image11.png"><img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="http://juank.black-byte.com/wordpress/uploads/2013/03/image_thumb11.png" width="29" height="29" /></a></td>
<td width="124">
<p>Microsoft Account</p>
</td>
</tr>
<tr>
<td width="34"><img src="http://www.brandignity.com/wp-content/uploads/2011/11/google-plus-icon1-110x110.jpg" width="31" height="31" /></td>
<td width="124">Google</td>
</tr>
<tr>
<td width="34"><img src="http://www.plentyoftwenties.com/wp-content/uploads/et_temp/fb-118663_191x191.png" width="28" height="28" /></td>
<td width="124">Facebook</td>
</tr>
<tr>
<td width="34"><a href="http://juank.black-byte.com/wordpress/uploads/2013/03/image12.png"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="http://juank.black-byte.com/wordpress/uploads/2013/03/image_thumb12.png" width="30" height="25" /></a></td>
<td width="124">
<p>Twitter</p>
</td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<p>Si necesitas hacer request por Ajax bien se esperando JSON/JSONP o XML desde dominios diferentes,&#160; Mobile Services te permite trabajar con CORS (Cross Origin Resource Sharing) por lo que puedes crear una ‘White list’ de dominios a los cuales les autorizas el acceso a tus API’s expuestas públicamente.</p>
<p>Próximamente estaré publicando algunos videos introductorios al desarrollo con Mobile Services y estoy seguro que les será de mucha ayuda.</p>
<div class='yarpp-related-rss'>
<h3>Related Posts</h3>

<a href="http://juank.black-byte.com/csharp-como-desarrollar-apps-windows-phone-8-ios-android-visual-studio-azure/" rel="bookmark">C&oacute;mo crear Apps para Windows Phone, Windows 8, IOS y Android con Visual Studio y Windows Azure</a><!-- (5)-->
<img src='http://yarpp.org/pixels/3021c069f3568ab29826c3bbfd91cc16'/>
</div>
<img src="http://feeds.feedburner.com/~r/IdeasDeUnConejo/~4/XD7w3d34zg4" height="1" width="1"/>]]></content:encoded><description>&amp;#160; No es la primera vez que les hablo de Mobile Services, y de seguro no será la última. Hace apenas unas semanas les contaba con entusiasmo que utilizando Mobile Services podemos crear un backend para Apps de iOS, Android, Windows Phone 8 y Windows 8. &amp;#160; No contentos con eso ahora cuentas además con [...]&lt;div class='yarpp-related-rss'&gt;
&lt;h3&gt;Related Posts&lt;/h3&gt;

&lt;a href="http://juank.black-byte.com/csharp-como-desarrollar-apps-windows-phone-8-ios-android-visual-studio-azure/" rel="bookmark"&gt;C&amp;oacute;mo crear Apps para Windows Phone, Windows 8, IOS y Android con Visual Studio y Windows Azure&lt;/a&gt;&lt;!-- (5)--&gt;
&lt;img src='http://yarpp.org/pixels/3021c069f3568ab29826c3bbfd91cc16'/&gt;
&lt;/div&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juank.black-byte.com/windows-phone-desarrollar-apps-html5-js-azure-mobile-services-futuro-presente/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://juank.black-byte.com/windows-phone-desarrollar-apps-html5-js-azure-mobile-services-futuro-presente/</feedburner:origLink></item><item><title>Programar en K4W : Kinect For Windows</title><link>http://feedproxy.google.com/~r/IdeasDeUnConejo/~3/_sZF3-uxNUc/</link><category>Varios</category><category>K4W</category><category>Kinect</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">JuanK</dc:creator><pubDate>Tue, 12 Mar 2013 22:11:47 PDT</pubDate><guid isPermaLink="false">http://juank.black-byte.com/?p=1779</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>( by <a href="http://twitter.com/JuanKRuiz" target="_blank">@JuanKRuiz</a> )</p>
<p>&#160;</p>
<p><a href="http://juank.black-byte.com/wordpress/uploads/2013/03/image.png"><img title="image" style="border: 0px currentcolor; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" border="0" alt="image" src="http://juank.black-byte.com/wordpress/uploads/2013/03/image_thumb.png" width="534" height="158" /></a></p>
<p>Kinect es uno de esos inventos que muchos daban por sentado que sucederían en 50 años, pero Microsoft se encargó de traerlos desde el futuro hasta nuestro tiempo, que sin Kinect luciría algo pre histórico.</p>
<p>Kinect vio la Luz como un dispositivo adicional para Xbox 360, pero rápidamente se popularizo a tal nivel que comenzó&#160; a ser utilizado en muchos proyectos de investigación relacionados con medicina y aprendizaje.</p>
<p>Originalmente existió una API no oficial de Kinect la cual requería conectar el Kinect del Xbox 360 al PC por medio de unos adaptadores. Microsoft tardó un poco en publicar un SDK Oficial pero no solo lanzó un SDK oficial que te permite usar el dispositivo para tus negocios sino que creo una versión especial Kinect optimizada par usar en PCs y con características adicionales capaces de suplir las necesidades de un usuario de PC, diferentes de las de un gamer.</p>
<p>Kinect For Windows es un dispositivo que no solo hace lo mismo que hace Kinect For Xbox 360 sino que adicionalmente posee otras características, tales como:</p>
<p>&#160;</p>
<p>&#160;</p>
<h3>Soporte para modo de distancias cortas</h3>
<p>Por defecto Kinect funciona tal como lo hace en el Xbox 360 </p>
<p><a href="http://juank.black-byte.com/wordpress/uploads/2013/03/image1.png"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="http://juank.black-byte.com/wordpress/uploads/2013/03/image_thumb1.png" width="533" height="373" /></a></p>
<p>&#160;</p>
<p>Pero Kinect For Windows tiene un modo adicional, llamado modo cercano que permite trabajar a distancias menores:</p>
<p>&#160;</p>
<p><a href="http://juank.black-byte.com/wordpress/uploads/2013/03/image2.png"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="http://juank.black-byte.com/wordpress/uploads/2013/03/image_thumb2.png" width="538" height="334" /></a></p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<h3>Reconocimiento de gestos de la mano</h3>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p><a href="http://juank.black-byte.com/wordpress/uploads/2013/03/image3.png"><img title="image" style="border: 0px currentcolor; float: left; display: inline; background-image: none;" border="0" alt="image" align="left" src="http://juank.black-byte.com/wordpress/uploads/2013/03/image_thumb3.png" width="209" height="149" /></a><a href="http://juank.black-byte.com/wordpress/uploads/2013/03/image4.png"><img title="image" style="margin: 0px 97px 0px 16px; border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="http://juank.black-byte.com/wordpress/uploads/2013/03/image_thumb4.png" width="256" height="144" /></a></p>
<p>&#160;</p>
<p>&#160;</p>
<p>A cortas distancias es posible reconocer con más detalle otro tipo de gestos por ejemplo los realizados con la mano para hacer una tarea específica</p>
<p>&#160;</p>
<h3>Posición Sentado</h3>
<p>&#160;</p>
<p><a href="http://juank.black-byte.com/wordpress/uploads/2013/03/image5.png"><img title="image" style="border: 0px currentcolor; float: left; display: inline; background-image: none;" border="0" alt="image" align="left" src="http://juank.black-byte.com/wordpress/uploads/2013/03/image_thumb5.png" width="157" height="220" />&#160;</a></p>
<p>&#160;</p>
<p>Kinect For Windows puede reconocer cuando una persona esta sentada, bien sea en modo de cortas distancias o normal.</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<h3>Reconocimiento facial, para detectar gestos o emociones</h3>
<p>&#160;</p>
<p><img src="http://www.microsoft.com/global/en-us/kinectforwindows/PublishingImages/develop_learn.png" width="484" height="280" /></p>
<p>&#160;</p>
<p>En modo de cortas distancias Kinect permite realizar reconocimiento facial.</p>
<p>&#160;</p>
<h3>Puede filtrar una voz en particular </h3>
<p><a href="http://juank.black-byte.com/wordpress/uploads/2013/03/image6.png"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="http://juank.black-byte.com/wordpress/uploads/2013/03/image_thumb6.png" width="329" height="300" /></a></p>
<p>Kinect puede filtrar una voz en particular en medio de un conjunto de voces, o bien puede enfocarse en solo escuchar el esqueleto que esta siendo rastreado.:</p>
<p><a href="http://juank.black-byte.com/wordpress/uploads/2013/03/image7.png"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="http://juank.black-byte.com/wordpress/uploads/2013/03/image_thumb7.png" width="341" height="348" /></a></p>
<p>&#160;</p>
<p>También es posible usar los sensores para escuchar únicamente sonidos que vengan de una dirección establecida</p>
<p><a href="http://juank.black-byte.com/wordpress/uploads/2013/03/image8.png"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="http://juank.black-byte.com/wordpress/uploads/2013/03/image_thumb8.png" width="459" height="264" /></a></p>
<p>&#160;</p>
<p>&#160;</p>
<h3>Puede diferenciar personas que están en actitud de interactuar </h3>
<p><a href="http://juank.black-byte.com/wordpress/uploads/2013/03/image9.png"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="http://juank.black-byte.com/wordpress/uploads/2013/03/image_thumb9.png" width="442" height="313" /></a></p>
<p>Si en el mismo lugar hay varias personas pero solo una o dos o cuatro están realmente interactuando con la aplicación, Kinect puede identificarlos por su actitud corporal y con base en esos datos decidir por ignorar a las demás personas.</p>
<p>&#160;</p>
<h3>Kinect es para ustedes</h3>
<p>Cómo lo ven? Kinect For Windows es un dispositivo maravilloso y todos ustedes pueden aprenderlo a explotar para crear aplicaciones increíbles.</p>
<p>Manos a la obra!</p>
<p>&#160;</p>
<h3>Recursos para desarrolladores Kinect!</h3>
<p>&#160;</p>
<p><a href="http://www.microsoft.com/en-us/kinectforwindows/develop/developer-downloads.aspx" target="_blank">Kinect SDK &amp; ToolKit</a></p>
<p><a href="http://kinectforwindows.codeplex.com/" target="_blank">Ejemplos y código fuente de Kinect For Windows</a></p>
<div class='yarpp-related-rss yarpp-related-none'>
<h3>Related Posts</h3>


<p>No related posts.</p>
<img src='http://yarpp.org/pixels/3021c069f3568ab29826c3bbfd91cc16'/>
</div>
<img src="http://feeds.feedburner.com/~r/IdeasDeUnConejo/~4/_sZF3-uxNUc" height="1" width="1"/>]]></content:encoded><description>Kinect For Windows es un dispositivo que no solo hace lo mismo que hace Kinect For Xbox 360 sino que adicionalmente posee otras características, tales como:&lt;div class='yarpp-related-rss yarpp-related-none'&gt;
&lt;h3&gt;Related Posts&lt;/h3&gt;



No related posts.
&lt;img src='http://yarpp.org/pixels/3021c069f3568ab29826c3bbfd91cc16'/&gt;
&lt;/div&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juank.black-byte.com/varios-programar-k4w-kinect-windows/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://juank.black-byte.com/varios-programar-k4w-kinect-windows/</feedburner:origLink></item><item><title>Microsoft Corporation busca el mejor Talento Colombiano</title><link>http://feedproxy.google.com/~r/IdeasDeUnConejo/~3/1D83NLISvsw/</link><category>Uncategorized</category><category>Varios</category><category>Colombiano</category><category>Empleo</category><category>Talento</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">JuanK</dc:creator><pubDate>Mon, 04 Mar 2013 14:34:59 PST</pubDate><guid isPermaLink="false">http://juank.black-byte.com/?p=1758</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Acompáñanos y conoce las tecnologías más innovadoras que podrás crear en Microsoft. Aprende cómo prepararte para encontrar un trabajo en Microsoft en Estados Unidos. Conoce sobre vivir y trabajar en Seattle, Washington, USA.</p>
<p>Queremos conocer a estudiantes de pregrado y postgrado, en carreras como Ingeniería de Sistemas, Ingeniería Electrónica o similares.</p>
<p>Trae tu hoja de vida (en inglés y en el estilo de Estados Unidos. Guíate con éste modelo que adjuntamos) <a href="http://sdrv.ms/XCQnWs">http://sdrv.ms/XCQnWs</a>     </p>
<h3>Pregunta en tu Facultad en dónde será la reunión:</h3>
<p><a href="http://juank.black-byte.com/wordpress/uploads/2013/03/hero_stefan_980x569.jpg"><img title="hero_stefan_980x569" style="margin: 0px 10px 10px 0px; border: 0px currentcolor; float: left; display: inline; background-image: none;" border="0" alt="hero_stefan_980x569" align="left" src="http://juank.black-byte.com/wordpress/uploads/2013/03/hero_stefan_980x569_thumb.jpg" width="235" height="193" /></a>- Lunes 4 de Marzo, 11:00 AM: Bogotá, Escuela Colombiana de Ingeniería Julio Garavito     <br />- Lunes 4 de Marzo, 4:00 PM: Bogotá, Auditorio Microsoft, Cra. 7 No. 71-21 Torre B Piso 15     <br />- Martes 5 de Marzo, 11:00 AM: Bogotá, Universidad de los Andes     <br />- Martes 5 de Marzo, 4:00 PM: Bogotá, Pontificia Universidad Javeriana     <br />- Miércoles 6 de Marzo, 11:00 AM: Medellín, Universidad de Medellín     <br />- Miércoles 6 de Marzo, 5:00 PM: Medellín, Universidad de Antioquia     <br />- Jueves 7 de Marzo, 10:00 AM: Medellín, Universidad Nacional de Colombia     <br />- Jueves 7 de Marzo, 3:00 PM: Medellín, Universidad EAFIT     <br />- Viernes 8 de Marzo, 11:00 AM: Cali, Pontificia Universidad Javeriana     <br />- Viernes 8 de Marzo, 4:00 PM: Cali, Universidad Autónoma de Occidente     <br />- Lunes 11 de Marzo, 8:00 AM: Cali, Universidad del Valle     <br />- Lunes 11 de Marzo, 11:00 AM: Cali, Universidad ICESI     <br />- Lunes 11 de Marzo, 4:30 PM: Cali, Universidad San Buenaventura</p>
<p>&#160;</p>
<p>También puedes aplicar en línea <a href="http://www.microsoft.com/university">www.microsoft.com/university</a></p>
<p>&#160;</p>
<h3>Cómo aplicar para posiciones abiertas:</h3>
<p>- Para pasantías, ve a <a href="http://www.facebook.com/l.php?u=http%3A%2F%2Fwww.microsoft.com%2Funiversity%2Fsoftwareintern&amp;h=yAQFtoYMlAQFvNn40pWTiod6EM3Pi73A02C2YckpltkBnWw&amp;s=1">www.microsoft.com/university/softwareintern</a>     <br />- Para posiciones de tiempo complete, ve a <a href="http://www.facebook.com/l.php?u=http%3A%2F%2Fwww.microsoft.com%2Funiversity%2Fsoftware&amp;h=LAQFce3nPAQFXh8O11xya6jn6yswtluNgyufC5VvkmoP1Wg&amp;s=1">www.microsoft.com/university/software</a>     <br />- Al lado izquierdo seleccionar “Software Development Engineer” o “Software Development Engineer in Test”.     <br />- Al lado derecho selecciona el botón azul “Apply Now”     </p>
<h3>Información importante:</h3>
<p>- Información sobre la aplicación, Beneficios de Microsoft, incluyendo relocalización completa, patrocinio de la visa de trabajo en USA y otros está disponible en<a href="http://www.microsoft.com/university">www.microsoft.com/university</a>     <br />- Los reclutadores de Microsoft revisan las hojas de vida teniendo en cuenta lo siguiente: 1) Registro Académico, 2) Experiencia de Trabajo Relevante, 3) Liderazgo     <br />- Ten en cuenta que estamos buscando candidatos para Desarrollo de Software, en pasantías y tiempo complete. NOTA: Los candidatos de tiempo complete deben graduarse a más tardar en Junio de 2013. Los candidatos con fecha de graduación posterior a Junio de 2013 serán considerados para pasantías</p>
<div class='yarpp-related-rss yarpp-related-none'>
<h3>Related Posts</h3>


<p>No related posts.</p>
<img src='http://yarpp.org/pixels/3021c069f3568ab29826c3bbfd91cc16'/>
</div>
<img src="http://feeds.feedburner.com/~r/IdeasDeUnConejo/~4/1D83NLISvsw" height="1" width="1"/>]]></content:encoded><description>Acompáñanos y conoce las tecnologías más innovadoras que podrás crear en Microsoft. Aprende cómo prepararte para encontrar un trabajo en Microsoft en Estados Unidos. Conoce sobre vivir y trabajar en Seattle, Washington, USA. Queremos conocer a estudiantes de pregrado y postgrado, en carreras como Ingeniería de Sistemas, Ingeniería Electrónica o similares. Trae tu hoja de [...]&lt;div class='yarpp-related-rss yarpp-related-none'&gt;
&lt;h3&gt;Related Posts&lt;/h3&gt;



No related posts.
&lt;img src='http://yarpp.org/pixels/3021c069f3568ab29826c3bbfd91cc16'/&gt;
&lt;/div&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juank.black-byte.com/varios/uncategorized-microsoft-corporation-talento-colombiano/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://juank.black-byte.com/varios/uncategorized-microsoft-corporation-talento-colombiano/</feedburner:origLink></item><item><title>Microsoft Apoya a Emprendedores!</title><link>http://feedproxy.google.com/~r/IdeasDeUnConejo/~3/TxpqM4jZ5Po/</link><category>Uncategorized</category><category>Varios</category><category>BizSpark</category><category>Emprendimiento</category><category>Microsoft</category><category>Video</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">JuanK</dc:creator><pubDate>Wed, 27 Feb 2013 19:57:00 PST</pubDate><guid isPermaLink="false">http://juank.black-byte.com/?p=1755</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Hola hice esta entrevista para un sitio web llamado Geek Laguna,&#160; hablando de BizSpark un programa de Microsoft para Emprendedores    <br /> Las comparto con todos ustedes porque se que les será de gran ayuda!</p>
<p>&#160;</p>
<p> <iframe height="315" src="http://www.youtube.com/embed/XJr5iS80Nac" frameborder="0" width="560" allowfullscreen="allowfullscreen"></iframe>
<p>&#160;</p>
<p>Espero sus comentarios y no duden en compartir la información.</p>
<p>Si desean unirse al programa BizSpark en Colombia deben escribir a <a href="mailto:isvcol@microsoft.com">isvcol@microsoft.com</a></p>
<div class='yarpp-related-rss yarpp-related-none'>
<h3>Related Posts</h3>


<p>No related posts.</p>
<img src='http://yarpp.org/pixels/3021c069f3568ab29826c3bbfd91cc16'/>
</div>
<img src="http://feeds.feedburner.com/~r/IdeasDeUnConejo/~4/TxpqM4jZ5Po" height="1" width="1"/>]]></content:encoded><description>Hola hice esta entrevista para un sitio web llamado Geek Laguna,&amp;#160; hablando de BizSpark un programa de Microsoft para Emprendedores Las comparto con todos ustedes porque se que les será de gran ayuda! &amp;#160; &amp;#160; Espero sus comentarios y no duden en compartir la información. Si desean unirse al programa BizSpark en Colombia deben escribir [...]&lt;div class='yarpp-related-rss yarpp-related-none'&gt;
&lt;h3&gt;Related Posts&lt;/h3&gt;



No related posts.
&lt;img src='http://yarpp.org/pixels/3021c069f3568ab29826c3bbfd91cc16'/&gt;
&lt;/div&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juank.black-byte.com/varios/uncategorized-microsoft-apoya-a-emprendedores/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://juank.black-byte.com/varios/uncategorized-microsoft-apoya-a-emprendedores/</feedburner:origLink></item><item><title>Cómo crear Apps para Windows Phone, Windows 8, IOS y Android con Visual Studio y Windows Azure</title><link>http://feedproxy.google.com/~r/IdeasDeUnConejo/~3/uG7z4G3dCl4/</link><category>Azure</category><category>C#</category><category>Varios</category><category>Andoird</category><category>Apps</category><category>Cloud</category><category>iOS</category><category>Mobile Services</category><category>Visual Studio</category><category>Xamarin</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">JuanK</dc:creator><pubDate>Tue, 26 Feb 2013 11:11:03 PST</pubDate><guid isPermaLink="false">http://juank.black-byte.com/?p=1754</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><script >
var url = "http://jkr.im/AppsAzureXamarin";
</script>
<p align="justify">(by <a href="https://twitter.com/JuanKRuiz" target="_blank">@JuanKRuiz</a> )</p>
<p align="justify">El mercado de Apps es un mercado de oportunidades, es la democratización de la industria del software, y no es el futuro, una promesa, es una realidad del presente.</p>
<p align="justify">Cuando creamos un producto, queremos que este sea exitoso,&#160; nos encontramos con un dilema acerca de las plataformas que queremos soportar versus el costo de producción que esto puede implicar.</p>
<p align="justify">Esto es un problema, debido a la forma en que cada plataforma construye sus aplicaciones a veces es inevitable terminar creando tres veces la misma aplicación.</p>
<p align="justify"><a href="http://juank.black-byte.com/wordpress/uploads/2013/02/image.png"><img title="image" style="margin: 0px 0px 5px; border: 0px currentcolor; float: left; display: inline; background-image: none;" border="0" alt="image" align="left" src="http://juank.black-byte.com/wordpress/uploads/2013/02/image_thumb.png" width="94" height="87" /></a>Existen alternativas para solucionar este inconveniente, una de ellas es <a href="http://phonegap.com/">Phonegap</a> la cual nos permiten crear fácilmente aplicaciones con javascript, css y HTML. Es una alternativa importante y conveniente en muchos escenarios, pero no en todos.</p>
<p align="justify">Cuando nuestra aplicación requiere un trabajo más elaborado a nivel de UI la aproximación de Phonegap nos empieza a quedar corta. Cada plataforma tiene características y funcionalidades muy puntuales que con un núcleo común y una interfaz gráfica unificada no logramos cubrir.</p>
<p align="justify">Otro aspecto a tener en cuenta es el tema de la segregación de responsabilidades, el despliegue de nuevas versiones y la escalabilidad de los servicios que consume nuestra aplicación, un backend creado de manera tradicional funciona, sin lugar a dudas, pero esta lejos de ser la mejor opción pues no es muy escalable y adicionalmente siempre tendrás que hacer desarrollo desde los diferentes clientes (las Apps) para consumir los servicios provistos por el backend.</p>
<p>&#160;</p>
<h1>Aquí es donde aparece la magia.</h1>
<h3>Mobile Services, backend en la nube</h3>
<p>&#160;</p>
<p align="justify"><a href="http://juank.black-byte.com/wordpress/uploads/2013/02/image1.png"><img title="image" style="margin: 0px 5px 5px 0px; border: 0px currentcolor; float: left; display: inline; background-image: none;" border="0" alt="image" align="left" src="http://juank.black-byte.com/wordpress/uploads/2013/02/image_thumb1.png" width="80" height="78" /></a>Lo primero que debemos comenzar a pensar es que en el mundo de la movilidad nuestra aplicación puede y debe utilizar servicios en la nube, es la forma más sencilla de tener un core de negocio único y escalable expuesto a través de interfaces desacopladas como lo son los servicios expuestos por REST, o cualquier otra forma similar de web services, </p>
<p>Si, la nube es una solución para buena parte del trabajo de backend, pero&#160; aún seguimos desarrollando varios clientes para consumir dicho backend.</p>
<p><a href="http://juank.black-byte.com/wordpress/uploads/2013/02/image2.png"><img title="image" style="margin: 0px 5px 5px 0px; border: 0px currentcolor; float: left; display: inline; background-image: none;" border="0" alt="image" align="left" src="http://juank.black-byte.com/wordpress/uploads/2013/02/image_thumb2.png" width="61" height="91" /></a>Aquí es donde la magia entra en juego y esa magia tiene nombre propio <a href="http://www.windowsazure.com/en-us/develop/mobile/?fb=es-es&amp;l=es-es">Windows Azure Mobile Services</a>, una funcionalidad de Windows Azure que nos permite olvidarnos de la complejidad de la base de datos y de las características puntuales de cada plataforma de desarrollo para enfocarnos en nuestros datos y nada más.</p>
<p align="justify">Con Mobile Services puedes crear un backend en cuestión de minutos y permitir que este se extienda o modifique dinámicamente de acuerdo a como manipules tus objetos en la aplicación cliente, toda la funcionalidad esta expuesta haciendo uso de REST pero <em>tu no debes programarlo, ni tampoco debes preocuparte por la conexión a la base de datos ni por construir las tablas</em>.</p>
<p>Por si fuera poco <em>(ya que de por si nos hace más de la mitad del trabajo)</em>. Mobile Services ya tiene un SDK para iOS (beta) , Android (beta) , Windows 8 y Windows Phone, qué quiere decir esto?</p>
<p align="justify">Quiere decir que ya tienes componentes hechos para consumirlo y que se programa prácticamente igual en cualquiera de las plataformas sin necesidad de repensar tú código, resultado: un solo backend, múltiples plataformas y en un abrir y cerrar de ojos.</p>
<p align="justify">&#160;</p>
<h3>C# en cualquier plataforma</h3>
<p align="justify">Para crear la aplicación cliente requieres definir entidades, librerías, helpers y un sinfín de objetos necesarios para que el software funcione. En cada plataforma debes implementarlos siguiendo la sintaxis y gramática de cada lenguaje, accediendo a clases especificas de cada framework. Un trabajo interesante e incluso apasionante pero que definitivamente requiere de una inversión de tiempo considerable.</p>
<p align="justify">Que bueno sería tener la opción de escribir en el mismo lenguaje para las tres plataformas, y porque no poder acceder a varias de las librerías que el <a href="http://es.wikipedia.org/wiki/Common_Language_Runtime" target="_blank">CLR</a> nos ofrece.</p>
<p align="justify">Esto era una utopía, desarrollar para sistemas iOS, por ejemplo, implica <strong>no</strong> hacer uso de lenguajes interpretados,&#160; que requieran algún tipo de middleware o runtime para que el sistema permita su ejecución, eso descarta inmediatamente lenguajes como Flash y tristemente lenguajes que se ejecuten sobre un JVM o sobre un CLR como el de .NET.</p>
<p align="justify">La industria esta llena de genios, algunos de ellos hacen historia. <a href="http://es.wikipedia.org/wiki/Miguel_de_icaza" target="_blank">Miguel de Icaza</a> un desarrollador Mexicano famoso por la creación del proyecto <a href="http://es.wikipedia.org/wiki/GNOME" target="_blank">Gnome</a>, el proyecto de <a href="http://es.wikipedia.org/wiki/Proyecto_Mono" target="_blank">Mono</a> y un sinfín de herramientas más se dio cuenta del poder que el CLR y C# pueden dar a los desarrolladores de Apps para dispositivos móviles y ante la restricción de las plataformas decidió modificar el compilador de Mono para que <em>no</em> generara código intermedio (IL) sino que generara código nativo de una vez, el resultado dos productos que desde ya se posicionan como una opción poderosa para desarrollar Apps:</p>
<p align="justify"><img style="margin: 0px 5px 5px 0px; float: left; display: inline;" align="left" src="http://xamarin.com/images/tour/xamarin-studio-icon.png" />&#160;</p>
<p align="justify"><a href="http://xamarin.com/ios" target="_blank">Xamarin.iOS (Monotouch)</a></p>
<p align="justify"><a href="http://xamarin.com/monoforandroid" target="_blank">Xamarin.Android (Monodroid)</a></p>
<p>&#160;</p>
<p align="justify">Lo mejor de todo es que existe una versión gratuita que incluye como editor Mono Develop y a partir de la versión Bussiness son 100% compatibles y utilizables desde Visual Studio 2012.</p>
<p align="justify">&#160;</p>
<h1 align="justify">Manos a la Obra</h1>
<p align="justify">Estoy seguro que si tenias ideas acerca de como crear Apps multiplataforma con este artículo ya has visto la luz, Microsoft promueve y apoya 100% los sistemas interoperables, pues la realidad del mercado es que hay muchas opciones pera muchos gustos y necesidades.</p>
<p align="justify">Microsoft como creador de C# y del CLR promueve la adopción de estas tecnologías en diferentes plataformas y por medio de una plataforma en la nube de capacidades inimaginables como Windows Azure Te permite y allana el camino para tener el backend ideal sin importar las plataformas en que quieras implementar tu aplicación.</p>
<div class='yarpp-related-rss'>
<h3>Related Posts</h3>

<a href="http://juank.black-byte.com/windows-phone-desarrollar-apps-html5-js-azure-mobile-services-futuro-presente/" rel="bookmark">Despierta, desarrollar apps con HTML5/JS y Azure Mobile Services es el futuro y el presente</a><!-- (5)-->, 
<a href="http://juank.black-byte.com/csharp-como-acceder-storage-windows-azure-utilizando-rest-windows-8-winrt-video/" rel="bookmark">Cómo acceder al Storage de Windows Azure Utilizando REST en Windows 8 &#8211; WinRT &#8211; Video</a><!-- (4)-->
<img src='http://yarpp.org/pixels/3021c069f3568ab29826c3bbfd91cc16'/>
</div>
<img src="http://feeds.feedburner.com/~r/IdeasDeUnConejo/~4/uG7z4G3dCl4" height="1" width="1"/>]]></content:encoded><description>(by @JuanKRuiz ) El mercado de Apps es un mercado de oportunidades, es la democratización de la industria del software, y no es el futuro, una promesa, es una realidad del presente. Cuando creamos un producto, queremos que este sea exitoso,&amp;#160; nos encontramos con un dilema acerca de las plataformas que queremos soportar versus el [...]&lt;div class='yarpp-related-rss'&gt;
&lt;h3&gt;Related Posts&lt;/h3&gt;

&lt;a href="http://juank.black-byte.com/windows-phone-desarrollar-apps-html5-js-azure-mobile-services-futuro-presente/" rel="bookmark"&gt;Despierta, desarrollar apps con HTML5/JS y Azure Mobile Services es el futuro y el presente&lt;/a&gt;&lt;!-- (5)--&gt;, 
&lt;a href="http://juank.black-byte.com/csharp-como-acceder-storage-windows-azure-utilizando-rest-windows-8-winrt-video/" rel="bookmark"&gt;Cómo acceder al Storage de Windows Azure Utilizando REST en Windows 8 &amp;#8211; WinRT &amp;#8211; Video&lt;/a&gt;&lt;!-- (4)--&gt;
&lt;img src='http://yarpp.org/pixels/3021c069f3568ab29826c3bbfd91cc16'/&gt;
&lt;/div&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juank.black-byte.com/csharp-como-desarrollar-apps-windows-phone-8-ios-android-visual-studio-azure/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://juank.black-byte.com/csharp-como-desarrollar-apps-windows-phone-8-ios-android-visual-studio-azure/</feedburner:origLink></item><item><title>Cómo crear el header Authorization para operaciones REST en Azure Storage?</title><link>http://feedproxy.google.com/~r/IdeasDeUnConejo/~3/GLHAgNo1_Ps/</link><category>Azure</category><category>C#</category><category>Base64</category><category>Cryptography</category><category>HMACSHA_256</category><category>REST</category><category>SharedKey</category><category>SharedKeyLite</category><category>Sign</category><category>Signature</category><category>Storage</category><category>UTF8</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">JuanK</dc:creator><pubDate>Fri, 14 Dec 2012 00:18:47 PST</pubDate><guid isPermaLink="false">http://juank.black-byte.com/?p=1698</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p align="right">
<p align="right">
<p><a href="http://juank.black-byte.com/wordpress/uploads/2012/12/Keymaker-ya-casi-est.jpg"><img title="Keymaker ya casi está" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="Keymaker ya casi está" src="http://juank.black-byte.com/wordpress/uploads/2012/12/Keymaker-ya-casi-est_thumb.jpg" width="593" height="251" /></a></p>
<p><em>Lo sé porque lo debo de saber, es mi propósito.</em></p>
<p>&#160;</p>
<p>Hola Neo, te hace falta entender con que llave puedes entrar a la Matrix?</p>
<p><strong>Neo</strong>: Tú</p>
<p><strong>Llave</strong>: Authorization Header</p>
<p><strong>Matrix</strong>: Azure Storage</p>
<p>&#160;</p>
<p>Cada vez que vamos a enviar operaciones al storage de Windows Azure debemos llenar el header de autorización, esto en primera instancia parece una tarea fácil de realizar.</p>
<p>De acuerdo a la documentación el header se debe elaborar de la siguiente forma:</p>
<pre class="brush: csharp; title: ; notranslate">Authorization=&quot;[SharedKey|SharedKeyLite] &lt;AccountName&gt;:&lt;Signature&gt;&quot;</pre>
<p>Revisémoslo por partes.</p>
<h1>[SharedKey|SharedKeyLite]</h1>
<p>Un error muy común es presumir que SharedKey es la StorageKey que tenemos en nuestra cuenta de storage de Windows Azure, esta llave si tiene que ver en el proceso pero jamás se envía como parte del header.</p>
<p>En la historia de Azure Storage tenemos ya el release de unas cuantas versiones, y con cambios entre una y otra versión han llegado también cambios en la forma de obtener el signature. Es decir ha cambiado el esquema de autenticación.</p>
<p>En el caso de Blob y Queue Storage ahora se debe incluir información adicional al momento de calcular la firma, sin embargo por temas de compatibilidad hacia atrás se permite seguir calculando la firma de la forma como se hacia anteriormente de tal forma que no dejen de funcionar las cosas que ya venían haciéndolo.</p>
<p>Por ello cuando hacemos operaciones con versiones anteriores a 2009-09-19 hacemos uso de SharedKeyLite (llave compartida ligera) que no es sino una versión más sencilla, menos compleja de SharedKey.</p>
<p>En este artículo explicare como se hace utilizando SharedKey que al ser una versión más compleja ya incorpora en si misma los cálculos para de SharedKeyLite.</p>
<p>SharedKeyLite es el esquema usado para utilización de TableStorage aún en la versión 2012-02-12, es decir en el caso de Table Storage no se hace uso de SharedKey.</p>
<p>Así las cosas el encabezado queda de la siguiente manera.</p>
<pre class="brush: csharp; title: ; notranslate">Authorization=&quot;SharedKey &lt;AccountName&gt;:&lt;Signature&gt;&quot;</pre>
<h1>AccountName</h1>
<p>Es el nombre de la cuenta de storage de Windows Azure que se haya creado, por ejemplo MyStorage.</p>
<pre class="brush: csharp; title: ; notranslate">Authorization=&quot;SharedKey MyStorage:&lt;Signature&gt;&quot;</pre>
<h1>Signature</h1>
<p>Tricky part</p>
<p>La firma se utiliza para que tanto el cliente que envía la petición como el servidor de Azure Storage puedan validar que la información recibida es confiable y proviene de una fuente segura.</p>
<p>Así que con la información que existe en el el cliente que realiza la solicitud se realiza una serie de cálculos para obtener una firma, y en el servidor se realizan de nuevo dichos cálculos . Si la firma resultante es la misma entonces la operación es autorizada, de lo contrario es rechazada con un código de error&#160; 403 (forbidden).</p>
<p>La creación de la firma se puede reducir a dos pasos</p>
<ol>
<li>Crear la cadena a firmar</li>
<li>Firmar la cadena</li>
</ol>
<h3>Crear la cadena a firmar</h3>
<p> De acuerdo a la documentación la cadena a firmar es una cadena donde se concatenan una línea tras otra con </p>
<ul>
<li>La <strong>operación</strong> a realizar (PUT, GET, POST,DELETE, etc)</li>
<li>Una serie de <strong>encabezados http pre establecidos</strong>, cuando no se tiene alguno de los encabezados se deja la línea en blanco</li>
<li>Una serie de encabezados <strong>http canónicos</strong>, <strong>esto es los encabezados adicionados al request que comienzan por x-ms-</strong>, deben concatenarse y <strong>ordenarse</strong> de manera alfabética siguiendo este patrón &quot;x-ms-headername:value\n&quot;, si algún header x-ms-no es utilizado simplemente no hace parte de la lista y <strong>no se deja salto de línea</strong> en su lugar.</li>
<li>El <strong>nombre canónico del recurso</strong>, implica escribir el&#160; recurso que se esta accediendo en formato &quot;/accountName/containers/blobname\parameter:value\n&quot; siendo la última parte una lista con los parámetros utilizados cada uno con formato &quot;parámetro:valor\n&quot; al final de esta cadena NO hay salto de línea.</li>
</ul>
<p> Cuando no se tiene alguno de los encabezados del segundo punto se deja la línea en blanco. </p>
<p> Quedando de esta forma ( los comentarios están solo por claridad , NO hacen parte de la cadena ) </p>
<pre class="brush: csharp; title: ; notranslate">GET\n /*HTTP Verb*/
\n    /*Content-Encoding*/
\n    /*Content-Language*/
\n    /*Content-Length*/
\n    /*Content-MD5*/
\n    /*Content-Type*/
\n    /*Date*/
\n    /*If-Modified-Since */
\n    /*If-Match*/
\n    /*If-None-Match*/
\n    /*If-Unmodified-Since*/
\n    /*Range*/
x-ms-date:Sun, 11 Oct 2009 21:49:13 GMT\n
x-ms-version:2009-09-19\n/*CanonicalizedHeaders*/
/myaccount/mycontainered\n
comp:metadata\n
restype:container\n
timeout:20/*CanonicalizedResource*/</pre>
<p>Acá esta el extracto de los headers canónicos del ejemplo</p>
<pre class="brush: csharp; title: ; notranslate">x-ms-date:Sun, 11 Oct 2009 21:49:13 GMT\nx-ms-version:2009-09-19\n</pre>
<p>Es decir cumplen con el formato &quot;header:valor\n&quot; y además están organizados alfabéticamente.</p>
<p>Este es un extracto del recurso canónico</p>
<pre class="brush: csharp; title: ; notranslate">/myaccount/mycontainered\ncomp:metadata\nrestype:container\ntimeout:20 </pre>
<p>Nota: en el simulador de Azure Storage el nombre de la cuenta se debe colocar dos veces en el nombre de recurso canónico, ejemplo:</p>
<pre class="brush: csharp; title: ; notranslate">/&lt;strong&gt;myaccount/myaccount&lt;/strong&gt;/mycontainered\ncomp:metadata\nrestype:container\ntimeout:20 </pre>
<p> Si eliminamos los comentarios vemos como queda la cadena finalmente:</p>
<pre class="brush: csharp; title: ; notranslate">GET\n\n\n\n\n\n\n\n\n\n\n\nx-ms-date:Sun, 11 Oct 2009 21:49:13 GMT\nx-ms-version:2009-09-19\n/myaccount/myaccount/mycontainered\ncomp:metadata\nrestype:container\ntimeout:20</pre>
<p>&#160;&#160; Para tener más claridad respecto a como calcular los siguientes campos</p>
<ul>
<li>Que headers se deben utilizar</li>
<li>Date / x-ms-date , que deben estar en formato RFC1123</li>
<li>Canonicalized Headers, cuales se deben utilizar</li>
</ul>
<p> les recomiendo revisar este enlace <a href="http://msdn.microsoft.com/en-us/library/windowsazure/dd179451.aspx">Put Blob (REST API)</a></p>
<h3>Firmar la cadena</h3>
<p> Ya teniendo preparada la cadena como lo vimos en el punto anterior se procede a firmarla.</p>
<p> De acuerdo a la documentación se debe hacer utilizando este patrón:</p>
<pre class="brush: csharp; title: ; notranslate">Signature=Base64(HMAC-SHA256(UTF8(StringToSign)))</pre>
<p> Analizándolo de adentro hacia afuera:</p>
<pre class="brush: csharp; title: ; notranslate">(UTF8(StringToSign)</pre>
<p>dado que la misma cadena a nivel binario puede ser completamente diferente lo primero que debemos hacer es convertirla a encoding UTF8. Una vez así ya sabemos que ambos lados firmarán la misma información.</p>
<pre class="brush: csharp; title: ; notranslate">HMAC-SHA256(UTF8(StringToSign))</pre>
<p>Esto indica que la cadena debe firmarse utilizando el algoritmo HMAC-SHA256&#8230; solo que en la documentación se ha olvidado decir algo que es SUMAMENTE IMPORTANTE:</p>
<ul>
<li>Para firmar una cadena con dicho algoritmo se requiere una llave de encripción simétrica</li>
<li>La llave de encripción simétrica es la <mark>CLAVE DE ACCESO PRIMARIA</mark> de la cuenta de Azure Storage que se esta utilizando.</li>
</ul>
<p>Es importante tener en cuenta que la <mark>CLAVE DE ACCESO PRIMARIA</mark> es entregada por Windows Azure expuesta como una cadena Base64.</p>
<p>Hacer la tarea de firmado cambia de acuerdo al lenguaje y framework que estemos utilizando.</p>
<p>En este artículo muestro como hacerlo fácilmente desde Windows 8 (o sea WinRT), de paso haciendo la conversión al encoding UTF 8.</p>
<p><a href="http://blogs.msdn.com/b/juank/archive/2012/12/11/como-usar-mecanismos-firma-digital-windows-8-winrt.aspx">Cómo usar mecanismos de firma digital en Windows 8? &#8211; WinRT</a></p>
<pre class="brush: csharp; title: ; notranslate">Base64(HMAC-SHA256(UTF8(StringToSign)))</pre>
<p>Los algoritmos de cifrado &#8211; hash &#8211; signature devuelven la información en forma de información binaria que no es representable por medio de cadenas de texto, y un header de un request http requiere que la información este en texto plano.</p>
<p>Una de las formas de mostrar contenido binario como texto plano es utilizando el esquema de codificación <a href="http://es.wikipedia.org/wiki/Base64">Base64</a> técnicamente no es una cosa que aprendas a hacer en un par de minutos, pero por fortuna es tan ampliamente adoptado que todos los frameworks ya lo incluyen como funcionalidad, de tal forma que envías un conjunto de datos y obtienes una cadena en dicho formato.</p>
<p>Así las cosas el header de autorización puede lucir de manera muy similar a esto:</p>
<pre class="brush: csharp; title: ; notranslate">Authorization=&amp;quot;SharedKey MyStorage:Kcb0oMaIBCLITcBJStWjNj5WN309FEhbbfIb7ocX3bE=&amp;quot;</pre>
<h1>Ejemplo</h1>
<p>En este artículo, tengo un video donde se explica paso por paso como hacer una operación REST para manipular el storage de Windows Azure desde Windows 8 (WinRT)y de paso muestro como elaborar el header Authorization con todo lo expuesto en este artículo incluyendo como realizar la firma digital.</p>
<p><a href="http://blogs.msdn.com/b/juank/archive/2012/12/06/como-acceder-storage-windows-azure-utilizando-rest-windows-8-winrt-video.aspx">Video &#8211; Cómo acceder al Storage de Windows Azure Utilizando REST en Windows 8 &#8211; WinRT &#8211; C#</a></p>
<div class='yarpp-related-rss'>
<h3>Related Posts</h3>

<a href="http://juank.black-byte.com/csharp-como-acceder-storage-windows-azure-utilizando-rest-windows-8-winrt-video/" rel="bookmark">Cómo acceder al Storage de Windows Azure Utilizando REST en Windows 8 &#8211; WinRT &#8211; Video</a><!-- (15.6)-->, 
<a href="http://juank.black-byte.com/csharp-como-usar-mecanismos-firma-digital-windows-8-winrt/" rel="bookmark">Cómo usar mecanismos de firma digital en Windows 8? &#8211; WinRT</a><!-- (4)-->
<img src='http://yarpp.org/pixels/3021c069f3568ab29826c3bbfd91cc16'/>
</div>
<img src="http://feeds.feedburner.com/~r/IdeasDeUnConejo/~4/GLHAgNo1_Ps" height="1" width="1"/>]]></content:encoded><description>Lo sé porque lo debo de saber, es mi propósito. &amp;#160; Hola Neo, te hace falta entender con que llave puedes entrar a la Matrix? Neo: Tú Llave: Authorization Header Matrix: Azure Storage &amp;#160; Cada vez que vamos a enviar operaciones al storage de Windows Azure debemos llenar el header de autorización, esto en primera [...]&lt;div class='yarpp-related-rss'&gt;
&lt;h3&gt;Related Posts&lt;/h3&gt;

&lt;a href="http://juank.black-byte.com/csharp-como-acceder-storage-windows-azure-utilizando-rest-windows-8-winrt-video/" rel="bookmark"&gt;Cómo acceder al Storage de Windows Azure Utilizando REST en Windows 8 &amp;#8211; WinRT &amp;#8211; Video&lt;/a&gt;&lt;!-- (15.6)--&gt;, 
&lt;a href="http://juank.black-byte.com/csharp-como-usar-mecanismos-firma-digital-windows-8-winrt/" rel="bookmark"&gt;Cómo usar mecanismos de firma digital en Windows 8? &amp;#8211; WinRT&lt;/a&gt;&lt;!-- (4)--&gt;
&lt;img src='http://yarpp.org/pixels/3021c069f3568ab29826c3bbfd91cc16'/&gt;
&lt;/div&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juank.black-byte.com/csharp-como-crear-header-authorization-rest-azure-storage/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://juank.black-byte.com/csharp-como-crear-header-authorization-rest-azure-storage/</feedburner:origLink></item><item><title>Cómo usar mecanismos de firma digital en Windows 8? – WinRT</title><link>http://feedproxy.google.com/~r/IdeasDeUnConejo/~3/dNaKu_z7eN4/</link><category>C#</category><category>Windows 8</category><category>WinRT</category><category>CryptographicBuffer</category><category>CryptographicEngine</category><category>Cryptography</category><category>HMACSHA_256</category><category>IBuffer</category><category>MacAlgorithmProvider</category><category>Sign</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">JuanK</dc:creator><pubDate>Tue, 11 Dec 2012 14:57:58 PST</pubDate><guid isPermaLink="false">http://juank.black-byte.com/?p=1687</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><a href="http://juank.black-byte.com/wordpress/uploads/2012/12/Encryption_4Col-630x396.jpg"><img title="Encryption_4Col-630x396" src="http://juank.black-byte.com/wordpress/uploads/2012/12/Encryption_4Col-630x396_thumb.jpg" width="244" height="155">&#160;</img></a></p>
<p>WinRT como muchos de ustedes saben nos permite crear aplicaciones con C# , como suelo mencionar en muchos de mis cursos WinRT:</p>
<ul>
<li>Se programa como en .NET Framework</li>
<li>Se ve como .NET Framework</li>
<li>Muchos componentes se llaman igual que en el .NET Framework</li>
<li>Pero WinRT NO es .NET Framework</li>
<li>Por ello, hay cosas que simplemente no existen aún en WinRT o existen pero con nombres y forma de uso diferentes, ese es el caso de las API de criptografía.</li>
</ul>
<p>&#160;</p>
<p>Valga decir que la implementación en WinRT me parece mucho más limpia y mejor estructurada, aunque aún tiene opciones de mejora, sutiles pero que suman para hacer la diferencia.</p>
<p>Sin más preámbulos, en este artículo enseñare a firmar contenidos digitalmente haciendo uso de la API de criptografía, tomare como base el algoritmo HMAC SHA256, como verán el algoritmo que escojamos es irrelevante en el proceso de firmado.</p>
<h1>Cómo firmar digitalmente la información?</h1>
<p>Creamos un método público llamado ComputeSignature que reciba como parámetro</p>
<ol>
<li>El nombre del algoritmo a utilizar</li>
<li>El contenido a firmar</li>
<li>Un valor para crear la llave</li>
<li>El tipo de encoding para el contenido</li>
</ol>
<p>Para efectos de este post asumiremos que el contenido a firmar sea siempre de tipo string. Es importante incluir el tipo de encoding del texto porque un mismo texto puede tener una información binaria diferente de acuerdo al tipo de encoding y dado que las operaciones criptográficas utilizan datos binarios se pueden presentar diferencias al calcular la firma digital en un encoding u otro.</p>
<p>Por defecto el encoding manejado lo estableceremos en UTF8.</p>
<p>El método devuelve una cadena de texto que es la firma del contenido.</p>
<pre class="brush: csharp; title: ; notranslate">
public string ComputeSignature(string algorithmName, string content, string key,
                               BinaryStringEncoding encoding = BinaryStringEncoding.Utf8)
{
        
}
</pre>
<p>Agregamos referencia a los siguientes namespaces </p>
<pre class="brush: csharp; title: ; notranslate">
using Windows.Security.Cryptography;
using Windows.Security.Cryptography.Core;
</pre>
<p>Dentro del método inicializamos el proveedor del algoritmo con el valor enviado como parámetro, dado que como parámetro hemos recibido un enum este debemos convertirlo en string. </p>
<pre class="brush: csharp; title: ; notranslate">
public string ComputeSignature(string algorithmName, string content, string key,
                               BinaryStringEncoding encoding = BinaryStringEncoding.Utf8)
{
    var algorithmProvider = MacAlgorithmProvider.OpenAlgorithm(algorithmName);
}
</pre>
<p>Ahora hay que preparar el contenido que vamos a firmar, la API de criptografía funciona utilizando información expuesta por medio de la interfaz <mark>IBuffer</mark>, así que hay que convertir la información a dicho formato, esto lo hacemos haciendo uso de la clase <mark>CryptographicBuffer</mark> la cual expone varios métodos estáticos que permiten convertir datos desde y hacia una interfaz IBuffer.</p>
<pre class="brush: csharp; title: ; notranslate">
public string ComputeSignature(string algorithmName, string content, string key,
                               BinaryStringEncoding encoding = BinaryStringEncoding.Utf8)
{
    var algorithmProvider = MacAlgorithmProvider.OpenAlgorithm(algorithmName);
    var contentBuffer = CryptographicBuffer.ConvertStringToBinary(content, BinaryStringEncoding.Utf8);
}
</pre>
<p>Para lograr el proceso de la firma se requiere crear una llave criptográfica, más adelante veremos como crear una, por ahora asumamos que la llave llega como parámetro expuesta como una cadena.</p>
<p>Así que ahora hay que convertir la cadena en información que pueda entender la API de criptografía, es decir en forma de un IBuffer.</p>
<p>La llave utilizada para calcular la firma digital es una llave simétrica, por lo cual la información que contiene es información binaria que no necesariamente tiene representación como texto, dado que el método que hemos creado recibe la llave como texto debemos presumir que se trata información binaria expuesta como cadena haciendo uso de Base64, por ello utilizando CryptographicBuffer convertiremos esta cadena directamente a IBuffer.</p>
<pre class="brush: csharp; title: ; notranslate">
public string ComputeSignature(string algorithmName, string content, string key,
                               BinaryStringEncoding encoding = BinaryStringEncoding.Utf8)
{
    var algorithmProvider = MacAlgorithmProvider.OpenAlgorithm(algorithmName);
    var contentBuffer = CryptographicBuffer.ConvertStringToBinary(content, BinaryStringEncoding.Utf8);
    var keyBuffer = CryptographicBuffer.DecodeFromBase64String(key);
}
</pre>
<p>Estando ya en forma de buffer creamos la llave criptográfica de acuerdo al algoritmo seleccionado:</p>
<pre class="brush: csharp; title: ; notranslate">
public string ComputeSignature(string algorithmName, string content, string key,
                               BinaryStringEncoding encoding = BinaryStringEncoding.Utf8)
{
    var algorithmProvider = MacAlgorithmProvider.OpenAlgorithm(algorithmName);
    var contentBuffer = CryptographicBuffer.ConvertStringToBinary(content, BinaryStringEncoding.Utf8);
    
    var keyBuffer = CryptographicBuffer.DecodeFromBase64String(key);
    var signatureKey = algorithmProvider.CreateKey(keyBuffer);
}
</pre>
<p>Finalmente creamos la firma, esto es sencillo, en la clase <mark>CryptographicEngine</mark> existe el método Sign el cual solo requiere la llave y el contenido para firmar. Este método como pueden adivinar devuelve un IBuffer, nosotros requerimos que devuelva un string así que nuevamente hacemos uso de CryptographicBuffer pero esta vez para convertir el IBuffer a un string con la información binaria expuesta como Base64.</p>
<pre class="brush: csharp; title: ; notranslate">
public string ComputeSignature(string algorithmName, string content, string key,
                               BinaryStringEncoding encoding = BinaryStringEncoding.Utf8)
{
    var algorithmProvider = MacAlgorithmProvider.OpenAlgorithm(algorithmName);
    var contentBuffer = CryptographicBuffer.ConvertStringToBinary(content, BinaryStringEncoding.Utf8);
    
    var keyBuffer = CryptographicBuffer.DecodeFromBase64String(key);
    var signatureKey = algorithmProvider.CreateKey(keyBuffer);

    var signedBuffer = CryptographicEngine.Sign(signatureKey, contentBuffer);

    return CryptographicBuffer.EncodeToBase64String(signedBuffer);
}
</pre>
<h1>Cómo crear una llave simétrica para la firma?</h1>
<p>Para probar el método ComputeSignature debemos enviar como parámetro una llave de cifrado.</p>
<p>Las llaves no pueden ser de un tamaño escogido por capricho, cada algoritmo tiene algunas restricciones para el&#160; tamaño de llave que requiere.</p>
<p>CryptographicBuffer también posee un método <mark>GenerateRandom</mark> el cual nos permite crear material para la llave. Es decir sino tenemos llaves simétricas podemos generar las propias de la siguiente manera:</p>
<pre class="brush: csharp; title: ; notranslate">
private string GenerateMacSimetricKey(string algorithmName)
{
    var alg = MacAlgorithmProvider.OpenAlgorithm(algorithmName);
    var keyBuffer = CryptographicBuffer.GenerateRandom(alg.MacLength);
    return CryptographicBuffer.EncodeToBase64String(keyBuffer);
}
</pre>
<h1>Cómo verificar un contenido firmado?</h1>
<p>La forma de verificar una firma es en efecto volviendo a calcular la firma, si la cifra calculada es igual a la firma con que ha llegado la información entonces la información es correcta y no ha sido modificada.</p>
<p>WinRT tiene ya incorporado un método para verificar la firma, en la clase CryptographicEngine esta el método <mark>VerifySignature</mark>, este, como es de esperarse, requiere como parámetros datos de tipo IBuffer y <mark>CryptographicKey</mark>, si ya los tienes a la mano usar esta alternativa es bastante eficiente, pero si por el contrario tienes la llave en cualquier otro formato y debes convertirla a CryptographicKey no tendrás ninguna ventaja respecto a calcular nuevamente la firma ya que debes hacer prácticamente la misma cantidad de operaciones en código.</p>
<h1>Ejemplo de uso</h1>
<p>Creamos un método Test para realizar las pruebas.</p>
<p>En el creamos el contenido que deseamos firmar, y generamos una llave para realizar dicha firma.</p>
<pre class="brush: csharp; title: ; notranslate">
        public void Test()
        {
            var contenido = @&quot;Nombre:Juan Carlos Ruiz Pacheco
CC:79919051
Profesión:Ingeniero de Sistemas
Nacionalidad:Colombiano&quot;;

            var alg = MacAlgorithmProvider.OpenAlgorithm(MacAlgorithmNames.HmacSha256);
            var signatureKey = GenerateMacSimetricKey(MacAlgorithmNames.HmacSha256);
            Debug.WriteLine(string.Format(&quot;This is the signature key:{0}&quot;, signatureKey));

            var signature = ComputeSignature(MacAlgorithmNames.HmacSha256, contenido, signatureKey);
            Debug.WriteLine(string.Format(&quot;This is the computed signature:{0}&quot;, signature));
        }
</pre>
<p>Salida: </p>
<p> <code>This is the signature key:kbKOyOBMP8MHMDQ2Gtnn1HXgAXDjcuFOAcOzE+fnS2I=</code>   <br /><code>This is the computed signature:Kcb0oMaIBCLITcBJStWjNj5WN309FEhbbfIb7ocX3bE=</code>
<p>Eso es todo, espero que el artículo les sea de utilidad</p>
<div class='yarpp-related-rss yarpp-related-none'>
<h3>Related Posts</h3>


<p>No related posts.</p>
<img src='http://yarpp.org/pixels/3021c069f3568ab29826c3bbfd91cc16'/>
</div>
<img src="http://feeds.feedburner.com/~r/IdeasDeUnConejo/~4/dNaKu_z7eN4" height="1" width="1"/>]]></content:encoded><description>&amp;#160; WinRT como muchos de ustedes saben nos permite crear aplicaciones con C# , como suelo mencionar en muchos de mis cursos WinRT: Se programa como en .NET Framework Se ve como .NET Framework Muchos componentes se llaman igual que en el .NET Framework Pero WinRT NO es .NET Framework Por ello, hay cosas que [...]&lt;div class='yarpp-related-rss yarpp-related-none'&gt;
&lt;h3&gt;Related Posts&lt;/h3&gt;



No related posts.
&lt;img src='http://yarpp.org/pixels/3021c069f3568ab29826c3bbfd91cc16'/&gt;
&lt;/div&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juank.black-byte.com/csharp-como-usar-mecanismos-firma-digital-windows-8-winrt/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://juank.black-byte.com/csharp-como-usar-mecanismos-firma-digital-windows-8-winrt/</feedburner:origLink></item><item><title>Cómo acceder al Storage de Windows Azure Utilizando REST en Windows 8 – WinRT – Video</title><link>http://feedproxy.google.com/~r/IdeasDeUnConejo/~3/BsiV7qsIzNM/</link><category>Azure</category><category>C#</category><category>Windows 8</category><category>WinRT</category><category>REST</category><category>Windows Store</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">JuanK</dc:creator><pubDate>Wed, 05 Dec 2012 21:28:09 PST</pubDate><guid isPermaLink="false">http://juank.black-byte.com/?p=1674</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>&#160;</p>
<p>Aprende a utilizar el servicio de cloud storage de Windows Azure utilizando la API REST.</p>
<p>Esto puede ser muy útil cuando no puedes usar Windows Azure SDK o cuando no hay una versión del SDK disponible para el lenguaje o plataforma que manejas.&#160;&#160; </p>
<p>El video se hizo en WinRT + C# pero el mecanismo puede ser imitado desde otros lenguajes y frameworks.     <br />En este video también se muestra como construir el header de autorización incluyendo como crear la firma con el Storage Key.</p>
<p>&nbsp;</p>
<p>Aprende a utilizar el servicio de cloud storage de Windows Azure utilizando la API REST.</p>
<p>Esto puede ser muy &uacute;til cuando no puedes usar Windows Azure SDK o cuando no hay una versi&oacute;n del SDK disponible para el lenguaje o plataforma que manejas.&nbsp;&nbsp;</p>
<p>El video se hizo en WinRT + C# pero el mecanismo puede ser imitado desde otros lenguajes y frameworks.&nbsp;<br />En este video tambi&eacute;n se muestra como construir el header de autorizaci&oacute;n incluyendo como crear la firma con el Storage Key.</p>
<p>
<iframe width="560" height="315" src="http://www.youtube.com/embed/NJQzEnk2Gck" frameborder="0"></iframe></p>
<p>Este es el código fuente</p>
<pre class="brush: csharp; title: ; notranslate">using System;
using System.Globalization;
using System.IO;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
using Windows.Security.Cryptography;
using Windows.Security.Cryptography.Core;

namespace App5.Storage
{
    public class BlockBlobStorage
    {
        private const string X_MS_BLOCK_BLOB = &quot;BlockBlob&quot;;
        private const string X_MS_VERSION = &quot;2012-02-12&quot;;
        public string Account { get; set; }
        public string Key { get; set; }

        public BlockBlobStorage(string account, string key)
        {
            Account = account;
            Key = key;
        }

        public async Task&lt;HttpResponseMessage&gt; UploadAsync(string blobname, Stream stream,
            string mimetype = &quot;application/octect-stream&quot;)
        {
            var httpClient = new HttpClient();
            var content = new StreamContent(stream);
            var tmpdate = RFC1123DateTime;
            //headers
            content.Headers.ContentType = new MediaTypeHeaderValue(mimetype);
            httpClient.DefaultRequestHeaders.Add(&quot;x-ms-date&quot;, tmpdate);
            httpClient.DefaultRequestHeaders.Add(&quot;x-ms-blob-type&quot;, X_MS_BLOCK_BLOB);
            httpClient.DefaultRequestHeaders.Add(&quot;x-ms-version&quot;, X_MS_VERSION);

            string signature = CreateSignature(
                HTTPVerb: &quot;PUT&quot;,
                ContentLength: stream.Length.ToString(),
                ContentType: mimetype,
                CanonicalizedHeaders: &quot;x-ms-blob-type:BlockBlob\nx-ms-date:&quot; + tmpdate + &quot;\nx-ms-version:2012-02-12&quot;,
                CanonicalizedResource: string.Format(&quot;/{0}/{1}&quot;, Account, blobname)
                );

            httpClient.DefaultRequestHeaders.Add(&quot;Authorization&quot;,
                string.Format(&quot;SharedKey {0}:{1}&quot;, Account, signature));

            return await httpClient.PutAsync(
                string.Format(&quot;http://{0}.blob.core.windows.net/{1}&quot;, Account, blobname),
                content
                );
        }

        private string CreateSignature(
            string HTTPVerb = &quot;&quot;,
            string ContentEncoding = &quot;&quot;,
            string ContentLanguage = &quot;&quot;,
            string ContentLength = &quot;&quot;,
            string ContentMD5 = &quot;&quot;,
            string ContentType = &quot;&quot;,
            string Date = &quot;&quot;,
            string IfModifiedSince = &quot;&quot;,
            string IfMatch = &quot;&quot;,
            string IfNoneMatch = &quot;&quot;,
            string IfUnmodifiedSince = &quot;&quot;,
            string Range = &quot;&quot;,
            string CanonicalizedHeaders = &quot;&quot;,
            string CanonicalizedResource = &quot;&quot;
            )
        {
            var sumstring = string.Format(&quot;{0}\n{1}\n{2}\n{3}\n{4}\n{5}\n{6}\n{7}\n{8}\n{9}\n{10}\n{11}\n{12}\n{13}&quot;,
                HTTPVerb, ContentEncoding, ContentLanguage, ContentLength, ContentMD5,
                ContentType, Date, IfModifiedSince, IfMatch, IfNoneMatch, IfUnmodifiedSince,
                Range, CanonicalizedHeaders, CanonicalizedResource
                );

            return ComputeHMAC_SHA256(sumstring);
        }

        private string ComputeHMAC_SHA256(string input)
        {
            var alg = MacAlgorithmProvider.OpenAlgorithm(&quot;HMAC_SHA256&quot;);
            //preparar input
            var inputBuffer = CryptographicBuffer.ConvertStringToBinary(input, BinaryStringEncoding.Utf8);
            //preparar key
            var keybuffer = CryptographicBuffer.DecodeFromBase64String(Key);
            var hmacKey = alg.CreateKey(keybuffer);

            var signbuffer = CryptographicEngine.Sign(hmacKey, inputBuffer);
            return CryptographicBuffer.EncodeToBase64String(signbuffer);
        }

        public string RFC1123DateTime { get { return DateTime.UtcNow.ToString(&quot;R&quot;, CultureInfo.InvariantCulture); } }
    }
}
</pre>
<pre class="brush: csharp; title: ; notranslate">         var file = await StorageFile.GetFileFromApplicationUriAsync(new Uri(&quot;ms-appx:///Assets/chocorramo.jpg&quot;));
    var stream = await file.OpenStreamForReadAsync();

    var blobUploader = new BlockBlobStorage(&quot;jk4freeusage&quot;, &quot;Yk4KMu8b0FAzCuqJf4y3j5XSslLxqXYndfkReWg8YkLFVaQOzF1Ga4eAE8jy+rEyOMh9RP228rz0SB2uwkoOoQ==&quot;);
    var rta = await blobUploader.UploadAsync(&quot;imagenes/chocorramo.jpg&quot;, stream, mimetype: &quot;image/jpeg&quot;);

</pre>
<p>Acá disponible desde GitHub</p>
<p>   <script src="https://gist.github.com/4222051.js"> </script>
<p>Saludos</p>
<p> </httpresponsemessage></p>
<div class='yarpp-related-rss'>
<h3>Related Posts</h3>

<a href="http://juank.black-byte.com/csharp-como-detectar-conexion-internet-winrt/" rel="bookmark">C&oacute;mo detectar si hay conexi&oacute;n a Internet en WinRT C#</a><!-- (7)-->, 
<a href="http://juank.black-byte.com/csharp-extrano-caso-webview-siempre-visible-sobre-controles/" rel="bookmark">El extra&ntilde;o caso del WebView que siempre mantiene visible sobre los dem&aacute;s controles &ndash; WinRT &ndash; C#</a><!-- (7)-->, 
<a href="http://juank.black-byte.com/csharp-metro-mostrar-colores-rtf-richeditbox/" rel="bookmark">Mostrar colores de documentos RTF al cargarlos en un RichEditBox &#8211; WinRT &#8211; C#</a><!-- (6)-->, 
<a href="http://juank.black-byte.com/csharp-richeditbox-rtf-metro-formato/" rel="bookmark">El control RichEditBox no muestra le formato de los documentos RTF aunque esten bien formados &#8211; WinRT &#8211; C#</a><!-- (6)-->, 
<a href="http://juank.black-byte.com/csharp-acceder-archivos-instalacion-winrt/" rel="bookmark">Acceder a los archivos de instalación en aplicaciones Windows Store</a><!-- (6)-->
<img src='http://yarpp.org/pixels/3021c069f3568ab29826c3bbfd91cc16'/>
</div>
<img src="http://feeds.feedburner.com/~r/IdeasDeUnConejo/~4/BsiV7qsIzNM" height="1" width="1"/>]]></content:encoded><description>&amp;#160; Aprende a utilizar el servicio de cloud storage de Windows Azure utilizando la API REST. Esto puede ser muy útil cuando no puedes usar Windows Azure SDK o cuando no hay una versión del SDK disponible para el lenguaje o plataforma que manejas.&amp;#160;&amp;#160; El video se hizo en WinRT + C# pero el mecanismo [...]&lt;div class='yarpp-related-rss'&gt;
&lt;h3&gt;Related Posts&lt;/h3&gt;

&lt;a href="http://juank.black-byte.com/csharp-como-detectar-conexion-internet-winrt/" rel="bookmark"&gt;C&amp;oacute;mo detectar si hay conexi&amp;oacute;n a Internet en WinRT C#&lt;/a&gt;&lt;!-- (7)--&gt;, 
&lt;a href="http://juank.black-byte.com/csharp-extrano-caso-webview-siempre-visible-sobre-controles/" rel="bookmark"&gt;El extra&amp;ntilde;o caso del WebView que siempre mantiene visible sobre los dem&amp;aacute;s controles &amp;ndash; WinRT &amp;ndash; C#&lt;/a&gt;&lt;!-- (7)--&gt;, 
&lt;a href="http://juank.black-byte.com/csharp-metro-mostrar-colores-rtf-richeditbox/" rel="bookmark"&gt;Mostrar colores de documentos RTF al cargarlos en un RichEditBox &amp;#8211; WinRT &amp;#8211; C#&lt;/a&gt;&lt;!-- (6)--&gt;, 
&lt;a href="http://juank.black-byte.com/csharp-richeditbox-rtf-metro-formato/" rel="bookmark"&gt;El control RichEditBox no muestra le formato de los documentos RTF aunque esten bien formados &amp;#8211; WinRT &amp;#8211; C#&lt;/a&gt;&lt;!-- (6)--&gt;, 
&lt;a href="http://juank.black-byte.com/csharp-acceder-archivos-instalacion-winrt/" rel="bookmark"&gt;Acceder a los archivos de instalación en aplicaciones Windows Store&lt;/a&gt;&lt;!-- (6)--&gt;
&lt;img src='http://yarpp.org/pixels/3021c069f3568ab29826c3bbfd91cc16'/&gt;
&lt;/div&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juank.black-byte.com/csharp-como-acceder-storage-windows-azure-utilizando-rest-windows-8-winrt-video/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://juank.black-byte.com/csharp-como-acceder-storage-windows-azure-utilizando-rest-windows-8-winrt-video/</feedburner:origLink></item><item><title>El formato de fecha de acuerdo al RFC1123 – C# – Azure</title><link>http://feedproxy.google.com/~r/IdeasDeUnConejo/~3/wW6ByOb6R6o/</link><category>C#</category><category>Azure</category><category>codigo</category><category>DateTime</category><category>DateTimeOffset</category><category>RFC1123</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">JuanK</dc:creator><pubDate>Fri, 30 Nov 2012 21:30:31 PST</pubDate><guid isPermaLink="false">http://juank.black-byte.com/?p=1671</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Cuando trabajamos en escenarios de software con un despliegue en múltiples culturas, temas como el manejo de las fechas se vuelve engorroso y delicado, por lo cual es conveniente tener un buen soporte para localización de las aplicaciones.</p>
<p>Multipliquemos esa complejidad por un conjunto de servicios en la nube disponibles en tiempo real&#160; para miles de usuarios y donde la fecha ( con horas , minutos y segundos) son el componente fundamental de la lógica de funcionamiento… sino se maneja un formato único de hora puede ser un verdadero apocalipsis.</p>
<p>&#160;</p>
<p>Para evitar este tipo de problemas existe RFC1123 – Time format. RFC es la sigla de Request For Comments, es decir no es propiamente un estándar pero si esta muy cerca de serlo, y en el caso de RFC1123 podemos hablar de un estándar de facto al menos en cuanto a fechas se refiere.</p>
<p>Utilizando la información de fechas según este RFC nos evitamos muchos problemas en aplicaciones localizadas, ya que independientemente del Cliente donde se despliegue la UI, en el backend tenemos un formato de fecha ampliamente conocido y soportado por la mayoría de desarrolladores y herramientas a&#160; nivel mundial.</p>
<p>El RFC1123 establece un formato de fecha independiente de la cultura y localización</p>
<ul>
<li>La hora siempre se menciona respecto a la hora del meridiano de Greenwich (Greenwich Mean Time)</li>
<li>Los meses siempre son abreviaciones en inglés de la siguiente manera: &quot;Jan&quot;, &quot;Feb&quot;, &quot;Mar&quot;, &quot;Apr&quot;, &quot;May&quot;, &quot;Jun&quot;, &quot;Jul&quot;, &quot;Aug&quot;, &quot;Sep&quot;, &quot;Oct&quot;, &quot;Nov&quot;, &quot;Dec&quot;</li>
<li>Los días siempre son abreviaciones en inglés de la siguiente manera: &quot;Sun&quot;, &quot;Mon&quot;, &quot;Tue&quot;, &quot;Wed&quot;, &quot;Thu&quot;, &quot;Fri&quot;, &quot;Sat&quot;</li>
</ul>
<p>Este es un ejemplo de fecha en RFC1123:&#160; <mark>“Mon, 19 Nov 1979 10:45:00 GMT”.</mark></p>
<p>En la plataforma de Windows Azure este es el formato de fecha utilizado para realizar llamadas a través de sus API’s expuestas por REST, esto es, cada vez que hacemos uso de los headers</p>
<ul>
<li>Date</li>
<li>x-ms-date</li>
</ul>
<p>Debemos asignarles una cadena que representa una fecha en RFC1123.</p>
<p>En C# podemos conseguir una fecha representada en una cadena RFC1123 de la siguiente forma:</p>
<pre class="brush: csharp; title: ; notranslate">  
//obtenemos la fecha o el offset de fecha según sea el caso  
var dateTimeOffsetUtcNow = DateTimeOffset.UtcNow;  
//obtenemos cadena con formato RFC1123  
string utcDateInRfc1123Format = dateTimeOffsetUtcNow.ToString(&quot;R&quot;, CultureInfo.InvariantCulture);  </pre>
<div class='yarpp-related-rss yarpp-related-none'>
<h3>Related Posts</h3>


<p>No related posts.</p>
<img src='http://yarpp.org/pixels/3021c069f3568ab29826c3bbfd91cc16'/>
</div>
<img src="http://feeds.feedburner.com/~r/IdeasDeUnConejo/~4/wW6ByOb6R6o" height="1" width="1"/>]]></content:encoded><description>Cuando trabajamos en escenarios de software con un despliegue en múltiples culturas, temas como el manejo de las fechas se vuelve engorroso y delicado, por lo cual es conveniente tener un buen soporte para localización de las aplicaciones. Multipliquemos esa complejidad por un conjunto de servicios en la nube disponibles en tiempo real&amp;#160; para miles [...]&lt;div class='yarpp-related-rss yarpp-related-none'&gt;
&lt;h3&gt;Related Posts&lt;/h3&gt;



No related posts.
&lt;img src='http://yarpp.org/pixels/3021c069f3568ab29826c3bbfd91cc16'/&gt;
&lt;/div&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juank.black-byte.com/csharp-formato-fecha-rfc1123-azure-csharp/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://juank.black-byte.com/csharp-formato-fecha-rfc1123-azure-csharp/</feedburner:origLink></item><item><title>Como eliminar Warning “Field is never used” – C#</title><link>http://feedproxy.google.com/~r/IdeasDeUnConejo/~3/4ClqvVjsryk/</link><category>C#</category><category>pragma</category><category>Warning</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">JuanK</dc:creator><pubDate>Mon, 26 Nov 2012 18:29:05 PST</pubDate><guid isPermaLink="false">http://juank.black-byte.com/?p=1645</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>A veces cuando desarrollamos nos encontramos con este Warning lo cual es muy útil casi en todos los casos.</p>
<p>Pero a veces sucede que el compilador detecta algo que es falso, cuando?</p>
<p>Si estamos por ejemplo utilizando un campo de manera dinámica no hay manera que el compilador se entere que este ha sido utilizado, es probable que el compilador crea que nunca lo estamos usando aunque realmente lo estamos usando todo el tiempo.</p>
<p>En estos casos puede resultarte agradable desactivar dicho Warning, para el primer caso basta con encerrar la definición del campo en el pragma “warning disable ###” siendo ### el número del warning que parwa este caso es el 0169, ejemplo:</p>
<pre class="brush: csharp; title: ; notranslate">#pragma warning disable 0169  
int unusedField;  
#pragma warning restore 0169</pre>
<p>Como te darás cuenta hay que restaurar las cosas a su estado inicial puesto que la sentencia pragma habilita o deshabilita el warning para todo el archivo actual.</p>
<div class='yarpp-related-rss yarpp-related-none'>
<h3>Related Posts</h3>


<p>No related posts.</p>
<img src='http://yarpp.org/pixels/3021c069f3568ab29826c3bbfd91cc16'/>
</div>
<img src="http://feeds.feedburner.com/~r/IdeasDeUnConejo/~4/4ClqvVjsryk" height="1" width="1"/>]]></content:encoded><description>A veces cuando desarrollamos nos encontramos con este Warning lo cual es muy útil casi en todos los casos. Pero a veces sucede que el compilador detecta algo que es falso, cuando? Si estamos por ejemplo utilizando un campo de manera dinámica no hay manera que el compilador se entere que este ha sido utilizado, [...]&lt;div class='yarpp-related-rss yarpp-related-none'&gt;
&lt;h3&gt;Related Posts&lt;/h3&gt;



No related posts.
&lt;img src='http://yarpp.org/pixels/3021c069f3568ab29826c3bbfd91cc16'/&gt;
&lt;/div&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juank.black-byte.com/csharp-como-eliminar-warning-field-never-used/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://juank.black-byte.com/csharp-como-eliminar-warning-field-never-used/</feedburner:origLink></item></channel></rss>
