Episodio 19 de 85% Cocoa

85% Cocoa Podcast. Pulsa para ir al podcast. Imagen usada sin consentimiento de nadie. Espero que no me denuncien

85% Cocoa Podcast. Pulsa para ir al podcast. Imagen usada sin consentimiento de nadie. Espero que no me denuncien

Que escucho 85% Cocoa habitualmente es algo que cualquiera que se lea mi timeline de Twitter verá en un rato. Es un podcast que te anima a seguir aprendiendo cosas en el mundo del desarrollo Mac con Cocoa, y que trata también temas extrapolables al desarrollo con cualquier lenguaje. ¡Jose Antonio Lobato hasta habla de cómo correr en su podcast!. Te lo recomiendo si programas en cualquier lenguaje. Bueno, si lo haces en Haskell o BrainFuck estás más allá de toda ayuda o tratamiento…

En el episodio 19 Jose tuvo a bien invitarme a hablar, junto con su socio en Binary Tricks, Jesús Fidalgo (@jfid), sobre los sistemas de gestión de bugs, tareas, tickets o asuntos (issues) que usamos. En mi caso, hablé de FogBugz, que es el que actualmente uso. Me he dado cuenta de que en esta entrada prometía hablar de FogBugz en el blog. Bueno, considero mi cuenta saldada conmigo mismo 🙂

La charla me resultó muy, muy agradable. Me la pasé rebién, que dicen los argentinos. La hora que estuvimos hablando se fue en un momento, y tratamos muchos temas. Quiero dejar aquí el enlace al artículo en el que Joel Spolsky explica su «Evidence Based Scheduling», es decir, su sistema de «predicción» estadística de la probabilidad real que tienes de lanzar tu producto en las fechas que tú propones. Es lectura obligada.

Curiosamente ha levantado cierto revuelo la frase «el terrible complejo de sentirse inútil», que es lo que cada informático siente todos los días de su vida cuando se levanta de la cama. Con el ritmo de cambio habitual, siempre tienes la sensación de no saber nada. Pero eso no es real. Voy a dedicar algún post a este tema, ya que creo que necesitamos mucha terapia de grupo.

Y nada más. Que espero que lo disfrutéis y que, si no conocíais el podcast os apuntéis a el. Y, por cierto, es harto desagradable la experiencia de escucharte a ti mismo durante una hora. Nadie debería tener una voz que suene distinta fuera de su cabeza.

j j j

«The more memory and HD you’ll have, the happier you’ll be»

No recuerdo dónde escuché esta cita por primera vez. Debió de ser en los años de la carrera, allá por el 94 ó 95. Sí, en la prehistoria. El caso es que la he usado muchas veces. Y la última vez ha sido para responder a gente que se asustaba en Twitter de que le he puesto al iMac 12 GB de RAM. ¿Es mucho?. ¿Es poco?. Vamos con ello.

Lo  primero, dar la razón fundamental de ponerle tanta memoria al iMac: porque puedo. Sí, así de sencillo. En el 94 ni hubiera soñado con estas cantidades de memoria, ni siquiera para un disco duro. Es como pensar hoy en una RAM de 32 Hexabytes. Así que no podía plantearme si era mucho o poco: simplemente no podía. Pero hoy en día, cuando 8 GB cuestan 120 Eur. IVA inc., si necesitas esa memoria, o te apetece, tampoco es una inversión que te lleve a la bancarrota.

Además, cuando es aquí donde me gasto mi dinero. Quiero decir, que no tengo moto, no me gustan los coches potentes, ni la ropa de diseñador, ni juego al bingo, ni me gusta la coca, ni jugar al póker. Mis vicios son baratos ¡qué le vamos a hacer!. Nada me gusta más que un buen gadget electrónico. Hay quien le da por coleccionar sellos, o montar maquetas. O tener un yate. Yo tengo chismes.

Así que nada mejor para complementar a mi querido iMac Core i7 que estos 8 GB, que se han sumado a los 4 GB que traía de fábrica. Ahora tengo una máquina redonda, muy equilibrada, potente y estable. Y de la pantalla, para qué hablar 🙂

En un día normal de trabajo, si miro el consumo de memoria me puedo encontrar con algo como esto:

Memoria usada

Memoria usada

