iCloud o la flagrante tontería

¿Sabéis lo que es iCloud? Aunque digáis que sí, me juego un gallifante a que no. ICloud es una mierda envuelta en papel brillante, un trozo de bisutería rodeado de oro del que cagó el moro.

Acabo de comprobarlo. Tengo dos iMAC, un iPad, un iPod y un iPhone (este del curro, que todavía no he actualizado).

Como sabéis, hace unos días salieron todas las actualizaciones de golpe, tanto para el escritorio como para los dispositivos móviles. En mi caso la actualización a Lion 10.7.2 se realizó sin problemas, salvo una notable ralentización del sistema una vez reiniciado, ralentización que parece es temporal ya que ahora funciona todo casi igual de rápido que antes… excepto algún que otro rosetón multicolor de la muette que deja mi i7 de cuatro núcleos dobles y 12 GB de RAM como autista unos segundos… Eso no lo hacía antes de aplicar el parche.

No obstante, la actualización de los dispositivos móviles ha sido más que penosa. En primer lugar falló la descarga y la actualización. Me dio el infausto “internal error” causado por la caída de los servidores de Apple. Hay que joderse, con la expectativa generada y que la empresa no fuera capaz de preverlo con antelación. Joder, hasta Microsoft, el denostado Microsoft, cuando saca un producto nuevo que es muy esperado, aumenta y confía en terceros para las descargas…

Pero no todo termina ahí, no. El iPod se actualizó más o menos bien, a la tercera o la cuarta, pero el iPad hubo de sufrir bastantes intentos. O bien se quedaba autista o bien simplemente fallaba. Como tengo casi 40 GB de datos en él, y la interrupción se producía casi al final, la cosa llevaba su tiempo. Al final, restauración de fábrica, instalación de las aplicaciones y vuelta a meter los datos. Menos mal que soy un chico previsor y los tengo en el MAC, listos en sus carpetas. Eso sí, todavía estoy configurando programas…

¡Quietos parados, fanboys! A ver. Uno mete el iPad, te dice que tiene una actualización, le dices que sí, y a medias falla. No hay otra. No es mi culpa. Es de Apple. Por el motivo que sea. Mi iPad está impoluto, sin Jailbreak, sin cosas raras. Ya que está todo cerrado, debería funcionar a la primera, porque si no me vuelvo a Windows que me deja hacer lo que quiera sin más, y si falla puedo achacarlo a mi ineptitud, no a la de Apple. [Como colofón a esto, no soy el primero que ha tenido problemas. Básicamente la actualización a iOS 5 ha sido pésima. También quiero pensar que no se trata de un intento de que estampe mi iPad 1 contra la pared y me compre un 2.]

***

Bueno, ahora sí, ahora hablemos de la magia de la cosa esa del iCloud. ¿Os pensáis que es una versión mejorada de Dropbox? Juas, ni se le acerca. Hasta el infausto SkyDrive de Microsoft es mejor.

No, no es que vaya mal, es que no cumple mis expectativas. Es una decepción total, más que total, humillante. Lo único que te va a guardar iCloud son los documentos de Pages, de Office (a mi no me lo hace), tus fotos y los calendarios… pero los que crees en la nube. Es decir, la cacareada sincronización sólo se va a producir entre los documentos políticamente correctos que, como siempre, le vengan en gana a Apple. No mis documentos. No mis fotos ya hechas, no los documentos que yo quiera, no.

Y encima, como elemento de obsolescencia programada, si quieres tus documentos en la nube, paga por nuevas versiones que lo soporten. Asco me da. Decepción. Tristeza.

***

En serio, tengo una extraña sensación que me parece que, conforme va pasando el tiempo, es más fuerte y coherente: cuanta más cuota de mercado coge Apple, más se parece a los peores tiempos de Microsoft, con fallos estúpidos, dejadez en atender los requisitos de los clientes y olvidarse de que uno debe estar al loro con las actualizaciones de seguridad y que no debe esperar dos meses a, por ejemplo, invalidar una entidad certificadora. Es una especie de deja-vu, una sensación como de inquietud y de malestar… Ahora que Jobs ya no está, quizás la cosa mejore… aunque lo más seguro es que empeore.

Básicamente, maldita la hora en que me pasé a Apple.

