Custom zsh shell (MacOS)


El intérprete de terminal de comandos por defecto en MacOS desde hace un par de años (concretamente desde la versión 10.15 Catalina) es Zsh. Éste intérprete viene configurado para mostrar un aspecto realmente limpio y sobrio, con texto negro sobre fondo blanco (o viceversa cuando estamos usando el modo oscuro del entorno gráfico). Lo cierto es que quise saltarme esa apariencia tan austera y poder al menos darle un pequeño toque de color que además facilitase la lectura cuando llevas un rato ejecutando comandos.
En particular, he puesto mi nombre de usuario y el de la máquina en color verde, seguido del directorio actual en azul; y para ello he tenido que recurrir al archivo de configuración «.zshrc» que debería estar alojado en el directorio de usuario. Si no lo tienes, debes crearlo. Si ya lo tienes, basta con que añadas al principio un par de líneas:
autoload -U colors && colors
PS1="%F{green}%n@%m %F{blue}%1~ %# %{$reset_color%}"

Si tienes el terminal ya abierto, puedes forzar que recargue la configuración sin necesidad de cerrarlo y volver a abrirlo. Ejecuta este comando:
$ source ~/.zshrc
Listo! Mucha información la he encontrado en Stack Overflow:
https://stackoverflow.com/questions/689765/how-can-i-change-the-color-of-my-prompt-in-zsh-different-from-normal-text

Instalar servidor Apache Tomcat en MacOS

Muy fácil! Primero nos dirigimos a la página web oficial de Apache Tomcat y nos descargamos la versión que queramos, seguramente la última:

En este caso, la última version estable publicada es la 10.0.20.
De todos los paquetes disponibles, nos bajamos simplemente el que viene como fichero zip:

En mi caso, se ha descargado en la carpeta de Descargas de mi Mac y ya se ha descomprimido automáticamente, por lo que basta con abrir el terminal y trasladarlo todo a una ubicación más apropiada:
$ sudo mv ~/Downloads/apache-tomcat-10.0.20 /usr/local/tomcat
Ahora, establecemos nuestro usuario como propietario (cambia mi nombre por tu nombre de usuario):
$ sudo chown -R emilio /usr/local/tomcat
Y por último damos permisos de ejecución a los binarios:
$ sudo chmod +x /usr/local/tomcat/bin/*.sh

Listo, ahora el servidor se puede arrancar y parar mediante los siguientes comandos:
$ /usr/local/tomcat/bin/startup.sh
$ /usr/local/tomcat/bin/shutdown.sh

Y si está corriendo podemos acceder a los contenidos en local a través de http://localhost:8080. Como ejemplo, mostrará la página que puedes ver en la siguiente imagen:

Mi experiencia con AppleCare+


Hace unos pocos meses, en Noviembre, decidí renovar mi teléfono móvil. Estaba disfrutando de un iPhone XR que todavía da un rendimiento excelente, la batería le dura más de un día y es duro como una roca.
Sin embargo, en los últimos tiempos me resultaba demasiado grande en la mano y echaba de menos formatos más pequeños como el del iPhone 6 y sobre todo, el del iPhone 5C con el que entré en el ecosistema de Apple.
Por otro lado, estando más de la mitad del día frente al portátil, me resulta totalmente innecesario un teléfono con una pantalla tan generosa.

Cuando Apple presentó los iPhone 12, me vi muy tentado por la versión mini, tanto por el nuevo diseño, muy similar al del iPhone 5, como por la posibilidad de utilizar un dispositivo mucho más cómodo en una sola mano. Pero no era el momento y la economía no estaba para tirar cohetes.
Este año, Apple ha aumentado ligeramente la duración de la batería (el punto más criticado del 12 mini), ha mejorado ligeramente la pantalla, ha duplicado el almacenamiento base e incluido unas cámaras mucho mejores (las del 12 Pro Max) en el iPhone 13.
Esta versión está siendo muy criticada por ser prácticamente igual a la generación anterior, pero yo creo que precisamente se ha dado un gran paso adelante en los cuatro aspectos más importantes de un teléfono.
Así que tras tres años, me lancé a la renovación.

Hete aquí que a finales de Febrero el chip NFC de éste nuevo iPhone dejó de funcionar y no permitía utilizar Apple Pay. Ni podía añadir tarjetas nuevas, ni siquiera eliminar las tarjetas añadidas anteriormente. Y lo peor era el mensaje de error que carecía de total sentido.
Por suerte, había contratado el seguro de AppleCare+ (mediante pagos mensuales bastante asequibles) y una simple llamada al servicio técnico bastó para solicitar un reemplazo express.


Funciona así: recibes un teléfono nuevo exactamente igual al que ya tienes en una caja sin ningún tipo de serigrafías ni accesorios. Pelado. En esa caja, debes meter el teléfono estropeado ya restaurado a valores de fábrica y desvinculado de tu AppleID. A continuación, introduces esa caja en un embalaje/sobre que viene incluido, pegas las etiquetas con la información de envío y avisas al servicio de mensajería para que vengan a recogerlo.
Apple debe recibir el terminal en menos de diez días laborales y lo inspeccionará a fondo, no vaya a ser que hayas intentado colársela.
Mientras todo esto sucede, en tu cuenta corriente se retiene el importe del teléfono nuevo.

En mi caso, todo ha salido perfecto. Hay que conservar los emails con la confirmación del cambio ya que obviamente tu teléfono nuevo no tiene el mismo IMEI que el que te han sustituido, pero al margen de eso, es como volver a estrenar terminal. La batería venía con el 100% de salud, cero daños exteriores y por supuesto, una garantía que se extenderá un tiempo extra sobre la garantía original.

Programación Python con interfaz GTK+3 en MacOS


Por designios del destino, he tenido que volver a desarrollar unas pequeñas interfaces gráficas con GTK, en este caso sobre la versión 3 del kit de herramientas. Ya lo había hecho en el pasado con Ubuntu y GTK2, llegando a ver cómo dibujar algunas ventanas y menús.
Quería hacerlo sin renunciar a trabajar de forma nativa en MacOS y librarme de tener una máquina virtual sólo para ello, así que tocó instalar algún que otro Port. La parte programática está en Python, por lo que también necesitaba el conector apropiado.
A través de Homebrew es muy sencillo:
$ brew install gtk+3 pygobject3 adwaita-icon-theme
$ pip3 install requests

Con este comando se instala el kit GTK+3, el conector para Python PyGObject y también un set de iconos, ya que algunas decoraciones de ventana no se veían correctamente porque faltaban las imágenes. Con esto quedaría ya resuelto pero a mayores tuve que instalar la librería requests (desde pip3) para poder realizar algunas operaciones de peticiones de archivos json a través de la red.