Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New multi-course structure for training materials #486

Draft
wants to merge 37 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from 17 commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
877e069
New multi-course structure for training materials
vdauwera Dec 16, 2024
c016370
Prettier
vdauwera Dec 16, 2024
7a9f351
Prune the nf-core/experimental courses from the top nav
vdauwera Dec 16, 2024
1908183
fix dash to underscore
vdauwera Dec 16, 2024
fda657c
Breaking down Hello World into smaller pieces
vdauwera Dec 23, 2024
c531f4c
Reorganized components of Hello World across Hello Nextflow
vdauwera Dec 24, 2024
5fd4852
Update the navs
vdauwera Jan 2, 2025
7a235c5
Updated the training portal index page to describe the new world order
vdauwera Jan 3, 2025
be194b5
make the buttons the same
vdauwera Jan 3, 2025
fb73251
Completed update of Hello World
vdauwera Jan 8, 2025
5db1e7a
Completed new Hello Channels (based on parts of old Hello World)
vdauwera Jan 9, 2025
4386ad4
Completed first pass of new Hello Plumbing module
vdauwera Jan 9, 2025
463eb12
minor fixes
vdauwera Jan 9, 2025
0ff8e97
Minor tweaks
vdauwera Jan 9, 2025
6e4d7de
Small improvements to Hello Plumbing
vdauwera Jan 10, 2025
0bdb899
Updated streamlined Hello Modules
vdauwera Jan 15, 2025
305e633
Minor fixes
vdauwera Jan 15, 2025
32773f9
Updated streamlined Hello Containers
vdauwera Jan 15, 2025
0ccab65
Apply suggestions from Jon's code review
vdauwera Jan 15, 2025
90422b5
Apply more suggestions from Jon's code review
vdauwera Jan 15, 2025
b97b832
Streamlined Hello Config
vdauwera Jan 18, 2025
015e57b
Moved intro to variable inputs and params back to Hello World
vdauwera Jan 19, 2025
4aa6798
Clean up parameters json bit in Hello Config and a few others
vdauwera Jan 20, 2025
1c60753
add demo-params.json back
vdauwera Jan 20, 2025
ca6794d
Minor updates based on discussion with Rob
vdauwera Jan 21, 2025
781ac39
Minor tweaks
vdauwera Jan 21, 2025
fdba39b
Move executor to after the process directives and
robsyme Jan 21, 2025
ba7f360
Merge remote-tracking branch 'refs/remotes/origin/gvda-streamline-hel…
robsyme Jan 21, 2025
89d5d8a
Test
robsyme Jan 21, 2025
a0739fb
Hello World COMPLETE
vdauwera Jan 21, 2025
745f709
Merge branch 'gvda-streamline-hello-nextflow' of https://github.com/n…
vdauwera Jan 21, 2025
b20c55c
Hello Channels COMPLETE
vdauwera Jan 21, 2025
96db041
Hello Workflow COMPLETE
vdauwera Jan 21, 2025
6507980
Hello Modules COMPLETE
vdauwera Jan 21, 2025
51f3010
Hello Containers COMPLETE
vdauwera Jan 21, 2025
1a2f327
Fix for cowsay issue -> switch to cowpy
vdauwera Jan 21, 2025
24c0234
Hello Config COMPLETE and fixed
vdauwera Jan 21, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions docs/advanced/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ This is an aspect of Nextflow that can be confusing. There are multiple ways of

This gives us two complications:

- At which location should I be loading a configuration value?
- Given a particular parameter, how do I know where it was set?
- At which location should I be loading a configuration value?
- Given a particular parameter, how do I know where it was set?

## Precedence

Expand Down Expand Up @@ -152,15 +152,15 @@ The most common use for dynamic process directives is to enable tasks that fail

To enable this, two directives are needed:

- `maxRetries`
- `errorStrategy`
- `maxRetries`
- `errorStrategy`

The `errorStrategy` directive determines what action Nextflow should take in the event of a task failure (a non-zero exit code). The available options are:

