Qué es Docker

En la actualidad tanto para el uso profesional como el personal existen 3 principales plataformas o sistemas operativos para los ordenadores de escritorio: Linux, Windows y MacOS. Estas 3 plataformas publican actualizaciones y nuevas versiones para que todas las personas puedan acceder a una versión más optimizada y segura de su entorno de trabajo. Esta premisa debería permitir que una aplicación o proyecto software se pueda ejecutar en cualquier ordenador que esté corriendo la misma plataforma para la que se diseñó la aplicación pero esto no es así.

Dentro de un ordenador que está ejecutando una de las 3 plataformas que hemos mencionado antes se ejecutan multitud de procesos, programas de apoyo y se disponen de distintas librerías que hacen de herramientas de apoyo a otras aplicaciones. Cada proceso, librería y programas de apoyo también tienen sus correspondientes actualizaciones y nuevas versiones. Unido a todo esto se ha de mencionar que tanto Windows, MacOS y Linux permiten al usuario personalizar ciertas características y configuraciones que permiten al usuario optimizar su máquina a su gusto o necesidad. Por ejemplo, la configuración y personalización de un ordenador dedicado a hacer de servidor web para miles de usuarios es muy distinta a la configuración de un ordenador que se utiliza en casa para tareas educativas, ócio y personales.

En mi máquina funciona

Dentro de la ingeniería del software es muy habitual que la persona encargada del desarrollo de un proyecto no pueda utilizar el ordenador que se utilizará como servidor en producción por lo que tendrá que configurar su ordenador de trabajo con una configuración lo más semejante posible a la que tendrá ese servidor en producción. Esto casi siempre es imposible debido tanto a las diferencias en el hardware como en las posibles diferencias entre versiones y configuraciones del conjunto de librerías, procesos y programas de apoyo entre una máquina y otra.

En un primer momento la industria del software optó por el uso de máquinas virtuales pero esto implicaba que los equipos dedicados al desarrollo fuesen más potentes que los equipos de producción ya que la ejecución de una máquina virtual requería tanta potencia como la máquina anfitriona y la virtualizada.

Con el cambio de arquitectura de proyectos monolíticos a proyectos con microservicios la situación mejoró. En lugar de tener que utilizar una maquina completa para ejecutar toda la aplicación empaquetada en un único ejecutable (arquitectura monolítica) se pasó a la arquitectura de microservicios en la que un proyecto software completo se divide en muchos módulos pequeños y cada uno de estos módulos sólo se encarga de resolver uno de los problemas existiendo una comunicación interna entre cada uno de los microservicios que forman un proyecto completo.

Con este nuevo paradigma el uso de una máquina virtual para desarrollar un microservicio era innecesario ya que el microservicio requería de muy poca potencia para su ejecución tanto simulada durante el desarrollo como durante su explotación en producción. Era necesario la aparición de un nuevo método de virtualización que permitiese la ejecución de un microservicio que requiera sólo los recursos mínimos necesarios para su correcta ejecución y que al ejecutarse ya incluya todo lo necesario sin necesidad de depender de la máquina que lo ejecute. Nace Docker, un sistema de virtualización muy pequeño especializado en la ejecución de microservicios.

De esta forma un desarrollador instala Docker para crear sus entornos de ejecución y desarrollar su microservicio. Una vez desarrollado puede instalar Docker en la máquina de producción, trasladar el microservicio desarrollado y ejecutarlo en la máquina final. Como Docker facilita que el microservicio se ejecute siempre con la misma configuración en cualquier máquina ya no sucede el problema de que en la máquina de desarrollo todo iba bien y en producción todo va mal.

En conclusión podemos decir que Docker es una herramienta que permite ejecutar programas y aplicaciones de forma aislada, sin que se afecten entre sí. Es como una caja virtual que contiene todo lo que un programa necesita para funcionar correctamente. Esto facilita la instalación, ejecución y distribución de aplicaciones en diferentes máquinas.

Qué es Fastlane

Dentro del desarrollo de software es habitual que los entornos de desarrollo incluyan muchas herramientas para realizar tareas relacionadas con el mantenimiento y la publicación de una aplicación software. Pero la mayoría de estas herramientas integradas en los entornos de desarrollo funcionan de forma manual requiriendo una completa atención por parte de la persona que está desarrollando el software.

La automatización de procesos dentro de la ingeniería del software se ha demostrado como uno de los caminos más beneficiosos para aumentar la productividad y la fiabilidad del software. Por esta razón han ido apareciendo multitud de herramientas que permiten realizar más tareas y procesos que los entornos de desarrollo y, sobre todo, automatizar estos procesos.

¿Qué es Fastlane?

Fastlane es una de estas herramientas que permiten automatizar muchos de los procesos y tareas relacionadas con el desarrollo de software para iOS y Android.

Esta herramienta creada por Felix Crause consiste en un conjunto de servicios y aplicaciones ejecutadas desde la línea de comandos (CLI) utilizando lenguaje Ruby y permite automatizar muchos de los procesos que se realizan con Android Studio y Xcode.