Más sobre C++ AMP

Ya os comentaba en otra entrada del blog algo sobre la nueva biblioteca de paralelismo masivo llamada C++ AMP que traerá la nueva versión de Visual Studio, que ahora, tras el lanzamiento BUILD de hace unos días, se llama Visual Studio 11. Eso no quiere decir que vaya a salir este año, sino que se trata del número de versión. Si Visual Studio 2010 era la 10 (una mera coincidencia), la 11 quizás salga en 2012, más o menos cuando Windows 8.

 

Una pequeñísima introducción sobre C++ AMP

Es una biblioteca de C++ escrita para poder ejecutar código paralelo de forma independiente del hardware y a la vez aprovechar el hardware actual de los PC (léase procesadores multi núcleo y tarjetas de vídeo 3D) sin tener que complicarnos mucho la cabeza. También está pensada para aprovechar los futuros desarrollos de forma transparente para el programador.

También forma parte de Visual C++, por lo que no es necesario nada extra, y se encuentra perfectamente integrada en el producto, por lo que las tareas habituales como compilación y depuración son transparentes para el usuario.

Tan sólo necesita una extensión del compilador de C++ (el famoso restrict del que os hablé en la otra entrada), tiene una sintaxis similar a la de la STL, y es muy fácil trabajar con vectores multidimensionales de forma independiente del hardware.

Para los que no lo sepáis, una de las limitaciones de los procesadores SIMD (Single Instruction Multiple Data), que parafraseado podría ser Una Sola Instrucción Para Muchos Datos, está en su limitación respecto al tamaño de los arrays que pueden ejecutar de una sola tacada. Es decir, imaginaos que tenéis que rotar un cuerpo 3D compuesto por X polígonos. La rotación se puede hacer con una sola instrucción ejecutada para cada uno de los polígonos. Algo así como un bucle for que recorra todos y cada uno de ellos, aplicando la misma transformación. Con un SIMD, uno carga los datos en cada pipeline (o como se llame) y luego ejecuta la instrucción sobre todos ellos a la vez. El problema viene cuando tienes más polígonos que pipelines, y tienes que hacerlo a pedazos. Añade que el tamaño de cada pedazo no solo es diferente para cada procesador SIMD, sino también para cada versión (SIMD=Tarjeta de vídeo 3D). Con esta biblioteca te olvidas de todo eso. Ya lo hace ella sola.

Está basada en DirectCompute, una ampliación añadida a DirectX 11.

 

¿Puedo ejecutar C++ AMP?

Una opción es instalarte todo el tema (compilador, Direct X, etc) y probar a ejecutar un programa. Otra más sencilla es bajarte el programa que se describe en esta entrada y ejecutarlo. No requiere nada especial, y no usa C++ AMP para determinar si tu hardware lo permite o no.

En mi caso, ni el PC del curro, ni la máquina virtual, ni el portátil lo soportan. Pero sí mi PC principal, y seguro que el iMAC con Windows 8 instalado, que va a ser una de mis próximas tareas.

De todos modos, si el programa te dice que NO tienes hardware, no te preocupes, ya que la instalación del SDK de DirectX 11 o de Visual Studio 11 te creará un dispositivo emulado que no va a funcionar muy rápido que digamos, pero que al menos te permitirá ejecutar los programas.

Para aquellos vagos que no quieran leerse la entrada, o que simplemente no sepan inglés, aquí está el programilla.

 

Usando C++ AMP

Necesitas tener Visual Studio 11 en algún Windows (incluyendo la versión 8). Usar esto es tan fácil como incluir amp.h y añadir el espacio de nombre concurrency en tu proyecto. Ya está, ya puedes escribir código funcional.

Uno de los ejemplos más sencillos (y afuncionales) podría ser:

 

#include «stdafx.h»

#include <amp.h>

#include <iostream>

 

using namespace concurrency;

using namespace std;

 

int _tmain(int argc, _TCHAR* argv[])

{

cout<<acos(0.123456)<<endl;

return 0;

}

 

Lo que a todas luces sirve para poco pero nos permite ver que todo funciona bien, ya que la función acos viene dentro del espacio de nombres concurrency como podríamos comprobar si escribiéramos

concurrency::a

 