Este es el consumo que tengo mientras escribo estas líneas. Se puede ver que, usado (ya sea por programas, por el S.O. o que está «cacheando» algo en memoria) tengo 4,59 GB. Algo más que los 4 GB originales. Hace unos meses, el equipo estaría paginando, es decir, tendría que sacar algún programa de memoria y guardarlo en disco (normalmente el que hace más tiempo que no se usa). El dato de Paginación (salidas) sería mayor que 0, y todo el sistema me iría más lento. Estaría tratando de ejecutar, a la vez, más programas de los cabrían en mi memoria RAM.

Como se puede ver, el problema ahora no es ese. Me sobran 7,40 GB. ¿Excesivo?. Para nada. En cuanto tenga que correr alguna máquina virtual con VMWare, o lanzar XCode 4 (con todo lo que ello implica), o jugar a Left 4 Dead 2 sin parar algo 😉 la memoria disminuye y se queda en algo como esto:

Usando memoria

Usando memoria

Uso el ordenador muchas horas al día. Por trabajo, y por placer. Y no hay cosa que me irrite más que quedarme sin espacio en disco, o ver que la máquina no va todo lo «fina» que debiera, por una tontería como es la RAM. Así que, como dice el título, un poco de RAM me hace mucho más feliz. ¡Comprueba la tuya!

P.D.: Si quieres saber cómo interpretar el uso de memoria que está haciendo tu Mac, te recomiendo este excelente post de MPG.

j j j

Mi Time Capsule ha muerto. ¡Larga vida a mi Time Capsule!

TC Memorial. Click para ir al sitio

TC Memorial. Click para ir al sitio

Ha muerto. Repentinamente y sin avisar. Volví de dar un paseo, y al entrar en casa mi iPhone no se conectaba a la Wifi. Pensé en problemas de cobertura y no pensé más en ello. Luego, mi mujer se quejó de que no podía navegar por Internet. Ahí ya no pude esconderme más y no tuve más remedio que subir al estudio a reiniciar el router Linksys, al que le echaba la culpa. Pero al ir a cogerlo, vi algo terrorífico, que me sobrecogió el alma: la luz de la TC estaba apagada.

Para los que no sepan lo que es, la Time Capsule es un todo-en-uno de Apple que incluye en el mismo aparato un router, un switch con tres entradas de red Ethernet de 1Gb, un punto de acceso inalámbrico (lo que Apple llama un Airport Extreme) 802.11n + g + b y un disco duro en red para copias de seguridad u otros contenidos. También es servidor de impresión (se le pueden conectar impresoras a través del puerto USB que incorpora). Puntos negativos: no es servidor DNS, lo cual es un rollo y en mi opinión es una característica básica que le falta. Y se calienta bastante.

El caso es que, dados los antecedentes que ya conocía de @juaconet, que ha pasado ya por tres time capsules, cuando me planteé mi estrategia de backups decidí poner en la Time Capsule únicamente las copias de seguridad de Time Machine. De esta forma, si fallaba el ordenador, tenía la copia en la Time Capsule, y si era al revés (como al final ha sucedido) podría comprar otra TC y volver a hacer una copia de Time Machine de los portátiles. Porque, una vez que el aparato se apaga, ya no hay forma de acceder a los datos: hay que desmontarlo para llegar al disco duro. Fallo.

Estaba frente a la TC apagada y probé lo típico: a volver a enchufarla, probar con un enchufe distinto, ver si era el cable, etc. Pero nada. No hacía ningún ruido y no se encendía. Así que llamé a Apple Care. Cuando me salió la persona de Apple (el Apple Advisor) le conté mi problema, haciendo especial hincapié en que era una TC de las primeras que salieron. Me solicitó el número de serie. Cuando confirmó que efectivamente era de las primeras, me indicó que estaba cubierta por un programa de reemplazo de Apple y que me mandaban a casa una nueva ¡gratis!.

Apple sabe que las primeras TC estaban mal diseñadas. Han caído tantas que, como me indicaba @juaconet en este tweet, hay hasta un memorial de TCs muertas. Pero al menos han puesto en marcha el programa de reemplazo de forma que, en un par de días, tienes una TC nueva en casa. Eso sí, los datos los has perdido. Por eso el tener sólo las copias de Time Machine. Espero ahora que mi portátil no decida morir igualmente.

Estas son las cosas que te gustan de la compañía: el trato a los clientes. Sí, la inversión inicial puede ser superior, pero ¿es más caro? Después de tres años usándola, falla y ahora tengo una nueva con el doble de disco duro. Para mí no es mala inversión, no.

Espero que mañana me la entreguen. Y luego habrá que configurarla, y volver a lanzar Time Machine, y, y… D’oh!

