SwiftUI en Playgrounds para MacOS

En el artículo anterior se explicó cómo utilizar Playgrounds para MacOS y creamos nuestro primer Playground en el que saludábamos a todo el mundo.

En este artículo seguiremos saludando a todo el mundo pero con SwiftUI.

¿Qué es SwiftUI?

SwiftUI es la nueva librería de Apple para crear interfaces de usuario de forma declarativa. Esto implica que a diferencia de AppKit o UIKit, las librerías anteriores para crear interfaces de usuario para MacOS e iOS, el que sea declarativa facilita muchísimo la creación de estas interfaces.

En SwiftUI todos los elementos visibles se denominan vistas. Ventanas, botones, etiquetas de texto o casillas de verificación son vistas. Estas vistas se codifican como structs en Swift en la que cada struct tiene un cuerpo (body) en el que se declara cómo se verá la vista o qué vistas serán contenidas por esa vista que estamos declarando.

El código

A continuación se muestra el código para nuestro Playground.

import PlaygroundSupport
import SwiftUI

struct ContentView: View {
var body: some View {
Text("¡Hola mundo!")
}
}

PlaygroundPage.current.setLiveView(ContentView())

Lo más importante de este código para Playgrounds es la primera línea, en la que importamos un módulo para realizar operaciones para Playgrounds y la última línea donde indicamos al controlador de páginas de Playground qué vista de SwiftUI queremos mostrar en la pantalla.

El resto del código es SwiftUI estándar.

Conclusión

Con este simple Playground se nos abre la posibilidad de poder empezar a aprender SwiftUI y crear nuestras propias interfaces de usuario.

Aprende y practica Swift en tu Mac con Swift playgrounds

El mundo de la programación es cada vez más accesible y necesario para todas las personas. Por esa razón aparecen aplicaciones para que todo el mundo pueda aprender y practicar. Apple nos ofrece Swift playgrounds tanto para Mac como para iPad para que podamos aprender y practicar el lenguaje de programación Swift.

Swift playgrounds para Mac

En este artículo veremos la versión de Swift playgrounds para MacOS.

Esta aplicación resulta bastante accesible siempre y cuando sigamos unas reglas y entendamos que algunos cursos generados por otros desarrolladores son muy visuales y quedan fuera de la accesibilidad propuesta por Apple.

Su instalación es muy sencilla desde la Mac Appstore.

Abriendo Swift playgrounds

Nada más abrir Swift playgrounds nos encontramos que la aplicación habla de áreas de juego, es la traducción de playgrounds.

En la pantalla principal encontramos un área llamada Mis áreas de juegos, donde se alojarán los cursos y pruebas que tengamos descargados o disponibles para descargar. 

La zona de más áreas de juegos nos permite ver una galería de cursos, lecciones y experimentos que podemos descargar y seguir.

Creando nuestro primer programa en Swift

Una cosa que nunca debemos olvidar es que las aplicaciones para MacOS tienen un menú en la barra de menú que nos dará acceso a muchas de las opciones de la aplicación.

Vamos a crear un playground para poder escribir nuestro primer programa en Swift.

Abrimos el menú Archivo de la barra de menú y bajamos hasta la opción Nueva área de juegos en blanco. Los usuarios de VoiceOver deben pulsar Control+Opción+M y pulsar flecha a la derecha hasta llegar al menú Archivo. Luego pulsar flecha abajo hasta la opción de nueva area de juegos en blanco y pulsar enter.

Estamos en la ventana de creación y ejecución de un Playground. En esta ventana encontramos las siguientes zonas:

Una barra de herramientas con opciones para importar código de otros playgrounds y abrir o cerrar la barra lateral.

La barra lateral donde se nos da acceso a los módulos y páginas de un playground.

El editor de código donde estará el código fuente de nuestro programa.

Un botón de opciones de ejecución que desplegará un menú para elegir distintas opciones mientras se ejecuta nuestro código.

Un botón para ejecutar código.

Un botón para abrir la consola y ver los resultados de ejecutar nuestro código.

Por último un área donde se verán los resultados y que VoiceOver identifica erróneamente como una zona para introducir código.

Comenzamos a codificar

Es hora de ponernos manos a la obra y a programar se aprende programando así que vamos a crear nuestro primer programa en Swift.

Pinchamos en el editor de código, con VoiceOver nos colocamos sobre el editor de código y pulsamos Control+Opción+espacio. Si no hacemos esto con VoiceOver la edición de código no será del todo accesible para personas ciegas.

Al entrar en el editor debemos introducir el siguiente código:

print("¡Hola mundo!")

Tras esto debemos pulsar el botón de ejecutar código. Los usuarios de VoiceOver para salir del editor simplemente deben de dejar de interactuar con el editor, para ello se pulsa Control+Opción+Mayúsculas+flecha arriba.

Al pulsar el botón de ejecutar código no se aprecia que haya sucedido nada. Esto se debe a que la función print imprime un texto por la consola y la consola actualmente está oculta. Debemos pulsar el botón Abrir consola para ver el resultado.

Encontraremos un área llamada salida de la consola que mostrará el texto ¡Hola mundo!.