Y dejáramos al sistema de IntelliSense que se abra y nos muestre las funciones disponibles.

 

Más ejemplos

Un buen sitio para aprender más sobre esto, en pequeñas dosis, es el blog de Parallel Programming in Native Code, que es de donde yo he sacado todo esto. De todos modos, en esta entrada del citado blog tenéis algunos puntos de entrada: C++ AMP in a nutshell.

Otro ejemplo, que de momento no he podido ejecutar porque lo he compilado con Visual C++ 11 en un Windows 7 virtualizado, es el ejemplo del SDK de DirextX llamado “N-Body Simulation Sample” y que ha sido portado aquí.

WinTablet.info: Windows 8 y los Tablet

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.

Sí, lo que leéis, el RFOG ha sido invitado a participar en un blog 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).

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 Juan Luis Chulilla, quien la propuso a Ctitanic 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 cuarteto concertante (la referencia es de Verne).

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.

Para aquellos que todavía estéis en Babia, os comento. Windows 8 es la siguiente versión de Windows 7, y viene en modo dual. Es decir, que trae dosShell de usuario. La primera es la que todos ya conocemos, con su menú inicio, su explorador y su Internet Explorer, con las mejoras pertinentes. Lo pongo en cursiva porque hay mucha gente a la que la Ribbon en el Explorador no les mola nada… a mí sí.

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í.

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.

Finalmente también hay una preview 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í.

Bueno, lo dicho, daos una vuelta por WinTablet.info.

Novedades en el futuro Visual C++ 2011 (o vNext)

Microsoft ya está planeando y compilando la siguiente versión de Visual Studio, que ellos han llamado temporalmente vNext o, recientemente, 2011, para indicarnos que se trata de la siguiente versión. No hay nada definitivo, ni fecha de salida ni qué va a traer, pero haciendo un poco de gurú, y teniendo en cuenta el ciclo bianual de salida, posiblemente tengamos algo el año que viene por estas fechas o un poco antes. Y no, no estoy haciendo uso de ninguna información privilegiada, que últimamente a los MVP nos dicen lo mismo que a los demás.

No obstante ya se empiezan a publicar algunas novedades sobre lo que va a traer. No son definitivas y quizás al final no las incluyan, pero tienen cosas bastante interesantes. Pese a referiros a los enlaces originales, os cuento yo aquí algunas cosillas. Iremos cronológicamente conforme han ido saliendo, ya que el interés también va en ese sentido.

Según Sumit Kumar, van a potenciarlo hasta el nivel de C# y más allá. Vamos a tener color para más elementos semánticos, de hecho hablan de hasta veinte tokens a los que podremos aplicar diferentes colores. Es decir, podremos distinguir a simple vista si un nombre es una variable local o global, una macro,  una plantilla, un parámetro, un espacio de nombre, una enumeración… cosa que no está nada mal.

También habilitan la selección de una misma referencia en todo el código fuente. Es decir, cuando pongamos el cursor sobre un símbolo, dicho símbolo se selecciona en todo el texto.

También traerá un analizador heurístico en los desplegables, que se abrirán automáticamente y nos mostrarán los tipos más comunes y más probables pese a que empecemos a teclearlos mal.

Y, para equipararse a otros lenguajes, se añaden los Code Snippets, que son bloques de código listos para insertar.

Ne da un poco de corte explicar lo de arriba, porque todo eso ya lo hace Visual Assist de Whole Tomato… pero bien está que lo traiga de forma nativa… si funciona. Recordemos que no es la primera vez que el IntelliSense falla por completo en un producto de Microsoft. Esperemos que esta vez acierten a la primera.

Otra cosa que nos cuenta Sumit, y que personalmente yo no le veo mucho sentido, es que el Explorador de Soluciones traerá una vista de clases. Es decir, cuando abramos un fichero en dicha ventana, tendremos acceso a todas las clases y todos los símbolos de forma automática.

Si queréis ver las capturas de pantalla de todo lo que he explicado, haced clic en el enlace de arriba y veréis todo eso en marcha.

Amit Mohindra nos explica otras novedades en torno al IDE. La más destacable es que ahora no existe asistente para actualizar la solución. Es decir, si abrimos una solución escrita con Visual Studio 2008 o superior, no nos pedirá actualizarla y podremos usarla aprovechando las mejoras del nuevo IDE, y todavía podremos seguir abriéndola con la versión anterior.

