<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://geeks.ms/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>.NET o no .NET, esa es la cuestión : Sistemas Operativos</title><link>http://geeks.ms/blogs/rfog/archive/tags/Sistemas+Operativos/default.aspx</link><description>Etiquetas: Sistemas Operativos</description><dc:language /><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>Yuliop y Windows Phone 7 SDK: Una introducción</title><link>http://geeks.ms/blogs/rfog/archive/2012/11/01/yuliop-y-windows-phone-7-sdk-una-introducci-243-n.aspx</link><pubDate>Thu, 01 Nov 2012 18:52:42 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:207293</guid><dc:creator>Rafael Ontivero</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/rsscomments.aspx?PostID=207293</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/commentapi.aspx?PostID=207293</wfw:comment><comments>http://geeks.ms/blogs/rfog/archive/2012/11/01/yuliop-y-windows-phone-7-sdk-una-introducci-243-n.aspx#comments</comments><description>&lt;p align="justify"&gt;Como ya &lt;a href="http://geeks.ms/blogs/rfog/archive/2012/08/26/161-el-rey-ha-muerto-161-viva-el-rey.aspx"&gt;comenté hace algo de tiempo&lt;/a&gt;, he realizado un cambio laboral bastante radical, dejando de lado el desarrollo de sistemas embebidos verticales escritos en C y C++ para subir un paso en el escalón del desarrollo en cuanto a tipos de proyecto. En otras palabras, ahora mi tarea principal es desarrollar con Windows Phone para una &lt;i&gt;startup&lt;/i&gt; llamada &lt;a href="http://yuilop.com/es/"&gt;Yuilop&lt;/a&gt;.&lt;/p&gt;  &lt;p align="justify"&gt;He pasado de ser un desarrollador más o menos versátil a estar no sólo centrado en una plataforma fija, sino en una única aplicación: su cliente de mensajería. Os contaré cómo funciona la cosa.&lt;/p&gt;  &lt;p align="justify"&gt;La aplicación está disponible para la mayoría de teléfonos Android y para iOS, y próximamente habrá una versión para Windows Phone 7.5, la que estoy haciendo yo. Olvidaros de Windows Phone 7.0 porque no tiene sockets y es prácticamente imposible hacer algo ahí. Se podría implementar con BOSH, pero no vale la pena.&lt;/p&gt;  &lt;p align="justify"&gt;Con la aplicación instalada en un teléfono se pueden enviar mensajes de texto, con emoticonos y emojis, de manera similar a como se realiza con otras aplicaciones similares. También puedes enviar fotos y localizaciones. Hasta aquí nada nuevo bajo el sol.&lt;/p&gt;  &lt;p align="justify"&gt;Lo novedoso está en que también puedes hacerlo a gente que no tenga la aplicación. Es decir, puedes &lt;i&gt;chatear&lt;/i&gt; con prácticamente cualquier persona que tenga un móvil a través de SMS. Es decir, tu envías un mensaje de chat y la otra persona recibe un SMS, y justo al revés.&lt;/p&gt;  &lt;p align="justify"&gt;También puedes hablar por teléfono mediante VOIP. Siempre que la otra parte tenga Yuilop instalado podrás hablar con ella de forma gratuita a través de la WiFi o del 3G, sin gastar una llamada de voz tradicional…&lt;/p&gt;  &lt;p align="justify"&gt;No, espera, no. Eso también lo puedes hacer con cualquiera. Incluso con teléfonos fijos. O en otras palabras: no es necesario que la otra persona tenga la aplicación instalada para poder hablar con ella a través de Yuilop. &lt;/p&gt;  &lt;p align="justify"&gt;Todo ello con coste cero. O más bien, pagas la transferencia de datos, el Wifi o el 3G. No pagas ni SMS ni establecimiento de llamada ni a razón del tiempo que estés hablando o chateando o &lt;i&gt;SMSseando&lt;/i&gt;.&lt;/p&gt;  &lt;p align="justify"&gt;¿Cómo puede funcionar algo así? Pues bastante fácil: la aplicación tiene publicidad, y el pulsar en ella, o instalarte aplicaciones recomendadas, o seguir ciertas indicaciones te dan &lt;i&gt;energía&lt;/i&gt;, que es lo que gastas a la hora de hablar o chatear con gente no Yuilop. &lt;/p&gt;  &lt;p align="justify"&gt;Es decir, que cada vez que hagas algo con gente de fuera de la aplicación, gastas &lt;i&gt;energía&lt;/i&gt;. Cada vez que instalas las aplicaciones recomendadas, o haces clic en la publicidad, o chateas con gente Yuilop, obtienes energía. También por invitar a amigos y que estos acepten la invitación.&lt;/p&gt;  &lt;p align="justify"&gt;***&lt;/p&gt;  &lt;p align="justify"&gt;Como veis resulta algo bastante interesante y más potente que las aplicaciones de la competencia (que no nos dejan nombrar).&lt;/p&gt;  &lt;p align="justify"&gt;Pues bien, el que esto suscribe tiene en un estado bastante avanzado la aplicación para Windows Phone. Dadas las características de este sistema operativo, hay algunas opciones que no van a estar disponibles, no porque no queramos, sino porque no podemos.&lt;/p&gt;  &lt;p align="justify"&gt;Y eso me lleva al tema técnico. Llevo dos meses desarrollando con Visual Studio 2010 y el SDK 7.1. Ha habido momento en los que he estado a punto de renunciar dadas no ya las enormes carencias de la plataforma, sino también la falta de documentación y las inconsistencias y bugs de todo ello.&lt;/p&gt;  &lt;p align="justify"&gt;Y de eso es de lo que voy a hablar próximamente aquí. Primero haré una lista de todos los problemas con los que me he encontrado y la forma que te tenido de solucionarlos cuando he podido hacerlo, que no siempre ha sido así.&lt;/p&gt;  &lt;p align="justify"&gt;Para adelantaros un poco el tema, el modelo MVVM es una mierda limitadísima que sólo permite realizar aplicaciones típicas y sencillas, el acceso a bases de datos es, más que pésimo, limitado e incoherente, y existen ciertas limitaciones incoherentes para realizar algunas tareas. Además, la gestión de eventos es mínima, la creación de controles personalizados deja mucho que desear, así como el API expuesto en relación a los componentes con los que podemos trabajar (y ahí incluyo también el &lt;i&gt;Windows Phone Toolkit&lt;/i&gt; y sus amigos de &lt;i&gt;Coding4Fun&lt;/i&gt;).&lt;/p&gt;  &lt;p align="justify"&gt;Y no, el modelo asíncrono de desarrollo es toda una gozada si no existieran las limitaciones arriba descritas. Los métodos asíncronos, los operadores &lt;i&gt;lambda&lt;/i&gt;, los métodos de extensión (pese a ser aberraciones, ya os contaré) y demás zarandajas son una gozada.&lt;/p&gt;  &lt;p align="justify"&gt;Mejor no hablar de XAML, menuda porquería de implementación aunque la idea esté genial. &lt;/p&gt;  &lt;p align="justify"&gt;Y a todo ello añadimos el hecho de que apenas existe documentación. Mientras que para la explicación de una clase en .NET 3, 3.5 ó 4.0 tienes una explicaciones más que detalladas contándote todo, en Silverlight las páginas están más que peladas. Por no incluir ni siquiera ponen lo imprescindible. Parece que se hayan creado a partir del propio código fuente sin más. Y no, no vale aplicar las explicaciones de una a la otra: simplemente funcionan diferente o el comportamiento no existe.&lt;/p&gt;  &lt;p align="justify"&gt;Bueno, lo dicho, estad atentos que le voy a dar caña a Windows Phone 7.5 (Parece ser que la versión 8 ya es adulta y han añadido cosas muy interesantes. También os contaré dentro de unos meses, cuando empiece con ella).&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=207293" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/rfog/archive/tags/escariotrop_26002300_237_3B00_as+gimn_26002300_233_3B00_sicas/default.aspx">escariotrop&amp;#237;as gimn&amp;#233;sicas</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Sistemas+Operativos/default.aspx">Sistemas Operativos</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/windows/default.aspx">windows</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/hardware/default.aspx">hardware</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Windows+Phone/default.aspx">Windows Phone</category></item><item><title>Viendo el código fuente de .NET con Visual Studio 2012</title><link>http://geeks.ms/blogs/rfog/archive/2012/09/15/viendo-el-c-243-digo-fuente-de-net-con-visual-studio-2012.aspx</link><pubDate>Sat, 15 Sep 2012 11:19:14 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:206758</guid><dc:creator>Rafael Ontivero</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/rsscomments.aspx?PostID=206758</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/commentapi.aspx?PostID=206758</wfw:comment><comments>http://geeks.ms/blogs/rfog/archive/2012/09/15/viendo-el-c-243-digo-fuente-de-net-con-visual-studio-2012.aspx#comments</comments><description>&lt;p&gt;Quien tenga una versión anterior de Visual Studio seguro que sabe que se puede navegar por las tripas de .NET y ver cómo Microsoft ha implementado todo el tema. Pues bien, más o menos a &lt;a href="http://blogs.msdn.com/b/dotnet/archive/2012/08/15/announcing-the-release-of-net-framework-4-5-rtm-product-and-source-code.aspx"&gt;mediados de agosto del corriente&lt;/a&gt; (2012) se anunció la disponibilidad del código fuente de .NET 4.5, lo que nos permite meternos en las tripas del Framework y, lo que es mucho más interesante, mirar cómo funciona todo lo nuevo relacionado con Windows 8.&lt;/p&gt;  &lt;p&gt;El artículo citado da un somero repaso a las novedades no específicas de la biblioteca, entre las que se pueden destacar el añadido de métodos asíncronos en conjunción con las clases de tareas, y que ahora el &lt;i&gt;jitter&lt;/i&gt; es capaz de optimizar el código para los procesadores multinúcleo. También se mejora el rendimiento de casi todo (como siempre dicen, lo que a veces no es cierto), y se potencia el acceso de .NET a nueva parte nativa de Windows 8 (o RT o Metro o como quieras llamarlo), que es código nativo escrito en C++ y C++/CX, permitiendo a este lenguaje acceder, también, a código escrito en otros lenguajes .NET gracias a su parte CX (que como ya he dicho varias veces, es nativa).&lt;/p&gt;  &lt;p&gt;Como en otras versiones, el código fuente está disponible para &lt;a href="http://referencesource.microsoft.com/netframework.aspx"&gt;descarga directa&lt;/a&gt;, o para ser visto desde nuestro propio código, y también como símbolos de depuración.&lt;/p&gt;  &lt;p&gt;La captura de abajo nos muestra una aplicación Metro por defecto, detenida en un punto de interrupción, tal y como se ve en mi Visual Studio 2012 sin cambiar la configuración por defecto:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/clip_5F00_image002_5F00_2B0EE603.jpg"&gt;&lt;img title="clip_image002" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;margin:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="clip_image002" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/clip_5F00_image002_5F00_thumb_5F00_084DAE46.jpg" width="244" height="195" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Fijaos en que la ventana de &lt;i&gt;Call Stack&lt;/i&gt; estgá prácticamente vacía, y si hacemos &lt;i&gt;Step Into&lt;/i&gt; simplemente saltamos a la siguiente línea de nuestro código fuente.&lt;/p&gt;  &lt;p&gt;Vamos a habilitar la posibilidad de meternos dentro del código de Microsoft.&lt;/p&gt;  &lt;p&gt;Nos vamos a TOOLS -&amp;gt; PROPERTIES, abrimos la pestaña lateral de &lt;i&gt;Debugging&lt;/i&gt;, y cambiamos las siguientes opciones:&lt;/p&gt;  &lt;p&gt;· Marcar &lt;i&gt;Enable Just My Code&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;· Marcar &lt;i&gt;Enable .NET Framework source stepping&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;· Desmarcar &lt;i&gt;Step over porperties and operators (Managed only)&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;· Marcar &lt;i&gt;Enable source server support&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;· Desmarcar &lt;i&gt;Require source files to exactly match the original version&lt;/i&gt;.&lt;/p&gt;  &lt;p&gt;Dejadlo todo más o menos como en la imagen:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/clip_5F00_image003_5F00_0A1E040D.png"&gt;&lt;img title="clip_image003" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;margin:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="clip_image003" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/clip_5F00_image003_5F00_thumb_5F00_675CCC4F.png" width="244" height="144" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Ahora, en la pestaña de &lt;i&gt;Symbols&lt;/i&gt;, hay que añadir una nueva dirección de descarga de los mismos: &lt;a href="http://referencesource.microsoft.com/symbols"&gt;http://referencesource.microsoft.com/symbols&lt;/a&gt;. Como en la capura.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/clip_5F00_image004_5F00_0BF0EA85.png"&gt;&lt;img title="clip_image004" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;margin:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="clip_image004" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/clip_5F00_image004_5F00_thumb_5F00_1DD00F03.png" width="244" height="144" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Finalmente, cuando le deis a OK el IDE se quedará bajando ficheros. Hay que esperar a que termine, y dependiendo de lo rápida que sea tu conexión, tendrás que esperar bastante tiempo.&lt;/p&gt;  &lt;p&gt;Con esta configuración, cada vez que se necesite algo, el IDE irá a los servidores de Microsoft, por lo que la carga y depuración de vuestro programa podría ser muy lenta a veces… por lo que se pueden bajar todos los símbolos de una tacada e instalarlos de forma local, apuntando la URL anterior a done los hayamos instalado. Podéis bajarlos de &lt;a href="http://referencesource.microsoft.com/netframework.aspx"&gt;aquí&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;La siguiente captura muestra algo de las tripas de Metro:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/clip_5F00_image006_5F00_2D0677D0.jpg"&gt;&lt;img title="clip_image006" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="clip_image006" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/clip_5F00_image006_5F00_thumb_5F00_25E9CC09.jpg" width="244" height="195" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Vale. Ahora el tío de la rebaja. ¿Habéis intentado profundizar en el código fuente, en métodos como el &lt;i&gt;Activate()&lt;/i&gt; de la primera captura? No entra, ¿verdad? No muestra código fuente, sino que simplemente salta sobre la llamada.&lt;/p&gt;  &lt;p&gt;Un gallinfante a quien adivine por qué es. &lt;/p&gt;  &lt;p&gt;Vale: es código nativo. Es decir, la parte Metro del .NET Framework no es código manejado, sino nativo. Es decir, está escrita en C++/CX, en donde la parte CX actúa como &lt;i&gt;Sugar Syntax&lt;/i&gt; de todo el perifostio COM y COM+ que finalmente es .NET&lt;/p&gt;  &lt;p&gt;Y todavía me atrevería a añadir algo más. Metro esconde en la manga algunos trucos de desarrollo que a MS no le interesa que se sepan, y ya visteis &lt;a href="http://geeks.ms/blogs/rfog/archive/2012/06/05/ingenier-237-a-inversa-de-una-aplicaci-243-n-metro-m-225-s-f-225-cil-que-nunca.aspx"&gt;lo fácil que es hacer ingeniería inversa de una aplicación .NET&lt;/a&gt;. Si toda esa parte hubiera estado hecha con .NET, sería facilísimo meterle mano.&lt;/p&gt;  &lt;p&gt;¡Y qué cojones, donde esté C++ que se quite cualquier lenguajucho de mala muerte! ;-)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=206758" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/rfog/archive/tags/Sistemas+Operativos/default.aspx">Sistemas Operativos</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/interop/default.aspx">interop</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/lenguajes/default.aspx">lenguajes</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Interoperabilidad/default.aspx">Interoperabilidad</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/C_2B002B002F00_CX/default.aspx">C++/CX</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Windows+8/default.aspx">Windows 8</category></item><item><title>Ingeniería inversa de una aplicación Metro: más fácil que nunca</title><link>http://geeks.ms/blogs/rfog/archive/2012/06/05/ingenier-237-a-inversa-de-una-aplicaci-243-n-metro-m-225-s-f-225-cil-que-nunca.aspx</link><pubDate>Tue, 05 Jun 2012 14:18:15 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205478</guid><dc:creator>Rafael Ontivero</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/rsscomments.aspx?PostID=205478</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/commentapi.aspx?PostID=205478</wfw:comment><comments>http://geeks.ms/blogs/rfog/archive/2012/06/05/ingenier-237-a-inversa-de-una-aplicaci-243-n-metro-m-225-s-f-225-cil-que-nunca.aspx#comments</comments><description>&lt;p align="justify"&gt;Andaba yo esta mañana mirando mis fuentes de noticias cuando me encuentro con esta entrada: &lt;a href="http://lunarfrog.com/blog/2012/06/05/metro-app-protection/"&gt;Your Metro-style app needs protection and here is why&lt;/a&gt;.&lt;/p&gt;  &lt;p align="justify"&gt;En principio no me lo creí, o pensé que el contenido venía de versiones anteriores a la última Release Preview de Windows 8. Pero no, es completamente cierto.&lt;/p&gt;  &lt;p align="justify"&gt;Todos debéis saber que realizar ingeniería inversa a un programa escrito en .NET es cosa de minutos y es una tarea enormemente sencilla incluso si la aplicación está ofuscada. Si no lo está, podemos obtener el código fuente completo tal y como lo escribió el autor, y encima en el lenguaje que queramos.&lt;/p&gt;  &lt;p align="justify"&gt;Esto nos da un truco muy sencillo para usar código de terceros escrito en un lenguaje .NET que no conocemos. Tomamos el código a copiar, creamos una aplicación, le aplicamos un &lt;i&gt;Reflector&lt;/i&gt; (que es como se llaman a estos programas) y obtenemos el código fuente en el lenguaje deseado, ya sea &lt;a href="http://vb.net/"&gt;VB.NET&lt;/a&gt;, C# o incluso C++/CLI.&lt;/p&gt;  &lt;p align="justify"&gt;Si el programa está ofuscado la ingeniería inversa es algo más difícil, pero con un poco de práctica es posible convertir el resultado en algo legible. No obstante, si queremos copiar un bloque de código o ver cómo está hecha una cosa, no necesitamos más. Copiamos, pegamos y listo. A ver, no es tan fácil, pero un ofuscador de código lo único que hace es cambiarle el nombre a todo y allí donde es posible, separar o juntar cosas. Nada que un experto medianamente espabilado no pueda deshacer.&lt;/p&gt;  &lt;p align="justify"&gt;Pues bien, las aplicaciones Metro en Windows 8 todavía son más fáciles de desensamblar. Estoy intentando instalarme un programa de demo, pero todavía no sé cómo se hace localmente pese a tener el paquete listo para su instalación.&lt;/p&gt;  &lt;p align="justify"&gt;Mientras averiguo eso, podéis jugar un ratín como he jugado yo. Lo primero de todo es hacer que la carpeta “C:\Program Files\WindowsApps” esté visible. Para ello abrimos la ventana de Windows Explorer en el escritorio y en la opción “View” del menú, seleccionamos “Options”. Allí, en la pestaña “View”, marcamos “Show hidden files, folders and drives” y ya de paso, también “Hide extensions for known file types”, que no es imprescindible pero ayuda.&lt;/p&gt;  &lt;p align="justify"&gt;Ahora ya podemos ver la carpeta WindowsApps. Desde el explorador de Windows nos dice que no podemos entrar. Podríamos tomar control de la carpeta, pero al menos yo no lo he hecho, ya que abriendo una consola de comandos con permisos elevados podemos entrar y ver el contenido:&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/clip_5F00_image002_5F00_2030FA49.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="clip_image002" border="0" alt="clip_image002" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/clip_5F00_image002_5F00_thumb_5F00_1CCF62A1.jpg" width="243" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Vaya. Tenemos acceso a todas las aplicaciones Metro instaladas… Aunque podemos navegar por ellas desde la ventana de comandos, también podemos copiarlas a otro destino con el comando “xcopy &amp;lt;origen&amp;gt; &amp;lt;destino&amp;gt; /r/s”. Y eso es lo que he hecho. Me he movido el “Reader” de Microsoft.&lt;/p&gt;  &lt;p align="justify"&gt;Y ahora puedo entrar sin tocar nada de nada:&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/clip_5F00_image004_5F00_46CF60C9.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="clip_image004" border="0" alt="clip_image004" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/clip_5F00_image004_5F00_thumb_5F00_3CBABF9E.jpg" width="244" height="223" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Interesante, ¿no? Tenemos archivos XAML, ejecutables, imágenes, metadatos, todos ellos al alcance de la mano. Dos pantallazos más:&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/clip_5F00_image006_5F00_7BAC4039.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="clip_image006" border="0" alt="clip_image006" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/clip_5F00_image006_5F00_thumb_5F00_18D1E844.jpg" width="244" height="223" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/clip_5F00_image008_5F00_6CB4EB52.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="clip_image008" border="0" alt="clip_image008" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/clip_5F00_image008_5F00_thumb_5F00_6F9A2A38.jpg" width="237" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Creo que es suficiente, ¿no?&lt;/p&gt;  &lt;p align="justify"&gt;Pues no, ahora vamos a abrir y desensamblar algún ejecutable. La aplicación Reader que hemos estado viendo parece ser que es binaria (luego volveremos sobre ello), pero por ejemplo la “BingFinance” es .NET pura y encima está sin ofuscar:&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/clip_5F00_image010_5F00_2E8BAAD4.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="clip_image010" border="0" alt="clip_image010" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/clip_5F00_image010_5F00_thumb_5F00_32494FA4.jpg" width="244" height="180" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;En la imagen de arriba vemos dos ficheros de dicha aplicación abiertos de… esto… piernas.&lt;/p&gt;  &lt;p align="justify"&gt;***&lt;/p&gt;  &lt;p align="justify"&gt;Pero todavía hay más. Vamos a echar un vistazo a un par de aplicaciones escritas por uno mismo. La primera es un SplitView en C++ tal y como sale del asistente de Visual Studio 2012RC. Entre otras cosas genera dos ficheros “ejecutables”. Un EXE tradicional, que es binario o al menos así lo parece, y otro con la extensión Winnmd y el mismo nombre. Este sí que es manejado, pero parece ser que sólo contiene las exportaciones a WinRT. Tampoco tengo claro qué es, aunque parece ser que WinRT necesita las exportaciones del programa y MS lo ha solucionado de esta manera. En fin, aquí esta:&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/clip_5F00_image012_5F00_713AD03F.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="clip_image012" border="0" alt="clip_image012" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/clip_5F00_image012_5F00_thumb_5F00_5A9881F8.jpg" width="159" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Ahora veamos la misma aplicación tomada del asistente de C#. En este caso sólo hay un ejecutable, el propio programa que es desensamblable por completo:&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/clip_5F00_image014_5F00_59C01C0E.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="clip_image014" border="0" alt="clip_image014" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/clip_5F00_image014_5F00_thumb_5F00_104DC753.jpg" width="244" height="239" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;***&lt;/p&gt;  &lt;p align="justify"&gt;¿Os mola? A mi nada de nada. Esperemos que Microsoft se ponga las pilas con esto, porque si no mal vamos.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205478" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/rfog/archive/tags/c_2B002B00_/default.aspx">c++</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Sistemas+Operativos/default.aspx">Sistemas Operativos</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/windows/default.aspx">windows</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Biblioteca+de+C_2B002B00_/default.aspx">Biblioteca de C++</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/C_2B002B002F00_CX/default.aspx">C++/CX</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Windows+8/default.aspx">Windows 8</category></item><item><title>Un poco hasta los cojones del OS X sí que estoy, la verdad</title><link>http://geeks.ms/blogs/rfog/archive/2012/06/01/un-poco-hasta-los-cojones-del-os-x-s-237-que-estoy-la-verdad.aspx</link><pubDate>Fri, 01 Jun 2012 14:02:55 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205350</guid><dc:creator>Rafael Ontivero</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/rsscomments.aspx?PostID=205350</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/commentapi.aspx?PostID=205350</wfw:comment><comments>http://geeks.ms/blogs/rfog/archive/2012/06/01/un-poco-hasta-los-cojones-del-os-x-s-237-que-estoy-la-verdad.aspx#comments</comments><description>&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;No sé quién diría eso de &lt;em&gt;en MAC eso no pasa&lt;/em&gt;, pero el hecho es que, a fecha de hoy, OS X Lion no llega ni a la suela de los zapatos de Windows 7. Esperemos que el Montañés mejore algo, porque lo que es la versión actual, es un mucho mierdosa.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;Aparte de las infinitas carencias en usabilidad, con un Finder al que hay que meterle diez extensiones o instalarse sustitutos para se que acerquen un poco al Explorador de Windows, los programas más o menos mierdosos que necesitan sustituto (léase Mail, iCal, …), las porquerías del Spotlight que unas veces va lentísimo, otras antepone los propios programas de Apple a otros de terceros aunque los de origen no se hayan usado nunca (y por eso uso Alfred), la necesidad de gastarte una pasta en sustitutos que en la mayor parte suelen ser gratuitos en Windows, las pifias de programas &lt;em&gt;serios&lt;/em&gt; como iPhoto que unas veces sí y otras también es incapaz de recordar que tengo activo el &lt;em&gt;photo streaming&lt;/em&gt;, los petes del Pages porque él lo vale y que me hace rememorar las primeras versiones de Open Office, que cascaban o iban mal sí o sí, los enganches y autismos varios del iTunes, la &lt;em&gt;ruedecilla multicolor de la muette&lt;/em&gt;, que aparece de vez en cuando, sobre todo en Safari, la lentitud en arrancar el sistema completo… &lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;… Todo eso, a lo que hay que sumar la &lt;a href="http://geeks.ms/blogs/rfog/archive/2012/05/06/menuda-porquer-237-a-de-gesti-243-n-de-memoria-que-tiene-el-os-x.aspx"&gt;pésima gestión de memoria&lt;/a&gt; y, ahora mismo, dos problemas con el &lt;em&gt;kelmer&lt;/em&gt; o que creo que vienen directamente del mismo.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;***&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;Tengo un monitor secundario enganchado a un puerto Thunderbolt pero usado como DVI con su adaptador correspondiente. Pues bien, cada dos por tres pierde lo que quiera que pierda y ambas pantallas se ponen a parpadear. La anexa porque se ha perdido, y la principal poniendo y quitando el escritorio como si eso fuera a solucionar en algo la otra pantalla.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;***&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;El otro problema viene con el puerto de la SD, que sólo me permite insertar una tarjeta por reinicio. Sí, una vez que he insertado una tarjeta, y tras su expulsión, ya no vuelve a leer nada de ella.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;***&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;En ambos casos no es el hardware, porque en Windows con Boot Camp en ningún momento me ha pasado nada parecido. Es el *** OS X que, tras cada actualización, va peor que la anterior.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;***&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;Y ya para finalizar, ¿quién es lumbrera al que se le ha ocurrido poner el puerto de la SD justo debajo de la ranura del DVD? Porque manda cojones, mucho diseño, mucha tontería pero lo dicho: ergonomía poca o ninguna. Justo hace un momento casi tengo que desmontar mi iMAC (que todavía está en garantía) porque he metido por error la SD en el hueco del DVD…&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;En fin, que mucho ruido pero pocas nueces.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;***&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;Perdonadme la entrada, pero creo que tengo razón al quejarme de todas estas cosas y de más que no os cuento porque tengo la duda de si es el &lt;em&gt;layer 8&lt;/em&gt; o el sistema.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205350" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/rfog/archive/tags/Sistemas+Operativos/default.aspx">Sistemas Operativos</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/chapuzas/default.aspx">chapuzas</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/bugs/default.aspx">bugs</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/MAC/default.aspx">MAC</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Apple/default.aspx">Apple</category></item><item><title>Menuda porquería de gestión de memoria que tiene el OS X</title><link>http://geeks.ms/blogs/rfog/archive/2012/05/06/menuda-porquer-237-a-de-gesti-243-n-de-memoria-que-tiene-el-os-x.aspx</link><pubDate>Sun, 06 May 2012 18:24:35 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:204884</guid><dc:creator>Rafael Ontivero</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/rsscomments.aspx?PostID=204884</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/commentapi.aspx?PostID=204884</wfw:comment><comments>http://geeks.ms/blogs/rfog/archive/2012/05/06/menuda-porquer-237-a-de-gesti-243-n-de-memoria-que-tiene-el-os-x.aspx#comments</comments><description>&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Helvetica;"&gt;A veces, cuando uno es un &lt;em&gt;swicher&lt;/em&gt; de pro como yo, se encuentra con cosas que le resultan un tanto kafkianas como la que os voy a contar.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Helvetica;"&gt;¿Tiene alguien queja de la gestión de memoria de Windows? No me refiero a si consume más o menos, sino a si funciona como debe, sin que haga &lt;em&gt;cosas raras&lt;/em&gt;. ¿A que no? Pues en OS X (los &lt;em&gt;MAC&lt;/em&gt; para los despistados), dicha gestión deja mucho que desear.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Helvetica;"&gt;Hace tiempo empecé a leer en los blogs &lt;em&gt;fanboys&lt;/em&gt; la existencia de ciertas aplicaciones que &lt;em&gt;liberaban y optimizaban&lt;/em&gt; la memoria de los MAC. En principio algo similar a los supuestos optimizadores de memoria en Windows, pero para OS X. Y si en Windows no hacen falta y sólo consumen recursos, en OS X debería ser lo mismo o, en opinión de los &lt;em&gt;expertos&lt;/em&gt;, todavía más inútiles que en la plataforma de Microsoft.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Helvetica;"&gt;Yo fui uno de esos que comenzó a defender a capa y espada la gestión de memoria del OS X sin haber hecho ninguna prueba porque suponía que era una cosa que se caía por su propio peso: si un sistema operativo es incapaz de gestionar bien su memoria, poco útil va a ser…&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Helvetica;"&gt;Y de hecho, igual que pasó en su momento cuando se promocionaban ese tipo de aplicaciones para Windows, con artículos pagados y demás, se armaron en los citados blogs unas buenas trifulcas sobre el tema, con razonamientos a favor y en contra más o menos elaborados y veraces…&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Helvetica;"&gt;Una puntualización. En OS X, cuando tu cierras una aplicación, está no se cierra realmente, sino que se suspende y queda &lt;em&gt;residente&lt;/em&gt; en memoria. Es lo que ocurre cuando le das al aspa de cerrar, o cuando presionas Command-W. Si realmente quieres retirarla de la memoria, o cerrarla &lt;em&gt;ala Windows&lt;/em&gt;, tienes que presionar Command-Q o hacerlo a mano desde el Dock. Aquí hablamos de cerrarla realmente, que es cuando se debería liberar su memoria. No obstante, hay programas que realmente se cierran ellos solos, como el gestor de libros Calibre.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Helvetica;"&gt;Por lo tanto, en OS X tenemos dos formas de cerrar una aplicación. En la primera realmente no se está cerrando, sino que se está &lt;em&gt;ocultando&lt;/em&gt; y no es aplicable lo que estamos hablando aquí. Sería el equivalente de minimizar en Windows.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Helvetica;"&gt;En OS X, la memoria se va asignando pero no liberando. Es decir, tu abres un programa, lo usas y luego lo cierras del todo. La memoria asignada no se libera, sino que queda asignada por si se vuelve a abrir la aplicación y se aprovecha la huella de memoria ya existente.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Helvetica;"&gt;Por lo tanto, conforme vas abriendo y cerrando aplicaciones la memoria se va llenando poco a poco hasta que apenas queda libre. Hasta aquí la cosa está bien, porque de este modo mantenemos una &lt;em&gt;caché&lt;/em&gt; que podría resultar en un aumento de rendimiento.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Helvetica;"&gt;Y a veces es así. La segunda vez que abres ciertos programas, estos se cargan mucho más deprisa porque recuperan su imagen de la memoria física. Por ejemplo, en el caso del Opera con varios miles de mensajes de correos y de news, la diferencia es abismal. De tardar como treinta segundos o más a ser completamente instantánea.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Helvetica;"&gt;Según la teoría, una vez que se ha ocupado toda la memoria y se necesita más, es esa caché la que se va liberando según un algoritmo que no me he preocupado en mirar. &lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Helvetica;"&gt;Eso es la teoría. La práctica es otra: se tira de swap y el rendimiento de tu MAC empieza a caer en picado y oyes cómo empiezan a rascar los discos duros. Y nadie puede negármelo porque lo he comprobado yo mismo esta mañana.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Helvetica;"&gt;Todo ha comenzado pasándome del iMAC al Air la biblioteca del iTunes. Para ello he iniciado el AirDrop y con ambos iTunes cerrados, lo he copiado. En el Air estaba vigilando el uso de procesador del Sparrow, que me tiene mosca, así que he abierto el monitor de actividad en el iMAC. &lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Helvetica;"&gt;La primera en la frente: de los 12GB de RAM que tiene el iMAC, he visto cómo conforme si iban pasando los ficheros de uno a otro se iba quedando en cero libres. Una vez ha terminado de copiar, he abierto varios programas como el Word, el Pages y el ordenador ha comenzado a tirar de swap en lugar de liberar la memoria inactiva. Los he cerrado del todo y no ha decrecido el consumo. &lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Helvetica;"&gt;Para completar el ejercicio he lanzado una máquina virtual que consume 2GB de memoria y ni aun así se ha liberado lo ocupado, sino que los discos han empezado a rascar todavía más furiosamente y el rendimiento ha caído en picado…&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Helvetica;"&gt;Tras eso me he ido a la App Store y me he bajado un liberador de RAM. Al poco de ejecutarlo y lanzar la limpieza de la misma, mano de santo, oye. Los discos han dejado de rascar y me ha dejado algo más de 8GB de RAM libres, que han subido a 10 cuando lo he vuelto a ejecutar tras cerrar la máquina virtual.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Helvetica;"&gt;El problema, evidentemente, no está en el consumo de RAM. Por mi como si se ocupa toda, sino en el hecho de que un consumo real de 2GB del sistema operativo más otros 2 GB de la máquina virtual, han tirado abajo el rendimiento de un iMAC con 12GB de RAM y un i7 con 8 cores…&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Helvetica;"&gt;Pensaba que Apple podía hacerlo mejor, pero al final resulta que son unos chapuceros de mucho cuidado…&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Helvetica;"&gt;Por si os interesa, he probado el &lt;em&gt;FreeMemory&lt;/em&gt; y tras comprobar que funcionaba bien, he comprado la versión &lt;em&gt;Pro &lt;/em&gt;por tres cuartos de euro.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=204884" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/rfog/archive/tags/Sistemas+Operativos/default.aspx">Sistemas Operativos</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/chapuzas/default.aspx">chapuzas</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/rationale/default.aspx">rationale</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/MAC/default.aspx">MAC</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Apple/default.aspx">Apple</category></item><item><title>ExFAT 1, XBOX 0, Microsoft -infinito</title><link>http://geeks.ms/blogs/rfog/archive/2012/05/06/exfat-1-xbox-0-microsoft-infinito.aspx</link><pubDate>Sun, 06 May 2012 17:07:17 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:204881</guid><dc:creator>Rafael Ontivero</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/rsscomments.aspx?PostID=204881</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/commentapi.aspx?PostID=204881</wfw:comment><comments>http://geeks.ms/blogs/rfog/archive/2012/05/06/exfat-1-xbox-0-microsoft-infinito.aspx#comments</comments><description>&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-indent:18.0px;font:14.0px Helvetica;"&gt;Esta tarde nos hemos puesto a ver una película en la XBOX… lo que ha supuesto toda una odisea. Me explico.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-indent:18.0px;font:14.0px Helvetica;"&gt;Enciendo la consola y hala, actualización. No suelo encenderla muy a menudo, pero joder, que pase como con los PC… Pero el tema no es que haya sido una, sino que han sido dos, la segunda de ellas muy muy gorda. Tanto, que supongo que se ha actualizado toda entera.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-indent:18.0px;font:14.0px Helvetica;"&gt;La primera en la frente: no he podido usar la consola cuando he querido, sino que me he tenido que esperar más de media hora. Vale, podría haber decidido actualizarla luego, pero cualquiera se fía de un equipo que se conecta a internet con la que está cayendo…&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-indent:18.0px;font:14.0px Helvetica;"&gt;Vale. Entro ya en el interfaz y meto un USB normal y corriente de 16GB… No lo detecta. Lo saco y meto un segundo de 4 GB, previa copia de lo que íbamos a ver. Tampoco lo coge. De 1 GB. Ni con esas.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-indent:18.0px;font:14.0px Helvetica;"&gt;Vale, estaban en ExFAT y la consola ¡¡no soporta los propios formatos de Microsoft!! Está bien que no lo haga cuando salió el sistema de ficheros, pero éste lleva ya varios años en el mercado.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-indent:18.0px;font:14.0px Helvetica;"&gt;Entiendo que no lea NTFS, ni HPFS, ni Ext2, ni ReiserFS… Es razonable a más no poder, ¡pero que un producto de Microsoft sea incapaz de leer sus propios formatos!…&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-indent:18.0px;font:14.0px Helvetica;"&gt;Porque entendamos que si bien NTFS es un sistema “enterprise”, ExFAT es comercial y pretende ser la sustitución del veterano FAT… ¡Joder, si hasta los MAC los leen!&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-indent:18.0px;font:14.0px Helvetica;"&gt;Y lo peor no es eso, lo peor es que una vez que ha sido &lt;em&gt;tocado&lt;/em&gt; por la XBOX, ese USB deja de poder aceptar nuevo contenido. Es decir, que sólo deja ver y borrar ficheros, pero no añadir.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-indent:18.0px;font:14.0px Helvetica;"&gt;***&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-indent:18.0px;font:14.0px Helvetica;"&gt;Al final, mientras reformateaba el disco a FAT32, y copiaba los archivos, me dio por navegar un rato con la consola…&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-indent:18.0px;font:14.0px Helvetica;"&gt;Ahora se pueden instalar aplicaciones. Vale. Me instalo el visor de Youtube, por hacer algo. Se instala sin problemas.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-indent:18.0px;font:14.0px Helvetica;"&gt;Lo lanzo segundos después ¡y me dice que tiene que actualizarse! Hay que joderse, amigo Sancho… ¡¡Pero si está recién bajado de la tienda!!&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-indent:18.0px;font:14.0px Helvetica;"&gt;En fin, se actualiza, entro y… necesito una cuenta Gold. La mía es la normal, sin pago…&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-indent:18.0px;font:14.0px Helvetica;"&gt;¿Por qué cojones no me dice que es necesaria una cuenta Gold &lt;em&gt;antes&lt;/em&gt; de instalar? Pues si piensan que tras la instalación voy a pasar por caja van arreglados.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-indent:18.0px;font:14.0px Helvetica;"&gt;Por seguir probando (ya que todavía no se habían copiado los ficheros en el disco USB), instalo la aplicación de DailyMotion. Esta al menos me avisa de que habrá cosas del interfaz no soportadas en la consola, pero cuando lo lanzo e intento ver un vídeo… me vuelve a pedir la cuenta Gold.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-indent:18.0px;font:14.0px Helvetica;"&gt;***&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-indent:18.0px;font:14.0px Helvetica;"&gt;Vamos, lo dicho, un gigantesco despropósito de cosas que me resultan completamente incomprensibles… No sé quiénes tomarán las decisiones, pero seguro que serían más útiles cavando bancales de ajos que decidiendo qué va y qué no va en los productos de Microsoft. &lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-indent:18.0px;font:14.0px Helvetica;"&gt;Y no hablo de los problemas de conexión que tengo con el Media Center (de Microsoft) y el NAS (este no es de MS), aunque el último suele ir sensiblemente mejor que el primero.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-indent:18.0px;font:14.0px Helvetica;"&gt;***&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-indent:18.0px;font:14.0px Helvetica;"&gt;Básicamente, que les den.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=204881" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/rfog/archive/tags/escariotrop_26002300_237_3B00_as+gimn_26002300_233_3B00_sicas/default.aspx">escariotrop&amp;#237;as gimn&amp;#233;sicas</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Sistemas+Operativos/default.aspx">Sistemas Operativos</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/chapuzas/default.aspx">chapuzas</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/bugs/default.aspx">bugs</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/hardware/default.aspx">hardware</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/MAC/default.aspx">MAC</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Interoperabilidad/default.aspx">Interoperabilidad</category></item><item><title>Culico que veo cubico que deseo</title><link>http://geeks.ms/blogs/rfog/archive/2012/05/04/culico-que-veo-cubico-que-deseo.aspx</link><pubDate>Fri, 04 May 2012 10:58:19 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:204863</guid><dc:creator>Rafael Ontivero</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/rsscomments.aspx?PostID=204863</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/commentapi.aspx?PostID=204863</wfw:comment><comments>http://geeks.ms/blogs/rfog/archive/2012/05/04/culico-que-veo-cubico-que-deseo.aspx#comments</comments><description>&lt;p style="margin:0px;text-indent:18px;font-family:Calibri;font-size:14px;"&gt;Creo que ya tengo un post con el mismo título por algún lado, pero no puedo resistirme a comentar algunas cosas sobre los últimos movimientos de Microsoft.&lt;/p&gt;
&lt;p style="margin:0px;text-indent:18px;font-family:Calibri;font-size:14px;"&gt;Hay cosas de las que de momento no puedo hablar, pero hay otras que sí, y la verdad es que resultan un poco risibles porque, al menos desde mi punto de vista, son la respuesta incorrecta a una competencia mal entendida.&lt;/p&gt;
&lt;p style="margin:0px;text-indent:18px;font-family:Calibri;font-size:14px;"&gt;Os comento.&lt;/p&gt;
&lt;p style="margin:0px;text-indent:18px;font-family:Calibri;font-size:14px;"&gt;Apple, de vez en cuando, dice cosas como que el Flash es malo y sus productos no lo llevan, o que la disquetera está obsoleta, o que simplemente se acabaron las instalaciones con unidad de disco…&lt;/p&gt;
&lt;p style="margin:0px;text-indent:18px;font-family:Calibri;font-size:14px;"&gt;Y eso primero genera polémica, y luego resulta que tenían razón…&lt;/p&gt;
&lt;p style="margin:0px;text-indent:18px;font-family:Calibri;font-size:14px;"&gt;Pues bien, Microsoft quiere hacer lo mismo, pero como ya sabemos dónde tienen el estilo, la cosa termina, seguro, en unas risas y en una l,vuelta atrás.&lt;/p&gt;
&lt;p style="margin:0px;text-indent:18px;font-family:Calibri;font-size:14px;"&gt;Por un lado, mientras todos los fabricantes de móviles hacen cada vez equipos más potentes y con más funcionalidades dentro de su sistema operativo, mientras que mantienen otras restricciones más o menos incomprensibles para los expertos, Microsoft ha decidido hacer lo mismo… pero a su manera.&lt;/p&gt;
&lt;p style="margin:0px;text-indent:18px;font-family:Calibri;font-size:14px;"&gt;En general, un producto de Microsoft siempre ha ido creciendo tanto en vertical (más necesidad de hardware) como en horizontal (un API más rico y más completo). Esto ha llevado siempre a que la siguiente versión ha necesitado más memoria y más procesador para funcionar bien. En la parte de las APIs, han preferido enmarranar y convertir algo existente en más complejo en lugar de hacer borrón y cuenta nueva o simplemente añadir un API nuevo con más funcionalidad y dejar que el anterior muera…&lt;/p&gt;
&lt;p style="margin:0px;text-indent:18px;font-family:Calibri;font-size:14px;"&gt;Tampoco vamos a hablar del hecho de que, cuando han conseguido una tecnología madura y estable, en lugar de mantenerla y ampliarla, han decidido reinventar la rueda y vuelta a empezar: nuevo de todo, nuevos bugs, etc…&lt;/p&gt;
&lt;p style="margin:0px;text-indent:18px;font-family:Calibri;font-size:14px;"&gt;Pues bien, como decía, en un intento de paralelizarse a Apple, en lugar de cambiar para bien, lo hacen para mal. Hablo ahora de Windows Phone de 256 megas de RAM, que enmierdan todavía más ya la mierdosa API de ese sistema operativo. &lt;a href="http://geeks.ms/blogs/rfog/archive/2012/04/12/windows-phone-y-las-petisoper-237-as.aspx"&gt;Quitan cosas útiles&lt;/a&gt; y añaden nuevas inútiles (y ya hablaré de eso en otro momento). Básicamente quieren copiar, pero copian mal.&lt;/p&gt;
&lt;p style="margin:0px;text-indent:18px;font-family:Calibri;font-size:14px;"&gt;***&lt;/p&gt;
&lt;p style="margin:0px;text-indent:18px;font-family:Calibri;font-size:14px;"&gt;Apple retiró su Media Center por los motivos que fueran. Microsoft lo retira en su Windows 8. Nada, hay que hacer lo mismo.&lt;/p&gt;
&lt;p style="margin:0px;text-indent:18px;font-family:Calibri;font-size:14px;"&gt;***&lt;/p&gt;
&lt;p style="margin:0px;text-indent:18px;font-family:Calibri;font-size:14px;"&gt;Y ahora llega el colmo de los colmos. &lt;a href="http://gizmodo.com/5907600/windows-8-wont-play-dvds-as-standard?utm_campaign=socialflow_gizmodo_facebook&amp;amp;utm_source=gizmodo_facebook&amp;amp;utm_medium=socialflow"&gt;Windows 8 no podrá reproducir DVD&lt;/a&gt; sin programas externos porque dicen que el uso del DVD está rápido decline en los ordenadores…&lt;/p&gt;
&lt;p style="margin:0px;text-indent:18px;font-family:Calibri;font-size:14px;"&gt;En fin, lo dicho, copia, pero copia bien, joder, y no vayas haciendo este tipo de tonterías…&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=204863" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/rfog/archive/tags/escariotrop_26002300_237_3B00_as+gimn_26002300_233_3B00_sicas/default.aspx">escariotrop&amp;#237;as gimn&amp;#233;sicas</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Sistemas+Operativos/default.aspx">Sistemas Operativos</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/chapuzas/default.aspx">chapuzas</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/humor/default.aspx">humor</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Apple/default.aspx">Apple</category></item><item><title>Windows Phone y las petisoperías</title><link>http://geeks.ms/blogs/rfog/archive/2012/04/12/windows-phone-y-las-petisoper-237-as.aspx</link><pubDate>Thu, 12 Apr 2012 07:45:58 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:204405</guid><dc:creator>Rafael Ontivero</dc:creator><slash:comments>14</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/rsscomments.aspx?PostID=204405</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/commentapi.aspx?PostID=204405</wfw:comment><comments>http://geeks.ms/blogs/rfog/archive/2012/04/12/windows-phone-y-las-petisoper-237-as.aspx#comments</comments><description>&lt;p&gt;Hay que joderse, que dijo aquél. Este podría ser el resumen de esta entrada. Ahora mismo veréis por qué.&lt;/p&gt;  &lt;p&gt;***&lt;/p&gt;  &lt;p&gt;Estoy empezando a jugar de forma más o menos seria con Windows Phone. Ya cuando salió, el no poder ejecutar código nativo básicamente me hizo pensar que Microsoft había perdido el tiempo y que WP iba a ser un gran y nuevo fracaso de la compañía que había perdido el norte, el sur, el este y el oeste…&lt;/p&gt;  &lt;p&gt;Pasa el tiempo y pese a todos los intentos de MS, WP no levanta cabeza. Ni cuota de mercado ni aplicaciones, comparándolo con Android e iOS, que crecieron mucho más rápido.&lt;/p&gt;  &lt;p&gt;Ahora sé algunas razones, imposibilidad de usar C++ incluída.&lt;/p&gt;  &lt;p&gt;***&lt;/p&gt;  &lt;p&gt;Windows Phone 7.0 no tiene sockets. Toma ya. Increíble. Para los legos: no hay posibilidad de crear ningún tipo de aplicación de chat, ni de comunicación remota a servidores ni nada parecido. Todo hay que hacerlo mediante HTTP, que no conserva el estado y necesita sobredimensionar el lado servidor frente al cliente…&lt;/p&gt;  &lt;p&gt;Whidows Phone 7.5 tiene sockets… de aquella manera. Cuando la aplicación pasa a background el socket se cierra, con lo que pierdes la persistencia en la comunicación. Aquí lo puedes solucionar mediante técnicas Push (que todavía no he visto e ignoro las limitaciones y ventajas que puedan tener). Pero de momento, aplicaciones verticales que requieran una conexión permanente tampoco están permitidas.&lt;/p&gt;  &lt;p&gt;***&lt;/p&gt;  &lt;p&gt;Ahora llega la última versión, con dispostivos de 256 MB de memoria… &lt;a name="http://www.developer.nokia.com/Community/Wiki/Best_practice_tips_for_delivering_apps_to_Windows_Phone_with_256_MB"&gt;&lt;/a&gt;&lt;a href="http://www.developer.nokia.com/Community/Wiki/Best_practice_tips_for_delivering_apps_to_Windows_Phone_with_256_MB"&gt;Y la vuelven a cagar.&lt;/a&gt; Dadas las limitaciones de los mismos, dejan de funcionar las tareas periódicas y las intensivas… Y te dicen que cuando lances la aplicación mires en qué dispositivos estás ejecutando y uses secuencias if/else para cambiar el comportamiento.&lt;/p&gt;  &lt;p&gt;En primer lugar eso es una soberana imbecilidad como una casa. ¿Tienes que codificar las cosas dos veces? Pues no, tendrás que hacerlo todo con la limitación predicha, porque si lo puedes hacer sin esos elementos, es una soberana gilipollez repetir el código. El problema vendrá cuando sin eso no puedas hacerlo.&lt;/p&gt;  &lt;p&gt;En segundo lugar, mientras los demás fabricantes implementan mejoras y optimizan el código de sus sistemas operativos, Microsoft hace lo contrario. Apple pasa de dispositvos de 256 MB de RAM a 512 y luego a 1024. Microsof pasa de 512 a 256, llevándose cosas de en medio.&lt;/p&gt;  &lt;p&gt;***&lt;/p&gt;  &lt;p&gt;Recuerdo la presentación de Windows Phone: que si sólo .NET, que si sólo procesadores multicore, que si sólo dispositivos de gama alta… Al final tienen que pasar por el aro, pero en lugar de abrir el Windows CE interno al lenguaje C y/o C++ y quitar la mierda del .NET, que seguro consume 40 de los 60 MB de la huella de memoria de cada proceso, van y quitan prestaciones… porque lo de las tareas asíncronas es sólo una de tantas limitaciones impuestas, que podéis leer en la entrada que os enlazo más arriba.&lt;/p&gt;  &lt;p&gt;***&lt;/p&gt;  &lt;p&gt;Resumendo, que van de mal en peor. RFOG dixit.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=204405" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/rfog/archive/tags/Sistemas+Operativos/default.aspx">Sistemas Operativos</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Windows+CE/default.aspx">Windows CE</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/hardware/default.aspx">hardware</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Interoperabilidad/default.aspx">Interoperabilidad</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Windows+Phone/default.aspx">Windows Phone</category></item><item><title>C++/CX (II). C++/CX vs WRL</title><link>http://geeks.ms/blogs/rfog/archive/2011/11/04/c-cx-ii-c-cx-vs-wrl.aspx</link><pubDate>Fri, 04 Nov 2011 19:13:32 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:201533</guid><dc:creator>Rafael Ontivero</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/rsscomments.aspx?PostID=201533</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/commentapi.aspx?PostID=201533</wfw:comment><comments>http://geeks.ms/blogs/rfog/archive/2011/11/04/c-cx-ii-c-cx-vs-wrl.aspx#comments</comments><description>&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Cochin;"&gt;Bueno, una vez que hemos visto lo que hay &lt;a href="http://geeks.ms/blogs/rfog/archive/2011/10/31/c-cx-windows-8-y-el-nuevo-subsistema-winrt-i.aspx"&gt;dentro del nuevo Windows 8&lt;/a&gt;, y comprobado que WinRT &lt;a href="http://geeks.ms/blogs/rfog/archive/2011/11/02/191-winrt-un-subsistema-no-no-lo-es.aspx"&gt;no es un subsistema&lt;/a&gt; sino algo por encima de Win32 como es .NET, vamos a contaros las dos formas que hay de programar con C++ para la interfaz Metro.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Cochin;"&gt;Ya lo he comentado antes, pero voy a repetirlo aquí por mor de claridad. En Windows 8 hay dos escritorios diferentes. Por un lado tenemos el clásico de toda la vida que es prácticamente idéntico al de Windows 7, y por otro el de la interfaz Metro. Si no cambian las cosas, los equipos que lleven un procesador x86 tendrán acceso indistinto a los dos, mientras que aquellos que lleven procesador ARM sólo verán la interfaz Metro.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Cochin;"&gt;Eso quiere decir que habrá dos tipos de aplicaciones: las clásicas y las Metro. Las primeras sólo podrán compilarse para x86 (de 32 o de 64 bits) y sólo funcionarán en las máquinas Intel. Si estamos en la interfaz Metro y lanzamos una aplicación de este tipo, el sistema cambiará al escritorio clásico.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Cochin;"&gt;Las segundas podrán compilarse para x86 o para ARM y en ambos casos funcionarán en sus propios sistemas, pero siempre bajo la interfaz Metro. Es decir, si queremos que nuestra aplicación Metro escrita con código nativo pueda correr en los dos tipos de arquitectura, tendremos que proveer dos compilaciones.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Cochin;"&gt;Con .NET (C# y &lt;a href="http://VB.NET"&gt;VB.NET&lt;/a&gt;) viene a pasar lo mismo, aunque en este caso creo que con especificar AnyCPU será suficiente para que la aplicación corra en ambas arquitecturas. Y de nuevo tendremos los dos tipos de aplicaciones: de escritorio y Metro, con las mismas reglas.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Cochin;"&gt;Por lo tanto, cualquier programa escrito en cualquier lenguaje que funcione ahora mismo en Windows 7, no debe tener ningún problema en ejecutarse en la siguiente versión, pero siempre en el escritorio clásico. Y podremos seguir escribiéndolos como hasta ahora.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Cochin;"&gt;***&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Cochin;"&gt;Eso quiere decir que tenemos dos API diferentes e incompatibles entre sí. Por un lado tenemos el API de Win32 clásico y tradicional, sobre el que se construyen bibliotecas de terceros y el .NET. Aquí podemos meter VB6, Delphi, C#, C++/CLI, QT… Vamos, lo que hasta ahora.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Cochin;"&gt;Y para Metro hay una nueva API que se llama WinRT. Creo que hay cosas compartidas con Win32, pero no me hagáis mucho caso porque todavía no he visto nada. De todos modos si las hubiera, podemos tomarlas como si fueran nuevas, porque son excluyentes, al menos de momento.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Cochin;"&gt;Es decir, o bien desarrollas para Win32 o bien para WinRT, pero no puedes tener un ejecutable que use partes del otro más allá de las que MS ha querido compartir, y entre ellas no se encuentra C++/CX.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Cochin;"&gt;Por lo tanto también hay dos versiones de .NET. La de la interfaz Metro se construye sobre WinRT, y la clásica sobre Win32. Nos podemos hacer a la idea de que, aunque tengamos un API con nombres similares, por dentro funciona todo diferente (lo que no es cierto, pero a efectos prácticos sí que lo es, ya que las aplicaciones Metro deberán ir firmadas y el proceso de firmado garantiza que no vas a salirte de las API estándar -¿De qué me sonará eso?).&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Cochin;"&gt;***&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Cochin;"&gt;No obstante, WinRT no está escrito con C++/CX si no que está hecho con C++ clásico. Y en cierto modo es lógico, ya que no es más que una extensión a Win32, que es C y C++. Además, independientemente de mis diatribas personales, es algo bueno que le añada funcionalidad a un API que lleva tanto tiempo funcionando con regularidad y sin grandes problemas. Imaginaos los bugs que podría tener algo escrito desde cero.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Cochin;"&gt;Por lo tanto, podemos desarrollar aplicaciones para Metro sin usar .NET ni C++/CX. Podemos utilizar C++ y una biblioteca de plantillas llamada WRL (Windows Runtime Library), que viene a ser algo así como el ATL de Metro.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Cochin;"&gt;Microsoft no recomienda usarla, más que nada porque es compleja y porque de momento no hay documentación alguna sobre ella, pero está ahí, y es la base de Metro.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Cochin;"&gt;Si queremos echarle un vistazo, podemos acercarnos a “Program Files (x86)\Windows Kits\8.0\Include\winrt\wrl” y ver qué hay dentro. Tomaos un par de aspirinas antes.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Cochin;"&gt;Básicamente se trata de toda la infraestructura y parafernalia para acceder a los objetos COM y componentes de Metro.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Cochin;"&gt;***&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Cochin;"&gt;C++/CX ocupa el nicho de lenguaje nativo para Metro, con lo que es más rápido que C# y que &lt;a href="http://VB.NET"&gt;VB.NET&lt;/a&gt;, y es con el único con el que se puede acceder a DirectX (y por tanto a la creación de juegos). También es nativo. Es decir, que no es .NET y compila al código máquina que todos conocemos y de hecho es idéntico al C++ de toda la vida.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Cochin;"&gt;Lo que ocurre es que contiene una serie de extensiones que nos van a facilitar la vida a la hora de operar con Metro y sus componentes. Soporta clases parciales, se entiende bien con XAML e instanciar o crear un componente COM es un juego de niños comparado a como se hace con Win32.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Cochin;"&gt;Digamos que con esas extensiones nos ahorramos una buena faena a la hora de programar, y será el compilador el que sustituya esa &lt;em&gt;azúcar sintáctica&lt;/em&gt; por el código necesario.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Cochin;"&gt;En siguientes entradas os contaré más sobre C++/CX.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=201533" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/rfog/archive/tags/Sistemas+Operativos/default.aspx">Sistemas Operativos</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/rationale/default.aspx">rationale</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/lenguajes/default.aspx">lenguajes</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Interoperabilidad/default.aspx">Interoperabilidad</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/C_2B002B002F00_CX/default.aspx">C++/CX</category></item><item><title>¿WinRT un subsistema? No, no lo es</title><link>http://geeks.ms/blogs/rfog/archive/2011/11/02/191-winrt-un-subsistema-no-no-lo-es.aspx</link><pubDate>Wed, 02 Nov 2011 16:41:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:201435</guid><dc:creator>Rafael Ontivero</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/rsscomments.aspx?PostID=201435</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/commentapi.aspx?PostID=201435</wfw:comment><comments>http://geeks.ms/blogs/rfog/archive/2011/11/02/191-winrt-un-subsistema-no-no-lo-es.aspx#comments</comments><description>&lt;p&gt;Bueno, al final no ha costado mucho encontrarlo. B&amp;aacute;sicamente, el resultado de esta investigaci&amp;oacute;n es:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/image_5F00_4ACD74FC.png"&gt;&lt;img height="138" width="244" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/image_5F00_thumb_5F00_08EBB110.png" alt="image" border="0" title="image" style="background-image:none;border-bottom:0px;border-left:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;O con otras palabras: WinRT y Metro se ejecutan, como todo lo dem&amp;aacute;s, sobre Win32, con las ventajas y los inconvenientes que eso pueda tener. No me malinterpret&amp;eacute;is: no hay nada malo que la arquitectura sea diferente a la indicada en el gr&amp;aacute;fico de arriba, lo que est&amp;aacute; mal es que Microsoft nos mienta tan descaradamente. Simplemente eso.&lt;/p&gt;
&lt;p&gt;Si lo han hecho as&amp;iacute;, por algo ser&amp;aacute; y sus motivos tendr&amp;aacute;n, y es entonces cuando, ya definitivamente, yo ten&amp;iacute;a raz&amp;oacute;n: Windows ya no es Windows NT, y su grandiosa arquitectura por bloques se ha perdido en el camino. Y esto s&amp;iacute; que es malo, bastante malo, porque estamos volviendo a un batiburrillo de c&amp;oacute;digo como es, por cierto, el OS X (quiz&amp;aacute;s alg&amp;uacute;n d&amp;iacute;a hable de ello).&lt;/p&gt;
&lt;p&gt;Vosotros mismos pod&amp;eacute;is comprobarlo sin problema alguno y de forma muy r&amp;aacute;pida. Ten&amp;eacute;is que construir dos aplicaciones, una WinRT en C++/CX y otra cl&amp;aacute;sica de Win32. No hay m&amp;aacute;s que utilizar las plantillas por defecto sin ning&amp;uacute;n cambio.&lt;/p&gt;
&lt;p&gt;Eso s&amp;iacute;, hay que hacerlo a partir de la versi&amp;oacute;n Developer de 64 bits de Windows 8, e instalar una versi&amp;oacute;n de la MSDN, porque la Express creo que no es capaz de generar programas Win32 puros.&lt;/p&gt;
&lt;p&gt;He llamado &amp;ldquo;TestWin32&amp;rdquo; a mi aplicaci&amp;oacute;n tradicional, que genera una ventana de Windows normal y corriente utilizando directamente el API de Win32. A la Metro la he llamado &amp;ldquo;TestSplitApplication&amp;rdquo;. Una vez generadas, tenemos que compilarlas. Visual Studio se os quedar&amp;aacute; m&amp;aacute;s o menos as&amp;iacute;:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/image_5F00_33C6A5D3.png"&gt;&lt;img height="161" width="244" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/image_5F00_thumb_5F00_55B49908.png" alt="image" border="0" title="image" style="background-image:none;border-bottom:0px;border-left:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Si ahora nos vamos a la carpeta en donde est&amp;aacute; almacenado el proyecto (que podemos hacer desde el mismo IDE posicion&amp;aacute;ndonos en el nombre de la soluci&amp;oacute;n en el Explorador y elegimos &lt;i&gt;Open Folder in Windows Explorer&lt;/i&gt;), carpeta &lt;i&gt;Debug&lt;/i&gt;, encontraremos el ejecutable del programa nativo (&lt;i&gt;TestWin32.exe&lt;/i&gt;) y dentro de la carpeta &lt;i&gt;TestSplitApplication&lt;/i&gt;, el de la aplicaci&amp;oacute;n Metro.&lt;/p&gt;
&lt;p&gt;(Por cierto, en uno de esos lapsus teclae tan habituales en mi, le he dado el nombre de &amp;ldquo;TestSplitApplicarion&amp;rdquo; en lugar del correcto.)&lt;/p&gt;
&lt;p&gt;Ahora debemos conseguir el &lt;a href="http://www.dependencywalker.com/"&gt;&lt;i&gt;Dependency Walker&lt;/i&gt;&lt;/a&gt;, aunque existen otras herramientas de l&amp;iacute;nea de comandos que nos permiten hacer lo mismo dentro del SDK, lo interesante es utilizar esta porque lo veremos todo de un golpe. El mayor problema es que se trata de una utilidad que hace tiempo que no se incluye en ning&amp;uacute;n SDK, por lo que hay que conseguirla de &lt;a href="http://www.dependencywalker.com/"&gt;forma externa&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Una vez obtenida la versi&amp;oacute;n de 32 bits, porque nuestros proyectos son de dicho tipo, la ejecutamos sobre cada uno de los dos programas. Este es el resultado:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/image_5F00_7E53050F.png"&gt;&lt;img height="161" width="244" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/image_5F00_thumb_5F00_19B00966.png" alt="image" border="0" title="image" style="background-image:none;border-bottom:0px;border-left:0px;margin:5px 5px 5px 0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;iquest;Lo veis? Ambos programas importan las mismas DLL, las de Win32 como KERNEL32.DLL y USER32.DLL.&lt;/p&gt;
&lt;p&gt;Es decir que ambos son aplicaciones Win32 nativas.&lt;/p&gt;
&lt;p&gt;***&lt;/p&gt;
&lt;p&gt;Si nos diera por abrir, por ejemplo, uno de los dos KERNEL32.DLL, ver&amp;iacute;amos que ambas DLL son la misma con las mismas dependencias y exportaciones. Por lo tanto, ambas aplicaciones dependen del mismo subsistema.&lt;/p&gt;
&lt;p&gt;Reitero que es una tonter&amp;iacute;a, pero no lo es cuando intentan enga&amp;ntilde;arte.&lt;/p&gt;
&lt;p&gt;Lo que s&amp;iacute; parece han hecho ha sido &lt;i&gt;romper&lt;/i&gt; KERNEL32.DLL en otros ficheros m&amp;aacute;s peque&amp;ntilde;os que contemplan subconjuntos de lo que en versiones anteriores hab&amp;iacute;a en &amp;eacute;l. Quiz&amp;aacute;s de esta forma reduzcan la huella de memoria evitando cargar sub ficheros cuando estos no se vayan a utilizar.&lt;/p&gt;
&lt;p&gt;***&lt;/p&gt;
&lt;p&gt;Esto nos lleva a un tercer problema: parecer ser que una aplicaci&amp;oacute;n Metro no puede ejecutar funciones de Win32, y una de Win32 tampoco de WinRT.&lt;/p&gt;
&lt;p&gt;&amp;iexcl;&amp;iexcl;Pero si es el mismo subsistema!!&lt;/p&gt;
&lt;p&gt;Pues bien, estamos ante una limitaci&amp;oacute;n artificialmente impuesta por Microsoft sin ning&amp;uacute;n motivo t&amp;eacute;cnico aparente&amp;hellip; con lo guapo que ser&amp;iacute;a hacer aplicaciones Win32 con C++/CX&amp;hellip;&lt;/p&gt;
&lt;p&gt;Se me ocurren un par de trucos para poder forzar esto, pero no creo que valga la pena hacerlo en una versi&amp;oacute;n tan temprana como esta. Quiz&amp;aacute;s cuando salga la definitiva, si tengo ganas y si nadie m&amp;aacute;s se me adelanta, lo intente.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=201435" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/rfog/archive/tags/Sistemas+Operativos/default.aspx">Sistemas Operativos</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/windows/default.aspx">windows</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/rationale/default.aspx">rationale</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Win32/default.aspx">Win32</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Biblioteca+de+C_2B002B00_/default.aspx">Biblioteca de C++</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Interoperabilidad/default.aspx">Interoperabilidad</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/C_2B002B002F00_CX/default.aspx">C++/CX</category></item><item><title>C++/CX  (I). Windows 8 y el nuevo subsistema WinRT</title><link>http://geeks.ms/blogs/rfog/archive/2011/10/31/c-cx-windows-8-y-el-nuevo-subsistema-winrt-i.aspx</link><pubDate>Mon, 31 Oct 2011 14:34:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:201432</guid><dc:creator>Rafael Ontivero</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/rsscomments.aspx?PostID=201432</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/commentapi.aspx?PostID=201432</wfw:comment><comments>http://geeks.ms/blogs/rfog/archive/2011/10/31/c-cx-windows-8-y-el-nuevo-subsistema-winrt-i.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/image_5F00_47C30F25.png"&gt;&lt;img height="137" width="244" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/image_5F00_thumb_5F00_6774799E.png" alt="image" border="0" title="image" style="background-image:none;border-bottom:0px;border-left:0px;margin:5px auto;padding-left:0px;padding-right:0px;display:block;float:none;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Observad con detalle la imagen de arriba. Fijaos en que est&amp;aacute; dividida en dos grandes bloques. A poco que os haya preocupado la arquitectura l&amp;oacute;gica de Windows, os dar&amp;eacute;is cuenta de que hay nueva chica en la oficina: WinRT. &lt;/p&gt;
&lt;p&gt;Ya habl&amp;eacute; de algo as&amp;iacute; &lt;a href="http://geeks.ms/blogs/rfog/archive/2011/03/19/mac-rationale-vs-windows-rationale-en-el-desarrollo.aspx"&gt;aqu&amp;iacute;&lt;/a&gt;, pero en relaci&amp;oacute;n con la arquitectura de Apple comparada con la de Windows, y de los &amp;uacute;ltimos cambios que Microsoft ha ido haciendo para adecuar su plataforma NT para que sea funcional y &amp;uacute;til para el usuario medio, dejando un poco de lado la arquitectura tradicional.&lt;/p&gt;
&lt;p&gt;Pues bien, parece ser que me tengo que comer mis palabras con patatas (no, no &lt;i&gt;esas patatas&lt;/i&gt;, Z). Volviendo al gr&amp;aacute;fico anterior, WinRT es un nuevo subsistema igual que lo es Win32. Para aquellos que no tengan claro qu&amp;eacute; es, os cuento un poco la arquitectura te&amp;oacute;rica de Windows NT.&lt;/p&gt;
&lt;p&gt;El sistema operativo cuenta con un kernel (s&amp;iacute;, como el de Linux, pero con muchas m&amp;aacute;s cosas dentro de &amp;eacute;l y mucho m&amp;aacute;s din&amp;aacute;mico), que en teor&amp;iacute;a se asienta sobre una capa HAL que abstrae a dicho n&amp;uacute;cleo de la arquitectura f&amp;iacute;sica. En su momento hubo HAL para ARM y para otras plataformas. En la actualidad s&amp;oacute;lo la hay para x86, tanto en versi&amp;oacute;n de 32 como de 64 bits.&lt;/p&gt;
&lt;p&gt;O eso cre&amp;iacute;a tras haber hecho un somero an&amp;aacute;lisis de las tripas de Windows 7. Pues bien, si Microsoft a&amp;ntilde;ade soporte para ARM (y recordemos que van a salir procesadores de este tipo de 64 bits), dicha capa debe ser o bien reimplementada o bien ya exist&amp;iacute;a y simplemente estaba inactiva. O lo que me parece m&amp;aacute;s l&amp;oacute;gico: recompilar todo el sistema operativo para que se ejecute en dicha arquitectura, cambiando lo que haya que cambiar, dado que eso de traducir cualquier otro procesador a x86, sobre todo desde un ARM, suena a fantas&amp;iacute;a animada de ayer y de hoy.&lt;/p&gt;
&lt;p&gt;Por otro lado, Windows se mueve mediante subsistemas. Uno de ellos es Win32. Otro lo fue OS/2 y tambi&amp;eacute;n Posix (s&amp;iacute;, en un pasado lejano, Windows NT era capaz de ejecutar comandos de unix con las primitivas de desarrollo que tiene la parte est&amp;aacute;ndar Posix de Unix). Es decir, un subsistema suministra cierta abstracci&amp;oacute;n sobre el n&amp;uacute;cleo, proporcionando un API mucho m&amp;aacute;s rico y potente. Y de paso lo a&amp;iacute;sla para que las aplicaciones sean incapaces de tumbarlo.&lt;/p&gt;
&lt;p&gt;En otras palabras, Win32 se ejecuta en el anillo 3 y el n&amp;uacute;cleo en el cero, y es Win32 el que, cuando una aplicaci&amp;oacute;n pide alg&amp;uacute;n recursos del sistema (por ejemplo un puerto serie), el que se encarga de mover la petici&amp;oacute;n y de realizar tareas intermedias, evitando as&amp;iacute; que un mal uso por parte de una aplicaci&amp;oacute;n genere una pantalla azul. &lt;/p&gt;
&lt;p&gt;Digamos que una aplicaci&amp;oacute;n en el anillo 3 jam&amp;aacute;s podr&amp;aacute; tumbar al sistema ejecut&amp;aacute;ndose en el anillo 0, o al menos esa es la teor&amp;iacute;a. A veces un par&amp;aacute;metro mal pasado puede terminar en una ca&amp;iacute;da completa, pero no es lo habitual, y cada vez menos.&lt;/p&gt;
&lt;p&gt;Pues bien, aparte de Win32, ahora tenemos un nuevo subsistema llamado WinRT. O eso dice, al menos la teor&amp;iacute;a y as&amp;iacute; nos lo presenta Microsoft en sus gr&amp;aacute;ficos y en la escas&amp;iacute;sima informaci&amp;oacute;n de la que disponemos.&lt;/p&gt;
&lt;p&gt;Una de mis pr&amp;oacute;ximas tareas es la de intentar averiguar si esto es as&amp;iacute; o no lo es. No es la primera vez que Microsoft miente descaradamente, como cuando dijo de XAML no iba a necesitar de Win32 y que desaparec&amp;iacute;an los bucles de mensajes y que se ejecutar&amp;iacute;a sobre DirectX&amp;hellip; Hasta donde s&amp;eacute;, todav&amp;iacute;a eso no es del todo cierto.&lt;/p&gt;
&lt;p&gt;Tambi&amp;eacute;n nos dijo que .NET iba a ser un subsistema, y realmente se ha quedado como una capa sobre Win32&amp;hellip;&lt;/p&gt;
&lt;p&gt;Por lo tanto, estad atentos al blog. Adem&amp;aacute;s, el dibujo original de Microsoft deja mucho que desear respecto a la claridad, presentando Internet Explorer y .NET como subsistemas independientes de Win32, lo que es, a todas luces, completamente falso:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/image_5F00_3B577CAD.png"&gt;&lt;img height="138" width="244" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/image_5F00_thumb_5F00_0E673B34.png" alt="image" border="0" title="image" style="background-image:none;border-bottom:0px;border-left:0px;margin:5px auto;padding-left:0px;padding-right:0px;display:block;float:none;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;***&lt;/p&gt;
&lt;p&gt;Volviendo al gr&amp;aacute;fico de arriba, podemos ver algunos detalles que creo no son del todo ciertos, pero nos dan una idea de la arquitectura del nuevo WinRT (sobre la que se basa la interfaz METRO que llevar&amp;aacute;, junto al escritorio tradicional, Windows 8).&lt;/p&gt;
&lt;p&gt;(Una de las cosas por las que dudo que WinRT sea un subsistema completo es el hecho de que Windows 8 consuma menos memoria que el 7 y de que se pueda producir ese intercambio tan r&amp;aacute;pido entre los dos escritorios, lo que me hace pensar que, de nuevo, se trata de algo sobre Win32).&lt;/p&gt;
&lt;p&gt;En WinRT hay dos interfaces de desarrollo principales: XAML y HTML. Es decir, podemos hacer aplicaciones &lt;i&gt;cl&amp;aacute;sicas&lt;/i&gt; basadas en el primer modelo y &lt;i&gt;modernas&lt;/i&gt; en el segundo.&lt;/p&gt;
&lt;p&gt;A simple vista puede parecer que en ambas se utiliza una misma variaci&amp;oacute;n del XML, pero no es as&amp;iacute;. En el caso de HTML/CSS nuestra aplicaci&amp;oacute;n no ser&amp;aacute; otra cosa m&amp;aacute;s que una &lt;i&gt;p&amp;aacute;gina web&lt;/i&gt; ejecut&amp;aacute;ndose dentro de una sesi&amp;oacute;n m&amp;aacute;s o menos oculta de Internet Explorer. Tendremos acceso a esas dos tecnolog&amp;iacute;as (incluyendo HTML5) y JavaScript como &lt;i&gt;lenguaje&lt;/i&gt; de desarrollo. &lt;/p&gt;
&lt;p&gt;En el caso de XAML, estamos ante la &lt;i&gt;&amp;uacute;ltima&lt;/i&gt; evoluci&amp;oacute;n de las interfaces de usuario din&amp;aacute;micas en las que la interfaz est&amp;aacute; completamente (o lo m&amp;aacute;s posible) separada del c&amp;oacute;digo en s&amp;iacute;, lo que permite una soltura nunca vista hasta ahora. O al menos esa es la teor&amp;iacute;a y casi os dir&amp;iacute;a que la pr&amp;aacute;ctica.&lt;/p&gt;
&lt;p&gt;XAML es muy potente. Demasiado, casi dir&amp;iacute;a. Se trata de una especie de colecci&amp;oacute;n de contenedores jer&amp;aacute;rquicos que pueden actuar como tales o como elementos finales, y pueden &lt;i&gt;mutar&lt;/i&gt; de un tipo a otro con una facilidad pasmosa. De hecho, cambiar el aspecto visual de una aplicaci&amp;oacute;n XAML puede llegar a ser cosa de unas pocas &amp;ndash;muy pocas- l&amp;iacute;neas de c&amp;oacute;digo, con el a&amp;ntilde;adido de que quien haya desarrollado con .NET y la versi&amp;oacute;n anterior, est&amp;aacute; casi listo para esta nueva (que por cierto no es mi caso, pese a ver en su momento las ventajas evidentes del nuevo modelo).&lt;/p&gt;
&lt;p&gt;Por lo tanto, los programadores de .NET que hayan abandonado Windows Forms por la nueva forma, lo tendr&amp;aacute;n bastante f&amp;aacute;cil. Los dinosaurios como yo mismo tendremos ciertas dificultades en adaptarnos&amp;hellip; o no.&lt;/p&gt;
&lt;p&gt;&amp;iquest;Record&amp;aacute;is C++/CLI, el C++ del .NET? Pues bien, la &amp;uacute;nica pega para que dicha extensi&amp;oacute;n de C++ pudiera utilizar XAML es que no se soportan las clases parciales como en C o en VB.NET. Por desgracia, eso sigue siendo as&amp;iacute;, y la interfaz cl&amp;aacute;sica continua estando vedada para los programadores de C++ en .NET, quedando limitados a Windows Forms y a un IDE que no es que se muestre muy estable manejando el lenguaje&amp;hellip;&lt;/p&gt;
&lt;p&gt;***&lt;/p&gt;
&lt;p&gt;Bueno, ahora, por fin, entra C++/CX. &amp;iquest;Qu&amp;eacute; es? Nada m&amp;aacute;s y nada menos que una nueva extensi&amp;oacute;n a C++, con una sintaxis muy similar a C++/CLI pero con un prop&amp;oacute;sito muy diferente: el de soportar METRO y XAML. Y no, no es .NET. Es nativo.&lt;/p&gt;
&lt;p&gt;Supongo que Microsoft se plante&amp;oacute; ante una disyuntiva muy pero que muy gorda: el rendimiento de .NET es suficiente para un PC, pero no lo es para una plataforma m&amp;oacute;vil como una tableta. No estoy diciendo que sea malo, estoy diciendo que eso de tener una m&amp;aacute;quina virtual consumiendo memoria y recursos, un &lt;i&gt;jitter&lt;/i&gt; ejecut&amp;aacute;ndose detr&amp;aacute;s de todo, y un post-compilador pasando MSIL a c&amp;oacute;digo nativo no es de recibo para un Tablet.&lt;/p&gt;
&lt;p&gt;Delante de todos est&amp;aacute; el fracaso de Android. Por favor, absteneros fundamentalistas y otros p&amp;aacute;jaros de similar cala&amp;ntilde;a: Android es un fracaso. Puede que aguante unos cuantos a&amp;ntilde;os, pero terminar&amp;aacute; por caer estrepitosamente, tanto por problemas t&amp;eacute;cnicos (demasiado consumo de memoria, demasiada lentitud, demasiadas capas una encima de otra, demasiadas ca&amp;iacute;das) como por comerciales (demasiada fragmentaci&amp;oacute;n, demasiado abandono de terminales a medio hacer), etc..&lt;/p&gt;
&lt;p&gt;Por lo tanto, para competir en igualdad de condiciones, tenemos que darle ca&amp;ntilde;a a iOS. Se debe hacer algo similar, y ese algo es WinRT y C++/CX. No hay m&amp;aacute;quina virtual .NET, ni nada oculto (o eso quiero creer), tan solo un motor de ejecuci&amp;oacute;n, una interfaz y el propio sistema operativo. O en otras palabras: objetive-c, cocoa y lo que quiera que haya en el n&amp;uacute;cleo de iOS (parece ser que un BSD recortadito).&lt;/p&gt;
&lt;p&gt;Otro problema es la arquitectura. Ya se ha demostrado que x86 es demasiado pesado y demasiado hambriento de energ&amp;iacute;a como para ser &amp;uacute;til en el mercado m&amp;oacute;vil, por lo que hay que subirse al carro de ARM, que son micros mucho menos complejos y por tanto consumen mucho menos y andan m&amp;aacute;s &lt;i&gt;sueltos&lt;/i&gt;.&lt;/p&gt;
&lt;p&gt;Por lo tanto se necesita algo diferente, algo mucho m&amp;aacute;s liviano. Y eso, de nuevo, es WinRT. Por lo tanto, la combinaci&amp;oacute;n ganadora es C++/CX, XAML y, c&amp;oacute;mo no, C# y VB.NET corriendo sobre una variaci&amp;oacute;n de .NET llamada .NET 4.5 WinRT (y que funcionar&amp;aacute; m&amp;aacute;s lento y consumir&amp;aacute; m&amp;aacute;s bater&amp;iacute;a que una aplicaci&amp;oacute;n realizada con C++/CX).&lt;/p&gt;
&lt;p&gt;Pero el n&amp;uacute;cleo, el centro de todo, es C++ y WinRT. Luego est&amp;aacute; .NET, encima igual que en Win32. Como debe ser. Y de nuevo abst&amp;eacute;ngase fundamentalistas. Si lo han hecho por algo ser&amp;aacute;. Quien cae del &amp;aacute;rbol a tiempo todav&amp;iacute;a puede recuperarse.&lt;/p&gt;
&lt;p&gt;***&lt;/p&gt;
&lt;p&gt;C++/CX no es .NET. Es nativo. Y la parte CX no es m&amp;aacute;s que un envoltorio c&amp;oacute;mo para los interfaces COM, ese animal mitol&amp;oacute;gico con el que los programadores de C++ nos tenemos que enfrentar de tiempo en tiempo y que nos pone los pelos de punta.&lt;/p&gt;
&lt;p&gt;Es decir, la parte CX s&amp;oacute;lo se utiliza para interactuar con XAML y los componentes que se hayan creado a tal efecto. Luego, nuestro c&amp;oacute;digo ser&amp;aacute; C++ normal y corriente, con la STL, los &lt;i&gt;streams&lt;/i&gt; (que personalmente pienso que no son muy &amp;uacute;tiles), Boost o lo que queramos usar y est&amp;eacute; disponible. Desarrollo determinista por completo, sin recolector de basura (a no ser que nos hagamos uno), sin elementos ocultos excepto el envolvente COM que han llamado CX y que nos servir&amp;aacute; para interactuar con los componentes.&lt;/p&gt;
&lt;p&gt;Otra ventaja de C++/CX sobre .NET es que, si quieres hacer un juego sobre DirectX, tendr&amp;aacute;s que usarlo ya que ni C# ni VB.NET est&amp;aacute;n soportados, de nuevo como debe ser.&lt;/p&gt;
&lt;p&gt;Ah, y con soporte para clases parciales, lo que&amp;hellip; bueno, mejor lo dejamos para m&amp;aacute;s adelante.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=201432" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/rfog/archive/tags/c_2B002B002F00_cli/default.aspx">c++/cli</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/c_2B002B00_/default.aspx">c++</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Sistemas+Operativos/default.aspx">Sistemas Operativos</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/windows/default.aspx">windows</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/lenguajes/default.aspx">lenguajes</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Win32/default.aspx">Win32</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Biblioteca+de+C_2B002B00_/default.aspx">Biblioteca de C++</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/C_2B002B002F00_CX/default.aspx">C++/CX</category></item><item><title>Paragon HFS+ para Windows o cómo reventar un MAC</title><link>http://geeks.ms/blogs/rfog/archive/2011/10/18/paragon-hfs-para-windows-o-c-243-mo-reventar-un-mac.aspx</link><pubDate>Tue, 18 Oct 2011 20:07:50 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:201243</guid><dc:creator>Rafael Ontivero</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/rsscomments.aspx?PostID=201243</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/commentapi.aspx?PostID=201243</wfw:comment><comments>http://geeks.ms/blogs/rfog/archive/2011/10/18/paragon-hfs-para-windows-o-c-243-mo-reventar-un-mac.aspx#comments</comments><description>&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-indent:18.0px;font:14.0px Cochin;"&gt;Cuando uno está en esto del &lt;em&gt;switching indeciso&lt;/em&gt;, que no sabe si irse para Pinto o para Valdemoro, le pueden pasar cosas como la que os voy a contar.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-indent:18.0px;font:14.0px Cochin;"&gt;Todos sabéis que desde hace unos años Apple permite la ejecución de Windows sobre su hardware compatible, y que suministra no sólo los drviers (que funcionan cojonudos), sino las herramientas necesarias para tener un arranque dual sin mucho problema. Por tener, hasta tenemos soporte de lectura para el formato de ficheros HFS+, con lo que veremos sin problemas las unidades del MAC, aunque no podremos escribir en ellas.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-indent:18.0px;font:14.0px Cochin;"&gt;Una suposición personal es que, así, no podremos trastear en un sistema de ficheros en el que es peligroso tocar si no está cargado el sistema operativo. (Lo que viene a ser igual que con Windows, ya que si tenemos arranque dual, la instalación que no se haya iniciado podría ser fácilmente estropeada por algún zarpas, léanseme: yo mismo.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-indent:18.0px;font:14.0px Cochin;"&gt;Pues bien, hasta aquí todo perfecto.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-indent:18.0px;font:14.0px Cochin;"&gt;Supongamos ahora que queremos soporte de escritura. Porque somos así de chulos y así de molones, porque nosotros lo valemos. O simplemente porque tenemos una unidad de disco externo con nuestro MAC que también queremos usar en Windows.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-indent:18.0px;font:14.0px Cochin;"&gt;Vale, la formateamos con FAT32 y listo. No os lo aconsejo. Aparte de que es un sistema de ficheros no muy robusto, carece de sistema de permisos y tiene otras limitaciones en cuanto a los nombres de los ficheros. Y si encima tienes ya ocupados unos cuantos gigas, como que se hace cuesta arriba la conversión.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-indent:18.0px;font:14.0px Cochin;"&gt;¿Podemos escribir en HFS+ desde Windows? La respuesta corta es que sí. La larga es que mejor no lo hagas. Me explico.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-indent:18.0px;font:14.0px Cochin;"&gt;&lt;a href="http://www.paragon-software.com"&gt;Paragon Software Group&lt;/a&gt; cuenta con un &lt;a href="http://www.paragon-software.com/home/hfs-windows/"&gt;driver para Windows&lt;/a&gt; (tanto de 32 como de 64 bits) que permite eso mismo: leer y escribir sin problemas sobre particiones HFS+. O eso dicen.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-indent:18.0px;font:14.0px Cochin;"&gt;En mi caso ha sido un desastre total. No sólo me ha jodido la partición donde estaba el OS X (que no tendría mayor problema) sino que también ha destrozado otra sobre la que no estaba escribiendo, alojada en un disco externo por FireWire 800.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-indent:18.0px;font:14.0px Cochin;"&gt;Me tocó reinstalar el OS X desde el DVD de Lion (porque de paso borré todo el disco interno del iMAC e hice una instalación limpia para ver si se me iban los problemas al actualizar a la 10.7.2) y olvidarme de los datos que había en el disco externo, algo así como medio Tera en máquinas virtuales, ISOs descargadas y otras copias de seguridad…&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-indent:18.0px;font:14.0px Cochin;"&gt;Así que ya sabéis, tomaos con calma el “HFS+ for Windows” y probadlo extensamente antes de pasar a producción.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=201243" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/rfog/archive/tags/Sistemas+Operativos/default.aspx">Sistemas Operativos</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/windows/default.aspx">windows</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/chapuzas/default.aspx">chapuzas</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/bugs/default.aspx">bugs</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/MAC/default.aspx">MAC</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/seguridad/default.aspx">seguridad</category></item><item><title>Aventuras de un instalador de Windows 8</title><link>http://geeks.ms/blogs/rfog/archive/2011/09/26/aventuras-de-un-instalador-de-windows-8.aspx</link><pubDate>Mon, 26 Sep 2011 18:58:41 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:200750</guid><dc:creator>Rafael Ontivero</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/rsscomments.aspx?PostID=200750</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/commentapi.aspx?PostID=200750</wfw:comment><comments>http://geeks.ms/blogs/rfog/archive/2011/09/26/aventuras-de-un-instalador-de-windows-8.aspx#comments</comments><description>&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Cochin;"&gt;Bueno, como ya os comenté en la &lt;a href="http://geeks.ms/blogs/rfog/archive/2011/09/25/wintablet-info-windows-8-y-los-tablet.aspx"&gt;entrada anterior&lt;/a&gt;, hablamos y hablaremos sobre Windows 8 y su orientación a los Tablet en &lt;a href="http://wintablet.info/"&gt;este blog&lt;/a&gt;.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Cochin;"&gt;Por lo tanto, la entrada del título la podéis leer &lt;a href="http://wintablet.info/2011/09/aventuras-de-un-instalador-de-windows-8/"&gt;aquí&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=200750" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/rfog/archive/tags/Sistemas+Operativos/default.aspx">Sistemas Operativos</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/windows/default.aspx">windows</category></item><item><title>WinTablet.info: Windows 8 y los Tablet</title><link>http://geeks.ms/blogs/rfog/archive/2011/09/25/wintablet-info-windows-8-y-los-tablet.aspx</link><pubDate>Sun, 25 Sep 2011 09:43:55 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:200711</guid><dc:creator>Rafael Ontivero</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/rsscomments.aspx?PostID=200711</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/commentapi.aspx?PostID=200711</wfw:comment><comments>http://geeks.ms/blogs/rfog/archive/2011/09/25/wintablet-info-windows-8-y-los-tablet.aspx#comments</comments><description>&lt;p style="text-align:justify;text-indent:18px;margin:0px;"&gt;Ya sabéis que me gusta meter baza en los nuevos productos de Microsoft más que a un pollo la mierda. No creo que os pille de sorpresa, pero en este caso estamos hablando de caviar Beluga ya que encima tenemos dominio y web propia.&lt;/p&gt;
&lt;p style="text-align:justify;text-indent:18px;margin:0px;"&gt;Sí, lo que leéis, el RFOG ha sido invitado a participar en un &lt;a href="http://wintablet.info/"&gt;blog&lt;/a&gt; de temática exclusiva sobre Windows 8 y su orientación hacia los Tablet. Sin restricción de temática, sin censura y con libertad total de publicar lo que quiera (no, que no se os abran los ojos como platos, de momento no voy a poner porno).&lt;/p&gt;
&lt;p style="text-align:justify;text-indent:18px;margin:0px;"&gt;Bueno, después de la presentación chula, vienen los detalles. Nos hemos juntado cuatro interfectos de entre los indeseables de la internet y que encima somos granos en el culo de las grandes corporaciones y nos hemos decidido a poner los puntos sobre las íes en el tópico descrito más arriba. La idea fue originalmente de &lt;a href="http://tinta-e.blogspot.com/"&gt;Juan Luis Chulilla&lt;/a&gt;, quien la propuso a &lt;a href="http://ultramobilepc-tips.blogspot.com/"&gt;Ctitanic&lt;/a&gt; y a mi. No hace falta decir que tardamos 100 milisegundos en decir que sí, que es el tiempo medio de reacción entre el ojo y el cerebro (para aquellos que tengan neuronas, claro). Luego se nos unió Mahjong, y así formamos el &lt;em&gt;cuarteto concertante&lt;/em&gt; (la referencia es de Verne).&lt;/p&gt;
&lt;p style="text-align:justify;text-indent:18px;margin:0px;"&gt;Dicho y hecho, sólo faltaba arremangarse y empezar a escribir, así que el sitio ya contiene entradas chulas, aunque todavía anda algo en obras y debéis poneos casco no sea que se os caiga algún ladrillo en la cocorota.&lt;/p&gt;
&lt;p style="text-align:justify;text-indent:18px;margin:0px;"&gt;Para aquellos que todavía estéis en Babia, os comento. Windows 8 es la siguiente versión de Windows 7, y viene en &lt;em&gt;modo dual&lt;/em&gt;. Es decir, que trae dos&lt;em&gt;Shell&lt;/em&gt; de usuario. La primera es la que todos ya conocemos, con su menú inicio, su explorador y su Internet Explorer, con las &lt;em&gt;mejoras&lt;/em&gt; pertinentes. Lo pongo en cursiva porque hay mucha gente a la que la &lt;em&gt;Ribbon&lt;/em&gt; en el Explorador no les mola nada… a mí sí.&lt;/p&gt;
&lt;p style="text-align:justify;text-indent:18px;margin:0px;"&gt;La segunda interfaz se llama Metro y está destinada a los Tablet, sean del tipo que sean. Si habéis visto Windows Phone ya tenéis una idea de qué es. Como siempre con las tecnologías de Microsoft, debajo hay más de lo que parece, y también ahora ocurre así.&lt;/p&gt;
&lt;p style="text-align:justify;text-indent:18px;margin:0px;"&gt;A simple vista Metro parece nada más que una interfaz de apretar botones, pero dentro existe un motor basado en DirectX muy potente e interesante, envuelto en una capa que se programa con C# y una variante de C++/CLI. Y no es .NET, es nativa. De esto os contaré más aquí, pero en otro momento.&lt;/p&gt;
&lt;p style="text-align:justify;text-indent:18px;margin:0px;"&gt;Finalmente también hay una &lt;em&gt;preview&lt;/em&gt; de la siguiente versión de Visual Studio que es capaz de generar ejecutables para esta nueva plataforma, y de esto también hablaré por aquí.&lt;/p&gt;
&lt;p style="text-align:justify;text-indent:18px;margin:0px;"&gt;Bueno, lo dicho, daos una vuelta por &lt;a href="http://wintablet.info/"&gt;WinTablet.info&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=200711" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/rfog/archive/tags/c_2B002B002F00_cli/default.aspx">c++/cli</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Sistemas+Operativos/default.aspx">Sistemas Operativos</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/rationale/default.aspx">rationale</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/hardware/default.aspx">hardware</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Biblioteca+de+C_2B002B00_/default.aspx">Biblioteca de C++</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/C_2B002B00_+Builder/default.aspx">C++ Builder</category></item><item><title>OS X Lion: Activar la repetición de teclas</title><link>http://geeks.ms/blogs/rfog/archive/2011/07/31/os-x-lion-activar-la-repetici-243-n-de-teclas.aspx</link><pubDate>Sun, 31 Jul 2011 18:38:17 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:198604</guid><dc:creator>Rafael Ontivero</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/rsscomments.aspx?PostID=198604</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/commentapi.aspx?PostID=198604</wfw:comment><comments>http://geeks.ms/blogs/rfog/archive/2011/07/31/os-x-lion-activar-la-repetici-243-n-de-teclas.aspx#comments</comments><description>&lt;p&gt;Sin muchas ganas de escribir una nueva entrada, voy a poner algo interesante que corrige una de las cagadas de OS X Lion: la repetición de las teclas que llevan caracteres especiales.&lt;/p&gt;
&lt;p&gt;Como os comenté en la &lt;a href="http:///blogs/rfog/archive/2011/07/23/os-x-lion-mucho-rugido-y-pocas-nueces.aspx"&gt;entrada anterior,&lt;/a&gt; Apple la había cagado a base de bien con el tema de la repetición de teclas. Supongo que para un usuario Ruso o Báltico, la cosa puede resultarle interesante, pero no para la mayoría del resto del mundo.&lt;/p&gt;
&lt;p&gt;Si la opción fuera configurable no habría problema: se cambia y ya está, pero no lo es, o al menos no lo es de forma sencilla ya que no aparece por ningún lado en la configuración.&lt;/p&gt;
&lt;p&gt;Sin embargo sí que existe una forma de volver la cosa a su estado original, y es mediante un comando tecleado en el terminal de OS.&lt;/p&gt;
&lt;p&gt;Abrís la aplicación de terminal (tal y como se escribe), y pegáis el texto:&lt;/p&gt;
&lt;p style="color:#333333;font-family:Helvetica, Arial, sans-serif;font-size:15px;line-height:20px;"&gt;&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;&lt;font color="#333333" face="Helvetica, Arial, sans-serif"&gt;&lt;span style="font-size:15px;line-height:20px;"&gt;defaults write -g ApplePressAndHoldEnabled -bool false&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;

  &lt;p&gt;&lt;font color="#333333" face="Helvetica, Arial, sans-serif"&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Y pulsáis enter. Ya está cambiado. No sé si es necesario reiniciar o cerrar la sesión abierta porque simplemente lo piqué y seguí con el MAC encendido y no tuve oportunidad de comprobarlo hasta que reinicié al día siguiente.&lt;/p&gt;
&lt;p&gt;Y es que, a veces, sólo a veces, esas webs sensacionalistas pro Apple sirven para algo, ya que de esto me enteré &lt;a href="http://www.applesfera.com/curiosidades/os-x-lion-nueva-manera-de-acentuar-palabras-e-introducir-simbolos"&gt;aquí&lt;/a&gt;.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=198604" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/rfog/archive/tags/Sistemas+Operativos/default.aspx">Sistemas Operativos</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/tips/default.aspx">tips</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Apple/default.aspx">Apple</category></item><item><title>OS X LION: Mucho rugido y pocas nueces</title><link>http://geeks.ms/blogs/rfog/archive/2011/07/23/os-x-lion-mucho-rugido-y-pocas-nueces.aspx</link><pubDate>Sat, 23 Jul 2011 15:19:05 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:198260</guid><dc:creator>Rafael Ontivero</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/rsscomments.aspx?PostID=198260</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/commentapi.aspx?PostID=198260</wfw:comment><comments>http://geeks.ms/blogs/rfog/archive/2011/07/23/os-x-lion-mucho-rugido-y-pocas-nueces.aspx#comments</comments><description>&lt;p&gt;Como ya sabréis, hace un par de días que ha salido Lion, la nueva encarnación de MAC OS X de Apple. Tras estar usándolo un poco, estas son mis conclusiones.&lt;/p&gt;  &lt;p&gt;Como ya nos tiene acostumbrados el &lt;i&gt;mago &lt;/i&gt;Steve, mucho ruido y pocas nueces. Lion no es más que una lavada de cara de Snow Leopard, con ciertas concesiones a la usabilidad y a los usuarios que no han tocado en su *** vida un ordenador o que vienen de manejar su iPhone, iPad, etc…&lt;/p&gt;  &lt;p&gt;Sigue careciendo de cosas evidentes por sí mismas, como una combinación de teclas global para llamar al Finder igual que Win+E llama a la Shell de Windows. De verdad, os lo aseguro, no me entra en la cabeza cómo los lumbreras de Apple no se han percatado de ello. (Disclaimer para fanboys y demás morralla: CMD-Espacio y&amp;#160; ALT-CMD-Espacio, ya me las conozco, pero navegad con ellas por los archivos).&lt;/p&gt;  &lt;p&gt;La chorrada más gorda de todas las novedades que trae es el famoso Launchpad que, hablando en plata, es una mierda pinchada en un palo. No por el concepto, sino por la implementación. Está bien eso de enseñar los iconcillos de las aplicaciones todos a una, como Fuenteovejuna, pero la implementación deja mucho que desear porque no se puede manejar con el teclado. Lo único que puedes hacer es cerrarlo con la tecla de escape o cambiar de página con los cursores.&lt;/p&gt;  &lt;p&gt;Si bien el tema del Launchpad puede ser algo relativo a gustos, el de la repetición del teclado es de imbéciles. Sí, de imbéciles. No sé a qué lumbreras de Apple se le habrá ocurrido eso, pero habría que condenarlo a no acercarse jamás a un ordenador el resto de su triste y miserable vida.&lt;/p&gt;  &lt;p&gt;En Lion, &lt;b&gt;¡no hay repetición de tecla!&lt;/b&gt; Es decir, si tu vas a escribir una X y muchas D seguidas, te vas a cansar de mantener la D apretada. Lo que te va a aparecer es el *** globito de mierda como en iOS para que elijas, pulsando un número la tecla especial que has decidido poner. &lt;/p&gt;  &lt;p&gt;Vamos a ver una cosa. Hasta los teclados de los portátiles llevan los acentos y demás teclas. De hecho, todos los teclados de todos los ordenadores de Apple son prácticamente idénticos. ¿Por qué cojones ponen eso? Y lo peor de todo es que no puedes volver atrás.&lt;/p&gt;  &lt;p&gt;Otra de las &lt;i&gt;features&lt;/i&gt; que se han estado cantando a bombo y platillo es lo de que el ordenador se abre igual que se cerró: &lt;b&gt;¡Mentira cochina!&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Me explico. Abres Word, editas un documento y lo cierras con CMD-W. Abres iTunes, sincronizas tu iPhone y lo cierras de la crucecita. Haces lo mismo con más programas. Digamos que dejas Mail viéndose en la pantalla. Entonces reinicias tu MAC. Cuando se vuelve a cargar, se supone que vas a tener Mail en pantalla y los demás programas cargados y residentes.&lt;/p&gt;  &lt;p&gt;¡Pues no! ¡Se abren absolutamente todos como si hubieran estado abiertos antes! Por lo que tendrás que cerrarlos de nuevo, uno a uno menos Mail. Lo dicho: una mierda completamente inútil.&lt;/p&gt;  &lt;p&gt;Mail, el programa de correo de Apple. ¿Cuántas tonterías e imbecilidades se pueden llegar a decir de esa mierda de programa? Os aseguro que muchas, muchísimas. Muy bonito, muy cuco, muy bien organizado, pero como tengas más de diez mensajes leídos en la bandeja de entrada, te las vas a ver putas para encontrar los nuevos no leídos, a no ser que los tengas ordenados por leído… Y no, no vale hacer una carpeta inteligente porque entonces sólo te pone el mensaje sin leer pero sin el contexto de los otros. Y con carpetas IMAP no se entera de que el mensaje está ya leído en una de ellas y lo deja sin leer si aparece en otra, teniendo que volver a marcarlo como leído… Y no hablo del iCal y la mierda esa de simulación de arrancar página que tarda una eternidad… La usabilidad en el *** culo.&lt;/p&gt;  &lt;p&gt;***&lt;/p&gt;  &lt;p&gt;Si no lo sabéis, y a falta del Air, que tendré en breve, tengo dos iMAC. El primero de todos es un Mid 2008 (para aquellos que no estén al tanto, un Core2Duo con 4 GB de RAM y monitor de 24”). El segundo es uno nuevo, el Mid 2011 pero con esteroides: i7, 27” de pantalla y 12 GB de RAM (compradas aparte). Con un segundo monitor de 24” normal y corriente y el MY BOOK STUDIO EDITION II que ya tenía como disco secundario.&lt;/p&gt;  &lt;p&gt;La bajada del león fue rápida, y tras copiarlo a un USB, empecé la actualización de ambos equipos a la vez. Mientras el antiguo estuvo listo en cosa de media hora, el nuevo, sí, el nuevo, tardó cerca de una. Mientras que el viejo iba como una moto después de actualizar, el nuevo se colgaba y hacía cosas rarísimas. Debería haber sido justo al revés. &lt;/p&gt;  &lt;p&gt;Lo cierto es que el sistema me quedó prácticamente inusable, con extraños cuelgues de aplicaciones e incluso del sistema entero. De hecho hubo momentos en los que ni funcionaba ni internet. Al final, siguiendo documentos no oficiales (porque los oficiales te dicen que instales Snow Leopard y luego Lion encima, aunque el error se presente al hacer eso mismo –y que conste que no soy el único que está teniendo serios problemas con la instalación), me hice un DVD e instalé en limpio. Ahora sí, ahora va todo bien.&lt;/p&gt;  &lt;p&gt;Otras cosas como Airdrop sí que están bien, y ya podría Microsoft aprender algo de Apple, porque por ejemplo su Homegroup apesta… cuando funciona, que no siempre lo hace. Y sí, la nueva versión de OS X tiene sus cosas guapas que aumentan la productividad, pero de eso ya han hablado otros largo y tendido.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=198260" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/rfog/archive/tags/escariotrop_26002300_237_3B00_as+gimn_26002300_233_3B00_sicas/default.aspx">escariotrop&amp;#237;as gimn&amp;#233;sicas</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Sistemas+Operativos/default.aspx">Sistemas Operativos</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/chapuzas/default.aspx">chapuzas</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/hardware/default.aspx">hardware</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Apple/default.aspx">Apple</category></item><item><title>El fanboy rabioso (o la obsolescencia programada de Apple)</title><link>http://geeks.ms/blogs/rfog/archive/2011/03/25/el-fanboy-rabioso-o-la-obsolescencia-programada-de-apple.aspx</link><pubDate>Fri, 25 Mar 2011 19:38:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:191067</guid><dc:creator>Rafael Ontivero</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/rsscomments.aspx?PostID=191067</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/commentapi.aspx?PostID=191067</wfw:comment><comments>http://geeks.ms/blogs/rfog/archive/2011/03/25/el-fanboy-rabioso-o-la-obsolescencia-programada-de-apple.aspx#comments</comments><description>&lt;p&gt;Si os pens&amp;aacute;is que porque el RFOG se haya hecho &lt;i&gt;fanboy&lt;/i&gt;
 de MAC va a empezar a hablar bien de esa plataforma est&amp;aacute;s en un craso, qu&amp;eacute; digo craso, &lt;i&gt;cras&amp;iacute;simo&lt;/i&gt;
 error. No s&amp;oacute;lo voy a hablar mal, sino que voy a hablar muy mal.&lt;/p&gt;
&lt;p&gt;Hoy le toca a la obsolescencia programada. Todos sab&amp;eacute;is lo que es. Eso en Apple no existe. Salvo contadas ocasiones en las que el producto ha salido una pifia (me vienen a las mientes ciertas versiones del iPod), los productos de Apple son muy duraderos, tienen una gran calidad y siempre funcionan como el primer d&amp;iacute;a. Y cuando no es as&amp;iacute; y tu aparato no cumple con lo esperado, en general Apple suele solucionarte el problema incluso estando fuera de garant&amp;iacute;a y de &lt;i&gt;Apple Care&lt;/i&gt;
 siempre y cuando los defectos sean evidentes (vamos, que no te presentes con un MacPro oxidado por el agua del mar y pretendas que te lo cambien por uno nuevo)&amp;hellip;&lt;/p&gt;
&lt;p&gt;&amp;iquest;D&amp;oacute;nde est&amp;aacute;, pues, la obsolescencia programada de la plataforma Apple?&lt;/p&gt;
&lt;p&gt;Pues ve&amp;aacute;moslo.&lt;/p&gt;
&lt;p&gt;***&lt;/p&gt;
&lt;p&gt;Lo primero que nos llama la atenci&amp;oacute;n es el hecho de que de vez en cuando, y a veces sin un motivo demasiado justificado, hacen borr&amp;oacute;n y cuenta nueva. S&amp;iacute;, ya s&amp;eacute;, ayer dec&amp;iacute;a que eso era una ventaja. Vale. Pero tambi&amp;eacute;n es un inconveniente, y este caso s&amp;oacute;lo se jode al usuario, que tiene que comprarse un nuevo equipo porque el viejo se ha quedado obsoleto y ya no funcionan los nuevos programas.&lt;/p&gt;
&lt;p&gt;No me refiero a que el equipo se quede viejo por avances de la t&amp;eacute;cnica, me refiero a la obsolescencia programada: simplemente iOS 4.3 no est&amp;aacute; disponible para un iPod de segunda generaci&amp;oacute;n sin haber ninguna justificaci&amp;oacute;n&amp;hellip; &lt;/p&gt;
&lt;p&gt;Otro caso es el de iMovie, que no funciona en un iPad de primera generaci&amp;oacute;n cuando los usuarios han demostrado que s&amp;iacute; lo hace y que simplemente a Apple no le sale de los cojones permitir la instalaci&amp;oacute;n ah&amp;iacute; con la excusa del rendimiento.&lt;/p&gt;
&lt;p&gt;Recuerdo una de las &amp;uacute;ltimas betas de Xcode 4, justo antes de su versi&amp;oacute;n final. Resulta que se equivocaron y s&amp;oacute;lo se instalaba en Lion (tambi&amp;eacute;n en beta). Es decir, Snow Leopard no &lt;i&gt;pod&amp;iacute;a&lt;/i&gt;
 ejecutar Xcode 4 por alg&amp;uacute;n tipo de esot&amp;eacute;rica limitaci&amp;oacute;n&amp;hellip; Unas horas despu&amp;eacute;s sacaron una versi&amp;oacute;n que &lt;b&gt;s&amp;iacute; &lt;/b&gt;
pod&amp;iacute;a hacerlo. &amp;iquest;Cu&amp;aacute;l era, pues, el impedimento? Para m&amp;iacute; estuvo claro: Apple quiere que te compres su Lion y abandones el Snow&amp;hellip; porque, de nuevo, Lion no se ejecuta en equipos antiguos y as&amp;iacute; actualizas. Pero resulta que Lion &lt;b&gt;s&amp;iacute;&lt;/b&gt;
 que se ejecuta (y encima perfectamente) en esos ordenadores (como se ha &lt;a href="http://www.applesfera.com/apple/mac-os-x-lion-funciona-con-los-procesadores-core-duo"&gt;demostrado&lt;/a&gt;
)&amp;hellip;&lt;/p&gt;
&lt;p&gt;O en otras palabras: he decidido obsoletar ciertos equipos porque s&amp;iacute;, porque yo lo valgo, y si quieres el Lion, o el iOS 4.3, o el iMovie, o lo que sea, pasa por caja y actualiza tu equipo. Obsolescencia programada a m&amp;aacute;s no poder.&lt;/p&gt;
&lt;p&gt;***&lt;/p&gt;
&lt;p&gt;En relaci&amp;oacute;n a este tema hay otro que quiero creer es incidental y no hecho exprofeso. Tu iCosa funciona a las mil maravillas. Suave como la seda, cumple su funci&amp;oacute;n perfectamente dentro de los l&amp;iacute;mites marcados. Si alguna aplicaci&amp;oacute;n da un poco por culo, seguro que pronto sacan una nueva versi&amp;oacute;n con las mejoras pertinentes. Por si no lo sab&amp;iacute;as, las iCosas (y los MAC tambi&amp;eacute;n), env&amp;iacute;an silenciosamente y sin dec&amp;iacute;rselo a nadie a Apple informaci&amp;oacute;n sobre fallos y otras zarandajas, pero claro, cuando lo hace Microsoft se pone el grito en el cielo, pero cuando lo hace Apple no. &lt;/p&gt;
&lt;p&gt;&amp;iquest;C&amp;oacute;mo puedes comprobarlo? Instala un &lt;i&gt;firewall&lt;/i&gt;
 en condiciones y ver&amp;aacute;s cu&amp;aacute;ntos programas de las tripas de un MAC intentan conectarse con Apple. Pr&amp;aacute;cticamente casi todos y pr&amp;aacute;cticamente de forma continua desde que haces login.&lt;/p&gt;
&lt;p&gt;Dec&amp;iacute;a que tu iCosa funciona perfectamente. Pero se acerca una &lt;i&gt;keynote&lt;/i&gt;
 de Apple. Y de repente el aparato empieza a hacer &lt;i&gt;cosas raras&lt;/i&gt;
. No me refiero a que deje de funcionar, o se cuelgue, no. Me refiero a que de repente los programas ya no van tan fluidos y hay como ciertos &amp;ldquo;enganches&amp;rdquo;. Yo me di cuenta con el iPad. Justo unos d&amp;iacute;as antes de la presentaci&amp;oacute;n de su segunda versi&amp;oacute;n, empez&amp;oacute; con el baile. Y con &amp;eacute;l continua.&lt;/p&gt;
&lt;p&gt;Claro, claro, eso no aparece como por arte de magia. Aparece cuando actualizas una nueva versi&amp;oacute;n de iOS, o cuando lo conectas al iTunes y lo actualizas. Recuerdo que con mi iPod de segunda generaci&amp;oacute;n pas&amp;oacute; lo mismo cuando sali&amp;oacute; la tercera&amp;hellip;&lt;/p&gt;
&lt;p&gt;Me gustar&amp;iacute;a pensar que no es intencionado, que simplemente las nuevas mejoras del sistema hacen que este vaya algo peor&amp;hellip; aunque sean mejoras. Tambi&amp;eacute;n podr&amp;iacute;a tratarse de fragmentaci&amp;oacute;n en el sistema de ficheros o en la memoria, pero si lo restauras y sigue haci&amp;eacute;ndolo entonces no se debe a eso.&lt;/p&gt;
&lt;p&gt;En fin, que sin quedar demostrado del todo, para mi es una causa m&amp;aacute;s. Imaginaos que ten&amp;eacute;is la &lt;i&gt;golica&lt;/i&gt;
 de la nueva versi&amp;oacute;n, que encima te la presentan como la rehostia de mejor, m&amp;aacute;s r&amp;aacute;pida, m&amp;aacute;s guay del Paraguay y m&amp;aacute;s &lt;i&gt;c00l&lt;/i&gt;
, y de repente tu iCosa ya no funciona como antes&amp;hellip;&lt;/p&gt;
&lt;p&gt;***&lt;/p&gt;
&lt;p&gt;&amp;iquest;Por qu&amp;eacute; son tan cortos los cables USB de las iCosas? &amp;iquest;Por qu&amp;eacute; se rompen tan f&amp;aacute;cilmente? &amp;iquest;Por qu&amp;eacute; cada cierto tiempo mueven una pesta&amp;ntilde;ita unos mil&amp;iacute;metros para que las nuevas iCosas no encajen en los cables de las viejas iCosas (caso de los iPad 1 y 2)?&lt;/p&gt;
&lt;p&gt;Lo primero se debe a que el cobre est&amp;aacute; caro&amp;hellip; &amp;iquest;o ser&amp;aacute; a que si el cable es corto sufrir&amp;aacute; m&amp;aacute;s tirones y se romper&amp;aacute; antes? De lo segundo ni hablemos: es evidente por s&amp;iacute; mismo.&lt;/p&gt;
&lt;p&gt;Con m&amp;aacute;s morro que nada, cada cierto tiempo, si quieres las nuevas iCosas, tendr&amp;aacute;s que comprarte los nuevos complementos que s&amp;oacute;lo se diferencian de los anteriores en la &lt;i&gt;pesta&amp;ntilde;ita que ya no engancha bien&lt;/i&gt;
, al econ&amp;oacute;mico precio de 30 euros un cable que cuesta medio&amp;hellip;&lt;/p&gt;
&lt;p&gt;***&lt;/p&gt;
&lt;p&gt;&amp;iquest;Os hab&amp;eacute;is preguntado por qu&amp;eacute; los auriculares de las iCosas son tan inc&amp;oacute;modos, con esa forma tan grande para unos o&amp;iacute;dos de tama&amp;ntilde;o medio? Yo s&amp;iacute;. Porque en la tienda venden otros mucho m&amp;aacute;s c&amp;oacute;modos&amp;hellip; y bastante m&amp;aacute;s caros. Menos mal que el conector es m&amp;aacute;s o menos est&amp;aacute;ndar y siempre puedes usar unos comprados en cualquier sitio. Aqu&amp;iacute; no aplican el concepto de &lt;i&gt;obsolescencia programada&lt;/i&gt;
, sino el de te vendo algo que no puedes usar para que todav&amp;iacute;a te gastes m&amp;aacute;s dinero, que viene a ser m&amp;aacute;s o menos lo mismo.&lt;/p&gt;
&lt;p&gt;***&lt;/p&gt;
&lt;p&gt;Esto lo conozco por terceras partes, porque en mi caso no suelo usar muchas aplicaciones diferentes en mis iCosas. El hecho es que hay programas que no funcionan en seg&amp;uacute;n qu&amp;eacute; versiones de iOS, y justo al rev&amp;eacute;s: si quieres tener tal o cual programa, tendr&amp;aacute;s que mantener una versi&amp;oacute;n obsoleta, con los problemas de seguridad que eso supone. Aunque bueno, casi da igual, ya que los productos de Apple &lt;a href="http://www.elladodelmal.com/2011/03/los-mensajes-de-apple-en-seguridad.html"&gt;no es que lo sean mucho&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;El mayor problema viene cuando has actualizado por error, o simplemente porque ignoras que tu querido programa es incompatible, y entonces la has jodido bien jodida porque no existe manera documentada para volver hacia atr&amp;aacute;s en tu iCosa excepto que tengas una copia de seguridad&amp;hellip; que, para ser sincero, muy pocos tenemos si no es la que iTunes nos hace por defecto, y ya se encarga &amp;eacute;l de dejarnos s&amp;oacute;lo la &amp;uacute;ltima&amp;hellip;&lt;/p&gt;
&lt;p&gt;Bueno&amp;hellip; estoooo&amp;hellip; &amp;iquest;existe alguna forma de mantener una copia de seguridad de tus iCosas aparte de la que hace el propio iTunes? De nuevo a pasar por el aro. &lt;/p&gt;
&lt;p&gt;En el caso del OS X es algo diferente, y aqu&amp;iacute; s&amp;iacute;, aqu&amp;iacute; s&amp;iacute; que puedes volver hacia atr&amp;aacute;s cuando quieras&amp;hellip; mientras a Apple le salga de las narices mantener otros programas marcados como compatibles con versiones antiguas del sistema operativo que, como ya hemos demostrado m&amp;aacute;s arriba, nada tiene que ver con que funcionen o no&amp;hellip;&lt;/p&gt;
&lt;p&gt;***&lt;/p&gt;
&lt;p&gt;NOTA: &lt;a href="http://kindleman.blogspot.com/"&gt;aqu&amp;iacute;&lt;/a&gt;
 ten&amp;eacute;is otra entrada m&amp;iacute;a relacionada en cierta medida con &amp;eacute;sta.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=191067" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/rfog/archive/tags/Sistemas+Operativos/default.aspx">Sistemas Operativos</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/licencias/default.aspx">licencias</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/chapuzas/default.aspx">chapuzas</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/delito/default.aspx">delito</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/hardware/default.aspx">hardware</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Apple/default.aspx">Apple</category></item><item><title>MAC Rationale vs Windows Rationale en el desarrollo</title><link>http://geeks.ms/blogs/rfog/archive/2011/03/19/mac-rationale-vs-windows-rationale-en-el-desarrollo.aspx</link><pubDate>Sat, 19 Mar 2011 14:42:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:190697</guid><dc:creator>Rafael Ontivero</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/rsscomments.aspx?PostID=190697</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/commentapi.aspx?PostID=190697</wfw:comment><comments>http://geeks.ms/blogs/rfog/archive/2011/03/19/mac-rationale-vs-windows-rationale-en-el-desarrollo.aspx#comments</comments><description>&lt;p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Todav&amp;iacute;a estoy leyendo temas generales sobre el
desarrollo en MAC, de hecho a&amp;uacute;n no he pasado de los manuales que describen las
tecnolog&amp;iacute;as y los diferentes bloques en que se divide el desarrollo en MAC. &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;No obstante me ha surgido una curiosa
reflexi&amp;oacute;n que quiero compartir con vosotros. Todav&amp;iacute;a no estoy muy seguro de que
sea completamente cierta, porque todav&amp;iacute;a no he profundizado en los conceptos
MAC y lo que he le&amp;iacute;do tiene m&amp;aacute;s que ver con la &lt;i&gt;publicidad&lt;/i&gt; del desarrollo en esta plataforma que otra cosa, pero
creo que tiene muchos visos de ser real como la vida misma.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Y lo m&amp;aacute;s curioso de todo es que tiene mucho
que ver con el desarrollo Windows, y m&amp;aacute;s cercanamente al de las tecnolog&amp;iacute;as
.NET. Cuanto m&amp;aacute;s leo sobre Cocoa, QuickTime (que no s&amp;oacute;lo es un programa sino una
tecnolog&amp;iacute;a), etc., m&amp;aacute;s me parece estar leyendo sobre .NET, o m&amp;aacute;s bien sobre la
forma en la que se publicita .NET.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Se habla de grandes grupos de tecnolog&amp;iacute;as
orientadas a objetos, con grandes rendimientos y grandes facilidades ofrecidas
a los desarrolladores. Calcado uno de otro. Ahora habr&amp;aacute; que ver la pura
realidad.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Del lado .NET ya lo tengo claro: mucho ruido y
pocas nueces, al menos para desarrollo de sistemas. Quiero creer que del lado
MAC no ser&amp;aacute; igual, pero cualquiera sabe. Ya os ir&amp;eacute; diciendo.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;***&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Pero no, no es sobre eso sobre lo que os
quer&amp;iacute;a hablar. Veamos por un lado la arquitectura l&amp;oacute;gica expresada por los
manuales de MAC, que creo es m&amp;aacute;s real que la dicha por los de Windows.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Debajo del todo un ordenador de Apple hay un
Kernel BSD que no es otra cosa que una variante de UNIX igual que es Linux. Y
luego hay un sistema POSIX de toda la vida que de nuevo tiene que ver con el
mundo UNIX (que viene a ser como una serie de servicios que simplifican el
acceso al n&amp;uacute;cleo del sistema igual que una consola de comandos en Windows
permite trabajar con ficheros sin tener que tocarlo).&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Aunque Apple lo ha llamado Darwin, no deja de
ser lo que es, y de hecho Apple &lt;a href="http://www.opensource.apple.com/"&gt;publica
todo el c&amp;oacute;digo fuente&lt;/a&gt; de ello. Al ser un est&amp;aacute;ndar debe estar separado.
Realmente est&amp;aacute; separado. &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Encima de eso hay una serie de capas, Cocoa,
Carbon, QuickTime. M&amp;aacute;s o menos. Pero lo que es cierto es que esos subsistemas
est&amp;aacute;n completamente separados del n&amp;uacute;cleo o m&amp;aacute;s bien &lt;i&gt;encima&lt;/i&gt; de &amp;eacute;l.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;En Windows creo que no es as&amp;iacute;. En su momento,
en las versiones NT originales s&amp;iacute; que lo era (o al menos as&amp;iacute; se publicitaba).
Recordemos la capa HAL que pod&amp;iacute;a ser para un mont&amp;oacute;n de procesadores y luego el
sistema NT Executive nativo, que corr&amp;iacute;a sobre dicha capa. Pero ahora, despu&amp;eacute;s
de la unificaci&amp;oacute;n con la plataforma 9x en lo que fue Windows XP dudo mucho que
siga si&amp;eacute;ndolo.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Porque ahora no hay soporte para ARM, ni para
SuperH, ni para PPC. S&amp;oacute;lo Intel x86 y dando gracias. Me juego un gallifante a
que ahora est&amp;aacute; todo mezclado y revuelto (y de ah&amp;iacute; los problemas de Microsoft
para volver a a&amp;ntilde;adir soporte para ARM). Porque si no fuera as&amp;iacute; no se entender&amp;iacute;a
c&amp;oacute;mo puede funcionar el sistema de v&amp;iacute;deo sobre Win32 accediendo al driver que
est&amp;aacute; en el n&amp;uacute;cleo (s&amp;iacute;, ya s&amp;eacute;, anillos, &lt;i&gt;gateways&lt;/i&gt;
y todo eso, pero no voy por ah&amp;iacute;)&amp;hellip; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Bueno, quiz&amp;aacute;s en esto me equivoque, pero si
alguien me explicara c&amp;oacute;mo el hecho de reproducir un v&amp;iacute;deo dentro de un
navegador pueda generar una BSOD estando los sistemas separados, que me lo
diga. Porque me ha pasado. Y no una, sino varias veces. Putas ATI.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;De todos modos luego veremos alguna raz&amp;oacute;n m&amp;aacute;s
de ello y quiz&amp;aacute;s uno de los puntos m&amp;aacute;s fuertes de por qu&amp;eacute; Microsoft est&amp;aacute; un
poco contra la espada y la pared.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;***&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Apple ya lo ha hecho al menos dos veces y lo
va a hacer una m&amp;aacute;s. En x64 no va a haber Carbon, que es como se le llama al
subsistema que soporta programar en C y C++ de forma nativa. En x64 s&amp;oacute;lo vamos
a tener Cocoa (Objetive-C y Objetive-C++) y POSIX (que yo sepa). En su momento,
con el cambio de PPC a x86 repiti&amp;oacute; jugada, haciendo borr&amp;oacute;n y cuenta nueva y
forzando a muchas empresas de software a reescribir sus programas. Como cosa
curiosa os dir&amp;eacute; que Apple encarg&amp;oacute; a Adobe la creaci&amp;oacute;n de su iPhoto, iVideo y
dem&amp;aacute;s programas de esa plataforma y Adobe los mand&amp;oacute; a fre&amp;iacute;r esp&amp;aacute;rragos porque
estaban como locos rehaciendo sus propios programas. Creo que hubo otro cambio
rompedor m&amp;aacute;s en los MAC pero ahora no recuerdo qu&amp;eacute;.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Bueno, el meollo del asunto est&amp;aacute; en que a
veces es conveniente hacer borr&amp;oacute;n y cuenta nueva. Hasta donde s&amp;eacute;, el API de MAC
OS X y el de iOS es un API moderno, orientado a objetos y bastante potente. Ya
os dir&amp;eacute; si realmente es cierto cuando me enfangue las manos con ello.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;***&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Ahora volvamos a Windows. Aquellos que hayan
le&amp;iacute;do sobre el tema, sabr&amp;aacute;n lo que son los &lt;i&gt;subsistemas&lt;/i&gt;.
Para los que no, una peque&amp;ntilde;a introducci&amp;oacute;n.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Win32 es un subsistema. POSIX es un subsistema
(o lo era hasta que lo quitaron). De hecho, en las primeras versiones de NT
hab&amp;iacute;a hasta un subsistema OS/2. &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Un subsistema es una API completa que sirve
para que las aplicaciones escritas para tal subsistema se ejecuten en &amp;eacute;l, sean
independientes del n&amp;uacute;cleo y no puedan afectarlo en ninguna manera. Ved la
siguiente imagen de la Wikipedia y fijaros arriba a la derecha.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;&lt;a href="http://upload.wikimedia.org/wikipedia/commons/5/5d/Windows_2000_architecture.svg"&gt;&lt;span&gt;
 
 
  
  
  
  
  
  
  
  
  
  
  
  
 
 
 

 
 
&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;&lt;a target="_blank" href="http://en.wikipedia.org/wiki/File:Windows_2000_architecture.svg"&gt;&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;a target="_blank" href="http://en.wikipedia.org/wiki/File:Windows_2000_architecture.svg"&gt;http://en.wikipedia.org/wiki/File:Windows_2000_architecture.svg&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;B&amp;aacute;sicamente esa deber&amp;iacute;a ser la arquitectura de
Windows. Fijaros tambi&amp;eacute;n en lo que hemos hablado antes sobre el HAL y el
Executive.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;&amp;iquest;Realmente Windows es as&amp;iacute;? Creo que no.
Te&amp;oacute;ricamente si cog&amp;eacute;is un programa 100% compatible POSIX y lo ejecut&amp;aacute;is en
Windows 2000, deber&amp;iacute;a funcionar. &amp;iquest;Lo hace? Pues no. En su momento lo prob&amp;eacute; y no
funcionaba. Tampoco lo hac&amp;iacute;a uno de OS/2 cuando ese subsistema estaba, todav&amp;iacute;a,
presente. No es que no funcionaran bien o hicieran alguna cosa rara, es que la
mayor&amp;iacute;a de veces simplemente no cargaban.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;&amp;iquest;Ha visto alguno de vosotros un Windows NT
ejecutado en un ARM o en un SuperH? Yo no y no creo que funcionen. &amp;iquest;Vais viendo
ya por d&amp;oacute;nde voy?&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Con esto no quiero decir que nunca hayan
llegado a funcionar, lo que quiero decir es que yo al menos no lo consegu&amp;iacute; en
su momento. En un MAC moderno podemos ejecutar pr&amp;aacute;cticamente cualquier comando
t&amp;iacute;pico UNIX, desde un &amp;ldquo;ls&amp;rdquo; hasta un &amp;ldquo;ps&amp;rdquo; pasando por un &amp;ldquo;dd&amp;rdquo; o lo que queramos.
Aparte de los que la propia Apple ha a&amp;ntilde;adido, que hay unos cuantos.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;De nuevo no me malinterpret&amp;eacute;is, en ning&amp;uacute;n
momento estoy diciendo que un MAC sea mejor que un Windows por eso. Simplemente
estoy diciendo que en un MAC s&amp;iacute; que est&amp;aacute;n separadas y presentes las distintas
piezas, o al menos as&amp;iacute; lo creo. De nuevo el tiempo me lo dir&amp;aacute;, y yo a vosotros.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;***&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Y ahora entramos de lleno en .NET. &amp;iquest;Por qu&amp;eacute;
.NET no es un subsistema y sin embargo est&amp;aacute; construido sobre Win32, que no es
precisamente un API limpia y ordenadita sino m&amp;aacute;s bien todo lo contrario? &amp;iquest;Por
qu&amp;eacute; no aprovecha Microsoft la arquitectura de los subsistemas para hacer a .NET
miembro de derecho propio dentro de Windows y no un mero envoltorio que cada
vez se va pareciendo m&amp;aacute;s a lo que envuelve, sobre todo en el tema de la &lt;i&gt;guarrer&amp;iacute;a&lt;/i&gt;?&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Si ya .NET es algo grande en el aspecto del
rendimiento y funcionalidad (comparado con su contrapartida Java y a veces con
el propio Win32), &amp;iquest;qu&amp;eacute; rendimiento no tendr&amp;iacute;a si fuera un subsistema
independiente?&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;&amp;iquest;O es que toda la estructura arquitect&amp;oacute;nica de
Windows es una mentira como un castillo y no puede haber otros subsistemas
cooperando sobre el &lt;i&gt;ejecutivo&lt;/i&gt;? &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Me gustar&amp;iacute;a que alguien me aclarara todo esto,
porque sinceramente no lo entiendo. Yo tengo mi teor&amp;iacute;a, que no voy a exponer
aqu&amp;iacute; no sea que se me acuse de lo que creo no soy, y menos ahora que tengo mi &lt;i&gt;calent&amp;oacute;n&lt;/i&gt; de fanboy&amp;hellip;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=190697" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/rfog/archive/tags/Sistemas+Operativos/default.aspx">Sistemas Operativos</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/windows/default.aspx">windows</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/rationale/default.aspx">rationale</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Win32/default.aspx">Win32</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/MAC/default.aspx">MAC</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Apple/default.aspx">Apple</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Interoperabilidad/default.aspx">Interoperabilidad</category></item><item><title>El driver que se pasó de listo</title><link>http://geeks.ms/blogs/rfog/archive/2011/01/23/el-driver-que-se-pas-243-de-listo.aspx</link><pubDate>Sun, 23 Jan 2011 16:59:33 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:187797</guid><dc:creator>Rafael Ontivero</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/rsscomments.aspx?PostID=187797</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/commentapi.aspx?PostID=187797</wfw:comment><comments>http://geeks.ms/blogs/rfog/archive/2011/01/23/el-driver-que-se-pas-243-de-listo.aspx#comments</comments><description>&lt;p&gt;Siguiendo con el libro de Raymond Chen de la &lt;a href="http://geeks.ms/blogs/rfog/archive/2011/01/18/getwindowtext-en-ropa-interior.aspx"&gt;entrada anterior&lt;/a&gt;, no puedo contenerme de contaros esto, que me ha hecho soltar sonoras carcajadas cuando lo he leído.&lt;/p&gt;  &lt;p&gt;Estamos en los tiempos de Windows 95 y las primeras versiones de DirectX, y una de las funciones internas entre DirectX y los drivers de bajo nivel de los fabricantes de tarjetas con este soporte, es una función que pasa un GUIID que indica una característica. Si la función devuelve TRUE, el driver la soporta. Chen no nos da el nombre real de la misma, pero una de las primeras acciones que se negocian entre ambas partes es determinar qué cosas soporta el driver del fabricante y cuáles no, por lo que la función se usa repetidas veces sobre el driver.&lt;/p&gt;  &lt;p&gt;Pues bien, había un fabricante (no dice quién) que devolvía a todo que sí, pero que luego, al ejecutar las pruebas, petaba miserablemente.&lt;/p&gt;  &lt;p&gt;Un análisis de bajo nivel del driver determinó que la función debía haber sido implementada por el departamento comercial, porque la función era nada más y nada menos que esto (escrito en pseudocódigo):&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;BOOL SoportasEstaCaracteristica(GUIID característica)     &lt;br /&gt;{      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return TRUE;      &lt;br /&gt;}&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Vamos, que dicho driver lo soportaba absolutamente todo.&lt;/p&gt;  &lt;p&gt;Entonces un programador de DirectX cogió una tarjeta de red y miró su UIID, anotándolo. Luego la destrozó a martillazos y la tiró a la basura. De todos es conocido que dichos UIID han de ser únicos de forma global, así que dicho número no iba a ser utilizado nunca jamás.&lt;/p&gt;  &lt;p&gt;A partir de entonces, una de las pruebas entre DirectX y los drivers de los fabricantes, es hacer la siguiente llamada:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;if(SoportasEstaCaracteristica(UIID_que_no_existe)==TRUE)     &lt;br /&gt;{      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //¡Te pillé!      &lt;br /&gt;}&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Si alguien quiere leer la versión original, que difiere por completo en la forma de contar el tema pero no en el contenido en sí, está entre las páginas 322 y 323 del libro.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=187797" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/rfog/archive/tags/escariotrop_26002300_237_3B00_as+gimn_26002300_233_3B00_sicas/default.aspx">escariotrop&amp;#237;as gimn&amp;#233;sicas</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Sistemas+Operativos/default.aspx">Sistemas Operativos</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/windows/default.aspx">windows</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/hardware/default.aspx">hardware</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/humor/default.aspx">humor</category></item><item><title>El RFOG se renueva por dentro y por fuera (y II)</title><link>http://geeks.ms/blogs/rfog/archive/2010/12/18/el-rfog-se-renueva-por-dentro-y-por-fuera-y-ii.aspx</link><pubDate>Sat, 18 Dec 2010 10:10:29 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:186101</guid><dc:creator>Rafael Ontivero</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/rsscomments.aspx?PostID=186101</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/rfog/commentapi.aspx?PostID=186101</wfw:comment><comments>http://geeks.ms/blogs/rfog/archive/2010/12/18/el-rfog-se-renueva-por-dentro-y-por-fuera-y-ii.aspx#comments</comments><description>&lt;h3&gt;Vamos a por una segunda parte no planeada, pero se me quedaron en el tintero algunas cosas y me han surgido otras nuevas, cosa que quiero hacer público por si le pasa a alguien más.&lt;/h3&gt;  &lt;p&gt;&lt;b&gt;Si no te molan mis rollos patateros, el mensaje de la entrada es bien sencillo: Cuando uséis discos SSD, ponedlos en AHCI y usad Windows 7 o Server 2008R2. &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Y ahora sí, ahora a contaros mi vida.&lt;/p&gt;  &lt;p&gt;Bueno, pues una de las cosas en las que ha usado este largo puente, ha sido terminar de remodelarse el despacho en su casa que en su momento fue lugar de trabajo habitual y que está completamente seguro no va a volver a utilizar como tal en una larga temporada. Así que se lo ha montado a su gusto. Os pongo una foto:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/image_5F00_3DF9A35E.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;margin:5px 5px 5px 0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/image_5F00_thumb_5F00_4F3992CF.png" width="244" height="183" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Antes el lugar estaba lleno de estanterías metálicas con material del trabajo. Ahora están en el &lt;i&gt;altillo&lt;/i&gt;, que es como el RFOG llama a una habitación que tiene justo al lado de su terraza. Allí tiene todos sus trastos y en su momento sirvió de almacén local para material de la empresa. Ahora hay más estanterías (las de abajo) y más cosas (también subidas de abajo).&lt;/p&gt;  &lt;p&gt;La idea ha sido meter todo lo que tenía desparramado por la casa en una sola habitación. Es un decir, porque de cuatro habitaciones que tiene la casa (sin contar cuarto de baño ni cocina), el RFOG ocupa dos de ellas con sus cacharros. Su sala de estar (que ahora sí que parece tal), su dormitorio, su biblioteca liberada de cajas y de trastos que han sido subidos al altillo, y su &lt;i&gt;despacho&lt;/i&gt;, que es la habitación que sale en la foto. &lt;/p&gt;  &lt;p&gt;Al fondo a la derecha podéis ver un ordenador viejales (un AMD x2) que funciona de aquella manera y al cual accede por escritorio remoto, y encima su cablemodem y su Time Capsule que hace las veces de Router y de NAS para el MAC. Luego está la mesa del atril, enfrente de la ventana, que es el lugar para leer libracos que pesan mucho.&lt;/p&gt;  &lt;p&gt;Más cerca está su nuevo ordenador (sí, se ve, la caja no es precisamente un primor), y sus dos monitores de 24”. Luego el iMAC, con su mesa y todo. &lt;/p&gt;  &lt;p&gt;Entre medias se puede ver un Kindle 3, un iPad, su HP Touchsmart TM2 en su funda y la caja de uno de sus nuevos discos SSD (que ha usado para ver el modelo exacto y si soporta comandos TRIM, que lo hace). Al fondo a la izquierda se puede ver la estantería que ha dejado y una bicicleta estática… que apenas usa y debería hacerlo con mayor frecuencia.&lt;/p&gt;  &lt;p&gt;Justo al principio de la parte derecha, donde está la bolsa de plástico, hay una mesa más que contiene algo de chatarra (discos duros, un EEPC del año la pera, y sus otros e-readers. En el rincón que no se ve, justo al lado del sillón que asoma a la izquierda, está la chimenea.&lt;/p&gt;  &lt;p&gt;Y bueno, esa es la organización de la habitación del RFOG. &lt;/p&gt;  &lt;p&gt;***&lt;/p&gt;  &lt;p&gt;Al final no va a &lt;i&gt;hackintoshear&lt;/i&gt; su PC, no. Porque se ha informado y ha visto que la cosa no es tan fácil como parece a simple vista. El primer problema es que necesita una BIOS parcheada para su placa base, y las versiones disponibles son bastante antiguas.&lt;/p&gt;  &lt;p&gt;Pero luego no es todo tan fácil como se lo habían propuesto, no. Una vez instalado el Snow Leopard hay que liarse a meterle parches y drivers parcheados para que todo funcione bien, y aun así te garantizan unos cuantos kernels panic periódicos, así que al final lo ha dejado estar, y como tiene su iMAC…&lt;/p&gt;  &lt;p&gt;***&lt;/p&gt;  &lt;p&gt;Cuando el RFOG tenía las máquinas virtuales del trabajo en discos SATA II, las tenía en NTFS comprimidas. Sin que fuera una gran diferencia de rendimiento respecto a no tenerlas, sí que hacían su función. La idea es que, comprimidas, se minimiza el acceso a disco porque se tiene que escribir menos frente al tiempo de proceso de la compresión.&lt;/p&gt;  &lt;p&gt;Cuando separó trabajo de vida personal, y tuvo su ordenador nuevo, instaló sus cuatro discos SSD formando dos RAID 0, uno para la partición de Windows y otro para las máquinas virtuales. &lt;/p&gt;  &lt;p&gt;El rendimiento de lectura era de unos 300 MB/s, y el de escritura de unos 160 MB/s o así, ni de lejos los 500 y 300 respectivamente que deberían haber sido si se combinan las velocidades de los dos discos. Ya sabemos que el rendimiento no es el doble, pero en este caso tan sólo es algo superior al de uno solo.&lt;/p&gt;  &lt;p&gt;No obstante el RFOG estaba bastante contento con su montaje. Y pasaron un par de días en el que continuó personalizando su ordenador, poniendo esto aquí y quitando esto de allá… &lt;/p&gt;  &lt;p&gt;Y de repente el rendimiento se degradó de forma alarmante, sobre todo en la parte de las máquinas virtuales…&lt;/p&gt;  &lt;p&gt;Para evitaros rollos varios sobre cómo encontré la solución y de los pasos que me llevaron a ello, comentaros que el tema tenía que ver con el comando TRIM de los discos SSD…&lt;/p&gt;  &lt;p&gt;***&lt;/p&gt;  &lt;p&gt;Debéis saber que los discos SSD no son más que un conjunto de memorias de tipo FLASH NAND (como las de las PDA, lectores de libros electrónicos, iPad y demás) con una controladora que simula ser un disco duro normal y corriente.&lt;/p&gt;  &lt;p&gt;Lo que no se dice (y que conste que el RFOG lo sabía porque las ha tenido que usar en alguno de sus proyectos, pero fue incapaz de relacionar una cosa con la otra) es que esas memorias, una vez escritas, hay que borrarlas. Es decir, no se puede escribir sobre ellas como en un disco duro, sino que hay que realizar una operación de borrado antes, operación que suele ser bastante lenta comparada con la de escritura y sobre todo la de lectura.&lt;/p&gt;  &lt;p&gt;En otras palabras, la controladora está diseñada para que vaya suministrando al ordenador, cada vez que se quiera escribir algo, sectores frescos y borrados. Hasta aquí bien, lo previsible. El problema viene cuando esos sectores libres se llenan y ya no quedan más. &lt;/p&gt;  &lt;p&gt;No es que el disco se haya llenado, sino que se han usado todas las partes “vírgenes” por decirlo así. Cuando borras un fichero, la controladora de disco no borra la flash pertinente, sino que la marca como borrada y deja de usarla hasta que ya no quedan áreas libres y, cuando el sistema operativo necesita más espacio, procede a borrar las celdas ya usadas antes de darlas, y es cuando se produce la caída de rendimiento &lt;a name="_ftnref1_3551"&gt;[1]&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Hablando en propiedad, esto es una mierda oculta debajo de la alfombra de las SSD, que nadie airea y lo que es peor, nadie estandariza. De todos modos, existe un comando (supongo que será SCSI) que se llama TRIM. Si el sistema operativo, a la vez que borra el archivo, emite dicho comando para los sectores borrados, la controladora SSD añadirá dichos sectores a la lista de pendientes de borrar, y los borrará cuando tenga tiempo. De este modo el rendimiento no cae si tenemos tiempos muertos en el disco, ya que, en principio, todos los sectores libres estarán borrados a la hora de ser usados.&lt;/p&gt;  &lt;p&gt;Windows 7 y su contraparte servidora son los únicos sistemas operativos que, a fecha de hoy, emiten dicho comando si tienen la configuración adecuada activa (que se pone sola si el sistema detecta este tipo de discos). Ni Linux ni Snow Leopard lo soportan, así que ojito con poner discos SSD con estos sistemas operativos, aunque existen soluciones alternativas y bastante chapuceras.&lt;/p&gt;  &lt;p&gt;Pero hay otro problema, y es que el comando TRIM sólo funciona cuando los discos están en modo AHCI, y tampoco todas las controladoras los permiten. Generalmente las últimas versiones de todos los fabricantes lo hacen, incluyendo los ICH10R de Intel, pero es algo a comprobar.&lt;/p&gt;  &lt;p&gt;En RAID no funcionan o más bien son ignorados por el hardware (citando a Tella, parece ser que el código RAID es antiguo, funciona al pelo y nadie se atreve a modificarlo no sea que la caguen), y también en xATA (léase ATA, SATA IDE, eSATA, etc).&lt;/p&gt;  &lt;p&gt;Por lo tanto existe toda una serie de restricciones a la hora de tener discos SSD:&lt;/p&gt;  &lt;p&gt;· Sólo en modo AHCI y con controladoras que soporten el comando TRIM&lt;/p&gt;  &lt;p&gt;· Sólo discos SSD que soporten el comando TRIM (casi todos los de última generación a fecha de hoy).&lt;/p&gt;  &lt;p&gt;· Sólo Windows 7 y Windows Server 2008R2.&lt;/p&gt;  &lt;p&gt;· Si ponéis máquinas virtuales, que los discos estén sin comprimir.&lt;/p&gt;  &lt;p&gt;Esta última recomendación creo que tiene que ver con el hecho de que la tasa de escritura es tan alta, que el tiempo que dura la compresión/descompresión sí que afecta al tiempo total de escritura/lectura.&lt;/p&gt;  &lt;p&gt;No obstante, existen chapuzas para solventar este problema en aquellos discos o montajes que no lo soporten. Por ejemplo, Intel tiene una solución para sus discos y sus controladoras que consiste en tener un programa monitor en background que periódicamente revisa los discos y &lt;i&gt;libera&lt;/i&gt; el espacio no &lt;i&gt;trimmeado&lt;/i&gt;, y también existe algún que otro programa que se supone hace lo mismo. El mayor problema es que es un remiendo más que una solución.&lt;/p&gt;  &lt;p&gt;En mi caso, la imagen de abajo os da una idea del rendimiento de mis discos bajo Windows 7 x64 en un disco recién formateado y 5 repeticiones de un archivo de 1GB:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/image_5F00_51B29EC0.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/image_5F00_thumb_5F00_08AC7CFA.png" width="244" height="220" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Quizás estos enlaces te ayuden a comprobar tu sistema (lo siento, la mayoría están en inglés):&lt;/p&gt;  &lt;p&gt;· &lt;a href="http://www.ghacks.net/2010/09/14/verify-that-trim-is-enabled-in-windows-7/"&gt;http://www.ghacks.net/2010/09/14/verify-that-trim-is-enabled-in-windows-7/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;· &lt;a href="http://en.wikipedia.org/wiki/TRIM"&gt;http://en.wikipedia.org/wiki/TRIM&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;· &lt;a href="http://es.wikipedia.org/wiki/TRIM"&gt;http://es.wikipedia.org/wiki/TRIM&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;· &lt;a href="http://www.anandtech.com/show/2865"&gt;http://www.anandtech.com/show/2865&lt;/a&gt;&lt;/p&gt;  &lt;hr align="left" /&gt;  &lt;p&gt;&lt;a name="_ftn1_3551"&gt;[1]&lt;/a&gt; Bueno, realmente ignoro si primero se emite un comando de borrar para luego ceder el espacio libre, porque dependerá del tipo de flash usado, o si se reescribe sin más, y tampoco es una cosa que me importe lo suficiente como para investigarla. Lo que es cierto es que las reescrituras de celdas ya usadas es más lenta que las de las vírgenes.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=186101" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/rfog/archive/tags/escariotrop_26002300_237_3B00_as+gimn_26002300_233_3B00_sicas/default.aspx">escariotrop&amp;#237;as gimn&amp;#233;sicas</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Sistemas+Operativos/default.aspx">Sistemas Operativos</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/windows/default.aspx">windows</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/hardware/default.aspx">hardware</category></item></channel></rss>