Entre las diversas tareas que permite automatizar Fastlane están las siguientes:

  • Creación de capturas de pantalla para la tienda de aplicaciones
  • Despliegue de la app dentro de entornos de betatesting como Test flight.
  • Publicación del proyecto en la tienda de aplicaciones
  • Firma de paquetes de software para la distribución del proyecto
  • Ejecución de planes de tests

Como todas estas automatizaciones se ejecutan desde la línea de comandos es muy fácil incluir scripts de la Terminal para realizar comprobaciones o actualizaciones de recursos para la distribución de nuestro proyecto software.

En futuros artículos veremos algunas de estas automatizaciones con más detalle.

La instalación de fastlane es muy sencilla y su uso consiste principalmente en la ejecución de ciertos comandos de Terminal en la propia carpeta raíz de nuestro proyecto software. Este uso de la Terminal hace que el uso de Fastlane resulte más accesible que utilizar ciertas herramientas visuales incluidas en Xcode o Android studio.

Puedes obtener documentación, ejemplos y más información en la página oficial de Fastlane.

Cómo descargar extensiones de Chrome

El navegador web Chrome, al igual que hace Firefox, utiliza extensiones para ampliar la funcionalidad que nos ofrece este navegador web a los usuarios.

Estas extensiones están programadas con tecnologías propias de aplicaciones Web como son HTML, CSS y Javascript.

Dentro de las distintas posibilidades que nos ofrecen las extensiones de Chrome son las de utilizar Chat GPT, gestionar mejor las descargas, realizar evaluaciones automáticas de accesibilidad o descargar elementos que no se pueden descargar de forma sencilla.

La extensión CRX Extractor

Una de estas tareas de descargar que no se pueden hacer de forma sencilla es la de descargar extensiones de Chrome desde su tienda de extensiones y la solución pasa por utilizar una utilidad en forma de extensión para poder descargarla.

Lo primero que debemos hacer es desde Chrome instalar la extensión CRX Extractor desde la Store de extensiones de Chrome.

Una vez instalada la utilidad y tras haberla activado podemos utilizarla mientras examinamos otra extensión en la Store de Chrome.

Esta utilidad nos permite descargar una extensión en formato CRX (propio de Chrome) o en formato ZIP para poder examinar cómo está construida la extensión.

Mover las carpetas de sonido de GarageBand a un disco duro externo en Mac

En Mac hay aplicaciones que utilizan mucho espacio en disco y esto se vuelve un problema cuando nuestro equipo Mac empieza a tener espacio insuficiente.

MacOS nos permite crear enlaces entre carpetas para reconducir las peticiones de las aplicaciones y que nosotros podamos almacenar nuestras carpetas en el lugar más conveniente a nuestras necesidades como puede ser un disco duro externo.

Una de las aplicaciones que requieren mucho espacio en disco es GarageBand. Esta aplicación es un editor musical y requiere almacenar mucha información sobre sonidos e instrumentos llegando a ocupar más de 20Gb de memoria en disco.

Para dar solución a esta necesidad de espacio podemos adquirir un disco duro externo y mover allí los ficheros de GarageBand que puedan ser necesitados por esta aplicación de forma puntual.

Preparando nuestro disco externo

Si nuestro disco duro externo ya está correctamente formateado y asignado un nombre podemos continuar. De no ser así podemos realizar estas operaciones con la utilidad de discos que proporciona MacOS.

Para este artículo imaginemos que nuestro disco duro externo lo hemos llamado MiDisco.

Una vez formateado y nombrado el disco duro externo debemos crear una carpeta en la raíz de nuestro disco duro externo. Por ejemplo SoundLibrary.

Moviendo nuestras carpetas de GarageBand

Una vez creada nuestra carpeta SoundLibrary en nuestro disco duro externo debemos buscar las carpetas de GarageBand que almacenan esos archivos tan grandes.

En el menú Ir a de Finder debemos activar la opción Ordenador. También podemos hacerlo pulsando la combinación de teclas Comando+Mayúsculas+C en la ventana de Finder.

En la ventana de Finder nos aparecerá una vista de volúmenes y carpetas. Debemos explorar el volumen de nuestro equipo Mac que suele llamarse Macintosh HD.

Dentro de nuestro volumen principal está la carpeta Biblioteca y ahí están las carpetas de datos de las distintas aplicaciones y servicios de nuestro Mac.

Entrando en la carpeta Application Support encontraremos dos carpetas llamadas GarageBand y Logic. Copia estas carpetas de GarageBand y Logic dentro de la carpeta SoundLibrary del disco duro externo.

Volviendo a la carpeta Biblioteca encontramos la carpeta Audio. En su interior encontramos la carpeta Apple Loops. Copia la carpeta Apple Loops dentro de SoundLibrary del disco duro externo.

Ten en cuenta que el tiempo para copiar estas carpetas puede ser de varios minutos al tratarse de un número importante de ficheros de gran tamaño.

Una vez copiadas estas carpetas a tu disco duro externo puedes borrarlas del disco de tu Mac para dejar más espacio libre en el disco duro integrado en el equipo.

Enlazando los discos