Aquí surge un problema potencial, y es el uso de los nuevos compiladores. Es decir, imaginad que no tenemos instalado Visual Studio 2008 en la máquina en la que abrimos la solución pero sí Visual Studio vNext… Pues bien, existirá la forma de utilizar el nuevo compilador. Este tema está todavía pendiente de estudio, por lo que no está claro cómo lo van a hacer.

Otra cosa interesante va a ser la creación de plantillas de proyectos. En versiones anteriores había que crear una serie de ficheros bastante complicados de entender. Ahora esto podrá hacerse mediante un asistente. Aquí y aquí se explican algunas cosas más sobre esto.

Siguiendo con la lista de novedades, y conforme se van publicando en los blogs de Microsoft, ahora nos toca hablar de una característica que yo considero muy pero que muy potente en relación a la ejecución de código en paralelo.

Recientemente Microsoft ha sacado una biblioteca que ha dado en llamar C++AMP, y de la que podemos leer por aquí. Ignoro si forma parte de algún estándar (lo siento, ando un poco desactualizadillo en estos temas), pero creo que sí, al menos en su especificación si no en la implementación. Las siglas se conocen como Accelerated Massive Parallelism, y tiene que ver con los procesadores de uso generl multinúcleo y los vectoriales SIMD (de los cuales forman parte los chips de las tarjetas de vídeo modernas).

Evidentemente esto no sirve para un programa de gestión de datos, pero sí para juegos y otras aplicaciones que necesiten un rendimiento alto y que realicen tareas que se puedan ejecutar en paralelo. Digamos que es la solución que Microsoft está implementando en el mundo nativo (C++) como solución a los problemas actuales de paralelismo, y personalmente no lo veo nada mal.

Pues bien, DanielMoth nos cuenta que en vNext tendremos una nueva palabra reservada llamada restrict y que nada tiene que ver con su equivalente de C99, que MS no implementa. Básicamente la idea es utilizar dicho término para indicar dónde se debe ejecutar un método, si en el procesador principal o en el SIMD (tarjeta de vídeo).

Es decir, si nosotros ponemos algo como

void myFunction(int a) restrict(cpu)
{
}

Le estamos diciendo al compilador que esta función deberá ser ejecutada por la CPU del sistema, mientras que si lo indicamos así:

void myFunction(int a) restrict(direct3d)
{
}

Estaremos indicando que eso se debe ejecutar en el procesador gráfico.

E incluso es posible algo como esto:

void myFunction(int a) restrict(direct3d, cpu) //o restrict(cpu, direct3d)
{
}

Que indica que se podrá o deberá ejecutar en ambos procesadores.

Lo chulo de esto es que se trata de una indicación transparente para el programador, y que debe ser la implementación la que se encargue de toda la martingala para que pueda ejecutarse en uno o en otro sitio.

También podremos sobrecargar el método, de forma que podríamos tener tres funciones idénticas pero con diferente restricción, de forma que sería el compilador y el motor de tiempo de ejecución el que decidiera qué y cómo ejecutar.

Toda una chulada.

De todos modos, esto está un poco en el aire, y todavía no tienen claro algunas partes de la implementación y cómo va a terminar funcionando, pero es una característica muy guapa. Ojalá implementen algo similar para los threads y la sincronización.

Otra cosa que sí han hecho es optimizar el PPL (otra librería de ejecución en paralelo, esta con algo más de solera), ganando en algunos casos hasta un 20% de mejoras en el rendimiento con sólo recompilar el código existente con la nueva implementación de PPL que traerá vNext. Aquí lo tenéis con más detalle.

Ya está aquí C++Builder XE2: Una porquería de producto

Ya está aquí, ya ha llegado, la que prácticamente es la versión más mierdosa que jamás han sacado de C++Builder.

Pensaba que no se podía caer más bajo en ofrecer una versión de una herramienta de desarrollo, pero lo cierto es que sí, y se llama C++Builder XE2.

