Un Codelab es un conjunto de diapositivas que sirven como tutorial interactivo, se puede crear utilizando Google Docs o un archivo markdown. Para ver algunos ejemplos de Codelabs, se puede visitar el sitio de Google Codelabs.
Principalmente, un archivo md para Codelabs se compone de 2 partes:
La metadata es lo primero que se debe agregar en el archivo markdown con el formato key: value
. La metadata requerida para la publicación del Codelab es:
environments: Web
Draft
, Published
, Deprecated
o Hidden
. Se puede seleccionar uno o más de estos estados, pero siempre y cuando el Codelab no se autorice para su publicación, se debe utilizar status: Draft
.summary: How to Write a Codelab
id: how-to-write-a-codelab
categories: howto
tags: howto, Codelabs, tutorial
status: Draft
authors: Erik Valdivieso, Miguel Osbaldo
Como ya se mencionó antes, se requiere de un documento markdown para crear un Codelab. Este documento tiene una sintaxis normal de markdown, a excepción de los headers que ya se explicaron anteriormente y de la estimación de tiempo por paso.
El header #
será el título/nombre d,
También se debe seguir unos formatos específicos para la inserción de fragmentos de código, más adelante se especificará éstos.
Para indicar un estimado de cuánto tiempo tomará avanzar por las diapositivas, se utiliza el metadata Duration
insertándolo debajo de cada encabezado de nivel 2 (es decir ##
).
A esta metadata se le asigna un valor entero, el cual indica los minutos que se estima se tardará en completar la diapositiva, p.e Duration: 4
indica que se estima que esa diapositiva se completará en 4 minutos.
El tiempo total se calculará automáticamente y se mostrará en el Codelab una vez se haya creado.
El motor de Codelabs interpreta estos fragmentos de código y les da un formato dependiendo de cómo se inserten. Para incluir fragmentos de código, se debe hacer de dos formas:
Si se inserta un bloque de código Javascript, se tendría que escribir de la siguiente manera:
```javascript
{
key1: "string",
key2: integer,
key3: "string"
}
```
Esto se vería de la siguiente forma:
{
key1: "string",
key2: integer,
key3: "string"
}
Si el código es en lenguaje Java
```java
for (int i = 1; i < length i++;) {
// bloque de código
}
```
El resultado sería:
for (int i = 1; i < length i++;) {
// bloque de código
}
Para publicar un Codelab en CONACyT se debe cumplir con ciertas reglas:
assets
.ejemplo-de-nombre-1.md
.ejemplo-de-nombre-1.md +---- assets +---- ejemplo-de-nombre-1 |---- imagen-1.png |---- imagen-2.png |---- imagen-3.png
Draft
(solo se cambiará de estatus cuando esté autorizado)Las categorias por default de Codelabs son:
about | ads |
analytics | android, android-kotlin, android-tv |
android-auto | android-things |
android-wear | assistant |
ar, ar-core, augmented-reality, augmented-reality-core | cardboard, games, play-games, vr, virtualreality, virtualreality-games, virtual-reality, virtual-reality-games |
gsuite, g-suite, apps | docs |
drive | sheets |
slides | blockly |
cast, chromecast, chrome-cast | chrome, google-chrome, googlechrome |
cloud, cloud-about, cloud-general, cloud-other, cloud-others, cloud-platform, cloud-tools, cloud-cloud-tools | cloud-appengine, cloud-app-engine |
cloud-bigquery, cloud-big-query, bigquery, big-query | cloud-build |
cloud-compute, cloud-compute-engine | cloud-data, cloud-sql |
cloud-datalab, cloud-data-lab | cloud-iam |
cloud-iot, cloud-iot-core, iot-core, iot | cloud-key-management-service, cloud-kms |
cloud-ml, cloud-machine-learning | cloud-monitoring, cloud-monitor |
cloud-networking, cloud-network | cloud-security, cloud-security-command-center |
cloud-web, web | design |
firebase, firebase-web | flutter, flutter-firebase, flutter-android, design-flutter |
google-maps, googlemaps, maps, geo | nest |
openthread, open-thread | search |
slurm, hpc, cloud-hpc | tensorflow, tensor-flow |
unity | weave |
wear, wear-os | — |
Además de los agregados por default, se agregaron las siguientes categorías para el CONACyT:
vuejs | git |
java | docker |
api | jhipster |
ci-cd | howto |
A continuación se muestra un ejemplo sencillo de un Codelab en Markdown (también es posible verlo como un Codelab real).
summary: How to Write a Codelab
id: how-to-write-a-codelab
categories: Sample
tags: medium
status: Published
authors: Zarin
Feedback Link: https://zarin.io
# How to Write a Codelab
<!-- ------------------------ -->
## Overview
Duration: 1
### What You'll Learn
- how to set the amount of time each slide will take to finish
- how to include code snippets
- how to hyperlink items
- how to include images
- other stuff
<!-- ------------------------ -->
## Setting Duration
Duration: 2
To indicate how long each slide will take to go through, set the `Duration` under each Heading 2 (i.e. `##`) to an integer.
The integers refer to minutes. If you set `Duration: 4` then a particular slide will take 4 minutes to complete.
The total time will automatically be calculated for you and will be displayed on the codelab once you create it.
<!-- ------------------------ -->
## Code Snippets
Duration: 3
To include code snippets you can do a few things.
- Inline highlighting can be done using the tiny tick mark on your keyboard: "`"
- Embedded code
### JavaScript
```javascript
{
key1: "string",
key2: integer,
key3: "string"
}
```
### Java
```java
for (statement 1; statement 2; statement 3) {
// code block to be executed
}
```
<!-- ------------------------ -->
## Hyperlinking and Embedded Images
Duration: 1
### Hyperlinking
[Youtube - Halsey Playlists](https://www.youtube.com/user/iamhalsey/playlists)
### Images
![alt-text-here](assets/how-to-write-a-codelab/puppy.jpg)
<!-- ------------------------ -->
## Other Stuff|
Duration: 1
Checkout the official documentation here: [Codelab Formatting Guide](https://github.com/googlecodelabs/tools/blob/master/FORMAT-GUIDE.md)
Si se quiere tener un ambiente local donde poder previsualizar los borradores de los Codelabs, se puede seguir este tutorial.
Para más detalles sobre la estructura del Codelab, se puede consultar la guía de formato para Codelab
Si se requiere aprender sobre los archivos Markdown, se puede leer esta guía básica de sintaxis markdown.