Volvemos a editar nuestro código y añadimos otra línea a nuestro código anterior dejando nuestro programa con el siguiente código:

print("Hola mundo!")
print("Este es mi primer programa en Swift.")

Volvemos a pulsar el botón ejecutar código y la salida de la consola se actualizará con el nuevo mensaje.

 

Conclusión

Tras crear nuestro primer programa en Swift ya nada nos impide progresar en nuestro camino de aprendizaje y poder crear nuestras propias aplicaciones.

Podemos comenzar nuestro aprendizaje sin necesidad de instalar una aplicación tan compleja como Xcode y además tenemos acceso a otras lecciones.

Cómo crear nuestros certificados SSL desde la Terminal de Mac

El uso de certificados SSL en las páginas webs es practicamente de uso obligatorio. De esta forma podemos navegar con confianza por Internet.

En muchos casos la empresa que aloja un proyecto web ofrece certificados SSL a sus clientes estos, en la mayoría de los casos, implican un aumento en el precio del servicio de alojamiento web. Hay organizaciones como Let’s encrypt que ofrecen certificados SSL de forma gratuita y renovables cada 3 meses pero su interfaz web puede resultar confusa o inaccesible.

Para agilizar estos procesos de creación de certificados SSL se han desarrollado herramientas de certificación para Let’s Encrypt  para que cualquier persona pueda encontrar la que le resulte más cómoda y accesible.

Una de estas herramientas es Certbot para Mac que resulta totalmente accesible al tratarse de una aplicación de Terminal.

Instalando Certbot

Esta aplicación es fácil de instalar si estamos utilizando Homebrew en nuestro mac.

Simplemente debemos abrir una Terminal y ejecutar:

brew install certbot

Tras la instalación tendremos disponible Certbot en nuestro Mac.

Usando Certbot

Para poder usar Certbot con garantías es necesario saber utilizar la Terminal de Mac y saber crear ficheros desde la Terminal de Mac.

Una vez instalado Certbot deberemos ejecutar el siguiente comando:

sudo certbot certonly --manual

En la Terminal nos aparecerán diversas instrucciones a seguir. Lo primero que se nos pedirá es el dominio a certificar. Deberemos introducir el nombre de nuestro dominio, por ejemplo, programaraciegas.net

En la terminal se nos indicará que debemos crear un fichero de texto con una serie de números y letras y subirlos a una ruta URL de nuestro sitio web. Podemos copiar toda la pantalla de la Terminal y leerla cómodamente e un editor de textos. De esta forma podremos seleccionar y pegar en el nuevo fichero los datos que Certbot nos indica.

Una vez subido el fichero con el validador de certificado podemos probar en nuestro navegador web que la URL que utilizará Let’s Encrypt funciona. Una vez comprobado podemos pulsar enter en la Terminal para que Certbot continúe con su trabajo.

Tras el proceso de validación Certbot habrá creado unos ficheros en la carpeta /etc/letsencrypt/live/nuestro-dominio-registrado donde estarán los distintos datos del certificado.

Para ver estos ficheros debemos utilizar el comando cat desde la Terminal.

Visitando la página de gestión de nuestro dominio, normalmente CPanel, deberemos buscar la sección de SSL/TLS para introducir nuestro certificado SSL.

Dependiendo de cada compañía el proceso cambia por lo que es recomendable consultar la documentación que ofrece la compañía de alojamiento web para este proceso.

Una vez terminado el proceso nuestro certificado SSL garantizará que nuestro sitio web es seguro para todas las personas que navegan por Internet.

Cómo crear ficheros desde la terminal de Mac

La Terminal de MacOS es una herramienta poderosa que nos permite realizar ciertas tareas de forma rápida y controlada.

Ya vimos cómo manejar la Terminal de MacOS y en este artículo se mostrará cómo crear ficheros vacíos para poder ser utilizados.

Comando touch

En las terminales de Unix/Linux el comando touch nos permite crear un fichero vacío. Simplemente debemos indicar como parámetro el nombre del fichero que queremos crear.

Imaginemos que queremos crear en la carpeta de descargas el fichero prueba.txt y posteriormente abrirlo con la aplicación por defecto para los ficheros .txt. Los comandos que debemos introducir tras abrir la Terminal de MacOS son los siguientes:

cd Downloads

touch prueba.txt

open prueba.txt

El comando touch nos permite crear más de un fichero a la vez, simplemente debemos indicar cada uno de estos nuevos ficheros separados por espacios. Ejemplo:

touch prueba1.txt prueba2.txt prueba3.txt

Con este comando se crearán 3 ficheros.

Virtualiza cualquier sistema operativo en tu Mac gracias a UTM

La virtualización de un sistema operativo sobre otro es una posibilidad para dar la oportunidad al usuario a utilizar lo más apropiado en cada momento permitiendo a una persona poder usar Safari en MacOS mientras edita un documento en Microsoft Word en Windows 10 en una misma máquina. Hemos hablado de estas posibilidades en el artículo de convivencia de Windows y MacOS en hardware de apple.