Ya estamos acostumbrados al ciclo de salida anuales de los productos de Embarcadero, con versión tras versión de un producto bastante inacabado y que sólo comienza a funcionar bien tras dos o tres parches, como es el caso de la última versión hasta ahora, la XE, que sólo ha comenzado a ser más o menos estable tras el Update 3, pero sin que solucionen bugs históricos como los que impiden trabajar con las versiones no parcheadas de Boost o que hacen casi inusables las que ofrecen parcheadas, eso sin contar con el pobre rendimiento de los ejecutables…

Pues bien, la única mejora destacable, y destacable de verdad, en C++Builder XE2, es que puede generar ejecutables para OS X. Sí, lo que leéis. Pero ¿vosotros habéis visto un ejecutable corriendo sobre OS X y compilado con esta herramienta? Si la respuesta es afirmativa es que sois bastante más suertudos que yo, porque, pese a tener la versión de prueba, no lo he conseguido.

El sistema de compilación cruzada funciona más o menos así:

Hay una nueva biblioteca visual que se llama FireMonkey y que es calcada a la VCL pero con la característica de que es multiplataforma, por lo que debéis olvidaros de simplemente recompilar vuestros anteriores proyectos. Hay que construirlos desde cero con esta nueva biblioteca. La ventaja es que los componentes se llaman casi igual y puede serte válido mucho código ya escrito.

Bueno, una vez que tienes instalada esta versión de Bulider, tienes que instalar una especie de servidor en el MAC donde vayas a depurar. Sí, C++Builder no se ejecuta dentro de un MAC, sino que sigue siendo una aplicación nativa Windows. Sí que puedes hacerlo desde una máquina virtual, pero ojo con la licencia de activación, que se suele perder cada cierto tiempo por algún problema con el sistema de ficheros, y tienes que reactivar el producto, y cuando llegas a cierto límite tienes que al menos enviar un correo explicando qué te pasa y por qué quieres más activaciones.

Una vez que tienes instalado y lanzado el servidor en tu MAC (tras leerte bastante documentación y tras varias pruebas en falso), tienes que añadir la plataforma en tu proyecto FireMonkey (nombre ridículo donde lo haya). Luego tienes que crear un perfil y asociarlo al proyecto. Y finalmente ejecutarlo.

Vale. Todo el tema del perfil y demás está hecho de aquella manera, con una especie de asistente mierdoso y con poca documentación, pero una vez lo tienes todo hecho… no te funcionará. Ni siquiera compilará.

¿Por qué? Muy sencillo: aparte del tema de la pérdida de la licencia, el IDE del RAD Studio no es compatible con carpetas compartidas de una máquina virtual. Igual que ocurre con Visual Studio, que parecen productos calcados…

Vale, tienes que tener tu proyecto en una carpeta local de la máquina virtual. Ahora sí que compila. Pero al lanzar el ejecutable, el lado servidor empieza a soltar error sobre error con librerías no instaladas, recursos faltantes y demás que hacen que, al menos yo, deje de mirar esta mierda de producto.

Lo dicho: si vais a comprar la versión de C++Builder porque genera ejecutables de plataforma cruzada, no lo hagáis hasta por lo menos la versión XE1000000000 o superior, porque simplemente da asquito.

Eso sin mencionar que la compilación tanto para Windows como para MAC es de 32 bits. Sí, lo dicho, C++Builder todavía no trae compilador de 64 bits (aunque Delphi XE2 sí que lo trae, pero no para OS X).

Vamos, lo dicho, una mierda pinchada en un palo.

Qué grandes palabras, sí señor

Me vais a permitir un exabrupto off-topic total con este blog (y en general con todos mis blogs en donde lo voy a poner), pero son unas grandes palabras dichas por un grande y que por desgracia son más ciertas de lo que parece.

El artículo de Javier Armentia está bien, pero todavía están mejor las palabras de José Luis Sampedro y que reflejan toda mi indignación sobre la visita del Papa y ya de paso de otros temas más que candentes.

Me refiero a esto: http://javarm.blogalia.com/historias/70247

Aprobado: C++0x ya es C++11

Leo en el blog de Sutter, la representación de Microsoft como compañía en el comité internacional de estandarización de C++, que, por fin, el nuevo estándar ha sido aprobado por unanimidad y que pasa a llamarse, como ya se esperaba, C++11.