Actualización 15/03/2011: hace ya unos días que tengo instalada y en uso la TC. Pero la que me mandaron finalmente era igual a la que tenía, de 500 GB. Bueno, al menos, aunque ya no estaba cubierta por la garantía, han dado la cara. Pero hubiera estado mejor lo del TB 🙂

j j j

Teclado Apple Buetooth y Magic Mouse en Windows 7 con BootCamp

Si has leído mi pasado post sobre la instalación de Windows 7 en mi MacBook Pro (y si no lo has hecho, siempre puedes redimirte leyéndolo ahora), sabrás que ando con arranques duales en mi MBP, principalmente para los juegos de Windows que me compro en Steam. Bueno, y para algún que otro portal de la Junta de Andalucía, esa gran adalid del Software Libre.

La Junta, muy comprometida con el SL

La Junta, muy comprometida con el SL

Comenté mi adaptación al teclado del Mac y la disposición de teclas de Windows. Y todo era bello. Hasta que, una mañana, casi por puro reflejo, estaba con Windows 7 arrancado y moví el ratón Magic Mouse que tengo emparejado con el MBP, pero nada. No funcionaba. El teclado bluetooth de Apple tampoco. «Bueno», pensé, «no debe ser tan difícil». «A fin de cuentas Win 7 es moderno, igual que este hardware». Y ahí comenzó mi pesadilla.

En ningún blog ni vídeo he encontrado cómo hacerlo a la primera. He tenido que recorrer un montón de foros, y he ido avanzando poco a poco. En resumen, es fácil cuando lo has acabado, así que…

La receta:

  • Ya tendrás instalado BootCamp en tu Windows. Arranca tu partición con Windows 7 y busca en programas el Asistente de Actualizaciones de Apple. Ejecútalo. Te pasará de BootCamp 3.1 a la 3.2. Tendrás que reiniciar, pero es imprescindible. Trabaja siempre con la última versión del software de Apple. Te dolerá menos la cabeza.
BootCamp 3.2

BootCamp 3.2

  • Arranca ahora en Mac OS X. Ve al panel de preferencias Bluetooth. Te aparecerán tus dispositivos (Magic Mouse y Teclado Bluetooth) instalados. Debes borrar la configuración del teclado bluetooth. Para ello, pincha sobre el teclado y luego sobre el «-» que aparece abajo en la lista. El ratón no es necesario borrarlo.
Magic Mouse y Teclado BT

Magic Mouse y Teclado BT

  • Reinicias ahora en Windows 7. Debes emparejar primero el ratón, y luego el teclado. Para el ratón, vas a Panel de Control > Hardware y Sonido > Dispositivos e impresoras. Pulsas en «Agregar dispositivo». Te aparecerá en la lista el ratón. Debes, antes de pulsar en Siguiente, hacer click sobre el ratón con el botón derecho y abrir Propiedades. Marca la casilla que te aparece. Cierra y pulsa ahora Siguiente. Se instalarán los drivers y Magic Mouse funcionando.
  • Ahora el teclado. Como lo hemos borrado del lado OS X, ahora no está emparejado. Pulsando de nuevo en «Agregar dispositivo» igual que antes, te debe aparecer el teclado. Si no te aparece, enciéndelo pulsando el interruptor que tiene el teclado en su lado derecho (debe parpadear un led en el teclado). Pulsas, siguiente, lo detecta y pide que introduzcas una clave en el teclado y pulses intro. Lo haces y ya debe funcionar en Win 7 sin problemas.
  • Para acabar todo perfecto, tenemos ahora el ratón funcionando en OS X y Win7, y el teclado funcionando sólo en Win7. Reiniciamos en OS X, vamos a la lista de dispositivos bluetooth y añadimos el teclado. Al fin, somos felices.
  • El resultado final debe ser algo como esto:
Mis dispositivos BT en Win7

Mis dispositivos BT en Win7

j j j

ClockRing y la Hermenéutica de las Apple Review Guidelines

ClockRing rechazada :-)

ClockRing rechazada 🙂

ClockRing ha sido rechazada. No se por qué, pero me lo olía. Bueno, realmente no ha sido rechazada. Me explico. La App es correcta, pero no la pueden subir al App Store porque los materiales de márketing (los textos, imágenes, iconos, etc. que aparecen luego en iTunes) no pasan el filtro. Me esperaba algún problema con la licencia, que es GPL, pero como eso no aparece de entrada, no hay bronca (el problema lo tienen aplicaciones que, nada más abrirlas, te informan de su licencia y otras historias).