- `terminate`: Nextflow terminates the execution as soon as an error condition is reported. Pending jobs are killed (default)
- `finish`: Initiates an orderly pipeline shutdown when an error condition is raised, waiting the completion of any submitted job.
- `ignore`: Ignores processes execution errors.
- `retry`: Re-submit for execution a process returning an error condition.
- `terminate`: Nextflow terminates the execution as soon as an error condition is reported. Pending jobs are killed (default)
- `finish`: Initiates an orderly pipeline shutdown when an error condition is raised, waiting the completion of any submitted job.
- `ignore`: Ignores processes execution errors.
- `retry`: Re-submit for execution a process returning an error condition.

If the `errorStrategy` is "retry", then it will retry up to the value of `maxRetries` times.

Expand Down
20 changes: 10 additions & 10 deletions docs/advanced/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,23 +16,23 @@ Let's get started!

By the end of this course you should:

- Describe commonly used and well understood operators
- Apply good practices for the propagation of metadata
- Group and split channels
- Apply Groovy helper classes to Nextflow scripts
- Sensibly structure workflows
- Apply layers of configuration to a workflow
- Describe commonly used and well understood operators
- Apply good practices for the propagation of metadata
- Group and split channels
- Apply Groovy helper classes to Nextflow scripts
- Sensibly structure workflows
- Apply layers of configuration to a workflow

## Audience & prerequisites

Please note that this is **not** a beginner's workshop and familiarity with Nextflow, the command line, and common file formats is assumed.

**Prerequisites**

- A GitHub account
- Experience with command line
- Familiarity with Nextflow and Groovy
- An understanding of common file formats
- A GitHub account
- Experience with command line
- Familiarity with Nextflow and Groovy
- An understanding of common file formats

## Follow the training video

Expand Down
20 changes: 10 additions & 10 deletions docs/advanced/introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,23 +14,23 @@ Let's get started!

By the end of this course you should:

- Describe commonly used and well understood operators
- Apply good practices for the propagation of metadata
- Group and split channels
- Apply Groovy helper classes to Nextflow scripts
- Sensibly structure workflows
- Apply layers of configuration to a workflow
- Describe commonly used and well understood operators
- Apply good practices for the propagation of metadata
- Group and split channels
- Apply Groovy helper classes to Nextflow scripts
- Sensibly structure workflows
- Apply layers of configuration to a workflow

## Audience & prerequisites

Please note that this is **not** a beginner's workshop and familiarity with Nextflow, the command line, and common file formats is assumed.

**Prerequisites**

- A GitHub account
- Experience with command line
- Familiarity with Nextflow and Groovy
- An understanding of common file formats
- A GitHub account
- Experience with command line
- Familiarity with Nextflow and Groovy
- An understanding of common file formats

## Follow the training video

Expand Down
4 changes: 2 additions & 2 deletions docs/advanced/metadata.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

A central challenge in a lot of batch-style computation is how to ensure the metadata describing a file remains with the file. Two good rules for handling metadata in Nextflow are:

- Metadata should be explicit - be extremely wary of metadata encoded in filenames
- Metadata should travel through channels with the data in a tuple element.
- Metadata should be explicit - be extremely wary of metadata encoded in filenames
- Metadata should travel through channels with the data in a tuple element.

## Metadata Import

Expand Down
6 changes: 3 additions & 3 deletions docs/advanced/support.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ title: Support
description: Advanced Nextflow Training Workshop
---