Para que GarageBand pueda encontrar las nuevas carpetas sin necesidad de configurar nada en GarageBand utilizaremos una característica del sistema operativo llamado enlaces simbólicos. Con un enlace simbólico podemos hacer creer a una aplicación que está accediendo a una ruta de ficheros determinada pero la estamos reconduciendo a otra ruta.

Para crear los enlaces simbólicos debemos abrir la Terminal de MacOS. Puedes consultar este artículo sobre cómo utilizar la Terminal de MacOS con VoiceOver.

Una vez abierta la Terminal debemos activar el modo superusuario o administrador. Ejecuta el siguiente comando en la Terminal y luego introduce la contraseña de tu equipo:

sudo -s

Una vez introducida la contraseña podremos leer en nuestra Terminal algo como:

root@MacBookPro-miNombreDeUsuario ~ #

Esto indica que estamos ya utilizando el superusuario.

Ahora crearemos los enlaces simbólicos de cada una de las 3 carpetas que hemos movido. Se ha de recordar que para este artículo el disco duro externo se llama MiDisco y la carpeta que almacena en el disco duro externo las 3 carpetas de GarageBand se llama SoundLibrary.

Recuerda también que los comandos de la Terminal y las rutas de fichero son sensibles a espacios, mayúsculas y se deben evitar los caracteres acentuados. Presta mucha atención a la hora de escribir los comandos en la Terminal.

Primero enlazaremos la carpeta Apple Loops. Ejecuta en la Terminal el siguiente comando:

ln -s /Volumes/MiDisco/SoundLibrary/Apple\ Loops /Library/Audio/Apple\ Loops

A continuación haremos lo mismo con la carpeta GarageBand. Ejecuta el siguiente comando:

ln -s /Volumes/MiDisco/SoundLibrary/GarageBand /Library/Application \ Support/GarageBand

Y en tercer lugar enlazaremos la carpeta Logic con el siguiente comando:

ln -s /Volumes/MiDisco/SoundLibrary/Logic /Library/Application \ Support/Logic

Si volvemos a la carpeta Biblioteca con Finder y exploramos la carpeta Audio y Application Support encontraremos que los elementos Apple Loops, GarageBand y Logic se identifican como alias.

Una vez creados los enlaces simbólicos sólo queda reiniciar el equipo para que el sistema reconozca estos enlaces dentro del Finder.

GarageBand con más espacio de almacenamiento

Una vez reiniciado nuestro equipo Mac ahora podremos abrir GarageBand. Puede que nos aparezca un cuadro de diálogo pidiendo permiso para acceder a un disco extgerno. Una vez aceptado este permiso podremos disfrutar de GarageBand con mucho más espacio de almacenaje para sonidos.

Solución para otras aplicaciones

Esta solución de enlaces simbólicos a discos externos es válida para otras muchas aplicaciones que utilizan carpetas en las que se almacenan archivos de gran tamaño. Aplicaciones como Android Studio, XCode, Parallels, VmWare o Imovie pueden beneficiarse de un disco duro externo.

Mostrar el tiempo de compilación en Xcode

Xcode es el entorno de desarrollo de Apple para crear aplicaciones para MacOS, iOS, ipadOS, TvOS y WatchOS.

Xcode durante el proceso de compilación o build realiza multitud de tareas. A veces cuando el proyecto va creciendo este tiempo se dispara. Hay muchas estrategias para reducir el tiempo de compilación pero a veces estas estrategias no funcionan como esperamos y puede que en lugar de reducir el tiempo de compilación lo estemos aumentando.

Xcode tiene un temporizador interno para mostrar el tiempo total que requiere una operación de build. Para mostrar este temporizador en la interfaz de Xcode debemos ejecutar el siguiente comando en la Terminal de MacOS mientras Xcode está cerrado:

defaults write com.apple.dt.Xcode ShowBuildOperationDuration YES

Cuando volvamos a abrir Xcode y ejecutemos una operación de build cuando esta finalice bien por error o bien por éxito se nos indicará el tiempo de compilación dentro del activity indicator de Xcode. Esta ventana se encuentra dentro de la toolbar superior de Xcode.

CenteredHead disponible en la Mac AppStore

Ya está disponible CenteredHead en la MacAppStore.

Utilidad para personas ciegas

El objetivo de esta herramienta es ayudar a las personas ciegas o que no puedan ver su posición con respecto a la pantalla para poder situar su cabeza en el centro de atención de la cámara de su equipo Mac. De esta forma una persona que no pueda ver su pantalla podrá saber si está situado en el centro de la pantalla que muestra su cámara.

Su funcionamiento es muy sencillo: abre la aplicación y usa las instrucciones habladas y el sonido para saber si tu cabeza está centrada delante de la cámara.

Una aplicación de Tyflos Accessible Software

Esta es la aplicación número 10 publicada en la AppStore y la primera que es únicamente para MacOS por ahora.

Como todas las aplicaciones publicadas por Tyflos Accessible Software incorpora todas las características de accesibilidad disponibles para MacOS. La aplicación es totalmente compatible con VoiceOver, Zoom, control por voz y todas las personalizaciones disponibles en MacOS para la accesibilidad.

Puedes visitar la página de Centered head en Tyflos Accessible Software.