El correo que he recibido del equipo de revisión me parece perfecto, en serio. Muy educado, te dan las gracias por enviar Apps al App Store y te explican exactamente cual es el problema (en mi caso una de las capturas de pantalla que había enviado) y cómo solucionarlo. Acabo de crear una nueva captura y la he enviado ya para que me la revisen, a ver si ahora todo funciona OK. No entiendo los programadores que se quejan todo el rato del proceso de revisión. Yo hasta ahora he tenido dos problemas, y en ambos casos me han indicado qué pasaba y cómo arreglarlo. Y todo como la seda, oiga.

Lo que me hace gracia es la razón exacta del rechazo:

3.2   Apps with placeholder text will be rejected

Bueno, mi captura de pantalla inicial lo que mostraba era un anuncio vacío (un iAd sin nada, ya que estaba probando la App). Y yo tenía que interpretar que un texto de relleno (placeholder text) es lo mismo que un iAd sin anuncios. Es por eso que habría que crear una hermenéutica de las reglas de Apple, de forma que mentes ilustradas nos expliquen a los más torpes exactamente qué puedes y qué no puedes hacer 🙂

En resumen, que si mandas esto, te rechazan:

Captura de ClockRing App que NO cumple las reglas :-)

Captura de ClockRing App que NO cumple las reglas 🙂

Pero si mandas esto otro, todo es perfecto:

Esta es la buena

Esta es la buena

Nunca me había alegrado tanto de tener mi licencia de Pixelmator. Problema solucionado en 5 min. Bueno, eso si te acuerdas de cambiar las imágenes promocionales en todas las App Stores. Si no, te mandan otro amable correo rebosante de paciencia pidiéndote que cambies los screenshots de la App española 🙂

Por cierto, ClockRing ya está disponible en el App Store. Y su código fuente está aquí.

j j j

ClockRing, Mi tercera App es Software Libre

Pues eso, que he mandado a revisión por parte de Apple mi tercera App. Actualmente ya tengo dos subidas: MyEvents, para gestionar tus eventos importantes y saber cuántos días quedan hasta ellos, y FXPlayer, una App escrita a cuatro manos con la ayuda de @jnhidalgo @jnhernandez, y que te permite superponer efectos de sonido a una canción que tengas sonando en el iPod. Puedes verlas en la web de Femtocoders (Inglés) o en la sección iOS Apps del blog.

Esta tercera se llama ClockRing, y la idea es muy sencilla: hace que suene un pitido de señal horaria en tu iPhone, como los relojes Casio de toda la vida. Con la particularidad que te permite escoger qué quieres que suene: una campana de iglesia, un reloj de cuco, un pitido típico de la radio…

ClockRing App

ClockRing App

Se me ocurrió la idea tras enterarme a través de José Mª Ortiz, un compañero de Jonathan Chacón (primer desarrollador ciego en el mundo que ha publicado una App en el App Store, bromitas pocas), de que MyEvents era accesible. Empecé entonces a pensar en los temas de accesibilidad y se me planteé “¿bueno, y un ciego cómo sabe de un vistazo que son las dos de la tarde y tiene que irse a comer?”. Evidentemente no “de un vistazo”, tienen que estar activando el iPhone, y VoiceOver te canta la hora. Pero se me ocurrió la idea de clockRing y pensé que podría ser útil. Además, José Mª, me pidió que implementase «para ayer» la posibilidad de programar alarmas en MyEvents (cosa que empiezo a preparar ya para la v1.2). Así que ClockRing era la oportunidad perfecta para practicar con la API de LocalNotifications.

La App es gratis, e incluye iAds para ver si me puedo pagar alguna cerveza a su costa. Pero hace tiempo que estoy con ganas de liberar algo de código. Así que ClockRing es Software Libre, según establece la licencia GPL v2. Vamos, que puedes ver el código, compilarlo, usarlo en tus proyectos, o para aprender, o para reírte, o para lo que quieras. Pero los trabajos derivados deben ser también libres. Si quieres una copia del código, pásate por la Wiki de la App ClockRing que tengo en FogBugz (otro día  hablaré de FogBugz y su increíble sistema de Bug Tracking, predicción del tiempo de entregas, Wikis, repositorios de código, etc.)

ClockRing aún no está disponible para su descarga desde el App Store, ya que está en el proceso de aprobación (cruzad los dedos). En el momento en que esté disponible lo anunciaré aquí (actualizando esta entrada) y en Twitter.

