La asistencia y participación a conferencias así como los resúmenes que hacemos de las mismas han sido algo habitual desde nuestros inicios. Sin embargo, hoy no estamos aquí para hablar de las conferencias en sí, pero sí de algo estrechamente relacionado con ellas: las presentaciones.
Claro que si nos pusiéramos a dar consejos sobre como preparar una presentación o como redactar una propuesta de charla, quizás nos saldríamos de la temática de este blog y tampoco sería lo adecuado. Así que, para tratar ambos temas (tan presentes en Friends of Go desde los inicios), lo que vamos a hacer hoy es explicar cómo podemos hacer presentaciones con Go.
Ya, somos conscientes de que en muchos otros lenguajes también se pueden hacer presentaciones, y nuestra intención no es decir que hacerlo en Go sea mejor que con el resto, pero ya que el lenguaje nos brinda esta oportunidad, qué menos que mostrarosla, ¿no? De hecho, como veremos a continuación, no es más que una pequeña herramienta de CLI así como una extensión del ya popularmente conocido Markdown.
El paquete ‘present’
Como es probable, a la mayoría os sonará (y sino ahora ya lo sabéis) que todas las charlas del equipo de Go de Google (que podéis encontrar en talks.golang.org) tienen el mismo formato (aspecto visual). Por ejemplo, podéis ver esta de patrones avanzados de concurrencia.
Bien, pues toda la magia que hace que así sea reside en el paquete `present`.
Cuya herramienta podemos instalar mediante go get golang.org/x/tools/cmd/present
, y que para empezar a usar solo es necesario
crear un fichero .slide
(por ejemplo presentation.slide
) y ejecutar el siguiente comando:
╰─ present -http="127.0.0.1:4444" ─╯
2020/05/11 17:58:08 Open your web browser and visit http://127.0.0.1:4444
dónde la dirección IP normalmente será la equivalente a localhost y el puerto uno a nuestra elección que tengamos libre en la máquina
dónde vayamos a ejecutar la herramienta present
.
Ahora, si entramos a esa URL deberíamos ver algo muy similar a lo presente en la anterior captura. Además, si intentamos
acceder al enlace de nuestra presentación presentation.slide
nos encontraremos con el siguiente mensaje de error
unexpected EOF; expected title
. Eso es porqué hemos creado nuestro fichero pero aún no hemos añadido contenido, así que
veamos como empezar a crear nuestras diapositivas.
Una versión extendida de Markdown
Como ya adelantamos anteriormente, la sintaxis para crear diapositivas con el paquete present
no es más que una versión
extendida de Markdown.
El título, la fecha y las diferentes secciones
En primer lugar, y de igual modo que se suele hacer en los documentos Markdown, las almohadillas (#
) se usan para
definir las diferentes secciones de la presentación, basadas en el siguiente orden:
#
-> Para indicar el título de la presentación.##
-> Para indicar el título de la diapositiva.###
-> Para indicar el título de una sección.####
-> Para indicar el título de una sub-sección.
Además, si añadimos los “metadatos” de la presentación (nombre del autor, correo electrónico, fecha, etc) a continuación del título, la propia herramienta nos los añadirá en la portada y en la contraportada, la cual incluirá, por defecto, un correcto “Thank you”. Veamos un ejemplo:
# Título de la presentación
Friends of Go
11 May 2020
contact@friendsofgo.tech
@friendsofgotech
## Título de la primera diapositiva
Algo de texto.
### Estilos (lista no enumerada)
- **Negrita**
- `Robótico`
- _Itálica_
- // un comentario
- : notas para el presentador
## Título de la segunda diapositiva
### Segunda sección
#### Sub-sección (lista enumerada)
Algo más de texto.
1. Primer elemento.
2. Segundo elemento.
[Un enlace](https://friendsofgo.tech/)
Además, como podéis deducir del ejemplo anterior, también se puede usar la notación Markdown habitual para todo lo que son estilos, listas y demás.
Imágenes, código y demás extensiones
Además, como ya dijimos anteriormente, también tenemos a nuestra disposición un conjunto de comandos disponibles que extienden la sintaxis del Markdown tradicional:
.code
-> para importar un fichero de código..play
-> para incrustar el Playground con un fichero de código (con-edit
además lo podremos editar)..image
-> para insertar una imagen..background
-> para establecer una imagen como fondo..iframe
-> para incrustar una página web..link
-> para insertar un enlace..html
-> para insertar un fragmento de código HTML..caption
-> para añadir una leyenda.
Así pues, si partimos del ejemplo anterior y añadimos un par de directorios nuevos:
images/
-> con algunas imágenes.snippets/
-> con algunos fragmentos de código.
Luego podríamos tener un ejemplo como el siguiente:
# Ejemplos de los comandos disponibles en Go `present`
Friends of Go
11 May 2020
contact@friendsofgo.tech
@friendsofgotech
## Algo de código
.code some-code.go
## Código ejecutable y modificable
.play -edit snippets/main.go
## Una imagen
.image images/gopher.jpg
## Una imagen de fondo
.background images/background.jpg
## Una página web incrustada
.iframe https://friendsofgo.tech/
## Un enlace
.link https://friendsofgo.tech/ Friends of Go
## Algo de HTML
.html snippets/index.html
## Una leyenda
.caption _Gopher_ by [[https://instagram.com/reneefrench][Renee French]]
Algunos truquitos
Sin duda alguna, con todo lo visto hasta ahora ya tendríamos los recursos necesarios para crear presentaciones bastante decentes. Sin embargo, aún nos quedan un par de truquitos que nos hemos guardado en la chistera para el final de este artículo.
Google nos ofrece un sitio para visualizar las presentaciones
De igual modo que sucede con el sitio web godoc.org (o la nueva pkg.go.dev), a cuya URL podemos añadir la URL de nuestro repositorio, por ejemplo, de GitHub: pkg.go.dev/github.com/friendsofgo/killgrave, para visualizar la documentación (GoDoc) de nuestras librerías y aplicaciones, también podemos hacer lo mismo con talks.godoc.org, de forma que tenemos un sitio web disponible para mostrar nuestras presentaciones.
Podemos recortar y resaltar el código que mostramos
Como vimos anteriormente, mediante los comandos .code
y .play
podemos mostrar ficheros de código fuente. Sin embargo,
lo que no mostramos anteriormente era que podemos mostrar solo un fragmento de nuestros ficheros y que además podemos
resaltar algunas líneas. Para ver un ejemplo, supongamos que tenemos el siguiente fragmento de código (prestad atención
a las anotaciones):
package main
import "fmt"
//START OMIT
func main() { // HL12
fmt.Println("Hello world!") // HL
} // HL12
//END OMIT
Entonces:
- Con
.code hello.go
podríamos visualizar y resaltar el código. - Y con
.code hello.go /^//START/,/^//END/ HL12
solo mostraríamos ese fragmento de código además de resaltar el código indicado (HL12
).
Para finalizar, veamos un ejemplo visual de cómo quedaría:
Finalmente, os aconsejamos echar un vistazo al repositorio con todas la charlas de Google, pues probablemente sea la mejor base de datos de ejemplos.
Y vosotros, ¿ya estábais usando el paquete present
de Go? ¿Os ha parecido interesante?
Como siempre, estaremos muy agradecidos de que nos dejéis vuestras experiencias personales, dudas o sugerencias en los comentarios o en nuestra cuenta de Twitter.