- Nextflow official documentation is available at [www.nextflow.io/docs/latest](https://www.nextflow.io/docs/latest/)
- If you have questions, ask on the Seqera Community Forum at [http://community.seqera.io/](http://community.seqera.io/)
- If you want to chat about Nextflow or plugin development, check the Nextflow Slack at [https://www.nextflow.io/slack-invite.html](https://www.nextflow.io/slack-invite.html)
- Nextflow official documentation is available at [www.nextflow.io/docs/latest](https://www.nextflow.io/docs/latest/)
- If you have questions, ask on the Seqera Community Forum at [http://community.seqera.io/](http://community.seqera.io/)
- If you want to chat about Nextflow or plugin development, check the Nextflow Slack at [https://www.nextflow.io/slack-invite.html](https://www.nextflow.io/slack-invite.html)
6 changes: 3 additions & 3 deletions docs/basic_training/cache_and_resume.fr.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,9 +90,9 @@ nextflow run <script> -w /some/scratch/dir

Le code de hachage des fichiers d'entrée est calculé en utilisant :

- le chemin d'accès complet au fichier
- la taille du fichier
- l'horodatage de la dernière modification
- le chemin d'accès complet au fichier
- la taille du fichier
- l'horodatage de la dernière modification

Par conséquent, le simple fait de ** toucher** un fichier invalidera l'exécution de la tâche correspondante.

Expand Down
6 changes: 3 additions & 3 deletions docs/basic_training/cache_and_resume.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,9 +90,9 @@ nextflow run <script> -w /some/scratch/dir

The hash code for input files is computed using:

- The complete file path
- The file size
- The last modified timestamp
- The complete file path
- The file size
- The last modified timestamp

Therefore, just **touching** a file will invalidate the related task execution.

Expand Down
6 changes: 3 additions & 3 deletions docs/basic_training/cache_and_resume.pt.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,9 +90,9 @@ nextflow run <script> -w /algum/diretorio/de/scratch

O código hash para os arquivos de entrada são computados usando:

- O caminho completo do arquivo
- O tamanho do arquivo
- A última marcação de tempo de modificação
- O caminho completo do arquivo
- O tamanho do arquivo
- A última marcação de tempo de modificação

Portanto, o simples uso do **touch** em um arquivo irá invalidar a execução da tarefa relacionada.

Expand Down
6 changes: 3 additions & 3 deletions docs/basic_training/channels.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@ Nextflow distinguishes two different kinds of channels: **queue** channels and *

A **queue** channel is an _asynchronous_ unidirectional _FIFO_ queue that connects two processes or operators.

- _asynchronous_ means that operations are non-blocking.
- _unidirectional_ means that data flows from a producer to a consumer.
- _FIFO_ means that the data is guaranteed to be delivered in the same order as it is produced. First In, First Out.
- _asynchronous_ means that operations are non-blocking.
- _unidirectional_ means that data flows from a producer to a consumer.
- _FIFO_ means that the data is guaranteed to be delivered in the same order as it is produced. First In, First Out.

A queue channel is implicitly created by process output definitions or using channel factories such as [Channel.of](https://www.nextflow.io/docs/latest/channel.html#of) or [Channel.fromPath](https://www.nextflow.io/docs/latest/channel.html#frompath).

Expand Down
6 changes: 3 additions & 3 deletions docs/basic_training/channels.pt.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ O Nextflow distingue dois tipos diferentes de canais: canais de **fila** e canai

Um canal de _fila_ é uma fila assíncrona unidirecional FIFO (First-in-First-out, o primeiro a entrar, é o primeiro a sair) que conecta dois processos ou operadores.

- _assíncrono_ significa que as operações ocorrem sem bloqueio.
- _unidirecional_ significa que os dados fluem do gerador para o consumidor.
- _FIFO_ significa que os dados são entregues na mesma ordem em que são produzidos. Primeiro a entrar, primeiro a sair.
- _assíncrono_ significa que as operações ocorrem sem bloqueio.
- _unidirecional_ significa que os dados fluem do gerador para o consumidor.
- _FIFO_ significa que os dados são entregues na mesma ordem em que são produzidos. Primeiro a entrar, primeiro a sair.

Um canal de fila é criado implicitamente por definições de saída de um processo ou usando fábricas de canal, como o [Channel.of](https://www.nextflow.io/docs/latest/channel.html#of) ou [Channel.fromPath](https://www.nextflow.io/docs/latest/channel.html#frompath).

Expand Down
8 changes: 4 additions & 4 deletions docs/basic_training/config.md
Original file line number Diff line number Diff line change
Expand Up @@ -347,10 +347,10 @@ singularity.enabled = true

The following protocols are supported:

- `library://` download the container image from the [Singularity Library service](https://cloud.sylabs.io/library).
- `shub://` download the container image from the [Singularity Hub](https://singularity-hub.org/).
- `docker://` download the container image from the [Docker Hub](https://hub.docker.com/) and convert it to the Singularity format.
- `docker-daemon://` pull the container image from a local Docker installation and convert it to a Singularity image file.
- `library://` download the container image from the [Singularity Library service](https://cloud.sylabs.io/library).
- `shub://` download the container image from the [Singularity Hub](https://singularity-hub.org/).
- `docker://` download the container image from the [Docker Hub](https://hub.docker.com/) and convert it to the Singularity format.
- `docker-daemon://` pull the container image from a local Docker installation and convert it to a Singularity image file.

!!! warning

Expand Down
8 changes: 4 additions & 4 deletions docs/basic_training/config.pt.md
Original file line number Diff line number Diff line change
Expand Up @@ -273,10 +273,10 @@ singularity.enabled = true

Os seguintes protocolos são suportados:

- `library://` baixe a imagem do contêiner do [Singularity Library service](https://cloud.sylabs.io/library).
- `shub://` baixe a imagem do contêiner do [Singularity Hub](https://singularity-hub.org/).
- `docker://` baixe a imagem do contêiner do [Docker Hub](https://hub.docker.com/) e a converta para o formato Singularity.
- `docker-daemon://` extraia a imagem do contêiner de uma instalação local do Docker e a converta em um arquivo de imagem Singularity.
- `library://` baixe a imagem do contêiner do [Singularity Library service](https://cloud.sylabs.io/library).
- `shub://` baixe a imagem do contêiner do [Singularity Hub](https://singularity-hub.org/).
- `docker://` baixe a imagem do contêiner do [Docker Hub](https://hub.docker.com/) e a converta para o formato Singularity.
- `docker-daemon://` extraia a imagem do contêiner de uma instalação local do Docker e a converta em um arquivo de imagem Singularity.

!!! tip

Expand Down
4 changes: 2 additions & 2 deletions docs/basic_training/containers.md
Original file line number Diff line number Diff line change
Expand Up @@ -224,8 +224,8 @@ docker run my-image \

To mount a filesystem within a Docker container, you can use the `--volume` command-line option when running the container. Its argument consists of two fields separated by a colon (:):

- Host source directory path
- Container target directory path
- Host source directory path
- Container target directory path

For example:

Expand Down
18 changes: 9 additions & 9 deletions docs/basic_training/debugging.fr.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,15 +49,15 @@ Si cela ne suffit pas, `cd` dans le répertoire de travail de la tâche. Il cont

Le répertoire d'exécution de la tâche contient ces fichiers :

- `.command.sh` : Le script de commande.
- `.command.run` : La commande enveloppée utilisée pour exécuter la tâche.
- `.command.out` : La sortie standard complète de la tâche.
- `.command.err` : L'erreur standard de la tâche complète.
- `.command.log` : La sortie de l'exécution du wrapper.
- `.command.begin` : Fichier sentinelle créé dès que la tâche est lancée.
- `.exitcode` : Un fichier contenant le code de sortie de la tâche.
- Fichiers d'entrée de la tâche (liens symboliques)
- Fichiers de sortie de la tâche
- `.command.sh` : Le script de commande.
- `.command.run` : La commande enveloppée utilisée pour exécuter la tâche.
- `.command.out` : La sortie standard complète de la tâche.
- `.command.err` : L'erreur standard de la tâche complète.
- `.command.log` : La sortie de l'exécution du wrapper.
- `.command.begin` : Fichier sentinelle créé dès que la tâche est lancée.
- `.exitcode` : Un fichier contenant le code de sortie de la tâche.
- Fichiers d'entrée de la tâche (liens symboliques)
- Fichiers de sortie de la tâche

Vérifiez que le fichier `.command.sh` contient la commande attendue et que toutes les variables sont correctement résolues.

Expand Down
18 changes: 9 additions & 9 deletions docs/basic_training/debugging.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,15 +49,15 @@ If this is not enough, `cd` into the task work directory. It contains all the fi

The task execution directory contains these files:

- `.command.sh`: The command script.
- `.command.run`: The command wrapped used to run the task.
- `.command.out`: The complete task standard output.
- `.command.err`: The complete task standard error.
- `.command.log`: The wrapper execution output.
- `.command.begin`: Sentinel file created as soon as the task is launched.
- `.exitcode`: A file containing the task exit code.
- Task input files (symlinks)
- Task output files
- `.command.sh`: The command script.
- `.command.run`: The command wrapped used to run the task.
- `.command.out`: The complete task standard output.
- `.command.err`: The complete task standard error.
- `.command.log`: The wrapper execution output.
- `.command.begin`: Sentinel file created as soon as the task is launched.
- `.exitcode`: A file containing the task exit code.
- Task input files (symlinks)
- Task output files

Verify that the `.command.sh` file contains the expected command and all variables are correctly resolved.

Expand Down
18 changes: 9 additions & 9 deletions docs/basic_training/debugging.pt.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,15 +50,15 @@ Se isso não for o suficiente, use `cd` para entrar no diretório de trabalho da

O diretório de execução da tarefa possui os seguintes arquivos:

- `.command.sh`: O script do comando.
- `.command.run`: Um wrapper do comando usado para executar a tarefa.
- `.command.out`: A saída padrão completa da tarefa.
- `.command.err`: O erro padrão completo da tarefa.
- `.command.log`: A saída do wrapper de execução.
- `.command.begin`: Um arquivo sentinela criado no momento que a tarefa é iniciada.
- `.exitcode`: Um arquivo contendo o código de saída da tarefa.
- Os arquivos de entrada da tarefa (links simbólicas)
- Os arquivos de saída da tarefa
- `.command.sh`: O script do comando.
- `.command.run`: Um wrapper do comando usado para executar a tarefa.
- `.command.out`: A saída padrão completa da tarefa.
- `.command.err`: O erro padrão completo da tarefa.
- `.command.log`: A saída do wrapper de execução.
- `.command.begin`: Um arquivo sentinela criado no momento que a tarefa é iniciada.
- `.exitcode`: Um arquivo contendo o código de saída da tarefa.
- Os arquivos de entrada da tarefa (links simbólicas)
- Os arquivos de saída da tarefa

Certifique-se que o arquivo `.command.sh` contém o comando esperado e que todas as variáveis
foram substituídas pelos valores desejados.
Expand Down
4 changes: 2 additions & 2 deletions docs/basic_training/executors.fr.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,8 @@ sbatch launch_nf.sh /home/my_user/path/my_workflow.nf /home/my_user/path/my_conf
Vous trouverez plus de détails sur l'exemple ci-dessus [ici](https://lescailab.unipv.it/guides/eos_guide/use_nextflow.html#large-testing-or-production).
Vous trouverez d'autres conseils pour l'exécution de Nextflow sur HPC dans les articles de blog suivants :

- [5 astuces Nextflow pour les utilisateurs HPC](https://www.nextflow.io/blog/2021/5_tips_for_hpc_users.html)
- [Cinq astuces supplémentaires pour les utilisateurs de Nextflow sur le HPC](https://www.nextflow.io/blog/2021/5-more-tips-for-nextflow-user-on-hpc.html)
- [5 astuces Nextflow pour les utilisateurs HPC](https://www.nextflow.io/blog/2021/5_tips_for_hpc_users.html)
- [Cinq astuces supplémentaires pour les utilisateurs de Nextflow sur le HPC](https://www.nextflow.io/blog/2021/5-more-tips-for-nextflow-user-on-hpc.html)

### Configurer le processus par nom

Expand Down
4 changes: 2 additions & 2 deletions docs/basic_training/executors.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,8 @@ sbatch launch_nf.sh /home/my_user/path/my_workflow.nf /home/my_user/path/my_conf
You can find more details about the example above [here](https://lescailab.unipv.it/guides/eos_guide/use_nextflow.html#large-testing-or-production).
You can find more tips for running Nextflow on HPC in the following blog posts:

- [5 Nextflow Tips for HPC Users](https://www.nextflow.io/blog/2021/5_tips_for_hpc_users.html)
- [Five more tips for Nextflow user on HPC](https://www.nextflow.io/blog/2021/5-more-tips-for-nextflow-user-on-hpc.html)
- [5 Nextflow Tips for HPC Users](https://www.nextflow.io/blog/2021/5_tips_for_hpc_users.html)
- [Five more tips for Nextflow user on HPC](https://www.nextflow.io/blog/2021/5-more-tips-for-nextflow-user-on-hpc.html)

### Configure process by name

Expand Down
4 changes: 2 additions & 2 deletions docs/basic_training/executors.pt.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,8 @@ sbatch launch_nf.sh /home/meu_usuario/caminho/meu_fluxo_de_trabalho.nf /home/meu

Você pode encontrar mais detalhes sobre o exemplo acima [aqui](https://lescailab.unipv.it/guides/eos_guide/use_nextflow.html#large-testing-or-production). Você também poderá encontrar mais dicas de como executar o Nextflow em HPC nos seguintes posts de blog:

- [5 Nextflow Tips for HPC Users](https://www.nextflow.io/blog/2021/5_tips_for_hpc_users.html)
- [Five more tips for Nextflow user on HPC](https://www.nextflow.io/blog/2021/5-more-tips-for-nextflow-user-on-hpc.html)
- [5 Nextflow Tips for HPC Users](https://www.nextflow.io/blog/2021/5_tips_for_hpc_users.html)
- [Five more tips for Nextflow user on HPC](https://www.nextflow.io/blog/2021/5-more-tips-for-nextflow-user-on-hpc.html)

### Configure processos por nome

Expand Down
10 changes: 5 additions & 5 deletions docs/basic_training/index.es.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,11 @@ Realizamos un evento de capacitación en línea gratuito para este curso aproxim
Si el inglés no es su idioma preferido, puede resultarle útil seguir la capacitación del [evento de marzo de 2023](https://nf-co.re/events/2023/training-march-2023), que realizamos en múltiples idiomas.
Tenga en cuenta que algunas partes del material de capacitación pueden haberse actualizado desde que se registró.

- :flag_gb: [En Inglés](https://youtube.com/playlist?list=PL3xpfTVZLcNhoWxHR0CS-7xzu5eRT8uHo)
- :flag_in: [En Hindú](https://youtube.com/playlist?list=PL3xpfTVZLcNikun1FrSvtXW8ic32TciTJ)
- :flag_es: [En Español](https://youtube.com/playlist?list=PL3xpfTVZLcNhSlCWVoa3GURacuLWeFc8O)
- :flag_pt: [En Portugues](https://youtube.com/playlist?list=PL3xpfTVZLcNhi41yDYhyHitUhIcUHIbJg)
- :flag_fr: [En Francés](https://youtube.com/playlist?list=PL3xpfTVZLcNhiv9SjhoA1EDOXj9nzIqdS)
- :flag_gb: [En Inglés](https://youtube.com/playlist?list=PL3xpfTVZLcNhoWxHR0CS-7xzu5eRT8uHo)
- :flag_in: [En Hindú](https://youtube.com/playlist?list=PL3xpfTVZLcNikun1FrSvtXW8ic32TciTJ)
- :flag_es: [En Español](https://youtube.com/playlist?list=PL3xpfTVZLcNhSlCWVoa3GURacuLWeFc8O)
- :flag_pt: [En Portugues](https://youtube.com/playlist?list=PL3xpfTVZLcNhi41yDYhyHitUhIcUHIbJg)
- :flag_fr: [En Francés](https://youtube.com/playlist?list=PL3xpfTVZLcNhiv9SjhoA1EDOXj9nzIqdS)

## Descripción general

Expand Down
Loading
Loading