Actualización: ya puedes bajarte ClockRing gratis.

Happy coding!

j j j

Windows 7 corre que se las pela en mi viejo MacBook Pro

¡Un momento! ¿Qué?. No, no puede ser, deben ser las drogas que tomo habitualmente. ¿No estarás diciendo que has mancillado el templo de San Steve y la Gran Manzana con algo que venga de Redmon? No, seguro que estás diciendo que has tenido que comprobar los virus de Windows en una máquina virtual y te ha funcionado maravillosamente en ese estupendo S.O. que es Snow Leopard. ¿No?. ¡Habla, por Dios, no me tengas en ascuas!

Mi querida voz interior fanboy, tengo que informarte de que estoy corriendo Windows 7 en el MacBook Pro, de forma nativa (sin máquinas virtuales de por medio), gracias a BootCamp. Y que me gusta.

Comenzando la instalación de Win7 en el MBP

Comenzando la instalación de Win7 en el MBP

Ya he comentado varias veces que Windows 7 me parece un buen S.O. Realmente ahora usar Linux, Windows u OS X se ha convertido más en una cuestión de preferencias personales que de limitaciones. No hay casi nada que se pueda hacer en uno de ellos que no se pueda hacer en los otros. Incluso los juegos. Y si no, hay sistemas de máquinas virtuales para ejecutar cualquier S.O. desde uno de los otros tres grandes. Y esto es muy bueno. Recuerdo cuando había que luchar muy duro con Linux para hacer que funcionase como tú querías. Ahora usas Linux si te gusta más, que además es la razón más poderosa para usar algo, por encima de méritos técnicos.

El caso es que desde hace un tiempo vengo reduciendo los cacharros que tengo por casa. Sin llegar a los extremos de Dave Bruno y su intento de vivir sólo con 100 objetos, estoy intentando tener los ordenadores que realmente uso. Y uno que no usaba mucho era mi viejo Dell Inspiron 9400, que funcionaba bastante bien con Win7. Pero me pregunté: ¿bueno, y si pudiera correr Win7 en el MBP, no podría deshacerme de esa máquina? Además, tengo espacio libre en el disco del MacBook Pro tras comprarme el nuevo HD de 7200 rpm. un último argumento me lanzó a la aventura, y es que en Febrero tendré que impartir un curso de C en entorno Windows, y el MBP pesa como tres Kg menos que el Dell.

La instalación

Hay montones de sitios que cuentan cómo hacer la instalación, que por otra parte es bastante sencilla, así que no me repetiré. Podéis ver este vídeo, por ejemplo, aunque hay mil. Sólo algunas notas:

  • BootCamp es dos cosas. Por un lado, cuando lo usas en el Mac es un programa para rehacer las particiones de tu disco y dejar así sitio a Windows 7. Sin más misterios. Luego metes el DVD de Windows, reinicias arrancando desde el DVD y listo.
  • En mi MacBook Pro 15″ (modelo MacBookPro 3,1) no funcionaban los drivers de Windows 7 en 64 bits. Así que he tenido que instalar la versión de Windows 7 de 32 bits. Si al instalar ves que los drivers no se reconocen, ya sabes: pasa a la versión de 32 bits.
  • Cuando Windows ya está instalado, no tiene los drivers necesarios para que el MacBook Pro funcione. Y no los busques por Internet con el asistente de Win7: no los va a encontrar. Están, en mi caso, en el disco de Snow Leopard retail, el que compré con 5 licencias. En el de tu MacBook Pro también deben estar, pero si has pasado a Snow Leopard usa estos, ya que son más modernos.
  • Y ya que estamos, usa los discos adecuados. En plena instalación no me reconocía los drivers del disco. ¿Pero qué pasa?. Pues que estaba usando los discos del MacBook (sin Pro) de mi mujer…

Tras la instalación

Una vez que todo está instalado, sigue arrancando por defecto Mac OS X, que es justo lo que quiero. Para arrancar Windows puedes:

  • pulsar Alt al encender el equipo. Te aparecerán todos los discos desde los que puedes arrancar. Escoge el de Windows.
  • desde Mac OS X, en Preferencias del Sistema, tienes Discos de Arranque, que te permite arrancar en Windows.
  • en Windows puedes hacer lo mismo con BootCamp: reiniciar en Mac OS X, poner como disco por defecto uno u otro, etc.

Tras instalar todas las actualizaciones del mundo y el preceptivo antivirus (en mi caso AVG Free), miré la experiencia de usuario de Windows. Y me daba un 5,0, que creo que para un ordenador que cumple ahora en Febrero 3 años no está nada mal (el máximo es un 7,9).