Un poco más y lo tentemos que llamar C++12.

El rey ha muerto. ¡Viva el rey!

Ahora a ver qué tal lo hace Microsoft con su próximo compilador, y a ver si BorlandEmbarcadero se pone las pilas y también hace algo, aunque lo más seguro sea para C++Builder XE3 el año que viene o el otro, porque el XE2 ya está terminado y a punto de salir, por cierto con compilación cruzada para MAC OS…

La noticia original: http://herbsutter.com/2011/08/12/we-have-an-international-standard-c0x-is-unanimously-approved/

OS X Lion: Ver la carpeta Librería desde dentro del Time Machine

De nuevo volvemos a Lion y a sus chipirtifláuticas nuevas características súper fashion de la muette.

Ahora hablamos de cómo mirar dentro de la Librería de nuestra carpeta de usuario cuando estamos dentro de Time Machine porque queremos recuperar algo de allí.

No, no se ve. Aparte de que es un poco complicado acceder a la carpeta de usuario porque Apple nos quiere ocultar cada vez más el sistema de ficheros de OS X, cuando entras en ella la carpeta Librería no está aunque le hayas cambiado el atributo de oculto…

Mola, ¿no?

Si buscas por la red verás un montón de páginas que explican cómo hacerlo, matando el Finder y con otras técnicas un tanto barrocas. La mía no es que sea muy directa, pero al menos no le tocamos las pelotas al sistema operativo y se hace todo de forma ordenada.

Lo primero que hay que hacer es montar la unidad en donde se guarda la copia de seguridad. Hay varias formas, como lanzar una copia de seguridad manual, entrar en el Time Machine y luego salir o simplemente haciendo clic en la unidad en donde estemos realizando la copia.

Una vez montada, es tan fácil como abrir un Terminal y movernos al home de la copia que queramos. Partimos de la carpeta «/Volumes» y nos vamos adentrando en la copia. También podemos hacer doble clic en el disco montado en el escritorio o seguir navegando por el Finder… La cosa es llegar al home de la fecha que nos interese, ya sea por terminal o con el Finder.

Una vez allí podemos pulsar CTRL-I (o Ver información) sobre la ruta, para saber dónde estamos. Si hemos usado el terminal no tenemos que hacer nada más que, una vez en nuestro home, picar «cd Library» y estaremos dentro.

Si lo hemos hecho con el Finder, ahora es turno de abrir un Terminal y seleccionar y copiar la ruta completa que nos aparece en la ventana de información, picar «cd » en el terminal y pegar dicha ruta sobre el mismo. Al pulsar Enter estaremos en la misma situación que el párrafo de arriba.

Ahora viene el truco del almendruco. Podemos usar el terminal para copiar lo que queramos con los comandos de Unix (ya sabéis, cp), pero resulta mucho más cómo hacerlo con el Finder. Por lo tanto ahora picamos

pwd

en el terminal y presionamos enter. Justo arriba del cursor nos aparece la ruta completa en donde estamos. La seleccionamos con el ratón y la copiamos.

Hacemos clic sobre el escritorio para que en el menú del sistema nos aparezca el del Finder. Elegimos «Ir -> Ir a la carpeta» y en cajetín, pegamos la URL que acabamos de copiar. Se nos abrirá una ventana del Finder en todo su esplendor.

[Sí, ya sé que hay una forma muy fácil de mostrar la Libería, que es explica en infinidad de sitios, pero sólo sirve para la carpeta de la cuenta actual, no dentro del Time Machine.]

Por supuesto también vale hacer esto para entrar en la Libería del home actual de nuestra cuenta de usuario.

Otra forma para, desde cualquier carpeta, ir retrocediendo carpetas padre, es pulsar Commando+Flecha Arriba o, sobre el título de la carpeta en el Finder, retroceder haciendo clic con el botón secundario del ratón.

OS X Lion: Activar la repetición de teclas

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.

Como os comenté en la entrada anterior, 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.

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.

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.

Abrís la aplicación de terminal (tal y como se escribe), y pegáis el texto:

defaults write -g ApplePressAndHoldEnabled -bool false


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.

Y es que, a veces, sólo a veces, esas webs sensacionalistas pro Apple sirven para algo, ya que de esto me enteré aquí.