Aunque en MacOS ya existían soluciones para virtualizar sistemas operativos sobre MacOS con la llegada de los nuevos procesadores Apple M1 estas soluciones dejaron de ser eficientes o totalmente incompatibles.

Tanto VMWare fusion como el proyecto VirtualBox sólo pueden ejecutarse, por ahora, en procesadores X86 y X64 por lo que no puede funcionar en procesadores Apple M1. La solución de Parallels ofrece una solución compatible con procesadores Apple M1 pero su falta de accesibilidad lo hacen incompatible con los usuarios con discapacidad.

Fue la propia Apple quien ofreció una solución para poder ejecutar de forma virtual sistemas operativos de tipo ARM64 sobre sus nuevos procesadores. Esta tecnología se conoce como Hypervisor Virtualization Framework.

El Open source al rescate

Gracias a esta tecnología de Hypervisor Virtualization Framework la comunidad de desarrolladores de software para MacOS pudo crear el proyecto UTM.

UTM es una solución software para ejecutar distintos sistemas operativos sobre hardware Mac. Aunque oficialmente puede trabajar con sistemas operativos ARM64 también se pueden instalar versiones para procesadores PPC, ARM32, X86 y X64.

Apoyo al proyecto

Aunque UTM se puede descargar gratuitamente de la página del proyecto UTM también podemos descargar UTM de la MacAppStore por un precio de 10 euros.

Descargar la aplicación de la MacAppStore nos da la tranquilidad de tener todas las actualizaciones de forma automática y cómoda sin necesidad de volver a instalar nada.

Accesibilidad de UTM

A diferencia del proyecto VirtualBox y Parallels la interfaz gráfica de usuario que presenta UTM es nativa de MacOS y resulta totalmente accesible con VoiceOver y otros productos de apoyo.

Instalación de un sistema operativo

Con UTM es sencillo crear una nueva máquina virtual. Simplemente utilizamos la opción de crear una nueva máquina virtual, indicamos el tipo de sistema operativo, asignamos memoria RAM, número de núcleos del procesador a virtualizar, espacio en disco duro y, una vez creada, podemos configurar una unidad de CD/DVD virtual que apunte a un fichero en formato ISO o crear una carpeta compartida entre el sistema operativo anfitrión y el virtualizado para poder compartir ficheros.

Tras esta configuración procedemos a ejecutar la máquina para instalar el sistema operativo utilizando tanto video con una resolución suficiente como acceso a la tarjeta de sonido.

Drivers para el hardware gracias también a UTM

El propio proyecto UTM nos proporciona la posibilidad de descargar un paquete de instalación de drivers para el hardware virtualizado por UTM para tener un correcto acceso a servicios de red, multimedia, carpetas compartidas y puertos USB.

Este paquete se conoce como Spice guest tools and Qemu drivers y se pueden encontrar en la página de soporte de UTM.

Galería de instalaciones para hacerlo aún más fácil

UTM nos ofrece una galería de máquinas predefinidas para Linux y Windows donde se nos ofrecen descargas e instrucciones para completar con éxito la instalación de una de estas máquinas.

Accesibilidad en la instalación

En cuanto a la accesibilidad del proceso con las funciones de lectura de imágenes de VoiceOver podemos llegar a leer las pantallas de arranque aunque el momento más crítico es cuando el arranque de la máquina nos pide que pulsemos una tecla para arrancar desde la unidad CD/DVD que es donde se aloja virtualmente el fichero ISO con el instalador del sistema operativo.

El resto de la interfaz de UTM es totalmente compatible con la accesibilidad de MacOS.

Crea un script para contar tiempo en AppleScript

A veces puede que necesitemos contar cuánto tiempo ha transcurrido desde un evento a otro mientras utilizamos nuestro equipo con MacOS. Con AppleScript podemos crear un script que realice esta cuenta de tiempo.
Con lo que conocemos de AppleScript y lo visto en los artículos de Crea un cronómetro de cuenta atrás en AppleScript, Controlar variables no definidas en AppleScript y Obtener la hora actual en AppleScript de distintas formas podemos crear el siguiente script:

global timeValue, counting

on getTimeInSeconds()
	-- set t to (time of (current date))
	return (time of (current date)) as number
end getTimeInSeconds

on startCount()
	set counting to true
	set timeValue to getTimeInSeconds()
	say ("Contando")
end startCount

on stopCount()
	set numberOfSeconds to getTimeInSeconds() - timeValue as integer
	set numberOfHours to numberOfSeconds / 3600 as integer
	if numberOfHours > 0 then
		set numberOfSeconds to numberOfSeconds - (numberOfHours * 3600) as integer
	end if
	set numberOfMinutes to numberOfSeconds / 60 as integer
	if numberOfMinutes > 0 then
		set numberOfSeconds to numberOfSeconds - (numberOfMinutes * 60) as integer
	end if
	say ("Tiempo transcurrido " & numberOfHours & " horas, " & numberOfMinutes & " minutos y " & numberOfSeconds & " segundos.")
	set timeValue to 0
	set counting to false
end stopCount

on run
	try
		if counting = false then
			startCount
		else
			stopCount()
		end if
	on error number -2753
		startCount()
	end try
end run