Win7 en mi MBP corriendo varias apps

Win7 en mi MBP corriendo varias apps

La adaptación

Uno de los principales problemas a los que me he enfrentado para adaptarme al uso de Windows 7 en el MBP es el mapeo del teclado. Los últimos MacBooks traen unos teclados que casi son los clásicos de un PC. Pero el mío tiene varias peculiaridades. No hay tecla Supr (en Mac OS X se consigue con fn + backspace), con lo que no puedo bloquear rápidamente la sesión, o lanzar desde ahí el Administrador de Tareas. Tampoco hay tecla de imprimir pantalla (PrtScr), con lo que me quedo sin poder hacer capturas de pantalla (para los cursos o el blog, lo necesito muy a menudo). Por último, como no hay AltGr, ni siquiera hay Alt en la parte derecha de la barra espaciadora, no puedes generar algunos caracteres que son imprescindibles para programar, como #, { ,} ,[ y ]. Y otro que es ya imprescindible para todo: @.

El tema de @ y # lo conseguí solucionar porque (no lo sabía), si pulsas a la vez Ctrl + Alt + 2 es igual que pulsar AltGr + 2. Lo mismo para conseguir #. Bueno, dos problemas menos. Pero no me resignaba a quedarme sin PrtScr. Así que busqué y encontré la solución en este blog.

Todo se basa en usar un programa llamado SharpKeys, que te permite asignar unas teclas a otras. Es perfecto, ya que he podido asignar Supr a F12, PrtScr a F11 y la tecla Enter del keypad del MBP (que no uso nunca) ahora funciona como AltGr.

He instalado algunos juegos, que funcionan maravillosamente bien, a tope de resolución y efectos gráficos. He estado luchando hasta conseguir que me funcione un mando de XBox con cable USB en Windows 7, me he instalado LLMd5sum para calcular cómodamente los md5sum de las cosas que me bajo… Vamos, que lo estoy usando a menudo. Y estoy encantado. Lo próximo: instalar (y probar) el SDK de Windows Phone 7…

j j j

Qué necesitas instalar para programar en C en Windows

Tengo que impartir un curso de introducción a la programación, utilizando el lenguaje C, dentro de unos días. ¡Bien!. Ya hacía años que no podía disfrutar con un curso así, en el que puedes enseñar los fundamentos a un grupo de personas, y ves cómo aprenden desde el principio y cómo van evolucionando. Encima, para mayor regocijo del docente, el lenguaje elegido es C. Siempre he considerado C como mi lenguaje totem, el hogar a la que volver, con el que me siento más a gusto. En los 90 programé bastante en C y C++. Pero a finales de la década, llegaron primero Visual Basic y luego Java, y no volví a programar en C. Hasta que el año pasado empecé a aprender Cocoa y Objective C para hacer Apps en Apple iOS. Y me ilusioné al descubrir que Objective C es un superconjunto estricto de C, es decir, que tiene todo lo que tiene C, y más cosas.

Así que el curso pinta bien. Si lo pudiera impartir en Linux, ya sería la repera (porque en Mac ni me lo planteo: las empresas cárnicas aún no lo usan). Pero todo no puede ser perfecto. El cliente quiere Windows. Bueno, sin problemas, yo no soy anti-nada. Windows 7, como ya he comentado antes, me parece un buen S.O. No es mi elección para el día a día, porque me siento más cómodo en UNIX (Mac en este caso), pero la última versión es una buena elección para sus usuarios. El problema entonces era encontrar un compilador y entorno integrado que fuese cómodo para programar y que ya conociese. Y si fuera Software Libre, perfecto.

Con estos requisitos, Visual Studio queda fuera. Cierto, llevas el IDE y el compilador integrados de una vez, pero no lo he usado nunca. Y aunque ahora es gratis la versión exprés (o podría usar una de prueba para el curso) no me apetecía pelearme con otro IDE. Netbeans cumple casi todo, pero no lleva integrado el compilador. Ni Eclipse, pero ya que conozco razonablemente Eclipse tras todo el tiempo que le he dedicado impartiendo cursos de Java y preparando certificaciones, me parecía la mejor opción. Así que vamos con la instalación de Eclipse para programar en C en Windows.

Instalar el compilador de C

Lo primero que hay que tener claro es que Eclipse sólo es un Entorno Integrado de Desarrollo. Un IDE. Un editor potente, un programa para organizar tus proyectos de software y no pelearte con ficheros sueltos en una carpeta, un sitio donde ver los errores de compilación y leer la ayuda. Un aglutinador de herramientas. Pero no es un compilador. No lo incluye. E igual que cuando preparas un Elcipse para programar en Java hay que instalar previamente el JDK, que incluye el compilador de Java, aquí hay que instalar el compilador de C.

Buscando uno libre y moderno (el último compilador de C que usé en S.O. Microsoft fue el djgpp sobre MSDOS), di con MinGW, Minimalist GNU for Windows, un conjunto de herramientas GNU (las mismas que se encuentran en GNU/Linux) pero compiladas para Windows. ¡Perfecto!. Instalando esto ya tengo GCC (el compilador de C en Linux y Mac de toda la vida), make y el resto de herramientas de desarrollo desde la linea de comandos. Instalarlo es descargar el ejecutable y pulsar en Siguiente, Siguiente hasta el final. Ojo: instala MinGW en C:\MinGW para evitar problemas posteriores. Es el sitio que aparece por defecto al instalar, así que déjalo como esté.

Tras la instalación, y para que Eclipse pueda encontrarlo, tendremos que añadir la carpeta con los ejecutables de MinGW al PATH del sistema (instrucciones en Inglés, o bien sigues leyendo). Para poder usar cualquier programa en Windows tenemos dos opciones: o bien vamos a la carpeta donde está el programa y lo lanzamos desde ahí, o incluímos la carpeta en la variable PATH del sistema de forma que cada vez que se necesite ejecutar ese programa Windows lo encuentre. Vamos a ello. Abrimos un explorador de Windows (Tecla Windows + E) y pulsamos con el botón derecho del ratón sobre Equipo.

Configuración del Sistema

Configuración del Sistema

Si pulsamos en «Configuración Avanzada del Sistema» nos aparecerá la ventana clásica de «Propiedades del Sistema» de XP. Si no está abierta, hacemos click sobre la pestaña «Opciones avanzadas» y veremos un botón abajo del todo que pone «Variables de entorno». Entrando, veremos dos tipos de variables: del Sistema y de nuestro usuarios. Las variables del Sistema tienen efecto para cualquier usuario que inicie sesión en esta máquina, mientras que las del usuario sólo nos afectan a nosotros mismos. Cuando añado algo al PATH, me gusta que sea a nivel del Sistema, así que buscamos PATH y doble click. En la ventana que se abre, debemos ir al final de la lista de directorios, añadir un punto y coma y la carpeta donde está MinGW.

Configurando PATH

Configurando PATH

Mi PATH queda algo como:
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;...;C:\MinGW\bin

La prueba definitiva de que todo está OK es abrir un intérprete de comandos de Windows, pulsando la Tecla Windows + R y escribiendo «cmd» en el diálogo que aparece. Si escribimos gcc -v y nos aparece información sobre nuestra versión instalada del compilador de C GCC, felicidades. Ya podemos compilar.

MinGW funciona!

MinGW funciona!

Instalar un entorno JRE de Java

Eclipse es un programa que está escrito en Java. Luego para poder ejecutarlo necesitamos instalar en nuestro Windows el JRE (Java Runtime Environment). Una vez que lo tengamos, podremos ejecutar cualquier programa Java, así como Applets en el navegador. Probablemente ya lo tengas instalado (puedes ver si tienes en Archivos de Programa una carpeta llamada Java) pero si tienes dudas, instálate el último JRE de la página de Sun (ahora Oracle). Para comprobarlo, desde una terminal, escribe java -version.

Instalar Eclipse CDT

Siguente paso: descargar Eclipse. Para ello, buscaremos la versión correcta, ya que Eclipse es un IDE que sirve para todo. Con Eclipse podemos programar en C, C++, Java, PHP, … casi en cualquier cosa. Por ello, hay paquetes ya precreados con un Eclipse totalmente configurado para un uso determinado. El que nos hace falta en este caso es el Eclipse CDT

Descargamos el fichero (tardará un rato, pesa unos cuantos MB) y una vez lo tengamos, lo movemos a la carpeta que queramos. Aunque Eclipse sea un programa no se «instala» en Archivos de Programa, aunque podemos moverlo ahí. Realmente se descomprime, se abre, se pulsa sobre el icono de Eclipse y listo.

Si todo ha ido bien, podremos crear un nuevo proyecto C, añadir un fichero y compilar sin problemas. Pero esto va a ser material para otro post.

j j j

Problemas con el disco duro de mi iMac

Hace unos días estuve escuchando episodios atrasados de iCharlas hasta que me puse al día. En uno de ellos, hablaban del mantenimiento que necesita un Mac y comentaban el programa Onyx, que utilicé mucho al principio de mi etapa de switcher, pero que había relegado un poco al olvido.

Pensando que no era mala idea el pasarle Onyx al HD del iMac, para ver su estado, comprobar el sistema de ficheros y con la esperanza de que el sistema se aligerase algo (mi iMac es una maravilla de ordenador, pero uno siempre quiere más :-)) me lancé y el resultado no fue muy bueno. Onyx me indicaba que arrancase con un disco externo y reparase el disco. Acostumbrado como estoy con Linux a que no es buena idea hacer un fsck (filesystem check) a un sistema de ficheros montado (AKA volumen en Mac OS X), me traje de casa de mi suegra el HD externo donde guardo un clon del iMac (si quieres saber cómo tengo organizadas mis copias de seguridad, puedes leerte este post)

Conecté el disco con su cable FW800, directamente al iMac, encendí la máquina pulsando la tecla Opción (Alt) y me aparecieron los dos discos desde los que podía arrancar: el interno del iMac y el externo. Me moví al externo y pulsé Intro. ¡Catacrok!. Un kernel panic como un castillo, la versión UNIXera de las BSOD de Windows. El iMac no arrancaba desde el HD externo. ¿Cómo puede ser ésto? Si cada vez que hago la copia de seguridad completa compruebo el arranque. Pero parece que la versión de S.O. que tienes instalada importa, aunque no tiene mucho sentido para mi. El caso es que desde la última copia de seguridad había actualizado el iMac a la 10.6.5 y la que tenía en el HD externo era la 10.6.4. Sigo pensando que no tiene sentido, y que puedo tener diferentes copias con versiones distintas del S.O.; probablemente la última copia externa no la comprobé como es debido.

Kernel Panic en OSX. Shit happens!

Kernel Panic en OSX. Shit happens!

No pudiendo arrancar desde el disco externo que tengo para arrancar en casos de emergencia (bravo por Murphy) pensé en hacerlo desde el DVD de Snow Leopard, arreglar el disco duro interno del iMac, reclonar el HD externo y listo. Así que cogí el DVD, lo puse en el lector, apagué, encendí con Opción pulsada y seleccioné el DVD. No arranca. ¡Pero qué pasa!. ¡Ah, claro!, es el DVD de Snow Leopard retail. Y este no arranca en el iMac. Necesito el que venía con el iMac, que está, está… ¡no me acuerdo!

A estas alturas empezaba ya a murmurar maldiciones y a estar bastante cabreado, conmigo mismo, con mis procedimientos, mi sistema de archivo, etc. Pero se me hizo la luz mental al recordar que los Macs pueden arrancar en modo target firewire disk. Puedes conectar un Mac a otro mediante un cable Firewire y hacer que el disco duro de uno se vea como un disco externo en otro. En mi caso, arranqué el iMac en modo Target Firewire disk y magia!, apareció en el escritorio de mi MBP

El HD de mi iMac, ya reparado, en la Utilidad de Discos de mi MBP

El HD de mi iMac, con errores, en la Utilidad de Discos de mi MBP

Bueno, ahora era coser y cantar. Le di a reparar disco y a esperar. Al final, todo parece correcto. Volví a verificar el disco y ¡estupendo!. Ya tenemos arreglado el disco del iMac.

Ya sólo me quedaba desmontar el disco del iMac del MBP, apagar el iMac, quitar el cable FW800, reiniciar el iMac, comprobar que todo estaba OK, conectar el HD externo Western Digital y actualizar la copia de seguridad de todo el iMac… vamos, lo que se dice una tarde entretenida…

j j j

Añadiendo un nuevo disco a mi Drobo

Mi Drobo 2ª generación (FW800/USB) tenía instalado hasta hace unos días tres discos duros: uno de 1,5 TB y dos de 500 GB. Todo fantástico, pero me quedaba una bahía libre en el Drobo y además, para llevar a cabo mi estrategia de copias de seguridad necesitaba bastante más espacio. Así que le he instalado otro disco de 1,5 TB, llegando a algo más de 2,3 TB de almacenamiento protegido, suficiente de momento para mis necesidades 🙂

He aprovechado para grabar este vídeo y subirlo a mi canal de YouTube. Espero que os guste.

j j j