From e9b3d696d1e2b1c30ba61ac22e6d415a1daf03e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABtan=20Manchon?= Date: Tue, 2 Jun 2026 13:14:49 +0200 Subject: [PATCH 01/13] replicate templating pr --- .github/workflows/build.yml | 24 + .rubocop.yml | 6 + Gemfile | 5 + Gemfile.lock | 29 + LINUX.es.md | 1020 ++++++++++++++ LINUX.md | 96 +- LINUX_keep_current.es.md | 301 +++++ LINUX_keep_current.md | 9 + VM.es.md | 879 ++++++++++++ VM.md | 227 ++-- WINDOWS.es.md | 1631 +++++++++++++++++++++++ WINDOWS.md | 239 ++-- WINDOWS_keep_current.es.md | 301 +++++ WINDOWS_keep_current.md | 9 + _partials/conda_uninstall.md | 21 +- _partials/direnv.md | 16 +- _partials/dotfiles_merge_upstream.md | 6 +- _partials/es/conda_uninstall.md | 21 +- _partials/es/direnv.md | 10 +- _partials/es/dotfiles_merge_upstream.md | 6 +- _partials/es/keep_current.md | 34 +- _partials/es/osx_python.md | 8 +- _partials/es/pip.md | 10 +- _partials/es/python_checkup.md | 8 +- _partials/es/ubuntu_python.md | 6 +- _partials/es/virtualenv.md | 2 +- _partials/gcp_setup.md | 16 +- _partials/keep_current.md | 34 +- _partials/osx_python.md | 10 +- _partials/pip.md | 10 +- _partials/python_checkup.md | 8 +- _partials/ubuntu_python.md | 8 +- _partials/virtualenv.md | 2 +- build.rb | 306 +---- builds/LINUX.yml | 35 + builds/LINUX_keep_current.yml | 6 + builds/VM.yml | 36 + builds/WINDOWS.yml | 44 + builds/WINDOWS_keep_current.yml | 6 + builds/macOS.yml | 37 + builds/macOS_keep_current.yml | 6 + constants/constants.yml | 7 + constants/repos.yml | 6 + doc/README.md | 28 + macOS.es.md | 1186 ++++++++++++++++ macOS.md | 80 +- macOS_keep_current.es.md | 317 +++++ macOS_keep_current.md | 7 + 48 files changed, 6478 insertions(+), 641 deletions(-) create mode 100644 .github/workflows/build.yml create mode 100644 .rubocop.yml create mode 100644 Gemfile create mode 100644 Gemfile.lock create mode 100644 LINUX.es.md create mode 100644 LINUX_keep_current.es.md create mode 100644 VM.es.md create mode 100644 WINDOWS.es.md create mode 100644 WINDOWS_keep_current.es.md create mode 100644 builds/LINUX.yml create mode 100644 builds/LINUX_keep_current.yml create mode 100644 builds/VM.yml create mode 100644 builds/WINDOWS.yml create mode 100644 builds/WINDOWS_keep_current.yml create mode 100644 builds/macOS.yml create mode 100644 builds/macOS_keep_current.yml create mode 100644 constants/constants.yml create mode 100644 constants/repos.yml create mode 100644 doc/README.md create mode 100644 macOS.es.md create mode 100644 macOS_keep_current.es.md diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..e6b731f --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,24 @@ +name: Build setup guides +on: + push: +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: ruby/setup-ruby@v1 + with: + bundler-cache: true + - name: Install dependencies + run: bundle install + - name: Build + run: | + git config user.name github-actions + git config user.email github-actions@github.com + bundle exec ruby build.rb + if ! git diff --exit-code + then + git add . + git commit -m "setup guides generated" + git push + fi diff --git a/.rubocop.yml b/.rubocop.yml new file mode 100644 index 0000000..6393cf2 --- /dev/null +++ b/.rubocop.yml @@ -0,0 +1,6 @@ + + Layout/HashAlignment: + Enabled: false + + Layout/LeadingEmptyLines: + Enabled: false diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..632fced --- /dev/null +++ b/Gemfile @@ -0,0 +1,5 @@ +source "https://rubygems.org" + +gem "liquid" +gem "base64" +gem "cgi" diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..29d32bb --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,29 @@ +GEM + remote: https://rubygems.org/ + specs: + base64 (0.3.0) + bigdecimal (4.1.2) + cgi (0.5.1) + liquid (5.12.0) + bigdecimal + strscan (>= 3.1.1) + strscan (3.1.8) + +PLATFORMS + arm64-darwin-24 + ruby + +DEPENDENCIES + base64 + cgi + liquid + +CHECKSUMS + base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b + bigdecimal (4.1.2) sha256=53d217666027eab4280346fba98e7d5b66baaae1b9c3c1c0ffe89d48188a3fbd + cgi (0.5.1) sha256=e93fcafc69b8a934fe1e6146121fa35430efa8b4a4047c4893764067036f18e9 + liquid (5.12.0) sha256=5a3c2c2430cd925d21c53e4ed9abea52cd0a9da53b541422f81dee79aca2a673 + strscan (3.1.8) sha256=aae2db611a225559f21ffbb71765c9a4e60fd262534a9ea84f4f11c7f32f679e + +BUNDLED WITH + 4.0.10 diff --git a/LINUX.es.md b/LINUX.es.md new file mode 100644 index 0000000..8d3528b --- /dev/null +++ b/LINUX.es.md @@ -0,0 +1,1020 @@ +# Instrucciones para la configuración + +Aquí abajo encontrarás las instrucciones para configurar tu computadora para [el curso de Data Analytics de Le Wagon](https://www.lewagon.com/data-analytics-course/full-time) + +Por favor **léelas cuidadosamente y ejecuta todos los comandos en el siguiente orden**. Si tienes algún problema, no dudes en pedirle ayuda a una profesor :raising_hand: + +¡Comencemos! :rocket: + + +## Cuenta GitHub + +¿Ya tienes una cuenta GitHub? Si no es el caso, [ábrela ya](https://github.com/join). + +:point_right: **[Sube una foto](https://github.com/settings/profile)** y escribe tu nombre correctamente en tu cuenta GitHub. Esto es importante porque nosotros usaremos un tablero de comando interno con tu avatar. Por favor hazlo **ahora** antes de dar un paso más en esta guía. + +![Foto GitHub](https://github.com/lewagon/setup/blob/master/images/github_picture.png) + +:point_right: **[Habilita la Autenticación de Dos Factores (2FA)](https://docs.github.com/en/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication#configuring-two-factor-authentication-using-text-messages)**. GitHub te enviará mensajes de texto con un código cuando intentes iniciar sesión. Esto es importante para la seguridad y también pronto será necesario para contribuir código en GitHub. + + +## Visual Studio Code + +### Instalación + +Instala el editor de texto [Visual Studio Code](https://code.visualstudio.com). + +Copia (presionando `Cmd` + `C`) el comando de aquí abajo y luego pégalo en tu terminal (`Ctrl` + `Shift` + `v`): + +```bash +wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg +sudo install -o root -g root -m 644 packages.microsoft.gpg /etc/apt/trusted.gpg.d/ +sudo sh -c 'echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/trusted.gpg.d/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" > /etc/apt/sources.list.d/vscode.list' +rm -f packages.microsoft.gpg +sudo apt update +sudo apt install -y code +``` + +Escribe tu contraseña cuando estos comandos te la pidan. + +:warning: Cuando escribas tu contraseña no verás nada en la pantalla. **Esto es normal**. Es una herramienta de seguridad para ocultar tanto el contenido de tu contraseña como su longitud. Simplemente escribe tu contraseña y presiona `Enter` al terminar. + +### Abrir desde la terminal + +Ahora abre VS Code desde **la terminal**: + +```bash +code +``` + +:heavy_check_mark: Si se acaba de abrir una ventana de VS Code, entonces todo está bien :+1: + +:x: Si no es el caso, por favor **pídele ayuda a un profesor**. + + +## Extensiones de VS Code + +### Instalación + +Instala algunas extensiones útiles para VS Code. + +```bash +code --install-extension ms-vscode.sublime-keybindings +code --install-extension emmanuelbeziat.vscode-great-icons +code --install-extension MS-vsliveshare.vsliveshare +code --install-extension ms-python.python +code --install-extension KevinRose.vsc-python-indent +code --install-extension ms-python.vscode-pylance +code --install-extension ms-toolsai.jupyter +code --install-extension alexcvzz.vscode-sqlite +``` + +Aquí está la lista de las extensiones que estás instalando: + +- [Sublime Text Keymap and Settings Importer](https://marketplace.visualstudio.com/items?itemName=ms-vscode.sublime-keybindings) +- [VSCode Great Icons](https://marketplace.visualstudio.com/items?itemName=emmanuelbeziat.vscode-great-icons) +- [Live Share](https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsliveshare) +- [Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python) +- [Python Indent](https://marketplace.visualstudio.com/items?itemName=KevinRose.vsc-python-indent) +- [Pylance](https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance) +- [Jupyter](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter) +- [SQLite](https://marketplace.visualstudio.com/items?itemName=alexcvzz.vscode-sqlite) + + +## Herramientas de línea de comando + +### Comprueba la configuración regional (locale) + +La "locale" es un mecanismo que permite adaptar los programas a su idioma y país. + +Comprobemos que la configuración regional por defecto es el inglés: + +```bash +locale +``` + +Si la salida no contiene `LANG=en_US.UTF-8`, ejecute el siguiente comando en un Ubuntu terminal para instalar la locale inglesa: + +```bash +sudo locale-gen en_US.UTF-8 +``` + +Si después, recibes una advertencia (`bash: warning: setlocale: LC_ALL: cannot change locale (en_US.utf-8)`) en tu terminal, por favor haz lo siguiente: + +
+ Generar la configuración regional<>/summary> + +Por favor, ejecuta estas líneas en tu terminal. + +```bash +sudo update-locale LANG=en_US.UTF8 +sudo apt-get update +sudo apt-get install language-pack-en language-pack-en-base manpages +``` +
+ +### Zsh & Git + +En lugar de usar el `bash` [shell](https://en.wikipedia.org/wiki/Shell_(computing)) predeterminado, usaremos `zsh`. + +También utilizaremos [`git`](https://git-scm.com/), un programa de línea de comando para control de versiones. + +Vamos a instalarlos, junto con otros programas útiles: +- Abre una **terminal de Ubuntu** +- Copia y pega los siguientes comandos: + +```bash +sudo apt update +``` + +```bash +sudo apt install -y curl git imagemagick jq unzip vim zsh +``` + +Estos comandos te pedirán tu contraseña: escríbela. + +:warning: Cuando escribas tu contraseña no verás nada en la pantalla. **Esto es normal**. Es una herramienta de seguridad para ocultar tanto el contenido de tu contraseña como su longitud. Simplemente escribe tu contraseña y presiona `Enter` al terminar. + +### Instalación de la CLI de GitHub + +Instalemos la [CLI oficial de GitHub](https://cli.github.com) (Interfaz de Línea de Comando). Es un programa que se usa para interactuar con tu cuenta GitHub por medio de la línea de comando. + +En tu terminal, copia y pega los siguientes comandos y escribe tu contraseña si te la piden: + +```bash +sudo apt remove -y gitsome # gh command can conflict with gitsome if already installed +curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg +echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null +sudo apt update +sudo apt install -y gh +``` + +Ejecuta el comando que te mostramos a continuación para verificar que `gh` se haya instalado correctamente en tu máquina: + +```bash +gh --version +``` + +:heavy_check_mark: Si ves esta versión `gh version X.Y.Z (YYYY-MM-DD)`, puedes continuar trabajando :+1: + +:x: Si no es el caso, por favor **contacta a un profesor** + + +## Oh-my-zsh + +Instalemos el plugin `zsh` [Oh My Zsh](https://ohmyz.sh/). + +Ejecuta este comando en la terminal: + +```bash +sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" +``` + +Si te preguntan "Do you want to change your default shell to zsh?", presiona `Y` + +Cuando termines, tu terminal debería lucir así: + +![La terminal de Ubuntu con OhMyZsh](https://github.com/lewagon/setup/blob/master/images/oh_my_zsh.png) + +:heavy_check_mark: Si es el caso, puedes continuar :+1: + +:x: Si no, por favor **pídele ayuda a un profesor**. + + +## direnv + +[direnv](https://direnv.net/) es una extensión del shell. Facilita trabajar con variables de entorno por proyecto, lo cual será útil para customizar el comportamiento de tu código. + + +``` bash +sudo apt-get update; sudo apt-get install direnv +echo 'eval "$(direnv hook zsh)"' >> ~/.zshrc +``` + + + +## GitHub CLI + +CLI es una abreviación de [Command-line Interface](https://en.wikipedia.org/wiki/Command-line_interface) que significa interfaz de línea de comando. + +En esta sección usaremos [GitHub CLI](https://cli.github.com/) para interactuar directamente con GitHub desde la terminal. + +Usaremos la GitHub CLI (`gh`) para conectarnos a GitHub utilizando *SSH*, un protocolo para iniciar la sesión utilizando claves SSH en lugar de la famosa pareja nombre de usuario y contraseña. + +Ya debería haberse instalado en tu computadora con los comandos que ejecutaste anteriormente. + +Lo primero que hay que hacer para **iniciar sesión** es copiar y pegar el comando siguiente en tu terminal: + +:warning: **NO edites el `email`** — Aunque `user:email` parezca un marcador de posición para tu dirección de correo real, no lo es — no lo reemplaces. + +```bash +gh auth login -s 'user:email' -w --git-protocol ssh +``` + +`gh` le hará algunas preguntas: + +- `Generate a new SSH key to add to your GitHub account?` Presiona `Enter` para pedirle a gh que genere las claves SSH por ti. + + Si ya tienes claves SSH, verás en su lugar `Upload your SSH public key to your GitHub account?`Con las flechas, selecciona la ruta de tu archivo de clave pública y pulsa `Intro`. + +- `Enter a passphrase for your new SSH key (Optional)`: + - **PARA LA MAYORÍA DE LOS ESTUDIANTES:** Simplemente presiona `Enter` para omitir. No necesitas una contraseña para el bootcamp y te la pediría cada vez que uses la clave. Sin embargo, hay un riesgo de que si alguien roba tu computadora, pueda subir código a GitHub. + - **SI LA SEGURIDAD ES MUY IMPORTANTE PARA TI:** Escribe una contraseña de tu elección y presiona `Enter`. Es _muy_ importante que si introduces una contraseña, la anotes en algún lugar inmediatamente y no la pierdas ni la olvides. Tendrás que introducirla con frecuencia. + +- `Title for your SSH key`. Puede dejarlo en la propuesta "GitHub CLI", presiona `Enter`. + +Obtendrás el siguiente resultado: + +```bash +! First copy your one-time code: 0EF9-D015 +- Press Enter to open github.com in your browser... +``` + +Selecciona y copia el código (`0EF9-D015` en el ejemplo) y luego presiona `Enter`. + +Tu navegador se abrirá y te pedirá que autorices GitHub CLI para usar tu cuenta GitHub. Acepta y espera un poco. + +Regresa a la terminal, presiona `Enter` nuevamente y listo. Eso es todo. + +Para verificar que están conectado correctamente, escribe lo siguiente: + +```bash +gh auth status +``` + +:heavy_check_mark: Si obtienes este mensaje: `Logged in to github.com as `, significa que todo está bien :+1: + +:x: De lo contrario, **contacta a un profesor**. + + +## CLI de Google Cloud + +Instala la CLI de `gcloud` para comunicar con [Google Cloud Platform](https://cloud.google.com/) a través de la terminal: + +```bash +echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list +sudo apt-get install apt-transport-https ca-certificates gnupg +curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add - +sudo apt-get update && sudo apt-get install google-cloud-sdk +sudo apt-get install google-cloud-sdk-app-engine-python +``` + +👉 [Documentación para la instalación](https://cloud.google.com/sdk/docs/install#deb) + + +## Dotfiles + +Los hackers aman mejorar sus shells y sus herramientas. Comenzaremos con una configuración por defecto genial proporcionada por [Le Wagon](http://github.com/lewagon/dotfiles) y almacenada en GitHub. + +### Verifica tu configuración de GitHub CLI + +Primero, hagamos una verificación rápida. Abre tu terminal y ejecuta el comando siguiente: + +```bash +export GITHUB_USERNAME=`gh api user | jq -r '.login'` +echo $GITHUB_USERNAME +``` + +Deberías ver tu usuario GitHub. Si no es así, **no hagas más nada** y pide ayuda. +Parece que hay un problema con el paso anterior (`gh auth`). + +### Fork y/o clone los archivos de configuración + +Hay tres opciones, escoge **una**: + + +
+ + No he hecho el bootcamp de Web Development o Data Science & AI o Data Analytics de Le Wagon + + + Tu configuración es personal, así que necesitas tu propio repositorio para almacenarla. Primero tienes que hacer el fork del repositorio en tu cuenta GitHub. + +Hacer un fork significa que crearás un nuevo repositorio en tu cuenta GitHub idéntico al original. Tendrás un nuevo repositorio en tu cuenta GitHub, `your_github_username/dotfiles`. El fork es necesario porque cada uno de ustedes necesitará poner información específica (e.g. tu nombre) en esos archivos. + +Ejecutemos este comando para hacer un **fork** del repositorio `lewagon/dotfiles` y clonarlo: + +```bash +mkdir -p ~/code/$GITHUB_USERNAME && cd $_ +gh repo fork lewagon/dotfiles --clone +``` + +
+ + +
+ + Ya hice el bootcamp de Web Development o Data Science & AI o Data Analytics de Le Wagon pero tengo una nueva laptop + + +Esto significa que ya has hecho el fork del repositorio GitHub lewagon/dotfiles pero tal vez la configuración para el nuevo bootcamp de Data Analytics no estaba lista en ese momento.Actualicémoslo. **Pide a un TA que te acompañe en los siguientes pasos.** + +Es hora de clonarlo el repositorio en tu laptop: + +```bash +mkdir -p ~/code/$GITHUB_USERNAME && cd $_ +gh repo clone lewagon/dotfiles +``` + + +Abre tu terminal y ve a tu proyecto `dotfiles`: + +```bash +cd ~/code/$GITHUB_USERNAME$/dotfiles +``` + +Es hora de fusionar los cambios de lewagon/dotfiles en los tuyos: + +1. Commit la versión actual de tus dotfiles: + ```bash + git add . + git status # Check what will be committed + git commit -m "Version prior to new setup" + ``` + +1. Trae los cambios del repositorio upstream: `git merge upstream/master` + +1. Verifica que no estés en estado MERGING. Si lo estás, resuelve los conflictos. + +1. Haz un `git diff HEAD~1 HEAD` para revisar qué cambió. + +1. Si todo parece estar en orden, continúa. + +
+ ¿Demasiados conflictos? + + + Vamos a tomar la versión actual de `lewagon/dotfiles`. + + Primero aborta la merge: `git merge --abort`. + + Ejecuta `code .` + + En VS Code, abre el archivo zshrc. Reemplaza su contenido con la [versión más reciente](https://raw.githubusercontent.com/lewagon/dotfiles/master/zshrc). Luego guárdalo en el disco. + + Aún en VS Code, abre el archivo `zprofile`. Reemplaza su contenido con la [versión más reciente](https://raw.githubusercontent.com/lewagon/dotfiles/master/zprofile). Luego guárdalo en el disco. + + Regresa a la terminal y ejecuta un `git diff` y verifica que esto no haya eliminado ninguna configuración personal que quisieras conservar. + +
+ +Es hora de guardar tus cambios y subirlos. + +```bash +git add . +git commit -m "Update for Data Analytics bootcamp" +git push origin master +``` + +
+ + +
+ + Ya hice el bootcamp de Web Development o Data Science & AI o Data Analytics de Le Wagon en la misma laptop + + +Esto significa que ya has hecho el fork del repositorio GitHub lewagon/dotfiles pero tal vez la configuración para el nuevo bootcamp de Data Analytics no estaba lista en ese momento. Actualicémoslo. **Pide a un TA que te acompañe en los siguientes pasos.** + + +Abre tu terminal y ve a tu proyecto `dotfiles`: + +```bash +cd ~/code/$GITHUB_USERNAME$/dotfiles +``` + +Es hora de fusionar los cambios de lewagon/dotfiles en los tuyos: + +1. Commit la versión actual de tus dotfiles: + ```bash + git add . + git status # Check what will be committed + git commit -m "Version prior to new setup" + ``` + +1. Trae los cambios del repositorio upstream: `git merge upstream/master` + +1. Verifica que no estés en estado MERGING. Si lo estás, resuelve los conflictos. + +1. Haz un `git diff HEAD~1 HEAD` para revisar qué cambió. + +1. Si todo parece estar en orden, continúa. + +
+ ¿Demasiados conflictos? + + + Vamos a tomar la versión actual de `lewagon/dotfiles`. + + Primero aborta la merge: `git merge --abort`. + + Ejecuta `code .` + + En VS Code, abre el archivo zshrc. Reemplaza su contenido con la [versión más reciente](https://raw.githubusercontent.com/lewagon/dotfiles/master/zshrc). Luego guárdalo en el disco. + + Aún en VS Code, abre el archivo `zprofile`. Reemplaza su contenido con la [versión más reciente](https://raw.githubusercontent.com/lewagon/dotfiles/master/zprofile). Luego guárdalo en el disco. + + Regresa a la terminal y ejecuta un `git diff` y verifica que esto no haya eliminado ninguna configuración personal que quisieras conservar. + +
+ +Es hora de guardar tus cambios y subirlos. + +```bash +git add . +git commit -m "Update for Data Analytics bootcamp" +git push origin master +``` + +
+ + +### Ejecuta el instalador de dotfiles + +Ejecuta el instalador de `dotfiles`. + +```bash +cd ~/code/$GITHUB_USERNAME/dotfiles && zsh install.sh +``` + +Verifica los emails registrados en tu cuenta GitHub. Deberás seleccionar uno de ellos en el próximo paso: + +```bash +gh api user/emails | jq -r '.[].email' +``` + +Ejecuta el instalador de git: + +```bash +cd ~/code/$GITHUB_USERNAME/dotfiles && zsh git_setup.sh +``` + +:point_up: Esto te **guiará** con tu nombre (`FirstName LastName`) y con tu email. +:warning: Cuidado, **debes** poner uno de los emails de la lista de arriba que te suministra el comando `gh api ...` usado anteriormente. Si haces eso, Kitt no podrá hacerle seguimiento a tu progreso. Cualquier correo que elijas se mostrará **públicamente** en internet. 💡 Selecciona la dirección `@users.noreply.github.com` si no quieres que tu correo electrónico aparezca en los repositorios públicos a los que puedas contribuir. + +Ahora **cierra** todas las ventanas de tu terminal que tengas abiertas por favor. + + +## Desahilitación de la solicitud de SSH passphrase + +No vas a querer que te pidan tu passphrase cada vez que te comuniques con un repositorio remoto. Por eso debes agregarle plugin `ssh-agent` a `oh my zsh`: + +Primero abre el archivo `.zshrc`: + +```bash +code ~/.zshrc +``` + +Luego: +- Identifica la línea que comienza por `plugins=` +- Agrega `ssh-agent` al final de la lista de plugins + +La lista debería verse de la siguiente manera: + +```bash +plugins=(gitfast last-working-dir common-aliases zsh-syntax-highlighting history-substring-search pyenv ssh-agent) +``` + +:heavy_check_mark: Guarda el archivo `.zshrc` con `Ctrl` + `S` y cierra tu editor de texto. + + +## Instalando Python (con [`pyenv`](https://github.com/pyenv/pyenv)) + +### Desinstalar `conda` + +Como estamos utilizando `pyenv` para instalar y gestionar la versión de Python, necesitamos desinstalar [`conda`](https://docs.conda.io/projects/conda/en/latest/), otro gestor de paquetes que podrías tener en tu computadora si previamente instalaste [Anaconda](https://www.anaconda.com/). De esta forma, evitaremos problemas con Python más adelante. + +Chequea si tienes `conda` instalado en tu computadora: + +```bash +conda list +``` + +Si aparece `zsh: command not found: conda`, puedes **saltear** la desinstalación de `conda` e ir directo a la sección de **Instalar pre-requisitos**. + + +
+ Instrucciones de desinstalación conda + +- Instala el paquete Anaconda-Clean desde tu terminal y comienza la limpieza +```bash +conda install anaconda-clean +anaconda-clean --yes +``` +- Remueve todos los directorios de Anaconda +```bash +rm -rf ~/anaconda2 +rm -rf ~/anaconda3 +rm -rf ~/.anaconda_backup + +``` +- Elimina el directorio Anaconda de tu `.bash_profile` + - Abre el archivo con `code ~/.bash_profile` + - Si el archivo abre, busca la línea que coincida con el siguiente patrón `export PATH="/path/to/anaconda3/bin:$PATH"` y eliminala + + - Guarda el archivo con `CTRL` + `s` + +- Reinicia la terminal con `exec zsh` +- Remueve la inicializaciópn de Anaconda de tu `.zshrc`: + - Abre el archivo con `code ~/.zshrc` + - Remueve las líneas de código desde `>>> conda initialize >>>` hasta `<<< conda initialize <<<` +
+ + +### Instala `pyenv` + +Ubuntu viene con una versión vieja de Python que no queremos usar. Tal vez ya hayas instalado Anaconda u otro programa para utilizar Python y paquetes de Ciencia de Datos. Si es así, no pasa nada ya que haremos una configuración profesional de Python que te permitirá cambiar de versión cuando quieras al escribir `python` en la terminal. + +Primero instala `pyenv` con el siguiente comando en la Terminal: + +```bash +git clone https://github.com/pyenv/pyenv.git ~/.pyenv +exec zsh +``` + +Instala algunas [dependencias](https://github.com/pyenv/pyenv/wiki/common-build-problems#prerequisites) necesarias para crear Python desde `pyenv`: + +```bash +sudo apt-get update; sudo apt-get install make build-essential libssl-dev zlib1g-dev \ +libbz2-dev libreadline-dev sqlite3 libsqlite3-dev wget curl llvm \ +libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev \ +python3-dev +``` + +### Instala Python + +Instala la [última versión estable de Python](https://www.python.org/doc/versions/) que sea aceptada en el currículum de Le Wagon: + +```bash +pyenv install 3.12.9 +``` + +Este comando puede tomar un tiempo en ejecutarse. Esto es completamente normal. ¡No dudes en ayudar a los estudiantes que estén sentados cerca de ti! + +OK. Cuando este comando termine de ejecutarse, le diremos al sistema que use esta versión de Python **por defecto**. Esto se hace con: + +```bash +pyenv global 3.12.9 +exec zsh +``` + +Para verificar que esto haya funcionado, ejecuta `python --version`. Si ves `3.12.9`, ¡todo está bien! Si no, pídele ayuda a un TA para resolver el problema por medio de `versiones de pyenv` y `type -a python` (`python` debería estar usando la versión `.pyenv/shims` de primero). + + +## Entorno Virtual de Python + +Antes de instalar paquetes de Python, aislaremos la configuración del Bootcamp en un entorno virtual **dedicado**. Usaremos un plugin `pyenv` llamado [`pyenv-virtualenv`](https://github.com/pyenv/pyenv-virtualenv). + +### Instala un virtualenv + +Primero instala este plugin: + +```bash +git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv +exec zsh +``` + +Crea el entorno virtual que usaremos durante todo el bootcamp: + +```bash +pyenv virtualenv 3.12.9 lewagon +``` + +Define el entorno virtual con lo siguiente: + +```bash +pyenv global lewagon +``` + +¡Genial! Ahora cada vez que queramos instalar un paquete Python, lo haremos en ese entorno. + + +### Paquetes de Python + +Ahora que tenemos el ambiente virtual de `lewagon` adecuado, es hora de instalarle algunos paquetes. + +Primero, actualiza `pip`, la herramienta para instalar Paquetes Python desde [pypi.org](https://pypi.org). Ejecuta lo siguiente en la última terminal donde esté activado el virtualenv de `lewagon`: + +```bash +pip install --upgrade pip +``` + +Ahora instala algunos paquetes para las primeras semanas del programa: + + + +``` bash +pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/specs/releases/linux.txt +``` + + + + +## Mejora Jupyter Notebook + +Mejora la visualización del [elemento `details` para revelación de información](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details) en tus notebooks. + +Ejecuta las siguientes líneas para crear una hoja de estilos `custom.css` en tu directorio de configuración de Jupyter: + +```bash +LOCATION=$(jupyter --config-dir)/custom +SOURCE=https://raw.githubusercontent.com/lewagon/data-analytics-setup/refs/heads/master/specs/jupyter/custom.css +mkdir -p $LOCATION +curl $SOURCE > $LOCATION/custom.css +``` + + +## Chequeo de la configuración de Python + +### Chequeo de Python y packages + +Reinicia tu terminal: + +```bash +cd ~/code && exec zsh +``` + +Verifica tu versión de Python con los siguientes comandos: + +```bash +zsh -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/python_checker.sh)" 3.12.9 +``` + +Ejecuta el comando siguiente para verificar que hayas instalado los paquetes requeridos correctamente: + +```bash +zsh -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/pip_check.sh)" +``` + +Ahora ejecuta el siguiente comando para verificar que puedas cargar estos paquetes: + +```bash +python -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/pip_check.py)" +``` + +### Chequeo de Jupyter + +Ahora verifica que puedas iniciar un servidor de notebook en tu máquina: + +```bash +jupyter notebook +``` + +Tu navegador web debería abrir en una ventana `jupyter`: + +![jupyter.png](images/jupyter.png) + +Haz clic en `New` y, en el menú desplegable, selecciona Python 3 (ipykernel): + +![jupyter_new.png](images/jupyter_new.png) + +Debería abrirse una pestaña en un nuevo notebook: + +![jupyter_notebook.png](images/jupyter_notebook.png) + +Asegúrate de que estés usando la versión correcta de python en el notebook. Abre una celda y ejecuta lo siguiente: + +``` python +import sys; sys.version +``` + +Debería mostrar `3.12.9` seguido de algunos detalles adicionales. Si no es así, consulta con un TA. + +Puedes cerrar tu navegador web y luego cerrar el servidor jupyter con `CTRL` + `C`. + +¡Listo! Ya tienes un virtual env de python completo con todos los paquetes tercerizados que necesitarás en el bootcamp. + + +## Insomnia + +> ℹ️ **¿Por qué?** Insomnia es una de las herramientas más conocidas para probar APIs, y será útil en nuestro curso de Introducción a las APIs. + +- Ve a [https://insomnia.rest/download](https://insomnia.rest/download) + +- Descarga Insomnia + +- Instala Insomnia + + +## Configuración de Google Cloud Platform + +[GCP](https://cloud.google.com/) es una solución en la nube que usarás para colocar tus productos basados en Machine Learning en producción. + +🚨 Si estás en el grupo de estudiantes del **Bootcamp de Medio Tiempo**, ¡IGNORA ESTA SECCIÓN POR AHORA! **GCP** ofrece $300 en créditos durante 3 meses, así que no es buena idea activar tu cuenta GCP demasiado pronto 🙅‍♂️ + +### Preparación del Proyecto + +- Ve a [Google Cloud](https://console.cloud.google.com/) y crea una cuenta si aún no tienes una +- En la consola de Cloud, en la lista de proyectos, selecciona o crea un proyecto Cloud + +![](images/gcp-create-project.png) + +- Asígnale un nombre como `Wagon Bootcamp` por ejemplo +- Verás que se creará un `ID` automáticamente para el proyecto e. g. `wagon-bootcamp-123456` + +![](images/gcp_project.png) + +### Idioma de la cuenta + +Abre las preferencias en tu cuenta GCP para facilitar el seguimiento de las instrucciones durante el bootcamp: + +[https://myaccount.google.com/language](https://myaccount.google.com/language) + +Si el *idioma de preferencia* no es: + +- **English** +- **United States** + +Cámbialo a inglés: + +- Haz clic en el logo edición (es una lapicera) +- Selecciona **English** +- Selecciona **United States** +- Haz clic en **Select** + +### Cuenta de facturación + +Ahora conecta tu cuenta con tu tarjeta de crédito. Este paso es obligatorio para poder usar los servicios que suministra GCP. No te preocupes, podrás utilizar la mayoría de los servicios de GCP por medio de créditos gratuitos durante el bootcamp. + +![](images/gcp-billing.png) + +- Haz clic en **Billing** +- Haz clic en **MANAGE BILLING ACCOUNTS** +- Haz clic en **ADD BILLING ACCOUNT** +- Asígnale un nombre a tu cuenta de facturación, e. g. `My Billing Account` +- Haz clic en "I have read..." y acepta los términos de uso +- Haz clic en **CONTINUE** +- Selecciona tu tipo de cuenta: `Individual` +- Agrega tu nombre y dirección + +Verás que tienes créditos gratuitos con un valor de "$300 a utilizar en los próximos 90 días". + +- Haz clic en los detalles de la tarjeta +- Agrega la información de tu tarjeta de crédito +- Haz clic en **START MY FREE TRIAL**. Esto significa comenzar mi período de prueba. + +Cuando termines, verifica que la cuenta de facturación esté conectada con tu proyecto GCP. + +- Selecciona tu proyecto +- Ve a **Billing** +- Selecciona **LINK A BILLING ACCOUNT** +- Selecciona `My Billing Account` +- Haz clic en **SET ACCOUNT** + +Ahora deberías ver lo siguiente: + +```bash +Free trial status: $300 credit and 91 days remaining - with a full account, you'll get unlimited access to all of Google Cloud Platform. +``` + +Esto significa Estado de período de prueba: crédito de $300 y 91 días para usarlo - con la full account, tendrás acceso ilimitado a todo lo que ofrece Google Cloud Platform. + +
+ 👉 Si no tienes una tarjeta de crédito 👈 + +Si no tienes una tarjeta de crédito, puedes abrir una cuenta en **Revolut**. +Revolut es una aplicación que funciona como un banco y que te permitirá crear una tarjeta de crédito virtual conectada a la dirección de facturación de tu smartphone. + +Ignora este paso si ya tienes una tarjeta de crédito. Simplemente úsala para hacer la configuración. + +Descarga la app Revolut o ve a [revolut](https://www.revolut.com/a-radically-better-account) y sigue los pasos para descargar la app (introduce tu número de teléfono móvil y haz clic en Get Started). + +- Abre la app Revolut +- Agrega tu número de teléfono móvil +- Agrega el código de verificación que recibiste por SMS +- La app te preguntará por tu país, dirección, primer y segundo nombre, fecha de nacimiento y el email +- La app también te pedirá tu profesión y una selfie +- La app te pedirá una foto de tu documento nacional de identidad o pasaporte + +Cuando termines, selecciona el plan estándar (gratuito). No tienes que agregar la tarjeta a Apple pay, pedir que te envíen una tarjeta a tu domicilio ni tampoco agregar dinero a la cuenta. + +Ahora tienes una tarjeta virtual que podrás usar para hacer la configuración de GCP. + +En la vista principal de la app Revolut + +- Haz clic en Ready to use +- Haz clic en the card +- Haz clic en Show card details +- Toma nota de la información de la tarjeta de crédito virtual y úsala para completar la configuración de GCP + +
+ +
+ 👉 Si recibes un email de Google diciendo "Urgent: your billing account XXXXXX-XXXXXX-XXXXXX has been suspended" 👈 + +Esto puede pasar justo después de haber creado la cuenta en Revolut. + +- Haz clic en PROCEED TO VERIFICATION +- Te pedirán que envíes una foto de tu tarjeta de crédito (solo los últimos 4 dígitos, nada más) +- Si ya has usado **Revolut**, puedes enviar una captura de pantalla de tu tarjeta de crédito virtual (no olvides quitar la fecha de vencimiento de la captura) +- Explica que estás haciendo el bootcamp de Le Wagon, que no tienes una tarjeta de crédito y que acabas de crear una cuenta en Revolut para poder configurar GCP para el bootcamp con una tarjeta de crédito virtual + +Es posible que te validen la cuenta pero también es posible que te pidan más información en los próximos 30 minutos. + +Cuando la cuenta sea validada recibirás un email diciendo lo siguiente: "Your Google Cloud Platform billing account XXXXXX-XXXXXX-XXXXXX has been fully reinstated and is ready to use.". Esto significa que tu cuenta Google Cloud Platform ha sido restablecida + +
+ +### Habilitación de servicios de GCP + +- Asegúrate de que la facturación está habilitada para tu proyecto Google Cloud + +ℹ️ Tienes un **crédito de $300** para usar con recursos de Google Cloud. Esto será más que suficiente para el bootcamp. + +- [Habilita las APIs BigQuery y Compute Engine](https://console.cloud.google.com/flows/enableapi?apiid=bigquery,compute) (Esto puede tomar varios minutos) + +### Configuración de Cloud sdk + +- Autentica el CLI de `gcloud` con la cuenta que usaste para GCP + +```bash +gcloud auth login +``` + +- Inicia sesión en tu cuenta Google en la nueva pestaña que se abrió en tu navegador +- Lista la cuenta que tienes activa y verifica que el email que usaste para GCP está ahí + +```bash +gcloud auth list +``` + +- Define tu proyecto actual (reemplaza `PROJECT_ID` con el `ID` de tu proyecto e.g. `wagon-bootcamp-123456`) + +```bash +gcloud config set project PROJECT_ID +``` + +- Lista la cuenta que tienes activa y tu proyecto actual y verifica que tu proyecto está ahí + +```bash +gcloud config list +``` + +### Crea una llave 🔑 de cuenta de servicio + +Como ya creaste una cuenta `GCP account` y un `project` (identificado por su `PROJECT_ID`), vamos a configurar las acciones (llamadas API calls) que quieres que tu código ejecute. + +
+ 🤔 ¿Por qué necesitamos una clave de cuenta de servicio? + + Creaste una `cuenta GCP` conectada a una tarjeta de crédito. Te facturarán de acuerdo al uso que les des a los recursos de **Google Cloud Platform**. El cargo se hará si utilizas algo después de que el período de prueba gratuito se haya terminado o si te excedes del límite de consumo que te permite dicho período. + + En tu `cuenta GCP` has creado un solo `proyecto GCP` identificado por su `PROJECT_ID`. Los `proyectos GCP` te permiten organizar y monitorear la manera en que consumes los recursos **GCP** de forma más precisa. En este bootcamp solo crearemos un solo proyecto. + + Ahora necesitamos una manera de saber qué recursos nuestro código podrá consumir dentro de un `GCP project`. Nuestro código consume recursos GCP por medio de llamadas API. + + Ya que las llamadas API no son gratuitas, es importante definir cuidadosamente cómo nuestro código las utilizará. Sin embargo, durante el bootcamp no habrá restricciones. Le permitiremos a nuestro código que utilice todas las API **GCP** sin restricciones. + + Así como pueden haber varios proyectos asociados a una cuenta GCP, un proyecto puede estar compuesto de muchos servicios (cualquier paquete de código, sin importar su formato, que necesite utilizar llamadas a la API de GCP para cumplir con su propósito). + + GCP exige que los servicios de los proyectos que usen llamadas API se registren en la plataforma y que se configuren sus credenciales por medio del acceso concedido a una `service account`. + + Por ahora solo tendremos que usar un solo servicio y crearemos la `service account` correspondiente. +
+ +Ya que la [service account](https://cloud.google.com/iam/docs/service-accounts) es lo que identifica tu aplicación (y por ende tu cuenta de facturación GCP y, en última instancia, tu tarjeta de crédito), lo mejor es ser cuidadoso en los próximos pasos. + +⚠️ **No compartas la 🔑 del archivo json de tu cuenta de servicio** ⚠️ No la guardes en tu escritorio ni en tu código base de git (incluso si tu repositorio git es privado). Que no se te olvide en un lugar como la máquina de café y, por supuesto, no la envíes en un tweet. + +- Ve a la [página de las cuentas de servicio](https://console.cloud.google.com/apis/credentials/serviceaccountkey) +- Selecciona tu proyecto en la lista de proyectos recientes si te piden que +- Crees una cuenta de servicio: + - Haz clic en **CREATE SERVICE ACCOUNT** que significa crear une cuenta de servicio: + - Define un `Service account name` para esa cuenta. Esto significa Nombre de cuenta de servicio + - Haz clic en **CREATE AND CONTINUE** que significa crear y continuar + - Haz clic en **Select a role** que significa selecciona un rol. Escoge `Quick access/Basic` luego **Owner**. Esto otorga acceso total a todos los recursos + - Haz clic en **CONTINUE** + - Haz clic en **DONE** +- Descarga la 🔑 del archivo json de la cuenta de servicio: + - Haz clic en la cuenta de servicio recién creada + - Haz clic en **KEYS** + - Haz clic en **ADD KEY** y luego en **Create new key** + - Selecciona **JSON** y haz clic en **CREATE** + +![](images/gcp_create_key.png) + +El navegador acaba de guardar la 🔑 del archivo json de la cuenta de servicio en tu carpeta de descargas (el nombre se le asigna según el nombre de la cuenta de servicio. Es algo como `le-wagon-data-123456789abc.json`) + + +- Guarda el archivo json de la cuenta de servicio en un lugar que recuerdes. Por ejemplo: + +``` bash +/home/LINUX_USERNAME/code/GITHUB_NICKNAME/gcp/SERVICE_ACCOUNT_JSON_FILE_CONTAINING_YOUR_SECRET_KEY.json +``` + +- Guarda la **ruta absoluta** al archivo `JSON` como una variable de entorno: + +``` bash +echo 'export GOOGLE_APPLICATION_CREDENTIALS=/path/to/the/SERVICE_ACCOUNT_JSON_FILE_CONTAINING_YOUR_SECRET_KEY.json' >> ~/.aliases +``` + + + +
+ ℹ️ ¿Cómo encontrar la ruta absoluta de un archivo? + Puedes arrastrar el archivo a tu terminal. +
+ +**Reinicia** tu terminal y ejecuta lo siguiente: + +``` bash +echo $GOOGLE_APPLICATION_CREDENTIALS +``` + +Deberías obtener la siguiente información: + +```bash +/some/absolute/path/to/your/gcp/SERVICE_ACCOUNT_JSON_FILE_CONTAINING_YOUR_SECRET_KEY.json +``` + +Ahora verifica si la ruta al archivo json de tu cuenta de servicio es el correcto: + +``` bash +cat $(echo $GOOGLE_APPLICATION_CREDENTIALS) +``` + +👉 Este comando debería mostrar el contenido del archivo json de tu cuenta de servicio. Si no es el caso, pídele ayuda a un TA 🙏 + +Tu código y utilidades ahora pueden acceder a los recursos de tu cuenta GCP. + +Continuemos con los últimos pasos de la configuración... + +- Lista las cuentas de servicio asociadas a tu cuenta activa y a tu proyecto actual +```bash +gcloud iam service-accounts list +``` +- Recupera el email de la cuenta de servicio e. g. `SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com` +- Lista los roles de la cuenta de servicio desde la cli (reemplaza el PROJECT_ID y el SERVICE_ACCOUNT_EMAIL) +```bash +gcloud projects get-iam-policy PROJECT_ID \ +--flatten="bindings[].members" \ +--format='table(bindings.role)' \ +--filter="bindings.members:SERVICE_ACCOUNT_EMAIL" +``` +- Ahora deberías ver que tu cuenta de servicio tiene el rol de `roles/owner` + +
+ Resolución de problemas + +- `AccessDeniedException: 403 The project to be billed is associated with an absent billing account.`. Esto significa que el proyecto a facturar está asociado a una cuenta de facturación que no está habilitada + - Asegúrate de habilitar la facturación para tu proyecto https://cloud.google.com/billing/docs/how-to/modify-project +
+ +🏁 Listo. ¡Has terminado la configuración de GCP! + + + ## Kitt + +Deberías haber recibido un correo electrónico de Le Wagon invitándote a registrarte en [Kitt](https://kitt.lewagon.com) (nuestra plataforma de aprendizaje). + +Entonces deberías recibir una invitación adicional de Slack, invitándote a la comunidad de los alumni de Le Wagon en slack (donde podrás chatear con tus compañeros y todos los demás alumni). Haz clic en **Join** y completa la información que te piden. + +Si no lo has recibido, por favor contacta a tu equipo de enseñanza. + + +## Slack + +[Slack](https://slack.com/) es una plataforma de comunicación popular en la industria tech. + +### Instalación + +[Descarga la aplicación Slack](https://get.slack.help/hc/en-us/articles/212924728-Slack-for-Linux-beta-) e instálala. + +:warning: Si ya estás usando Slack en tu navegador, por favor descarga e instala **la aplicación de escritorio** la cual tiene todas las funciones. + + +### Parámetros + +Abre la aplicación e inicia sesión en `lewagon-alumni`. + +Asegúrate de **subir una foto para tu perfil** :point_down: + +![Cómo subir una foto de perfil en Slack](https://github.com/lewagon/setup/blob/master/images/slack_profile_picture.gif) + +La idea es tener Slack abierto todo el día para compartir enlaces útiles / pedir ayuda / decidir dónde almorzar / etc. + +Para asegurarte de que todo lo relacionado a videollamadas funcione bien, prueba tu cámara y tu micrófono: +- Abre la aplicación Slack +- Haz clic en tu foto de perfil en la esquina superior derecha +- Selecciona "Preferencias" en el menú. +- Haz clic en "Audio y vídeo" en la columna de la izquierda. +- Debajo de "Solución de problemas", haz clic en "Ejecutar una prueba de audio, vídeo y pantalla compartida". La prueba se abrirá en una nueva ventana. +- Comprueba que tus dispositivos preferidos de altavoz, micrófono y cámara aparecen en los menús desplegables y haz clic en "Iniciar prueba" +- Haz clic en el botón verde "Start test" + +![Chequea el micrófono y la cámara con Slack](https://github.com/lewagon/setup/blob/master/images/slack_call_test.png) + +:heavy_check_mark: Cuando termine el test deberías ver mensajes de "Succeed" en verde por lo menos para tu micrófono y tu cámara. :+1: + +:x: Si no es el caso, **contacta a un profesor**. + +¡También puedes instalar la aplicación Slack en tu smartphone e iniciar sesión en `lewagon-alumni`! + + +## Extra + +Si has terminado la configuración, te pedimos que preguntes si alguien necesita ayuda con la suya (macOS, Linux o Windows). Las primeras clases son a las 2pm. Hablaremos de la configuración que acabas de hacer y de Kitt. + +Si no tienes mucha experiencia con `git` y GitHub, por favor [ve nuevamente el video de este workshop](https://www.youtube.com/watch?v=Z9fIBT2NBGY) (puedes verlo a `1.25` de velocidad). + + diff --git a/LINUX.md b/LINUX.md index 0c18893..e8ad56d 100644 --- a/LINUX.md +++ b/LINUX.md @@ -6,6 +6,7 @@ Please **read them carefully and execute all commands in the following order**. Let's start :rocket: + ## GitHub account Have you signed up to GitHub? If not, [do it right away](https://github.com/join). @@ -16,6 +17,7 @@ Have you signed up to GitHub? If not, [do it right away](https://github.com/join :point_right: **[Enable Two-Factor Authentication (2FA)](https://docs.github.com/en/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication#configuring-two-factor-authentication-using-text-messages)**. GitHub will send you text messages with a code when you try to log in. This is important for security and also will soon be required in order to contribute code on GitHub. + ## Visual Studio Code ### Installation @@ -64,6 +66,7 @@ code :x: Otherwise, please **contact a teacher** + ## VS Code Extensions ### Installation @@ -82,6 +85,7 @@ code --install-extension alexcvzz.vscode-sqlite ``` Here is a list of the extensions you are installing: + - [Sublime Text Keymap and Settings Importer](https://marketplace.visualstudio.com/items?itemName=ms-vscode.sublime-keybindings) - [VSCode Great Icons](https://marketplace.visualstudio.com/items?itemName=emmanuelbeziat.vscode-great-icons) - [Live Share](https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsliveshare) @@ -91,8 +95,39 @@ Here is a list of the extensions you are installing: - [Jupyter](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter) - [SQLite](https://marketplace.visualstudio.com/items?itemName=alexcvzz.vscode-sqlite) + ## Command line tools +### Check the locale + +The locale is a mechanism allowing to customize programs to your language and country. + +Let's verify that the default locale is set to English, please type this in the Ubuntu terminal: + +```bash +locale +``` + +If the output does not contain `LANG=en_US.UTF-8`, run the following command in a Ubuntu terminal to install the english locale: + +```bash +sudo locale-gen en_US.UTF-8 +``` + +If after, you receive a warning (`bash: warning: setlocale: LC_ALL: cannot change locale (en_US.utf-8)`) in your terminal, please do the following: + +
+ Generate locale + +Please, run this lines in your terminal. + +```bash +sudo update-locale LANG=en_US.UTF8 +sudo apt-get update +sudo apt-get install language-pack-en language-pack-en-base manpages +``` +
+ ### Zsh & Git Instead of using the default `bash` [shell](https://en.wikipedia.org/wiki/Shell_(computing)), we will use `zsh`. @@ -100,7 +135,6 @@ Instead of using the default `bash` [shell](https://en.wikipedia.org/wiki/Shell_ We will also use [`git`](https://git-scm.com/), a command line software used for version control. Let's install them, along with other useful tools: - - Open an **Ubuntu terminal** - Copy and paste the following commands: @@ -149,6 +183,7 @@ gh --version :x: Otherwise, please **contact a teacher** + ## Oh-my-zsh Let's install the `zsh` plugin [Oh My Zsh](https://ohmyz.sh/). @@ -169,15 +204,19 @@ At the end your terminal should look like this: :x: Otherwise, please **ask for a teacher** + ## direnv [direnv](https://direnv.net/) is a shell extension. It makes it easy to deal with per project environment variables. This will be useful in order to customize the behavior of your code. + ``` bash sudo apt-get update; sudo apt-get install direnv echo 'eval "$(direnv hook zsh)"' >> ~/.zshrc ``` + + ## GitHub CLI CLI is the acronym of [Command-line Interface](https://en.wikipedia.org/wiki/Command-line_interface). @@ -190,7 +229,7 @@ We will use the GitHub CLI (`gh`) to connect to GitHub using *SSH*, a protocol t First in order to **login**, copy-paste the following command in your terminal: -:warning: **DO NOT edit the `email`** +:warning: **DO NOT edit the `email`** — Even though `user:email` looks like a placeholder for your actual email address, it isn't — do not replace it. ```bash gh auth login -s 'user:email' -w --git-protocol ssh @@ -202,7 +241,9 @@ gh auth login -s 'user:email' -w --git-protocol ssh If you already have SSH keys, you will see instead `Upload your SSH public key to your GitHub account?` With the arrows, select your public key file path and press `Enter`. -- `Enter a passphrase for your new SSH key (Optional)`. Type something you want and that you'll remember. It's a password to protect your private key stored on your hard drive. Then press `Enter`. +- `Enter a passphrase for your new SSH key (Optional)`: + - **FOR MOST PEOPLE:** Just press `Enter` to skip. You don't need a passphrase for the bootcamp and it would prompt you every time you use the key. There is a risk, however, that if someone steals your laptop, they could then push to GitHub. + - **IF SECURITY IS REALLY IMPORTANT TO YOU:** Enter a passphrase of your choice and press `Enter`. It's _really_ important that if you enter a passphrase, you write it down somewhere immediately and do not lose/forget it. You will need to enter this frequently. - `Title for your SSH key`. You can leave it at the proposed "GitHub CLI", press `Enter`. @@ -229,6 +270,7 @@ gh auth status :x: If not, **contact a teacher**. + ## Google Cloud CLI Install the `gcloud` CLI to communicate with [Google Cloud Platform](https://cloud.google.com/) through your terminal: @@ -243,6 +285,7 @@ sudo apt-get install google-cloud-sdk-app-engine-python 👉 [Install documentation](https://cloud.google.com/sdk/docs/install#deb) + ## Dotfiles Hackers love to refine and polish their shell and tools. We'll start with a great default configuration provided by [Le Wagon](http://github.com/lewagon/dotfiles), stored on GitHub. @@ -263,6 +306,7 @@ There seems to be a problem with the previous step (`gh auth`). There are three options, choose **one**: +
I did not attend the Web Dev or Data Science & AI or Data Analytics bootcamp at Le Wagon @@ -282,6 +326,7 @@ gh repo fork lewagon/dotfiles --clone
+
I already attended a Le Wagon coding bootcamp (Web Development or Data Science & AI or Data Analytics) but I have a new laptop @@ -296,6 +341,7 @@ mkdir -p ~/code/$GITHUB_USERNAME && cd $_ gh repo clone $GITHUB_USERNAME/dotfiles ``` + Open your terminal and go to your `dotfiles` project: ```bash @@ -303,7 +349,9 @@ cd ~/code/$GITHUB_USERNAME/dotfiles ``` Time to merge the changes from `lewagon/dotfiles` into yours: + 1. Commit your current version of your dotfiles: + ```bash git add . git status # Check what will be committed @@ -362,7 +410,9 @@ cd ~/code/$GITHUB_USERNAME/dotfiles ``` Time to merge the changes from `lewagon/dotfiles` into yours: + 1. Commit your current version of your dotfiles: + ```bash git add . git status # Check what will be committed @@ -460,8 +510,11 @@ Check if you have `conda` installed on your machine: ```bash conda list ``` + + If you have `zsh: command not found: conda`, you can **skip** the uninstall of `conda` and jump to the **Install `pyenv`** section. +
conda uninstall instructions @@ -478,12 +531,15 @@ anaconda-clean --yes rm -rf ~/anaconda2 rm -rf ~/anaconda3 rm -rf ~/.anaconda_backup + ``` - Remove Anaconda path from your `.bash_profile` - Open the file with `code ~/.bash_profile` - If the file opens find the line matching the following pattern `export PATH="/path/to/anaconda3/bin:$PATH"` and delete the line + - Save the file with `CTRL` + `s` + - Restart your terminal with `exec zsh` - Remove Anaconda initialization from your `.zshrc`: - Open the file with `code ~/.zshrc` @@ -491,6 +547,7 @@ rm -rf ~/.anaconda_backup
+ ### Install `pyenv` Ubuntu comes with an outdated version of Python that we don't want to use. You might already have installed Anaconda or something else to tinker with Python and Data Analytics packages. All of this does not really matter as we are going to do a professional setup of Python where you'll be able to switch which version you want to use whenever you type `python` in the terminal. @@ -550,6 +607,7 @@ exec zsh To check if this worked, run `python --version`. If you see `3.12.9`, perfect! If not, ask a TA that will help you debug the problem thanks to `pyenv versions` and `type -a python` (`python` should be using the `.pyenv/shims` version first). + ## Python Virtual Environment Before we start installing relevant Python packages, we will isolate the setup for the Bootcamp into a **dedicated** virtual environment. We will use a `pyenv` plugin called [`pyenv-virtualenv`](https://github.com/pyenv/pyenv-virtualenv). @@ -577,6 +635,7 @@ pyenv global lewagon Great! Anytime we'll install Python package, we'll do it in that environment. + ### Python packages Now that we have a pristine `lewagon` virtual environment, it's time to install some packages in it. @@ -589,10 +648,15 @@ pip install --upgrade pip Then let's install some packages for the first weeks of the program: + + ``` bash pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/specs/releases/linux.txt ``` + + + ## Jupyter Notebook tweaking Let's improve the display of the [`details` disclosure elements](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details) in your notebooks. @@ -606,6 +670,7 @@ mkdir -p $LOCATION curl $SOURCE > $LOCATION/custom.css ``` + ## Python setup check ### Python and packages check @@ -666,6 +731,7 @@ You can close your web browser then terminate the jupyter server with `CTRL` + ` Here you have it! A complete python virtual env with all the third-party packages you'll need for the whole bootcamp. + ## Insomnia > ℹ️ **Why?** Insomnia is one of the best-known API testing tools, and it will be useful in our Introduction to API course. @@ -676,6 +742,7 @@ Here you have it! A complete python virtual env with all the third-party package - Install Insomnia + ## Google Cloud Platform setup [GCP](https://cloud.google.com/) is a cloud solution that you are going to use in order to deploy your Machine Learning-based products to production. @@ -805,10 +872,12 @@ Once the verification goes through, you should receive an email stating that "Yo - Authenticate the `gcloud` CLI with the google account you used for GCP + ```bash gcloud auth login ``` + - Login to your Google account on the new tab opened in your web browser - List your active account and check your email address you used for GCP is present @@ -903,6 +972,7 @@ An alternate way to navigate to the Service Accounts page is from the following: - The browser has now saved the service account json file 🔑 in your downloads directory (it is named according to your service account name, something like `le-wagon-data-123456789abc.json`). + - Store the service account json file somewhere you'll remember, for example: ``` bash @@ -925,6 +995,8 @@ code ~/.zshrc in the Terminal! 😄 + +
ℹ️ How to find the absolute path of a file? You can drag and drop the file in your terminal. @@ -976,13 +1048,13 @@ gcloud projects get-iam-policy PROJECT_ID \ Troubleshooting - `AccessDeniedException: 403 The project to be billed is associated with an absent billing account.` - - Make sure that billing is enabled for your Google Cloud Platform project https://cloud.google.com/billing/docs/how-to/modify-project - + - Make sure that billing is enabled for your Google Cloud Platform project [https://cloud.google.com/billing/docs/how-to/modify-project](https://cloud.google.com/billing/docs/how-to/modify-project)
🏁 You are done with the GCP setup! -## Kitt + + ## Kitt You should have received an email from Le Wagon inviting you to sign up on [Kitt](https://kitt.lewagon.com) (our learning platform). @@ -990,6 +1062,7 @@ Then you should receive an additional invitation from Slack, inviting you to the If you haven't, please contact your teaching team. + ## Slack [Slack](https://slack.com/) is a communication platform pretty popular in the tech industry. @@ -1000,6 +1073,7 @@ If you haven't, please contact your teaching team. :warning: If you are already using Slack in your browser, please download and install **the desktop app** which is fully featured. + ### Settings Launch the app and sign in to `lewagon-alumni` organization. @@ -1011,7 +1085,6 @@ Make sure you **upload a profile picture** :point_down: The idea is that you'll have Slack open all day, so that you can share useful links / ask for help / decide where to go to lunch / etc. To ensure that everything is working fine for video calls, let's test your camera and microphone: - - Open the Slack app - Click your profile picture in the top right. - Select `Preferences` from the menu. @@ -1027,14 +1100,11 @@ To ensure that everything is working fine for video calls, let's test your camer You can also install Slack app on your phone and sign in `lewagon-alumni`! -## Setup completed! -That's all you need for now! Some of the free trial periods on the tools we use are very short, so from now on, whenever we introduce a new tool or software, we will guide you through the sign-in and installation steps at the beginning of the day. - -Ready to start? 🚀 - -## (Bonus) +## Bonus If you are done with your setup, please ask around if some classmates need some help with theirs (macOS, Linux, Windows). We will have our first lectures at 2pm and will talk about the Setup you just did + onboard you on Kitt. If you don't have a lot of experience with `git` and GitHub, please [(re-)watch this workshop](https://www.youtube.com/watch?v=Z9fIBT2NBGY) (`1.25` playback speed is fine). + + diff --git a/LINUX_keep_current.es.md b/LINUX_keep_current.es.md new file mode 100644 index 0000000..78fe7e6 --- /dev/null +++ b/LINUX_keep_current.es.md @@ -0,0 +1,301 @@ + +# Cómo mantener tu configuración al día + +Esta sección contiene los pasos que tienes que seguir para asegurarte de que tu configuración esté actualizada. + +Primero y principal, para trabajar en buenas condiciones, asegúrate de que: + +- tienes una conexión internet de alta velocidad +- tu computadora tiene suficiente memoria (8GB) para poder ejecutar tu código eficientemente +- tu computadora tiene suficiente espacio en disco (30GB) para poder trabajar con grandes datasets. + +## git + +Verifica que git funcione: + +``` bash +git --version +``` + +👉 Deberías obtener algo parecido a esto de aquí abajo que te muestra la versión de git: + +``` bash +git version 2.33.0 +``` + +## GitHub + +Verifica que tengas acceso a los repositorios GitHub públicos de Le Wagon + +``` bash +cd ~/code// +git clone git@github.com:lewagon/data-analytics-setup data-analytics-setup +``` + +👉 Se debe clonar el repositorio correctamente: + +``` bash +Cloning into 'data-analytics-setup'... +remote: Enumerating objects: 21, done. +remote: Counting objects: 100% (21/21), done. +remote: Compressing objects: 100% (14/14), done. +Receiving objects: 100% (21/21), done. +Resolving deltas: 100% (6/6), done. +remote: Total 21 (delta 6), reused 16 (delta 1), pack-reused 0 +``` + +👉 Puedes borrar el repositorio clonado + +``` bash +rm -Rf data-analytics-setup +``` + +## Verificación de la configuración de pyenv + +Verifica que tengas un `~/.zprofile` : + +``` bash +cat ~/.zprofile +``` + +👉 Deberías poder ver las líneas siguientes: + +``` bash +# Setup the PATH for pyenv binaries and shims +export PYENV_ROOT="$HOME/.pyenv" +export PATH="$PYENV_ROOT/bin:$PATH" +type -a pyenv > /dev/null && eval "$(pyenv init --path)" +``` + +Si el comando no da ningún resultado, crea el archivo `~/.zprofile`: + +``` bash +cd +touch .zprofile +``` + +Agrega las siguientes líneas a tu `~/.zprofile` : + +``` bash +# Setup the PATH for pyenv binaries and shims +export PYENV_ROOT="$HOME/.pyenv" +export PATH="$PYENV_ROOT/bin:$PATH" +type -a pyenv > /dev/null && eval "$(pyenv init --path)" +``` + +## Creación de un ambiente virtual dedicado + +Actualiza pyenv: + + +``` bash +cd $(pyenv root) && git pull +``` + + +Instala la versión actual de python: + +```bash +pyenv install 3.12.9 +``` + +👉 Asegúrate de que el comando se ejecute completamente y luego **reinicia tu terminal**. + +Remueve el ambiente virtual dedicado actual: + +```bash +pyenv virtualenv-delete lewagon_current +``` + +Crea un nuevo ambiente virtual: + +```bash +pyenv virtualenv 3.12.9 lewagon_current +``` + +Define el nuevo ambiente virtual como predeterminado: + +```bash +pyenv global lewagon_current +``` + +Ahora deberías poder ver que el nuevo ambiente virtual está activado: + +``` bash +pyenv versions +``` + +👉 Aquí hay una muestra del resultado: + +``` bash + system + 3.12.9 + 3.12.9/envs/lewagon_current + 3.7.6 + 3.7.6/envs/lewagon +* lewagon_current + lewagon +``` + +### Instalación de los paquetes del bootcamp + +```bash +pip install -U pip +``` + + + +``` bash +pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/specs/releases/linux.txt +``` + + + +## GCP + +Asegúrate de que el comando `gcloud` esté conectado con el email de tu cuenta Google Cloud Platform: + +``` bash +gcloud auth list +``` + +👉 Esto muestra los emails de tu cuenta GCP: + +``` bash + Credentialed Accounts +ACTIVE ACCOUNT +* your.email_address@your.email.provider + +To set the active account, run: + $ gcloud config set account `ACCOUNT` +``` + +Verifica el nombre de tu proyecto gcp: + +``` bash +gcloud config list +``` + +👉 Esto muestra tanto el email de tu cuenta GCP como tu proyecto GCP: + +``` bash +[core] +account = your.email_address@your.email.provider +disable_usage_reporting = True +project = your-gcp-project-id + +Your active configuration is: [default] +``` + +Verifica que el email creado para la cuenta de servicio permita que tu código se identifique con GCP: + +``` bash +gcloud iam service-accounts list +``` + +👉 Esto muestra el email de la cuenta de servicio en GCP que permite que tu código se identifique con GCP. + +``` bash +DISPLAY NAME EMAIL DISABLED +your-gcp-project-id your-service-account@your-service-account.iam.gserviceaccount.com False +``` + +Ve a [GCP IAM & Admin / Service Accounts](https://console.cloud.google.com/iam-admin/serviceaccounts): + +- Selecciona tu proyecto +- Haz clic en el email de la cuenta de servicio +- Ve a `PERMISSIONS` +- Asegúrate de que el email de la cuenta de servicio tenga un `Role` configurado como `Owner` + +Verifica que hayas configurado tu máquina para que permita que tu código se identifique con GCP. El archivo de claves json de las credenciales de la cuenta de servicio debe estar conectado al email de la cuenta de servicio correcto: + +``` bash +cat $GOOGLE_APPLICATION_CREDENTIALS +``` + +👉 Esto muestra el contenido de la clave json de las credenciales de la cuenta de servicio: + +``` bash +{ + "type": "service_account", + "project_id": "your-gcp-project-id", + "private_key_id": "a2d4a2d4a2d4a2d4a2d4a2d4a2d4a2d4a2d4a2d4", + "private_key": "-----BEGIN PRIVATE KEY-----\nMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInM=\n-----END PRIVATE KEY-----\n", + "client_email": "your-service-account@your-service-account.iam.gserviceaccount.com", + "client_id": "105410541054105410541", + "auth_uri": "https://accounts.google.com/o/oauth2/auth", + "token_uri": "https://oauth2.googleapis.com/token", + "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", + "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/your-service-account%40your-service-account.iam.gserviceaccount.com" +} +``` + +Asegúrate de que el archivo contenga: + +- el id el proyecto adecuado: your-gcp-project-id +- el email de la cuenta de servicio adecuado: your-service-account@your-service-account.iam.gserviceaccount.com + +👉 Si esto no muestra nada o si el email dentro del archivo no es el de tu cuenta de servicio, regresa al setup. + + +## Chequeo de la configuración de Python + +### Chequeo de Python y packages + +Reinicia tu terminal: + +```bash +cd ~/code && exec zsh +``` + +Verifica tu versión de Python con los siguientes comandos: + +```bash +zsh -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/python_checker.sh)" 3.12.9 +``` + +Ejecuta el comando siguiente para verificar que hayas instalado los paquetes requeridos correctamente: + +```bash +zsh -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/pip_check.sh)" +``` + +Ahora ejecuta el siguiente comando para verificar que puedas cargar estos paquetes: + +```bash +python -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/pip_check.py)" +``` + +### Chequeo de Jupyter + +Ahora verifica que puedas iniciar un servidor de notebook en tu máquina: + +```bash +jupyter notebook +``` + +Tu navegador web debería abrir en una ventana `jupyter`: + +![jupyter.png](images/jupyter.png) + +Haz clic en `New` y, en el menú desplegable, selecciona Python 3 (ipykernel): + +![jupyter_new.png](images/jupyter_new.png) + +Debería abrirse una pestaña en un nuevo notebook: + +![jupyter_notebook.png](images/jupyter_notebook.png) + +Asegúrate de que estés usando la versión correcta de python en el notebook. Abre una celda y ejecuta lo siguiente: + +``` python +import sys; sys.version +``` + +Debería mostrar `3.12.9` seguido de algunos detalles adicionales. Si no es así, consulta con un TA. + +Puedes cerrar tu navegador web y luego cerrar el servidor jupyter con `CTRL` + `C`. + +¡Listo! Ya tienes un virtual env de python completo con todos los paquetes tercerizados que necesitarás en el bootcamp. + + diff --git a/LINUX_keep_current.md b/LINUX_keep_current.md index ef9d520..9f15539 100644 --- a/LINUX_keep_current.md +++ b/LINUX_keep_current.md @@ -87,10 +87,12 @@ type -a pyenv > /dev/null && eval "$(pyenv init --path)" Update pyenv : + ``` bash cd $(pyenv root) && git pull ``` + Install the current python version : ```bash @@ -141,10 +143,14 @@ pyenv versions pip install -U pip ``` + + ``` bash pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/specs/releases/linux.txt ``` + + ## GCP Make sure that the `gcloud` command is linked to the email address of your Google Cloud Platform account : @@ -231,6 +237,7 @@ Make sure that the file contains the correct : 👉 If this does not display anything or if the email inside of the file is not the one of your service account, go back to the setup + ## Python setup check ### Python and packages check @@ -290,3 +297,5 @@ It should output `3.12.9` followed by some more details. If not, check with a TA You can close your web browser then terminate the jupyter server with `CTRL` + `C`. Here you have it! A complete python virtual env with all the third-party packages you'll need for the whole bootcamp. + + diff --git a/VM.es.md b/VM.es.md new file mode 100644 index 0000000..49af1b8 --- /dev/null +++ b/VM.es.md @@ -0,0 +1,879 @@ +# Instrucciones para la configuración + +Aquí abajo encontrarás las instrucciones para configurar tu computadora para [el curso de Data Analytics de Le Wagon](https://www.lewagon.com/data-analytics-course/full-time) + +Por favor **léelas cuidadosamente y ejecuta todos los comandos en el siguiente orden**. Si tienes algún problema, no dudes en pedirle ayuda a una profesor :raising_hand: + +¡Comencemos! :rocket: + + +## Cuenta GitHub + +¿Ya tienes una cuenta GitHub? Si no es el caso, [ábrela ya](https://github.com/join). + +:point_right: **[Sube una foto](https://github.com/settings/profile)** y escribe tu nombre correctamente en tu cuenta GitHub. Esto es importante porque nosotros usaremos un tablero de comando interno con tu avatar. Por favor hazlo **ahora** antes de dar un paso más en esta guía. + +![Foto GitHub](https://github.com/lewagon/setup/blob/master/images/github_picture.png) + +:point_right: **[Habilita la Autenticación de Dos Factores (2FA)](https://docs.github.com/en/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication#configuring-two-factor-authentication-using-text-messages)**. GitHub te enviará mensajes de texto con un código cuando intentes iniciar sesión. Esto es importante para la seguridad y también pronto será necesario para contribuir código en GitHub. + + + + +## Configuración de Google Cloud Platform + +[GCP](https://cloud.google.com/) es una solución en la nube que usarás para colocar tus productos basados en Machine Learning en producción. + +🚨 Si estás en el grupo de estudiantes del **Bootcamp de Medio Tiempo**, ¡IGNORA ESTA SECCIÓN POR AHORA! **GCP** ofrece $300 en créditos durante 3 meses, así que no es buena idea activar tu cuenta GCP demasiado pronto 🙅‍♂️ + +### Preparación del Proyecto + +- Ve a [Google Cloud](https://console.cloud.google.com/) y crea una cuenta si aún no tienes una +- En la consola de Cloud, en la lista de proyectos, selecciona o crea un proyecto Cloud + +![](https://github.com/lewagon/data-engineering-setup/blob/main/images/gcp-create-project.png) + +- Asígnale un nombre como `Wagon Bootcamp` por ejemplo +- Verás que se creará un `ID` automáticamente para el proyecto e. g. `wagon-bootcamp-123456` + +![](https://github.com/lewagon/data-engineering-setup/blob/main/images/gcp_project.png) + +### Idioma de la cuenta + +Abre las preferencias en tu cuenta GCP para facilitar el seguimiento de las instrucciones durante el bootcamp: + +https://myaccount.google.com/language + +Si el *idioma de preferencia* no es: +- **English** +- **United States** + +Cámbialo a inglés: +- Haz clic en el logo edición (es una lapicera) +- Selecciona **English** +- Selecciona **United States** +- Haz clic en **Select** + +### Cuenta de facturación + +Ahora conecta tu cuenta con tu tarjeta de crédito. Este paso es obligatorio para poder usar los servicios que suministra GCP. No te preocupes, podrás utilizar la mayoría de los servicios de GCP por medio de créditos gratuitos durante el bootcamp. + +![](https://github.com/lewagon/data-engineering-setup/blob/main/images/gcp-billing.png) + +- Haz clic en **Billing** +- Haz clic en **MANAGE BILLING ACCOUNTS** +- Haz clic en **ADD BILLING ACCOUNT** +- Asígnale un nombre a tu cuenta de facturación, e. g. `My Billing Account` +- Haz clic en "I have read..." y acepta los términos de uso +- Haz clic en **CONTINUE** +- Selecciona tu tipo de cuenta: `Individual` +- Agrega tu nombre y dirección + +Verás que tienes créditos gratuitos con un valor de "$300 a utilizar en los próximos 90 días". + +- Haz clic en los detalles de la tarjeta +- Agrega la información de tu tarjeta de crédito +- Haz clic en **START MY FREE TRIAL**. Esto significa comenzar mi período de prueba. + +Cuando termines, verifica que la cuenta de facturación esté conectada con tu proyecto GCP. + +- Selecciona tu proyecto +- Ve a **Billing** +- Selecciona **LINK A BILLING ACCOUNT** +- Selecciona `My Billing Account` +- Haz clic en **SET ACCOUNT** + +Ahora deberías ver lo siguiente: + +``` +Free trial status: $300 credit and 91 days remaining - with a full account, you'll get unlimited access to all of Google Cloud Platform. +``` + +Esto significa Estado de período de prueba: crédito de $300 y 91 días para usarlo - con la full account, tendrás acceso ilimitado a todo lo que ofrece Google Cloud Platform. + +
+ 👉 Si no tienes una tarjeta de crédito 👈 + + +Si no tienes una tarjeta de crédito, puedes abrir una cuenta en **Revolut**. +Revolut es una aplicación que funciona como un banco y que te permitirá crear una tarjeta de crédito virtual conectada a la dirección de facturación de tu smartphone. + +Ignora este paso si ya tienes una tarjeta de crédito. Simplemente úsala para hacer la configuración. + +Descarga la app Revolut o ve a [revolut](https://www.revolut.com/a-radically-better-account) y sigue los pasos para descargar la app (introduce tu número de teléfono móvil y haz clic en Get Started). + +- Abre la app Revolut +- Agrega tu número de teléfono móvil +- Agrega el código de verificación que recibiste por SMS +- La app te preguntará por tu país, dirección, primer y segundo nombre, fecha de nacimiento y el email +- La app también te pedirá tu profesión y una selfie +- La app te pedirá una foto de tu documento nacional de identidad o pasaporte + +Cuando termines, selecciona el plan estándar (gratuito). No tienes que agregar la tarjeta a Apple pay, pedir que te envíen una tarjeta a tu domicilio ni tampoco agregar dinero a la cuenta. + +Ahora tienes una tarjeta virtual que podrás usar para hacer la configuración de GCP. + +En la vista principal de la app Revolut +- Haz clic en Ready to use +- Haz clic en the card +- Haz clic en Show card details +- Toma nota de la información de la tarjeta de crédito virtual y úsala para completar la configuración de GCP + +
+ +
+ 👉 Si recibes un email de Google diciendo "Urgent: your billing account XXXXXX-XXXXXX-XXXXXX has been suspended" 👈 + + +Esto puede pasar justo después de haber creado la cuenta en Revolut. + +- Haz clic en PROCEED TO VERIFICATION +- Te pedirán que envíes una foto de tu tarjeta de crédito (solo los últimos 4 dígitos, nada más) +- Si ya has usado **Revolut**, puedes enviar una captura de pantalla de tu tarjeta de crédito virtual (no olvides quitar la fecha de vencimiento de la captura) +- Explica que estás haciendo el bootcamp de Le Wagon, que no tienes una tarjeta de crédito y que acabas de crear una cuenta en Revolut para poder configurar GCP para el bootcamp con una tarjeta de crédito virtual + +Es posible que te validen la cuenta pero también es posible que te pidan más información en los próximos 30 minutos. + +Cuando la cuenta sea validada recibirás un email diciendo lo siguiente: "Your Google Cloud Platform billing account XXXXXX-XXXXXX-XXXXXX has been fully reinstated and is ready to use.". Esto significa que tu cuenta Google Cloud Platform ha sido restablecida + +
+ +### Habilitación de servicios de GCP + +- Asegúrate de que la facturación está habilitada para tu proyecto Google Cloud + +ℹ️ Tienes un **crédito de $300** para usar con recursos de Google Cloud. Esto será más que suficiente para el bootcamp. + +- [Habilita las APIs AI Platform Training & Prediction y Compute Engine APIs](https://console.cloud.google.com/flows/enableapi?apiid=ml.googleapis.com,compute_component&_ga=2.269215094.662509797.1580849510-2071889129.1567861089&_gac=1.154971594.1580849512.CjwKCAiAyeTxBRBvEiwAuM8dnbZ6uMwizbZW44J2mBCX6ncEjwjwpgF8S8QsvhYAXLkJ8awDnIRTNRoCJ_0QAvD_BwE) (Esto puede tomar varios minutos) + +### Configuración de Cloud sdk + +- Autentica el CLI de `gcloud` con la cuenta que usaste para GCP +```bash +gcloud auth login +``` +- Inicia sesión en tu cuenta Google en la nueva pestaña que se abrió en tu navegador +- Lista la cuenta que tienes activa y verifica que el email que usaste para GCP está ahí +```bash +gcloud auth list +``` +- Define tu proyecto actual (reemplaza `PROJECT_ID` con el `ID` de tu proyecto e.g. `wagon-bootcamp-123456`) +```bash +gcloud config set project PROJECT_ID +``` +- Lista la cuenta que tienes activa y tu proyecto actual y verifica que tu proyecto está ahí +```bash +gcloud config list +``` + +### Crea una llave 🔑 de cuenta de servicio + +Como ya creaste una cuenta `GCP account` y un `project` (identificado por su `PROJECT_ID`), vamos a configurar las acciones (llamadas API calls) que quieres que tu código ejecute. + +
+ 🤔 ¿Por qué necesitamos una clave de cuenta de servicio? + + + Creaste una `cuenta GCP` conectada a una tarjeta de crédito. Te facturarán de acuerdo al uso que les des a los recursos de **Google Cloud Platform**. El cargo se hará si utilizas algo después de que el período de prueba gratuito se haya terminado o si te excedes del límite de consumo que te permite dicho período. + + En tu `cuenta GCP` has creado un solo `proyecto GCP` identificado por su `PROJECT_ID`. Los `proyectos GCP` te permiten organizar y monitorear la manera en que consumes los recursos **GCP** de forma más precisa. En este bootcamp solo crearemos un solo proyecto. + + Ahora necesitamos una manera de saber qué recursos nuestro código podrá consumir dentro de un `GCP project`. Nuestro código consume recursos GCP por medio de llamadas API. + + Ya que las llamadas API no son gratuitas, es importante definir cuidadosamente cómo nuestro código las utilizará. Sin embargo, durante el bootcamp no habrá restricciones. Le permitiremos a nuestro código que utilice todas las API **GCP** sin restricciones. + + Así como pueden haber varios proyectos asociados a una cuenta GCP, un proyecto puede estar compuesto de muchos servicios (cualquier paquete de código, sin importar su formato, que necesite utilizar llamadas a la API de GCP para cumplir con su propósito). + + GCP exige que los servicios de los proyectos que usen llamadas API se registren en la plataforma y que se configuren sus credenciales por medio del acceso concedido a una `service account`. + + Por ahora solo tendremos que usar un solo servicio y crearemos la `service account` correspondiente. +
+ +Ya que la [service account](https://cloud.google.com/iam/docs/service-accounts) es lo que identifica tu aplicación (y por ende tu cuenta de facturación GCP y, en última instancia, tu tarjeta de crédito), lo mejor es ser cuidadoso en los próximos pasos. + +⚠️ **No compartas la 🔑 del archivo json de tu cuenta de servicio** ⚠️ No la guardes en tu escritorio ni en tu código base de git (incluso si tu repositorio git es privado). Que no se te olvide en un lugar como la máquina de café y, por supuesto, no la envíes en un tweet. + +- Ve a la [página de las cuentas de servicio](https://console.cloud.google.com/apis/credentials/serviceaccountkey) +- Selecciona tu proyecto en la lista de proyectos recientes si te piden que +- Crees una cuenta de servicio: + - Haz clic en **CREATE SERVICE ACCOUNT** que significa crear une cuenta de servicio: + - Define un `Service account name` para esa cuenta. Esto significa Nombre de cuenta de servicio + - Haz clic en **CREATE AND CONTINUE** que significa crear y continuar + - Haz clic en **Select a role** que significa selecciona un rol. Escoge `Quick access/Basic` luego **Owner**. Esto otorga acceso total a todos los recursos + - Haz clic en **CONTINUE** + - Haz clic en **DONE** +- Descarga la 🔑 del archivo json de la cuenta de servicio: + - Haz clic en la cuenta de servicio recién creada + - Haz clic en **KEYS** + - Haz clic en **ADD KEY** y luego en **Create new key** + - Selecciona **JSON** y haz clic en **CREATE** + +![](https://github.com/lewagon/data-engineering-setup/blob/main/images/gcp_create_key.png) + +El navegador acaba de guardar la 🔑 del archivo json de la cuenta de servicio en tu carpeta de descargas (el nombre se le asigna según el nombre de la cuenta de servicio. Es algo como `le-wagon-data-123456789abc.json`) + + + + + + + + +## Extensiones de VS Code + +### Instalación + +Instala algunas extensiones útiles para VS Code. + +```bash +code --install-extension ms-vscode.sublime-keybindings +code --install-extension emmanuelbeziat.vscode-great-icons +code --install-extension MS-vsliveshare.vsliveshare +code --install-extension ms-python.python +code --install-extension KevinRose.vsc-python-indent +code --install-extension ms-python.vscode-pylance +code --install-extension ms-toolsai.jupyter +code --install-extension alexcvzz.vscode-sqlite +``` + +Aquí está la lista de las extensiones que estás instalando: + +- [Sublime Text Keymap and Settings Importer](https://marketplace.visualstudio.com/items?itemName=ms-vscode.sublime-keybindings) +- [VSCode Great Icons](https://marketplace.visualstudio.com/items?itemName=emmanuelbeziat.vscode-great-icons) +- [Live Share](https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsliveshare) +- [Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python) +- [Python Indent](https://marketplace.visualstudio.com/items?itemName=KevinRose.vsc-python-indent) +- [Pylance](https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance) +- [Jupyter](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter) +- [SQLite](https://marketplace.visualstudio.com/items?itemName=alexcvzz.vscode-sqlite) + + +## Herramientas de línea de comando + +### Comprueba la configuración regional (locale) + +La "locale" es un mecanismo que permite adaptar los programas a su idioma y país. + +Comprobemos que la configuración regional por defecto es el inglés: + +```bash +locale +``` + +Si la salida no contiene `LANG=en_US.UTF-8`, ejecute el siguiente comando en un Ubuntu terminal para instalar la locale inglesa: + +```bash +sudo locale-gen en_US.UTF-8 +``` + +Si después, recibes una advertencia (`bash: warning: setlocale: LC_ALL: cannot change locale (en_US.utf-8)`) en tu terminal, por favor haz lo siguiente: + +
+ Generar la configuración regional<>/summary> + +Por favor, ejecuta estas líneas en tu terminal. + +```bash +sudo update-locale LANG=en_US.UTF8 +sudo apt-get update +sudo apt-get install language-pack-en language-pack-en-base manpages +``` +
+ +### Zsh & Git + +En lugar de usar el `bash` [shell](https://en.wikipedia.org/wiki/Shell_(computing)) predeterminado, usaremos `zsh`. + +También utilizaremos [`git`](https://git-scm.com/), un programa de línea de comando para control de versiones. + +Vamos a instalarlos, junto con otros programas útiles: +- Abre una **terminal de Ubuntu** +- Copia y pega los siguientes comandos: + +```bash +sudo apt update +``` + +```bash +sudo apt install -y curl git imagemagick jq unzip vim zsh +``` + +Estos comandos te pedirán tu contraseña: escríbela. + +:warning: Cuando escribas tu contraseña no verás nada en la pantalla. **Esto es normal**. Es una herramienta de seguridad para ocultar tanto el contenido de tu contraseña como su longitud. Simplemente escribe tu contraseña y presiona `Enter` al terminar. + +### Instalación de la CLI de GitHub + +Instalemos la [CLI oficial de GitHub](https://cli.github.com) (Interfaz de Línea de Comando). Es un programa que se usa para interactuar con tu cuenta GitHub por medio de la línea de comando. + +En tu terminal, copia y pega los siguientes comandos y escribe tu contraseña si te la piden: + +```bash +sudo apt remove -y gitsome # gh command can conflict with gitsome if already installed +curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg +echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null +sudo apt update +sudo apt install -y gh +``` + +Ejecuta el comando que te mostramos a continuación para verificar que `gh` se haya instalado correctamente en tu máquina: + +```bash +gh --version +``` + +:heavy_check_mark: Si ves esta versión `gh version X.Y.Z (YYYY-MM-DD)`, puedes continuar trabajando :+1: + +:x: Si no es el caso, por favor **contacta a un profesor** + + +## Oh-my-zsh + +Instalemos el plugin `zsh` [Oh My Zsh](https://ohmyz.sh/). + +Ejecuta este comando en la terminal: + +```bash +sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" +``` + +Si te preguntan "Do you want to change your default shell to zsh?", presiona `Y` + +Cuando termines, tu terminal debería lucir así: + +![La terminal de Ubuntu con OhMyZsh](https://github.com/lewagon/setup/blob/master/images/oh_my_zsh.png) + +:heavy_check_mark: Si es el caso, puedes continuar :+1: + +:x: Si no, por favor **pídele ayuda a un profesor**. + + +## direnv + +[direnv](https://direnv.net/) es una extensión del shell. Facilita trabajar con variables de entorno por proyecto, lo cual será útil para customizar el comportamiento de tu código. + + +``` bash +sudo apt-get update; sudo apt-get install direnv +echo 'eval "$(direnv hook zsh)"' >> ~/.zshrc +``` + + + +## GitHub CLI + +CLI es una abreviación de [Command-line Interface](https://en.wikipedia.org/wiki/Command-line_interface) que significa interfaz de línea de comando. + +En esta sección usaremos [GitHub CLI](https://cli.github.com/) para interactuar directamente con GitHub desde la terminal. + +Usaremos la GitHub CLI (`gh`) para conectarnos a GitHub utilizando *SSH*, un protocolo para iniciar la sesión utilizando claves SSH en lugar de la famosa pareja nombre de usuario y contraseña. + +Ya debería haberse instalado en tu computadora con los comandos que ejecutaste anteriormente. + +Lo primero que hay que hacer para **iniciar sesión** es copiar y pegar el comando siguiente en tu terminal: + +:warning: **NO edites el `email`** — Aunque `user:email` parezca un marcador de posición para tu dirección de correo real, no lo es — no lo reemplaces. + +```bash +gh auth login -s 'user:email' -w --git-protocol ssh +``` + +`gh` le hará algunas preguntas: + +- `Generate a new SSH key to add to your GitHub account?` Presiona `Enter` para pedirle a gh que genere las claves SSH por ti. + + Si ya tienes claves SSH, verás en su lugar `Upload your SSH public key to your GitHub account?`Con las flechas, selecciona la ruta de tu archivo de clave pública y pulsa `Intro`. + +- `Enter a passphrase for your new SSH key (Optional)`: + - **PARA LA MAYORÍA DE LOS ESTUDIANTES:** Simplemente presiona `Enter` para omitir. No necesitas una contraseña para el bootcamp y te la pediría cada vez que uses la clave. Sin embargo, hay un riesgo de que si alguien roba tu computadora, pueda subir código a GitHub. + - **SI LA SEGURIDAD ES MUY IMPORTANTE PARA TI:** Escribe una contraseña de tu elección y presiona `Enter`. Es _muy_ importante que si introduces una contraseña, la anotes en algún lugar inmediatamente y no la pierdas ni la olvides. Tendrás que introducirla con frecuencia. + +- `Title for your SSH key`. Puede dejarlo en la propuesta "GitHub CLI", presiona `Enter`. + +Obtendrás el siguiente resultado: + +```bash +! First copy your one-time code: 0EF9-D015 +- Press Enter to open github.com in your browser... +``` + +Selecciona y copia el código (`0EF9-D015` en el ejemplo) y luego presiona `Enter`. + +Tu navegador se abrirá y te pedirá que autorices GitHub CLI para usar tu cuenta GitHub. Acepta y espera un poco. + +Regresa a la terminal, presiona `Enter` nuevamente y listo. Eso es todo. + +Para verificar que están conectado correctamente, escribe lo siguiente: + +```bash +gh auth status +``` + +:heavy_check_mark: Si obtienes este mensaje: `Logged in to github.com as `, significa que todo está bien :+1: + +:x: De lo contrario, **contacta a un profesor**. + + +## CLI de Google Cloud + +Instala la CLI de `gcloud` para comunicar con [Google Cloud Platform](https://cloud.google.com/) a través de la terminal: +```bash +echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list +sudo apt-get install apt-transport-https ca-certificates gnupg +curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add - +sudo apt-get update && sudo apt-get install google-cloud-sdk +sudo apt-get install google-cloud-sdk-app-engine-python +``` +👉 [Documentación para la instalación](https://cloud.google.com/sdk/docs/install#deb) + + +- Guarda el archivo json de la cuenta de servicio en un lugar que recuerdes. Por ejemplo: + +``` bash +/home/LINUX_USERNAME/code/GITHUB_NICKNAME/gcp/SERVICE_ACCOUNT_JSON_FILE_CONTAINING_YOUR_SECRET_KEY.json +``` + +- Guarda la **ruta absoluta** al archivo `JSON` como una variable de entorno: + +``` bash +echo 'export GOOGLE_APPLICATION_CREDENTIALS=/path/to/the/SERVICE_ACCOUNT_JSON_FILE_CONTAINING_YOUR_SECRET_KEY.json' >> ~/.aliases +``` + + +## Dotfiles + +Los hackers aman mejorar sus shells y sus herramientas. Comenzaremos con una configuración por defecto genial proporcionada por [Le Wagon](http://github.com/lewagon/dotfiles) y almacenada en GitHub. + +### Verifica tu configuración de GitHub CLI + +Primero, hagamos una verificación rápida. Abre tu terminal y ejecuta el comando siguiente: + +```bash +export GITHUB_USERNAME=`gh api user | jq -r '.login'` +echo $GITHUB_USERNAME +``` + +Deberías ver tu usuario GitHub. Si no es así, **no hagas más nada** y pide ayuda. +Parece que hay un problema con el paso anterior (`gh auth`). + +### Fork y/o clone los archivos de configuración + +Hay tres opciones, escoge **una**: + + +
+ + No he hecho el bootcamp de Web Development o Data Science & AI o Data Analytics de Le Wagon + + + Tu configuración es personal, así que necesitas tu propio repositorio para almacenarla. Primero tienes que hacer el fork del repositorio en tu cuenta GitHub. + +Hacer un fork significa que crearás un nuevo repositorio en tu cuenta GitHub idéntico al original. Tendrás un nuevo repositorio en tu cuenta GitHub, `your_github_username/dotfiles`. El fork es necesario porque cada uno de ustedes necesitará poner información específica (e.g. tu nombre) en esos archivos. + +Ejecutemos este comando para hacer un **fork** del repositorio `lewagon/dotfiles` y clonarlo: + +```bash +mkdir -p ~/code/$GITHUB_USERNAME && cd $_ +gh repo fork lewagon/dotfiles --clone +``` + +
+ + +
+ + Ya hice el bootcamp de Web Development o Data Science & AI o Data Analytics de Le Wagon pero tengo una nueva laptop + + +Esto significa que ya has hecho el fork del repositorio GitHub lewagon/dotfiles pero tal vez la configuración para el nuevo bootcamp de Data Analytics no estaba lista en ese momento.Actualicémoslo. **Pide a un TA que te acompañe en los siguientes pasos.** + +Es hora de clonarlo el repositorio en tu laptop: + +```bash +mkdir -p ~/code/$GITHUB_USERNAME && cd $_ +gh repo clone lewagon/dotfiles +``` + + +Abre tu terminal y ve a tu proyecto `dotfiles`: + +```bash +cd ~/code/$GITHUB_USERNAME$/dotfiles +``` + +Es hora de fusionar los cambios de lewagon/dotfiles en los tuyos: + +1. Commit la versión actual de tus dotfiles: + ```bash + git add . + git status # Check what will be committed + git commit -m "Version prior to new setup" + ``` + +1. Trae los cambios del repositorio upstream: `git merge upstream/master` + +1. Verifica que no estés en estado MERGING. Si lo estás, resuelve los conflictos. + +1. Haz un `git diff HEAD~1 HEAD` para revisar qué cambió. + +1. Si todo parece estar en orden, continúa. + +
+ ¿Demasiados conflictos? + + + Vamos a tomar la versión actual de `lewagon/dotfiles`. + + Primero aborta la merge: `git merge --abort`. + + Ejecuta `code .` + + En VS Code, abre el archivo zshrc. Reemplaza su contenido con la [versión más reciente](https://raw.githubusercontent.com/lewagon/dotfiles/master/zshrc). Luego guárdalo en el disco. + + Aún en VS Code, abre el archivo `zprofile`. Reemplaza su contenido con la [versión más reciente](https://raw.githubusercontent.com/lewagon/dotfiles/master/zprofile). Luego guárdalo en el disco. + + Regresa a la terminal y ejecuta un `git diff` y verifica que esto no haya eliminado ninguna configuración personal que quisieras conservar. + +
+ +Es hora de guardar tus cambios y subirlos. + +```bash +git add . +git commit -m "Update for Data Analytics bootcamp" +git push origin master +``` + +
+ + +
+ + Ya hice el bootcamp de Web Development o Data Science & AI o Data Analytics de Le Wagon en la misma laptop + + +Esto significa que ya has hecho el fork del repositorio GitHub lewagon/dotfiles pero tal vez la configuración para el nuevo bootcamp de Data Analytics no estaba lista en ese momento. Actualicémoslo. **Pide a un TA que te acompañe en los siguientes pasos.** + + +Abre tu terminal y ve a tu proyecto `dotfiles`: + +```bash +cd ~/code/$GITHUB_USERNAME$/dotfiles +``` + +Es hora de fusionar los cambios de lewagon/dotfiles en los tuyos: + +1. Commit la versión actual de tus dotfiles: + ```bash + git add . + git status # Check what will be committed + git commit -m "Version prior to new setup" + ``` + +1. Trae los cambios del repositorio upstream: `git merge upstream/master` + +1. Verifica que no estés en estado MERGING. Si lo estás, resuelve los conflictos. + +1. Haz un `git diff HEAD~1 HEAD` para revisar qué cambió. + +1. Si todo parece estar en orden, continúa. + +
+ ¿Demasiados conflictos? + + + Vamos a tomar la versión actual de `lewagon/dotfiles`. + + Primero aborta la merge: `git merge --abort`. + + Ejecuta `code .` + + En VS Code, abre el archivo zshrc. Reemplaza su contenido con la [versión más reciente](https://raw.githubusercontent.com/lewagon/dotfiles/master/zshrc). Luego guárdalo en el disco. + + Aún en VS Code, abre el archivo `zprofile`. Reemplaza su contenido con la [versión más reciente](https://raw.githubusercontent.com/lewagon/dotfiles/master/zprofile). Luego guárdalo en el disco. + + Regresa a la terminal y ejecuta un `git diff` y verifica que esto no haya eliminado ninguna configuración personal que quisieras conservar. + +
+ +Es hora de guardar tus cambios y subirlos. + +```bash +git add . +git commit -m "Update for Data Analytics bootcamp" +git push origin master +``` + +
+ + +### Ejecuta el instalador de dotfiles + +Ejecuta el instalador de `dotfiles`. + +```bash +cd ~/code/$GITHUB_USERNAME/dotfiles && zsh install.sh +``` + +Verifica los emails registrados en tu cuenta GitHub. Deberás seleccionar uno de ellos en el próximo paso: + +```bash +gh api user/emails | jq -r '.[].email' +``` + +Ejecuta el instalador de git: + +```bash +cd ~/code/$GITHUB_USERNAME/dotfiles && zsh git_setup.sh +``` + +:point_up: Esto te **guiará** con tu nombre (`FirstName LastName`) y con tu email. +:warning: Cuidado, **debes** poner uno de los emails de la lista de arriba que te suministra el comando `gh api ...` usado anteriormente. Si haces eso, Kitt no podrá hacerle seguimiento a tu progreso. Cualquier correo que elijas se mostrará **públicamente** en internet. 💡 Selecciona la dirección `@users.noreply.github.com` si no quieres que tu correo electrónico aparezca en los repositorios públicos a los que puedas contribuir. + +Ahora **cierra** todas las ventanas de tu terminal que tengas abiertas por favor. + + + + +## Desahilitación de la solicitud de SSH passphrase + +No vas a querer que te pidan tu passphrase cada vez que te comuniques con un repositorio remoto. Por eso debes agregarle plugin `ssh-agent` a `oh my zsh`: + +Primero abre el archivo `.zshrc`: + +```bash +code ~/.zshrc +``` + +Luego: +- Identifica la línea que comienza por `plugins=` +- Agrega `ssh-agent` al final de la lista de plugins + +La lista debería verse de la siguiente manera: + +```bash +plugins=(gitfast last-working-dir common-aliases zsh-syntax-highlighting history-substring-search pyenv ssh-agent) +``` + +:heavy_check_mark: Guarda el archivo `.zshrc` con `Ctrl` + `S` y cierra tu editor de texto. + + +### Instala `pyenv` + +Ubuntu viene con una versión vieja de Python que no queremos usar. Tal vez ya hayas instalado Anaconda u otro programa para utilizar Python y paquetes de Ciencia de Datos. Si es así, no pasa nada ya que haremos una configuración profesional de Python que te permitirá cambiar de versión cuando quieras al escribir `python` en la terminal. + +Primero instala `pyenv` con el siguiente comando en la Terminal: + +```bash +git clone https://github.com/pyenv/pyenv.git ~/.pyenv +exec zsh +``` + +Instala algunas [dependencias](https://github.com/pyenv/pyenv/wiki/common-build-problems#prerequisites) necesarias para crear Python desde `pyenv`: + +```bash +sudo apt-get update; sudo apt-get install make build-essential libssl-dev zlib1g-dev \ +libbz2-dev libreadline-dev sqlite3 libsqlite3-dev wget curl llvm \ +libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev \ +python3-dev +``` + +### Instala Python + +Instala la [última versión estable de Python](https://www.python.org/doc/versions/) que sea aceptada en el currículum de Le Wagon: + +```bash +pyenv install 3.12.9 +``` + +Este comando puede tomar un tiempo en ejecutarse. Esto es completamente normal. ¡No dudes en ayudar a los estudiantes que estén sentados cerca de ti! + +OK. Cuando este comando termine de ejecutarse, le diremos al sistema que use esta versión de Python **por defecto**. Esto se hace con: + +```bash +pyenv global 3.12.9 +exec zsh +``` + +Para verificar que esto haya funcionado, ejecuta `python --version`. Si ves `3.12.9`, ¡todo está bien! Si no, pídele ayuda a un TA para resolver el problema por medio de `versiones de pyenv` y `type -a python` (`python` debería estar usando la versión `.pyenv/shims` de primero). + + +## Entorno Virtual de Python + +Antes de instalar paquetes de Python, aislaremos la configuración del Bootcamp en un entorno virtual **dedicado**. Usaremos un plugin `pyenv` llamado [`pyenv-virtualenv`](https://github.com/pyenv/pyenv-virtualenv). + +### Instala un virtualenv + +Primero instala este plugin: + +```bash +git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv +exec zsh +``` + +Crea el entorno virtual que usaremos durante todo el bootcamp: + +```bash +pyenv virtualenv 3.12.9 lewagon +``` + +Define el entorno virtual con lo siguiente: + +```bash +pyenv global lewagon +``` + +¡Genial! Ahora cada vez que queramos instalar un paquete Python, lo haremos en ese entorno. + + +### Paquetes de Python + +Ahora que tenemos el ambiente virtual de `lewagon` adecuado, es hora de instalarle algunos paquetes. + +Primero, actualiza `pip`, la herramienta para instalar Paquetes Python desde [pypi.org](https://pypi.org). Ejecuta lo siguiente en la última terminal donde esté activado el virtualenv de `lewagon`: + +```bash +pip install --upgrade pip +``` + +Ahora instala algunos paquetes para las primeras semanas del programa: + + + +``` bash +pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/specs/releases/linux.txt +``` + + + + +## Mejora Jupyter Notebook + +Mejora la visualización del [elemento `details` para revelación de información](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details) en tus notebooks. + +Ejecuta las siguientes líneas para crear una hoja de estilos `custom.css` en tu directorio de configuración de Jupyter: + +```bash +LOCATION=$(jupyter --config-dir)/custom +SOURCE=https://raw.githubusercontent.com/lewagon/data-analytics-setup/refs/heads/master/specs/jupyter/custom.css +mkdir -p $LOCATION +curl $SOURCE > $LOCATION/custom.css +``` + + +## Chequeo de la configuración de Python + +### Chequeo de Python y packages + +Reinicia tu terminal: + +```bash +cd ~/code && exec zsh +``` + +Verifica tu versión de Python con los siguientes comandos: + +```bash +zsh -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/python_checker.sh)" 3.12.9 +``` + +Ejecuta el comando siguiente para verificar que hayas instalado los paquetes requeridos correctamente: + +```bash +zsh -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/pip_check.sh)" +``` + +Ahora ejecuta el siguiente comando para verificar que puedas cargar estos paquetes: + +```bash +python -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/pip_check.py)" +``` + +### Chequeo de Jupyter + +Ahora verifica que puedas iniciar un servidor de notebook en tu máquina: + +```bash +jupyter notebook +``` + +Tu navegador web debería abrir en una ventana `jupyter`: + +![jupyter.png](images/jupyter.png) + +Haz clic en `New` y, en el menú desplegable, selecciona Python 3 (ipykernel): + +![jupyter_new.png](images/jupyter_new.png) + +Debería abrirse una pestaña en un nuevo notebook: + +![jupyter_notebook.png](images/jupyter_notebook.png) + +Asegúrate de que estés usando la versión correcta de python en el notebook. Abre una celda y ejecuta lo siguiente: + +``` python +import sys; sys.version +``` + +Debería mostrar `3.12.9` seguido de algunos detalles adicionales. Si no es así, consulta con un TA. + +Puedes cerrar tu navegador web y luego cerrar el servidor jupyter con `CTRL` + `C`. + +¡Listo! Ya tienes un virtual env de python completo con todos los paquetes tercerizados que necesitarás en el bootcamp. + + + ## Kitt + +Deberías haber recibido un correo electrónico de Le Wagon invitándote a registrarte en [Kitt](https://kitt.lewagon.com) (nuestra plataforma de aprendizaje). + +Entonces deberías recibir una invitación adicional de Slack, invitándote a la comunidad de los alumni de Le Wagon en slack (donde podrás chatear con tus compañeros y todos los demás alumni). Haz clic en **Join** y completa la información que te piden. + +Si no lo has recibido, por favor contacta a tu equipo de enseñanza. + + +## Slack + +[Slack](https://slack.com/) es una plataforma de comunicación popular en la industria tech. + +### Instalación + +[Descarga la aplicación Slack](https://slack.com/downloads/windows) e instálala. + +:warning: Si ya estás usando Slack en tu navegador, por favor descarga e instala **la aplicación de escritorio** la cual tiene todas las funciones. + + +### Parámetros + +Abre la aplicación e inicia sesión en `lewagon-alumni`. + +Asegúrate de **subir una foto para tu perfil** :point_down: + +![Cómo subir una foto de perfil en Slack](https://github.com/lewagon/setup/blob/master/images/slack_profile_picture.gif) + +La idea es tener Slack abierto todo el día para compartir enlaces útiles / pedir ayuda / decidir dónde almorzar / etc. + +Para asegurarte de que todo lo relacionado a videollamadas funcione bien, prueba tu cámara y tu micrófono: +- Abre la aplicación Slack +- Haz clic en tu foto de perfil en la esquina superior derecha +- Selecciona "Preferencias" en el menú. +- Haz clic en "Audio y vídeo" en la columna de la izquierda. +- Debajo de "Solución de problemas", haz clic en "Ejecutar una prueba de audio, vídeo y pantalla compartida". La prueba se abrirá en una nueva ventana. +- Comprueba que tus dispositivos preferidos de altavoz, micrófono y cámara aparecen en los menús desplegables y haz clic en "Iniciar prueba" +- Haz clic en el botón verde "Start test" + +![Chequea el micrófono y la cámara con Slack](https://github.com/lewagon/setup/blob/master/images/slack_call_test.png) + +:heavy_check_mark: Cuando termine el test deberías ver mensajes de "Succeed" en verde por lo menos para tu micrófono y tu cámara. :+1: + +:x: Si no es el caso, **contacta a un profesor**. + +¡También puedes instalar la aplicación Slack en tu smartphone e iniciar sesión en `lewagon-alumni`! + + +## Extra + +Si has terminado la configuración, te pedimos que preguntes si alguien necesita ayuda con la suya (macOS, Linux o Windows). Las primeras clases son a las 2pm. Hablaremos de la configuración que acabas de hacer y de Kitt. + +Si no tienes mucha experiencia con `git` y GitHub, por favor [ve nuevamente el video de este workshop](https://www.youtube.com/watch?v=Z9fIBT2NBGY) (puedes verlo a `1.25` de velocidad). + + diff --git a/VM.md b/VM.md index a00d914..13ffabc 100644 --- a/VM.md +++ b/VM.md @@ -6,6 +6,7 @@ Please **read them carefully and execute all commands in the following order**. Let's start :rocket: + ## GitHub account Have you signed up to GitHub? If not, [do it right away](https://github.com/join). @@ -16,6 +17,7 @@ Have you signed up to GitHub? If not, [do it right away](https://github.com/join :point_right: **[Enable Two-Factor Authentication (2FA)](https://docs.github.com/en/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication#configuring-two-factor-authentication-using-text-messages)**. GitHub will send you text messages with a code when you try to log in. This is important for security and also will soon be required in order to contribute code on GitHub. + ## SSH key We want to safely communicate with your virtual machine using [SSH protocol](https://en.wikipedia.org/wiki/Secure_Shell). We need to generate a SSH key to authenticate. @@ -34,24 +36,22 @@ We highly recommend installing [Windows Terminal](https://apps.microsoft.com/sto Windows ```bash -# replace "your_email@example.com" with your GCP account email -ssh-keygen.exe -t ed25519 -C "your_email@example.com" +# replace your_email@example.com, this is purely informative and allows you to remember the use of this key +ssh-keygen.exe -t ed25519 -C your_email@example.com ``` -
MacOS & Linux ```bash -# replace "your_email@example.com" with your GCP account email -ssh-keygen -t ed25519 -C "your_email@example.com" +# replace your_email@example.com, this is purely informative and allows you to remember the use of this key +ssh-keygen -t ed25519 -C your_email@example.com ``` -
-You should get the following message: `> Generating public/private algorithm key pair.` +You should get the following message: `> Generating public/private algorithm key pair.` - When you are prompted `> Enter a file in which to save the key`, press Enter - You should be asked to `Enter a passphrase` - this is optional if you want additional security. To continue without a passphrase press enter without typing anything when asked to enter a passphrase. @@ -68,13 +68,14 @@ If you receive this message, you may already have an SSH Key with the same name To create a separate SSH key to exclusively use for this bootcamp use the following: ```bash -# replace "your_email@example.com" with your GCP account email -ssh-keygen -t ed25519 -f ~/.ssh/de-bootcamp -C "your_email@example.com" +# replace your_email@example.com, this is purely informative and allows you to remember the use of this key +ssh-keygen -t ed25519 -f ~/.ssh/de-bootcamp -C your_email@example.com ``` Your new SSH Key will be named `de-bootcamp`. Make sure to remember it for later! + ## Google Cloud Platform setup [GCP](https://cloud.google.com/) is a cloud solution that you are going to use in order to work on a virtual machine. @@ -97,15 +98,13 @@ Your new SSH Key will be named `de-bootcamp`. Make sure to remember it for later In order to facilitate the following of the instructions during the bootcamp, open your GCP account preferences: -[https://myaccount.google.com/language](https://myaccount.google.com/language) +https://myaccount.google.com/language If the *preferred language* is not: - - **English** - **United States** Then switch the language to english: - - Click on the edit pen logo - Select **English** - Select **United States** @@ -144,13 +143,14 @@ Once this is done, verify that your billing account is linked to your GCP projec You should now see: -```bash +``` Free trial status: $300 credit and 91 days remaining - with a full account, you'll get unlimited access to all of Google Cloud Platform. ```
👉 If you do not own a credit card 👈 + If you do not own a credit card, an alternative is to setup a **Revolut** account. Revolut is a financial app that will allow you to create a virtual credit card linked to your mobile phone billing account. @@ -170,7 +170,6 @@ Once this is done, select the standard (free) plan. No need to add the card to A You now have a virtual card which we will use for the GCP setup. In the main view of the Revolut the app - - Click on Ready to use - Click on the card - Click on Show card details @@ -181,6 +180,7 @@ In the main view of the Revolut the app
👉 If you receive an email from Google saying "Urgent: your billing account XXXXXX-XXXXXX-XXXXXX has been suspended" 👈 + This may happen especially in case you just setup a Revolut account. - Click on PROCEED TO VERIFICATION @@ -215,88 +215,22 @@ Go to your project [APIs dashboard](https://console.cloud.google.com/apis/dashbo APIs enable - Compute Engine is now enabled on your project -## Virtual Machine (VM) - -**👌 Note: Skip to the next section if you already have a VM set up** - -_Note: The following section requires you already have a [Google Cloud Platform](https://cloud.google.com/) account associated with an active [Billing account](https://console.cloud.google.com/billing)._ - -- Go to console.cloud.google.com > > Compute Engine > VM instances > Create instance -- Name it `lewagon-data-eng-vm-`, replace `` with your own, e.g. `krokrob` -- Region `europe-west1`, choose the closest one among the [available regions](https://cloud.google.com/compute/docs/regions-zones#available) - - gcloud-console-vm-create-instance -- In the section `Machine configuration` under the sub-heading `Machine type` -- Select General purpose > PRESET > e2-standard-4 - - gcloud-console-vm-e2-standard4 -- Boot disk > Change - - Operating system > Ubuntu - - Version > Ubuntu 22.04 LTS x86/64 - - Boot disk type > Balanced persistent disk - - Size > upgrade to 150GB - - gcloud-console-vm-ubunt -- Open `Networking, Disks, ...` under `Advanced options` -- Open `Networking` - - gcloud-console-vm-networking -- Go to `Network interfaces` and click on `default default (...)` with a downward arrow on the right. - - gcloud-console-vm-network-interfaces -- This opened a box `Edit network interface` -- Go to the dropdown `External IPv4 address`, click on it, click on `RESERVE STATIC EXTERNAL IP ADDRESS` - - gcloud-console-vm-create-static-ip -- Give it a name, like "lewagon-data-eng-vm-ip-" (replace `` with your own) and description "Le Wagon - Data Engineering VM IP". This will take a few seconds. - - gcloud-console-reserve-static-ip - -- You will now have a public IP associated with your account, and later to your VM instance. Click on `Done` at the bottom of the section `Edit network interface` you were in. - - gcloud-console-new-external-ip - -### Public SSH key -- Open the `Security` section - gcloud-console-vm-security -- Open the `Manage access` subsection - - gcloud-console-manage-access -- Go to `Add manually generated SSH keys` and click `Add item` - - gcloud-console-add-manual-ssh-key -- In your terminal display your public SSH key: - - Windows: navigate to where you created your SSH key and open `id_ed25519.pub` - - - Mac/Linux users can use: - - ```bash - cat ~/.ssh/id_ed25519.pub - # OR cat ~/.ssh/de-bootcamp.pub if you created a unique key - ``` - -- Copy your public SSH key and paste it: - - gcloud-console-add-ssh-key-pub -- On the right hand side you should see +## Virtual Machine (VM) - gcloud-console-vm-price-month -- You should be good to go and click `CREATE` at the bottom +_Note: The VM setup requires a [Google Cloud Platform](https://cloud.google.com/) account associated with an active [Billing account](https://console.cloud.google.com/billing)_ - gcloud-console-vm-create -- It will take a few minutes for your virtual machine (VM) to be created. Your instance will show up like below when ready, with a green circled tick, named `lewagon-data-eng-vm-krokrob` (`krokrob` being replaced by your GitHub username). +ℹ️ In the guide, left click to drag the screenshots if necessary - gcloud-console-vm-instance-running -- Click on your instance +ℹ️ You may adjust the aspect ratio of your browser window to see the full screenshots - gcloud-console-vm-running -- Go down to the section `SSH keys`, and write down your username (you need it for the next section) + + scribe gcp vm + - gcloud-console-vm-username +**👌 Follow [this guide](https://scribehow.com/embed/Create_a_Google_Cloud_VM_Instance_with_SSH_Key__1ohFlAbSR9yoG28S0PDfwg) or skip to the next section if you already have a VM set up** -Congrats, your virtual machine is up and running, it is time to connect it with VS Code! ## Visual Studio Code @@ -309,10 +243,11 @@ Let's install [Visual Studio Code](https://code.visualstudio.com) text editor. - Open the file you have just downloaded. - Install it with few options: -![VS Code installation options](https://github.com/lewagon/data-engineering-setup/blob/main/https://github.com/lewagon/setup/blob/master/images/windows_vscode_installation.png) +![VS Code installation options](https://github.com/lewagon/setup/blob/master/images/windows_vscode_installation.png) When the installation is finished, launch VS Code. + ### VS Code Remote SSH Extension We need to connect VS Code to a virtual machine in the cloud so you will only work on that machine during the bootcamp. A pretty useful [**Remote SSH Extension**](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh) is available on the VS Code Marketplace. @@ -338,6 +273,7 @@ That's the only extension you should install on your _local_ machine, we will in vscode-ssh-connection-command + - When prompted to `Select SSH configuration file to update`, pick the one in your home directory, under the `.ssh` folder, `~/.ssh/config` basically. Usually VS Code will pick automatically the best option, so their default should work. vscode-add-host-ssh-config @@ -374,7 +310,6 @@ Host IdentityFile User ``` - You can now change Host to whatever you would like to see as the name of your connection or in terminal with `ssh `! ❗️ It is important that the `Host` alias does not contain any whitespaces ❗️ @@ -389,6 +324,7 @@ Host "de-bootcamp-vm" **The setup of your local machine is over. All following commands will be run from within your 🚨 virtual machine**🚨 terminal (via VS code for instance) + ## VS Code Extensions ### Installation @@ -417,8 +353,39 @@ Here is a list of the extensions you are installing: - [Jupyter](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter) - [SQLite](https://marketplace.visualstudio.com/items?itemName=alexcvzz.vscode-sqlite) + ## Command line tools +### Check the locale + +The locale is a mechanism allowing to customize programs to your language and country. + +Let's verify that the default locale is set to English, please type this in the Ubuntu terminal: + +```bash +locale +``` + +If the output does not contain `LANG=en_US.UTF-8`, run the following command in a Ubuntu terminal to install the english locale: + +```bash +sudo locale-gen en_US.UTF-8 +``` + +If after, you receive a warning (`bash: warning: setlocale: LC_ALL: cannot change locale (en_US.utf-8)`) in your terminal, please do the following: + +
+ Generate locale + +Please, run this lines in your terminal. + +```bash +sudo update-locale LANG=en_US.UTF8 +sudo apt-get update +sudo apt-get install language-pack-en language-pack-en-base manpages +``` +
+ ### Zsh & Git Instead of using the default `bash` [shell](https://en.wikipedia.org/wiki/Shell_(computing)), we will use `zsh`. @@ -426,7 +393,6 @@ Instead of using the default `bash` [shell](https://en.wikipedia.org/wiki/Shell_ We will also use [`git`](https://git-scm.com/), a command line software used for version control. Let's install them, along with other useful tools: - - Open an **Ubuntu terminal** - Copy and paste the following commands: @@ -475,6 +441,7 @@ gh --version :x: Otherwise, please **contact a teacher** + ## Oh-my-zsh Let's install the `zsh` plugin [Oh My Zsh](https://ohmyz.sh/). @@ -495,15 +462,19 @@ At the end your terminal should look like this: :x: Otherwise, please **ask for a teacher** + ## direnv [direnv](https://direnv.net/) is a shell extension. It makes it easy to deal with per project environment variables. This will be useful in order to customize the behavior of your code. + ``` bash sudo apt-get update; sudo apt-get install direnv echo 'eval "$(direnv hook zsh)"' >> ~/.zshrc ``` + + ## GitHub CLI CLI is the acronym of [Command-line Interface](https://en.wikipedia.org/wiki/Command-line_interface). @@ -516,7 +487,7 @@ We will use the GitHub CLI (`gh`) to connect to GitHub using *SSH*, a protocol t First in order to **login**, copy-paste the following command in your terminal: -:warning: **DO NOT edit the `email`** +:warning: **DO NOT edit the `email`** — Even though `user:email` looks like a placeholder for your actual email address, it isn't — do not replace it. ```bash gh auth login -s 'user:email' -w --git-protocol ssh @@ -528,7 +499,9 @@ gh auth login -s 'user:email' -w --git-protocol ssh If you already have SSH keys, you will see instead `Upload your SSH public key to your GitHub account?` With the arrows, select your public key file path and press `Enter`. -- `Enter a passphrase for your new SSH key (Optional)`. Type something you want and that you'll remember. It's a password to protect your private key stored on your hard drive. Then press `Enter`. +- `Enter a passphrase for your new SSH key (Optional)`: + - **FOR MOST PEOPLE:** Just press `Enter` to skip. You don't need a passphrase for the bootcamp and it would prompt you every time you use the key. There is a risk, however, that if someone steals your laptop, they could then push to GitHub. + - **IF SECURITY IS REALLY IMPORTANT TO YOU:** Enter a passphrase of your choice and press `Enter`. It's _really_ important that if you enter a passphrase, you write it down somewhere immediately and do not lose/forget it. You will need to enter this frequently. - `Title for your SSH key`. You can leave it at the proposed "GitHub CLI", press `Enter`. @@ -555,10 +528,10 @@ gh auth status :x: If not, **contact a teacher**. + ## Google Cloud CLI Install the `gcloud` CLI to communicate with [Google Cloud Platform](https://cloud.google.com/) through your terminal: - ```bash echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list sudo apt-get install apt-transport-https ca-certificates gnupg @@ -566,7 +539,6 @@ curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyr sudo apt-get update && sudo apt-get install google-cloud-sdk sudo apt-get install google-cloud-sdk-app-engine-python ``` - 👉 [Install documentation](https://cloud.google.com/sdk/docs/install#deb) ### Create a service account key 🔑 @@ -578,11 +550,12 @@ Now that you have created a `GCP account` and a `project` (identified by its `PR
🤔 Why do we need a service account key ? + You have created a `GCP account` linked to your credit card. Your account will be billed according to your usage of the ressources of the **Google Cloud Platform**. The billing will occur if you consume anything once the free trial is over, or if you exceed the amount of spending allowed during the free trial. - In your `GCP account`, you have created a single `GCP project`, identified by its `PROJECT_ID`. The `GCP projects` allow you to organize and monitor more precisely how you consume the **GCP** resources. For the purpose of the bootcamp, we are only going to create a single project. + In your `GCP account`, you have created a single `GCP project`, identified by its `PROJECT_ID`. The `GCP projects` allow you to organize and monitor more precisely how you consume the **GCP** ressources. For the purpose of the bootcamp, we are only going to create a single project. - Now, we need a way to tell which resources within a `GCP project` our code will be allowed to consume. Our code consumes GCP resources through API calls. + Now, we need a way to tell which ressources within a `GCP project` our code will be allowed to consume. Our code consumes GCP ressources through API calls. Since API calls are not free, it is important to define with caution how our code will be allowed to use them. During the bootcamp this will not be an issue and we are going to allow our code to use all the API of **GCP** without any restrictions. @@ -616,11 +589,11 @@ Since the [service account](https://cloud.google.com/iam/docs/service-accounts) The browser has now saved the service account json file 🔑 in your downloads directory (it is named according to your service account name, something like `le-wagon-data-123456789abc.json`) + ### Configure Cloud sdk - Open the service account json file with any text editor and copy the key - - ```json + ``` # It looks like: { "type": "service_account", @@ -635,52 +608,41 @@ The browser has now saved the service account json file 🔑 in your downloads d "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/bootcamp%40kevin-bootcamp.iam.gserviceaccount.com" } ``` - - **on your Virtual Machine**, create a `~/.gcp_keys` directory, then create a json file in it: - ``` bash mkdir ~/.gcp_keys touch ~/.gcp_keys/le-wagon-de-bootcamp.json ``` - - Open the json file then store the service account json file pasting the key: - ```bash code ~/.gcp_keys/le-wagon-de-bootcamp.json ``` - ![service account json key](https://github.com/lewagon/data-engineering-setup/blob/main/images/service_account_json_key.png) ❗️Don't forget to **save** the file with `CMD` + `s` or `CTRL` + `s` - Authenticate the `gcloud` CLI with the google account you used for GCP - ```bash # Replace service_account_name@project_id.iam.gserviceaccount.com with your own SERVICE_ACCOUNT_EMAIL=service_account_name@project_id.iam.gserviceaccount.com KEY_FILE=$HOME/.gcp_keys/le-wagon-de-bootcamp.json gcloud auth activate-service-account $SERVICE_ACCOUNT_EMAIL --key-file=$KEY_FILE ``` - - List your active account and check your email address you used for GCP is present - ```bash gcloud auth list ``` - - Set your current project - ```bash # Replace `PROJECT_ID` with the `ID` of your project, e.g. `wagon-bootcamp-123456` gcloud config set project PROJECT_ID ``` - - List your active account and current project and check your project is present - ```bash gcloud config list ``` + ## Dotfiles Hackers love to refine and polish their shell and tools. We'll start with a great default configuration provided by [Le Wagon](http://github.com/lewagon/dotfiles), stored on GitHub. @@ -701,6 +663,7 @@ There seems to be a problem with the previous step (`gh auth`). There are three options, choose **one**: +
I did not attend the Web Dev or Data Science & AI or Data Analytics bootcamp at Le Wagon @@ -720,6 +683,7 @@ gh repo fork lewagon/dotfiles --clone
+
I already attended a Le Wagon coding bootcamp (Web Development or Data Science & AI or Data Analytics) but I have a new laptop @@ -734,6 +698,7 @@ mkdir -p ~/code/$GITHUB_USERNAME && cd $_ gh repo clone $GITHUB_USERNAME/dotfiles ``` + Open your terminal and go to your `dotfiles` project: ```bash @@ -786,6 +751,7 @@ git push origin master
+
I already did the setup of a Le Wagon coding bootcamp (WebDev or Data Science & AI or Data Analytics) on the same laptop before @@ -793,6 +759,7 @@ git push origin master This means that you already forked and cloned the GitHub repo `lewagon/dotfiles`, but at that time the configuration was maybe not ready for the current Data Analytics bootcamp. Let's update it. **Ask a TA to join you for the nex steps.** + Open your terminal and go to your `dotfiles` project: ```bash @@ -845,6 +812,7 @@ git push origin master
+ ### Run the dotfiles installer It's time to run the `dotfiles` installer: @@ -870,6 +838,7 @@ cd ~/code/$GITHUB_USERNAME/dotfiles && zsh git_setup.sh Please now **quit** all your opened terminal windows. + ### zsh default terminal Set `zsh` as your default VS Code terminal. @@ -881,6 +850,7 @@ Set `zsh` as your default VS Code terminal. Terminal zsh profile + ## Disable SSH passphrase prompt You don't want to be asked for your passphrase every time you communicate with a distant repository. So, you need to add the plugin `ssh-agent` to `oh my zsh`: @@ -892,12 +862,12 @@ code ~/.zshrc ``` Then: - - Spot the line starting with `plugins=` - Add `ssh-agent` at the end of the plugins list :heavy_check_mark: Save the `.zshrc` file with `Ctrl` + `S` and close your text editor. + ### Install `pyenv` Ubuntu comes with an outdated version of Python that we don't want to use. You might already have installed Anaconda or something else to tinker with Python and Data Analytics packages. All of this does not really matter as we are going to do a professional setup of Python where you'll be able to switch which version you want to use whenever you type `python` in the terminal. @@ -957,6 +927,7 @@ exec zsh To check if this worked, run `python --version`. If you see `3.12.9`, perfect! If not, ask a TA that will help you debug the problem thanks to `pyenv versions` and `type -a python` (`python` should be using the `.pyenv/shims` version first). + ## Python Virtual Environment Before we start installing relevant Python packages, we will isolate the setup for the Bootcamp into a **dedicated** virtual environment. We will use a `pyenv` plugin called [`pyenv-virtualenv`](https://github.com/pyenv/pyenv-virtualenv). @@ -984,6 +955,7 @@ pyenv global lewagon Great! Anytime we'll install Python package, we'll do it in that environment. + ### Python packages Now that we have a pristine `lewagon` virtual environment, it's time to install some packages in it. @@ -996,10 +968,15 @@ pip install --upgrade pip Then let's install some packages for the first weeks of the program: + + ``` bash -pip install -r https://raw.githubusercontent.com/lewagon/data-setup/master/specs/releases/linux.txt +pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/specs/releases/linux.txt ``` + + + ## Jupyter Notebook tweaking Let's improve the display of the [`details` disclosure elements](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details) in your notebooks. @@ -1008,11 +985,12 @@ Run the following lines to create a `custom.css` stylesheet in your Jupyter conf ```bash LOCATION=$(jupyter --config-dir)/custom -SOURCE=https://raw.githubusercontent.com/lewagon/data-setup/refs/heads/master/specs/jupyter/custom.css +SOURCE=https://raw.githubusercontent.com/lewagon/data-analytics-setup/refs/heads/master/specs/jupyter/custom.css mkdir -p $LOCATION curl $SOURCE > $LOCATION/custom.css ``` + ## Python setup check ### Python and packages check @@ -1026,19 +1004,19 @@ cd ~/code && exec zsh Check your Python version with the following commands: ```bash -zsh -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-setup/master/checks/python_checker.sh)" 3.12.9 +zsh -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/python_checker.sh)" 3.12.9 ``` Run the following command to check if you successfully installed the required packages: ```bash -zsh -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-setup/master/checks/pip_check.sh)" +zsh -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/pip_check.sh)" ``` Now run the following command to check if you can load these packages: ```bash -python -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-setup/master/checks/pip_check.py)" +python -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/pip_check.py)" ``` ### Jupyter check @@ -1073,7 +1051,8 @@ You can close your web browser then terminate the jupyter server with `CTRL` + ` Here you have it! A complete python virtual env with all the third-party packages you'll need for the whole bootcamp. -## Kitt + + ## Kitt You should have received an email from Le Wagon inviting you to sign up on [Kitt](https://kitt.lewagon.com) (our learning platform). @@ -1081,6 +1060,7 @@ Then you should receive an additional invitation from Slack, inviting you to the If you haven't, please contact your teaching team. + ## Slack [Slack](https://slack.com/) is a communication platform pretty popular in the tech industry. @@ -1091,6 +1071,7 @@ If you haven't, please contact your teaching team. :warning: If you are already using Slack in your browser, please download and install **the desktop app** which is fully featured. + ### Settings Launch the app and sign in to `lewagon-alumni` organization. @@ -1102,7 +1083,6 @@ Make sure you **upload a profile picture** :point_down: The idea is that you'll have Slack open all day, so that you can share useful links / ask for help / decide where to go to lunch / etc. To ensure that everything is working fine for video calls, let's test your camera and microphone: - - Open the Slack app - Click your profile picture in the top right. - Select `Preferences` from the menu. @@ -1118,14 +1098,11 @@ To ensure that everything is working fine for video calls, let's test your camer You can also install Slack app on your phone and sign in `lewagon-alumni`! -## Setup completed! - -That's all you need for now! Some of the free trial periods on the tools we use are very short, so from now on, whenever we introduce a new tool or software, we will guide you through the sign-in and installation steps at the beginning of the day. -Ready to start? 🚀 - -## (Bonus) +## Bonus If you are done with your setup, please ask around if some classmates need some help with theirs (macOS, Linux, Windows). We will have our first lectures at 2pm and will talk about the Setup you just did + onboard you on Kitt. If you don't have a lot of experience with `git` and GitHub, please [(re-)watch this workshop](https://www.youtube.com/watch?v=Z9fIBT2NBGY) (`1.25` playback speed is fine). + + diff --git a/WINDOWS.es.md b/WINDOWS.es.md new file mode 100644 index 0000000..baadec5 --- /dev/null +++ b/WINDOWS.es.md @@ -0,0 +1,1631 @@ +# Instrucciones para la configuración + +Aquí abajo encontrarás las instrucciones para configurar tu computadora para [el curso de Data Analytics de Le Wagon](https://www.lewagon.com/data-analytics-course/full-time) + +Por favor **léelas cuidadosamente y ejecuta todos los comandos en el siguiente orden**. Si tienes algún problema, no dudes en pedirle ayuda a una profesor :raising_hand: + +¡Comencemos! :rocket: + + +## Cuenta GitHub + +¿Ya tienes una cuenta GitHub? Si no es el caso, [ábrela ya](https://github.com/join). + +:point_right: **[Sube una foto](https://github.com/settings/profile)** y escribe tu nombre correctamente en tu cuenta GitHub. Esto es importante porque nosotros usaremos un tablero de comando interno con tu avatar. Por favor hazlo **ahora** antes de dar un paso más en esta guía. + +![Foto GitHub](https://github.com/lewagon/setup/blob/master/images/github_picture.png) + +:point_right: **[Habilita la Autenticación de Dos Factores (2FA)](https://docs.github.com/en/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication#configuring-two-factor-authentication-using-text-messages)**. GitHub te enviará mensajes de texto con un código cuando intentes iniciar sesión. Esto es importante para la seguridad y también pronto será necesario para contribuir código en GitHub. + + +## La versión de Windows + +Antes de comenzar, necesitamos verificar que la versión de Windows instalada en tu computadora sea compatible con estas instrucciones de configuración. + +### Windows 10 o Windows 11 + +> :warning: **Nota sobre Windows 10 y seguridad** +> +> La configuración del bootcamp de Le Wagon funciona en Windows 10. Dicho esto, recomendamos encarecidamente actualizar a Windows 11. Desde el 14 de octubre de 2025 Microsoft finalizó el soporte para Windows 10, lo que significa que ya no recibirá actualizaciones de seguridad y podría poner tu equipo en riesgo. Para más detalles, consulta la [guía de Microsoft](https://support.microsoft.com/en-us/windows/windows-10-support-has-ended-on-october-14-2025-2ca8b313-1946-43d3-b55c-2b95b107f281). Si tu equipo no puede ejecutar Windows 11, considera cambiar a Ubuntu. + +Para poder configurar tu computadora, necesitas tener **Windows 10 o Windows 11** instalado. + +Para chequear la versión de tu Windows: +- Presiona `Windows` + `R` +- Escribe `winver` +- Presiona `Enter` + +:heavy_check_mark: Si las primeras palabras de esta ventana son **Windows 11**, entonces todo está bien y puedes continuar trabajando en la configuración :+1: + +:heavy_check_mark: Si las primeras palabras de esta ventana son **Windows 10**, verifica el **número de la versión**: + +- :heavy_check_mark: Si dice al menos `2004`, entonces todo está bien :+1: + +- :x: Si es inferior a `2004`, debes actualizar tu versión. + +-
+ Cómo instalar las últimas actualizaciones? + + Abre Windows Update: + - Presiona `Windows` + `R` + - Escribe `ms-settings:windowsupdate` + - Presiona `Enter` + - Haz clic en `Check updates` + + :heavy_check_mark: Si tienes una marca verde y el siguiente mensaje "You're up to date", entonces todo está bien :+1: + + :warning: Si obtienes una exclamación roja y el siguiente mensaje "Update available", por favor instala las actualizaciones y repite el proceso hasta que diga que todo está actualizado :loop: + + :x: Si obtienes un mensaje de error diciendo que Windows no puede aplicar las actualizaciones, por favor **contacta a un profesor**. + +
+ Activa Windows Update Service para resolver las Actualizaciones + + Algunos antivirus y programas deshabilitan las actualizaciones que necesitamos y luego se muestra un error. ¡Solucionemos esto! + - Presiona `Windows` + `R` + - Escribe `services.msc` + - Presiona `Enter` + - Haz doble clic en `Windows Update Service` + - Coloca su `Startup` en `Automatic` + - Haz clic en `Start` + - Haz clic en `Ok` + ¡Ahora intenta instalar las actualizaciones nuevamente! +
+ + Verifica el número de la versión: + + - Presiona `Windows` + `R` + - Escribe `winver` + - Presiona `Enter` + + :heavy_check_mark: Si dice al menos `2004`, entonces todo está bien :+1: + + :x: Si es inferior a `2004`, por favor **contacta a un profesor**. + +
+ + +## Virtualización + +Tenemos que asegurarnos de que las opciones de Virtualización estén habilitadas en el BIOS de tu computadora. + +Normalmente ya es el caso en muchas computadoras. Verifiquemos: +- Presiona `Windows` + `R` +- Escribe `taskmgr` +- Presiona `Enter` +- Haz clic en la pestaña `Performance` +- Haz clic en `CPU` + +![Windows task manager](https://github.com/lewagon/setup/blob/master/images/windows_task_manager.png) + +:heavy_check_mark: Si ves "Virtualization: Enabled", entonces todo está bien :+1: + +:x: Si falta la línea o si la virtualización está desactivada, por favor **contacta a un profesor antes de intentar activar la Virtualización por tu cuenta** + +
+ Activa la Virtualización + + Debemos acceder al BIOS / UEFI de la computadora para activarla. + - Presiona `Windows + R` + - Escribe `shutdown.exe /r /o /t 1` + - Presiona `Enter` + - Espera a que la computadora se apague + - Haz clic en `Troubleshoot` + - Haz clic en `Advanced Options` + - Haz clic en `UEFI Firmware Settings` + - Haz clic en `Restart` + + Debes activar la opción de la virtualización para tu procesador aquí: + - La mayoría de las veces se hace en los parámetros avanzados, los parámetros del CPU o los parámetros de Northbridge + - El nombre de la opción puede variar de una computadora a otra: + - Intel: `Intel VT-x`, `Intel Virtualization Technology`, `Virtualization Extensions`, `Vanderpool`... + - AMD: `SVM Mode` o `AMD-V` + - Guarda los cambios después de la activación y reinicia la computadora con las opciones correspondientes +
+ + +## Subsistema de Windows para Linux (WSL) + +WSL es el ambiente de entorno que estamos usando para usar Ubuntu. Puedes aprender más sobre WSL [aquí](https://docs.microsoft.com/en-us/windows/wsl/faq). + +Instalaremos WSL 2 y Ubuntu con un comando a través de la Windows Command Prompt. + +:warning: en esta instrucción, utiliza el atajo `Ctrl` + `Shift` + `Enter` para usar la **Windows Command Prompt** con privilegios de administrador en lugar de simplemente hacer clic en `Ok` o presionar `Enter`. + +- Presiona `Windows` + `R` +- Escribe `cmd` +- Presiona **`Ctrl` + `Shift` + `Enter`** + +:warning: tal vez tengas que aceptar la confirmación UAC sobre el cambio en los privilegios. + +Un ventana de terminal aparecerá: +- Copia el siguiente comando (`Ctrl` + `C`) +- Pégalo en la ventana de la terminal (`Ctrl` + `V` o haciendo clic derecho en la ventana) +- Ejecútalo presionado `Enter` + +```powershell +wsl --install +``` + +:heavy_check_mark: Si el comando se ejecutó sin ningún error, por favor reinicia tu computadora y continúa con las siguientes instrucciones aquí abajo :+1: + +:x: Si obtienes un mensaje de error (o si ves algún texto en rojo en la ventana), por favor **contacta a un profesor** + +
+Solución de problemas para Windows 10 (solo si es necesario, consulta con un profesor) + +#### Para Windows 10 < 2004: instala primero WSL 1 + +:warning: en esta instrucción, utiliza el atajo `Ctrl` + `Shift` + `Enter` para usar **Windows PowerShell** con privilegios de administrador en lugar de hacer clic en `Ok` o presionar `Enter`. + +- Presiona `Windows` + `R` +- Escribe `powershell` +- Presiona **`Ctrl` + `Shift` + `Enter`** + +:warning: tal vez tengas que aceptar la confirmación UAC sobre el cambio en los privilegios. + +Un ventana de terminal azul aparecerá: +- Copia los siguiente comandos uno por uno (`Ctrl` + `C`) +- Pégalos en la ventana de Powershell (`Ctrl` + `V` o haciendo clic derecho en la ventana) +- Ejecútalos presionado `Enter` + +```powershell +Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux +``` + +```powershell +dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart +``` + +```powershell +dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart +``` + +:heavy_check_mark: Si los tres comandos se ejecutaron sin ningún error, por favor reinicia tu computadora y continúa con las instrucciones de aquí abajo :+1: + +:x: Si obtienes un mensaje de error (o si ves algún texto en rojo en la ventada), por favor **contacta a un profesor** + +#### Para Windows 10 con WSL 1: Actualización a WSL 2 + +Si tienes Windows 10, actualizaremos WSL a la versión 2. + +Cuando se reinicie tu computadora, descarga el instalador de WSL2. + +- Ve a la [página de descarga](https://aka.ms/wsl2kernel) +- Descarga "el paquete de actualización de WSL2 Linux kernel" +- Abre el archivo que acabas de descargar +- Haz clic en `Next` +- Haz clic en `Finish` + +![Actualiza WSL de la versión 1 a la 2](https://github.com/lewagon/setup/blob/master/images/windows_update_wsl.png) + +:heavy_check_mark: Si no obtuviste ningún mensaje de error, entonces puedes continuar :+1: + +:x: Si obtienes el siguiente error "This update only applies to machines with the Windows Subsystem for Linux", **haz clic derecho** en el programa y selecciona `uninstall`; esta vez deberías poder instalarlo sin problemas. + +#### Para Windows 10 con WSL 1: Coloca WSL 2 como el Subsistema Windows por defecto para Linux + +Si tienes Windows 10, pondremos la versión predeterminada de WSL en 2. + +Ahora coloca WSL 2 como la versión predeterminada. Esto lo podemos hacer porque ya está instalado: +- Presiona `Windows` + `R` +- Escribe `cmd` +- Presiona `Enter` + +Escribe lo siguiente en la ventana que aparecerá: + +```bash +wsl --set-default-version 2 +``` + +:heavy_check_mark: Si ves este mensaje "The operation completed successfully", puedes cerrar esta terminal y continuar con las siguientes instrucciones aquí abajo :+1: + +:x: Si el mensaje que obtienes es sobre virtualización, por favor **contacta a un profesor** + +
+ Habilita de la feature de la Virtual Machine Platform en Windows + + Sigue los pasos [siguientes](https://www.configserverfirewall.com/windows-10/please-enable-the-virtual-machine-platform-windows-feature-and-ensure-virtualization-is-enabled-in-the-bios/#:~:text=To%20enable%20WSL%202,%20Open,Windows%20feature%20on%20or%20off.&text=Ensure%20that%20the%20Virtual%20Machine,Windows%20will%20enable%20WSL%202) hasta que hayas habilitado la Virtual Machine Platform y el Subsistema de Windows para Linux +
+ +
+ Habilita la feature de Windows Hyper-V + + Sigue los pasos [siguientes](https://winaero.com/enable-use-hyper-v-windows-10/) hasta que hayas habilitado el grupo Hyper-V + + :information_source: Si tienes Windows 10 **Home edition**, la feature Hyper-V no está disponible para su sistema operativo. No es un bloqueo y puedes continuar con las siguientes instrucciones aquí abajo :ok_hand: +
+ +
+ + +## Ubuntu + +### Instalación + +Después de reiniciar tu computadora, deberías ver una ventana de terminal diciendo WSL está retomando el proceso de instalación de Ubuntu. Cuando termine, iniciará Ubuntu. + +
+Solución de problemas para Windows 10 (solo si es necesario, consulta con un profesor) + +Si la instalación de Ubuntu no se reanudó, primero intenta nuevamente: abre Powershell o el Símbolo del sistema y ejecuta `wsl --install` otra vez. +
+ +Si tienes Windows 10, instala la terminal de Windows por medio de la Microsoft Store: + +- Haz clic en `Start` +- Escribe `Microsoft Store` +- Haz clic en `Microsoft Store` en la lista +- Busca `Ubuntu` en la barra de búsqueda +- **Selecciona la versión sin nombre, simplemente "Ubuntu"** +- Haz clic en `Get` + +:warning: ¡NO instales **Ubuntu 18.04 LTS** ni **Ubuntu 20.04**! + +
+ Desinstala las versiones incorrectas de Ubuntu + + Para desinstalar las versiones incorrectas de Ubuntu, solo tienes que ir a la Lista de Programas Instalados de Windows 10: + - Presiona `Windows` + `R` + - Escribe `ms-settings:appsfeatures` + - Preiona `Enter` + + Busca el programa que desees desinstalar y haz clic en el botón de desinstalación. +
+ +Cuando termine la instalación, el botón `Get` se transformará en un botón `Open`: Haz clic en él. + +
+ +### Primer uso + +La primera vez que lo abras, te pedirán que: +- Escojas un **username** de: + - una palabra + - minúscula + - sin caracteres especiales + - por ejemplo: `lewagon` o tu `firstname`, es decir, tu primer nombre +- Escoge un **password** +- Confírmalo + +:warning: Cuando escribas tu contraseña no verás nada en la pantalla. **Esto es normal**. Es una herramienta de seguridad para ocultar tanto el contenido de tu contraseña como su longitud. Simplemente escribe tu contraseña y presiona `Enter` al terminar. + +### Chequea la versión WSL de Ubuntu + +- Presiona `Windows` + `R` +- Escribe `cmd` +- Presiona `Enter` + +Escribe el siguiente comando: + +```bash +wsl -l -v +``` + +:heavy_check_mark: Si la versión de WSL de Ubuntu es 2, entonces todo está bien y puedes continuar :+1: + +:x: Si la versión de WSL de Ubuntu es 1, tendremos que pasarla a la versión 2. + +
+ Conversión de WSL de Ubuntu V1 a V2 + + Escribe esto en la ventana de Entrada de Comandos: + + ```bash + wsl --set-version Ubuntu 2 + ``` + + :heavy_check_mark: Deberías obtener el siguiente mensaje en algunos segundos: `The conversion is complete`. Esto significa que la conversión ha sido completada. + + :x: Si no funciona, tendremos que asegurarnos de que los archivos de Ubuntu no estén comprimidos. + +
+ Chequea si los archivos no están comprimidos + + - Presiona `Windows` + `R` + - Escribe `%localappdata%\Packages` + - Presiona `Enter` + - Abre la carpeta `CanonicalGroupLimited.UbuntuonWindows...` + - Haz clic derecho en la carpeta `LocalState` + - Haz clic en `Properties` + - Haz clic en `Advanced` + - Asegúrate de que la opción `Compress content` **no** esté seleccionada. Luego haz clic en `Ok`. + + Aplícale cambios a esta carpeta solamente y trata de convertir la versión de WSL de Ubuntu nuevamente. + + :x: Si la conversión aún no funciona, por favor **contacta a un profesor**. +
+ +Ya puedes cerrar la ventana de la terminal. + +
+ +### Comprueba tu nombre de usuario + +Escribe esto en la terminal de Ubuntu: + +```bash +whoami +``` + +Debería devolver el nombre de usuario que elegiste anteriormente. + +:x: Si dice `root`, **contacta a un profesor** antes de continuar. + + +## Visual Studio Code + +### Instalación + +Instala el editor de texto [Visual Studio Code](https://code.visualstudio.com). + +- Ve a [la página de descarga de Visual Studio Code](https://code.visualstudio.com/download). +- Haz clic en el botón "Windows" +- Abre el archivo que acabas de descargar. +- Instálalo con pocas opciones: + +![Opciones de instalación de VS Code](https://github.com/lewagon/setup/blob/master/images/windows_vscode_installation.png) + +Abre VS Code cuando termine la instalación. + +### Conexión de VS Code con Ubuntu + +Instala la extensión de VS Code llamada [Remote - WSL](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-wsl) para hacer que VS Code interactúe adecuadamente con Ubuntu. + +Abre tu **terminal Ubuntu**. + +Copia y pega los siguientes comandos en la terminal: + +```bash +code --install-extension ms-vscode-remote.remote-wsl +``` + +Luego abre VS Code desde la terminal: + +```bash +code . +``` + +:heavy_check_mark: Si ves `WSL: Ubuntu` en la esquina inferior izquierda de la ventana de VS Code, entonces todo está bien y puedes continuar :+1: + +![WSL Ubuntu Remote](https://github.com/lewagon/setup/blob/master/images/windows_remote_wsl.png) + +:x: Si no es el caso, por favor **pídele ayuda a un profesor**. + + +## Terminal de Windows + +### Instalación + +:information_source: Las instrucciones que verás a continuación dependen de la versión de Windows que tengas. + +Si estás utilizando Windows 11, la terminal de Windows ya está instalada y puedes ir a la siguiente sección :point_down: + +Si tienes Windows 10, instala la terminal de Windows. Verás que es una terminal moderna. + +
+**Windows 10**: Instalar Windows Terminal + +- Haz clic en `Start` +- Escribe `Microsoft Store` +- Haz clic en `Microsoft Store` en la lista +- Busca `Windows Terminal` en la barra de búsqueda +- **Selecciona Windows Terminal"** +- Haz clic en `Install` + +:warning: ¡NO instales **Windows Terminal Preview**, solo instala **Windows Terminal**! + +
+ Desinstala la versión incorrecta de la terminal de Windows + + Para desinstalar la versión incorrecta la terminal de Windows, solamente tienes que ir a la lista de programas instalados de Windows 10: + + - Presiona `Windows` + `R` + - EScribe `ms-settings:appsfeatures` + - Presiona `Enter` + + Busca el programa que quieres desinstalar y haz clic en el botón de desinstalación. +
+ +Cuando termine la instalación, el botón `Install` se transformará en un botón `Launch`: haz clic en él. + +
+ +### Ubuntu como terminal predeterminada + +Hagamos que Ubuntu sea la terminal predeterminada de tu aplicación Windows terminal. + +Presiona `Ctrl` + `,` + +Debería abrir los parámetros de la terminal: + +![Parámetros de Windows Terminal](https://github.com/lewagon/setup/blob/master/images/windows_terminal_settings.png) + +- Cambia el perfil predeterminado a "Ubuntu" +- Haz clic en "Save" +- Haz clic en "Open JSON file" + +Verás la parte a cambiar en un círculo rojo: + +![Archivo de parámetros JSON de Windows Terminal](https://github.com/lewagon/setup/blob/master/images/windows_terminal_settings_json.png) + +Primero pídele a Ubuntu que inicie directamente dentro de tu Ubuntu Home Directory en vez de hacerlo desde Windows: +- Localiza el `"name": "Ubuntu",` +- Agrega la siguiente línea debajo de eso: + +```bash +"commandline": "wsl.exe ~", +``` + +:warning: ¡Que no se te olvide la coma al final de la línea! + +Luego deshabilita el warning para copiar y pegar comandos entre Windows y Ubuntu: +- Localiza la línea `"defaultProfile": "{2c4de342-...}"` +- Agrega la siguiente línea debajo de eso: + +```bash +"warning.multiLinePaste": false, +``` + +:warning: ¡No olvides la coma al final de la línea! + +Puedes guardar estos cambios presionando `Ctrl` + `S` + +:heavy_check_mark: Tu **Windows Terminal** ya está configurada :+1: + +Esta terminal tiene pestañas: puedes escoger abrir una terminal en una nueva pestaña haciendo clic en el **+** al lado de la pestaña actual. +**De ahora en adelante, cada vez que hablemos de la terminal o la consola, nos referiremos a esta.** NUNCA más uses otra. + + +## Extensiones de VS Code + +### Instalación + +Instala algunas extensiones útiles para VS Code. + +```bash +code --install-extension ms-vscode.sublime-keybindings +code --install-extension emmanuelbeziat.vscode-great-icons +code --install-extension MS-vsliveshare.vsliveshare +code --install-extension ms-python.python +code --install-extension KevinRose.vsc-python-indent +code --install-extension ms-python.vscode-pylance +code --install-extension ms-toolsai.jupyter +code --install-extension alexcvzz.vscode-sqlite +``` + +Aquí está la lista de las extensiones que estás instalando: + +- [Sublime Text Keymap and Settings Importer](https://marketplace.visualstudio.com/items?itemName=ms-vscode.sublime-keybindings) +- [VSCode Great Icons](https://marketplace.visualstudio.com/items?itemName=emmanuelbeziat.vscode-great-icons) +- [Live Share](https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsliveshare) +- [Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python) +- [Python Indent](https://marketplace.visualstudio.com/items?itemName=KevinRose.vsc-python-indent) +- [Pylance](https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance) +- [Jupyter](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter) +- [SQLite](https://marketplace.visualstudio.com/items?itemName=alexcvzz.vscode-sqlite) + + +## Herramientas de línea de comando + +### Comprueba la configuración regional (locale) + +La "locale" es un mecanismo que permite adaptar los programas a su idioma y país. + +Comprobemos que la configuración regional por defecto es el inglés: + +```bash +locale +``` + +Si la salida no contiene `LANG=en_US.UTF-8`, ejecute el siguiente comando en un Ubuntu terminal para instalar la locale inglesa: + +```bash +sudo locale-gen en_US.UTF-8 +``` + +Si después, recibes una advertencia (`bash: warning: setlocale: LC_ALL: cannot change locale (en_US.utf-8)`) en tu terminal, por favor haz lo siguiente: + +
+ Generar la configuración regional<>/summary> + +Por favor, ejecuta estas líneas en tu terminal. + +```bash +sudo update-locale LANG=en_US.UTF8 +sudo apt-get update +sudo apt-get install language-pack-en language-pack-en-base manpages +``` +
+ +### Zsh & Git + +En lugar de usar el `bash` [shell](https://en.wikipedia.org/wiki/Shell_(computing)) predeterminado, usaremos `zsh`. + +También utilizaremos [`git`](https://git-scm.com/), un programa de línea de comando para control de versiones. + +Vamos a instalarlos, junto con otros programas útiles: +- Abre una **terminal de Ubuntu** +- Copia y pega los siguientes comandos: + +```bash +sudo apt update +``` + +```bash +sudo apt install -y curl git imagemagick jq unzip vim zsh +``` + +Estos comandos te pedirán tu contraseña: escríbela. + +:warning: Cuando escribas tu contraseña no verás nada en la pantalla. **Esto es normal**. Es una herramienta de seguridad para ocultar tanto el contenido de tu contraseña como su longitud. Simplemente escribe tu contraseña y presiona `Enter` al terminar. + +### Instalación de la CLI de GitHub + +Instalemos la [CLI oficial de GitHub](https://cli.github.com) (Interfaz de Línea de Comando). Es un programa que se usa para interactuar con tu cuenta GitHub por medio de la línea de comando. + +En tu terminal, copia y pega los siguientes comandos y escribe tu contraseña si te la piden: + +```bash +sudo apt remove -y gitsome # gh command can conflict with gitsome if already installed +curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg +echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null +sudo apt update +sudo apt install -y gh +``` + +Ejecuta el comando que te mostramos a continuación para verificar que `gh` se haya instalado correctamente en tu máquina: + +```bash +gh --version +``` + +:heavy_check_mark: Si ves esta versión `gh version X.Y.Z (YYYY-MM-DD)`, puedes continuar trabajando :+1: + +:x: Si no es el caso, por favor **contacta a un profesor** + + +## Oh-my-zsh + +Instalemos el plugin `zsh` [Oh My Zsh](https://ohmyz.sh/). + +Ejecuta este comando en la terminal: + +```bash +sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" +``` + +Si te preguntan "Do you want to change your default shell to zsh?", presiona `Y` + +Cuando termines, tu terminal debería lucir así: + +![La terminal de Ubuntu con OhMyZsh](https://github.com/lewagon/setup/blob/master/images/oh_my_zsh.png) + +:heavy_check_mark: Si es el caso, puedes continuar :+1: + +:x: Si no, por favor **pídele ayuda a un profesor**. + + +## Linking your default browser to Ubuntu + +Para asegurarnos de que puedas interactuar desde la terminal de Ubuntu con el navegador que tienes instalado en Windows, debemos definirlo como tu navegador predeterminado aquí. + +Ejecuta el siguiente comando y sigue las instrucciones. La herramienta te pedirá que elijas uno de los navegadores disponibles en tu sistema. Solo necesitas escribir el **número** que aparece delante del navegador. + +```bash +bash -c "$(curl -s https://raw.githubusercontent.com/julesvanrie/wslsetbrowser/refs/heads/main/wslsetbrowser.sh)" +``` + +Reinicia tu terminal: + +```bash +exec zsh +``` + +Luego asegúrate de que el siguiente comando devuelva "Browser defined 👌": + +```bash +[ -z "$BROWSER" ] && echo "ERROR: please define a BROWSER environment variable ⚠️" || echo "Browser defined 👌" +``` + +Si no es así, puedes seguir [estas instrucciones](https://github.com/lewagon/setup/blob/master/_partials/es/windows_browser.md) para configurar tu navegador predeterminado manualmente. + +No dudes en **pedirle ayuda a tu profesor**. + + +## direnv + +[direnv](https://direnv.net/) es una extensión del shell. Facilita trabajar con variables de entorno por proyecto, lo cual será útil para customizar el comportamiento de tu código. + + +``` bash +sudo apt-get update; sudo apt-get install direnv +echo 'eval "$(direnv hook zsh)"' >> ~/.zshrc +``` + + + +## GitHub CLI + +CLI es una abreviación de [Command-line Interface](https://en.wikipedia.org/wiki/Command-line_interface) que significa interfaz de línea de comando. + +En esta sección usaremos [GitHub CLI](https://cli.github.com/) para interactuar directamente con GitHub desde la terminal. + +Usaremos la GitHub CLI (`gh`) para conectarnos a GitHub utilizando *SSH*, un protocolo para iniciar la sesión utilizando claves SSH en lugar de la famosa pareja nombre de usuario y contraseña. + +Ya debería haberse instalado en tu computadora con los comandos que ejecutaste anteriormente. + +Lo primero que hay que hacer para **iniciar sesión** es copiar y pegar el comando siguiente en tu terminal: + +:warning: **NO edites el `email`** — Aunque `user:email` parezca un marcador de posición para tu dirección de correo real, no lo es — no lo reemplaces. + +```bash +gh auth login -s 'user:email' -w --git-protocol ssh +``` + +`gh` le hará algunas preguntas: + +- `Generate a new SSH key to add to your GitHub account?` Presiona `Enter` para pedirle a gh que genere las claves SSH por ti. + + Si ya tienes claves SSH, verás en su lugar `Upload your SSH public key to your GitHub account?`Con las flechas, selecciona la ruta de tu archivo de clave pública y pulsa `Intro`. + +- `Enter a passphrase for your new SSH key (Optional)`: + - **PARA LA MAYORÍA DE LOS ESTUDIANTES:** Simplemente presiona `Enter` para omitir. No necesitas una contraseña para el bootcamp y te la pediría cada vez que uses la clave. Sin embargo, hay un riesgo de que si alguien roba tu computadora, pueda subir código a GitHub. + - **SI LA SEGURIDAD ES MUY IMPORTANTE PARA TI:** Escribe una contraseña de tu elección y presiona `Enter`. Es _muy_ importante que si introduces una contraseña, la anotes en algún lugar inmediatamente y no la pierdas ni la olvides. Tendrás que introducirla con frecuencia. + +- `Title for your SSH key`. Puede dejarlo en la propuesta "GitHub CLI", presiona `Enter`. + +Obtendrás el siguiente resultado: + +```bash +! First copy your one-time code: 0EF9-D015 +- Press Enter to open github.com in your browser... +``` + +Selecciona y copia el código (`0EF9-D015` en el ejemplo) y luego presiona `Enter`. + +Tu navegador se abrirá y te pedirá que autorices GitHub CLI para usar tu cuenta GitHub. Acepta y espera un poco. + +Regresa a la terminal, presiona `Enter` nuevamente y listo. Eso es todo. + +Para verificar que están conectado correctamente, escribe lo siguiente: + +```bash +gh auth status +``` + +:heavy_check_mark: Si obtienes este mensaje: `Logged in to github.com as `, significa que todo está bien :+1: + +:x: De lo contrario, **contacta a un profesor**. + + +## CLI de Google Cloud + +Instala la CLI de `gcloud` para comunicar con [Google Cloud Platform](https://cloud.google.com/) a través de la terminal: + +```bash +echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list +sudo apt-get install apt-transport-https ca-certificates gnupg +curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add - +sudo apt-get update && sudo apt-get install google-cloud-sdk +sudo apt-get install google-cloud-sdk-app-engine-python +``` + +👉 [Documentación para la instalación](https://cloud.google.com/sdk/docs/install#deb) + + +## Dotfiles + +Los hackers aman mejorar sus shells y sus herramientas. Comenzaremos con una configuración por defecto genial proporcionada por [Le Wagon](http://github.com/lewagon/dotfiles) y almacenada en GitHub. + +### Verifica tu configuración de GitHub CLI + +Primero, hagamos una verificación rápida. Abre tu terminal y ejecuta el comando siguiente: + +```bash +export GITHUB_USERNAME=`gh api user | jq -r '.login'` +echo $GITHUB_USERNAME +``` + +Deberías ver tu usuario GitHub. Si no es así, **no hagas más nada** y pide ayuda. +Parece que hay un problema con el paso anterior (`gh auth`). + +### Fork y/o clone los archivos de configuración + +Hay tres opciones, escoge **una**: + + +
+ + No he hecho el bootcamp de Web Development o Data Science & AI o Data Analytics de Le Wagon + + + Tu configuración es personal, así que necesitas tu propio repositorio para almacenarla. Primero tienes que hacer el fork del repositorio en tu cuenta GitHub. + +Hacer un fork significa que crearás un nuevo repositorio en tu cuenta GitHub idéntico al original. Tendrás un nuevo repositorio en tu cuenta GitHub, `your_github_username/dotfiles`. El fork es necesario porque cada uno de ustedes necesitará poner información específica (e.g. tu nombre) en esos archivos. + +Ejecutemos este comando para hacer un **fork** del repositorio `lewagon/dotfiles` y clonarlo: + +```bash +mkdir -p ~/code/$GITHUB_USERNAME && cd $_ +gh repo fork lewagon/dotfiles --clone +``` + +
+ + +
+ + Ya hice el bootcamp de Web Development o Data Science & AI o Data Analytics de Le Wagon pero tengo una nueva laptop + + +Esto significa que ya has hecho el fork del repositorio GitHub lewagon/dotfiles pero tal vez la configuración para el nuevo bootcamp de Data Analytics no estaba lista en ese momento.Actualicémoslo. **Pide a un TA que te acompañe en los siguientes pasos.** + +Es hora de clonarlo el repositorio en tu laptop: + +```bash +mkdir -p ~/code/$GITHUB_USERNAME && cd $_ +gh repo clone lewagon/dotfiles +``` + + +Abre tu terminal y ve a tu proyecto `dotfiles`: + +```bash +cd ~/code/$GITHUB_USERNAME$/dotfiles +``` + +Es hora de fusionar los cambios de lewagon/dotfiles en los tuyos: + +1. Commit la versión actual de tus dotfiles: + ```bash + git add . + git status # Check what will be committed + git commit -m "Version prior to new setup" + ``` + +1. Trae los cambios del repositorio upstream: `git merge upstream/master` + +1. Verifica que no estés en estado MERGING. Si lo estás, resuelve los conflictos. + +1. Haz un `git diff HEAD~1 HEAD` para revisar qué cambió. + +1. Si todo parece estar en orden, continúa. + +
+ ¿Demasiados conflictos? + + + Vamos a tomar la versión actual de `lewagon/dotfiles`. + + Primero aborta la merge: `git merge --abort`. + + Ejecuta `code .` + + En VS Code, abre el archivo zshrc. Reemplaza su contenido con la [versión más reciente](https://raw.githubusercontent.com/lewagon/dotfiles/master/zshrc). Luego guárdalo en el disco. + + Aún en VS Code, abre el archivo `zprofile`. Reemplaza su contenido con la [versión más reciente](https://raw.githubusercontent.com/lewagon/dotfiles/master/zprofile). Luego guárdalo en el disco. + + Regresa a la terminal y ejecuta un `git diff` y verifica que esto no haya eliminado ninguna configuración personal que quisieras conservar. + +
+ +Es hora de guardar tus cambios y subirlos. + +```bash +git add . +git commit -m "Update for Data Analytics bootcamp" +git push origin master +``` + +
+ + +
+ + Ya hice el bootcamp de Web Development o Data Science & AI o Data Analytics de Le Wagon en la misma laptop + + +Esto significa que ya has hecho el fork del repositorio GitHub lewagon/dotfiles pero tal vez la configuración para el nuevo bootcamp de Data Analytics no estaba lista en ese momento. Actualicémoslo. **Pide a un TA que te acompañe en los siguientes pasos.** + + +Abre tu terminal y ve a tu proyecto `dotfiles`: + +```bash +cd ~/code/$GITHUB_USERNAME$/dotfiles +``` + +Es hora de fusionar los cambios de lewagon/dotfiles en los tuyos: + +1. Commit la versión actual de tus dotfiles: + ```bash + git add . + git status # Check what will be committed + git commit -m "Version prior to new setup" + ``` + +1. Trae los cambios del repositorio upstream: `git merge upstream/master` + +1. Verifica que no estés en estado MERGING. Si lo estás, resuelve los conflictos. + +1. Haz un `git diff HEAD~1 HEAD` para revisar qué cambió. + +1. Si todo parece estar en orden, continúa. + +
+ ¿Demasiados conflictos? + + + Vamos a tomar la versión actual de `lewagon/dotfiles`. + + Primero aborta la merge: `git merge --abort`. + + Ejecuta `code .` + + En VS Code, abre el archivo zshrc. Reemplaza su contenido con la [versión más reciente](https://raw.githubusercontent.com/lewagon/dotfiles/master/zshrc). Luego guárdalo en el disco. + + Aún en VS Code, abre el archivo `zprofile`. Reemplaza su contenido con la [versión más reciente](https://raw.githubusercontent.com/lewagon/dotfiles/master/zprofile). Luego guárdalo en el disco. + + Regresa a la terminal y ejecuta un `git diff` y verifica que esto no haya eliminado ninguna configuración personal que quisieras conservar. + +
+ +Es hora de guardar tus cambios y subirlos. + +```bash +git add . +git commit -m "Update for Data Analytics bootcamp" +git push origin master +``` + +
+ + +### Ejecuta el instalador de dotfiles + +Ejecuta el instalador de `dotfiles`. + +```bash +cd ~/code/$GITHUB_USERNAME/dotfiles && zsh install.sh +``` + +Verifica los emails registrados en tu cuenta GitHub. Deberás seleccionar uno de ellos en el próximo paso: + +```bash +gh api user/emails | jq -r '.[].email' +``` + +Ejecuta el instalador de git: + +```bash +cd ~/code/$GITHUB_USERNAME/dotfiles && zsh git_setup.sh +``` + +:point_up: Esto te **guiará** con tu nombre (`FirstName LastName`) y con tu email. +:warning: Cuidado, **debes** poner uno de los emails de la lista de arriba que te suministra el comando `gh api ...` usado anteriormente. Si haces eso, Kitt no podrá hacerle seguimiento a tu progreso. Cualquier correo que elijas se mostrará **públicamente** en internet. 💡 Selecciona la dirección `@users.noreply.github.com` si no quieres que tu correo electrónico aparezca en los repositorios públicos a los que puedas contribuir. + +Ahora **cierra** todas las ventanas de tu terminal que tengas abiertas por favor. + + +## Desahilitación de la solicitud de SSH passphrase + +No vas a querer que te pidan tu passphrase cada vez que te comuniques con un repositorio remoto. Por eso debes agregarle plugin `ssh-agent` a `oh my zsh`: + +Primero abre el archivo `.zshrc`: + +```bash +code ~/.zshrc +``` + +Luego: +- Identifica la línea que comienza por `plugins=` +- Agrega `ssh-agent` al final de la lista de plugins + +La lista debería verse de la siguiente manera: + +```bash +plugins=(gitfast last-working-dir common-aliases zsh-syntax-highlighting history-substring-search pyenv ssh-agent) +``` + +:heavy_check_mark: Guarda el archivo `.zshrc` con `Ctrl` + `S` y cierra tu editor de texto. + + +## Instalando Python (con [`pyenv`](https://github.com/pyenv/pyenv)) + +### Desinstalar `conda` + +Como estamos utilizando `pyenv` para instalar y gestionar la versión de Python, necesitamos desinstalar [`conda`](https://docs.conda.io/projects/conda/en/latest/), otro gestor de paquetes que podrías tener en tu computadora si previamente instalaste [Anaconda](https://www.anaconda.com/). De esta forma, evitaremos problemas con Python más adelante. + +Chequea si tienes `conda` instalado en tu computadora: + +```bash +conda list +``` + +Si aparece `zsh: command not found: conda`, puedes **saltear** la desinstalación de `conda` e ir directo a la sección de **Instalar pre-requisitos**. + + +
+ Instrucciones de desinstalación conda + +- Instala el paquete Anaconda-Clean desde tu terminal y comienza la limpieza +```bash +conda install anaconda-clean +anaconda-clean --yes +``` +- Remueve todos los directorios de Anaconda +```bash +rm -rf ~/anaconda2 +rm -rf ~/anaconda3 +rm -rf ~/.anaconda_backup + +``` +- Elimina el directorio Anaconda de tu `.bash_profile` + - Abre el archivo con `code ~/.bash_profile` + - Si el archivo abre, busca la línea que coincida con el siguiente patrón `export PATH="/path/to/anaconda3/bin:$PATH"` y eliminala + +- Reinicia la terminal con `exec zsh` +- Remueve la inicializaciópn de Anaconda de tu `.zshrc`: + - Abre el archivo con `code ~/.zshrc` + - Remueve las líneas de código desde `>>> conda initialize >>>` hasta `<<< conda initialize <<<` +
+ + +### Instala `pyenv` + +Ubuntu viene con una versión vieja de Python que no queremos usar. Tal vez ya hayas instalado Anaconda u otro programa para utilizar Python y paquetes de Ciencia de Datos. Si es así, no pasa nada ya que haremos una configuración profesional de Python que te permitirá cambiar de versión cuando quieras al escribir `python` en la terminal. + +Primero instala `pyenv` con el siguiente comando en la Terminal: + +```bash +git clone https://github.com/pyenv/pyenv.git ~/.pyenv +exec zsh +``` + +Instala algunas [dependencias](https://github.com/pyenv/pyenv/wiki/common-build-problems#prerequisites) necesarias para crear Python desde `pyenv`: + +```bash +sudo apt-get update; sudo apt-get install make build-essential libssl-dev zlib1g-dev \ +libbz2-dev libreadline-dev sqlite3 libsqlite3-dev wget curl llvm \ +libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev \ +python3-dev +``` + +### Instala Python + +Instala la [última versión estable de Python](https://www.python.org/doc/versions/) que sea aceptada en el currículum de Le Wagon: + +```bash +pyenv install 3.12.9 +``` + +Este comando puede tomar un tiempo en ejecutarse. Esto es completamente normal. ¡No dudes en ayudar a los estudiantes que estén sentados cerca de ti! + +OK. Cuando este comando termine de ejecutarse, le diremos al sistema que use esta versión de Python **por defecto**. Esto se hace con: + +```bash +pyenv global 3.12.9 +exec zsh +``` + +Para verificar que esto haya funcionado, ejecuta `python --version`. Si ves `3.12.9`, ¡todo está bien! Si no, pídele ayuda a un TA para resolver el problema por medio de `versiones de pyenv` y `type -a python` (`python` debería estar usando la versión `.pyenv/shims` de primero). + + +## Entorno Virtual de Python + +Antes de instalar paquetes de Python, aislaremos la configuración del Bootcamp en un entorno virtual **dedicado**. Usaremos un plugin `pyenv` llamado [`pyenv-virtualenv`](https://github.com/pyenv/pyenv-virtualenv). + +### Instala un virtualenv + +Primero instala este plugin: + +```bash +git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv +exec zsh +``` + +Crea el entorno virtual que usaremos durante todo el bootcamp: + +```bash +pyenv virtualenv 3.12.9 lewagon +``` + +Define el entorno virtual con lo siguiente: + +```bash +pyenv global lewagon +``` + +¡Genial! Ahora cada vez que queramos instalar un paquete Python, lo haremos en ese entorno. + + +### Paquetes de Python + +Ahora que tenemos el ambiente virtual de `lewagon` adecuado, es hora de instalarle algunos paquetes. + +Primero, actualiza `pip`, la herramienta para instalar Paquetes Python desde [pypi.org](https://pypi.org). Ejecuta lo siguiente en la última terminal donde esté activado el virtualenv de `lewagon`: + +```bash +pip install --upgrade pip +``` + +Ahora instala algunos paquetes para las primeras semanas del programa: + + + +``` bash +pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/specs/releases/linux.txt +``` + + + + +## Mejora Jupyter Notebook + +Mejora la visualización del [elemento `details` para revelación de información](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details) en tus notebooks. + +Ejecuta las siguientes líneas para crear una hoja de estilos `custom.css` en tu directorio de configuración de Jupyter: + +```bash +LOCATION=$(jupyter --config-dir)/custom +SOURCE=https://raw.githubusercontent.com/lewagon/data-analytics-setup/refs/heads/master/specs/jupyter/custom.css +mkdir -p $LOCATION +curl $SOURCE > $LOCATION/custom.css +``` + + +### Configuración de Jupyter Notebook para abrirlo en tu navegador + +Primero, vamos a configurar tu navegador predeterminado nuevamente. Ya hicimos esto antes, pero cuando instalamos los dotfiles se eliminó la configuración. No hay problema, ejecuta este comando para volver a configurarlo: + +```bash +grep -E "export (GH_)*BROWSER" ~/.zshrc.backup >> ~/.zshrc +``` + +Luego, reinicia tu terminal con: + +```bash +exec zsh +``` + +Genera el archivo de configuración para **Jupyter Notebook**... + +``` bash +jupyter notebook --generate-config +``` + +⚠️ Por favor copia la ruta que arrojó el comando anterior. + +Ahora edita el archivo de configuración de Jupyter generado: + +``` bash +sed -i.backup 's/# c.ServerApp.use_redirect_file = True/c.ServerApp.use_redirect_file = False/' ~/.jupyter/jupyter_notebook_config.py +``` + +Intenta usar Jupyter: + +``` bash +jupyter notebook +``` + +Este comando debió haber abierto una página Jupyter en tu navegador: + +![](images/wsl_jupyter_notebook.png) + +Si no es el caso, por favor llama a un TA. + +Para cerrar el servidor jupyter en la terminal, presiona `CTRL` + `C`, enter y. Luego presiona Enter. + + +## Chequeo de la configuración de Python + +### Chequeo de Python y packages + +Reinicia tu terminal: + +```bash +cd ~/code && exec zsh +``` + +Verifica tu versión de Python con los siguientes comandos: + +```bash +zsh -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/python_checker.sh)" 3.12.9 +``` + +Ejecuta el comando siguiente para verificar que hayas instalado los paquetes requeridos correctamente: + +```bash +zsh -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/pip_check.sh)" +``` + +Ahora ejecuta el siguiente comando para verificar que puedas cargar estos paquetes: + +```bash +python -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/pip_check.py)" +``` + +### Chequeo de Jupyter + +Ahora verifica que puedas iniciar un servidor de notebook en tu máquina: + +```bash +jupyter notebook +``` + +Tu navegador web debería abrir en una ventana `jupyter`: + +![jupyter.png](images/jupyter.png) + +Haz clic en `New` y, en el menú desplegable, selecciona Python 3 (ipykernel): + +![jupyter_new.png](images/jupyter_new.png) + +Debería abrirse una pestaña en un nuevo notebook: + +![jupyter_notebook.png](images/jupyter_notebook.png) + +Asegúrate de que estés usando la versión correcta de python en el notebook. Abre una celda y ejecuta lo siguiente: + +``` python +import sys; sys.version +``` + +Debería mostrar `3.12.9` seguido de algunos detalles adicionales. Si no es así, consulta con un TA. + +Puedes cerrar tu navegador web y luego cerrar el servidor jupyter con `CTRL` + `C`. + +¡Listo! Ya tienes un virtual env de python completo con todos los paquetes tercerizados que necesitarás en el bootcamp. + + +## Insomnia + +> ℹ️ **¿Por qué?** Insomnia es una de las herramientas más conocidas para probar APIs, y será útil en nuestro curso de Introducción a las APIs. + +- Ve a [https://insomnia.rest/download](https://insomnia.rest/download) + +- Descarga Insomnia + +- Instala Insomnia + + +## Parámetros de Windows + +### Intercambio de archivos entre Windows y Ubuntu + +Necesitamos una manera fácil de transferir archivos de Windows a Ubuntu y viceversa. + +Para ello, vamos a crear atajos a directorios Ubuntu en el **Explorador de Archivos** de Windows: +- Abre el Explorador de Archivos de Windows (o usa el atajo `WIN` + `E`) +- En la Barra de Direcciones, coloca `\\wsl$\` (o `\\wsl$\Ubuntu` si eso no funciona) +- Ahora tienes acceso al sistema de archivos de Ubuntu +- Navega por el sistema de archivos de Ubuntu para encontrar los directorios que te interesen +- Arrastra las carpetas que te interesen a la Barra de Direcciones para crear atajos + +![Cómo agregar un atajo al sistema de archivos de Ubuntu en Windows](https://github.com/lewagon/setup/blob/master/images/windows_ubuntu_file_system_shortcut.gif) + +### Abre el Explorador de Archivos de Windows desde la terminal de Ubuntu + +Otra opción para mover archivos es abrir el **Explorador de Archivos** de Windows desde la terminal de Ubuntu: +- Abre una terminal de Ubuntu +- Ve al directorio que quieres explorar +- Ejecuta el comando `explorer.exe .` (Otra alternativa es usar `wslview .`) +- Si obtienes un mensaje de input output error, ejecuta `wsl --shutdown` en una PowerShell de Windows y abre la terminal de Ubuntu nuevamente + +![Cómo abrir Windows Explorer desde la terminal de Ubuntu](https://github.com/lewagon/setup/blob/master/images/windows_explorer_from_terminal.png) + +### Uso del Sistema de Archivos de Ubuntu + +Es posible que quieras averiguar la localización exacta de un directorio en Windows en el sistema de archivos de Ubuntu o viceversa. + +Para convertir una ruta Windows a una Ubuntu y viceversa: +- Abre una terminal de Ubuntu +- Usa el comando `wslpath "C:\Program Files"` para traducir la ruta Windows a una Ubuntu +- Usa el comando `wslpath -w "/home"` para traducir una ruta Ubuntu a una Windows +- El comando `wslpath -w $(pwd)` devuelve la ruta Windows del directorio Ubuntu actual + +![Cómo acceder a una ruta Windows desde una terminal de Ubuntu](https://github.com/lewagon/setup/blob/master/images/windows_path_from_terminal.png) + +### Anclaje de aplicaciones a tu barra de tareas + +Usarás frecuentemente casi todas las aplicaciones que has instalado hoy. ¡Anclémoslas a tu barra de tareas para que estén a solo un clic de ti! + +Para ello, abre la aplicación. Haz clic derecho en el ícono de la barra de tareas para hacer que aparezca el menú contextual (también llamado emergente) y selecciona "Pin to taskbar". + +![Cómo anclar una aplicación a la barra de tareas en Windows](https://github.com/lewagon/setup/blob/master/images/windows_taskbar.png) + +Ancla lo siguiente: +- Tu terminal +- Tu explorador de archivos +- VS Code +- Tu navegador de Internet +- Slack + + +## Visual C++ Redistributable + +Algunos paquetes Python requieren de un compilador para funcionar correctamente, así que vamos a instalar uno: + +[For x64 systems](https://aka.ms/vs/16/release/vc_redist.x64.exe) + + +## Configuración de Google Cloud Platform + +[GCP](https://cloud.google.com/) es una solución en la nube que usarás para colocar tus productos basados en Machine Learning en producción. + +🚨 Si estás en el grupo de estudiantes del **Bootcamp de Medio Tiempo**, ¡IGNORA ESTA SECCIÓN POR AHORA! **GCP** ofrece $300 en créditos durante 3 meses, así que no es buena idea activar tu cuenta GCP demasiado pronto 🙅‍♂️ + +### Preparación del Proyecto + +- Ve a [Google Cloud](https://console.cloud.google.com/) y crea una cuenta si aún no tienes una +- En la consola de Cloud, en la lista de proyectos, selecciona o crea un proyecto Cloud + +![](images/gcp-create-project.png) + +- Asígnale un nombre como `Wagon Bootcamp` por ejemplo +- Verás que se creará un `ID` automáticamente para el proyecto e. g. `wagon-bootcamp-123456` + +![](images/gcp_project.png) + +### Idioma de la cuenta + +Abre las preferencias en tu cuenta GCP para facilitar el seguimiento de las instrucciones durante el bootcamp: + +[https://myaccount.google.com/language](https://myaccount.google.com/language) + +Si el *idioma de preferencia* no es: + +- **English** +- **United States** + +Cámbialo a inglés: + +- Haz clic en el logo edición (es una lapicera) +- Selecciona **English** +- Selecciona **United States** +- Haz clic en **Select** + +### Cuenta de facturación + +Ahora conecta tu cuenta con tu tarjeta de crédito. Este paso es obligatorio para poder usar los servicios que suministra GCP. No te preocupes, podrás utilizar la mayoría de los servicios de GCP por medio de créditos gratuitos durante el bootcamp. + +![](images/gcp-billing.png) + +- Haz clic en **Billing** +- Haz clic en **MANAGE BILLING ACCOUNTS** +- Haz clic en **ADD BILLING ACCOUNT** +- Asígnale un nombre a tu cuenta de facturación, e. g. `My Billing Account` +- Haz clic en "I have read..." y acepta los términos de uso +- Haz clic en **CONTINUE** +- Selecciona tu tipo de cuenta: `Individual` +- Agrega tu nombre y dirección + +Verás que tienes créditos gratuitos con un valor de "$300 a utilizar en los próximos 90 días". + +- Haz clic en los detalles de la tarjeta +- Agrega la información de tu tarjeta de crédito +- Haz clic en **START MY FREE TRIAL**. Esto significa comenzar mi período de prueba. + +Cuando termines, verifica que la cuenta de facturación esté conectada con tu proyecto GCP. + +- Selecciona tu proyecto +- Ve a **Billing** +- Selecciona **LINK A BILLING ACCOUNT** +- Selecciona `My Billing Account` +- Haz clic en **SET ACCOUNT** + +Ahora deberías ver lo siguiente: + +```bash +Free trial status: $300 credit and 91 days remaining - with a full account, you'll get unlimited access to all of Google Cloud Platform. +``` + +Esto significa Estado de período de prueba: crédito de $300 y 91 días para usarlo - con la full account, tendrás acceso ilimitado a todo lo que ofrece Google Cloud Platform. + +
+ 👉 Si no tienes una tarjeta de crédito 👈 + +Si no tienes una tarjeta de crédito, puedes abrir una cuenta en **Revolut**. +Revolut es una aplicación que funciona como un banco y que te permitirá crear una tarjeta de crédito virtual conectada a la dirección de facturación de tu smartphone. + +Ignora este paso si ya tienes una tarjeta de crédito. Simplemente úsala para hacer la configuración. + +Descarga la app Revolut o ve a [revolut](https://www.revolut.com/a-radically-better-account) y sigue los pasos para descargar la app (introduce tu número de teléfono móvil y haz clic en Get Started). + +- Abre la app Revolut +- Agrega tu número de teléfono móvil +- Agrega el código de verificación que recibiste por SMS +- La app te preguntará por tu país, dirección, primer y segundo nombre, fecha de nacimiento y el email +- La app también te pedirá tu profesión y una selfie +- La app te pedirá una foto de tu documento nacional de identidad o pasaporte + +Cuando termines, selecciona el plan estándar (gratuito). No tienes que agregar la tarjeta a Apple pay, pedir que te envíen una tarjeta a tu domicilio ni tampoco agregar dinero a la cuenta. + +Ahora tienes una tarjeta virtual que podrás usar para hacer la configuración de GCP. + +En la vista principal de la app Revolut + +- Haz clic en Ready to use +- Haz clic en the card +- Haz clic en Show card details +- Toma nota de la información de la tarjeta de crédito virtual y úsala para completar la configuración de GCP + +
+ +
+ 👉 Si recibes un email de Google diciendo "Urgent: your billing account XXXXXX-XXXXXX-XXXXXX has been suspended" 👈 + +Esto puede pasar justo después de haber creado la cuenta en Revolut. + +- Haz clic en PROCEED TO VERIFICATION +- Te pedirán que envíes una foto de tu tarjeta de crédito (solo los últimos 4 dígitos, nada más) +- Si ya has usado **Revolut**, puedes enviar una captura de pantalla de tu tarjeta de crédito virtual (no olvides quitar la fecha de vencimiento de la captura) +- Explica que estás haciendo el bootcamp de Le Wagon, que no tienes una tarjeta de crédito y que acabas de crear una cuenta en Revolut para poder configurar GCP para el bootcamp con una tarjeta de crédito virtual + +Es posible que te validen la cuenta pero también es posible que te pidan más información en los próximos 30 minutos. + +Cuando la cuenta sea validada recibirás un email diciendo lo siguiente: "Your Google Cloud Platform billing account XXXXXX-XXXXXX-XXXXXX has been fully reinstated and is ready to use.". Esto significa que tu cuenta Google Cloud Platform ha sido restablecida + +
+ +### Habilitación de servicios de GCP + +- Asegúrate de que la facturación está habilitada para tu proyecto Google Cloud + +ℹ️ Tienes un **crédito de $300** para usar con recursos de Google Cloud. Esto será más que suficiente para el bootcamp. + +- [Habilita las APIs BigQuery y Compute Engine](https://console.cloud.google.com/flows/enableapi?apiid=bigquery,compute) (Esto puede tomar varios minutos) + +### Configuración de Cloud sdk + +- Autentica el CLI de `gcloud` con la cuenta que usaste para GCP + +```bash +gcloud auth login +``` + +- Inicia sesión en tu cuenta Google en la nueva pestaña que se abrió en tu navegador +- Lista la cuenta que tienes activa y verifica que el email que usaste para GCP está ahí + +```bash +gcloud auth list +``` + +- Define tu proyecto actual (reemplaza `PROJECT_ID` con el `ID` de tu proyecto e.g. `wagon-bootcamp-123456`) + +```bash +gcloud config set project PROJECT_ID +``` + +- Lista la cuenta que tienes activa y tu proyecto actual y verifica que tu proyecto está ahí + +```bash +gcloud config list +``` + +### Crea una llave 🔑 de cuenta de servicio + +Como ya creaste una cuenta `GCP account` y un `project` (identificado por su `PROJECT_ID`), vamos a configurar las acciones (llamadas API calls) que quieres que tu código ejecute. + +
+ 🤔 ¿Por qué necesitamos una clave de cuenta de servicio? + + Creaste una `cuenta GCP` conectada a una tarjeta de crédito. Te facturarán de acuerdo al uso que les des a los recursos de **Google Cloud Platform**. El cargo se hará si utilizas algo después de que el período de prueba gratuito se haya terminado o si te excedes del límite de consumo que te permite dicho período. + + En tu `cuenta GCP` has creado un solo `proyecto GCP` identificado por su `PROJECT_ID`. Los `proyectos GCP` te permiten organizar y monitorear la manera en que consumes los recursos **GCP** de forma más precisa. En este bootcamp solo crearemos un solo proyecto. + + Ahora necesitamos una manera de saber qué recursos nuestro código podrá consumir dentro de un `GCP project`. Nuestro código consume recursos GCP por medio de llamadas API. + + Ya que las llamadas API no son gratuitas, es importante definir cuidadosamente cómo nuestro código las utilizará. Sin embargo, durante el bootcamp no habrá restricciones. Le permitiremos a nuestro código que utilice todas las API **GCP** sin restricciones. + + Así como pueden haber varios proyectos asociados a una cuenta GCP, un proyecto puede estar compuesto de muchos servicios (cualquier paquete de código, sin importar su formato, que necesite utilizar llamadas a la API de GCP para cumplir con su propósito). + + GCP exige que los servicios de los proyectos que usen llamadas API se registren en la plataforma y que se configuren sus credenciales por medio del acceso concedido a una `service account`. + + Por ahora solo tendremos que usar un solo servicio y crearemos la `service account` correspondiente. +
+ +Ya que la [service account](https://cloud.google.com/iam/docs/service-accounts) es lo que identifica tu aplicación (y por ende tu cuenta de facturación GCP y, en última instancia, tu tarjeta de crédito), lo mejor es ser cuidadoso en los próximos pasos. + +⚠️ **No compartas la 🔑 del archivo json de tu cuenta de servicio** ⚠️ No la guardes en tu escritorio ni en tu código base de git (incluso si tu repositorio git es privado). Que no se te olvide en un lugar como la máquina de café y, por supuesto, no la envíes en un tweet. + +- Ve a la [página de las cuentas de servicio](https://console.cloud.google.com/apis/credentials/serviceaccountkey) +- Selecciona tu proyecto en la lista de proyectos recientes si te piden que +- Crees una cuenta de servicio: + - Haz clic en **CREATE SERVICE ACCOUNT** que significa crear une cuenta de servicio: + - Define un `Service account name` para esa cuenta. Esto significa Nombre de cuenta de servicio + - Haz clic en **CREATE AND CONTINUE** que significa crear y continuar + - Haz clic en **Select a role** que significa selecciona un rol. Escoge `Quick access/Basic` luego **Owner**. Esto otorga acceso total a todos los recursos + - Haz clic en **CONTINUE** + - Haz clic en **DONE** +- Descarga la 🔑 del archivo json de la cuenta de servicio: + - Haz clic en la cuenta de servicio recién creada + - Haz clic en **KEYS** + - Haz clic en **ADD KEY** y luego en **Create new key** + - Selecciona **JSON** y haz clic en **CREATE** + +![](images/gcp_create_key.png) + +El navegador acaba de guardar la 🔑 del archivo json de la cuenta de servicio en tu carpeta de descargas (el nombre se le asigna según el nombre de la cuenta de servicio. Es algo como `le-wagon-data-123456789abc.json`) + + +Ahora vamos a mover el archivo json de la cuenta de servicio desde tu disco en Windows al disco en Ubuntu. Esto le permitirá a las herramientas de desarrollo en Ubuntu acceder a los recursos de tu cuenta GCP. + +Primero crea un directorio para almacenar el archivo. + +👉 Abre una terminal en Ubuntu y ejecuta los siguiente comandos + +🚨 reemplaza el `GITHUB_NICKNAME` por tu nickname de **GitHub** + +``` bash +cd ~/code/GITHUB_NICKNAME +ls -la +``` + +Si el comando no muestra el directorio `dotfiles`, pídele ayuda a un TA 🙏 + +Si no es el caso, puedes proceder con la configuración: + +``` bash +mkdir gcp +``` + +![](images/wsl-gcp-dir.png) + +Ahora moveremos el archivo json de la cuenta de servicio al directorio `gcp` que acabamos de crear. + +Abre un **Buscador de Archivos** de Windows (Win + E) y localiza el directorio `gcp` en el sistema de archivo de Ubuntu. + +Puedes optar por las siguientes alternativas: + +- Usar el enlace de **Acceso rápido** que creamos hace un rato +- O escribir la localización del directorio `gcp` manualmente en la barra de direcciones del sistema de archivos de Ubuntu: + +```bash +\\wsl$\Ubuntu\home\UBUNTU_USERNAME\code\GITHUB_NICKNAME +``` + +🚨 Si optas por la segunda opción: + +- reemplaza el `UBUNTU_USERNAME` por el usuario que escogiste durante la configuración de **Ubuntu** +- reemplaza el `GITHUB_NICKNAME` por tu nickname de **GitHub** + +![](images/wsl-gcp-key.png) + +Cuando hayas localizado el directorio `gcp` en el **Buscador de Archivos** de Windows, ponle el archivo json de la cuenta de servicio que descargaste. + +Ahora deberías poder ver el archivo desde el sistema de archivos de Ubuntu. + +👉 Abre una terminal en Ubuntu y verifica que el archivo json de la cuenta de servicio ha sido movido + +``` bash +cd gcp +ls -la +``` + +![](images/wsl-gcp-dir-2.png) + +Si no ves el archivo json de la cuenta de servicio en el directorio `gcp`, pídele ayuda a un TA 🙏 + +Ahora almacenaremos la ruta al archivo json de la cuenta de servicio en una variable de entorno. + +🚨 Haz las siguientes sustituciones en este comando: + +- El `UBUNTU_USERNAME` por el usuario que escogiste durante la configuración de **Ubuntu** +- El `GITHUB_NICKNAME` por tu nickname de **GitHub** +- El `SERVICE_ACCOUNT_JSON_FILE_CONTAINING_YOUR_SECRET_KEY.json` por el nombre del archivo json de tu cuenta de servicio. + +``` bash +echo 'export GOOGLE_APPLICATION_CREDENTIALS=/home/UBUNTU_USERNAME/code/GITHUB_NICKNAME/gcp/SERVICE_ACCOUNT_JSON_FILE_CONTAINING_YOUR_SECRET_KEY.json' >> ~/.aliases +``` + + + +
+ ℹ️ ¿Cómo encontrar la ruta absoluta de un archivo? + Puedes arrastrar el archivo a tu terminal. +
+ +**Reinicia** tu terminal y ejecuta lo siguiente: + +``` bash +echo $GOOGLE_APPLICATION_CREDENTIALS +``` + +Deberías obtener la siguiente información: + +```bash +/some/absolute/path/to/your/gcp/SERVICE_ACCOUNT_JSON_FILE_CONTAINING_YOUR_SECRET_KEY.json +``` + +Ahora verifica si la ruta al archivo json de tu cuenta de servicio es el correcto: + +``` bash +cat $(echo $GOOGLE_APPLICATION_CREDENTIALS) +``` + +👉 Este comando debería mostrar el contenido del archivo json de tu cuenta de servicio. Si no es el caso, pídele ayuda a un TA 🙏 + +Tu código y utilidades ahora pueden acceder a los recursos de tu cuenta GCP. + +Continuemos con los últimos pasos de la configuración... + +- Lista las cuentas de servicio asociadas a tu cuenta activa y a tu proyecto actual +```bash +gcloud iam service-accounts list +``` +- Recupera el email de la cuenta de servicio e. g. `SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com` +- Lista los roles de la cuenta de servicio desde la cli (reemplaza el PROJECT_ID y el SERVICE_ACCOUNT_EMAIL) +```bash +gcloud projects get-iam-policy PROJECT_ID \ +--flatten="bindings[].members" \ +--format='table(bindings.role)' \ +--filter="bindings.members:SERVICE_ACCOUNT_EMAIL" +``` +- Ahora deberías ver que tu cuenta de servicio tiene el rol de `roles/owner` + +
+ Resolución de problemas + +- `AccessDeniedException: 403 The project to be billed is associated with an absent billing account.`. Esto significa que el proyecto a facturar está asociado a una cuenta de facturación que no está habilitada + - Asegúrate de habilitar la facturación para tu proyecto https://cloud.google.com/billing/docs/how-to/modify-project +
+ +🏁 Listo. ¡Has terminado la configuración de GCP! + + + ## Kitt + +Deberías haber recibido un correo electrónico de Le Wagon invitándote a registrarte en [Kitt](https://kitt.lewagon.com) (nuestra plataforma de aprendizaje). + +Entonces deberías recibir una invitación adicional de Slack, invitándote a la comunidad de los alumni de Le Wagon en slack (donde podrás chatear con tus compañeros y todos los demás alumni). Haz clic en **Join** y completa la información que te piden. + +Si no lo has recibido, por favor contacta a tu equipo de enseñanza. + + +## Slack + +[Slack](https://slack.com/) es una plataforma de comunicación popular en la industria tech. + +### Instalación + +[Descarga la aplicación Slack](https://slack.com/downloads/windows) e instálala. + +:warning: Si ya estás usando Slack en tu navegador, por favor descarga e instala **la aplicación de escritorio** la cual tiene todas las funciones. + + +### Parámetros + +Abre la aplicación e inicia sesión en `lewagon-alumni`. + +Asegúrate de **subir una foto para tu perfil** :point_down: + +![Cómo subir una foto de perfil en Slack](https://github.com/lewagon/setup/blob/master/images/slack_profile_picture.gif) + +La idea es tener Slack abierto todo el día para compartir enlaces útiles / pedir ayuda / decidir dónde almorzar / etc. + +Para asegurarte de que todo lo relacionado a videollamadas funcione bien, prueba tu cámara y tu micrófono: +- Abre la aplicación Slack +- Haz clic en tu foto de perfil en la esquina superior derecha +- Selecciona "Preferencias" en el menú. +- Haz clic en "Audio y vídeo" en la columna de la izquierda. +- Debajo de "Solución de problemas", haz clic en "Ejecutar una prueba de audio, vídeo y pantalla compartida". La prueba se abrirá en una nueva ventana. +- Comprueba que tus dispositivos preferidos de altavoz, micrófono y cámara aparecen en los menús desplegables y haz clic en "Iniciar prueba" +- Haz clic en el botón verde "Start test" + +![Chequea el micrófono y la cámara con Slack](https://github.com/lewagon/setup/blob/master/images/slack_call_test.png) + +:heavy_check_mark: Cuando termine el test deberías ver mensajes de "Succeed" en verde por lo menos para tu micrófono y tu cámara. :+1: + +:x: Si no es el caso, **contacta a un profesor**. + +¡También puedes instalar la aplicación Slack en tu smartphone e iniciar sesión en `lewagon-alumni`! + + +## Extra + +Si has terminado la configuración, te pedimos que preguntes si alguien necesita ayuda con la suya (macOS, Linux o Windows). Las primeras clases son a las 2pm. Hablaremos de la configuración que acabas de hacer y de Kitt. + +Si no tienes mucha experiencia con `git` y GitHub, por favor [ve nuevamente el video de este workshop](https://www.youtube.com/watch?v=Z9fIBT2NBGY) (puedes verlo a `1.25` de velocidad). + + diff --git a/WINDOWS.md b/WINDOWS.md index 3f78a7f..4b3379e 100644 --- a/WINDOWS.md +++ b/WINDOWS.md @@ -6,6 +6,7 @@ Please **read them carefully and execute all commands in the following order**. Let's start :rocket: + ## GitHub account Have you signed up to GitHub? If not, [do it right away](https://github.com/join). @@ -16,16 +17,20 @@ Have you signed up to GitHub? If not, [do it right away](https://github.com/join :point_right: **[Enable Two-Factor Authentication (2FA)](https://docs.github.com/en/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication#configuring-two-factor-authentication-using-text-messages)**. GitHub will send you text messages with a code when you try to log in. This is important for security and also will soon be required in order to contribute code on GitHub. + ## Windows version Before we start, we need to check that the version of Windows installed on your computer is compatible with this setup instructions. ### Windows 10 or Windows 11 +> :warning: **Note on Windows 10 and security** +> +> The Le Wagon bootcamp setup works on Windows 10. That said, we highly recommend to upgrade to Windows 11. Since October 14th, 2025, Microsoft has ended support for Windows 10, which means it will no longer receive security updates, potentially putting your machine at risk. For more details, read [Microsoft's guide](https://support.microsoft.com/en-us/windows/windows-10-support-has-ended-on-october-14-2025-2ca8b313-1946-43d3-b55c-2b95b107f281). In case your machine can't run Windows 11, consider switching to Ubuntu. + To be able to set up your computer, you need to have **Windows 10 or Windows 11** installed. To check your Windows version: - - Press `Windows` + `R` - Type `winver` - Press `Enter` @@ -57,13 +62,13 @@ If the first words of this window are **Windows 10**, check the **Version number Activate Windows Update Service to fix Updates Some antiviruses and pieces of software deactivate the Update service we need, resulting in the error you see. Let's fix that! - - Press `Windows` + `R` - - Type `services.msc` - - Press `Enter` - - Double Click `Windows Update Service` - - Set its `Startup` to `Automatic` - - Click on `Start` - - Click on `Ok` + - Press `Windows` + `R` + - Type `services.msc` + - Press `Enter` + - Double Click `Windows Update Service` + - Set its `Startup` to `Automatic` + - Click on `Start` + - Click on `Ok` Then let's try updates again!
@@ -79,12 +84,12 @@ If the first words of this window are **Windows 10**, check the **Version number
+ ## Virtualization We need to ensure that the Virtualization options are enabled in the BIOS of your computer. For many computers, this is already the case. Let's check: - - Press `Windows` + `R` - Type `taskmgr` - Press `Enter` @@ -101,26 +106,27 @@ For many computers, this is already the case. Let's check: Activate Virtualization We need to access the BIOS / UEFI of the computer to activate it. - - Press `Windows + R` - - Type `shutdown.exe /r /o /t 1` - - Press `Enter` - - Wait for the computer to shutdown - - Click on `Troubleshoot` - - Click on `Advanced Options` - - Click on `UEFI Firmware Settings` - - Click on `Restart` + - Press `Windows + R` + - Type `shutdown.exe /r /o /t 1` + - Press `Enter` + - Wait for the computer to shutdown + - Click on `Troubleshoot` + - Click on `Advanced Options` + - Click on `UEFI Firmware Settings` + - Click on `Restart` You need to activate the virtualization option for your processor here: - - Most of the time, in the advanced settings, the CPU settings, or the Northbridge settings - - The option can be called differently according to your computer: + - Most of the time, in the advanced settings, the CPU settings, or the Northbridge settings + - The option can be called differently according to your computer: - Intel: `Intel VT-x`, `Intel Virtualization Technology`, `Virtualization Extensions`, `Vanderpool`... - AMD: `SVM Mode` or `AMD-V` - - Save the changes after activation and reboot the computer through the appropriate option + - Save the changes after activation and reboot the computer through the appropriate option + ## Windows Subsystem for Linux (WSL) -WSL is the development environment we are using to run Ubuntu. [You can learn more about WSL here](https://docs.microsoft.com/en-us/windows/wsl/faq). +WSL is the development environment we are using to run Ubuntu. You can learn more about WSL [here](https://docs.microsoft.com/en-us/windows/wsl/faq). We will install WSL 2 and Ubuntu in one command through the Windows Command Prompt. @@ -133,7 +139,6 @@ We will install WSL 2 and Ubuntu in one command through the Windows Command Prom :warning: You may have to accept the UAC confirmation about the privilege elevation. A black terminal window will appear: - - Copy the following command (`Ctrl` + `C`) - Paste it into the terminal window (`Ctrl` + `V` or by right-clicking in the window) - Run it by pressing `Enter` @@ -150,7 +155,7 @@ wsl --install Troubleshooting for Windows 10 (only if needed, check with a TA) -### For Windows 10 < 2004: install WSL 1 first +#### For Windows 10 < 2004: install WSL 1 first :warning: In the following instruction, please be aware of the `Ctrl` + `Shift` + `Enter` key stroke to execute **Windows PowerShell** with administrator privileges instead of just clicking on `Ok`or pressing `Enter`. @@ -161,7 +166,6 @@ wsl --install :warning: You may have to accept the UAC confirmation about the privilege elevation. A blue terminal window will appear: - - Copy the following commands one by one (`Ctrl` + `C`) - Paste them into the PowerShell window (`Ctrl` + `V` or by right-clicking in the window) - Run them by pressing `Enter` @@ -205,7 +209,6 @@ Once your computer has restarted, we need to download the WSL2 installer. If you are running Windows 10, we will set WSL default version to 2. Now that WSL 2 is installed, let's make it the default version: - - Press `Windows` + `R` - Type `cmd` - Press `Enter` @@ -236,6 +239,7 @@ wsl --set-default-version 2 + ## Ubuntu ### Installation @@ -263,9 +267,9 @@ If you are running Windows 10, let's install Ubuntu throught the Microsoft Store Uninstall wrong versions of Ubuntu To uninstall a wrong version of Ubuntu, you just have to go to the Installed Program List of Windows 10: - - Press `Windows` + `R` - - Type `ms-settings:appsfeatures` - - Press `Enter` + - Press `Windows` + `R` + - Type `ms-settings:appsfeatures` + - Press `Enter` Find the software to uninstall and click on the uninstall button. @@ -277,17 +281,17 @@ Once the installation is finished, the `Get` button becomes a `Open` button: cli ### First launch At first launch, you will be asked some information: - - Choose a **username**: - - one word - - lowercase - - no special characters - - for example: `lewagon` or your `firstname` + - one word + - lowercase + - no special characters + - for example: `lewagon` or your `firstname` - Choose a **password** - Confirm your password :warning: When you type your password, nothing will show up on the screen, **that's normal**. This is a security feature to mask not only your password as a whole but also its length. Just type your password and when you're done, press `Enter`. + ### Check the WSL version of Ubuntu - Press `Windows` + `R` @@ -320,14 +324,14 @@ wsl -l -v
Check for Uncompressed Files - - Press `Windows` + `R` - - Type `%localappdata%\Packages` - - Press `Enter` - - Open the folder named `CanonicalGroupLimited.UbuntuonWindows...` - - Right Click on the `LocalState` folder - - Click on `Properties` - - Click on `Advanced` - - Make sure that the option `Compress content` is **not** ticked, then click on `Ok`. + - Press `Windows` + `R` + - Type `%localappdata%\Packages` + - Press `Enter` + - Open the folder named `CanonicalGroupLimited.UbuntuonWindows...` + - Right Click on the `LocalState` folder + - Click on `Properties` + - Click on `Advanced` + - Make sure that the option `Compress content` is **not** ticked, then click on `Ok`. Apply changes to this folder only and try to convert the Ubuntu WSL version again. @@ -350,36 +354,6 @@ It should return the username you chose before. :x: It if says `root`, **contact a TA** before continuing! -### Check the locale - -The locale is a mechanism allowing to customize programs to your language and country. - -Let's verify that the default locale is set to English, please type this in the Ubuntu terminal: - -```bash -locale -``` - -If the output does not contain `LANG=en_US.UTF-8`, run the following command in a Ubuntu terminal to install the english locale: - -```bash -sudo locale-gen en_US.UTF-8 -``` - -If after, you receive a warning (`bash: warning: setlocale: LC_ALL: cannot change locale (en_US.utf-8)`) in your terminal, please do the following: - -
- Generate locale - -Please, run this lines in your terminal. - -```bash -sudo update-locale LANG=en_US.UTF8 -sudo apt-get update -sudo apt-get install language-pack-en language-pack-en-base manpages -``` - -
## Visual Studio Code @@ -420,6 +394,7 @@ code . :x: Otherwise, please **contact a teacher** + ## Windows Terminal ### Installation @@ -447,9 +422,9 @@ If you are running Windows 10, let's install Windows Terminal, a real modern ter To uninstall a wrong version of Windows Terminal, you just have to go to the Installed Program List of Windows 10: - - Press `Windows` + `R` - - Type `ms-settings:appsfeatures` - - Press `Enter` + - Press `Windows` + `R` + - Type `ms-settings:appsfeatures` + - Press `Enter` Find the software to uninstall and click on the uninstall button.
@@ -474,14 +449,13 @@ It should open the terminal settings: You may see an orange circle rather than a penguin as the logo for Ubuntu. -We have circled in red the part you need to change: +We have circled in red the part you need to add: ![Windows Terminal JSON settings file](https://github.com/lewagon/setup/blob/master/images/windows_terminal_settings_json.png) -First, let's ask Ubuntu to start directly inside your Ubuntu Home Directory instead of the Windows one: +First, let's ask Ubuntu to start directly inside your Ubuntu Home Directory instead of the Windows one. -- Locate the entry with both `"name": "Ubuntu",` and `"hidden": false,` -- Add the following line after it: +- Place this line inside the { } block that contains "name": "Ubuntu" (like in the screenshot): ```bash "commandline": "wsl.exe ~", @@ -491,11 +465,11 @@ First, let's ask Ubuntu to start directly inside your Ubuntu Home Directory inst Then, let's disable warnings for copy-pasting commands between Windows and Ubuntu: -- Locate the line `"defaultProfile": "{2c4de342-...}"` +- Locate the line "defaultProfile": "{2c4de342-...}" - Add the following line after it: ```bash -"multiLinePasteWarning": false, +"warning.multiLinePaste": false, ``` :warning: Do not forget the comma at the end of the line! @@ -508,6 +482,7 @@ This terminal has tabs: you can choose to open a new terminal tab by clicking on **From now on, every time we will refer to the terminal or the console it will be this one.** DO NOT use any other terminal anymore. + ## VS Code Extensions ### Installation @@ -536,8 +511,39 @@ Here is a list of the extensions you are installing: - [Jupyter](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter) - [SQLite](https://marketplace.visualstudio.com/items?itemName=alexcvzz.vscode-sqlite) + ## Command line tools +### Check the locale + +The locale is a mechanism allowing to customize programs to your language and country. + +Let's verify that the default locale is set to English, please type this in the Ubuntu terminal: + +```bash +locale +``` + +If the output does not contain `LANG=en_US.UTF-8`, run the following command in a Ubuntu terminal to install the english locale: + +```bash +sudo locale-gen en_US.UTF-8 +``` + +If after, you receive a warning (`bash: warning: setlocale: LC_ALL: cannot change locale (en_US.utf-8)`) in your terminal, please do the following: + +
+ Generate locale + +Please, run this lines in your terminal. + +```bash +sudo update-locale LANG=en_US.UTF8 +sudo apt-get update +sudo apt-get install language-pack-en language-pack-en-base manpages +``` +
+ ### Zsh & Git Instead of using the default `bash` [shell](https://en.wikipedia.org/wiki/Shell_(computing)), we will use `zsh`. @@ -545,7 +551,6 @@ Instead of using the default `bash` [shell](https://en.wikipedia.org/wiki/Shell_ We will also use [`git`](https://git-scm.com/), a command line software used for version control. Let's install them, along with other useful tools: - - Open an **Ubuntu terminal** - Copy and paste the following commands: @@ -594,6 +599,7 @@ gh --version :x: Otherwise, please **contact a teacher** + ## Oh-my-zsh Let's install the `zsh` plugin [Oh My Zsh](https://ohmyz.sh/). @@ -614,6 +620,7 @@ At the end your terminal should look like this: :x: Otherwise, please **ask for a teacher** + ## Linking your default browser to Ubuntu To be sure that you can interact with your browser installed on Windows from your Ubuntu terminal, we need to set it as your default browser there. @@ -640,15 +647,19 @@ If it does not, you can follow [these instructions](https://github.com/lewagon/s Do not hesitate to **contact a teacher**. + ## direnv [direnv](https://direnv.net/) is a shell extension. It makes it easy to deal with per project environment variables. This will be useful in order to customize the behavior of your code. + ``` bash sudo apt-get update; sudo apt-get install direnv echo 'eval "$(direnv hook zsh)"' >> ~/.zshrc ``` + + ## GitHub CLI CLI is the acronym of [Command-line Interface](https://en.wikipedia.org/wiki/Command-line_interface). @@ -661,7 +672,7 @@ We will use the GitHub CLI (`gh`) to connect to GitHub using *SSH*, a protocol t First in order to **login**, copy-paste the following command in your terminal: -:warning: **DO NOT edit the `email`** +:warning: **DO NOT edit the `email`** — Even though `user:email` looks like a placeholder for your actual email address, it isn't — do not replace it. ```bash gh auth login -s 'user:email' -w --git-protocol ssh @@ -673,7 +684,9 @@ gh auth login -s 'user:email' -w --git-protocol ssh If you already have SSH keys, you will see instead `Upload your SSH public key to your GitHub account?` With the arrows, select your public key file path and press `Enter`. -- `Enter a passphrase for your new SSH key (Optional)`. Type something you want and that you'll remember. It's a password to protect your private key stored on your hard drive. Then press `Enter`. +- `Enter a passphrase for your new SSH key (Optional)`: + - **FOR MOST PEOPLE:** Just press `Enter` to skip. You don't need a passphrase for the bootcamp and it would prompt you every time you use the key. There is a risk, however, that if someone steals your laptop, they could then push to GitHub. + - **IF SECURITY IS REALLY IMPORTANT TO YOU:** Enter a passphrase of your choice and press `Enter`. It's _really_ important that if you enter a passphrase, you write it down somewhere immediately and do not lose/forget it. You will need to enter this frequently. - `Title for your SSH key`. You can leave it at the proposed "GitHub CLI", press `Enter`. @@ -700,9 +713,11 @@ gh auth status :x: If not, **contact a teacher**. + ## Google Cloud CLI Install the `gcloud` CLI to communicate with [Google Cloud Platform](https://cloud.google.com/) through your terminal: + ```bash echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list sudo apt-get install apt-transport-https ca-certificates gnupg @@ -713,6 +728,7 @@ sudo apt-get install google-cloud-sdk-app-engine-python 👉 [Install documentation](https://cloud.google.com/sdk/docs/install#deb) + ## Dotfiles Hackers love to refine and polish their shell and tools. We'll start with a great default configuration provided by [Le Wagon](http://github.com/lewagon/dotfiles), stored on GitHub. @@ -733,6 +749,7 @@ There seems to be a problem with the previous step (`gh auth`). There are three options, choose **one**: +
I did not attend the Web Dev or Data Science & AI or Data Analytics bootcamp at Le Wagon @@ -752,6 +769,7 @@ gh repo fork lewagon/dotfiles --clone
+
I already attended a Le Wagon coding bootcamp (Web Development or Data Science & AI or Data Analytics) but I have a new laptop @@ -766,6 +784,7 @@ mkdir -p ~/code/$GITHUB_USERNAME && cd $_ gh repo clone $GITHUB_USERNAME/dotfiles ``` + Open your terminal and go to your `dotfiles` project: ```bash @@ -818,6 +837,7 @@ git push origin master
+
I already did the setup of a Le Wagon coding bootcamp (WebDev or Data Science & AI or Data Analytics) on the same laptop before @@ -825,6 +845,7 @@ git push origin master This means that you already forked and cloned the GitHub repo `lewagon/dotfiles`, but at that time the configuration was maybe not ready for the current Data Analytics bootcamp. Let's update it. **Ask a TA to join you for the nex steps.** + Open your terminal and go to your `dotfiles` project: ```bash @@ -877,6 +898,7 @@ git push origin master
+ ### Run the dotfiles installer It's time to run the `dotfiles` installer: @@ -902,6 +924,7 @@ cd ~/code/$GITHUB_USERNAME/dotfiles && zsh git_setup.sh Please now **quit** all your opened terminal windows. + ## Disable SSH passphrase prompt You don't want to be asked for your passphrase every time you communicate with a distant repository. So, you need to add the plugin `ssh-agent` to `oh my zsh`: @@ -913,12 +936,12 @@ code ~/.zshrc ``` Then: - - Spot the line starting with `plugins=` - Add `ssh-agent` at the end of the plugins list :heavy_check_mark: Save the `.zshrc` file with `Ctrl` + `S` and close your text editor. + ## Installing Python (with [`pyenv`](https://github.com/pyenv/pyenv)) ### Uninstall `conda` @@ -931,8 +954,10 @@ Check if you have `conda` installed on your machine: conda list ``` + If you have `zsh: command not found: conda`, you can **skip** the uninstall of `conda` and jump to the **Install `pyenv`** section. +
conda uninstall instructions @@ -949,11 +974,13 @@ anaconda-clean --yes rm -rf ~/anaconda2 rm -rf ~/anaconda3 rm -rf ~/.anaconda_backup + ``` - Remove Anaconda path from your `.bash_profile` - Open the file with `code ~/.bash_profile` - If the file opens find the line matching the following pattern `export PATH="/path/to/anaconda3/bin:$PATH"` and delete the line + - Restart your terminal with `exec zsh` - Remove Anaconda initialization from your `.zshrc`: - Open the file with `code ~/.zshrc` @@ -961,6 +988,7 @@ rm -rf ~/.anaconda_backup
+ ### Install `pyenv` Ubuntu comes with an outdated version of Python that we don't want to use. You might already have installed Anaconda or something else to tinker with Python and Data Analytics packages. All of this does not really matter as we are going to do a professional setup of Python where you'll be able to switch which version you want to use whenever you type `python` in the terminal. @@ -1020,6 +1048,7 @@ exec zsh To check if this worked, run `python --version`. If you see `3.12.9`, perfect! If not, ask a TA that will help you debug the problem thanks to `pyenv versions` and `type -a python` (`python` should be using the `.pyenv/shims` version first). + ## Python Virtual Environment Before we start installing relevant Python packages, we will isolate the setup for the Bootcamp into a **dedicated** virtual environment. We will use a `pyenv` plugin called [`pyenv-virtualenv`](https://github.com/pyenv/pyenv-virtualenv). @@ -1047,6 +1076,7 @@ pyenv global lewagon Great! Anytime we'll install Python package, we'll do it in that environment. + ### Python packages Now that we have a pristine `lewagon` virtual environment, it's time to install some packages in it. @@ -1059,10 +1089,15 @@ pip install --upgrade pip Then let's install some packages for the first weeks of the program: + + ``` bash pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/specs/releases/linux.txt ``` + + + ## Jupyter Notebook tweaking Let's improve the display of the [`details` disclosure elements](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details) in your notebooks. @@ -1076,6 +1111,8 @@ mkdir -p $LOCATION curl $SOURCE > $LOCATION/custom.css ``` + + ### Configuring Jupyter Notebook to open in your browser First, let's configure your default browser again. We did this before, but when we installed the dotfiles it got removed. Not a problem, run this command to configure the settings again: @@ -1116,6 +1153,7 @@ If it is not the case, please call a TA. To stop the Jupyter server in the terminal, press `Ctrl` + `C`, enter y, then press Enter. + ## Python setup check ### Python and packages check @@ -1176,6 +1214,7 @@ You can close your web browser then terminate the jupyter server with `CTRL` + ` Here you have it! A complete python virtual env with all the third-party packages you'll need for the whole bootcamp. + ## Insomnia > ℹ️ **Why?** Insomnia is one of the best-known API testing tools, and it will be useful in our Introduction to API course. @@ -1186,6 +1225,7 @@ Here you have it! A complete python virtual env with all the third-party package - Install Insomnia + ## Windows settings ### Exchange files between Windows and Ubuntu @@ -1193,10 +1233,9 @@ Here you have it! A complete python virtual env with all the third-party package We need an easy way to transfer files from Windows to Ubuntu and vice versa. In order to do that, let's create shortcuts to Ubuntu directories in the Windows **File Explorer**: - - Open the Windows File Explorer (or use the shortcut `WIN` + `E`) - In the Address Bar, enter `\\wsl$\` (or `\\wsl$\Ubuntu` if it does not work) -- You now have access to the Ubuntu file system +- You now have acces to the Ubuntu file system - Dive into the Ubuntu file system in order to look for directories of interest - Drag the desired folders into the Address Bar in order to create shortcuts @@ -1205,7 +1244,6 @@ In order to do that, let's create shortcuts to Ubuntu directories in the Windows ### Open the Windows File Explorer from the Ubuntu terminal Another option to move files around is to open the Windows **File Explorer** from the Ubuntu terminal: - - Open an Ubuntu terminal - Go to the directory you wish to explore - Run the `explorer.exe .` command (alternatively, use `wslview .`) @@ -1218,7 +1256,6 @@ Another option to move files around is to open the Windows **File Explorer** fro You might want to figure out the exact location of a Windows directory in the Ubuntu file system, or the other way around. In order to convert a Windows path to and from an Ubuntu path: - - Open an Ubuntu terminal - Use the `wslpath "C:\Program Files"` command in order to translate a Windows path into an Ubuntu path - Use the `wslpath -w "/home"` command in order to translate an Ubuntu path into a Windows path @@ -1235,19 +1272,20 @@ To pin an app to your taskbar, launch the app, right-click on the icon in the ta ![How to pin an app to the taskbar in Windows](https://github.com/lewagon/setup/blob/master/images/windows_taskbar.png) You must pin: - - Your terminal - Your file explorer - VS Code - Your Internet browser - Slack + ## Visual C++ Redistributable Some Python packages require a compiler to function properly. Let's install one: [For x64 systems](https://aka.ms/vs/16/release/vc_redist.x64.exe) + ## Google Cloud Platform setup [GCP](https://cloud.google.com/) is a cloud solution that you are going to use in order to deploy your Machine Learning-based products to production. @@ -1377,10 +1415,12 @@ Once the verification goes through, you should receive an email stating that "Yo - Authenticate the `gcloud` CLI with the google account you used for GCP + ```bash gcloud auth login --no-launch-browser ``` + - Login to your Google account on the new tab opened in your web browser - List your active account and check your email address you used for GCP is present @@ -1475,6 +1515,7 @@ An alternate way to navigate to the Service Accounts page is from the following: - The browser has now saved the service account json file 🔑 in your downloads directory (it is named according to your service account name, something like `le-wagon-data-123456789abc.json`). + We will now move the service account json file from your Windows disk to the Ubuntu disk. This will allow the development tools in Ubuntu to access to the resources of your GCP account. First, let's create a directory in which we will store the file. @@ -1555,6 +1596,8 @@ code ~/.zshrc in the Terminal! 😄 + +
ℹ️ How to find the absolute path of a file? You can drag and drop the file in your terminal. @@ -1606,13 +1649,13 @@ gcloud projects get-iam-policy PROJECT_ID \ Troubleshooting - `AccessDeniedException: 403 The project to be billed is associated with an absent billing account.` - - Make sure that billing is enabled for your Google Cloud Platform project https://cloud.google.com/billing/docs/how-to/modify-project - + - Make sure that billing is enabled for your Google Cloud Platform project [https://cloud.google.com/billing/docs/how-to/modify-project](https://cloud.google.com/billing/docs/how-to/modify-project)
🏁 You are done with the GCP setup! -## Kitt + + ## Kitt You should have received an email from Le Wagon inviting you to sign up on [Kitt](https://kitt.lewagon.com) (our learning platform). @@ -1620,6 +1663,7 @@ Then you should receive an additional invitation from Slack, inviting you to the If you haven't, please contact your teaching team. + ## Slack [Slack](https://slack.com/) is a communication platform pretty popular in the tech industry. @@ -1630,6 +1674,7 @@ If you haven't, please contact your teaching team. :warning: If you are already using Slack in your browser, please download and install **the desktop app** which is fully featured. + ### Settings Launch the app and sign in to `lewagon-alumni` organization. @@ -1641,7 +1686,6 @@ Make sure you **upload a profile picture** :point_down: The idea is that you'll have Slack open all day, so that you can share useful links / ask for help / decide where to go to lunch / etc. To ensure that everything is working fine for video calls, let's test your camera and microphone: - - Open the Slack app - Click your profile picture in the top right. - Select `Preferences` from the menu. @@ -1657,14 +1701,11 @@ To ensure that everything is working fine for video calls, let's test your camer You can also install Slack app on your phone and sign in `lewagon-alumni`! -## Setup completed! -That's all you need for now! Some of the free trial periods on the tools we use are very short, so from now on, whenever we introduce a new tool or software, we will guide you through the sign-in and installation steps at the beginning of the day. - -Ready to start? 🚀 - -## (Bonus) +## Bonus If you are done with your setup, please ask around if some classmates need some help with theirs (macOS, Linux, Windows). We will have our first lectures at 2pm and will talk about the Setup you just did + onboard you on Kitt. If you don't have a lot of experience with `git` and GitHub, please [(re-)watch this workshop](https://www.youtube.com/watch?v=Z9fIBT2NBGY) (`1.25` playback speed is fine). + + diff --git a/WINDOWS_keep_current.es.md b/WINDOWS_keep_current.es.md new file mode 100644 index 0000000..78fe7e6 --- /dev/null +++ b/WINDOWS_keep_current.es.md @@ -0,0 +1,301 @@ + +# Cómo mantener tu configuración al día + +Esta sección contiene los pasos que tienes que seguir para asegurarte de que tu configuración esté actualizada. + +Primero y principal, para trabajar en buenas condiciones, asegúrate de que: + +- tienes una conexión internet de alta velocidad +- tu computadora tiene suficiente memoria (8GB) para poder ejecutar tu código eficientemente +- tu computadora tiene suficiente espacio en disco (30GB) para poder trabajar con grandes datasets. + +## git + +Verifica que git funcione: + +``` bash +git --version +``` + +👉 Deberías obtener algo parecido a esto de aquí abajo que te muestra la versión de git: + +``` bash +git version 2.33.0 +``` + +## GitHub + +Verifica que tengas acceso a los repositorios GitHub públicos de Le Wagon + +``` bash +cd ~/code// +git clone git@github.com:lewagon/data-analytics-setup data-analytics-setup +``` + +👉 Se debe clonar el repositorio correctamente: + +``` bash +Cloning into 'data-analytics-setup'... +remote: Enumerating objects: 21, done. +remote: Counting objects: 100% (21/21), done. +remote: Compressing objects: 100% (14/14), done. +Receiving objects: 100% (21/21), done. +Resolving deltas: 100% (6/6), done. +remote: Total 21 (delta 6), reused 16 (delta 1), pack-reused 0 +``` + +👉 Puedes borrar el repositorio clonado + +``` bash +rm -Rf data-analytics-setup +``` + +## Verificación de la configuración de pyenv + +Verifica que tengas un `~/.zprofile` : + +``` bash +cat ~/.zprofile +``` + +👉 Deberías poder ver las líneas siguientes: + +``` bash +# Setup the PATH for pyenv binaries and shims +export PYENV_ROOT="$HOME/.pyenv" +export PATH="$PYENV_ROOT/bin:$PATH" +type -a pyenv > /dev/null && eval "$(pyenv init --path)" +``` + +Si el comando no da ningún resultado, crea el archivo `~/.zprofile`: + +``` bash +cd +touch .zprofile +``` + +Agrega las siguientes líneas a tu `~/.zprofile` : + +``` bash +# Setup the PATH for pyenv binaries and shims +export PYENV_ROOT="$HOME/.pyenv" +export PATH="$PYENV_ROOT/bin:$PATH" +type -a pyenv > /dev/null && eval "$(pyenv init --path)" +``` + +## Creación de un ambiente virtual dedicado + +Actualiza pyenv: + + +``` bash +cd $(pyenv root) && git pull +``` + + +Instala la versión actual de python: + +```bash +pyenv install 3.12.9 +``` + +👉 Asegúrate de que el comando se ejecute completamente y luego **reinicia tu terminal**. + +Remueve el ambiente virtual dedicado actual: + +```bash +pyenv virtualenv-delete lewagon_current +``` + +Crea un nuevo ambiente virtual: + +```bash +pyenv virtualenv 3.12.9 lewagon_current +``` + +Define el nuevo ambiente virtual como predeterminado: + +```bash +pyenv global lewagon_current +``` + +Ahora deberías poder ver que el nuevo ambiente virtual está activado: + +``` bash +pyenv versions +``` + +👉 Aquí hay una muestra del resultado: + +``` bash + system + 3.12.9 + 3.12.9/envs/lewagon_current + 3.7.6 + 3.7.6/envs/lewagon +* lewagon_current + lewagon +``` + +### Instalación de los paquetes del bootcamp + +```bash +pip install -U pip +``` + + + +``` bash +pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/specs/releases/linux.txt +``` + + + +## GCP + +Asegúrate de que el comando `gcloud` esté conectado con el email de tu cuenta Google Cloud Platform: + +``` bash +gcloud auth list +``` + +👉 Esto muestra los emails de tu cuenta GCP: + +``` bash + Credentialed Accounts +ACTIVE ACCOUNT +* your.email_address@your.email.provider + +To set the active account, run: + $ gcloud config set account `ACCOUNT` +``` + +Verifica el nombre de tu proyecto gcp: + +``` bash +gcloud config list +``` + +👉 Esto muestra tanto el email de tu cuenta GCP como tu proyecto GCP: + +``` bash +[core] +account = your.email_address@your.email.provider +disable_usage_reporting = True +project = your-gcp-project-id + +Your active configuration is: [default] +``` + +Verifica que el email creado para la cuenta de servicio permita que tu código se identifique con GCP: + +``` bash +gcloud iam service-accounts list +``` + +👉 Esto muestra el email de la cuenta de servicio en GCP que permite que tu código se identifique con GCP. + +``` bash +DISPLAY NAME EMAIL DISABLED +your-gcp-project-id your-service-account@your-service-account.iam.gserviceaccount.com False +``` + +Ve a [GCP IAM & Admin / Service Accounts](https://console.cloud.google.com/iam-admin/serviceaccounts): + +- Selecciona tu proyecto +- Haz clic en el email de la cuenta de servicio +- Ve a `PERMISSIONS` +- Asegúrate de que el email de la cuenta de servicio tenga un `Role` configurado como `Owner` + +Verifica que hayas configurado tu máquina para que permita que tu código se identifique con GCP. El archivo de claves json de las credenciales de la cuenta de servicio debe estar conectado al email de la cuenta de servicio correcto: + +``` bash +cat $GOOGLE_APPLICATION_CREDENTIALS +``` + +👉 Esto muestra el contenido de la clave json de las credenciales de la cuenta de servicio: + +``` bash +{ + "type": "service_account", + "project_id": "your-gcp-project-id", + "private_key_id": "a2d4a2d4a2d4a2d4a2d4a2d4a2d4a2d4a2d4a2d4", + "private_key": "-----BEGIN PRIVATE KEY-----\nMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInM=\n-----END PRIVATE KEY-----\n", + "client_email": "your-service-account@your-service-account.iam.gserviceaccount.com", + "client_id": "105410541054105410541", + "auth_uri": "https://accounts.google.com/o/oauth2/auth", + "token_uri": "https://oauth2.googleapis.com/token", + "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", + "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/your-service-account%40your-service-account.iam.gserviceaccount.com" +} +``` + +Asegúrate de que el archivo contenga: + +- el id el proyecto adecuado: your-gcp-project-id +- el email de la cuenta de servicio adecuado: your-service-account@your-service-account.iam.gserviceaccount.com + +👉 Si esto no muestra nada o si el email dentro del archivo no es el de tu cuenta de servicio, regresa al setup. + + +## Chequeo de la configuración de Python + +### Chequeo de Python y packages + +Reinicia tu terminal: + +```bash +cd ~/code && exec zsh +``` + +Verifica tu versión de Python con los siguientes comandos: + +```bash +zsh -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/python_checker.sh)" 3.12.9 +``` + +Ejecuta el comando siguiente para verificar que hayas instalado los paquetes requeridos correctamente: + +```bash +zsh -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/pip_check.sh)" +``` + +Ahora ejecuta el siguiente comando para verificar que puedas cargar estos paquetes: + +```bash +python -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/pip_check.py)" +``` + +### Chequeo de Jupyter + +Ahora verifica que puedas iniciar un servidor de notebook en tu máquina: + +```bash +jupyter notebook +``` + +Tu navegador web debería abrir en una ventana `jupyter`: + +![jupyter.png](images/jupyter.png) + +Haz clic en `New` y, en el menú desplegable, selecciona Python 3 (ipykernel): + +![jupyter_new.png](images/jupyter_new.png) + +Debería abrirse una pestaña en un nuevo notebook: + +![jupyter_notebook.png](images/jupyter_notebook.png) + +Asegúrate de que estés usando la versión correcta de python en el notebook. Abre una celda y ejecuta lo siguiente: + +``` python +import sys; sys.version +``` + +Debería mostrar `3.12.9` seguido de algunos detalles adicionales. Si no es así, consulta con un TA. + +Puedes cerrar tu navegador web y luego cerrar el servidor jupyter con `CTRL` + `C`. + +¡Listo! Ya tienes un virtual env de python completo con todos los paquetes tercerizados que necesitarás en el bootcamp. + + diff --git a/WINDOWS_keep_current.md b/WINDOWS_keep_current.md index ef9d520..9f15539 100644 --- a/WINDOWS_keep_current.md +++ b/WINDOWS_keep_current.md @@ -87,10 +87,12 @@ type -a pyenv > /dev/null && eval "$(pyenv init --path)" Update pyenv : + ``` bash cd $(pyenv root) && git pull ``` + Install the current python version : ```bash @@ -141,10 +143,14 @@ pyenv versions pip install -U pip ``` + + ``` bash pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/specs/releases/linux.txt ``` + + ## GCP Make sure that the `gcloud` command is linked to the email address of your Google Cloud Platform account : @@ -231,6 +237,7 @@ Make sure that the file contains the correct : 👉 If this does not display anything or if the email inside of the file is not the one of your service account, go back to the setup + ## Python setup check ### Python and packages check @@ -290,3 +297,5 @@ It should output `3.12.9` followed by some more details. If not, check with a TA You can close your web browser then terminate the jupyter server with `CTRL` + `C`. Here you have it! A complete python virtual env with all the third-party packages you'll need for the whole bootcamp. + + diff --git a/_partials/conda_uninstall.md b/_partials/conda_uninstall.md index cb967a2..e16c91b 100644 --- a/_partials/conda_uninstall.md +++ b/_partials/conda_uninstall.md @@ -10,15 +10,13 @@ Check if you have `conda` installed on your machine: conda list ``` -$MAC_START +{% if os == "macos" %} If you have `zsh: command not found: conda`, you can **skip** the uninstall of `conda` and jump to the **Install pre-requisites** section. -$MAC_END -$LINUX_START +{% elsif os == "linux" %} If you have `zsh: command not found: conda`, you can **skip** the uninstall of `conda` and jump to the **Install `pyenv`** section. -$LINUX_END -$WINDOWS_START +{% elsif os == "windows" %} If you have `zsh: command not found: conda`, you can **skip** the uninstall of `conda` and jump to the **Install `pyenv`** section. -$WINDOWS_END +{% endif %}
conda uninstall instructions @@ -36,20 +34,19 @@ anaconda-clean --yes rm -rf ~/anaconda2 rm -rf ~/anaconda3 rm -rf ~/.anaconda_backup -$MAC_START +{% if os == "macos" %} rm -rf ~/opt -$MAC_END +{% endif %} ``` - Remove Anaconda path from your `.bash_profile` - Open the file with `code ~/.bash_profile` - If the file opens find the line matching the following pattern `export PATH="/path/to/anaconda3/bin:$PATH"` and delete the line -$MAC_START +{% if os == "macos" %} - Save the file with `CMD` + `s` -$MAC_END -$LINUX_START +{% elsif os == "linux" %} - Save the file with `CTRL` + `s` -$LINUX_END +{% endif %} - Restart your terminal with `exec zsh` - Remove Anaconda initialization from your `.zshrc`: - Open the file with `code ~/.zshrc` diff --git a/_partials/direnv.md b/_partials/direnv.md index 3f54c9a..2e43422 100644 --- a/_partials/direnv.md +++ b/_partials/direnv.md @@ -2,27 +2,19 @@ [direnv](https://direnv.net/) is a shell extension. It makes it easy to deal with per project environment variables. This will be useful in order to customize the behavior of your code. -$MAC_START - +{% if os == "macos" %} ``` bash brew install direnv echo 'eval "$(direnv hook zsh)"' >> ~/.zshrc ``` - -$MAC_END -$WINDOWS_START - +{% elsif os == "windows" %} ``` bash sudo apt-get update; sudo apt-get install direnv echo 'eval "$(direnv hook zsh)"' >> ~/.zshrc ``` - -$WINDOWS_END -$LINUX_START - +{% elsif os == "linux" %} ``` bash sudo apt-get update; sudo apt-get install direnv echo 'eval "$(direnv hook zsh)"' >> ~/.zshrc ``` - -$LINUX_END +{% endif %} diff --git a/_partials/dotfiles_merge_upstream.md b/_partials/dotfiles_merge_upstream.md index 3f0efb4..96b5228 100644 --- a/_partials/dotfiles_merge_upstream.md +++ b/_partials/dotfiles_merge_upstream.md @@ -30,11 +30,11 @@ Time to merge the changes from `lewagon/dotfiles` into yours: First abort the merge: `git merge --abort`. - Run ` .` + Run `{{ CODE_EDITOR_CMD }} .` - In , open the `zshrc` file. Replace its content with the [newest version](https://raw.githubusercontent.com/lewagon/dotfiles/master/zshrc). Save to disk. + In {{ CODE_EDITOR }}, open the `zshrc` file. Replace its content with the [newest version](https://raw.githubusercontent.com/lewagon/dotfiles/master/zshrc). Save to disk. - Still in , open the `zprofile` file. Replace its content with the [newest version](https://raw.githubusercontent.com/lewagon/dotfiles/master/zprofile). Save to disk. + Still in {{ CODE_EDITOR }}, open the `zprofile` file. Replace its content with the [newest version](https://raw.githubusercontent.com/lewagon/dotfiles/master/zprofile). Save to disk. Back in the terminal, run a `git diff` and check if this didn't remove any personal configuration setting that you wanted to keep. diff --git a/_partials/es/conda_uninstall.md b/_partials/es/conda_uninstall.md index a61aa84..72dbaa7 100644 --- a/_partials/es/conda_uninstall.md +++ b/_partials/es/conda_uninstall.md @@ -9,15 +9,13 @@ Chequea si tienes `conda` instalado en tu computadora: ```bash conda list ``` -$MAC_START +{% if os == "macos" %} Si aparece `zsh: command not found: conda`, puedes **saltear** la desinstalación de `conda` e ir directo a la sección de **Instalar pre-requisitos**. -$MAC_END -$LINUX_START +{% elsif os == "linux" %} Si aparece `zsh: command not found: conda`, puedes **saltear** la desinstalación de `conda` e ir directo a la sección de **Instalar pre-requisitos**. -$LINUX_END -$WINDOWS_START +{% elsif os == "windows" %} Si aparece `zsh: command not found: conda`, puedes **saltear** la desinstalación de `conda` e ir directo a la sección de **Instalar pre-requisitos**. -$WINDOWS_END +{% endif %}
Instrucciones de desinstalación conda @@ -32,19 +30,18 @@ anaconda-clean --yes rm -rf ~/anaconda2 rm -rf ~/anaconda3 rm -rf ~/.anaconda_backup -$MAC_START +{% if os == "macos" %} rm -rf ~/opt -$MAC_END +{% endif %} ``` - Elimina el directorio Anaconda de tu `.bash_profile` - Abre el archivo con `code ~/.bash_profile` - Si el archivo abre, busca la línea que coincida con el siguiente patrón `export PATH="/path/to/anaconda3/bin:$PATH"` y eliminala -$MAC_START +{% if os == "macos" %} - Guarda el archivo con `CMD` + `s` -$MAC_END -$LINUX_START +{% elsif os == "linux" %} - Guarda el archivo con `CTRL` + `s` -$LINUX_END +{% endif %} - Reinicia la terminal con `exec zsh` - Remueve la inicializaciópn de Anaconda de tu `.zshrc`: - Abre el archivo con `code ~/.zshrc` diff --git a/_partials/es/direnv.md b/_partials/es/direnv.md index 28901f9..989ab65 100644 --- a/_partials/es/direnv.md +++ b/_partials/es/direnv.md @@ -2,21 +2,19 @@ [direnv](https://direnv.net/) es una extensión del shell. Facilita trabajar con variables de entorno por proyecto, lo cual será útil para customizar el comportamiento de tu código. -$MAC_START +{% if os == "macos" %} ``` bash brew install direnv echo 'eval "$(direnv hook zsh)"' >> ~/.zshrc ``` -$MAC_END -$WINDOWS_START +{% elsif os == "windows" %} ``` bash sudo apt-get update; sudo apt-get install direnv echo 'eval "$(direnv hook zsh)"' >> ~/.zshrc ``` -$WINDOWS_END -$LINUX_START +{% elsif os == "linux" %} ``` bash sudo apt-get update; sudo apt-get install direnv echo 'eval "$(direnv hook zsh)"' >> ~/.zshrc ``` -$LINUX_END +{% endif %} diff --git a/_partials/es/dotfiles_merge_upstream.md b/_partials/es/dotfiles_merge_upstream.md index 9a26397..014bc39 100644 --- a/_partials/es/dotfiles_merge_upstream.md +++ b/_partials/es/dotfiles_merge_upstream.md @@ -29,11 +29,11 @@ Es hora de fusionar los cambios de lewagon/dotfiles en los tuyos: Primero aborta la merge: `git merge --abort`. - Ejecuta ` .` + Ejecuta `{{ CODE_EDITOR_CMD }} .` - En , abre el archivo zshrc. Reemplaza su contenido con la [versión más reciente](https://raw.githubusercontent.com/lewagon/dotfiles/master/zshrc). Luego guárdalo en el disco. + En {{ CODE_EDITOR }}, abre el archivo zshrc. Reemplaza su contenido con la [versión más reciente](https://raw.githubusercontent.com/lewagon/dotfiles/master/zshrc). Luego guárdalo en el disco. - Aún en , abre el archivo `zprofile`. Reemplaza su contenido con la [versión más reciente](https://raw.githubusercontent.com/lewagon/dotfiles/master/zprofile). Luego guárdalo en el disco. + Aún en {{ CODE_EDITOR }}, abre el archivo `zprofile`. Reemplaza su contenido con la [versión más reciente](https://raw.githubusercontent.com/lewagon/dotfiles/master/zprofile). Luego guárdalo en el disco. Regresa a la terminal y ejecuta un `git diff` y verifica que esto no haya eliminado ninguna configuración personal que quisieras conservar. diff --git a/_partials/es/keep_current.md b/_partials/es/keep_current.md index bd995d5..fe56bc5 100644 --- a/_partials/es/keep_current.md +++ b/_partials/es/keep_current.md @@ -87,32 +87,24 @@ type -a pyenv > /dev/null && eval "$(pyenv init --path)" Actualiza pyenv: -$MAC_START - +{% if os == "macos" %} ``` bash brew update && brew upgrade pyenv ``` - -$MAC_END -$LINUX_START - +{% elsif os == "linux" %} ``` bash cd $(pyenv root) && git pull ``` - -$LINUX_END -$WINDOWS_START - +{% elsif os == "windows" %} ``` bash cd $(pyenv root) && git pull ``` - -$WINDOWS_END +{% endif %} Instala la versión actual de python: ```bash -pyenv install +pyenv install {{ PYTHON_VERSION }} ``` 👉 Asegúrate de que el comando se ejecute completamente y luego **reinicia tu terminal**. @@ -126,7 +118,7 @@ pyenv virtualenv-delete lewagon_current Crea un nuevo ambiente virtual: ```bash -pyenv virtualenv lewagon_current +pyenv virtualenv {{ PYTHON_VERSION }} lewagon_current ``` Define el nuevo ambiente virtual como predeterminado: @@ -145,8 +137,8 @@ pyenv versions ``` bash system - - /envs/lewagon_current + {{ PYTHON_VERSION }} + {{ PYTHON_VERSION }}/envs/lewagon_current 3.7.6 3.7.6/envs/lewagon * lewagon_current @@ -159,7 +151,7 @@ pyenv versions pip install -U pip ``` -$MAC_START +{% if os == "macos" %} Si tu computadora usa **Apple Silicon**, expande el párrafo de abajo y léelo. Si no es el caso, ignóralo.
@@ -181,21 +173,19 @@ pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/ma ```
-$MAC_END -$WINDOWS_START +{% elsif os == "windows" %} ``` bash pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/specs/releases/linux.txt ``` -$WINDOWS_END -$LINUX_START +{% elsif os == "linux" %} ``` bash pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/specs/releases/linux.txt ``` -$LINUX_END +{% endif %} ## GCP diff --git a/_partials/es/osx_python.md b/_partials/es/osx_python.md index 7bcafb0..1bd2366 100644 --- a/_partials/es/osx_python.md +++ b/_partials/es/osx_python.md @@ -36,7 +36,7 @@ exec zsh Instala la [última versión estable de Python](https://www.python.org/doc/versions/) aceptada en el currículum de Le Wagon: ```bash -pyenv install +pyenv install {{ PYTHON_VERSION }} ``` Este comando puede tomar un tiempo en ejecutarse. Esto es completamente normal. ¡No dudes en ayudar a los estudiantes que estén sentados cerca de ti! @@ -61,7 +61,7 @@ export CPPFLAGS="-I/usr/local/opt/zlib/include" Luego trata de instalar Python nuevamente: ```bash -pyenv install +pyenv install {{ PYTHON_VERSION }} ``` Es posible que aparezca otro error relacionado con `bzip2`. Esto lo puedes ignorar y continuar al paso siguiente. @@ -72,8 +72,8 @@ Es posible que aparezca otro error relacionado con `bzip2`. Esto lo puedes ignor OK. Cuando este comando termine de ejecutarse, le diremos al sistema que use esta versión de Python **por defecto**. Esto se hace con: ```bash -pyenv global +pyenv global {{ PYTHON_VERSION }} exec zsh ``` -Para verificar si esto ha funcionado, ejecuta `python --version`. Si ves ``, ¡todo está bien! Si no, pídele ayuda a un TA para resolver el problema por medio `pyenv versions` y `type -a python` (`python` debería estar usando la versión `.pyenv/shims` de primero). +Para verificar si esto ha funcionado, ejecuta `python --version`. Si ves `{{ PYTHON_VERSION }}`, ¡todo está bien! Si no, pídele ayuda a un TA para resolver el problema por medio `pyenv versions` y `type -a python` (`python` debería estar usando la versión `.pyenv/shims` de primero). diff --git a/_partials/es/pip.md b/_partials/es/pip.md index 0b51906..06032ce 100644 --- a/_partials/es/pip.md +++ b/_partials/es/pip.md @@ -10,7 +10,7 @@ pip install --upgrade pip Ahora instala algunos paquetes para las primeras semanas del programa: -$MAC_START +{% if os == "macos" %} Si tu computadora usa **Apple Silicon**, expande el párrafo de abajo y léelo. Si no es el caso, ignóralo.
@@ -32,18 +32,16 @@ pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/ma ```
-$MAC_END -$WINDOWS_START +{% elsif os == "windows" %} ``` bash pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/specs/releases/linux.txt ``` -$WINDOWS_END -$LINUX_START +{% elsif os == "linux" %} ``` bash pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/specs/releases/linux.txt ``` -$LINUX_END +{% endif %} diff --git a/_partials/es/python_checkup.md b/_partials/es/python_checkup.md index cef2eea..f204422 100644 --- a/_partials/es/python_checkup.md +++ b/_partials/es/python_checkup.md @@ -11,19 +11,19 @@ cd ~/code && exec zsh Verifica tu versión de Python con los siguientes comandos: ```bash -zsh -c "$(curl -fsSL )" +zsh -c "$(curl -fsSL {{ PYTHON_CHECKER_URL }})" {{ PYTHON_VERSION }} ``` Ejecuta el comando siguiente para verificar que hayas instalado los paquetes requeridos correctamente: ```bash -zsh -c "$(curl -fsSL )" +zsh -c "$(curl -fsSL {{ PIP_CHECKER_URL }})" ``` Ahora ejecuta el siguiente comando para verificar que puedas cargar estos paquetes: ```bash -python -c "$(curl -fsSL )" +python -c "$(curl -fsSL {{ PIP_LOADER_URL }})" ``` ### Chequeo de Jupyter @@ -52,7 +52,7 @@ Asegúrate de que estés usando la versión correcta de python en el notebook. A import sys; sys.version ``` -Debería mostrar `` seguido de algunos detalles adicionales. Si no es así, consulta con un TA. +Debería mostrar `{{ PYTHON_VERSION }}` seguido de algunos detalles adicionales. Si no es así, consulta con un TA. Puedes cerrar tu navegador web y luego cerrar el servidor jupyter con `CTRL` + `C`. diff --git a/_partials/es/ubuntu_python.md b/_partials/es/ubuntu_python.md index a2ffa5f..1a90ee9 100644 --- a/_partials/es/ubuntu_python.md +++ b/_partials/es/ubuntu_python.md @@ -23,7 +23,7 @@ python3-dev Instala la [última versión estable de Python](https://www.python.org/doc/versions/) que sea aceptada en el currículum de Le Wagon: ```bash -pyenv install +pyenv install {{ PYTHON_VERSION }} ``` Este comando puede tomar un tiempo en ejecutarse. Esto es completamente normal. ¡No dudes en ayudar a los estudiantes que estén sentados cerca de ti! @@ -31,8 +31,8 @@ Este comando puede tomar un tiempo en ejecutarse. Esto es completamente normal. OK. Cuando este comando termine de ejecutarse, le diremos al sistema que use esta versión de Python **por defecto**. Esto se hace con: ```bash -pyenv global +pyenv global {{ PYTHON_VERSION }} exec zsh ``` -Para verificar que esto haya funcionado, ejecuta `python --version`. Si ves ``, ¡todo está bien! Si no, pídele ayuda a un TA para resolver el problema por medio de `versiones de pyenv` y `type -a python` (`python` debería estar usando la versión `.pyenv/shims` de primero). +Para verificar que esto haya funcionado, ejecuta `python --version`. Si ves `{{ PYTHON_VERSION }}`, ¡todo está bien! Si no, pídele ayuda a un TA para resolver el problema por medio de `versiones de pyenv` y `type -a python` (`python` debería estar usando la versión `.pyenv/shims` de primero). diff --git a/_partials/es/virtualenv.md b/_partials/es/virtualenv.md index 577d67f..1f00a28 100644 --- a/_partials/es/virtualenv.md +++ b/_partials/es/virtualenv.md @@ -14,7 +14,7 @@ exec zsh Crea el entorno virtual que usaremos durante todo el bootcamp: ```bash -pyenv virtualenv lewagon +pyenv virtualenv {{ PYTHON_VERSION }} lewagon ``` Define el entorno virtual con lo siguiente: diff --git a/_partials/gcp_setup.md b/_partials/gcp_setup.md index d6cda79..2591573 100644 --- a/_partials/gcp_setup.md +++ b/_partials/gcp_setup.md @@ -127,27 +127,19 @@ Once the verification goes through, you should receive an email stating that "Yo - Authenticate the `gcloud` CLI with the google account you used for GCP -$MAC_START - +{% if os == "macos" %} ```bash gcloud auth login ``` - -$MAC_END -$LINUX_START - +{% elsif os == "linux" %} ```bash gcloud auth login ``` - -$LINUX_END -$WINDOWS_START - +{% elsif os == "windows" %} ```bash gcloud auth login --no-launch-browser ``` - -$WINDOWS_END +{% endif %} - Login to your Google account on the new tab opened in your web browser - List your active account and check your email address you used for GCP is present diff --git a/_partials/keep_current.md b/_partials/keep_current.md index dc4cd58..70a9710 100644 --- a/_partials/keep_current.md +++ b/_partials/keep_current.md @@ -87,32 +87,24 @@ type -a pyenv > /dev/null && eval "$(pyenv init --path)" Update pyenv : -$MAC_START - +{% if os == "macos" %} ``` bash brew update && brew upgrade pyenv ``` - -$MAC_END -$LINUX_START - +{% elsif os == "linux" %} ``` bash cd $(pyenv root) && git pull ``` - -$LINUX_END -$WINDOWS_START - +{% elsif os == "windows" %} ``` bash cd $(pyenv root) && git pull ``` - -$WINDOWS_END +{% endif %} Install the current python version : ```bash -pyenv install +pyenv install {{ PYTHON_VERSION }} ``` 👉 Make sure that the command completes correctly and **restart your terminal** @@ -126,7 +118,7 @@ pyenv virtualenv-delete lewagon_current Create a new virtual environment : ```bash -pyenv virtualenv lewagon_current +pyenv virtualenv {{ PYTHON_VERSION }} lewagon_current ``` Set the new virtual environment as default : @@ -145,8 +137,8 @@ pyenv versions ``` bash system - - /envs/lewagon_current + {{ PYTHON_VERSION }} + {{ PYTHON_VERSION }}/envs/lewagon_current 3.10.6 3.10.6/envs/lewagon * lewagon_current @@ -159,7 +151,7 @@ pyenv versions pip install -U pip ``` -$MAC_START +{% if os == "macos" %} If your computer uses **Apple Silicon**, expand the paragraph below and go through it. Otherwise ignore it.
@@ -181,21 +173,19 @@ pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/ma ```
-$MAC_END -$WINDOWS_START +{% elsif os == "windows" %} ``` bash pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/specs/releases/linux.txt ``` -$WINDOWS_END -$LINUX_START +{% elsif os == "linux" %} ``` bash pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/specs/releases/linux.txt ``` -$LINUX_END +{% endif %} ## GCP diff --git a/_partials/osx_python.md b/_partials/osx_python.md index dc60d9b..2ffe182 100644 --- a/_partials/osx_python.md +++ b/_partials/osx_python.md @@ -36,7 +36,7 @@ exec zsh Let's install the [latest stable version of Python](https://www.python.org/doc/versions/) supported by Le Wagon's curriculum: ```bash -pyenv install +pyenv install {{ PYTHON_VERSION }} ``` This command might take a while, this is perfectly normal. Don't hesitate to help other students seated next to you! @@ -53,7 +53,7 @@ source ~/.zprofile Then try to install Python again: ```bash -pyenv install +pyenv install {{ PYTHON_VERSION }} ``` If `pyenv` is still not found, contact a teacher. @@ -80,7 +80,7 @@ export CPPFLAGS="-I/usr/local/opt/zlib/include" Then try to install Python again: ```bash -pyenv install +pyenv install {{ PYTHON_VERSION }} ``` It could raise another error about `bzip2`, you can ignore it and continue to the next step. @@ -91,8 +91,8 @@ It could raise another error about `bzip2`, you can ignore it and continue to th OK once this command is complete, we are going to tell the system to use this version of Python **by default**. This is done with: ```bash -pyenv global +pyenv global {{ PYTHON_VERSION }} exec zsh ``` -To check if this worked, run `python --version`. If you see ``, perfect! If not, ask a TA that will help you debug the problem thanks to `pyenv versions` and `type -a python` (`python` should be using the `.pyenv/shims` version first). +To check if this worked, run `python --version`. If you see `{{ PYTHON_VERSION }}`, perfect! If not, ask a TA that will help you debug the problem thanks to `pyenv versions` and `type -a python` (`python` should be using the `.pyenv/shims` version first). diff --git a/_partials/pip.md b/_partials/pip.md index 1bfff4a..0d1d28c 100644 --- a/_partials/pip.md +++ b/_partials/pip.md @@ -10,7 +10,7 @@ pip install --upgrade pip Then let's install some packages for the first weeks of the program: -$MAC_START +{% if os == "macos" %} If your computer uses **Apple Silicon**, expand the paragraph below and go through it. Otherwise ignore it.
@@ -32,18 +32,16 @@ pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/ma ```
-$MAC_END -$WINDOWS_START +{% elsif os == "windows" %} ``` bash pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/specs/releases/linux.txt ``` -$WINDOWS_END -$LINUX_START +{% elsif os == "linux" %} ``` bash pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/specs/releases/linux.txt ``` -$LINUX_END +{% endif %} diff --git a/_partials/python_checkup.md b/_partials/python_checkup.md index 43b7515..aa2bf61 100644 --- a/_partials/python_checkup.md +++ b/_partials/python_checkup.md @@ -11,19 +11,19 @@ cd ~/code && exec zsh Check your Python version with the following commands: ```bash -zsh -c "$(curl -fsSL )" +zsh -c "$(curl -fsSL {{ PYTHON_CHECKER_URL }})" {{ PYTHON_VERSION }} ``` Run the following command to check if you successfully installed the required packages: ```bash -zsh -c "$(curl -fsSL )" +zsh -c "$(curl -fsSL {{ PIP_CHECKER_URL }})" ``` Now run the following command to check if you can load these packages: ```bash -python -c "$(curl -fsSL )" +python -c "$(curl -fsSL {{ PIP_LOADER_URL }})" ``` ### Jupyter check @@ -52,7 +52,7 @@ Make sure that you are running the correct python version in the notebook. Open import sys; sys.version ``` -It should output `` followed by some more details. If not, check with a TA. +It should output `{{ PYTHON_VERSION }}` followed by some more details. If not, check with a TA. You can close your web browser then terminate the jupyter server with `CTRL` + `C`. diff --git a/_partials/ubuntu_python.md b/_partials/ubuntu_python.md index 63736dc..6d8b760 100644 --- a/_partials/ubuntu_python.md +++ b/_partials/ubuntu_python.md @@ -23,7 +23,7 @@ python3-dev Let's install the [latest stable version of Python](https://www.python.org/doc/versions/) supported by Le Wagon's curriculum: ```bash -pyenv install +pyenv install {{ PYTHON_VERSION }} ``` This command might take a while, this is perfectly normal. Don't hesitate to help other students seated next to you! @@ -40,7 +40,7 @@ source ~/.zprofile Then try to install Python again: ```bash -pyenv install +pyenv install {{ PYTHON_VERSION }} ``` If `pyenv` is still not found, contact a teacher. @@ -51,8 +51,8 @@ If `pyenv` is still not found, contact a teacher. OK once this command is complete, we are going to tell the system to use this version of Python **by default**. This is done with: ```bash -pyenv global +pyenv global {{ PYTHON_VERSION }} exec zsh ``` -To check if this worked, run `python --version`. If you see ``, perfect! If not, ask a TA that will help you debug the problem thanks to `pyenv versions` and `type -a python` (`python` should be using the `.pyenv/shims` version first). +To check if this worked, run `python --version`. If you see `{{ PYTHON_VERSION }}`, perfect! If not, ask a TA that will help you debug the problem thanks to `pyenv versions` and `type -a python` (`python` should be using the `.pyenv/shims` version first). diff --git a/_partials/virtualenv.md b/_partials/virtualenv.md index e7b9ca1..87a8142 100644 --- a/_partials/virtualenv.md +++ b/_partials/virtualenv.md @@ -14,7 +14,7 @@ exec zsh Let's create the virtual environment we are going to use during the whole bootcamp: ```bash -pyenv virtualenv lewagon +pyenv virtualenv {{ PYTHON_VERSION }} lewagon ``` Let's now set the virtual environment with: diff --git a/build.rb b/build.rb index 701d8d4..34c1e61 100755 --- a/build.rb +++ b/build.rb @@ -1,260 +1,80 @@ -require 'open-uri' #!/usr/bin/env ruby -wU -CONSTANTS = { - 'PYTHON_VERSION' => '3.12.9', - 'PYTHON_CHECKER_URL' => 'https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/python_checker.sh', - 'PIP_CHECKER_URL' => 'https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/pip_check.sh', - 'PIP_LOADER_URL' => 'https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/pip_check.py', - 'CODE_EDITOR' => 'VS Code', - 'CODE_EDITOR_CMD' => 'code' -} - -# NOTE(ssaunier): This script needs https://github.com/lewagon/setup to be cloned as well -MAC_OS = %w[ - intro - setup/github - osx_silicon - setup/macos_command_line_tools - homebrew - setup/macos_vscode - vscode_extensions - setup/oh_my_zsh - direnv - setup/gh_cli - dotfiles - dotfiles_new_student - dotfiles_new_laptop - dotfiles_merge_upstream - dotfiles_same_laptop - dotfiles_merge_upstream - dotfiles_installer - conda_uninstall - osx_python - virtualenv - pip - nbextensions - python_checkup - insomnia - gcp_cli_setup - gcp_setup - gcp_setup_mid - gcp_setup_end - kitt - setup/macos_slack - setup/slack_settings - setup/macos_settings - bonus -].freeze - -MAC_OS_KC = %w[ - keep_current - python_checkup -].freeze - -WINDOWS = %w[ - intro - setup/github - setup/windows_version - setup/windows_virtualization - setup/windows_wsl - setup/windows_ubuntu - setup/windows_vscode - setup/windows_terminal - vscode_extensions - setup/cli_tools - setup/oh_my_zsh - windows_browser - direnv - setup/gh_cli - ubuntu_gcloud - dotfiles - dotfiles_new_student - dotfiles_new_laptop - dotfiles_merge_upstream - dotfiles_same_laptop - dotfiles_merge_upstream - dotfiles_installer - setup/ssh_agent - conda_uninstall - ubuntu_python - virtualenv - pip - nbextensions - win_jupyter - python_checkup - insomnia - setup/windows_settings - win_vs_redistributable - gcp_setup - gcp_setup_wsl - gcp_setup_end - kitt - setup/windows_slack - setup/slack_settings - bonus -].freeze - -WINDOWS_KC = %w[ - keep_current - python_checkup -].freeze - -LINUX = %w[ - intro - setup/github - setup/ubuntu_vscode - vscode_extensions - setup/cli_tools - setup/oh_my_zsh - direnv - setup/gh_cli - ubuntu_gcloud - dotfiles - dotfiles_new_student - dotfiles_new_laptop - dotfiles_merge_upstream - dotfiles_same_laptop - dotfiles_merge_upstream - dotfiles_installer - setup/ssh_agent - conda_uninstall - ubuntu_python - virtualenv - pip - nbextensions - python_checkup - insomnia - gcp_setup - gcp_setup_linux - gcp_setup_end - kitt - setup/ubuntu_slack - setup/slack_settings - bonus -] -LINUX_KC = %w[ - keep_current - python_checkup -] - -VM = %w[ - intro - setup/github - de_setup/ssh_key - de_setup/gcp_setup - de_setup/virtual_machine - de_setup/win_vscode - de_setup/vscode_remote_ssh - vscode_extensions - setup/cli_tools - setup/oh_my_zsh - direnv - setup/gh_cli - de_setup/ubuntu_gcloud - de_setup/gcp_setup_linux - dotfiles - dotfiles_new_student - dotfiles_new_laptop - dotfiles_merge_upstream - dotfiles_same_laptop - dotfiles_merge_upstream - dotfiles_installer - de_setup/zsh_default_terminal - setup/ssh_agent - ubuntu_python - virtualenv - pip - nbextensions - python_checkup - kitt - setup/windows_slack - setup/slack_settings - bonus -] +require 'open-uri' +require 'liquid' +require 'yaml' -LOCALES = ["", "es"] # english + spanish locales +REPOS_CFG = YAML.load_file('constants/repos.yml').freeze -FILENAMES = { - "WINDOWS" => ["WINDOWS", WINDOWS], - "macOS" => ["macOS", MAC_OS], - "LINUX" => ["LINUX", LINUX], - "WINDOWS_keep_current" => ["WINDOWS", WINDOWS_KC], - "macOS_keep_current" => ["macOS", MAC_OS_KC], - "LINUX_keep_current" => ["LINUX", LINUX_KC], - "VM" => ["VM", VM] -} +def load_remote_partial(repo, name, locale) + repo = REPOS_CFG.dig('aliases', repo) || repo + branch = REPOS_CFG.dig('branches', repo) || 'main' + path = locale == 'en' ? name : "#{locale}/#{name}" + base_url = "https://github.com/lewagon/#{repo}/blob/#{branch}" + content = URI.open("https://raw.githubusercontent.com/lewagon/#{repo}/#{branch}/_partials/#{path}.md").read + content.scan(/\!\[.*\]\((.*)\)/).flatten + .reject { |ip| ip.start_with?("http") } + .each { |ip| content.gsub!(ip, "#{base_url}/#{ip}") } + content.scan(/src="(images\/.*)"/).flatten + .each { |ip| content.gsub!(ip, "#{base_url}/#{ip}") } + content +end -DELIMITERS = { - "WINDOWS" => ["\\$WINDOWS_START\n", "\\$WINDOWS_END\n"], - "macOS" => ["\\$MAC_START\n", "\\$MAC_END\n"], - "LINUX" => ["\\$LINUX_START\n", "\\$LINUX_END\n"], - "VM" => ["\\$LINUX_START\n", "\\$LINUX_END\n"] -} +def load_local_partial(name, locale) + path = locale == 'en' ? "_partials/#{name}.md" : "_partials/#{locale}/#{name}.md" + File.read(path, encoding: "utf-8") +end def load_partial(partial, locale) - match_setup = partial.match(/setup\/(?[0-9a-z_]+)/) - match_de_setup = partial.match(/de_setup\/(?[0-9a-z_]+)/) - if match_de_setup - partial = match_de_setup[:partial] - elsif match_setup - partial = match_setup[:partial] - end - partial = File.join(locale, partial) unless locale.empty? - file = File.join("_partials", "#{partial}.md") - if match_de_setup - content = URI.open(File.join("https://raw.githubusercontent.com/lewagon/data-engineering-setup/main", file)) - .read - # replace data-setup repo relative path by data-engineering-setup repo URL - image_paths = content.scan(/\!\[.*\]\((.*)\)/).flatten - image_paths.each { |ip| content.gsub!(ip, "https://github.com/lewagon/data-engineering-setup/blob/main/#{ip}")} - # alternative image format - image_paths = content.scan(/src="(images\/.*)"/).flatten - image_paths.each { |ip| content.gsub!(ip, "https://github.com/lewagon/data-engineering-setup/blob/main/#{ip}")} - elsif match_setup - content = URI.open(File.join("https://raw.githubusercontent.com/lewagon/setup/master", file)) - .read - # replace data-setup repo relative path by setup repo URL - image_paths = content.scan(/\!\[.*\]\((.*)\)/).flatten - image_paths.each { |ip| content.gsub!(ip, "https://github.com/lewagon/setup/blob/master/#{ip}")} + if (m = partial.match(%r{\A(?[a-z][a-z0-9_-]*)/(?[a-z0-9_]+)\z})) + load_remote_partial(m[:repo], m[:name], locale) else - content = File.read(file, encoding: "utf-8") + load_local_partial(partial, locale) end - return content end -# load partials -loaded = FILENAMES.map { |filename, (os_name, partials)| partials }.flatten.uniq -loaded = loaded.map { |partial| LOCALES.map { |locale| [partial, locale]} }.flatten(1) -loaded = loaded.map { |partial, locale| ["#{partial}.#{locale}", load_partial(partial, locale)] }.to_h +def partial_name(entry) = entry.is_a?(Array) ? entry[0] : entry +def partial_vars(entry) = entry.is_a?(Array) ? entry[1] : {} -# write files -LOCALES.each do |locale| - FILENAMES.each do |filename, (os_name, partials)| - filename += ".#{locale}" unless locale.empty? - filename += ".md" - File.open(filename, "w:utf-8") do |f| - partials.each do |partial| - content = loaded["#{partial}.#{locale}"].clone - # remove the OS dependant blocks - removed_blocks = DELIMITERS.keys - [os_name] - removed_blocks = removed_blocks - ["LINUX"] if os_name == "VM" - removed_blocks = removed_blocks - ["VM"] if os_name == "LINUX" - removed_blocks.each do |block| - delimiter_start, delimiter_end = DELIMITERS[block] - pattern = "#{delimiter_start}(.|\n)*?(?", value) +def collect_partials(builds) + builds.flat_map { |_filename, build| + build[:locales].flat_map { |locale| + build[:partials].map { |e| [partial_name(e), locale] } + } + }.uniq.map { |partial, locale| + ["#{partial}.#{locale}", load_partial(partial, locale)] + }.to_h +end + +def render_content(content, os_name, variables) + Liquid::Template.parse(content).render(variables.merge('os' => os_name)) +end + +def generate_files(loaded, builds, constants) + builds.each do |filename, build| + build[:locales].each do |locale| + output = locale == 'en' ? "#{filename}.md" : "#{filename}.#{locale}.md" + + File.open(output, "w:utf-8") do |f| + build[:partials].each do |entry| + content = loaded["#{partial_name(entry)}.#{locale}"].clone + variables = constants.merge(partial_vars(entry)) + f << render_content(content, build[:os], variables) + f << "\n\n" end - f << content - f << "\n\n" end end end end + +builds = Dir['builds/*.yml'].map { |f| + name = File.basename(f, '.yml') + data = YAML.load_file(f) + [name, { os: data['os'], locales: data['locales'], partials: data['partials'] }] +}.to_h.freeze + +loaded = collect_partials(builds) + +constants = YAML.load_file('constants/constants.yml').freeze + +generate_files(loaded, builds, constants) diff --git a/builds/LINUX.yml b/builds/LINUX.yml new file mode 100644 index 0000000..3f48e09 --- /dev/null +++ b/builds/LINUX.yml @@ -0,0 +1,35 @@ + +os: linux +locales: [en, es] +partials: + - intro + - setup/github + - setup/ubuntu_vscode + - vscode_extensions + - setup/cli_tools + - setup/oh_my_zsh + - direnv + - setup/gh_cli + - ubuntu_gcloud + - dotfiles + - dotfiles_new_student + - dotfiles_new_laptop + - dotfiles_merge_upstream + - dotfiles_same_laptop + - dotfiles_merge_upstream + - dotfiles_installer + - setup/ssh_agent + - conda_uninstall + - ubuntu_python + - virtualenv + - pip + - nbextensions + - python_checkup + - insomnia + - gcp_setup + - gcp_setup_linux + - gcp_setup_end + - kitt + - setup/ubuntu_slack + - setup/slack_settings + - bonus diff --git a/builds/LINUX_keep_current.yml b/builds/LINUX_keep_current.yml new file mode 100644 index 0000000..a11a636 --- /dev/null +++ b/builds/LINUX_keep_current.yml @@ -0,0 +1,6 @@ + +os: linux +locales: [en, es] +partials: + - keep_current + - python_checkup diff --git a/builds/VM.yml b/builds/VM.yml new file mode 100644 index 0000000..9887e56 --- /dev/null +++ b/builds/VM.yml @@ -0,0 +1,36 @@ + +os: linux +locales: [en, es] +partials: + - intro + - setup/github + - de_setup/ssh_key + - de_setup/gcp_setup + - de_setup/virtual_machine + - de_setup/win_vscode + - de_setup/vscode_remote_ssh + - vscode_extensions + - setup/cli_tools + - setup/oh_my_zsh + - direnv + - setup/gh_cli + - de_setup/ubuntu_gcloud + - de_setup/gcp_setup_linux + - dotfiles + - dotfiles_new_student + - dotfiles_new_laptop + - dotfiles_merge_upstream + - dotfiles_same_laptop + - dotfiles_merge_upstream + - dotfiles_installer + - de_setup/zsh_default_terminal + - setup/ssh_agent + - ubuntu_python + - virtualenv + - pip + - nbextensions + - python_checkup + - kitt + - setup/windows_slack + - setup/slack_settings + - bonus diff --git a/builds/WINDOWS.yml b/builds/WINDOWS.yml new file mode 100644 index 0000000..2b0ac3d --- /dev/null +++ b/builds/WINDOWS.yml @@ -0,0 +1,44 @@ + +os: windows +locales: [en, es] +partials: + - intro + - setup/github + - setup/windows_version + - setup/windows_virtualization + - setup/windows_wsl + - setup/windows_ubuntu + - setup/windows_vscode + - setup/windows_terminal + - vscode_extensions + - setup/cli_tools + - setup/oh_my_zsh + - windows_browser + - direnv + - setup/gh_cli + - ubuntu_gcloud + - dotfiles + - dotfiles_new_student + - dotfiles_new_laptop + - dotfiles_merge_upstream + - dotfiles_same_laptop + - dotfiles_merge_upstream + - dotfiles_installer + - setup/ssh_agent + - conda_uninstall + - ubuntu_python + - virtualenv + - pip + - nbextensions + - win_jupyter + - python_checkup + - insomnia + - setup/windows_settings + - win_vs_redistributable + - gcp_setup + - gcp_setup_wsl + - gcp_setup_end + - kitt + - setup/windows_slack + - setup/slack_settings + - bonus diff --git a/builds/WINDOWS_keep_current.yml b/builds/WINDOWS_keep_current.yml new file mode 100644 index 0000000..42310e5 --- /dev/null +++ b/builds/WINDOWS_keep_current.yml @@ -0,0 +1,6 @@ + +os: windows +locales: [en, es] +partials: + - keep_current + - python_checkup diff --git a/builds/macOS.yml b/builds/macOS.yml new file mode 100644 index 0000000..2074664 --- /dev/null +++ b/builds/macOS.yml @@ -0,0 +1,37 @@ + +os: macos +locales: [en, es] +partials: + - intro + - setup/github + - osx_silicon + - setup/macos_command_line_tools + - homebrew + - setup/macos_vscode + - vscode_extensions + - setup/oh_my_zsh + - direnv + - setup/gh_cli + - dotfiles + - dotfiles_new_student + - dotfiles_new_laptop + - dotfiles_merge_upstream + - dotfiles_same_laptop + - dotfiles_merge_upstream + - dotfiles_installer + - conda_uninstall + - osx_python + - virtualenv + - pip + - nbextensions + - python_checkup + - insomnia + - gcp_cli_setup + - gcp_setup + - gcp_setup_mid + - gcp_setup_end + - kitt + - setup/macos_slack + - setup/slack_settings + - setup/macos_settings + - bonus diff --git a/builds/macOS_keep_current.yml b/builds/macOS_keep_current.yml new file mode 100644 index 0000000..f2c7f47 --- /dev/null +++ b/builds/macOS_keep_current.yml @@ -0,0 +1,6 @@ + +os: macos +locales: [en, es] +partials: + - keep_current + - python_checkup diff --git a/constants/constants.yml b/constants/constants.yml new file mode 100644 index 0000000..50d9d24 --- /dev/null +++ b/constants/constants.yml @@ -0,0 +1,7 @@ + +PYTHON_VERSION: "3.12.9" +PYTHON_CHECKER_URL: "https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/python_checker.sh" +PIP_CHECKER_URL: "https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/pip_check.sh" +PIP_LOADER_URL: "https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/pip_check.py" +CODE_EDITOR: "VS Code" +CODE_EDITOR_CMD: "code" diff --git a/constants/repos.yml b/constants/repos.yml new file mode 100644 index 0000000..2fc6f3d --- /dev/null +++ b/constants/repos.yml @@ -0,0 +1,6 @@ + +branches: + setup: master + +aliases: + de_setup: data-engineering-setup diff --git a/doc/README.md b/doc/README.md new file mode 100644 index 0000000..6dbff8e --- /dev/null +++ b/doc/README.md @@ -0,0 +1,28 @@ + +# NOTE(ssaunier): This script needs https://github.com/lewagon/setup to be cloned as well + +## Build guides + +`bundle exec ruby build.rb` generates the setup guide markdown files at the repo root (e.g. `macOS.md`, `macOS.es.md`). + +Each file in `builds/` defines one guide: + +```yaml +os: macos +locales: [en, es] +partials: + - intro # local: _partials/intro.md / _partials/es/intro.md + - setup/github # remote: lewagon/setup _partials/github.md + - de_setup/direnv # remote alias: lewagon/data-engineering-setup _partials/direnv.md +``` + +Partials without a `/` are loaded from `_partials/` (English) or `_partials/{locale}/` (other locales). +Partials with a `/` are fetched from GitHub: `{repo}/_partials/{locale}/{name}.md`. Remote repo branches and aliases are configured in `constants/repos.yml`. + +Template variables available in all partials are defined in `constants/constants.yml`. + +CI runs the build on every push and commits the generated files if they changed. + +## Guide descriptions + +`VM`: student installs VS Code, creates a GCP VM, runs setup on the VM diff --git a/macOS.es.md b/macOS.es.md new file mode 100644 index 0000000..a9c9e21 --- /dev/null +++ b/macOS.es.md @@ -0,0 +1,1186 @@ +# Instrucciones para la configuración + +Aquí abajo encontrarás las instrucciones para configurar tu computadora para [el curso de Data Analytics de Le Wagon](https://www.lewagon.com/data-analytics-course/full-time) + +Por favor **léelas cuidadosamente y ejecuta todos los comandos en el siguiente orden**. Si tienes algún problema, no dudes en pedirle ayuda a una profesor :raising_hand: + +¡Comencemos! :rocket: + + +## Cuenta GitHub + +¿Ya tienes una cuenta GitHub? Si no es el caso, [ábrela ya](https://github.com/join). + +:point_right: **[Sube una foto](https://github.com/settings/profile)** y escribe tu nombre correctamente en tu cuenta GitHub. Esto es importante porque nosotros usaremos un tablero de comando interno con tu avatar. Por favor hazlo **ahora** antes de dar un paso más en esta guía. + +![Foto GitHub](https://github.com/lewagon/setup/blob/master/images/github_picture.png) + +:point_right: **[Habilita la Autenticación de Dos Factores (2FA)](https://docs.github.com/en/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication#configuring-two-factor-authentication-using-text-messages)**. GitHub te enviará mensajes de texto con un código cuando intentes iniciar sesión. Esto es importante para la seguridad y también pronto será necesario para contribuir código en GitHub. + + +## Chips Apple Silicon + +Si compraste tu computadora después de finales del 2020, es probable que tenga un nuevo chip Apple Silicon en lugar de un procesador Intel: descubrámoslo. + +Abre una nueva ventana de la tarminal desde Aplicaciones > Utilidades o búscala con [Spotlight](https://support.apple.com/es-es/HT204014): + +![Abrir Terminal en macOS](images/macos_open_terminal.png) + +Copia y pega el siguiente comando en la terminal y presiona `Enter` para ejecutarlo. + +``` bash +/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/setup/master/utils/macos_list_processor_type.sh)" +``` + +☝️ El resultado del comando debería indicar si tu computadora usa un chip Apple Silicon. + +Si tu computadora usa **Apple Silicon**, expande el siguiente párrafo y ejecútalo. En caso contrario, ignóralo. + +
+ 👉  Setup para Apple Silicon 👈 + +Quieres asegurarte que no estás usando Rosetta, que es una forma de usar tu Terminal como si tuvieras una computadora con Intel. + +Abre la app Finder (o búscala con [Spotlight](https://support.apple.com/es-es/HT204014)). + +Ve a Aplicaciones > Utilidades. + +Ubica la app Terminal (selecciónala). + +Presiona `Cmd` + `I` en la app Terminal, luego verifica que la caja "Abrir usando Rosetta" esté **desmarcada**. +En caso de que no veas esta caja, simplemente continúa. +
+ +🚨 Ten esto en mente. Deberás recordarlo más adelante en este setup si tu computadora usa un chip Apple Silicon o Intel. + + +## Cómo cerrar aplicaciones en una Mac correctamente + +Hacer clic en círculo rojo en la esquina superior izquierda de la ventana de la aplicación en Mac **no la termina el proceso**, solo cierra una ventana activa. Hay dos alternativas para cerrar la aplicación _realmente_. Puedes presionar `Cmd + Q` cuando la misma está activa. La otra opción es ir a `APP_NAME` -> `Quit` en la barra del menú. + +![Cerrar la Terminal en macOS](https://github.com/lewagon/setup/blob/master/images/macos_quit.png) + +Durante esta configuración, se te pedirá **cerrar y abrir nuevamente** aplicaciones varias veces. Por favor asegúrate de hacerlo correctamente :pray: + +## Herramientas de la Línea de Comando + +Abre una nueva terminal, copia y pega el comando siguiente y presiona `Enter`: + +```bash +xcode-select --install +``` + +Si obtienes el mensaje que te mostramos a continuación, puedes ignorar este paso e ir al siguiente. + +```bash +# command line tools are already installed, use "Software Update" to install updates +``` + +Este mensaje significa que las herramientas de la línea de comando ya están instaladas y te pide que uses "Software Update" para instalar las actualizaciones. Si no recibes este mensaje, se abrirá una ventana preguntándote si quieres instalar algún programa: haz clic en "Install" y espera. + + +![Instalación de xcode-select en macOS](https://github.com/lewagon/setup/blob/master/images/macos_xcode_select_install.png) + +:heavy_check_mark: Si ves el mensaje "The software was installed", lo que significa que el programa se ha instalado, entonces todo está bien :+1: + +:x: Si falla el comando `xcode-select --install` , intenta nuevamente: algunas veces los servidores de Apple se sobrecargan. + +:x: Si ves el mensaje "Xcode is not currently available from the Software Update server", debes actualizar el catálogo de actualización de programas: + +```bash +sudo softwareupdate --clear-catalog +``` + +Cuando termines eso, puedes intentar hacer la instalación nuevamente. + + +## Homebrew + +### 1. Instálalo: + +Si usas Mac tienes que instalar [Homebrew](http://brew.sh/) el cual es un sistema de gestión de paquetes. +Será necesario cuando tengamos que instalar algún programa. +Para instalarlo, abre tu Terminal y ejecuta lo siguiente: + +```bash +/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" +``` + +Te pedirá tu confirmación (presiona `Enter`) y tu **contraseña de usuario macOS** (la que usas para [iniciar sesión](https://support.apple.com/en-gb/HT202860) cuando reinicias tu Macbook). +:warning: Cuando escribas tu contraseña en la Terminal, **no** la verás (sólo verás algo como `*****`). ¡Esto es **normal**! Simplemente escribe tu contraseña y confirma presionando `Enter`. + +
+ 🛠 Si aparece un Error: Not a valid ref: refs/remotes/origin/master + +El error completo es el siguiente: + +``` bash +Error: Not a valid ref: refs/remotes/origin/master : +fatal: ambiguous argument 'refs/remotes/origin/master': unknown revision or path not in the working tree. +``` + +Ejecuta los siguientes comandos para resolverlo: + +``` bash +rm -fr $(brew --repo homebrew/core) # because you can't `brew untap homebrew/core` +brew tap homebrew/core +``` + +
+ +Si ya tienes Homebrew, el sistema te lo dirá. No hay problema, así que puedes continuar. + +### 2. Asegúrate de tener la versión más reciente: + +```bash +brew update +``` + +
+ 🛠 Si aparece un error /usr/local must be writable + +Simplemente ejecuta lo siguiente: + +``` bash +sudo chown -R $USER:admin /usr/local +brew update +``` + +
+ +### 3. Luego instala algunos programas útiles: + +Ejecuta lo siguiente en la terminal (puedes copiar / pegar todas las líneas juntas una sola vez). + +```bash +brew upgrade git || brew install git +brew upgrade gh || brew install gh +brew upgrade wget || brew install wget +brew upgrade imagemagick || brew install imagemagick +brew upgrade jq || brew install jq +brew upgrade openssl || brew install openssl +brew upgrade tree || brew install tree +brew upgrade ncdu || brew install ncdu +brew upgrade xz || brew install xz +brew upgrade readline || brew install readline +``` + + +## Visual Studio Code + +### Instalación + +Instala el editor de texto [Visual Studio Code](https://code.visualstudio.com). + +Copia (presionando `Cmd` + `C`) el comando de aquí abajo y luego pégalo en tu terminal (con `Cmd` + `V`): + +```bash +brew install --cask visual-studio-code +``` + +Luego abre VS Code ejecutando el siguiente comando en tu terminal: + +```bash +code +``` + +:heavy_check_mark: Si se acaba de abrir una ventana de VS Code, todo está bien y puedes continuar :+1: + +:x: De lo contrario, por favor **contacta a un profesor**. + + +## Extensiones de VS Code + +### Instalación + +Instala algunas extensiones útiles para VS Code. + +```bash +code --install-extension ms-vscode.sublime-keybindings +code --install-extension emmanuelbeziat.vscode-great-icons +code --install-extension MS-vsliveshare.vsliveshare +code --install-extension ms-python.python +code --install-extension KevinRose.vsc-python-indent +code --install-extension ms-python.vscode-pylance +code --install-extension ms-toolsai.jupyter +code --install-extension alexcvzz.vscode-sqlite +``` + +Aquí está la lista de las extensiones que estás instalando: + +- [Sublime Text Keymap and Settings Importer](https://marketplace.visualstudio.com/items?itemName=ms-vscode.sublime-keybindings) +- [VSCode Great Icons](https://marketplace.visualstudio.com/items?itemName=emmanuelbeziat.vscode-great-icons) +- [Live Share](https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsliveshare) +- [Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python) +- [Python Indent](https://marketplace.visualstudio.com/items?itemName=KevinRose.vsc-python-indent) +- [Pylance](https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance) +- [Jupyter](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter) +- [SQLite](https://marketplace.visualstudio.com/items?itemName=alexcvzz.vscode-sqlite) + + +## Oh-my-zsh + +Instalemos el plugin `zsh` [Oh My Zsh](https://ohmyz.sh/). + +Ejecuta este comando en la terminal: + +```bash +sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" +``` + +Si te preguntan "Do you want to change your default shell to zsh?", presiona `Y` + +Cuando termines, tu terminal debería lucir así: + +![La terminal de Ubuntu con OhMyZsh](https://github.com/lewagon/setup/blob/master/images/oh_my_zsh.png) + +:heavy_check_mark: Si es el caso, puedes continuar :+1: + +:x: Si no, por favor **pídele ayuda a un profesor**. + + +## direnv + +[direnv](https://direnv.net/) es una extensión del shell. Facilita trabajar con variables de entorno por proyecto, lo cual será útil para customizar el comportamiento de tu código. + + +``` bash +brew install direnv +echo 'eval "$(direnv hook zsh)"' >> ~/.zshrc +``` + + + +## GitHub CLI + +CLI es una abreviación de [Command-line Interface](https://en.wikipedia.org/wiki/Command-line_interface) que significa interfaz de línea de comando. + +En esta sección usaremos [GitHub CLI](https://cli.github.com/) para interactuar directamente con GitHub desde la terminal. + +Usaremos la GitHub CLI (`gh`) para conectarnos a GitHub utilizando *SSH*, un protocolo para iniciar la sesión utilizando claves SSH en lugar de la famosa pareja nombre de usuario y contraseña. + +Ya debería haberse instalado en tu computadora con los comandos que ejecutaste anteriormente. + +Lo primero que hay que hacer para **iniciar sesión** es copiar y pegar el comando siguiente en tu terminal: + +:warning: **NO edites el `email`** — Aunque `user:email` parezca un marcador de posición para tu dirección de correo real, no lo es — no lo reemplaces. + +```bash +gh auth login -s 'user:email' -w --git-protocol ssh +``` + +`gh` le hará algunas preguntas: + +- `Generate a new SSH key to add to your GitHub account?` Presiona `Enter` para pedirle a gh que genere las claves SSH por ti. + + Si ya tienes claves SSH, verás en su lugar `Upload your SSH public key to your GitHub account?`Con las flechas, selecciona la ruta de tu archivo de clave pública y pulsa `Intro`. + +- `Enter a passphrase for your new SSH key (Optional)`: + - **PARA LA MAYORÍA DE LOS ESTUDIANTES:** Simplemente presiona `Enter` para omitir. No necesitas una contraseña para el bootcamp y te la pediría cada vez que uses la clave. Sin embargo, hay un riesgo de que si alguien roba tu computadora, pueda subir código a GitHub. + - **SI LA SEGURIDAD ES MUY IMPORTANTE PARA TI:** Escribe una contraseña de tu elección y presiona `Enter`. Es _muy_ importante que si introduces una contraseña, la anotes en algún lugar inmediatamente y no la pierdas ni la olvides. Tendrás que introducirla con frecuencia. + +- `Title for your SSH key`. Puede dejarlo en la propuesta "GitHub CLI", presiona `Enter`. + +Obtendrás el siguiente resultado: + +```bash +! First copy your one-time code: 0EF9-D015 +- Press Enter to open github.com in your browser... +``` + +Selecciona y copia el código (`0EF9-D015` en el ejemplo) y luego presiona `Enter`. + +Tu navegador se abrirá y te pedirá que autorices GitHub CLI para usar tu cuenta GitHub. Acepta y espera un poco. + +Regresa a la terminal, presiona `Enter` nuevamente y listo. Eso es todo. + +Para verificar que están conectado correctamente, escribe lo siguiente: + +```bash +gh auth status +``` + +:heavy_check_mark: Si obtienes este mensaje: `Logged in to github.com as `, significa que todo está bien :+1: + +:x: De lo contrario, **contacta a un profesor**. + + +## Dotfiles + +Los hackers aman mejorar sus shells y sus herramientas. Comenzaremos con una configuración por defecto genial proporcionada por [Le Wagon](http://github.com/lewagon/dotfiles) y almacenada en GitHub. + +### Verifica tu configuración de GitHub CLI + +Primero, hagamos una verificación rápida. Abre tu terminal y ejecuta el comando siguiente: + +```bash +export GITHUB_USERNAME=`gh api user | jq -r '.login'` +echo $GITHUB_USERNAME +``` + +Deberías ver tu usuario GitHub. Si no es así, **no hagas más nada** y pide ayuda. +Parece que hay un problema con el paso anterior (`gh auth`). + +### Fork y/o clone los archivos de configuración + +Hay tres opciones, escoge **una**: + + +
+ + No he hecho el bootcamp de Web Development o Data Science & AI o Data Analytics de Le Wagon + + + Tu configuración es personal, así que necesitas tu propio repositorio para almacenarla. Primero tienes que hacer el fork del repositorio en tu cuenta GitHub. + +Hacer un fork significa que crearás un nuevo repositorio en tu cuenta GitHub idéntico al original. Tendrás un nuevo repositorio en tu cuenta GitHub, `your_github_username/dotfiles`. El fork es necesario porque cada uno de ustedes necesitará poner información específica (e.g. tu nombre) en esos archivos. + +Ejecutemos este comando para hacer un **fork** del repositorio `lewagon/dotfiles` y clonarlo: + +```bash +mkdir -p ~/code/$GITHUB_USERNAME && cd $_ +gh repo fork lewagon/dotfiles --clone +``` + +
+ + +
+ + Ya hice el bootcamp de Web Development o Data Science & AI o Data Analytics de Le Wagon pero tengo una nueva laptop + + +Esto significa que ya has hecho el fork del repositorio GitHub lewagon/dotfiles pero tal vez la configuración para el nuevo bootcamp de Data Analytics no estaba lista en ese momento.Actualicémoslo. **Pide a un TA que te acompañe en los siguientes pasos.** + +Es hora de clonarlo el repositorio en tu laptop: + +```bash +mkdir -p ~/code/$GITHUB_USERNAME && cd $_ +gh repo clone lewagon/dotfiles +``` + + +Abre tu terminal y ve a tu proyecto `dotfiles`: + +```bash +cd ~/code/$GITHUB_USERNAME$/dotfiles +``` + +Es hora de fusionar los cambios de lewagon/dotfiles en los tuyos: + +1. Commit la versión actual de tus dotfiles: + ```bash + git add . + git status # Check what will be committed + git commit -m "Version prior to new setup" + ``` + +1. Trae los cambios del repositorio upstream: `git merge upstream/master` + +1. Verifica que no estés en estado MERGING. Si lo estás, resuelve los conflictos. + +1. Haz un `git diff HEAD~1 HEAD` para revisar qué cambió. + +1. Si todo parece estar en orden, continúa. + +
+ ¿Demasiados conflictos? + + + Vamos a tomar la versión actual de `lewagon/dotfiles`. + + Primero aborta la merge: `git merge --abort`. + + Ejecuta `code .` + + En VS Code, abre el archivo zshrc. Reemplaza su contenido con la [versión más reciente](https://raw.githubusercontent.com/lewagon/dotfiles/master/zshrc). Luego guárdalo en el disco. + + Aún en VS Code, abre el archivo `zprofile`. Reemplaza su contenido con la [versión más reciente](https://raw.githubusercontent.com/lewagon/dotfiles/master/zprofile). Luego guárdalo en el disco. + + Regresa a la terminal y ejecuta un `git diff` y verifica que esto no haya eliminado ninguna configuración personal que quisieras conservar. + +
+ +Es hora de guardar tus cambios y subirlos. + +```bash +git add . +git commit -m "Update for Data Analytics bootcamp" +git push origin master +``` + +
+ + +
+ + Ya hice el bootcamp de Web Development o Data Science & AI o Data Analytics de Le Wagon en la misma laptop + + +Esto significa que ya has hecho el fork del repositorio GitHub lewagon/dotfiles pero tal vez la configuración para el nuevo bootcamp de Data Analytics no estaba lista en ese momento. Actualicémoslo. **Pide a un TA que te acompañe en los siguientes pasos.** + + +Abre tu terminal y ve a tu proyecto `dotfiles`: + +```bash +cd ~/code/$GITHUB_USERNAME$/dotfiles +``` + +Es hora de fusionar los cambios de lewagon/dotfiles en los tuyos: + +1. Commit la versión actual de tus dotfiles: + ```bash + git add . + git status # Check what will be committed + git commit -m "Version prior to new setup" + ``` + +1. Trae los cambios del repositorio upstream: `git merge upstream/master` + +1. Verifica que no estés en estado MERGING. Si lo estás, resuelve los conflictos. + +1. Haz un `git diff HEAD~1 HEAD` para revisar qué cambió. + +1. Si todo parece estar en orden, continúa. + +
+ ¿Demasiados conflictos? + + + Vamos a tomar la versión actual de `lewagon/dotfiles`. + + Primero aborta la merge: `git merge --abort`. + + Ejecuta `code .` + + En VS Code, abre el archivo zshrc. Reemplaza su contenido con la [versión más reciente](https://raw.githubusercontent.com/lewagon/dotfiles/master/zshrc). Luego guárdalo en el disco. + + Aún en VS Code, abre el archivo `zprofile`. Reemplaza su contenido con la [versión más reciente](https://raw.githubusercontent.com/lewagon/dotfiles/master/zprofile). Luego guárdalo en el disco. + + Regresa a la terminal y ejecuta un `git diff` y verifica que esto no haya eliminado ninguna configuración personal que quisieras conservar. + +
+ +Es hora de guardar tus cambios y subirlos. + +```bash +git add . +git commit -m "Update for Data Analytics bootcamp" +git push origin master +``` + +
+ + +### Ejecuta el instalador de dotfiles + +Ejecuta el instalador de `dotfiles`. + +```bash +cd ~/code/$GITHUB_USERNAME/dotfiles && zsh install.sh +``` + +Verifica los emails registrados en tu cuenta GitHub. Deberás seleccionar uno de ellos en el próximo paso: + +```bash +gh api user/emails | jq -r '.[].email' +``` + +Ejecuta el instalador de git: + +```bash +cd ~/code/$GITHUB_USERNAME/dotfiles && zsh git_setup.sh +``` + +:point_up: Esto te **guiará** con tu nombre (`FirstName LastName`) y con tu email. +:warning: Cuidado, **debes** poner uno de los emails de la lista de arriba que te suministra el comando `gh api ...` usado anteriormente. Si haces eso, Kitt no podrá hacerle seguimiento a tu progreso. Cualquier correo que elijas se mostrará **públicamente** en internet. 💡 Selecciona la dirección `@users.noreply.github.com` si no quieres que tu correo electrónico aparezca en los repositorios públicos a los que puedas contribuir. + +Ahora **cierra** todas las ventanas de tu terminal que tengas abiertas por favor. + + +## Instalando Python (con [`pyenv`](https://github.com/pyenv/pyenv)) + +### Desinstalar `conda` + +Como estamos utilizando `pyenv` para instalar y gestionar la versión de Python, necesitamos desinstalar [`conda`](https://docs.conda.io/projects/conda/en/latest/), otro gestor de paquetes que podrías tener en tu computadora si previamente instalaste [Anaconda](https://www.anaconda.com/). De esta forma, evitaremos problemas con Python más adelante. + +Chequea si tienes `conda` instalado en tu computadora: + +```bash +conda list +``` + +Si aparece `zsh: command not found: conda`, puedes **saltear** la desinstalación de `conda` e ir directo a la sección de **Instalar pre-requisitos**. + + +
+ Instrucciones de desinstalación conda + +- Instala el paquete Anaconda-Clean desde tu terminal y comienza la limpieza +```bash +conda install anaconda-clean +anaconda-clean --yes +``` +- Remueve todos los directorios de Anaconda +```bash +rm -rf ~/anaconda2 +rm -rf ~/anaconda3 +rm -rf ~/.anaconda_backup + +rm -rf ~/opt + +``` +- Elimina el directorio Anaconda de tu `.bash_profile` + - Abre el archivo con `code ~/.bash_profile` + - Si el archivo abre, busca la línea que coincida con el siguiente patrón `export PATH="/path/to/anaconda3/bin:$PATH"` y eliminala + + - Guarda el archivo con `CMD` + `s` + +- Reinicia la terminal con `exec zsh` +- Remueve la inicializaciópn de Anaconda de tu `.zshrc`: + - Abre el archivo con `code ~/.zshrc` + - Remueve las líneas de código desde `>>> conda initialize >>>` hasta `<<< conda initialize <<<` +
+ + +### Instalar pre-requisitos + +Antes de instalar Python, por favor verifica la versión de tu extensión `xz` con: + +```bash +brew info xz +``` + +Debe ser superior a `5.2.0`. **Si no es el caso**, debes ejecutar lo siguiente: + +```bash +sudo rm -rf /usr/local/opt/xz +brew upgrade +brew install xz +``` + +Luego ejecuta: + +```bash +brew install readline +``` + +### Instala `pyenv` + +macOS viene con una versión vieja de Python que no queremos usar. Tal vez ya hayas instalado Anaconda u otro programa para utilizar Python y paquetes de Ciencia de Datos. Si es así, no pasa nada ya que haremos una configuración profesional de Python que te permitirá cambiar de versión cuando quieras al escribir `python` en la terminal. + +Primero instala `pyenv` con el siguiente comando en la Terminal: + +```bash +brew install pyenv +exec zsh +``` + +### Instala Python + +Instala la [última versión estable de Python](https://www.python.org/doc/versions/) aceptada en el currículum de Le Wagon: + +```bash +pyenv install 3.12.9 +``` + +Este comando puede tomar un tiempo en ejecutarse. Esto es completamente normal. ¡No dudes en ayudar a los estudiantes que estén sentados cerca de ti! + +
+ 🛠 Resolución de problemas + +Si aparece un error durante la instalación de Python con `pyenv` y relacionada con `zlib`: + +```txt +zipimport.ZipImportError: can't decompress data; zlib not available +``` + +Instala `zlib` con lo siguiente: + +```bash +brew install zlib +export LDFLAGS="-L/usr/local/opt/zlib/lib" +export CPPFLAGS="-I/usr/local/opt/zlib/include" +``` + +Luego trata de instalar Python nuevamente: + +```bash +pyenv install 3.12.9 +``` + +Es posible que aparezca otro error relacionado con `bzip2`. Esto lo puedes ignorar y continuar al paso siguiente. + +
+
+ +OK. Cuando este comando termine de ejecutarse, le diremos al sistema que use esta versión de Python **por defecto**. Esto se hace con: + +```bash +pyenv global 3.12.9 +exec zsh +``` + +Para verificar si esto ha funcionado, ejecuta `python --version`. Si ves `3.12.9`, ¡todo está bien! Si no, pídele ayuda a un TA para resolver el problema por medio `pyenv versions` y `type -a python` (`python` debería estar usando la versión `.pyenv/shims` de primero). + + +## Entorno Virtual de Python + +Antes de instalar paquetes de Python, aislaremos la configuración del Bootcamp en un entorno virtual **dedicado**. Usaremos un plugin `pyenv` llamado [`pyenv-virtualenv`](https://github.com/pyenv/pyenv-virtualenv). + +### Instala un virtualenv + +Primero instala este plugin: + +```bash +git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv +exec zsh +``` + +Crea el entorno virtual que usaremos durante todo el bootcamp: + +```bash +pyenv virtualenv 3.12.9 lewagon +``` + +Define el entorno virtual con lo siguiente: + +```bash +pyenv global lewagon +``` + +¡Genial! Ahora cada vez que queramos instalar un paquete Python, lo haremos en ese entorno. + + +### Paquetes de Python + +Ahora que tenemos el ambiente virtual de `lewagon` adecuado, es hora de instalarle algunos paquetes. + +Primero, actualiza `pip`, la herramienta para instalar Paquetes Python desde [pypi.org](https://pypi.org). Ejecuta lo siguiente en la última terminal donde esté activado el virtualenv de `lewagon`: + +```bash +pip install --upgrade pip +``` + +Ahora instala algunos paquetes para las primeras semanas del programa: + + +Si tu computadora usa **Apple Silicon**, expande el párrafo de abajo y léelo. Si no es el caso, ignóralo. + +
+ 👉  Configuración para Apple Silicon 👈 + +``` bash +pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/specs/releases/apple_silicon.txt +``` + +
+ +Si tu computadora usa **Apple Intel**, expande el párrafo de abajo y léelo. Si no es el caso, ignóralo. + +
+ 👉  Configuración para Apple Intel 👈 + +``` bash +pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/specs/releases/apple_intel.txt +``` + +
+ + + +## Mejora Jupyter Notebook + +Mejora la visualización del [elemento `details` para revelación de información](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details) en tus notebooks. + +Ejecuta las siguientes líneas para crear una hoja de estilos `custom.css` en tu directorio de configuración de Jupyter: + +```bash +LOCATION=$(jupyter --config-dir)/custom +SOURCE=https://raw.githubusercontent.com/lewagon/data-analytics-setup/refs/heads/master/specs/jupyter/custom.css +mkdir -p $LOCATION +curl $SOURCE > $LOCATION/custom.css +``` + + +## Chequeo de la configuración de Python + +### Chequeo de Python y packages + +Reinicia tu terminal: + +```bash +cd ~/code && exec zsh +``` + +Verifica tu versión de Python con los siguientes comandos: + +```bash +zsh -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/python_checker.sh)" 3.12.9 +``` + +Ejecuta el comando siguiente para verificar que hayas instalado los paquetes requeridos correctamente: + +```bash +zsh -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/pip_check.sh)" +``` + +Ahora ejecuta el siguiente comando para verificar que puedas cargar estos paquetes: + +```bash +python -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/pip_check.py)" +``` + +### Chequeo de Jupyter + +Ahora verifica que puedas iniciar un servidor de notebook en tu máquina: + +```bash +jupyter notebook +``` + +Tu navegador web debería abrir en una ventana `jupyter`: + +![jupyter.png](images/jupyter.png) + +Haz clic en `New` y, en el menú desplegable, selecciona Python 3 (ipykernel): + +![jupyter_new.png](images/jupyter_new.png) + +Debería abrirse una pestaña en un nuevo notebook: + +![jupyter_notebook.png](images/jupyter_notebook.png) + +Asegúrate de que estés usando la versión correcta de python en el notebook. Abre una celda y ejecuta lo siguiente: + +``` python +import sys; sys.version +``` + +Debería mostrar `3.12.9` seguido de algunos detalles adicionales. Si no es así, consulta con un TA. + +Puedes cerrar tu navegador web y luego cerrar el servidor jupyter con `CTRL` + `C`. + +¡Listo! Ya tienes un virtual env de python completo con todos los paquetes tercerizados que necesitarás en el bootcamp. + + +## Insomnia + +> ℹ️ **¿Por qué?** Insomnia es una de las herramientas más conocidas para probar APIs, y será útil en nuestro curso de Introducción a las APIs. + +- Ve a [https://insomnia.rest/download](https://insomnia.rest/download) + +- Descarga Insomnia + +- Instala Insomnia + + + +## CLI de `gcloud` + +Antes de configurar nuestra cuenta Google Cloud Platform vamos a configurar el CLI de `gcloud` (una interfaz de línea de comando para Google Cloud Platform). Ejecuta el siguiente código y sigue las indicaciones de la terminal para actualizar tu $PATH y habilitar la finalización del comando del shell para el archivo `.zshrc`: + +```bash +brew install --cask google-cloud-sdk +``` + +Luego podrás ejecutar lo siguiente: + +```bash +$(brew --prefix)/share/google-cloud-sdk/install.sh +``` + +
+ ¿Recibes un error no such file or directory? + + Prueba esto: + +```bash +$(brew --prefix)/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/install.sh +``` + +Si eso no funciona, contacta a un TA. + +
+ + +## Configuración de Google Cloud Platform + +[GCP](https://cloud.google.com/) es una solución en la nube que usarás para colocar tus productos basados en Machine Learning en producción. + +🚨 Si estás en el grupo de estudiantes del **Bootcamp de Medio Tiempo**, ¡IGNORA ESTA SECCIÓN POR AHORA! **GCP** ofrece $300 en créditos durante 3 meses, así que no es buena idea activar tu cuenta GCP demasiado pronto 🙅‍♂️ + +### Preparación del Proyecto + +- Ve a [Google Cloud](https://console.cloud.google.com/) y crea una cuenta si aún no tienes una +- En la consola de Cloud, en la lista de proyectos, selecciona o crea un proyecto Cloud + +![](images/gcp-create-project.png) + +- Asígnale un nombre como `Wagon Bootcamp` por ejemplo +- Verás que se creará un `ID` automáticamente para el proyecto e. g. `wagon-bootcamp-123456` + +![](images/gcp_project.png) + +### Idioma de la cuenta + +Abre las preferencias en tu cuenta GCP para facilitar el seguimiento de las instrucciones durante el bootcamp: + +[https://myaccount.google.com/language](https://myaccount.google.com/language) + +Si el *idioma de preferencia* no es: + +- **English** +- **United States** + +Cámbialo a inglés: + +- Haz clic en el logo edición (es una lapicera) +- Selecciona **English** +- Selecciona **United States** +- Haz clic en **Select** + +### Cuenta de facturación + +Ahora conecta tu cuenta con tu tarjeta de crédito. Este paso es obligatorio para poder usar los servicios que suministra GCP. No te preocupes, podrás utilizar la mayoría de los servicios de GCP por medio de créditos gratuitos durante el bootcamp. + +![](images/gcp-billing.png) + +- Haz clic en **Billing** +- Haz clic en **MANAGE BILLING ACCOUNTS** +- Haz clic en **ADD BILLING ACCOUNT** +- Asígnale un nombre a tu cuenta de facturación, e. g. `My Billing Account` +- Haz clic en "I have read..." y acepta los términos de uso +- Haz clic en **CONTINUE** +- Selecciona tu tipo de cuenta: `Individual` +- Agrega tu nombre y dirección + +Verás que tienes créditos gratuitos con un valor de "$300 a utilizar en los próximos 90 días". + +- Haz clic en los detalles de la tarjeta +- Agrega la información de tu tarjeta de crédito +- Haz clic en **START MY FREE TRIAL**. Esto significa comenzar mi período de prueba. + +Cuando termines, verifica que la cuenta de facturación esté conectada con tu proyecto GCP. + +- Selecciona tu proyecto +- Ve a **Billing** +- Selecciona **LINK A BILLING ACCOUNT** +- Selecciona `My Billing Account` +- Haz clic en **SET ACCOUNT** + +Ahora deberías ver lo siguiente: + +```bash +Free trial status: $300 credit and 91 days remaining - with a full account, you'll get unlimited access to all of Google Cloud Platform. +``` + +Esto significa Estado de período de prueba: crédito de $300 y 91 días para usarlo - con la full account, tendrás acceso ilimitado a todo lo que ofrece Google Cloud Platform. + +
+ 👉 Si no tienes una tarjeta de crédito 👈 + +Si no tienes una tarjeta de crédito, puedes abrir una cuenta en **Revolut**. +Revolut es una aplicación que funciona como un banco y que te permitirá crear una tarjeta de crédito virtual conectada a la dirección de facturación de tu smartphone. + +Ignora este paso si ya tienes una tarjeta de crédito. Simplemente úsala para hacer la configuración. + +Descarga la app Revolut o ve a [revolut](https://www.revolut.com/a-radically-better-account) y sigue los pasos para descargar la app (introduce tu número de teléfono móvil y haz clic en Get Started). + +- Abre la app Revolut +- Agrega tu número de teléfono móvil +- Agrega el código de verificación que recibiste por SMS +- La app te preguntará por tu país, dirección, primer y segundo nombre, fecha de nacimiento y el email +- La app también te pedirá tu profesión y una selfie +- La app te pedirá una foto de tu documento nacional de identidad o pasaporte + +Cuando termines, selecciona el plan estándar (gratuito). No tienes que agregar la tarjeta a Apple pay, pedir que te envíen una tarjeta a tu domicilio ni tampoco agregar dinero a la cuenta. + +Ahora tienes una tarjeta virtual que podrás usar para hacer la configuración de GCP. + +En la vista principal de la app Revolut + +- Haz clic en Ready to use +- Haz clic en the card +- Haz clic en Show card details +- Toma nota de la información de la tarjeta de crédito virtual y úsala para completar la configuración de GCP + +
+ +
+ 👉 Si recibes un email de Google diciendo "Urgent: your billing account XXXXXX-XXXXXX-XXXXXX has been suspended" 👈 + +Esto puede pasar justo después de haber creado la cuenta en Revolut. + +- Haz clic en PROCEED TO VERIFICATION +- Te pedirán que envíes una foto de tu tarjeta de crédito (solo los últimos 4 dígitos, nada más) +- Si ya has usado **Revolut**, puedes enviar una captura de pantalla de tu tarjeta de crédito virtual (no olvides quitar la fecha de vencimiento de la captura) +- Explica que estás haciendo el bootcamp de Le Wagon, que no tienes una tarjeta de crédito y que acabas de crear una cuenta en Revolut para poder configurar GCP para el bootcamp con una tarjeta de crédito virtual + +Es posible que te validen la cuenta pero también es posible que te pidan más información en los próximos 30 minutos. + +Cuando la cuenta sea validada recibirás un email diciendo lo siguiente: "Your Google Cloud Platform billing account XXXXXX-XXXXXX-XXXXXX has been fully reinstated and is ready to use.". Esto significa que tu cuenta Google Cloud Platform ha sido restablecida + +
+ +### Habilitación de servicios de GCP + +- Asegúrate de que la facturación está habilitada para tu proyecto Google Cloud + +ℹ️ Tienes un **crédito de $300** para usar con recursos de Google Cloud. Esto será más que suficiente para el bootcamp. + +- [Habilita las APIs BigQuery y Compute Engine](https://console.cloud.google.com/flows/enableapi?apiid=bigquery,compute) (Esto puede tomar varios minutos) + +### Configuración de Cloud sdk + +- Autentica el CLI de `gcloud` con la cuenta que usaste para GCP + +```bash +gcloud auth login +``` + +- Inicia sesión en tu cuenta Google en la nueva pestaña que se abrió en tu navegador +- Lista la cuenta que tienes activa y verifica que el email que usaste para GCP está ahí + +```bash +gcloud auth list +``` + +- Define tu proyecto actual (reemplaza `PROJECT_ID` con el `ID` de tu proyecto e.g. `wagon-bootcamp-123456`) + +```bash +gcloud config set project PROJECT_ID +``` + +- Lista la cuenta que tienes activa y tu proyecto actual y verifica que tu proyecto está ahí + +```bash +gcloud config list +``` + +### Crea una llave 🔑 de cuenta de servicio + +Como ya creaste una cuenta `GCP account` y un `project` (identificado por su `PROJECT_ID`), vamos a configurar las acciones (llamadas API calls) que quieres que tu código ejecute. + +
+ 🤔 ¿Por qué necesitamos una clave de cuenta de servicio? + + Creaste una `cuenta GCP` conectada a una tarjeta de crédito. Te facturarán de acuerdo al uso que les des a los recursos de **Google Cloud Platform**. El cargo se hará si utilizas algo después de que el período de prueba gratuito se haya terminado o si te excedes del límite de consumo que te permite dicho período. + + En tu `cuenta GCP` has creado un solo `proyecto GCP` identificado por su `PROJECT_ID`. Los `proyectos GCP` te permiten organizar y monitorear la manera en que consumes los recursos **GCP** de forma más precisa. En este bootcamp solo crearemos un solo proyecto. + + Ahora necesitamos una manera de saber qué recursos nuestro código podrá consumir dentro de un `GCP project`. Nuestro código consume recursos GCP por medio de llamadas API. + + Ya que las llamadas API no son gratuitas, es importante definir cuidadosamente cómo nuestro código las utilizará. Sin embargo, durante el bootcamp no habrá restricciones. Le permitiremos a nuestro código que utilice todas las API **GCP** sin restricciones. + + Así como pueden haber varios proyectos asociados a una cuenta GCP, un proyecto puede estar compuesto de muchos servicios (cualquier paquete de código, sin importar su formato, que necesite utilizar llamadas a la API de GCP para cumplir con su propósito). + + GCP exige que los servicios de los proyectos que usen llamadas API se registren en la plataforma y que se configuren sus credenciales por medio del acceso concedido a una `service account`. + + Por ahora solo tendremos que usar un solo servicio y crearemos la `service account` correspondiente. +
+ +Ya que la [service account](https://cloud.google.com/iam/docs/service-accounts) es lo que identifica tu aplicación (y por ende tu cuenta de facturación GCP y, en última instancia, tu tarjeta de crédito), lo mejor es ser cuidadoso en los próximos pasos. + +⚠️ **No compartas la 🔑 del archivo json de tu cuenta de servicio** ⚠️ No la guardes en tu escritorio ni en tu código base de git (incluso si tu repositorio git es privado). Que no se te olvide en un lugar como la máquina de café y, por supuesto, no la envíes en un tweet. + +- Ve a la [página de las cuentas de servicio](https://console.cloud.google.com/apis/credentials/serviceaccountkey) +- Selecciona tu proyecto en la lista de proyectos recientes si te piden que +- Crees una cuenta de servicio: + - Haz clic en **CREATE SERVICE ACCOUNT** que significa crear une cuenta de servicio: + - Define un `Service account name` para esa cuenta. Esto significa Nombre de cuenta de servicio + - Haz clic en **CREATE AND CONTINUE** que significa crear y continuar + - Haz clic en **Select a role** que significa selecciona un rol. Escoge `Quick access/Basic` luego **Owner**. Esto otorga acceso total a todos los recursos + - Haz clic en **CONTINUE** + - Haz clic en **DONE** +- Descarga la 🔑 del archivo json de la cuenta de servicio: + - Haz clic en la cuenta de servicio recién creada + - Haz clic en **KEYS** + - Haz clic en **ADD KEY** y luego en **Create new key** + - Selecciona **JSON** y haz clic en **CREATE** + +![](images/gcp_create_key.png) + +El navegador acaba de guardar la 🔑 del archivo json de la cuenta de servicio en tu carpeta de descargas (el nombre se le asigna según el nombre de la cuenta de servicio. Es algo como `le-wagon-data-123456789abc.json`) + + +- Guarda el archivo json de la cuenta de servicio en un lugar que recuerdes. Por ejemplo: + +``` bash +/Users/MACOS_USERNAME/code/GITHUB_NICKNAME/gcp/SERVICE_ACCOUNT_JSON_FILE_CONTAINING_YOUR_SECRET_KEY.json +``` + +- Guarda la **ruta absoluta** al archivo `JSON` como una variable de entorno: + +``` bash +echo 'export GOOGLE_APPLICATION_CREDENTIALS=/path/to/the/SERVICE_ACCOUNT_JSON_FILE_CONTAINING_YOUR_SECRET_KEY.json' >> ~/.zshrc +``` + +**Nota:** cada vez que ejecutes este comando, agregará esta línea a tu archivo zshrc sin importar si la línea ya existe en el archivo. Si cometiste un error y necesitas arreglarlo, es preferible que abras el archivo y edites la línea! + +Puedes hacerlo ejecutando + +```bash +code ~/.zshrc +``` + +en la Terminal! 😄 + + + +
+ ℹ️ ¿Cómo encontrar la ruta absoluta de un archivo? + Puedes arrastrar el archivo a tu terminal. +
+ +**Reinicia** tu terminal y ejecuta lo siguiente: + +``` bash +echo $GOOGLE_APPLICATION_CREDENTIALS +``` + +Deberías obtener la siguiente información: + +```bash +/some/absolute/path/to/your/gcp/SERVICE_ACCOUNT_JSON_FILE_CONTAINING_YOUR_SECRET_KEY.json +``` + +Ahora verifica si la ruta al archivo json de tu cuenta de servicio es el correcto: + +``` bash +cat $(echo $GOOGLE_APPLICATION_CREDENTIALS) +``` + +👉 Este comando debería mostrar el contenido del archivo json de tu cuenta de servicio. Si no es el caso, pídele ayuda a un TA 🙏 + +Tu código y utilidades ahora pueden acceder a los recursos de tu cuenta GCP. + +Continuemos con los últimos pasos de la configuración... + +- Lista las cuentas de servicio asociadas a tu cuenta activa y a tu proyecto actual +```bash +gcloud iam service-accounts list +``` +- Recupera el email de la cuenta de servicio e. g. `SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com` +- Lista los roles de la cuenta de servicio desde la cli (reemplaza el PROJECT_ID y el SERVICE_ACCOUNT_EMAIL) +```bash +gcloud projects get-iam-policy PROJECT_ID \ +--flatten="bindings[].members" \ +--format='table(bindings.role)' \ +--filter="bindings.members:SERVICE_ACCOUNT_EMAIL" +``` +- Ahora deberías ver que tu cuenta de servicio tiene el rol de `roles/owner` + +
+ Resolución de problemas + +- `AccessDeniedException: 403 The project to be billed is associated with an absent billing account.`. Esto significa que el proyecto a facturar está asociado a una cuenta de facturación que no está habilitada + - Asegúrate de habilitar la facturación para tu proyecto https://cloud.google.com/billing/docs/how-to/modify-project +
+ +🏁 Listo. ¡Has terminado la configuración de GCP! + + + ## Kitt + +Deberías haber recibido un correo electrónico de Le Wagon invitándote a registrarte en [Kitt](https://kitt.lewagon.com) (nuestra plataforma de aprendizaje). + +Entonces deberías recibir una invitación adicional de Slack, invitándote a la comunidad de los alumni de Le Wagon en slack (donde podrás chatear con tus compañeros y todos los demás alumni). Haz clic en **Join** y completa la información que te piden. + +Si no lo has recibido, por favor contacta a tu equipo de enseñanza. + + +## Slack + +[Slack](https://slack.com/) es una plataforma de comunicación popular en la industria tech. + +### Instalación + +[Descarga la aplicación Slack](https://itunes.apple.com/fr/app/slack/id803453959?mt=12) e instálala. + +:warning: Si ya estás usando Slack en tu navegador, por favor descarga e instala **la aplicación de escritorio** la cual tiene todas las funciones. + + +### Parámetros + +Abre la aplicación e inicia sesión en `lewagon-alumni`. + +Asegúrate de **subir una foto para tu perfil** :point_down: + +![Cómo subir una foto de perfil en Slack](https://github.com/lewagon/setup/blob/master/images/slack_profile_picture.gif) + +La idea es tener Slack abierto todo el día para compartir enlaces útiles / pedir ayuda / decidir dónde almorzar / etc. + +Para asegurarte de que todo lo relacionado a videollamadas funcione bien, prueba tu cámara y tu micrófono: +- Abre la aplicación Slack +- Haz clic en tu foto de perfil en la esquina superior derecha +- Selecciona "Preferencias" en el menú. +- Haz clic en "Audio y vídeo" en la columna de la izquierda. +- Debajo de "Solución de problemas", haz clic en "Ejecutar una prueba de audio, vídeo y pantalla compartida". La prueba se abrirá en una nueva ventana. +- Comprueba que tus dispositivos preferidos de altavoz, micrófono y cámara aparecen en los menús desplegables y haz clic en "Iniciar prueba" +- Haz clic en el botón verde "Start test" + +![Chequea el micrófono y la cámara con Slack](https://github.com/lewagon/setup/blob/master/images/slack_call_test.png) + +:heavy_check_mark: Cuando termine el test deberías ver mensajes de "Succeed" en verde por lo menos para tu micrófono y tu cámara. :+1: + +:x: Si no es el caso, **contacta a un profesor**. + +¡También puedes instalar la aplicación Slack en tu smartphone e iniciar sesión en `lewagon-alumni`! + + +## Parámetros de macOS + +### Seguridad + +Es imperativo proteger tu sesión con una contraseña. Si todavía no es el caso, ve a ` > System Settings... > Users & Groups` y cambia la contraseña de tu computadora. Luego ve a ` > System Settings... > Lock Screen`. Configura el sistema para que pida la contraseña cada `5 seconds` después de regresar de la opción suspender y cuando se active el protector de pantalla. + +También puedes ir a ` > System Settings... > Desktop & Dock` y hacer clic en el botón `Hot Corners...` abajo a la izquierda. Selecciona la opción donde al hacer clic en la esquina inferior derecha se active el protector de pantalla. De esa manera al dejar tu escritorio podrás bloquear tu pantalla rápidamente poniendo el cursor del ratón en la esquina inferior derecha. En 5 segundos tu Macbook se bloqueará y te pedirá la contraseña para volver a tu sesión. + +### Teclado + +A medida que te vayas convirtiendo en programador, entenderás que pierdes tiempo cuando quitas las manos del teclado para usar otra herramienta. Por esa razón es importante aprender a minimizar el uso del trackpad o del ratón. Aquí te mostramos algunos trucos para que lo hagas en macOS. + +#### Velocidad del teclado + +Ve a ` > System Settings... > Keyboard`. Coloca a `Key repeat rate` en la posición más rápida (a la derecha) y a `Delay until repeat` en la posición más corta (a la derecha). + +#### macOS para hackers + +[Lee este script](https://github.com/mathiasbynens/dotfiles/blob/master/.macos) y selecciona algunas cosas que creas que serán útiles para ti. Por ejemplo, puedes escribir lo siguiente en la terminal: + +```bash +# Expanding the save panel by default +defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode -bool true +defaults write NSGlobalDomain PMPrintingExpandedStateForPrint -bool true +defaults write NSGlobalDomain PMPrintingExpandedStateForPrint2 -bool true + +# Save screenshots to the Desktop (or elsewhere) +defaults write com.apple.screencapture location "${HOME}/Desktop" + +# etc.. +``` + +### Anclaje de aplicaciones a tu dock + +Usarás frecuentemente casi todas las aplicaciones que has instalado hoy. ¡Anclémoslas a tu dock para que estén a solo un clic de ti! + +Para ello, inicia la aplicación. Haz clic derecho en el ícono de la barra de tareas para hacer que aparezca el menú contextual (también llamado emergente) y selecciona "Options" y después "Keep in Dock". + +![Cómo anclar una aplicación a la barra de tareas en macOS](https://github.com/lewagon/setup/blob/master/images/macos_dock.png) + +Ancla lo siguiente: +- Tu terminal +- Tu explorador de archivos +- VS Code +- Tu navegador de Internet +- Slack + + +## Extra + +Si has terminado la configuración, te pedimos que preguntes si alguien necesita ayuda con la suya (macOS, Linux o Windows). Las primeras clases son a las 2pm. Hablaremos de la configuración que acabas de hacer y de Kitt. + +Si no tienes mucha experiencia con `git` y GitHub, por favor [ve nuevamente el video de este workshop](https://www.youtube.com/watch?v=Z9fIBT2NBGY) (puedes verlo a `1.25` de velocidad). + + diff --git a/macOS.md b/macOS.md index 0ff6141..54be954 100644 --- a/macOS.md +++ b/macOS.md @@ -6,6 +6,7 @@ Please **read them carefully and execute all commands in the following order**. Let's start :rocket: + ## GitHub account Have you signed up to GitHub? If not, [do it right away](https://github.com/join). @@ -16,6 +17,7 @@ Have you signed up to GitHub? If not, [do it right away](https://github.com/join :point_right: **[Enable Two-Factor Authentication (2FA)](https://docs.github.com/en/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication#configuring-two-factor-authentication-using-text-messages)**. GitHub will send you text messages with a code when you try to log in. This is important for security and also will soon be required in order to contribute code on GitHub. + ## Apple Silicon Chips If you bought your computer after late 2020, chances are it has a new Apple silicon chip instead of an Intel processor: let's find out. @@ -51,6 +53,7 @@ In case you don't see this box, just continue. 🚨 Keep this in mind. You will need to remember later on in the setup whether your computer uses an Apple Silicon chip or is an Apple Intel version + ## A note about quitting apps on a Mac Clicking the little red cross in the top left corner of the application window on a Mac **does not really quit it**, it just closes an active window. To quit the application _for real_ either press `Cmd + Q` when the application is active, or navigate to `APP_NAME` -> `Quit` in the menu bar. @@ -75,6 +78,7 @@ If you receive the following message, you can just skip this step and go to next Otherwise, it will open a window asking you if you want to install some software: click on "Install" and wait. + ![Install xcode-select on macOS](https://github.com/lewagon/setup/blob/master/images/macos_xcode_select_install.png) :heavy_check_mark: If you see the message "The software was installed" then all good :+1: @@ -89,9 +93,10 @@ sudo softwareupdate --clear-catalog Once this is done, you can try to install again. + ## Homebrew -### 1. Install +### 1. Install: On Mac, you need to install [Homebrew](http://brew.sh/) which is a Package Manager. It will be used as soon as we need to install some software. @@ -125,7 +130,7 @@ brew tap homebrew/core If you already have Homebrew, it will tell you so, that's fine, go on. -### 2. Make sure you are on the latest version +### 2. Make sure you are on the latest version: ```bash brew update @@ -143,7 +148,7 @@ brew update
-### 3. Then install some useful software +### 3. Then install some useful software: Proceed running the following in the terminal (you can copy / paste all the lines at once). @@ -160,6 +165,7 @@ brew upgrade xz || brew install xz brew upgrade readline || brew install readline ``` + ## Visual Studio Code ### Installation @@ -182,6 +188,7 @@ code :x: Otherwise, please **contact a teacher** + ## VS Code Extensions ### Installation @@ -210,6 +217,7 @@ Here is a list of the extensions you are installing: - [Jupyter](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter) - [SQLite](https://marketplace.visualstudio.com/items?itemName=alexcvzz.vscode-sqlite) + ## Oh-my-zsh Let's install the `zsh` plugin [Oh My Zsh](https://ohmyz.sh/). @@ -230,15 +238,19 @@ At the end your terminal should look like this: :x: Otherwise, please **ask for a teacher** + ## direnv [direnv](https://direnv.net/) is a shell extension. It makes it easy to deal with per project environment variables. This will be useful in order to customize the behavior of your code. + ``` bash brew install direnv echo 'eval "$(direnv hook zsh)"' >> ~/.zshrc ``` + + ## GitHub CLI CLI is the acronym of [Command-line Interface](https://en.wikipedia.org/wiki/Command-line_interface). @@ -251,7 +263,7 @@ We will use the GitHub CLI (`gh`) to connect to GitHub using *SSH*, a protocol t First in order to **login**, copy-paste the following command in your terminal: -:warning: **DO NOT edit the `email`** +:warning: **DO NOT edit the `email`** — Even though `user:email` looks like a placeholder for your actual email address, it isn't — do not replace it. ```bash gh auth login -s 'user:email' -w --git-protocol ssh @@ -263,7 +275,9 @@ gh auth login -s 'user:email' -w --git-protocol ssh If you already have SSH keys, you will see instead `Upload your SSH public key to your GitHub account?` With the arrows, select your public key file path and press `Enter`. -- `Enter a passphrase for your new SSH key (Optional)`. Type something you want and that you'll remember. It's a password to protect your private key stored on your hard drive. Then press `Enter`. +- `Enter a passphrase for your new SSH key (Optional)`: + - **FOR MOST PEOPLE:** Just press `Enter` to skip. You don't need a passphrase for the bootcamp and it would prompt you every time you use the key. There is a risk, however, that if someone steals your laptop, they could then push to GitHub. + - **IF SECURITY IS REALLY IMPORTANT TO YOU:** Enter a passphrase of your choice and press `Enter`. It's _really_ important that if you enter a passphrase, you write it down somewhere immediately and do not lose/forget it. You will need to enter this frequently. - `Title for your SSH key`. You can leave it at the proposed "GitHub CLI", press `Enter`. @@ -286,10 +300,11 @@ To check that you are properly connected, type: gh auth status ``` -:heavy_check_mark: If you get `Logged in to github.com as `, then all good :+1: +:heavy_check_mark: If you get `Logged in to github.com as `, then all good :+1: :x: If not, **contact a teacher**. + ## Dotfiles Hackers love to refine and polish their shell and tools. We'll start with a great default configuration provided by [Le Wagon](http://github.com/lewagon/dotfiles), stored on GitHub. @@ -310,6 +325,7 @@ There seems to be a problem with the previous step (`gh auth`). There are three options, choose **one**: +
I did not attend the Web Dev or Data Science & AI or Data Analytics bootcamp at Le Wagon @@ -329,6 +345,7 @@ gh repo fork lewagon/dotfiles --clone
+
I already attended a Le Wagon coding bootcamp (Web Development or Data Science & AI or Data Analytics) but I have a new laptop @@ -343,6 +360,7 @@ mkdir -p ~/code/$GITHUB_USERNAME && cd $_ gh repo clone $GITHUB_USERNAME/dotfiles ``` + Open your terminal and go to your `dotfiles` project: ```bash @@ -395,13 +413,15 @@ git push origin master
+
- I already did the setup of a Le Wagon coding bootcamp (WebDev, Data Science & AI, or Data Analytics) on the same laptop before + I already did the setup of a Le Wagon coding bootcamp (WebDev or Data Science & AI or Data Analytics) on the same laptop before This means that you already forked and cloned the GitHub repo `lewagon/dotfiles`, but at that time the configuration was maybe not ready for the current Data Analytics bootcamp. Let's update it. **Ask a TA to join you for the nex steps.** + Open your terminal and go to your `dotfiles` project: ```bash @@ -454,6 +474,7 @@ git push origin master
+ ### Run the dotfiles installer It's time to run the `dotfiles` installer: @@ -479,6 +500,7 @@ cd ~/code/$GITHUB_USERNAME/dotfiles && zsh git_setup.sh Please now **quit** all your opened terminal windows. + ## Installing Python (with [`pyenv`](https://github.com/pyenv/pyenv)) ### Uninstall `conda` @@ -491,8 +513,10 @@ Check if you have `conda` installed on your machine: conda list ``` + If you have `zsh: command not found: conda`, you can **skip** the uninstall of `conda` and jump to the **Install pre-requisites** section. +
conda uninstall instructions @@ -509,13 +533,17 @@ anaconda-clean --yes rm -rf ~/anaconda2 rm -rf ~/anaconda3 rm -rf ~/.anaconda_backup + rm -rf ~/opt + ``` - Remove Anaconda path from your `.bash_profile` - Open the file with `code ~/.bash_profile` - If the file opens find the line matching the following pattern `export PATH="/path/to/anaconda3/bin:$PATH"` and delete the line + - Save the file with `CMD` + `s` + - Restart your terminal with `exec zsh` - Remove Anaconda initialization from your `.zshrc`: - Open the file with `code ~/.zshrc` @@ -523,6 +551,7 @@ rm -rf ~/opt
+ ### Install pre-requisites Before installing Python, please check your `xz` version with: @@ -622,6 +651,7 @@ exec zsh To check if this worked, run `python --version`. If you see `3.12.9`, perfect! If not, ask a TA that will help you debug the problem thanks to `pyenv versions` and `type -a python` (`python` should be using the `.pyenv/shims` version first). + ## Python Virtual Environment Before we start installing relevant Python packages, we will isolate the setup for the Bootcamp into a **dedicated** virtual environment. We will use a `pyenv` plugin called [`pyenv-virtualenv`](https://github.com/pyenv/pyenv-virtualenv). @@ -649,6 +679,7 @@ pyenv global lewagon Great! Anytime we'll install Python package, we'll do it in that environment. + ### Python packages Now that we have a pristine `lewagon` virtual environment, it's time to install some packages in it. @@ -661,6 +692,7 @@ pip install --upgrade pip Then let's install some packages for the first weeks of the program: + If your computer uses **Apple Silicon**, expand the paragraph below and go through it. Otherwise ignore it.
@@ -683,6 +715,8 @@ pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/ma
+ + ## Jupyter Notebook tweaking Let's improve the display of the [`details` disclosure elements](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details) in your notebooks. @@ -696,6 +730,7 @@ mkdir -p $LOCATION curl $SOURCE > $LOCATION/custom.css ``` + ## Python setup check ### Python and packages check @@ -756,6 +791,7 @@ You can close your web browser then terminate the jupyter server with `CTRL` + ` Here you have it! A complete python virtual env with all the third-party packages you'll need for the whole bootcamp. + ## Insomnia > ℹ️ **Why?** Insomnia is one of the best-known API testing tools, and it will be useful in our Introduction to API course. @@ -766,6 +802,8 @@ Here you have it! A complete python virtual env with all the third-party package - Install Insomnia + + ## `gcloud` CLI Before Setting up our Google Cloud Platform account let's configure the `gcloud` CLI (A command line interface for Google Cloud Platform). Run the below and follow the terminal prompts to update your $PATH and enable shell command completion for the `.zshrc` file: @@ -887,7 +925,7 @@ Once this is done, select the standard (free) plan. No need to add the card to A You now have a virtual card which we will use for the GCP setup. -In the main view of the Revolut the app: +In the main view of the Revolut the app - Click on Ready to use - Click on the card @@ -924,10 +962,12 @@ Once the verification goes through, you should receive an email stating that "Yo - Authenticate the `gcloud` CLI with the google account you used for GCP + ```bash gcloud auth login ``` + - Login to your Google account on the new tab opened in your web browser - List your active account and check your email address you used for GCP is present @@ -1022,6 +1062,7 @@ An alternate way to navigate to the Service Accounts page is from the following: - The browser has now saved the service account json file 🔑 in your downloads directory (it is named according to your service account name, something like `le-wagon-data-123456789abc.json`). + - Store the service account json file somewhere you'll remember, for example: ``` bash @@ -1044,6 +1085,8 @@ code ~/.zshrc in the Terminal! 😄 + +
ℹ️ How to find the absolute path of a file? You can drag and drop the file in your terminal. @@ -1095,12 +1138,13 @@ gcloud projects get-iam-policy PROJECT_ID \ Troubleshooting - `AccessDeniedException: 403 The project to be billed is associated with an absent billing account.` - - Make sure that billing is enabled for your Google Cloud Platform project https://cloud.google.com/billing/docs/how-to/modify-project + - Make sure that billing is enabled for your Google Cloud Platform project [https://cloud.google.com/billing/docs/how-to/modify-project](https://cloud.google.com/billing/docs/how-to/modify-project)
🏁 You are done with the GCP setup! -## Kitt + + ## Kitt You should have received an email from Le Wagon inviting you to sign up on [Kitt](https://kitt.lewagon.com) (our learning platform). @@ -1108,6 +1152,7 @@ Then you should receive an additional invitation from Slack, inviting you to the If you haven't, please contact your teaching team. + ## Slack [Slack](https://slack.com/) is a communication platform pretty popular in the tech industry. @@ -1118,6 +1163,7 @@ If you haven't, please contact your teaching team. :warning: If you are already using Slack in your browser, please download and install **the desktop app** which is fully featured. + ### Settings Launch the app and sign in to `lewagon-alumni` organization. @@ -1129,7 +1175,6 @@ Make sure you **upload a profile picture** :point_down: The idea is that you'll have Slack open all day, so that you can share useful links / ask for help / decide where to go to lunch / etc. To ensure that everything is working fine for video calls, let's test your camera and microphone: - - Open the Slack app - Click your profile picture in the top right. - Select `Preferences` from the menu. @@ -1145,6 +1190,7 @@ To ensure that everything is working fine for video calls, let's test your camer You can also install Slack app on your phone and sign in `lewagon-alumni`! + ## macOS settings ### Security @@ -1185,22 +1231,18 @@ To pin an app to your dock, launch the app, right-click on the icon in the taskb ![How to pin an app to the taskbar in macOS](https://github.com/lewagon/setup/blob/master/images/macos_dock.png) -You should pin: - +You must pin: - Your terminal - Your file explorer - VS Code - Your Internet browser - Slack -## Setup completed! - -That's all you need for now! Some of the free trial periods on the tools we use are very short, so from now on, whenever we introduce a new tool or software, we will guide you through the sign-in and installation steps at the beginning of the day. -Ready to start? 🚀 - -## (Bonus) +## Bonus If you are done with your setup, please ask around if some classmates need some help with theirs (macOS, Linux, Windows). We will have our first lectures at 2pm and will talk about the Setup you just did + onboard you on Kitt. If you don't have a lot of experience with `git` and GitHub, please [(re-)watch this workshop](https://www.youtube.com/watch?v=Z9fIBT2NBGY) (`1.25` playback speed is fine). + + diff --git a/macOS_keep_current.es.md b/macOS_keep_current.es.md new file mode 100644 index 0000000..cefaa0c --- /dev/null +++ b/macOS_keep_current.es.md @@ -0,0 +1,317 @@ + +# Cómo mantener tu configuración al día + +Esta sección contiene los pasos que tienes que seguir para asegurarte de que tu configuración esté actualizada. + +Primero y principal, para trabajar en buenas condiciones, asegúrate de que: + +- tienes una conexión internet de alta velocidad +- tu computadora tiene suficiente memoria (8GB) para poder ejecutar tu código eficientemente +- tu computadora tiene suficiente espacio en disco (30GB) para poder trabajar con grandes datasets. + +## git + +Verifica que git funcione: + +``` bash +git --version +``` + +👉 Deberías obtener algo parecido a esto de aquí abajo que te muestra la versión de git: + +``` bash +git version 2.33.0 +``` + +## GitHub + +Verifica que tengas acceso a los repositorios GitHub públicos de Le Wagon + +``` bash +cd ~/code// +git clone git@github.com:lewagon/data-analytics-setup data-analytics-setup +``` + +👉 Se debe clonar el repositorio correctamente: + +``` bash +Cloning into 'data-analytics-setup'... +remote: Enumerating objects: 21, done. +remote: Counting objects: 100% (21/21), done. +remote: Compressing objects: 100% (14/14), done. +Receiving objects: 100% (21/21), done. +Resolving deltas: 100% (6/6), done. +remote: Total 21 (delta 6), reused 16 (delta 1), pack-reused 0 +``` + +👉 Puedes borrar el repositorio clonado + +``` bash +rm -Rf data-analytics-setup +``` + +## Verificación de la configuración de pyenv + +Verifica que tengas un `~/.zprofile` : + +``` bash +cat ~/.zprofile +``` + +👉 Deberías poder ver las líneas siguientes: + +``` bash +# Setup the PATH for pyenv binaries and shims +export PYENV_ROOT="$HOME/.pyenv" +export PATH="$PYENV_ROOT/bin:$PATH" +type -a pyenv > /dev/null && eval "$(pyenv init --path)" +``` + +Si el comando no da ningún resultado, crea el archivo `~/.zprofile`: + +``` bash +cd +touch .zprofile +``` + +Agrega las siguientes líneas a tu `~/.zprofile` : + +``` bash +# Setup the PATH for pyenv binaries and shims +export PYENV_ROOT="$HOME/.pyenv" +export PATH="$PYENV_ROOT/bin:$PATH" +type -a pyenv > /dev/null && eval "$(pyenv init --path)" +``` + +## Creación de un ambiente virtual dedicado + +Actualiza pyenv: + + +``` bash +brew update && brew upgrade pyenv +``` + + +Instala la versión actual de python: + +```bash +pyenv install 3.12.9 +``` + +👉 Asegúrate de que el comando se ejecute completamente y luego **reinicia tu terminal**. + +Remueve el ambiente virtual dedicado actual: + +```bash +pyenv virtualenv-delete lewagon_current +``` + +Crea un nuevo ambiente virtual: + +```bash +pyenv virtualenv 3.12.9 lewagon_current +``` + +Define el nuevo ambiente virtual como predeterminado: + +```bash +pyenv global lewagon_current +``` + +Ahora deberías poder ver que el nuevo ambiente virtual está activado: + +``` bash +pyenv versions +``` + +👉 Aquí hay una muestra del resultado: + +``` bash + system + 3.12.9 + 3.12.9/envs/lewagon_current + 3.7.6 + 3.7.6/envs/lewagon +* lewagon_current + lewagon +``` + +### Instalación de los paquetes del bootcamp + +```bash +pip install -U pip +``` + + +Si tu computadora usa **Apple Silicon**, expande el párrafo de abajo y léelo. Si no es el caso, ignóralo. + +
+ 👉  Configuración para Apple Silicon 👈 + +``` bash +pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/specs/releases/apple_silicon.txt +``` + +
+ +Si tu computadora usa **Apple Intel**, expande el párrafo de abajo y léelo. Si no es el caso, ignóralo. + +
+ 👉  Configuración para Apple Intel 👈 + +``` bash +pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/specs/releases/apple_intel.txt +``` + +
+ + +## GCP + +Asegúrate de que el comando `gcloud` esté conectado con el email de tu cuenta Google Cloud Platform: + +``` bash +gcloud auth list +``` + +👉 Esto muestra los emails de tu cuenta GCP: + +``` bash + Credentialed Accounts +ACTIVE ACCOUNT +* your.email_address@your.email.provider + +To set the active account, run: + $ gcloud config set account `ACCOUNT` +``` + +Verifica el nombre de tu proyecto gcp: + +``` bash +gcloud config list +``` + +👉 Esto muestra tanto el email de tu cuenta GCP como tu proyecto GCP: + +``` bash +[core] +account = your.email_address@your.email.provider +disable_usage_reporting = True +project = your-gcp-project-id + +Your active configuration is: [default] +``` + +Verifica que el email creado para la cuenta de servicio permita que tu código se identifique con GCP: + +``` bash +gcloud iam service-accounts list +``` + +👉 Esto muestra el email de la cuenta de servicio en GCP que permite que tu código se identifique con GCP. + +``` bash +DISPLAY NAME EMAIL DISABLED +your-gcp-project-id your-service-account@your-service-account.iam.gserviceaccount.com False +``` + +Ve a [GCP IAM & Admin / Service Accounts](https://console.cloud.google.com/iam-admin/serviceaccounts): + +- Selecciona tu proyecto +- Haz clic en el email de la cuenta de servicio +- Ve a `PERMISSIONS` +- Asegúrate de que el email de la cuenta de servicio tenga un `Role` configurado como `Owner` + +Verifica que hayas configurado tu máquina para que permita que tu código se identifique con GCP. El archivo de claves json de las credenciales de la cuenta de servicio debe estar conectado al email de la cuenta de servicio correcto: + +``` bash +cat $GOOGLE_APPLICATION_CREDENTIALS +``` + +👉 Esto muestra el contenido de la clave json de las credenciales de la cuenta de servicio: + +``` bash +{ + "type": "service_account", + "project_id": "your-gcp-project-id", + "private_key_id": "a2d4a2d4a2d4a2d4a2d4a2d4a2d4a2d4a2d4a2d4", + "private_key": "-----BEGIN PRIVATE KEY-----\nMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInM=\n-----END PRIVATE KEY-----\n", + "client_email": "your-service-account@your-service-account.iam.gserviceaccount.com", + "client_id": "105410541054105410541", + "auth_uri": "https://accounts.google.com/o/oauth2/auth", + "token_uri": "https://oauth2.googleapis.com/token", + "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", + "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/your-service-account%40your-service-account.iam.gserviceaccount.com" +} +``` + +Asegúrate de que el archivo contenga: + +- el id el proyecto adecuado: your-gcp-project-id +- el email de la cuenta de servicio adecuado: your-service-account@your-service-account.iam.gserviceaccount.com + +👉 Si esto no muestra nada o si el email dentro del archivo no es el de tu cuenta de servicio, regresa al setup. + + +## Chequeo de la configuración de Python + +### Chequeo de Python y packages + +Reinicia tu terminal: + +```bash +cd ~/code && exec zsh +``` + +Verifica tu versión de Python con los siguientes comandos: + +```bash +zsh -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/python_checker.sh)" 3.12.9 +``` + +Ejecuta el comando siguiente para verificar que hayas instalado los paquetes requeridos correctamente: + +```bash +zsh -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/pip_check.sh)" +``` + +Ahora ejecuta el siguiente comando para verificar que puedas cargar estos paquetes: + +```bash +python -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/pip_check.py)" +``` + +### Chequeo de Jupyter + +Ahora verifica que puedas iniciar un servidor de notebook en tu máquina: + +```bash +jupyter notebook +``` + +Tu navegador web debería abrir en una ventana `jupyter`: + +![jupyter.png](images/jupyter.png) + +Haz clic en `New` y, en el menú desplegable, selecciona Python 3 (ipykernel): + +![jupyter_new.png](images/jupyter_new.png) + +Debería abrirse una pestaña en un nuevo notebook: + +![jupyter_notebook.png](images/jupyter_notebook.png) + +Asegúrate de que estés usando la versión correcta de python en el notebook. Abre una celda y ejecuta lo siguiente: + +``` python +import sys; sys.version +``` + +Debería mostrar `3.12.9` seguido de algunos detalles adicionales. Si no es así, consulta con un TA. + +Puedes cerrar tu navegador web y luego cerrar el servidor jupyter con `CTRL` + `C`. + +¡Listo! Ya tienes un virtual env de python completo con todos los paquetes tercerizados que necesitarás en el bootcamp. + + diff --git a/macOS_keep_current.md b/macOS_keep_current.md index 58502a6..75ca520 100644 --- a/macOS_keep_current.md +++ b/macOS_keep_current.md @@ -87,10 +87,12 @@ type -a pyenv > /dev/null && eval "$(pyenv init --path)" Update pyenv : + ``` bash brew update && brew upgrade pyenv ``` + Install the current python version : ```bash @@ -141,6 +143,7 @@ pyenv versions pip install -U pip ``` + If your computer uses **Apple Silicon**, expand the paragraph below and go through it. Otherwise ignore it.
@@ -163,6 +166,7 @@ pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/ma
+ ## GCP Make sure that the `gcloud` command is linked to the email address of your Google Cloud Platform account : @@ -249,6 +253,7 @@ Make sure that the file contains the correct : 👉 If this does not display anything or if the email inside of the file is not the one of your service account, go back to the setup + ## Python setup check ### Python and packages check @@ -308,3 +313,5 @@ It should output `3.12.9` followed by some more details. If not, check with a TA You can close your web browser then terminate the jupyter server with `CTRL` + `C`. Here you have it! A complete python virtual env with all the third-party packages you'll need for the whole bootcamp. + + From 848efc26bbfd302b3f47e67d663c700d65bd252f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABtan=20Manchon?= Date: Tue, 2 Jun 2026 13:21:44 +0200 Subject: [PATCH 02/13] remove es locale --- builds/LINUX.yml | 2 +- builds/LINUX_keep_current.yml | 2 +- builds/VM.yml | 2 +- builds/WINDOWS.yml | 2 +- builds/WINDOWS_keep_current.yml | 2 +- builds/macOS.yml | 2 +- builds/macOS_keep_current.yml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/builds/LINUX.yml b/builds/LINUX.yml index 3f48e09..06ef97c 100644 --- a/builds/LINUX.yml +++ b/builds/LINUX.yml @@ -1,6 +1,6 @@ os: linux -locales: [en, es] +locales: [en] partials: - intro - setup/github diff --git a/builds/LINUX_keep_current.yml b/builds/LINUX_keep_current.yml index a11a636..f69e9d9 100644 --- a/builds/LINUX_keep_current.yml +++ b/builds/LINUX_keep_current.yml @@ -1,6 +1,6 @@ os: linux -locales: [en, es] +locales: [en] partials: - keep_current - python_checkup diff --git a/builds/VM.yml b/builds/VM.yml index 9887e56..779ba1a 100644 --- a/builds/VM.yml +++ b/builds/VM.yml @@ -1,6 +1,6 @@ os: linux -locales: [en, es] +locales: [en] partials: - intro - setup/github diff --git a/builds/WINDOWS.yml b/builds/WINDOWS.yml index 2b0ac3d..a213bb4 100644 --- a/builds/WINDOWS.yml +++ b/builds/WINDOWS.yml @@ -1,6 +1,6 @@ os: windows -locales: [en, es] +locales: [en] partials: - intro - setup/github diff --git a/builds/WINDOWS_keep_current.yml b/builds/WINDOWS_keep_current.yml index 42310e5..e230908 100644 --- a/builds/WINDOWS_keep_current.yml +++ b/builds/WINDOWS_keep_current.yml @@ -1,6 +1,6 @@ os: windows -locales: [en, es] +locales: [en] partials: - keep_current - python_checkup diff --git a/builds/macOS.yml b/builds/macOS.yml index 2074664..7b9c0a3 100644 --- a/builds/macOS.yml +++ b/builds/macOS.yml @@ -1,6 +1,6 @@ os: macos -locales: [en, es] +locales: [en] partials: - intro - setup/github diff --git a/builds/macOS_keep_current.yml b/builds/macOS_keep_current.yml index f2c7f47..7665829 100644 --- a/builds/macOS_keep_current.yml +++ b/builds/macOS_keep_current.yml @@ -1,6 +1,6 @@ os: macos -locales: [en, es] +locales: [en] partials: - keep_current - python_checkup From e7ba548b3526a680cd76b7cf23943b59586cc5eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABtan=20Manchon?= Date: Tue, 2 Jun 2026 13:22:00 +0200 Subject: [PATCH 03/13] remove es locale --- LINUX.es.md | 1020 ---------------------- LINUX_keep_current.es.md | 301 ------- README.es.md | 47 -- VM.es.md | 879 ------------------- WINDOWS.es.md | 1631 ------------------------------------ WINDOWS_keep_current.es.md | 301 ------- macOS.es.md | 1186 -------------------------- macOS_keep_current.es.md | 317 ------- 8 files changed, 5682 deletions(-) delete mode 100644 LINUX.es.md delete mode 100644 LINUX_keep_current.es.md delete mode 100644 README.es.md delete mode 100644 VM.es.md delete mode 100644 WINDOWS.es.md delete mode 100644 WINDOWS_keep_current.es.md delete mode 100644 macOS.es.md delete mode 100644 macOS_keep_current.es.md diff --git a/LINUX.es.md b/LINUX.es.md deleted file mode 100644 index 8d3528b..0000000 --- a/LINUX.es.md +++ /dev/null @@ -1,1020 +0,0 @@ -# Instrucciones para la configuración - -Aquí abajo encontrarás las instrucciones para configurar tu computadora para [el curso de Data Analytics de Le Wagon](https://www.lewagon.com/data-analytics-course/full-time) - -Por favor **léelas cuidadosamente y ejecuta todos los comandos en el siguiente orden**. Si tienes algún problema, no dudes en pedirle ayuda a una profesor :raising_hand: - -¡Comencemos! :rocket: - - -## Cuenta GitHub - -¿Ya tienes una cuenta GitHub? Si no es el caso, [ábrela ya](https://github.com/join). - -:point_right: **[Sube una foto](https://github.com/settings/profile)** y escribe tu nombre correctamente en tu cuenta GitHub. Esto es importante porque nosotros usaremos un tablero de comando interno con tu avatar. Por favor hazlo **ahora** antes de dar un paso más en esta guía. - -![Foto GitHub](https://github.com/lewagon/setup/blob/master/images/github_picture.png) - -:point_right: **[Habilita la Autenticación de Dos Factores (2FA)](https://docs.github.com/en/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication#configuring-two-factor-authentication-using-text-messages)**. GitHub te enviará mensajes de texto con un código cuando intentes iniciar sesión. Esto es importante para la seguridad y también pronto será necesario para contribuir código en GitHub. - - -## Visual Studio Code - -### Instalación - -Instala el editor de texto [Visual Studio Code](https://code.visualstudio.com). - -Copia (presionando `Cmd` + `C`) el comando de aquí abajo y luego pégalo en tu terminal (`Ctrl` + `Shift` + `v`): - -```bash -wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg -sudo install -o root -g root -m 644 packages.microsoft.gpg /etc/apt/trusted.gpg.d/ -sudo sh -c 'echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/trusted.gpg.d/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" > /etc/apt/sources.list.d/vscode.list' -rm -f packages.microsoft.gpg -sudo apt update -sudo apt install -y code -``` - -Escribe tu contraseña cuando estos comandos te la pidan. - -:warning: Cuando escribas tu contraseña no verás nada en la pantalla. **Esto es normal**. Es una herramienta de seguridad para ocultar tanto el contenido de tu contraseña como su longitud. Simplemente escribe tu contraseña y presiona `Enter` al terminar. - -### Abrir desde la terminal - -Ahora abre VS Code desde **la terminal**: - -```bash -code -``` - -:heavy_check_mark: Si se acaba de abrir una ventana de VS Code, entonces todo está bien :+1: - -:x: Si no es el caso, por favor **pídele ayuda a un profesor**. - - -## Extensiones de VS Code - -### Instalación - -Instala algunas extensiones útiles para VS Code. - -```bash -code --install-extension ms-vscode.sublime-keybindings -code --install-extension emmanuelbeziat.vscode-great-icons -code --install-extension MS-vsliveshare.vsliveshare -code --install-extension ms-python.python -code --install-extension KevinRose.vsc-python-indent -code --install-extension ms-python.vscode-pylance -code --install-extension ms-toolsai.jupyter -code --install-extension alexcvzz.vscode-sqlite -``` - -Aquí está la lista de las extensiones que estás instalando: - -- [Sublime Text Keymap and Settings Importer](https://marketplace.visualstudio.com/items?itemName=ms-vscode.sublime-keybindings) -- [VSCode Great Icons](https://marketplace.visualstudio.com/items?itemName=emmanuelbeziat.vscode-great-icons) -- [Live Share](https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsliveshare) -- [Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python) -- [Python Indent](https://marketplace.visualstudio.com/items?itemName=KevinRose.vsc-python-indent) -- [Pylance](https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance) -- [Jupyter](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter) -- [SQLite](https://marketplace.visualstudio.com/items?itemName=alexcvzz.vscode-sqlite) - - -## Herramientas de línea de comando - -### Comprueba la configuración regional (locale) - -La "locale" es un mecanismo que permite adaptar los programas a su idioma y país. - -Comprobemos que la configuración regional por defecto es el inglés: - -```bash -locale -``` - -Si la salida no contiene `LANG=en_US.UTF-8`, ejecute el siguiente comando en un Ubuntu terminal para instalar la locale inglesa: - -```bash -sudo locale-gen en_US.UTF-8 -``` - -Si después, recibes una advertencia (`bash: warning: setlocale: LC_ALL: cannot change locale (en_US.utf-8)`) en tu terminal, por favor haz lo siguiente: - -
- Generar la configuración regional<>/summary> - -Por favor, ejecuta estas líneas en tu terminal. - -```bash -sudo update-locale LANG=en_US.UTF8 -sudo apt-get update -sudo apt-get install language-pack-en language-pack-en-base manpages -``` -
- -### Zsh & Git - -En lugar de usar el `bash` [shell](https://en.wikipedia.org/wiki/Shell_(computing)) predeterminado, usaremos `zsh`. - -También utilizaremos [`git`](https://git-scm.com/), un programa de línea de comando para control de versiones. - -Vamos a instalarlos, junto con otros programas útiles: -- Abre una **terminal de Ubuntu** -- Copia y pega los siguientes comandos: - -```bash -sudo apt update -``` - -```bash -sudo apt install -y curl git imagemagick jq unzip vim zsh -``` - -Estos comandos te pedirán tu contraseña: escríbela. - -:warning: Cuando escribas tu contraseña no verás nada en la pantalla. **Esto es normal**. Es una herramienta de seguridad para ocultar tanto el contenido de tu contraseña como su longitud. Simplemente escribe tu contraseña y presiona `Enter` al terminar. - -### Instalación de la CLI de GitHub - -Instalemos la [CLI oficial de GitHub](https://cli.github.com) (Interfaz de Línea de Comando). Es un programa que se usa para interactuar con tu cuenta GitHub por medio de la línea de comando. - -En tu terminal, copia y pega los siguientes comandos y escribe tu contraseña si te la piden: - -```bash -sudo apt remove -y gitsome # gh command can conflict with gitsome if already installed -curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg -echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null -sudo apt update -sudo apt install -y gh -``` - -Ejecuta el comando que te mostramos a continuación para verificar que `gh` se haya instalado correctamente en tu máquina: - -```bash -gh --version -``` - -:heavy_check_mark: Si ves esta versión `gh version X.Y.Z (YYYY-MM-DD)`, puedes continuar trabajando :+1: - -:x: Si no es el caso, por favor **contacta a un profesor** - - -## Oh-my-zsh - -Instalemos el plugin `zsh` [Oh My Zsh](https://ohmyz.sh/). - -Ejecuta este comando en la terminal: - -```bash -sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" -``` - -Si te preguntan "Do you want to change your default shell to zsh?", presiona `Y` - -Cuando termines, tu terminal debería lucir así: - -![La terminal de Ubuntu con OhMyZsh](https://github.com/lewagon/setup/blob/master/images/oh_my_zsh.png) - -:heavy_check_mark: Si es el caso, puedes continuar :+1: - -:x: Si no, por favor **pídele ayuda a un profesor**. - - -## direnv - -[direnv](https://direnv.net/) es una extensión del shell. Facilita trabajar con variables de entorno por proyecto, lo cual será útil para customizar el comportamiento de tu código. - - -``` bash -sudo apt-get update; sudo apt-get install direnv -echo 'eval "$(direnv hook zsh)"' >> ~/.zshrc -``` - - - -## GitHub CLI - -CLI es una abreviación de [Command-line Interface](https://en.wikipedia.org/wiki/Command-line_interface) que significa interfaz de línea de comando. - -En esta sección usaremos [GitHub CLI](https://cli.github.com/) para interactuar directamente con GitHub desde la terminal. - -Usaremos la GitHub CLI (`gh`) para conectarnos a GitHub utilizando *SSH*, un protocolo para iniciar la sesión utilizando claves SSH en lugar de la famosa pareja nombre de usuario y contraseña. - -Ya debería haberse instalado en tu computadora con los comandos que ejecutaste anteriormente. - -Lo primero que hay que hacer para **iniciar sesión** es copiar y pegar el comando siguiente en tu terminal: - -:warning: **NO edites el `email`** — Aunque `user:email` parezca un marcador de posición para tu dirección de correo real, no lo es — no lo reemplaces. - -```bash -gh auth login -s 'user:email' -w --git-protocol ssh -``` - -`gh` le hará algunas preguntas: - -- `Generate a new SSH key to add to your GitHub account?` Presiona `Enter` para pedirle a gh que genere las claves SSH por ti. - - Si ya tienes claves SSH, verás en su lugar `Upload your SSH public key to your GitHub account?`Con las flechas, selecciona la ruta de tu archivo de clave pública y pulsa `Intro`. - -- `Enter a passphrase for your new SSH key (Optional)`: - - **PARA LA MAYORÍA DE LOS ESTUDIANTES:** Simplemente presiona `Enter` para omitir. No necesitas una contraseña para el bootcamp y te la pediría cada vez que uses la clave. Sin embargo, hay un riesgo de que si alguien roba tu computadora, pueda subir código a GitHub. - - **SI LA SEGURIDAD ES MUY IMPORTANTE PARA TI:** Escribe una contraseña de tu elección y presiona `Enter`. Es _muy_ importante que si introduces una contraseña, la anotes en algún lugar inmediatamente y no la pierdas ni la olvides. Tendrás que introducirla con frecuencia. - -- `Title for your SSH key`. Puede dejarlo en la propuesta "GitHub CLI", presiona `Enter`. - -Obtendrás el siguiente resultado: - -```bash -! First copy your one-time code: 0EF9-D015 -- Press Enter to open github.com in your browser... -``` - -Selecciona y copia el código (`0EF9-D015` en el ejemplo) y luego presiona `Enter`. - -Tu navegador se abrirá y te pedirá que autorices GitHub CLI para usar tu cuenta GitHub. Acepta y espera un poco. - -Regresa a la terminal, presiona `Enter` nuevamente y listo. Eso es todo. - -Para verificar que están conectado correctamente, escribe lo siguiente: - -```bash -gh auth status -``` - -:heavy_check_mark: Si obtienes este mensaje: `Logged in to github.com as `, significa que todo está bien :+1: - -:x: De lo contrario, **contacta a un profesor**. - - -## CLI de Google Cloud - -Instala la CLI de `gcloud` para comunicar con [Google Cloud Platform](https://cloud.google.com/) a través de la terminal: - -```bash -echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list -sudo apt-get install apt-transport-https ca-certificates gnupg -curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add - -sudo apt-get update && sudo apt-get install google-cloud-sdk -sudo apt-get install google-cloud-sdk-app-engine-python -``` - -👉 [Documentación para la instalación](https://cloud.google.com/sdk/docs/install#deb) - - -## Dotfiles - -Los hackers aman mejorar sus shells y sus herramientas. Comenzaremos con una configuración por defecto genial proporcionada por [Le Wagon](http://github.com/lewagon/dotfiles) y almacenada en GitHub. - -### Verifica tu configuración de GitHub CLI - -Primero, hagamos una verificación rápida. Abre tu terminal y ejecuta el comando siguiente: - -```bash -export GITHUB_USERNAME=`gh api user | jq -r '.login'` -echo $GITHUB_USERNAME -``` - -Deberías ver tu usuario GitHub. Si no es así, **no hagas más nada** y pide ayuda. -Parece que hay un problema con el paso anterior (`gh auth`). - -### Fork y/o clone los archivos de configuración - -Hay tres opciones, escoge **una**: - - -
- - No he hecho el bootcamp de Web Development o Data Science & AI o Data Analytics de Le Wagon - - - Tu configuración es personal, así que necesitas tu propio repositorio para almacenarla. Primero tienes que hacer el fork del repositorio en tu cuenta GitHub. - -Hacer un fork significa que crearás un nuevo repositorio en tu cuenta GitHub idéntico al original. Tendrás un nuevo repositorio en tu cuenta GitHub, `your_github_username/dotfiles`. El fork es necesario porque cada uno de ustedes necesitará poner información específica (e.g. tu nombre) en esos archivos. - -Ejecutemos este comando para hacer un **fork** del repositorio `lewagon/dotfiles` y clonarlo: - -```bash -mkdir -p ~/code/$GITHUB_USERNAME && cd $_ -gh repo fork lewagon/dotfiles --clone -``` - -
- - -
- - Ya hice el bootcamp de Web Development o Data Science & AI o Data Analytics de Le Wagon pero tengo una nueva laptop - - -Esto significa que ya has hecho el fork del repositorio GitHub lewagon/dotfiles pero tal vez la configuración para el nuevo bootcamp de Data Analytics no estaba lista en ese momento.Actualicémoslo. **Pide a un TA que te acompañe en los siguientes pasos.** - -Es hora de clonarlo el repositorio en tu laptop: - -```bash -mkdir -p ~/code/$GITHUB_USERNAME && cd $_ -gh repo clone lewagon/dotfiles -``` - - -Abre tu terminal y ve a tu proyecto `dotfiles`: - -```bash -cd ~/code/$GITHUB_USERNAME$/dotfiles -``` - -Es hora de fusionar los cambios de lewagon/dotfiles en los tuyos: - -1. Commit la versión actual de tus dotfiles: - ```bash - git add . - git status # Check what will be committed - git commit -m "Version prior to new setup" - ``` - -1. Trae los cambios del repositorio upstream: `git merge upstream/master` - -1. Verifica que no estés en estado MERGING. Si lo estás, resuelve los conflictos. - -1. Haz un `git diff HEAD~1 HEAD` para revisar qué cambió. - -1. Si todo parece estar en orden, continúa. - -
- ¿Demasiados conflictos? - - - Vamos a tomar la versión actual de `lewagon/dotfiles`. - - Primero aborta la merge: `git merge --abort`. - - Ejecuta `code .` - - En VS Code, abre el archivo zshrc. Reemplaza su contenido con la [versión más reciente](https://raw.githubusercontent.com/lewagon/dotfiles/master/zshrc). Luego guárdalo en el disco. - - Aún en VS Code, abre el archivo `zprofile`. Reemplaza su contenido con la [versión más reciente](https://raw.githubusercontent.com/lewagon/dotfiles/master/zprofile). Luego guárdalo en el disco. - - Regresa a la terminal y ejecuta un `git diff` y verifica que esto no haya eliminado ninguna configuración personal que quisieras conservar. - -
- -Es hora de guardar tus cambios y subirlos. - -```bash -git add . -git commit -m "Update for Data Analytics bootcamp" -git push origin master -``` - -
- - -
- - Ya hice el bootcamp de Web Development o Data Science & AI o Data Analytics de Le Wagon en la misma laptop - - -Esto significa que ya has hecho el fork del repositorio GitHub lewagon/dotfiles pero tal vez la configuración para el nuevo bootcamp de Data Analytics no estaba lista en ese momento. Actualicémoslo. **Pide a un TA que te acompañe en los siguientes pasos.** - - -Abre tu terminal y ve a tu proyecto `dotfiles`: - -```bash -cd ~/code/$GITHUB_USERNAME$/dotfiles -``` - -Es hora de fusionar los cambios de lewagon/dotfiles en los tuyos: - -1. Commit la versión actual de tus dotfiles: - ```bash - git add . - git status # Check what will be committed - git commit -m "Version prior to new setup" - ``` - -1. Trae los cambios del repositorio upstream: `git merge upstream/master` - -1. Verifica que no estés en estado MERGING. Si lo estás, resuelve los conflictos. - -1. Haz un `git diff HEAD~1 HEAD` para revisar qué cambió. - -1. Si todo parece estar en orden, continúa. - -
- ¿Demasiados conflictos? - - - Vamos a tomar la versión actual de `lewagon/dotfiles`. - - Primero aborta la merge: `git merge --abort`. - - Ejecuta `code .` - - En VS Code, abre el archivo zshrc. Reemplaza su contenido con la [versión más reciente](https://raw.githubusercontent.com/lewagon/dotfiles/master/zshrc). Luego guárdalo en el disco. - - Aún en VS Code, abre el archivo `zprofile`. Reemplaza su contenido con la [versión más reciente](https://raw.githubusercontent.com/lewagon/dotfiles/master/zprofile). Luego guárdalo en el disco. - - Regresa a la terminal y ejecuta un `git diff` y verifica que esto no haya eliminado ninguna configuración personal que quisieras conservar. - -
- -Es hora de guardar tus cambios y subirlos. - -```bash -git add . -git commit -m "Update for Data Analytics bootcamp" -git push origin master -``` - -
- - -### Ejecuta el instalador de dotfiles - -Ejecuta el instalador de `dotfiles`. - -```bash -cd ~/code/$GITHUB_USERNAME/dotfiles && zsh install.sh -``` - -Verifica los emails registrados en tu cuenta GitHub. Deberás seleccionar uno de ellos en el próximo paso: - -```bash -gh api user/emails | jq -r '.[].email' -``` - -Ejecuta el instalador de git: - -```bash -cd ~/code/$GITHUB_USERNAME/dotfiles && zsh git_setup.sh -``` - -:point_up: Esto te **guiará** con tu nombre (`FirstName LastName`) y con tu email. -:warning: Cuidado, **debes** poner uno de los emails de la lista de arriba que te suministra el comando `gh api ...` usado anteriormente. Si haces eso, Kitt no podrá hacerle seguimiento a tu progreso. Cualquier correo que elijas se mostrará **públicamente** en internet. 💡 Selecciona la dirección `@users.noreply.github.com` si no quieres que tu correo electrónico aparezca en los repositorios públicos a los que puedas contribuir. - -Ahora **cierra** todas las ventanas de tu terminal que tengas abiertas por favor. - - -## Desahilitación de la solicitud de SSH passphrase - -No vas a querer que te pidan tu passphrase cada vez que te comuniques con un repositorio remoto. Por eso debes agregarle plugin `ssh-agent` a `oh my zsh`: - -Primero abre el archivo `.zshrc`: - -```bash -code ~/.zshrc -``` - -Luego: -- Identifica la línea que comienza por `plugins=` -- Agrega `ssh-agent` al final de la lista de plugins - -La lista debería verse de la siguiente manera: - -```bash -plugins=(gitfast last-working-dir common-aliases zsh-syntax-highlighting history-substring-search pyenv ssh-agent) -``` - -:heavy_check_mark: Guarda el archivo `.zshrc` con `Ctrl` + `S` y cierra tu editor de texto. - - -## Instalando Python (con [`pyenv`](https://github.com/pyenv/pyenv)) - -### Desinstalar `conda` - -Como estamos utilizando `pyenv` para instalar y gestionar la versión de Python, necesitamos desinstalar [`conda`](https://docs.conda.io/projects/conda/en/latest/), otro gestor de paquetes que podrías tener en tu computadora si previamente instalaste [Anaconda](https://www.anaconda.com/). De esta forma, evitaremos problemas con Python más adelante. - -Chequea si tienes `conda` instalado en tu computadora: - -```bash -conda list -``` - -Si aparece `zsh: command not found: conda`, puedes **saltear** la desinstalación de `conda` e ir directo a la sección de **Instalar pre-requisitos**. - - -
- Instrucciones de desinstalación conda - -- Instala el paquete Anaconda-Clean desde tu terminal y comienza la limpieza -```bash -conda install anaconda-clean -anaconda-clean --yes -``` -- Remueve todos los directorios de Anaconda -```bash -rm -rf ~/anaconda2 -rm -rf ~/anaconda3 -rm -rf ~/.anaconda_backup - -``` -- Elimina el directorio Anaconda de tu `.bash_profile` - - Abre el archivo con `code ~/.bash_profile` - - Si el archivo abre, busca la línea que coincida con el siguiente patrón `export PATH="/path/to/anaconda3/bin:$PATH"` y eliminala - - - Guarda el archivo con `CTRL` + `s` - -- Reinicia la terminal con `exec zsh` -- Remueve la inicializaciópn de Anaconda de tu `.zshrc`: - - Abre el archivo con `code ~/.zshrc` - - Remueve las líneas de código desde `>>> conda initialize >>>` hasta `<<< conda initialize <<<` -
- - -### Instala `pyenv` - -Ubuntu viene con una versión vieja de Python que no queremos usar. Tal vez ya hayas instalado Anaconda u otro programa para utilizar Python y paquetes de Ciencia de Datos. Si es así, no pasa nada ya que haremos una configuración profesional de Python que te permitirá cambiar de versión cuando quieras al escribir `python` en la terminal. - -Primero instala `pyenv` con el siguiente comando en la Terminal: - -```bash -git clone https://github.com/pyenv/pyenv.git ~/.pyenv -exec zsh -``` - -Instala algunas [dependencias](https://github.com/pyenv/pyenv/wiki/common-build-problems#prerequisites) necesarias para crear Python desde `pyenv`: - -```bash -sudo apt-get update; sudo apt-get install make build-essential libssl-dev zlib1g-dev \ -libbz2-dev libreadline-dev sqlite3 libsqlite3-dev wget curl llvm \ -libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev \ -python3-dev -``` - -### Instala Python - -Instala la [última versión estable de Python](https://www.python.org/doc/versions/) que sea aceptada en el currículum de Le Wagon: - -```bash -pyenv install 3.12.9 -``` - -Este comando puede tomar un tiempo en ejecutarse. Esto es completamente normal. ¡No dudes en ayudar a los estudiantes que estén sentados cerca de ti! - -OK. Cuando este comando termine de ejecutarse, le diremos al sistema que use esta versión de Python **por defecto**. Esto se hace con: - -```bash -pyenv global 3.12.9 -exec zsh -``` - -Para verificar que esto haya funcionado, ejecuta `python --version`. Si ves `3.12.9`, ¡todo está bien! Si no, pídele ayuda a un TA para resolver el problema por medio de `versiones de pyenv` y `type -a python` (`python` debería estar usando la versión `.pyenv/shims` de primero). - - -## Entorno Virtual de Python - -Antes de instalar paquetes de Python, aislaremos la configuración del Bootcamp en un entorno virtual **dedicado**. Usaremos un plugin `pyenv` llamado [`pyenv-virtualenv`](https://github.com/pyenv/pyenv-virtualenv). - -### Instala un virtualenv - -Primero instala este plugin: - -```bash -git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv -exec zsh -``` - -Crea el entorno virtual que usaremos durante todo el bootcamp: - -```bash -pyenv virtualenv 3.12.9 lewagon -``` - -Define el entorno virtual con lo siguiente: - -```bash -pyenv global lewagon -``` - -¡Genial! Ahora cada vez que queramos instalar un paquete Python, lo haremos en ese entorno. - - -### Paquetes de Python - -Ahora que tenemos el ambiente virtual de `lewagon` adecuado, es hora de instalarle algunos paquetes. - -Primero, actualiza `pip`, la herramienta para instalar Paquetes Python desde [pypi.org](https://pypi.org). Ejecuta lo siguiente en la última terminal donde esté activado el virtualenv de `lewagon`: - -```bash -pip install --upgrade pip -``` - -Ahora instala algunos paquetes para las primeras semanas del programa: - - - -``` bash -pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/specs/releases/linux.txt -``` - - - - -## Mejora Jupyter Notebook - -Mejora la visualización del [elemento `details` para revelación de información](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details) en tus notebooks. - -Ejecuta las siguientes líneas para crear una hoja de estilos `custom.css` en tu directorio de configuración de Jupyter: - -```bash -LOCATION=$(jupyter --config-dir)/custom -SOURCE=https://raw.githubusercontent.com/lewagon/data-analytics-setup/refs/heads/master/specs/jupyter/custom.css -mkdir -p $LOCATION -curl $SOURCE > $LOCATION/custom.css -``` - - -## Chequeo de la configuración de Python - -### Chequeo de Python y packages - -Reinicia tu terminal: - -```bash -cd ~/code && exec zsh -``` - -Verifica tu versión de Python con los siguientes comandos: - -```bash -zsh -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/python_checker.sh)" 3.12.9 -``` - -Ejecuta el comando siguiente para verificar que hayas instalado los paquetes requeridos correctamente: - -```bash -zsh -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/pip_check.sh)" -``` - -Ahora ejecuta el siguiente comando para verificar que puedas cargar estos paquetes: - -```bash -python -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/pip_check.py)" -``` - -### Chequeo de Jupyter - -Ahora verifica que puedas iniciar un servidor de notebook en tu máquina: - -```bash -jupyter notebook -``` - -Tu navegador web debería abrir en una ventana `jupyter`: - -![jupyter.png](images/jupyter.png) - -Haz clic en `New` y, en el menú desplegable, selecciona Python 3 (ipykernel): - -![jupyter_new.png](images/jupyter_new.png) - -Debería abrirse una pestaña en un nuevo notebook: - -![jupyter_notebook.png](images/jupyter_notebook.png) - -Asegúrate de que estés usando la versión correcta de python en el notebook. Abre una celda y ejecuta lo siguiente: - -``` python -import sys; sys.version -``` - -Debería mostrar `3.12.9` seguido de algunos detalles adicionales. Si no es así, consulta con un TA. - -Puedes cerrar tu navegador web y luego cerrar el servidor jupyter con `CTRL` + `C`. - -¡Listo! Ya tienes un virtual env de python completo con todos los paquetes tercerizados que necesitarás en el bootcamp. - - -## Insomnia - -> ℹ️ **¿Por qué?** Insomnia es una de las herramientas más conocidas para probar APIs, y será útil en nuestro curso de Introducción a las APIs. - -- Ve a [https://insomnia.rest/download](https://insomnia.rest/download) - -- Descarga Insomnia - -- Instala Insomnia - - -## Configuración de Google Cloud Platform - -[GCP](https://cloud.google.com/) es una solución en la nube que usarás para colocar tus productos basados en Machine Learning en producción. - -🚨 Si estás en el grupo de estudiantes del **Bootcamp de Medio Tiempo**, ¡IGNORA ESTA SECCIÓN POR AHORA! **GCP** ofrece $300 en créditos durante 3 meses, así que no es buena idea activar tu cuenta GCP demasiado pronto 🙅‍♂️ - -### Preparación del Proyecto - -- Ve a [Google Cloud](https://console.cloud.google.com/) y crea una cuenta si aún no tienes una -- En la consola de Cloud, en la lista de proyectos, selecciona o crea un proyecto Cloud - -![](images/gcp-create-project.png) - -- Asígnale un nombre como `Wagon Bootcamp` por ejemplo -- Verás que se creará un `ID` automáticamente para el proyecto e. g. `wagon-bootcamp-123456` - -![](images/gcp_project.png) - -### Idioma de la cuenta - -Abre las preferencias en tu cuenta GCP para facilitar el seguimiento de las instrucciones durante el bootcamp: - -[https://myaccount.google.com/language](https://myaccount.google.com/language) - -Si el *idioma de preferencia* no es: - -- **English** -- **United States** - -Cámbialo a inglés: - -- Haz clic en el logo edición (es una lapicera) -- Selecciona **English** -- Selecciona **United States** -- Haz clic en **Select** - -### Cuenta de facturación - -Ahora conecta tu cuenta con tu tarjeta de crédito. Este paso es obligatorio para poder usar los servicios que suministra GCP. No te preocupes, podrás utilizar la mayoría de los servicios de GCP por medio de créditos gratuitos durante el bootcamp. - -![](images/gcp-billing.png) - -- Haz clic en **Billing** -- Haz clic en **MANAGE BILLING ACCOUNTS** -- Haz clic en **ADD BILLING ACCOUNT** -- Asígnale un nombre a tu cuenta de facturación, e. g. `My Billing Account` -- Haz clic en "I have read..." y acepta los términos de uso -- Haz clic en **CONTINUE** -- Selecciona tu tipo de cuenta: `Individual` -- Agrega tu nombre y dirección - -Verás que tienes créditos gratuitos con un valor de "$300 a utilizar en los próximos 90 días". - -- Haz clic en los detalles de la tarjeta -- Agrega la información de tu tarjeta de crédito -- Haz clic en **START MY FREE TRIAL**. Esto significa comenzar mi período de prueba. - -Cuando termines, verifica que la cuenta de facturación esté conectada con tu proyecto GCP. - -- Selecciona tu proyecto -- Ve a **Billing** -- Selecciona **LINK A BILLING ACCOUNT** -- Selecciona `My Billing Account` -- Haz clic en **SET ACCOUNT** - -Ahora deberías ver lo siguiente: - -```bash -Free trial status: $300 credit and 91 days remaining - with a full account, you'll get unlimited access to all of Google Cloud Platform. -``` - -Esto significa Estado de período de prueba: crédito de $300 y 91 días para usarlo - con la full account, tendrás acceso ilimitado a todo lo que ofrece Google Cloud Platform. - -
- 👉 Si no tienes una tarjeta de crédito 👈 - -Si no tienes una tarjeta de crédito, puedes abrir una cuenta en **Revolut**. -Revolut es una aplicación que funciona como un banco y que te permitirá crear una tarjeta de crédito virtual conectada a la dirección de facturación de tu smartphone. - -Ignora este paso si ya tienes una tarjeta de crédito. Simplemente úsala para hacer la configuración. - -Descarga la app Revolut o ve a [revolut](https://www.revolut.com/a-radically-better-account) y sigue los pasos para descargar la app (introduce tu número de teléfono móvil y haz clic en Get Started). - -- Abre la app Revolut -- Agrega tu número de teléfono móvil -- Agrega el código de verificación que recibiste por SMS -- La app te preguntará por tu país, dirección, primer y segundo nombre, fecha de nacimiento y el email -- La app también te pedirá tu profesión y una selfie -- La app te pedirá una foto de tu documento nacional de identidad o pasaporte - -Cuando termines, selecciona el plan estándar (gratuito). No tienes que agregar la tarjeta a Apple pay, pedir que te envíen una tarjeta a tu domicilio ni tampoco agregar dinero a la cuenta. - -Ahora tienes una tarjeta virtual que podrás usar para hacer la configuración de GCP. - -En la vista principal de la app Revolut - -- Haz clic en Ready to use -- Haz clic en the card -- Haz clic en Show card details -- Toma nota de la información de la tarjeta de crédito virtual y úsala para completar la configuración de GCP - -
- -
- 👉 Si recibes un email de Google diciendo "Urgent: your billing account XXXXXX-XXXXXX-XXXXXX has been suspended" 👈 - -Esto puede pasar justo después de haber creado la cuenta en Revolut. - -- Haz clic en PROCEED TO VERIFICATION -- Te pedirán que envíes una foto de tu tarjeta de crédito (solo los últimos 4 dígitos, nada más) -- Si ya has usado **Revolut**, puedes enviar una captura de pantalla de tu tarjeta de crédito virtual (no olvides quitar la fecha de vencimiento de la captura) -- Explica que estás haciendo el bootcamp de Le Wagon, que no tienes una tarjeta de crédito y que acabas de crear una cuenta en Revolut para poder configurar GCP para el bootcamp con una tarjeta de crédito virtual - -Es posible que te validen la cuenta pero también es posible que te pidan más información en los próximos 30 minutos. - -Cuando la cuenta sea validada recibirás un email diciendo lo siguiente: "Your Google Cloud Platform billing account XXXXXX-XXXXXX-XXXXXX has been fully reinstated and is ready to use.". Esto significa que tu cuenta Google Cloud Platform ha sido restablecida - -
- -### Habilitación de servicios de GCP - -- Asegúrate de que la facturación está habilitada para tu proyecto Google Cloud - -ℹ️ Tienes un **crédito de $300** para usar con recursos de Google Cloud. Esto será más que suficiente para el bootcamp. - -- [Habilita las APIs BigQuery y Compute Engine](https://console.cloud.google.com/flows/enableapi?apiid=bigquery,compute) (Esto puede tomar varios minutos) - -### Configuración de Cloud sdk - -- Autentica el CLI de `gcloud` con la cuenta que usaste para GCP - -```bash -gcloud auth login -``` - -- Inicia sesión en tu cuenta Google en la nueva pestaña que se abrió en tu navegador -- Lista la cuenta que tienes activa y verifica que el email que usaste para GCP está ahí - -```bash -gcloud auth list -``` - -- Define tu proyecto actual (reemplaza `PROJECT_ID` con el `ID` de tu proyecto e.g. `wagon-bootcamp-123456`) - -```bash -gcloud config set project PROJECT_ID -``` - -- Lista la cuenta que tienes activa y tu proyecto actual y verifica que tu proyecto está ahí - -```bash -gcloud config list -``` - -### Crea una llave 🔑 de cuenta de servicio - -Como ya creaste una cuenta `GCP account` y un `project` (identificado por su `PROJECT_ID`), vamos a configurar las acciones (llamadas API calls) que quieres que tu código ejecute. - -
- 🤔 ¿Por qué necesitamos una clave de cuenta de servicio? - - Creaste una `cuenta GCP` conectada a una tarjeta de crédito. Te facturarán de acuerdo al uso que les des a los recursos de **Google Cloud Platform**. El cargo se hará si utilizas algo después de que el período de prueba gratuito se haya terminado o si te excedes del límite de consumo que te permite dicho período. - - En tu `cuenta GCP` has creado un solo `proyecto GCP` identificado por su `PROJECT_ID`. Los `proyectos GCP` te permiten organizar y monitorear la manera en que consumes los recursos **GCP** de forma más precisa. En este bootcamp solo crearemos un solo proyecto. - - Ahora necesitamos una manera de saber qué recursos nuestro código podrá consumir dentro de un `GCP project`. Nuestro código consume recursos GCP por medio de llamadas API. - - Ya que las llamadas API no son gratuitas, es importante definir cuidadosamente cómo nuestro código las utilizará. Sin embargo, durante el bootcamp no habrá restricciones. Le permitiremos a nuestro código que utilice todas las API **GCP** sin restricciones. - - Así como pueden haber varios proyectos asociados a una cuenta GCP, un proyecto puede estar compuesto de muchos servicios (cualquier paquete de código, sin importar su formato, que necesite utilizar llamadas a la API de GCP para cumplir con su propósito). - - GCP exige que los servicios de los proyectos que usen llamadas API se registren en la plataforma y que se configuren sus credenciales por medio del acceso concedido a una `service account`. - - Por ahora solo tendremos que usar un solo servicio y crearemos la `service account` correspondiente. -
- -Ya que la [service account](https://cloud.google.com/iam/docs/service-accounts) es lo que identifica tu aplicación (y por ende tu cuenta de facturación GCP y, en última instancia, tu tarjeta de crédito), lo mejor es ser cuidadoso en los próximos pasos. - -⚠️ **No compartas la 🔑 del archivo json de tu cuenta de servicio** ⚠️ No la guardes en tu escritorio ni en tu código base de git (incluso si tu repositorio git es privado). Que no se te olvide en un lugar como la máquina de café y, por supuesto, no la envíes en un tweet. - -- Ve a la [página de las cuentas de servicio](https://console.cloud.google.com/apis/credentials/serviceaccountkey) -- Selecciona tu proyecto en la lista de proyectos recientes si te piden que -- Crees una cuenta de servicio: - - Haz clic en **CREATE SERVICE ACCOUNT** que significa crear une cuenta de servicio: - - Define un `Service account name` para esa cuenta. Esto significa Nombre de cuenta de servicio - - Haz clic en **CREATE AND CONTINUE** que significa crear y continuar - - Haz clic en **Select a role** que significa selecciona un rol. Escoge `Quick access/Basic` luego **Owner**. Esto otorga acceso total a todos los recursos - - Haz clic en **CONTINUE** - - Haz clic en **DONE** -- Descarga la 🔑 del archivo json de la cuenta de servicio: - - Haz clic en la cuenta de servicio recién creada - - Haz clic en **KEYS** - - Haz clic en **ADD KEY** y luego en **Create new key** - - Selecciona **JSON** y haz clic en **CREATE** - -![](images/gcp_create_key.png) - -El navegador acaba de guardar la 🔑 del archivo json de la cuenta de servicio en tu carpeta de descargas (el nombre se le asigna según el nombre de la cuenta de servicio. Es algo como `le-wagon-data-123456789abc.json`) - - -- Guarda el archivo json de la cuenta de servicio en un lugar que recuerdes. Por ejemplo: - -``` bash -/home/LINUX_USERNAME/code/GITHUB_NICKNAME/gcp/SERVICE_ACCOUNT_JSON_FILE_CONTAINING_YOUR_SECRET_KEY.json -``` - -- Guarda la **ruta absoluta** al archivo `JSON` como una variable de entorno: - -``` bash -echo 'export GOOGLE_APPLICATION_CREDENTIALS=/path/to/the/SERVICE_ACCOUNT_JSON_FILE_CONTAINING_YOUR_SECRET_KEY.json' >> ~/.aliases -``` - - - -
- ℹ️ ¿Cómo encontrar la ruta absoluta de un archivo? - Puedes arrastrar el archivo a tu terminal. -
- -**Reinicia** tu terminal y ejecuta lo siguiente: - -``` bash -echo $GOOGLE_APPLICATION_CREDENTIALS -``` - -Deberías obtener la siguiente información: - -```bash -/some/absolute/path/to/your/gcp/SERVICE_ACCOUNT_JSON_FILE_CONTAINING_YOUR_SECRET_KEY.json -``` - -Ahora verifica si la ruta al archivo json de tu cuenta de servicio es el correcto: - -``` bash -cat $(echo $GOOGLE_APPLICATION_CREDENTIALS) -``` - -👉 Este comando debería mostrar el contenido del archivo json de tu cuenta de servicio. Si no es el caso, pídele ayuda a un TA 🙏 - -Tu código y utilidades ahora pueden acceder a los recursos de tu cuenta GCP. - -Continuemos con los últimos pasos de la configuración... - -- Lista las cuentas de servicio asociadas a tu cuenta activa y a tu proyecto actual -```bash -gcloud iam service-accounts list -``` -- Recupera el email de la cuenta de servicio e. g. `SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com` -- Lista los roles de la cuenta de servicio desde la cli (reemplaza el PROJECT_ID y el SERVICE_ACCOUNT_EMAIL) -```bash -gcloud projects get-iam-policy PROJECT_ID \ ---flatten="bindings[].members" \ ---format='table(bindings.role)' \ ---filter="bindings.members:SERVICE_ACCOUNT_EMAIL" -``` -- Ahora deberías ver que tu cuenta de servicio tiene el rol de `roles/owner` - -
- Resolución de problemas - -- `AccessDeniedException: 403 The project to be billed is associated with an absent billing account.`. Esto significa que el proyecto a facturar está asociado a una cuenta de facturación que no está habilitada - - Asegúrate de habilitar la facturación para tu proyecto https://cloud.google.com/billing/docs/how-to/modify-project -
- -🏁 Listo. ¡Has terminado la configuración de GCP! - - - ## Kitt - -Deberías haber recibido un correo electrónico de Le Wagon invitándote a registrarte en [Kitt](https://kitt.lewagon.com) (nuestra plataforma de aprendizaje). - -Entonces deberías recibir una invitación adicional de Slack, invitándote a la comunidad de los alumni de Le Wagon en slack (donde podrás chatear con tus compañeros y todos los demás alumni). Haz clic en **Join** y completa la información que te piden. - -Si no lo has recibido, por favor contacta a tu equipo de enseñanza. - - -## Slack - -[Slack](https://slack.com/) es una plataforma de comunicación popular en la industria tech. - -### Instalación - -[Descarga la aplicación Slack](https://get.slack.help/hc/en-us/articles/212924728-Slack-for-Linux-beta-) e instálala. - -:warning: Si ya estás usando Slack en tu navegador, por favor descarga e instala **la aplicación de escritorio** la cual tiene todas las funciones. - - -### Parámetros - -Abre la aplicación e inicia sesión en `lewagon-alumni`. - -Asegúrate de **subir una foto para tu perfil** :point_down: - -![Cómo subir una foto de perfil en Slack](https://github.com/lewagon/setup/blob/master/images/slack_profile_picture.gif) - -La idea es tener Slack abierto todo el día para compartir enlaces útiles / pedir ayuda / decidir dónde almorzar / etc. - -Para asegurarte de que todo lo relacionado a videollamadas funcione bien, prueba tu cámara y tu micrófono: -- Abre la aplicación Slack -- Haz clic en tu foto de perfil en la esquina superior derecha -- Selecciona "Preferencias" en el menú. -- Haz clic en "Audio y vídeo" en la columna de la izquierda. -- Debajo de "Solución de problemas", haz clic en "Ejecutar una prueba de audio, vídeo y pantalla compartida". La prueba se abrirá en una nueva ventana. -- Comprueba que tus dispositivos preferidos de altavoz, micrófono y cámara aparecen en los menús desplegables y haz clic en "Iniciar prueba" -- Haz clic en el botón verde "Start test" - -![Chequea el micrófono y la cámara con Slack](https://github.com/lewagon/setup/blob/master/images/slack_call_test.png) - -:heavy_check_mark: Cuando termine el test deberías ver mensajes de "Succeed" en verde por lo menos para tu micrófono y tu cámara. :+1: - -:x: Si no es el caso, **contacta a un profesor**. - -¡También puedes instalar la aplicación Slack en tu smartphone e iniciar sesión en `lewagon-alumni`! - - -## Extra - -Si has terminado la configuración, te pedimos que preguntes si alguien necesita ayuda con la suya (macOS, Linux o Windows). Las primeras clases son a las 2pm. Hablaremos de la configuración que acabas de hacer y de Kitt. - -Si no tienes mucha experiencia con `git` y GitHub, por favor [ve nuevamente el video de este workshop](https://www.youtube.com/watch?v=Z9fIBT2NBGY) (puedes verlo a `1.25` de velocidad). - - diff --git a/LINUX_keep_current.es.md b/LINUX_keep_current.es.md deleted file mode 100644 index 78fe7e6..0000000 --- a/LINUX_keep_current.es.md +++ /dev/null @@ -1,301 +0,0 @@ - -# Cómo mantener tu configuración al día - -Esta sección contiene los pasos que tienes que seguir para asegurarte de que tu configuración esté actualizada. - -Primero y principal, para trabajar en buenas condiciones, asegúrate de que: - -- tienes una conexión internet de alta velocidad -- tu computadora tiene suficiente memoria (8GB) para poder ejecutar tu código eficientemente -- tu computadora tiene suficiente espacio en disco (30GB) para poder trabajar con grandes datasets. - -## git - -Verifica que git funcione: - -``` bash -git --version -``` - -👉 Deberías obtener algo parecido a esto de aquí abajo que te muestra la versión de git: - -``` bash -git version 2.33.0 -``` - -## GitHub - -Verifica que tengas acceso a los repositorios GitHub públicos de Le Wagon - -``` bash -cd ~/code// -git clone git@github.com:lewagon/data-analytics-setup data-analytics-setup -``` - -👉 Se debe clonar el repositorio correctamente: - -``` bash -Cloning into 'data-analytics-setup'... -remote: Enumerating objects: 21, done. -remote: Counting objects: 100% (21/21), done. -remote: Compressing objects: 100% (14/14), done. -Receiving objects: 100% (21/21), done. -Resolving deltas: 100% (6/6), done. -remote: Total 21 (delta 6), reused 16 (delta 1), pack-reused 0 -``` - -👉 Puedes borrar el repositorio clonado - -``` bash -rm -Rf data-analytics-setup -``` - -## Verificación de la configuración de pyenv - -Verifica que tengas un `~/.zprofile` : - -``` bash -cat ~/.zprofile -``` - -👉 Deberías poder ver las líneas siguientes: - -``` bash -# Setup the PATH for pyenv binaries and shims -export PYENV_ROOT="$HOME/.pyenv" -export PATH="$PYENV_ROOT/bin:$PATH" -type -a pyenv > /dev/null && eval "$(pyenv init --path)" -``` - -Si el comando no da ningún resultado, crea el archivo `~/.zprofile`: - -``` bash -cd -touch .zprofile -``` - -Agrega las siguientes líneas a tu `~/.zprofile` : - -``` bash -# Setup the PATH for pyenv binaries and shims -export PYENV_ROOT="$HOME/.pyenv" -export PATH="$PYENV_ROOT/bin:$PATH" -type -a pyenv > /dev/null && eval "$(pyenv init --path)" -``` - -## Creación de un ambiente virtual dedicado - -Actualiza pyenv: - - -``` bash -cd $(pyenv root) && git pull -``` - - -Instala la versión actual de python: - -```bash -pyenv install 3.12.9 -``` - -👉 Asegúrate de que el comando se ejecute completamente y luego **reinicia tu terminal**. - -Remueve el ambiente virtual dedicado actual: - -```bash -pyenv virtualenv-delete lewagon_current -``` - -Crea un nuevo ambiente virtual: - -```bash -pyenv virtualenv 3.12.9 lewagon_current -``` - -Define el nuevo ambiente virtual como predeterminado: - -```bash -pyenv global lewagon_current -``` - -Ahora deberías poder ver que el nuevo ambiente virtual está activado: - -``` bash -pyenv versions -``` - -👉 Aquí hay una muestra del resultado: - -``` bash - system - 3.12.9 - 3.12.9/envs/lewagon_current - 3.7.6 - 3.7.6/envs/lewagon -* lewagon_current - lewagon -``` - -### Instalación de los paquetes del bootcamp - -```bash -pip install -U pip -``` - - - -``` bash -pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/specs/releases/linux.txt -``` - - - -## GCP - -Asegúrate de que el comando `gcloud` esté conectado con el email de tu cuenta Google Cloud Platform: - -``` bash -gcloud auth list -``` - -👉 Esto muestra los emails de tu cuenta GCP: - -``` bash - Credentialed Accounts -ACTIVE ACCOUNT -* your.email_address@your.email.provider - -To set the active account, run: - $ gcloud config set account `ACCOUNT` -``` - -Verifica el nombre de tu proyecto gcp: - -``` bash -gcloud config list -``` - -👉 Esto muestra tanto el email de tu cuenta GCP como tu proyecto GCP: - -``` bash -[core] -account = your.email_address@your.email.provider -disable_usage_reporting = True -project = your-gcp-project-id - -Your active configuration is: [default] -``` - -Verifica que el email creado para la cuenta de servicio permita que tu código se identifique con GCP: - -``` bash -gcloud iam service-accounts list -``` - -👉 Esto muestra el email de la cuenta de servicio en GCP que permite que tu código se identifique con GCP. - -``` bash -DISPLAY NAME EMAIL DISABLED -your-gcp-project-id your-service-account@your-service-account.iam.gserviceaccount.com False -``` - -Ve a [GCP IAM & Admin / Service Accounts](https://console.cloud.google.com/iam-admin/serviceaccounts): - -- Selecciona tu proyecto -- Haz clic en el email de la cuenta de servicio -- Ve a `PERMISSIONS` -- Asegúrate de que el email de la cuenta de servicio tenga un `Role` configurado como `Owner` - -Verifica que hayas configurado tu máquina para que permita que tu código se identifique con GCP. El archivo de claves json de las credenciales de la cuenta de servicio debe estar conectado al email de la cuenta de servicio correcto: - -``` bash -cat $GOOGLE_APPLICATION_CREDENTIALS -``` - -👉 Esto muestra el contenido de la clave json de las credenciales de la cuenta de servicio: - -``` bash -{ - "type": "service_account", - "project_id": "your-gcp-project-id", - "private_key_id": "a2d4a2d4a2d4a2d4a2d4a2d4a2d4a2d4a2d4a2d4", - "private_key": "-----BEGIN PRIVATE KEY-----\nMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInM=\n-----END PRIVATE KEY-----\n", - "client_email": "your-service-account@your-service-account.iam.gserviceaccount.com", - "client_id": "105410541054105410541", - "auth_uri": "https://accounts.google.com/o/oauth2/auth", - "token_uri": "https://oauth2.googleapis.com/token", - "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", - "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/your-service-account%40your-service-account.iam.gserviceaccount.com" -} -``` - -Asegúrate de que el archivo contenga: - -- el id el proyecto adecuado: your-gcp-project-id -- el email de la cuenta de servicio adecuado: your-service-account@your-service-account.iam.gserviceaccount.com - -👉 Si esto no muestra nada o si el email dentro del archivo no es el de tu cuenta de servicio, regresa al setup. - - -## Chequeo de la configuración de Python - -### Chequeo de Python y packages - -Reinicia tu terminal: - -```bash -cd ~/code && exec zsh -``` - -Verifica tu versión de Python con los siguientes comandos: - -```bash -zsh -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/python_checker.sh)" 3.12.9 -``` - -Ejecuta el comando siguiente para verificar que hayas instalado los paquetes requeridos correctamente: - -```bash -zsh -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/pip_check.sh)" -``` - -Ahora ejecuta el siguiente comando para verificar que puedas cargar estos paquetes: - -```bash -python -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/pip_check.py)" -``` - -### Chequeo de Jupyter - -Ahora verifica que puedas iniciar un servidor de notebook en tu máquina: - -```bash -jupyter notebook -``` - -Tu navegador web debería abrir en una ventana `jupyter`: - -![jupyter.png](images/jupyter.png) - -Haz clic en `New` y, en el menú desplegable, selecciona Python 3 (ipykernel): - -![jupyter_new.png](images/jupyter_new.png) - -Debería abrirse una pestaña en un nuevo notebook: - -![jupyter_notebook.png](images/jupyter_notebook.png) - -Asegúrate de que estés usando la versión correcta de python en el notebook. Abre una celda y ejecuta lo siguiente: - -``` python -import sys; sys.version -``` - -Debería mostrar `3.12.9` seguido de algunos detalles adicionales. Si no es así, consulta con un TA. - -Puedes cerrar tu navegador web y luego cerrar el servidor jupyter con `CTRL` + `C`. - -¡Listo! Ya tienes un virtual env de python completo con todos los paquetes tercerizados que necesitarás en el bootcamp. - - diff --git a/README.es.md b/README.es.md deleted file mode 100644 index 99d9de7..0000000 --- a/README.es.md +++ /dev/null @@ -1,47 +0,0 @@ -## Configuración del Bootcamp de Data Analytics - -Por favor escoge tu sistema operativo: - - - - - - - -
- - macOS - - - - Windows - - - - Linux - -
- -## Mantén tu configuración al día después del bootcamp - -Por favor escoge tu sistema operativo: - - - - - - - -
- - macOS - - - - Windows - - - - Linux - -
diff --git a/VM.es.md b/VM.es.md deleted file mode 100644 index 49af1b8..0000000 --- a/VM.es.md +++ /dev/null @@ -1,879 +0,0 @@ -# Instrucciones para la configuración - -Aquí abajo encontrarás las instrucciones para configurar tu computadora para [el curso de Data Analytics de Le Wagon](https://www.lewagon.com/data-analytics-course/full-time) - -Por favor **léelas cuidadosamente y ejecuta todos los comandos en el siguiente orden**. Si tienes algún problema, no dudes en pedirle ayuda a una profesor :raising_hand: - -¡Comencemos! :rocket: - - -## Cuenta GitHub - -¿Ya tienes una cuenta GitHub? Si no es el caso, [ábrela ya](https://github.com/join). - -:point_right: **[Sube una foto](https://github.com/settings/profile)** y escribe tu nombre correctamente en tu cuenta GitHub. Esto es importante porque nosotros usaremos un tablero de comando interno con tu avatar. Por favor hazlo **ahora** antes de dar un paso más en esta guía. - -![Foto GitHub](https://github.com/lewagon/setup/blob/master/images/github_picture.png) - -:point_right: **[Habilita la Autenticación de Dos Factores (2FA)](https://docs.github.com/en/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication#configuring-two-factor-authentication-using-text-messages)**. GitHub te enviará mensajes de texto con un código cuando intentes iniciar sesión. Esto es importante para la seguridad y también pronto será necesario para contribuir código en GitHub. - - - - -## Configuración de Google Cloud Platform - -[GCP](https://cloud.google.com/) es una solución en la nube que usarás para colocar tus productos basados en Machine Learning en producción. - -🚨 Si estás en el grupo de estudiantes del **Bootcamp de Medio Tiempo**, ¡IGNORA ESTA SECCIÓN POR AHORA! **GCP** ofrece $300 en créditos durante 3 meses, así que no es buena idea activar tu cuenta GCP demasiado pronto 🙅‍♂️ - -### Preparación del Proyecto - -- Ve a [Google Cloud](https://console.cloud.google.com/) y crea una cuenta si aún no tienes una -- En la consola de Cloud, en la lista de proyectos, selecciona o crea un proyecto Cloud - -![](https://github.com/lewagon/data-engineering-setup/blob/main/images/gcp-create-project.png) - -- Asígnale un nombre como `Wagon Bootcamp` por ejemplo -- Verás que se creará un `ID` automáticamente para el proyecto e. g. `wagon-bootcamp-123456` - -![](https://github.com/lewagon/data-engineering-setup/blob/main/images/gcp_project.png) - -### Idioma de la cuenta - -Abre las preferencias en tu cuenta GCP para facilitar el seguimiento de las instrucciones durante el bootcamp: - -https://myaccount.google.com/language - -Si el *idioma de preferencia* no es: -- **English** -- **United States** - -Cámbialo a inglés: -- Haz clic en el logo edición (es una lapicera) -- Selecciona **English** -- Selecciona **United States** -- Haz clic en **Select** - -### Cuenta de facturación - -Ahora conecta tu cuenta con tu tarjeta de crédito. Este paso es obligatorio para poder usar los servicios que suministra GCP. No te preocupes, podrás utilizar la mayoría de los servicios de GCP por medio de créditos gratuitos durante el bootcamp. - -![](https://github.com/lewagon/data-engineering-setup/blob/main/images/gcp-billing.png) - -- Haz clic en **Billing** -- Haz clic en **MANAGE BILLING ACCOUNTS** -- Haz clic en **ADD BILLING ACCOUNT** -- Asígnale un nombre a tu cuenta de facturación, e. g. `My Billing Account` -- Haz clic en "I have read..." y acepta los términos de uso -- Haz clic en **CONTINUE** -- Selecciona tu tipo de cuenta: `Individual` -- Agrega tu nombre y dirección - -Verás que tienes créditos gratuitos con un valor de "$300 a utilizar en los próximos 90 días". - -- Haz clic en los detalles de la tarjeta -- Agrega la información de tu tarjeta de crédito -- Haz clic en **START MY FREE TRIAL**. Esto significa comenzar mi período de prueba. - -Cuando termines, verifica que la cuenta de facturación esté conectada con tu proyecto GCP. - -- Selecciona tu proyecto -- Ve a **Billing** -- Selecciona **LINK A BILLING ACCOUNT** -- Selecciona `My Billing Account` -- Haz clic en **SET ACCOUNT** - -Ahora deberías ver lo siguiente: - -``` -Free trial status: $300 credit and 91 days remaining - with a full account, you'll get unlimited access to all of Google Cloud Platform. -``` - -Esto significa Estado de período de prueba: crédito de $300 y 91 días para usarlo - con la full account, tendrás acceso ilimitado a todo lo que ofrece Google Cloud Platform. - -
- 👉 Si no tienes una tarjeta de crédito 👈 - - -Si no tienes una tarjeta de crédito, puedes abrir una cuenta en **Revolut**. -Revolut es una aplicación que funciona como un banco y que te permitirá crear una tarjeta de crédito virtual conectada a la dirección de facturación de tu smartphone. - -Ignora este paso si ya tienes una tarjeta de crédito. Simplemente úsala para hacer la configuración. - -Descarga la app Revolut o ve a [revolut](https://www.revolut.com/a-radically-better-account) y sigue los pasos para descargar la app (introduce tu número de teléfono móvil y haz clic en Get Started). - -- Abre la app Revolut -- Agrega tu número de teléfono móvil -- Agrega el código de verificación que recibiste por SMS -- La app te preguntará por tu país, dirección, primer y segundo nombre, fecha de nacimiento y el email -- La app también te pedirá tu profesión y una selfie -- La app te pedirá una foto de tu documento nacional de identidad o pasaporte - -Cuando termines, selecciona el plan estándar (gratuito). No tienes que agregar la tarjeta a Apple pay, pedir que te envíen una tarjeta a tu domicilio ni tampoco agregar dinero a la cuenta. - -Ahora tienes una tarjeta virtual que podrás usar para hacer la configuración de GCP. - -En la vista principal de la app Revolut -- Haz clic en Ready to use -- Haz clic en the card -- Haz clic en Show card details -- Toma nota de la información de la tarjeta de crédito virtual y úsala para completar la configuración de GCP - -
- -
- 👉 Si recibes un email de Google diciendo "Urgent: your billing account XXXXXX-XXXXXX-XXXXXX has been suspended" 👈 - - -Esto puede pasar justo después de haber creado la cuenta en Revolut. - -- Haz clic en PROCEED TO VERIFICATION -- Te pedirán que envíes una foto de tu tarjeta de crédito (solo los últimos 4 dígitos, nada más) -- Si ya has usado **Revolut**, puedes enviar una captura de pantalla de tu tarjeta de crédito virtual (no olvides quitar la fecha de vencimiento de la captura) -- Explica que estás haciendo el bootcamp de Le Wagon, que no tienes una tarjeta de crédito y que acabas de crear una cuenta en Revolut para poder configurar GCP para el bootcamp con una tarjeta de crédito virtual - -Es posible que te validen la cuenta pero también es posible que te pidan más información en los próximos 30 minutos. - -Cuando la cuenta sea validada recibirás un email diciendo lo siguiente: "Your Google Cloud Platform billing account XXXXXX-XXXXXX-XXXXXX has been fully reinstated and is ready to use.". Esto significa que tu cuenta Google Cloud Platform ha sido restablecida - -
- -### Habilitación de servicios de GCP - -- Asegúrate de que la facturación está habilitada para tu proyecto Google Cloud - -ℹ️ Tienes un **crédito de $300** para usar con recursos de Google Cloud. Esto será más que suficiente para el bootcamp. - -- [Habilita las APIs AI Platform Training & Prediction y Compute Engine APIs](https://console.cloud.google.com/flows/enableapi?apiid=ml.googleapis.com,compute_component&_ga=2.269215094.662509797.1580849510-2071889129.1567861089&_gac=1.154971594.1580849512.CjwKCAiAyeTxBRBvEiwAuM8dnbZ6uMwizbZW44J2mBCX6ncEjwjwpgF8S8QsvhYAXLkJ8awDnIRTNRoCJ_0QAvD_BwE) (Esto puede tomar varios minutos) - -### Configuración de Cloud sdk - -- Autentica el CLI de `gcloud` con la cuenta que usaste para GCP -```bash -gcloud auth login -``` -- Inicia sesión en tu cuenta Google en la nueva pestaña que se abrió en tu navegador -- Lista la cuenta que tienes activa y verifica que el email que usaste para GCP está ahí -```bash -gcloud auth list -``` -- Define tu proyecto actual (reemplaza `PROJECT_ID` con el `ID` de tu proyecto e.g. `wagon-bootcamp-123456`) -```bash -gcloud config set project PROJECT_ID -``` -- Lista la cuenta que tienes activa y tu proyecto actual y verifica que tu proyecto está ahí -```bash -gcloud config list -``` - -### Crea una llave 🔑 de cuenta de servicio - -Como ya creaste una cuenta `GCP account` y un `project` (identificado por su `PROJECT_ID`), vamos a configurar las acciones (llamadas API calls) que quieres que tu código ejecute. - -
- 🤔 ¿Por qué necesitamos una clave de cuenta de servicio? - - - Creaste una `cuenta GCP` conectada a una tarjeta de crédito. Te facturarán de acuerdo al uso que les des a los recursos de **Google Cloud Platform**. El cargo se hará si utilizas algo después de que el período de prueba gratuito se haya terminado o si te excedes del límite de consumo que te permite dicho período. - - En tu `cuenta GCP` has creado un solo `proyecto GCP` identificado por su `PROJECT_ID`. Los `proyectos GCP` te permiten organizar y monitorear la manera en que consumes los recursos **GCP** de forma más precisa. En este bootcamp solo crearemos un solo proyecto. - - Ahora necesitamos una manera de saber qué recursos nuestro código podrá consumir dentro de un `GCP project`. Nuestro código consume recursos GCP por medio de llamadas API. - - Ya que las llamadas API no son gratuitas, es importante definir cuidadosamente cómo nuestro código las utilizará. Sin embargo, durante el bootcamp no habrá restricciones. Le permitiremos a nuestro código que utilice todas las API **GCP** sin restricciones. - - Así como pueden haber varios proyectos asociados a una cuenta GCP, un proyecto puede estar compuesto de muchos servicios (cualquier paquete de código, sin importar su formato, que necesite utilizar llamadas a la API de GCP para cumplir con su propósito). - - GCP exige que los servicios de los proyectos que usen llamadas API se registren en la plataforma y que se configuren sus credenciales por medio del acceso concedido a una `service account`. - - Por ahora solo tendremos que usar un solo servicio y crearemos la `service account` correspondiente. -
- -Ya que la [service account](https://cloud.google.com/iam/docs/service-accounts) es lo que identifica tu aplicación (y por ende tu cuenta de facturación GCP y, en última instancia, tu tarjeta de crédito), lo mejor es ser cuidadoso en los próximos pasos. - -⚠️ **No compartas la 🔑 del archivo json de tu cuenta de servicio** ⚠️ No la guardes en tu escritorio ni en tu código base de git (incluso si tu repositorio git es privado). Que no se te olvide en un lugar como la máquina de café y, por supuesto, no la envíes en un tweet. - -- Ve a la [página de las cuentas de servicio](https://console.cloud.google.com/apis/credentials/serviceaccountkey) -- Selecciona tu proyecto en la lista de proyectos recientes si te piden que -- Crees una cuenta de servicio: - - Haz clic en **CREATE SERVICE ACCOUNT** que significa crear une cuenta de servicio: - - Define un `Service account name` para esa cuenta. Esto significa Nombre de cuenta de servicio - - Haz clic en **CREATE AND CONTINUE** que significa crear y continuar - - Haz clic en **Select a role** que significa selecciona un rol. Escoge `Quick access/Basic` luego **Owner**. Esto otorga acceso total a todos los recursos - - Haz clic en **CONTINUE** - - Haz clic en **DONE** -- Descarga la 🔑 del archivo json de la cuenta de servicio: - - Haz clic en la cuenta de servicio recién creada - - Haz clic en **KEYS** - - Haz clic en **ADD KEY** y luego en **Create new key** - - Selecciona **JSON** y haz clic en **CREATE** - -![](https://github.com/lewagon/data-engineering-setup/blob/main/images/gcp_create_key.png) - -El navegador acaba de guardar la 🔑 del archivo json de la cuenta de servicio en tu carpeta de descargas (el nombre se le asigna según el nombre de la cuenta de servicio. Es algo como `le-wagon-data-123456789abc.json`) - - - - - - - - -## Extensiones de VS Code - -### Instalación - -Instala algunas extensiones útiles para VS Code. - -```bash -code --install-extension ms-vscode.sublime-keybindings -code --install-extension emmanuelbeziat.vscode-great-icons -code --install-extension MS-vsliveshare.vsliveshare -code --install-extension ms-python.python -code --install-extension KevinRose.vsc-python-indent -code --install-extension ms-python.vscode-pylance -code --install-extension ms-toolsai.jupyter -code --install-extension alexcvzz.vscode-sqlite -``` - -Aquí está la lista de las extensiones que estás instalando: - -- [Sublime Text Keymap and Settings Importer](https://marketplace.visualstudio.com/items?itemName=ms-vscode.sublime-keybindings) -- [VSCode Great Icons](https://marketplace.visualstudio.com/items?itemName=emmanuelbeziat.vscode-great-icons) -- [Live Share](https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsliveshare) -- [Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python) -- [Python Indent](https://marketplace.visualstudio.com/items?itemName=KevinRose.vsc-python-indent) -- [Pylance](https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance) -- [Jupyter](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter) -- [SQLite](https://marketplace.visualstudio.com/items?itemName=alexcvzz.vscode-sqlite) - - -## Herramientas de línea de comando - -### Comprueba la configuración regional (locale) - -La "locale" es un mecanismo que permite adaptar los programas a su idioma y país. - -Comprobemos que la configuración regional por defecto es el inglés: - -```bash -locale -``` - -Si la salida no contiene `LANG=en_US.UTF-8`, ejecute el siguiente comando en un Ubuntu terminal para instalar la locale inglesa: - -```bash -sudo locale-gen en_US.UTF-8 -``` - -Si después, recibes una advertencia (`bash: warning: setlocale: LC_ALL: cannot change locale (en_US.utf-8)`) en tu terminal, por favor haz lo siguiente: - -
- Generar la configuración regional<>/summary> - -Por favor, ejecuta estas líneas en tu terminal. - -```bash -sudo update-locale LANG=en_US.UTF8 -sudo apt-get update -sudo apt-get install language-pack-en language-pack-en-base manpages -``` -
- -### Zsh & Git - -En lugar de usar el `bash` [shell](https://en.wikipedia.org/wiki/Shell_(computing)) predeterminado, usaremos `zsh`. - -También utilizaremos [`git`](https://git-scm.com/), un programa de línea de comando para control de versiones. - -Vamos a instalarlos, junto con otros programas útiles: -- Abre una **terminal de Ubuntu** -- Copia y pega los siguientes comandos: - -```bash -sudo apt update -``` - -```bash -sudo apt install -y curl git imagemagick jq unzip vim zsh -``` - -Estos comandos te pedirán tu contraseña: escríbela. - -:warning: Cuando escribas tu contraseña no verás nada en la pantalla. **Esto es normal**. Es una herramienta de seguridad para ocultar tanto el contenido de tu contraseña como su longitud. Simplemente escribe tu contraseña y presiona `Enter` al terminar. - -### Instalación de la CLI de GitHub - -Instalemos la [CLI oficial de GitHub](https://cli.github.com) (Interfaz de Línea de Comando). Es un programa que se usa para interactuar con tu cuenta GitHub por medio de la línea de comando. - -En tu terminal, copia y pega los siguientes comandos y escribe tu contraseña si te la piden: - -```bash -sudo apt remove -y gitsome # gh command can conflict with gitsome if already installed -curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg -echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null -sudo apt update -sudo apt install -y gh -``` - -Ejecuta el comando que te mostramos a continuación para verificar que `gh` se haya instalado correctamente en tu máquina: - -```bash -gh --version -``` - -:heavy_check_mark: Si ves esta versión `gh version X.Y.Z (YYYY-MM-DD)`, puedes continuar trabajando :+1: - -:x: Si no es el caso, por favor **contacta a un profesor** - - -## Oh-my-zsh - -Instalemos el plugin `zsh` [Oh My Zsh](https://ohmyz.sh/). - -Ejecuta este comando en la terminal: - -```bash -sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" -``` - -Si te preguntan "Do you want to change your default shell to zsh?", presiona `Y` - -Cuando termines, tu terminal debería lucir así: - -![La terminal de Ubuntu con OhMyZsh](https://github.com/lewagon/setup/blob/master/images/oh_my_zsh.png) - -:heavy_check_mark: Si es el caso, puedes continuar :+1: - -:x: Si no, por favor **pídele ayuda a un profesor**. - - -## direnv - -[direnv](https://direnv.net/) es una extensión del shell. Facilita trabajar con variables de entorno por proyecto, lo cual será útil para customizar el comportamiento de tu código. - - -``` bash -sudo apt-get update; sudo apt-get install direnv -echo 'eval "$(direnv hook zsh)"' >> ~/.zshrc -``` - - - -## GitHub CLI - -CLI es una abreviación de [Command-line Interface](https://en.wikipedia.org/wiki/Command-line_interface) que significa interfaz de línea de comando. - -En esta sección usaremos [GitHub CLI](https://cli.github.com/) para interactuar directamente con GitHub desde la terminal. - -Usaremos la GitHub CLI (`gh`) para conectarnos a GitHub utilizando *SSH*, un protocolo para iniciar la sesión utilizando claves SSH en lugar de la famosa pareja nombre de usuario y contraseña. - -Ya debería haberse instalado en tu computadora con los comandos que ejecutaste anteriormente. - -Lo primero que hay que hacer para **iniciar sesión** es copiar y pegar el comando siguiente en tu terminal: - -:warning: **NO edites el `email`** — Aunque `user:email` parezca un marcador de posición para tu dirección de correo real, no lo es — no lo reemplaces. - -```bash -gh auth login -s 'user:email' -w --git-protocol ssh -``` - -`gh` le hará algunas preguntas: - -- `Generate a new SSH key to add to your GitHub account?` Presiona `Enter` para pedirle a gh que genere las claves SSH por ti. - - Si ya tienes claves SSH, verás en su lugar `Upload your SSH public key to your GitHub account?`Con las flechas, selecciona la ruta de tu archivo de clave pública y pulsa `Intro`. - -- `Enter a passphrase for your new SSH key (Optional)`: - - **PARA LA MAYORÍA DE LOS ESTUDIANTES:** Simplemente presiona `Enter` para omitir. No necesitas una contraseña para el bootcamp y te la pediría cada vez que uses la clave. Sin embargo, hay un riesgo de que si alguien roba tu computadora, pueda subir código a GitHub. - - **SI LA SEGURIDAD ES MUY IMPORTANTE PARA TI:** Escribe una contraseña de tu elección y presiona `Enter`. Es _muy_ importante que si introduces una contraseña, la anotes en algún lugar inmediatamente y no la pierdas ni la olvides. Tendrás que introducirla con frecuencia. - -- `Title for your SSH key`. Puede dejarlo en la propuesta "GitHub CLI", presiona `Enter`. - -Obtendrás el siguiente resultado: - -```bash -! First copy your one-time code: 0EF9-D015 -- Press Enter to open github.com in your browser... -``` - -Selecciona y copia el código (`0EF9-D015` en el ejemplo) y luego presiona `Enter`. - -Tu navegador se abrirá y te pedirá que autorices GitHub CLI para usar tu cuenta GitHub. Acepta y espera un poco. - -Regresa a la terminal, presiona `Enter` nuevamente y listo. Eso es todo. - -Para verificar que están conectado correctamente, escribe lo siguiente: - -```bash -gh auth status -``` - -:heavy_check_mark: Si obtienes este mensaje: `Logged in to github.com as `, significa que todo está bien :+1: - -:x: De lo contrario, **contacta a un profesor**. - - -## CLI de Google Cloud - -Instala la CLI de `gcloud` para comunicar con [Google Cloud Platform](https://cloud.google.com/) a través de la terminal: -```bash -echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list -sudo apt-get install apt-transport-https ca-certificates gnupg -curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add - -sudo apt-get update && sudo apt-get install google-cloud-sdk -sudo apt-get install google-cloud-sdk-app-engine-python -``` -👉 [Documentación para la instalación](https://cloud.google.com/sdk/docs/install#deb) - - -- Guarda el archivo json de la cuenta de servicio en un lugar que recuerdes. Por ejemplo: - -``` bash -/home/LINUX_USERNAME/code/GITHUB_NICKNAME/gcp/SERVICE_ACCOUNT_JSON_FILE_CONTAINING_YOUR_SECRET_KEY.json -``` - -- Guarda la **ruta absoluta** al archivo `JSON` como una variable de entorno: - -``` bash -echo 'export GOOGLE_APPLICATION_CREDENTIALS=/path/to/the/SERVICE_ACCOUNT_JSON_FILE_CONTAINING_YOUR_SECRET_KEY.json' >> ~/.aliases -``` - - -## Dotfiles - -Los hackers aman mejorar sus shells y sus herramientas. Comenzaremos con una configuración por defecto genial proporcionada por [Le Wagon](http://github.com/lewagon/dotfiles) y almacenada en GitHub. - -### Verifica tu configuración de GitHub CLI - -Primero, hagamos una verificación rápida. Abre tu terminal y ejecuta el comando siguiente: - -```bash -export GITHUB_USERNAME=`gh api user | jq -r '.login'` -echo $GITHUB_USERNAME -``` - -Deberías ver tu usuario GitHub. Si no es así, **no hagas más nada** y pide ayuda. -Parece que hay un problema con el paso anterior (`gh auth`). - -### Fork y/o clone los archivos de configuración - -Hay tres opciones, escoge **una**: - - -
- - No he hecho el bootcamp de Web Development o Data Science & AI o Data Analytics de Le Wagon - - - Tu configuración es personal, así que necesitas tu propio repositorio para almacenarla. Primero tienes que hacer el fork del repositorio en tu cuenta GitHub. - -Hacer un fork significa que crearás un nuevo repositorio en tu cuenta GitHub idéntico al original. Tendrás un nuevo repositorio en tu cuenta GitHub, `your_github_username/dotfiles`. El fork es necesario porque cada uno de ustedes necesitará poner información específica (e.g. tu nombre) en esos archivos. - -Ejecutemos este comando para hacer un **fork** del repositorio `lewagon/dotfiles` y clonarlo: - -```bash -mkdir -p ~/code/$GITHUB_USERNAME && cd $_ -gh repo fork lewagon/dotfiles --clone -``` - -
- - -
- - Ya hice el bootcamp de Web Development o Data Science & AI o Data Analytics de Le Wagon pero tengo una nueva laptop - - -Esto significa que ya has hecho el fork del repositorio GitHub lewagon/dotfiles pero tal vez la configuración para el nuevo bootcamp de Data Analytics no estaba lista en ese momento.Actualicémoslo. **Pide a un TA que te acompañe en los siguientes pasos.** - -Es hora de clonarlo el repositorio en tu laptop: - -```bash -mkdir -p ~/code/$GITHUB_USERNAME && cd $_ -gh repo clone lewagon/dotfiles -``` - - -Abre tu terminal y ve a tu proyecto `dotfiles`: - -```bash -cd ~/code/$GITHUB_USERNAME$/dotfiles -``` - -Es hora de fusionar los cambios de lewagon/dotfiles en los tuyos: - -1. Commit la versión actual de tus dotfiles: - ```bash - git add . - git status # Check what will be committed - git commit -m "Version prior to new setup" - ``` - -1. Trae los cambios del repositorio upstream: `git merge upstream/master` - -1. Verifica que no estés en estado MERGING. Si lo estás, resuelve los conflictos. - -1. Haz un `git diff HEAD~1 HEAD` para revisar qué cambió. - -1. Si todo parece estar en orden, continúa. - -
- ¿Demasiados conflictos? - - - Vamos a tomar la versión actual de `lewagon/dotfiles`. - - Primero aborta la merge: `git merge --abort`. - - Ejecuta `code .` - - En VS Code, abre el archivo zshrc. Reemplaza su contenido con la [versión más reciente](https://raw.githubusercontent.com/lewagon/dotfiles/master/zshrc). Luego guárdalo en el disco. - - Aún en VS Code, abre el archivo `zprofile`. Reemplaza su contenido con la [versión más reciente](https://raw.githubusercontent.com/lewagon/dotfiles/master/zprofile). Luego guárdalo en el disco. - - Regresa a la terminal y ejecuta un `git diff` y verifica que esto no haya eliminado ninguna configuración personal que quisieras conservar. - -
- -Es hora de guardar tus cambios y subirlos. - -```bash -git add . -git commit -m "Update for Data Analytics bootcamp" -git push origin master -``` - -
- - -
- - Ya hice el bootcamp de Web Development o Data Science & AI o Data Analytics de Le Wagon en la misma laptop - - -Esto significa que ya has hecho el fork del repositorio GitHub lewagon/dotfiles pero tal vez la configuración para el nuevo bootcamp de Data Analytics no estaba lista en ese momento. Actualicémoslo. **Pide a un TA que te acompañe en los siguientes pasos.** - - -Abre tu terminal y ve a tu proyecto `dotfiles`: - -```bash -cd ~/code/$GITHUB_USERNAME$/dotfiles -``` - -Es hora de fusionar los cambios de lewagon/dotfiles en los tuyos: - -1. Commit la versión actual de tus dotfiles: - ```bash - git add . - git status # Check what will be committed - git commit -m "Version prior to new setup" - ``` - -1. Trae los cambios del repositorio upstream: `git merge upstream/master` - -1. Verifica que no estés en estado MERGING. Si lo estás, resuelve los conflictos. - -1. Haz un `git diff HEAD~1 HEAD` para revisar qué cambió. - -1. Si todo parece estar en orden, continúa. - -
- ¿Demasiados conflictos? - - - Vamos a tomar la versión actual de `lewagon/dotfiles`. - - Primero aborta la merge: `git merge --abort`. - - Ejecuta `code .` - - En VS Code, abre el archivo zshrc. Reemplaza su contenido con la [versión más reciente](https://raw.githubusercontent.com/lewagon/dotfiles/master/zshrc). Luego guárdalo en el disco. - - Aún en VS Code, abre el archivo `zprofile`. Reemplaza su contenido con la [versión más reciente](https://raw.githubusercontent.com/lewagon/dotfiles/master/zprofile). Luego guárdalo en el disco. - - Regresa a la terminal y ejecuta un `git diff` y verifica que esto no haya eliminado ninguna configuración personal que quisieras conservar. - -
- -Es hora de guardar tus cambios y subirlos. - -```bash -git add . -git commit -m "Update for Data Analytics bootcamp" -git push origin master -``` - -
- - -### Ejecuta el instalador de dotfiles - -Ejecuta el instalador de `dotfiles`. - -```bash -cd ~/code/$GITHUB_USERNAME/dotfiles && zsh install.sh -``` - -Verifica los emails registrados en tu cuenta GitHub. Deberás seleccionar uno de ellos en el próximo paso: - -```bash -gh api user/emails | jq -r '.[].email' -``` - -Ejecuta el instalador de git: - -```bash -cd ~/code/$GITHUB_USERNAME/dotfiles && zsh git_setup.sh -``` - -:point_up: Esto te **guiará** con tu nombre (`FirstName LastName`) y con tu email. -:warning: Cuidado, **debes** poner uno de los emails de la lista de arriba que te suministra el comando `gh api ...` usado anteriormente. Si haces eso, Kitt no podrá hacerle seguimiento a tu progreso. Cualquier correo que elijas se mostrará **públicamente** en internet. 💡 Selecciona la dirección `@users.noreply.github.com` si no quieres que tu correo electrónico aparezca en los repositorios públicos a los que puedas contribuir. - -Ahora **cierra** todas las ventanas de tu terminal que tengas abiertas por favor. - - - - -## Desahilitación de la solicitud de SSH passphrase - -No vas a querer que te pidan tu passphrase cada vez que te comuniques con un repositorio remoto. Por eso debes agregarle plugin `ssh-agent` a `oh my zsh`: - -Primero abre el archivo `.zshrc`: - -```bash -code ~/.zshrc -``` - -Luego: -- Identifica la línea que comienza por `plugins=` -- Agrega `ssh-agent` al final de la lista de plugins - -La lista debería verse de la siguiente manera: - -```bash -plugins=(gitfast last-working-dir common-aliases zsh-syntax-highlighting history-substring-search pyenv ssh-agent) -``` - -:heavy_check_mark: Guarda el archivo `.zshrc` con `Ctrl` + `S` y cierra tu editor de texto. - - -### Instala `pyenv` - -Ubuntu viene con una versión vieja de Python que no queremos usar. Tal vez ya hayas instalado Anaconda u otro programa para utilizar Python y paquetes de Ciencia de Datos. Si es así, no pasa nada ya que haremos una configuración profesional de Python que te permitirá cambiar de versión cuando quieras al escribir `python` en la terminal. - -Primero instala `pyenv` con el siguiente comando en la Terminal: - -```bash -git clone https://github.com/pyenv/pyenv.git ~/.pyenv -exec zsh -``` - -Instala algunas [dependencias](https://github.com/pyenv/pyenv/wiki/common-build-problems#prerequisites) necesarias para crear Python desde `pyenv`: - -```bash -sudo apt-get update; sudo apt-get install make build-essential libssl-dev zlib1g-dev \ -libbz2-dev libreadline-dev sqlite3 libsqlite3-dev wget curl llvm \ -libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev \ -python3-dev -``` - -### Instala Python - -Instala la [última versión estable de Python](https://www.python.org/doc/versions/) que sea aceptada en el currículum de Le Wagon: - -```bash -pyenv install 3.12.9 -``` - -Este comando puede tomar un tiempo en ejecutarse. Esto es completamente normal. ¡No dudes en ayudar a los estudiantes que estén sentados cerca de ti! - -OK. Cuando este comando termine de ejecutarse, le diremos al sistema que use esta versión de Python **por defecto**. Esto se hace con: - -```bash -pyenv global 3.12.9 -exec zsh -``` - -Para verificar que esto haya funcionado, ejecuta `python --version`. Si ves `3.12.9`, ¡todo está bien! Si no, pídele ayuda a un TA para resolver el problema por medio de `versiones de pyenv` y `type -a python` (`python` debería estar usando la versión `.pyenv/shims` de primero). - - -## Entorno Virtual de Python - -Antes de instalar paquetes de Python, aislaremos la configuración del Bootcamp en un entorno virtual **dedicado**. Usaremos un plugin `pyenv` llamado [`pyenv-virtualenv`](https://github.com/pyenv/pyenv-virtualenv). - -### Instala un virtualenv - -Primero instala este plugin: - -```bash -git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv -exec zsh -``` - -Crea el entorno virtual que usaremos durante todo el bootcamp: - -```bash -pyenv virtualenv 3.12.9 lewagon -``` - -Define el entorno virtual con lo siguiente: - -```bash -pyenv global lewagon -``` - -¡Genial! Ahora cada vez que queramos instalar un paquete Python, lo haremos en ese entorno. - - -### Paquetes de Python - -Ahora que tenemos el ambiente virtual de `lewagon` adecuado, es hora de instalarle algunos paquetes. - -Primero, actualiza `pip`, la herramienta para instalar Paquetes Python desde [pypi.org](https://pypi.org). Ejecuta lo siguiente en la última terminal donde esté activado el virtualenv de `lewagon`: - -```bash -pip install --upgrade pip -``` - -Ahora instala algunos paquetes para las primeras semanas del programa: - - - -``` bash -pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/specs/releases/linux.txt -``` - - - - -## Mejora Jupyter Notebook - -Mejora la visualización del [elemento `details` para revelación de información](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details) en tus notebooks. - -Ejecuta las siguientes líneas para crear una hoja de estilos `custom.css` en tu directorio de configuración de Jupyter: - -```bash -LOCATION=$(jupyter --config-dir)/custom -SOURCE=https://raw.githubusercontent.com/lewagon/data-analytics-setup/refs/heads/master/specs/jupyter/custom.css -mkdir -p $LOCATION -curl $SOURCE > $LOCATION/custom.css -``` - - -## Chequeo de la configuración de Python - -### Chequeo de Python y packages - -Reinicia tu terminal: - -```bash -cd ~/code && exec zsh -``` - -Verifica tu versión de Python con los siguientes comandos: - -```bash -zsh -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/python_checker.sh)" 3.12.9 -``` - -Ejecuta el comando siguiente para verificar que hayas instalado los paquetes requeridos correctamente: - -```bash -zsh -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/pip_check.sh)" -``` - -Ahora ejecuta el siguiente comando para verificar que puedas cargar estos paquetes: - -```bash -python -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/pip_check.py)" -``` - -### Chequeo de Jupyter - -Ahora verifica que puedas iniciar un servidor de notebook en tu máquina: - -```bash -jupyter notebook -``` - -Tu navegador web debería abrir en una ventana `jupyter`: - -![jupyter.png](images/jupyter.png) - -Haz clic en `New` y, en el menú desplegable, selecciona Python 3 (ipykernel): - -![jupyter_new.png](images/jupyter_new.png) - -Debería abrirse una pestaña en un nuevo notebook: - -![jupyter_notebook.png](images/jupyter_notebook.png) - -Asegúrate de que estés usando la versión correcta de python en el notebook. Abre una celda y ejecuta lo siguiente: - -``` python -import sys; sys.version -``` - -Debería mostrar `3.12.9` seguido de algunos detalles adicionales. Si no es así, consulta con un TA. - -Puedes cerrar tu navegador web y luego cerrar el servidor jupyter con `CTRL` + `C`. - -¡Listo! Ya tienes un virtual env de python completo con todos los paquetes tercerizados que necesitarás en el bootcamp. - - - ## Kitt - -Deberías haber recibido un correo electrónico de Le Wagon invitándote a registrarte en [Kitt](https://kitt.lewagon.com) (nuestra plataforma de aprendizaje). - -Entonces deberías recibir una invitación adicional de Slack, invitándote a la comunidad de los alumni de Le Wagon en slack (donde podrás chatear con tus compañeros y todos los demás alumni). Haz clic en **Join** y completa la información que te piden. - -Si no lo has recibido, por favor contacta a tu equipo de enseñanza. - - -## Slack - -[Slack](https://slack.com/) es una plataforma de comunicación popular en la industria tech. - -### Instalación - -[Descarga la aplicación Slack](https://slack.com/downloads/windows) e instálala. - -:warning: Si ya estás usando Slack en tu navegador, por favor descarga e instala **la aplicación de escritorio** la cual tiene todas las funciones. - - -### Parámetros - -Abre la aplicación e inicia sesión en `lewagon-alumni`. - -Asegúrate de **subir una foto para tu perfil** :point_down: - -![Cómo subir una foto de perfil en Slack](https://github.com/lewagon/setup/blob/master/images/slack_profile_picture.gif) - -La idea es tener Slack abierto todo el día para compartir enlaces útiles / pedir ayuda / decidir dónde almorzar / etc. - -Para asegurarte de que todo lo relacionado a videollamadas funcione bien, prueba tu cámara y tu micrófono: -- Abre la aplicación Slack -- Haz clic en tu foto de perfil en la esquina superior derecha -- Selecciona "Preferencias" en el menú. -- Haz clic en "Audio y vídeo" en la columna de la izquierda. -- Debajo de "Solución de problemas", haz clic en "Ejecutar una prueba de audio, vídeo y pantalla compartida". La prueba se abrirá en una nueva ventana. -- Comprueba que tus dispositivos preferidos de altavoz, micrófono y cámara aparecen en los menús desplegables y haz clic en "Iniciar prueba" -- Haz clic en el botón verde "Start test" - -![Chequea el micrófono y la cámara con Slack](https://github.com/lewagon/setup/blob/master/images/slack_call_test.png) - -:heavy_check_mark: Cuando termine el test deberías ver mensajes de "Succeed" en verde por lo menos para tu micrófono y tu cámara. :+1: - -:x: Si no es el caso, **contacta a un profesor**. - -¡También puedes instalar la aplicación Slack en tu smartphone e iniciar sesión en `lewagon-alumni`! - - -## Extra - -Si has terminado la configuración, te pedimos que preguntes si alguien necesita ayuda con la suya (macOS, Linux o Windows). Las primeras clases son a las 2pm. Hablaremos de la configuración que acabas de hacer y de Kitt. - -Si no tienes mucha experiencia con `git` y GitHub, por favor [ve nuevamente el video de este workshop](https://www.youtube.com/watch?v=Z9fIBT2NBGY) (puedes verlo a `1.25` de velocidad). - - diff --git a/WINDOWS.es.md b/WINDOWS.es.md deleted file mode 100644 index baadec5..0000000 --- a/WINDOWS.es.md +++ /dev/null @@ -1,1631 +0,0 @@ -# Instrucciones para la configuración - -Aquí abajo encontrarás las instrucciones para configurar tu computadora para [el curso de Data Analytics de Le Wagon](https://www.lewagon.com/data-analytics-course/full-time) - -Por favor **léelas cuidadosamente y ejecuta todos los comandos en el siguiente orden**. Si tienes algún problema, no dudes en pedirle ayuda a una profesor :raising_hand: - -¡Comencemos! :rocket: - - -## Cuenta GitHub - -¿Ya tienes una cuenta GitHub? Si no es el caso, [ábrela ya](https://github.com/join). - -:point_right: **[Sube una foto](https://github.com/settings/profile)** y escribe tu nombre correctamente en tu cuenta GitHub. Esto es importante porque nosotros usaremos un tablero de comando interno con tu avatar. Por favor hazlo **ahora** antes de dar un paso más en esta guía. - -![Foto GitHub](https://github.com/lewagon/setup/blob/master/images/github_picture.png) - -:point_right: **[Habilita la Autenticación de Dos Factores (2FA)](https://docs.github.com/en/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication#configuring-two-factor-authentication-using-text-messages)**. GitHub te enviará mensajes de texto con un código cuando intentes iniciar sesión. Esto es importante para la seguridad y también pronto será necesario para contribuir código en GitHub. - - -## La versión de Windows - -Antes de comenzar, necesitamos verificar que la versión de Windows instalada en tu computadora sea compatible con estas instrucciones de configuración. - -### Windows 10 o Windows 11 - -> :warning: **Nota sobre Windows 10 y seguridad** -> -> La configuración del bootcamp de Le Wagon funciona en Windows 10. Dicho esto, recomendamos encarecidamente actualizar a Windows 11. Desde el 14 de octubre de 2025 Microsoft finalizó el soporte para Windows 10, lo que significa que ya no recibirá actualizaciones de seguridad y podría poner tu equipo en riesgo. Para más detalles, consulta la [guía de Microsoft](https://support.microsoft.com/en-us/windows/windows-10-support-has-ended-on-october-14-2025-2ca8b313-1946-43d3-b55c-2b95b107f281). Si tu equipo no puede ejecutar Windows 11, considera cambiar a Ubuntu. - -Para poder configurar tu computadora, necesitas tener **Windows 10 o Windows 11** instalado. - -Para chequear la versión de tu Windows: -- Presiona `Windows` + `R` -- Escribe `winver` -- Presiona `Enter` - -:heavy_check_mark: Si las primeras palabras de esta ventana son **Windows 11**, entonces todo está bien y puedes continuar trabajando en la configuración :+1: - -:heavy_check_mark: Si las primeras palabras de esta ventana son **Windows 10**, verifica el **número de la versión**: - -- :heavy_check_mark: Si dice al menos `2004`, entonces todo está bien :+1: - -- :x: Si es inferior a `2004`, debes actualizar tu versión. - --
- Cómo instalar las últimas actualizaciones? - - Abre Windows Update: - - Presiona `Windows` + `R` - - Escribe `ms-settings:windowsupdate` - - Presiona `Enter` - - Haz clic en `Check updates` - - :heavy_check_mark: Si tienes una marca verde y el siguiente mensaje "You're up to date", entonces todo está bien :+1: - - :warning: Si obtienes una exclamación roja y el siguiente mensaje "Update available", por favor instala las actualizaciones y repite el proceso hasta que diga que todo está actualizado :loop: - - :x: Si obtienes un mensaje de error diciendo que Windows no puede aplicar las actualizaciones, por favor **contacta a un profesor**. - -
- Activa Windows Update Service para resolver las Actualizaciones - - Algunos antivirus y programas deshabilitan las actualizaciones que necesitamos y luego se muestra un error. ¡Solucionemos esto! - - Presiona `Windows` + `R` - - Escribe `services.msc` - - Presiona `Enter` - - Haz doble clic en `Windows Update Service` - - Coloca su `Startup` en `Automatic` - - Haz clic en `Start` - - Haz clic en `Ok` - ¡Ahora intenta instalar las actualizaciones nuevamente! -
- - Verifica el número de la versión: - - - Presiona `Windows` + `R` - - Escribe `winver` - - Presiona `Enter` - - :heavy_check_mark: Si dice al menos `2004`, entonces todo está bien :+1: - - :x: Si es inferior a `2004`, por favor **contacta a un profesor**. - -
- - -## Virtualización - -Tenemos que asegurarnos de que las opciones de Virtualización estén habilitadas en el BIOS de tu computadora. - -Normalmente ya es el caso en muchas computadoras. Verifiquemos: -- Presiona `Windows` + `R` -- Escribe `taskmgr` -- Presiona `Enter` -- Haz clic en la pestaña `Performance` -- Haz clic en `CPU` - -![Windows task manager](https://github.com/lewagon/setup/blob/master/images/windows_task_manager.png) - -:heavy_check_mark: Si ves "Virtualization: Enabled", entonces todo está bien :+1: - -:x: Si falta la línea o si la virtualización está desactivada, por favor **contacta a un profesor antes de intentar activar la Virtualización por tu cuenta** - -
- Activa la Virtualización - - Debemos acceder al BIOS / UEFI de la computadora para activarla. - - Presiona `Windows + R` - - Escribe `shutdown.exe /r /o /t 1` - - Presiona `Enter` - - Espera a que la computadora se apague - - Haz clic en `Troubleshoot` - - Haz clic en `Advanced Options` - - Haz clic en `UEFI Firmware Settings` - - Haz clic en `Restart` - - Debes activar la opción de la virtualización para tu procesador aquí: - - La mayoría de las veces se hace en los parámetros avanzados, los parámetros del CPU o los parámetros de Northbridge - - El nombre de la opción puede variar de una computadora a otra: - - Intel: `Intel VT-x`, `Intel Virtualization Technology`, `Virtualization Extensions`, `Vanderpool`... - - AMD: `SVM Mode` o `AMD-V` - - Guarda los cambios después de la activación y reinicia la computadora con las opciones correspondientes -
- - -## Subsistema de Windows para Linux (WSL) - -WSL es el ambiente de entorno que estamos usando para usar Ubuntu. Puedes aprender más sobre WSL [aquí](https://docs.microsoft.com/en-us/windows/wsl/faq). - -Instalaremos WSL 2 y Ubuntu con un comando a través de la Windows Command Prompt. - -:warning: en esta instrucción, utiliza el atajo `Ctrl` + `Shift` + `Enter` para usar la **Windows Command Prompt** con privilegios de administrador en lugar de simplemente hacer clic en `Ok` o presionar `Enter`. - -- Presiona `Windows` + `R` -- Escribe `cmd` -- Presiona **`Ctrl` + `Shift` + `Enter`** - -:warning: tal vez tengas que aceptar la confirmación UAC sobre el cambio en los privilegios. - -Un ventana de terminal aparecerá: -- Copia el siguiente comando (`Ctrl` + `C`) -- Pégalo en la ventana de la terminal (`Ctrl` + `V` o haciendo clic derecho en la ventana) -- Ejecútalo presionado `Enter` - -```powershell -wsl --install -``` - -:heavy_check_mark: Si el comando se ejecutó sin ningún error, por favor reinicia tu computadora y continúa con las siguientes instrucciones aquí abajo :+1: - -:x: Si obtienes un mensaje de error (o si ves algún texto en rojo en la ventana), por favor **contacta a un profesor** - -
-Solución de problemas para Windows 10 (solo si es necesario, consulta con un profesor) - -#### Para Windows 10 < 2004: instala primero WSL 1 - -:warning: en esta instrucción, utiliza el atajo `Ctrl` + `Shift` + `Enter` para usar **Windows PowerShell** con privilegios de administrador en lugar de hacer clic en `Ok` o presionar `Enter`. - -- Presiona `Windows` + `R` -- Escribe `powershell` -- Presiona **`Ctrl` + `Shift` + `Enter`** - -:warning: tal vez tengas que aceptar la confirmación UAC sobre el cambio en los privilegios. - -Un ventana de terminal azul aparecerá: -- Copia los siguiente comandos uno por uno (`Ctrl` + `C`) -- Pégalos en la ventana de Powershell (`Ctrl` + `V` o haciendo clic derecho en la ventana) -- Ejecútalos presionado `Enter` - -```powershell -Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux -``` - -```powershell -dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart -``` - -```powershell -dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart -``` - -:heavy_check_mark: Si los tres comandos se ejecutaron sin ningún error, por favor reinicia tu computadora y continúa con las instrucciones de aquí abajo :+1: - -:x: Si obtienes un mensaje de error (o si ves algún texto en rojo en la ventada), por favor **contacta a un profesor** - -#### Para Windows 10 con WSL 1: Actualización a WSL 2 - -Si tienes Windows 10, actualizaremos WSL a la versión 2. - -Cuando se reinicie tu computadora, descarga el instalador de WSL2. - -- Ve a la [página de descarga](https://aka.ms/wsl2kernel) -- Descarga "el paquete de actualización de WSL2 Linux kernel" -- Abre el archivo que acabas de descargar -- Haz clic en `Next` -- Haz clic en `Finish` - -![Actualiza WSL de la versión 1 a la 2](https://github.com/lewagon/setup/blob/master/images/windows_update_wsl.png) - -:heavy_check_mark: Si no obtuviste ningún mensaje de error, entonces puedes continuar :+1: - -:x: Si obtienes el siguiente error "This update only applies to machines with the Windows Subsystem for Linux", **haz clic derecho** en el programa y selecciona `uninstall`; esta vez deberías poder instalarlo sin problemas. - -#### Para Windows 10 con WSL 1: Coloca WSL 2 como el Subsistema Windows por defecto para Linux - -Si tienes Windows 10, pondremos la versión predeterminada de WSL en 2. - -Ahora coloca WSL 2 como la versión predeterminada. Esto lo podemos hacer porque ya está instalado: -- Presiona `Windows` + `R` -- Escribe `cmd` -- Presiona `Enter` - -Escribe lo siguiente en la ventana que aparecerá: - -```bash -wsl --set-default-version 2 -``` - -:heavy_check_mark: Si ves este mensaje "The operation completed successfully", puedes cerrar esta terminal y continuar con las siguientes instrucciones aquí abajo :+1: - -:x: Si el mensaje que obtienes es sobre virtualización, por favor **contacta a un profesor** - -
- Habilita de la feature de la Virtual Machine Platform en Windows - - Sigue los pasos [siguientes](https://www.configserverfirewall.com/windows-10/please-enable-the-virtual-machine-platform-windows-feature-and-ensure-virtualization-is-enabled-in-the-bios/#:~:text=To%20enable%20WSL%202,%20Open,Windows%20feature%20on%20or%20off.&text=Ensure%20that%20the%20Virtual%20Machine,Windows%20will%20enable%20WSL%202) hasta que hayas habilitado la Virtual Machine Platform y el Subsistema de Windows para Linux -
- -
- Habilita la feature de Windows Hyper-V - - Sigue los pasos [siguientes](https://winaero.com/enable-use-hyper-v-windows-10/) hasta que hayas habilitado el grupo Hyper-V - - :information_source: Si tienes Windows 10 **Home edition**, la feature Hyper-V no está disponible para su sistema operativo. No es un bloqueo y puedes continuar con las siguientes instrucciones aquí abajo :ok_hand: -
- -
- - -## Ubuntu - -### Instalación - -Después de reiniciar tu computadora, deberías ver una ventana de terminal diciendo WSL está retomando el proceso de instalación de Ubuntu. Cuando termine, iniciará Ubuntu. - -
-Solución de problemas para Windows 10 (solo si es necesario, consulta con un profesor) - -Si la instalación de Ubuntu no se reanudó, primero intenta nuevamente: abre Powershell o el Símbolo del sistema y ejecuta `wsl --install` otra vez. -
- -Si tienes Windows 10, instala la terminal de Windows por medio de la Microsoft Store: - -- Haz clic en `Start` -- Escribe `Microsoft Store` -- Haz clic en `Microsoft Store` en la lista -- Busca `Ubuntu` en la barra de búsqueda -- **Selecciona la versión sin nombre, simplemente "Ubuntu"** -- Haz clic en `Get` - -:warning: ¡NO instales **Ubuntu 18.04 LTS** ni **Ubuntu 20.04**! - -
- Desinstala las versiones incorrectas de Ubuntu - - Para desinstalar las versiones incorrectas de Ubuntu, solo tienes que ir a la Lista de Programas Instalados de Windows 10: - - Presiona `Windows` + `R` - - Escribe `ms-settings:appsfeatures` - - Preiona `Enter` - - Busca el programa que desees desinstalar y haz clic en el botón de desinstalación. -
- -Cuando termine la instalación, el botón `Get` se transformará en un botón `Open`: Haz clic en él. - -
- -### Primer uso - -La primera vez que lo abras, te pedirán que: -- Escojas un **username** de: - - una palabra - - minúscula - - sin caracteres especiales - - por ejemplo: `lewagon` o tu `firstname`, es decir, tu primer nombre -- Escoge un **password** -- Confírmalo - -:warning: Cuando escribas tu contraseña no verás nada en la pantalla. **Esto es normal**. Es una herramienta de seguridad para ocultar tanto el contenido de tu contraseña como su longitud. Simplemente escribe tu contraseña y presiona `Enter` al terminar. - -### Chequea la versión WSL de Ubuntu - -- Presiona `Windows` + `R` -- Escribe `cmd` -- Presiona `Enter` - -Escribe el siguiente comando: - -```bash -wsl -l -v -``` - -:heavy_check_mark: Si la versión de WSL de Ubuntu es 2, entonces todo está bien y puedes continuar :+1: - -:x: Si la versión de WSL de Ubuntu es 1, tendremos que pasarla a la versión 2. - -
- Conversión de WSL de Ubuntu V1 a V2 - - Escribe esto en la ventana de Entrada de Comandos: - - ```bash - wsl --set-version Ubuntu 2 - ``` - - :heavy_check_mark: Deberías obtener el siguiente mensaje en algunos segundos: `The conversion is complete`. Esto significa que la conversión ha sido completada. - - :x: Si no funciona, tendremos que asegurarnos de que los archivos de Ubuntu no estén comprimidos. - -
- Chequea si los archivos no están comprimidos - - - Presiona `Windows` + `R` - - Escribe `%localappdata%\Packages` - - Presiona `Enter` - - Abre la carpeta `CanonicalGroupLimited.UbuntuonWindows...` - - Haz clic derecho en la carpeta `LocalState` - - Haz clic en `Properties` - - Haz clic en `Advanced` - - Asegúrate de que la opción `Compress content` **no** esté seleccionada. Luego haz clic en `Ok`. - - Aplícale cambios a esta carpeta solamente y trata de convertir la versión de WSL de Ubuntu nuevamente. - - :x: Si la conversión aún no funciona, por favor **contacta a un profesor**. -
- -Ya puedes cerrar la ventana de la terminal. - -
- -### Comprueba tu nombre de usuario - -Escribe esto en la terminal de Ubuntu: - -```bash -whoami -``` - -Debería devolver el nombre de usuario que elegiste anteriormente. - -:x: Si dice `root`, **contacta a un profesor** antes de continuar. - - -## Visual Studio Code - -### Instalación - -Instala el editor de texto [Visual Studio Code](https://code.visualstudio.com). - -- Ve a [la página de descarga de Visual Studio Code](https://code.visualstudio.com/download). -- Haz clic en el botón "Windows" -- Abre el archivo que acabas de descargar. -- Instálalo con pocas opciones: - -![Opciones de instalación de VS Code](https://github.com/lewagon/setup/blob/master/images/windows_vscode_installation.png) - -Abre VS Code cuando termine la instalación. - -### Conexión de VS Code con Ubuntu - -Instala la extensión de VS Code llamada [Remote - WSL](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-wsl) para hacer que VS Code interactúe adecuadamente con Ubuntu. - -Abre tu **terminal Ubuntu**. - -Copia y pega los siguientes comandos en la terminal: - -```bash -code --install-extension ms-vscode-remote.remote-wsl -``` - -Luego abre VS Code desde la terminal: - -```bash -code . -``` - -:heavy_check_mark: Si ves `WSL: Ubuntu` en la esquina inferior izquierda de la ventana de VS Code, entonces todo está bien y puedes continuar :+1: - -![WSL Ubuntu Remote](https://github.com/lewagon/setup/blob/master/images/windows_remote_wsl.png) - -:x: Si no es el caso, por favor **pídele ayuda a un profesor**. - - -## Terminal de Windows - -### Instalación - -:information_source: Las instrucciones que verás a continuación dependen de la versión de Windows que tengas. - -Si estás utilizando Windows 11, la terminal de Windows ya está instalada y puedes ir a la siguiente sección :point_down: - -Si tienes Windows 10, instala la terminal de Windows. Verás que es una terminal moderna. - -
-**Windows 10**: Instalar Windows Terminal - -- Haz clic en `Start` -- Escribe `Microsoft Store` -- Haz clic en `Microsoft Store` en la lista -- Busca `Windows Terminal` en la barra de búsqueda -- **Selecciona Windows Terminal"** -- Haz clic en `Install` - -:warning: ¡NO instales **Windows Terminal Preview**, solo instala **Windows Terminal**! - -
- Desinstala la versión incorrecta de la terminal de Windows - - Para desinstalar la versión incorrecta la terminal de Windows, solamente tienes que ir a la lista de programas instalados de Windows 10: - - - Presiona `Windows` + `R` - - EScribe `ms-settings:appsfeatures` - - Presiona `Enter` - - Busca el programa que quieres desinstalar y haz clic en el botón de desinstalación. -
- -Cuando termine la instalación, el botón `Install` se transformará en un botón `Launch`: haz clic en él. - -
- -### Ubuntu como terminal predeterminada - -Hagamos que Ubuntu sea la terminal predeterminada de tu aplicación Windows terminal. - -Presiona `Ctrl` + `,` - -Debería abrir los parámetros de la terminal: - -![Parámetros de Windows Terminal](https://github.com/lewagon/setup/blob/master/images/windows_terminal_settings.png) - -- Cambia el perfil predeterminado a "Ubuntu" -- Haz clic en "Save" -- Haz clic en "Open JSON file" - -Verás la parte a cambiar en un círculo rojo: - -![Archivo de parámetros JSON de Windows Terminal](https://github.com/lewagon/setup/blob/master/images/windows_terminal_settings_json.png) - -Primero pídele a Ubuntu que inicie directamente dentro de tu Ubuntu Home Directory en vez de hacerlo desde Windows: -- Localiza el `"name": "Ubuntu",` -- Agrega la siguiente línea debajo de eso: - -```bash -"commandline": "wsl.exe ~", -``` - -:warning: ¡Que no se te olvide la coma al final de la línea! - -Luego deshabilita el warning para copiar y pegar comandos entre Windows y Ubuntu: -- Localiza la línea `"defaultProfile": "{2c4de342-...}"` -- Agrega la siguiente línea debajo de eso: - -```bash -"warning.multiLinePaste": false, -``` - -:warning: ¡No olvides la coma al final de la línea! - -Puedes guardar estos cambios presionando `Ctrl` + `S` - -:heavy_check_mark: Tu **Windows Terminal** ya está configurada :+1: - -Esta terminal tiene pestañas: puedes escoger abrir una terminal en una nueva pestaña haciendo clic en el **+** al lado de la pestaña actual. -**De ahora en adelante, cada vez que hablemos de la terminal o la consola, nos referiremos a esta.** NUNCA más uses otra. - - -## Extensiones de VS Code - -### Instalación - -Instala algunas extensiones útiles para VS Code. - -```bash -code --install-extension ms-vscode.sublime-keybindings -code --install-extension emmanuelbeziat.vscode-great-icons -code --install-extension MS-vsliveshare.vsliveshare -code --install-extension ms-python.python -code --install-extension KevinRose.vsc-python-indent -code --install-extension ms-python.vscode-pylance -code --install-extension ms-toolsai.jupyter -code --install-extension alexcvzz.vscode-sqlite -``` - -Aquí está la lista de las extensiones que estás instalando: - -- [Sublime Text Keymap and Settings Importer](https://marketplace.visualstudio.com/items?itemName=ms-vscode.sublime-keybindings) -- [VSCode Great Icons](https://marketplace.visualstudio.com/items?itemName=emmanuelbeziat.vscode-great-icons) -- [Live Share](https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsliveshare) -- [Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python) -- [Python Indent](https://marketplace.visualstudio.com/items?itemName=KevinRose.vsc-python-indent) -- [Pylance](https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance) -- [Jupyter](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter) -- [SQLite](https://marketplace.visualstudio.com/items?itemName=alexcvzz.vscode-sqlite) - - -## Herramientas de línea de comando - -### Comprueba la configuración regional (locale) - -La "locale" es un mecanismo que permite adaptar los programas a su idioma y país. - -Comprobemos que la configuración regional por defecto es el inglés: - -```bash -locale -``` - -Si la salida no contiene `LANG=en_US.UTF-8`, ejecute el siguiente comando en un Ubuntu terminal para instalar la locale inglesa: - -```bash -sudo locale-gen en_US.UTF-8 -``` - -Si después, recibes una advertencia (`bash: warning: setlocale: LC_ALL: cannot change locale (en_US.utf-8)`) en tu terminal, por favor haz lo siguiente: - -
- Generar la configuración regional<>/summary> - -Por favor, ejecuta estas líneas en tu terminal. - -```bash -sudo update-locale LANG=en_US.UTF8 -sudo apt-get update -sudo apt-get install language-pack-en language-pack-en-base manpages -``` -
- -### Zsh & Git - -En lugar de usar el `bash` [shell](https://en.wikipedia.org/wiki/Shell_(computing)) predeterminado, usaremos `zsh`. - -También utilizaremos [`git`](https://git-scm.com/), un programa de línea de comando para control de versiones. - -Vamos a instalarlos, junto con otros programas útiles: -- Abre una **terminal de Ubuntu** -- Copia y pega los siguientes comandos: - -```bash -sudo apt update -``` - -```bash -sudo apt install -y curl git imagemagick jq unzip vim zsh -``` - -Estos comandos te pedirán tu contraseña: escríbela. - -:warning: Cuando escribas tu contraseña no verás nada en la pantalla. **Esto es normal**. Es una herramienta de seguridad para ocultar tanto el contenido de tu contraseña como su longitud. Simplemente escribe tu contraseña y presiona `Enter` al terminar. - -### Instalación de la CLI de GitHub - -Instalemos la [CLI oficial de GitHub](https://cli.github.com) (Interfaz de Línea de Comando). Es un programa que se usa para interactuar con tu cuenta GitHub por medio de la línea de comando. - -En tu terminal, copia y pega los siguientes comandos y escribe tu contraseña si te la piden: - -```bash -sudo apt remove -y gitsome # gh command can conflict with gitsome if already installed -curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg -echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null -sudo apt update -sudo apt install -y gh -``` - -Ejecuta el comando que te mostramos a continuación para verificar que `gh` se haya instalado correctamente en tu máquina: - -```bash -gh --version -``` - -:heavy_check_mark: Si ves esta versión `gh version X.Y.Z (YYYY-MM-DD)`, puedes continuar trabajando :+1: - -:x: Si no es el caso, por favor **contacta a un profesor** - - -## Oh-my-zsh - -Instalemos el plugin `zsh` [Oh My Zsh](https://ohmyz.sh/). - -Ejecuta este comando en la terminal: - -```bash -sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" -``` - -Si te preguntan "Do you want to change your default shell to zsh?", presiona `Y` - -Cuando termines, tu terminal debería lucir así: - -![La terminal de Ubuntu con OhMyZsh](https://github.com/lewagon/setup/blob/master/images/oh_my_zsh.png) - -:heavy_check_mark: Si es el caso, puedes continuar :+1: - -:x: Si no, por favor **pídele ayuda a un profesor**. - - -## Linking your default browser to Ubuntu - -Para asegurarnos de que puedas interactuar desde la terminal de Ubuntu con el navegador que tienes instalado en Windows, debemos definirlo como tu navegador predeterminado aquí. - -Ejecuta el siguiente comando y sigue las instrucciones. La herramienta te pedirá que elijas uno de los navegadores disponibles en tu sistema. Solo necesitas escribir el **número** que aparece delante del navegador. - -```bash -bash -c "$(curl -s https://raw.githubusercontent.com/julesvanrie/wslsetbrowser/refs/heads/main/wslsetbrowser.sh)" -``` - -Reinicia tu terminal: - -```bash -exec zsh -``` - -Luego asegúrate de que el siguiente comando devuelva "Browser defined 👌": - -```bash -[ -z "$BROWSER" ] && echo "ERROR: please define a BROWSER environment variable ⚠️" || echo "Browser defined 👌" -``` - -Si no es así, puedes seguir [estas instrucciones](https://github.com/lewagon/setup/blob/master/_partials/es/windows_browser.md) para configurar tu navegador predeterminado manualmente. - -No dudes en **pedirle ayuda a tu profesor**. - - -## direnv - -[direnv](https://direnv.net/) es una extensión del shell. Facilita trabajar con variables de entorno por proyecto, lo cual será útil para customizar el comportamiento de tu código. - - -``` bash -sudo apt-get update; sudo apt-get install direnv -echo 'eval "$(direnv hook zsh)"' >> ~/.zshrc -``` - - - -## GitHub CLI - -CLI es una abreviación de [Command-line Interface](https://en.wikipedia.org/wiki/Command-line_interface) que significa interfaz de línea de comando. - -En esta sección usaremos [GitHub CLI](https://cli.github.com/) para interactuar directamente con GitHub desde la terminal. - -Usaremos la GitHub CLI (`gh`) para conectarnos a GitHub utilizando *SSH*, un protocolo para iniciar la sesión utilizando claves SSH en lugar de la famosa pareja nombre de usuario y contraseña. - -Ya debería haberse instalado en tu computadora con los comandos que ejecutaste anteriormente. - -Lo primero que hay que hacer para **iniciar sesión** es copiar y pegar el comando siguiente en tu terminal: - -:warning: **NO edites el `email`** — Aunque `user:email` parezca un marcador de posición para tu dirección de correo real, no lo es — no lo reemplaces. - -```bash -gh auth login -s 'user:email' -w --git-protocol ssh -``` - -`gh` le hará algunas preguntas: - -- `Generate a new SSH key to add to your GitHub account?` Presiona `Enter` para pedirle a gh que genere las claves SSH por ti. - - Si ya tienes claves SSH, verás en su lugar `Upload your SSH public key to your GitHub account?`Con las flechas, selecciona la ruta de tu archivo de clave pública y pulsa `Intro`. - -- `Enter a passphrase for your new SSH key (Optional)`: - - **PARA LA MAYORÍA DE LOS ESTUDIANTES:** Simplemente presiona `Enter` para omitir. No necesitas una contraseña para el bootcamp y te la pediría cada vez que uses la clave. Sin embargo, hay un riesgo de que si alguien roba tu computadora, pueda subir código a GitHub. - - **SI LA SEGURIDAD ES MUY IMPORTANTE PARA TI:** Escribe una contraseña de tu elección y presiona `Enter`. Es _muy_ importante que si introduces una contraseña, la anotes en algún lugar inmediatamente y no la pierdas ni la olvides. Tendrás que introducirla con frecuencia. - -- `Title for your SSH key`. Puede dejarlo en la propuesta "GitHub CLI", presiona `Enter`. - -Obtendrás el siguiente resultado: - -```bash -! First copy your one-time code: 0EF9-D015 -- Press Enter to open github.com in your browser... -``` - -Selecciona y copia el código (`0EF9-D015` en el ejemplo) y luego presiona `Enter`. - -Tu navegador se abrirá y te pedirá que autorices GitHub CLI para usar tu cuenta GitHub. Acepta y espera un poco. - -Regresa a la terminal, presiona `Enter` nuevamente y listo. Eso es todo. - -Para verificar que están conectado correctamente, escribe lo siguiente: - -```bash -gh auth status -``` - -:heavy_check_mark: Si obtienes este mensaje: `Logged in to github.com as `, significa que todo está bien :+1: - -:x: De lo contrario, **contacta a un profesor**. - - -## CLI de Google Cloud - -Instala la CLI de `gcloud` para comunicar con [Google Cloud Platform](https://cloud.google.com/) a través de la terminal: - -```bash -echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list -sudo apt-get install apt-transport-https ca-certificates gnupg -curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add - -sudo apt-get update && sudo apt-get install google-cloud-sdk -sudo apt-get install google-cloud-sdk-app-engine-python -``` - -👉 [Documentación para la instalación](https://cloud.google.com/sdk/docs/install#deb) - - -## Dotfiles - -Los hackers aman mejorar sus shells y sus herramientas. Comenzaremos con una configuración por defecto genial proporcionada por [Le Wagon](http://github.com/lewagon/dotfiles) y almacenada en GitHub. - -### Verifica tu configuración de GitHub CLI - -Primero, hagamos una verificación rápida. Abre tu terminal y ejecuta el comando siguiente: - -```bash -export GITHUB_USERNAME=`gh api user | jq -r '.login'` -echo $GITHUB_USERNAME -``` - -Deberías ver tu usuario GitHub. Si no es así, **no hagas más nada** y pide ayuda. -Parece que hay un problema con el paso anterior (`gh auth`). - -### Fork y/o clone los archivos de configuración - -Hay tres opciones, escoge **una**: - - -
- - No he hecho el bootcamp de Web Development o Data Science & AI o Data Analytics de Le Wagon - - - Tu configuración es personal, así que necesitas tu propio repositorio para almacenarla. Primero tienes que hacer el fork del repositorio en tu cuenta GitHub. - -Hacer un fork significa que crearás un nuevo repositorio en tu cuenta GitHub idéntico al original. Tendrás un nuevo repositorio en tu cuenta GitHub, `your_github_username/dotfiles`. El fork es necesario porque cada uno de ustedes necesitará poner información específica (e.g. tu nombre) en esos archivos. - -Ejecutemos este comando para hacer un **fork** del repositorio `lewagon/dotfiles` y clonarlo: - -```bash -mkdir -p ~/code/$GITHUB_USERNAME && cd $_ -gh repo fork lewagon/dotfiles --clone -``` - -
- - -
- - Ya hice el bootcamp de Web Development o Data Science & AI o Data Analytics de Le Wagon pero tengo una nueva laptop - - -Esto significa que ya has hecho el fork del repositorio GitHub lewagon/dotfiles pero tal vez la configuración para el nuevo bootcamp de Data Analytics no estaba lista en ese momento.Actualicémoslo. **Pide a un TA que te acompañe en los siguientes pasos.** - -Es hora de clonarlo el repositorio en tu laptop: - -```bash -mkdir -p ~/code/$GITHUB_USERNAME && cd $_ -gh repo clone lewagon/dotfiles -``` - - -Abre tu terminal y ve a tu proyecto `dotfiles`: - -```bash -cd ~/code/$GITHUB_USERNAME$/dotfiles -``` - -Es hora de fusionar los cambios de lewagon/dotfiles en los tuyos: - -1. Commit la versión actual de tus dotfiles: - ```bash - git add . - git status # Check what will be committed - git commit -m "Version prior to new setup" - ``` - -1. Trae los cambios del repositorio upstream: `git merge upstream/master` - -1. Verifica que no estés en estado MERGING. Si lo estás, resuelve los conflictos. - -1. Haz un `git diff HEAD~1 HEAD` para revisar qué cambió. - -1. Si todo parece estar en orden, continúa. - -
- ¿Demasiados conflictos? - - - Vamos a tomar la versión actual de `lewagon/dotfiles`. - - Primero aborta la merge: `git merge --abort`. - - Ejecuta `code .` - - En VS Code, abre el archivo zshrc. Reemplaza su contenido con la [versión más reciente](https://raw.githubusercontent.com/lewagon/dotfiles/master/zshrc). Luego guárdalo en el disco. - - Aún en VS Code, abre el archivo `zprofile`. Reemplaza su contenido con la [versión más reciente](https://raw.githubusercontent.com/lewagon/dotfiles/master/zprofile). Luego guárdalo en el disco. - - Regresa a la terminal y ejecuta un `git diff` y verifica que esto no haya eliminado ninguna configuración personal que quisieras conservar. - -
- -Es hora de guardar tus cambios y subirlos. - -```bash -git add . -git commit -m "Update for Data Analytics bootcamp" -git push origin master -``` - -
- - -
- - Ya hice el bootcamp de Web Development o Data Science & AI o Data Analytics de Le Wagon en la misma laptop - - -Esto significa que ya has hecho el fork del repositorio GitHub lewagon/dotfiles pero tal vez la configuración para el nuevo bootcamp de Data Analytics no estaba lista en ese momento. Actualicémoslo. **Pide a un TA que te acompañe en los siguientes pasos.** - - -Abre tu terminal y ve a tu proyecto `dotfiles`: - -```bash -cd ~/code/$GITHUB_USERNAME$/dotfiles -``` - -Es hora de fusionar los cambios de lewagon/dotfiles en los tuyos: - -1. Commit la versión actual de tus dotfiles: - ```bash - git add . - git status # Check what will be committed - git commit -m "Version prior to new setup" - ``` - -1. Trae los cambios del repositorio upstream: `git merge upstream/master` - -1. Verifica que no estés en estado MERGING. Si lo estás, resuelve los conflictos. - -1. Haz un `git diff HEAD~1 HEAD` para revisar qué cambió. - -1. Si todo parece estar en orden, continúa. - -
- ¿Demasiados conflictos? - - - Vamos a tomar la versión actual de `lewagon/dotfiles`. - - Primero aborta la merge: `git merge --abort`. - - Ejecuta `code .` - - En VS Code, abre el archivo zshrc. Reemplaza su contenido con la [versión más reciente](https://raw.githubusercontent.com/lewagon/dotfiles/master/zshrc). Luego guárdalo en el disco. - - Aún en VS Code, abre el archivo `zprofile`. Reemplaza su contenido con la [versión más reciente](https://raw.githubusercontent.com/lewagon/dotfiles/master/zprofile). Luego guárdalo en el disco. - - Regresa a la terminal y ejecuta un `git diff` y verifica que esto no haya eliminado ninguna configuración personal que quisieras conservar. - -
- -Es hora de guardar tus cambios y subirlos. - -```bash -git add . -git commit -m "Update for Data Analytics bootcamp" -git push origin master -``` - -
- - -### Ejecuta el instalador de dotfiles - -Ejecuta el instalador de `dotfiles`. - -```bash -cd ~/code/$GITHUB_USERNAME/dotfiles && zsh install.sh -``` - -Verifica los emails registrados en tu cuenta GitHub. Deberás seleccionar uno de ellos en el próximo paso: - -```bash -gh api user/emails | jq -r '.[].email' -``` - -Ejecuta el instalador de git: - -```bash -cd ~/code/$GITHUB_USERNAME/dotfiles && zsh git_setup.sh -``` - -:point_up: Esto te **guiará** con tu nombre (`FirstName LastName`) y con tu email. -:warning: Cuidado, **debes** poner uno de los emails de la lista de arriba que te suministra el comando `gh api ...` usado anteriormente. Si haces eso, Kitt no podrá hacerle seguimiento a tu progreso. Cualquier correo que elijas se mostrará **públicamente** en internet. 💡 Selecciona la dirección `@users.noreply.github.com` si no quieres que tu correo electrónico aparezca en los repositorios públicos a los que puedas contribuir. - -Ahora **cierra** todas las ventanas de tu terminal que tengas abiertas por favor. - - -## Desahilitación de la solicitud de SSH passphrase - -No vas a querer que te pidan tu passphrase cada vez que te comuniques con un repositorio remoto. Por eso debes agregarle plugin `ssh-agent` a `oh my zsh`: - -Primero abre el archivo `.zshrc`: - -```bash -code ~/.zshrc -``` - -Luego: -- Identifica la línea que comienza por `plugins=` -- Agrega `ssh-agent` al final de la lista de plugins - -La lista debería verse de la siguiente manera: - -```bash -plugins=(gitfast last-working-dir common-aliases zsh-syntax-highlighting history-substring-search pyenv ssh-agent) -``` - -:heavy_check_mark: Guarda el archivo `.zshrc` con `Ctrl` + `S` y cierra tu editor de texto. - - -## Instalando Python (con [`pyenv`](https://github.com/pyenv/pyenv)) - -### Desinstalar `conda` - -Como estamos utilizando `pyenv` para instalar y gestionar la versión de Python, necesitamos desinstalar [`conda`](https://docs.conda.io/projects/conda/en/latest/), otro gestor de paquetes que podrías tener en tu computadora si previamente instalaste [Anaconda](https://www.anaconda.com/). De esta forma, evitaremos problemas con Python más adelante. - -Chequea si tienes `conda` instalado en tu computadora: - -```bash -conda list -``` - -Si aparece `zsh: command not found: conda`, puedes **saltear** la desinstalación de `conda` e ir directo a la sección de **Instalar pre-requisitos**. - - -
- Instrucciones de desinstalación conda - -- Instala el paquete Anaconda-Clean desde tu terminal y comienza la limpieza -```bash -conda install anaconda-clean -anaconda-clean --yes -``` -- Remueve todos los directorios de Anaconda -```bash -rm -rf ~/anaconda2 -rm -rf ~/anaconda3 -rm -rf ~/.anaconda_backup - -``` -- Elimina el directorio Anaconda de tu `.bash_profile` - - Abre el archivo con `code ~/.bash_profile` - - Si el archivo abre, busca la línea que coincida con el siguiente patrón `export PATH="/path/to/anaconda3/bin:$PATH"` y eliminala - -- Reinicia la terminal con `exec zsh` -- Remueve la inicializaciópn de Anaconda de tu `.zshrc`: - - Abre el archivo con `code ~/.zshrc` - - Remueve las líneas de código desde `>>> conda initialize >>>` hasta `<<< conda initialize <<<` -
- - -### Instala `pyenv` - -Ubuntu viene con una versión vieja de Python que no queremos usar. Tal vez ya hayas instalado Anaconda u otro programa para utilizar Python y paquetes de Ciencia de Datos. Si es así, no pasa nada ya que haremos una configuración profesional de Python que te permitirá cambiar de versión cuando quieras al escribir `python` en la terminal. - -Primero instala `pyenv` con el siguiente comando en la Terminal: - -```bash -git clone https://github.com/pyenv/pyenv.git ~/.pyenv -exec zsh -``` - -Instala algunas [dependencias](https://github.com/pyenv/pyenv/wiki/common-build-problems#prerequisites) necesarias para crear Python desde `pyenv`: - -```bash -sudo apt-get update; sudo apt-get install make build-essential libssl-dev zlib1g-dev \ -libbz2-dev libreadline-dev sqlite3 libsqlite3-dev wget curl llvm \ -libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev \ -python3-dev -``` - -### Instala Python - -Instala la [última versión estable de Python](https://www.python.org/doc/versions/) que sea aceptada en el currículum de Le Wagon: - -```bash -pyenv install 3.12.9 -``` - -Este comando puede tomar un tiempo en ejecutarse. Esto es completamente normal. ¡No dudes en ayudar a los estudiantes que estén sentados cerca de ti! - -OK. Cuando este comando termine de ejecutarse, le diremos al sistema que use esta versión de Python **por defecto**. Esto se hace con: - -```bash -pyenv global 3.12.9 -exec zsh -``` - -Para verificar que esto haya funcionado, ejecuta `python --version`. Si ves `3.12.9`, ¡todo está bien! Si no, pídele ayuda a un TA para resolver el problema por medio de `versiones de pyenv` y `type -a python` (`python` debería estar usando la versión `.pyenv/shims` de primero). - - -## Entorno Virtual de Python - -Antes de instalar paquetes de Python, aislaremos la configuración del Bootcamp en un entorno virtual **dedicado**. Usaremos un plugin `pyenv` llamado [`pyenv-virtualenv`](https://github.com/pyenv/pyenv-virtualenv). - -### Instala un virtualenv - -Primero instala este plugin: - -```bash -git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv -exec zsh -``` - -Crea el entorno virtual que usaremos durante todo el bootcamp: - -```bash -pyenv virtualenv 3.12.9 lewagon -``` - -Define el entorno virtual con lo siguiente: - -```bash -pyenv global lewagon -``` - -¡Genial! Ahora cada vez que queramos instalar un paquete Python, lo haremos en ese entorno. - - -### Paquetes de Python - -Ahora que tenemos el ambiente virtual de `lewagon` adecuado, es hora de instalarle algunos paquetes. - -Primero, actualiza `pip`, la herramienta para instalar Paquetes Python desde [pypi.org](https://pypi.org). Ejecuta lo siguiente en la última terminal donde esté activado el virtualenv de `lewagon`: - -```bash -pip install --upgrade pip -``` - -Ahora instala algunos paquetes para las primeras semanas del programa: - - - -``` bash -pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/specs/releases/linux.txt -``` - - - - -## Mejora Jupyter Notebook - -Mejora la visualización del [elemento `details` para revelación de información](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details) en tus notebooks. - -Ejecuta las siguientes líneas para crear una hoja de estilos `custom.css` en tu directorio de configuración de Jupyter: - -```bash -LOCATION=$(jupyter --config-dir)/custom -SOURCE=https://raw.githubusercontent.com/lewagon/data-analytics-setup/refs/heads/master/specs/jupyter/custom.css -mkdir -p $LOCATION -curl $SOURCE > $LOCATION/custom.css -``` - - -### Configuración de Jupyter Notebook para abrirlo en tu navegador - -Primero, vamos a configurar tu navegador predeterminado nuevamente. Ya hicimos esto antes, pero cuando instalamos los dotfiles se eliminó la configuración. No hay problema, ejecuta este comando para volver a configurarlo: - -```bash -grep -E "export (GH_)*BROWSER" ~/.zshrc.backup >> ~/.zshrc -``` - -Luego, reinicia tu terminal con: - -```bash -exec zsh -``` - -Genera el archivo de configuración para **Jupyter Notebook**... - -``` bash -jupyter notebook --generate-config -``` - -⚠️ Por favor copia la ruta que arrojó el comando anterior. - -Ahora edita el archivo de configuración de Jupyter generado: - -``` bash -sed -i.backup 's/# c.ServerApp.use_redirect_file = True/c.ServerApp.use_redirect_file = False/' ~/.jupyter/jupyter_notebook_config.py -``` - -Intenta usar Jupyter: - -``` bash -jupyter notebook -``` - -Este comando debió haber abierto una página Jupyter en tu navegador: - -![](images/wsl_jupyter_notebook.png) - -Si no es el caso, por favor llama a un TA. - -Para cerrar el servidor jupyter en la terminal, presiona `CTRL` + `C`, enter y. Luego presiona Enter. - - -## Chequeo de la configuración de Python - -### Chequeo de Python y packages - -Reinicia tu terminal: - -```bash -cd ~/code && exec zsh -``` - -Verifica tu versión de Python con los siguientes comandos: - -```bash -zsh -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/python_checker.sh)" 3.12.9 -``` - -Ejecuta el comando siguiente para verificar que hayas instalado los paquetes requeridos correctamente: - -```bash -zsh -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/pip_check.sh)" -``` - -Ahora ejecuta el siguiente comando para verificar que puedas cargar estos paquetes: - -```bash -python -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/pip_check.py)" -``` - -### Chequeo de Jupyter - -Ahora verifica que puedas iniciar un servidor de notebook en tu máquina: - -```bash -jupyter notebook -``` - -Tu navegador web debería abrir en una ventana `jupyter`: - -![jupyter.png](images/jupyter.png) - -Haz clic en `New` y, en el menú desplegable, selecciona Python 3 (ipykernel): - -![jupyter_new.png](images/jupyter_new.png) - -Debería abrirse una pestaña en un nuevo notebook: - -![jupyter_notebook.png](images/jupyter_notebook.png) - -Asegúrate de que estés usando la versión correcta de python en el notebook. Abre una celda y ejecuta lo siguiente: - -``` python -import sys; sys.version -``` - -Debería mostrar `3.12.9` seguido de algunos detalles adicionales. Si no es así, consulta con un TA. - -Puedes cerrar tu navegador web y luego cerrar el servidor jupyter con `CTRL` + `C`. - -¡Listo! Ya tienes un virtual env de python completo con todos los paquetes tercerizados que necesitarás en el bootcamp. - - -## Insomnia - -> ℹ️ **¿Por qué?** Insomnia es una de las herramientas más conocidas para probar APIs, y será útil en nuestro curso de Introducción a las APIs. - -- Ve a [https://insomnia.rest/download](https://insomnia.rest/download) - -- Descarga Insomnia - -- Instala Insomnia - - -## Parámetros de Windows - -### Intercambio de archivos entre Windows y Ubuntu - -Necesitamos una manera fácil de transferir archivos de Windows a Ubuntu y viceversa. - -Para ello, vamos a crear atajos a directorios Ubuntu en el **Explorador de Archivos** de Windows: -- Abre el Explorador de Archivos de Windows (o usa el atajo `WIN` + `E`) -- En la Barra de Direcciones, coloca `\\wsl$\` (o `\\wsl$\Ubuntu` si eso no funciona) -- Ahora tienes acceso al sistema de archivos de Ubuntu -- Navega por el sistema de archivos de Ubuntu para encontrar los directorios que te interesen -- Arrastra las carpetas que te interesen a la Barra de Direcciones para crear atajos - -![Cómo agregar un atajo al sistema de archivos de Ubuntu en Windows](https://github.com/lewagon/setup/blob/master/images/windows_ubuntu_file_system_shortcut.gif) - -### Abre el Explorador de Archivos de Windows desde la terminal de Ubuntu - -Otra opción para mover archivos es abrir el **Explorador de Archivos** de Windows desde la terminal de Ubuntu: -- Abre una terminal de Ubuntu -- Ve al directorio que quieres explorar -- Ejecuta el comando `explorer.exe .` (Otra alternativa es usar `wslview .`) -- Si obtienes un mensaje de input output error, ejecuta `wsl --shutdown` en una PowerShell de Windows y abre la terminal de Ubuntu nuevamente - -![Cómo abrir Windows Explorer desde la terminal de Ubuntu](https://github.com/lewagon/setup/blob/master/images/windows_explorer_from_terminal.png) - -### Uso del Sistema de Archivos de Ubuntu - -Es posible que quieras averiguar la localización exacta de un directorio en Windows en el sistema de archivos de Ubuntu o viceversa. - -Para convertir una ruta Windows a una Ubuntu y viceversa: -- Abre una terminal de Ubuntu -- Usa el comando `wslpath "C:\Program Files"` para traducir la ruta Windows a una Ubuntu -- Usa el comando `wslpath -w "/home"` para traducir una ruta Ubuntu a una Windows -- El comando `wslpath -w $(pwd)` devuelve la ruta Windows del directorio Ubuntu actual - -![Cómo acceder a una ruta Windows desde una terminal de Ubuntu](https://github.com/lewagon/setup/blob/master/images/windows_path_from_terminal.png) - -### Anclaje de aplicaciones a tu barra de tareas - -Usarás frecuentemente casi todas las aplicaciones que has instalado hoy. ¡Anclémoslas a tu barra de tareas para que estén a solo un clic de ti! - -Para ello, abre la aplicación. Haz clic derecho en el ícono de la barra de tareas para hacer que aparezca el menú contextual (también llamado emergente) y selecciona "Pin to taskbar". - -![Cómo anclar una aplicación a la barra de tareas en Windows](https://github.com/lewagon/setup/blob/master/images/windows_taskbar.png) - -Ancla lo siguiente: -- Tu terminal -- Tu explorador de archivos -- VS Code -- Tu navegador de Internet -- Slack - - -## Visual C++ Redistributable - -Algunos paquetes Python requieren de un compilador para funcionar correctamente, así que vamos a instalar uno: - -[For x64 systems](https://aka.ms/vs/16/release/vc_redist.x64.exe) - - -## Configuración de Google Cloud Platform - -[GCP](https://cloud.google.com/) es una solución en la nube que usarás para colocar tus productos basados en Machine Learning en producción. - -🚨 Si estás en el grupo de estudiantes del **Bootcamp de Medio Tiempo**, ¡IGNORA ESTA SECCIÓN POR AHORA! **GCP** ofrece $300 en créditos durante 3 meses, así que no es buena idea activar tu cuenta GCP demasiado pronto 🙅‍♂️ - -### Preparación del Proyecto - -- Ve a [Google Cloud](https://console.cloud.google.com/) y crea una cuenta si aún no tienes una -- En la consola de Cloud, en la lista de proyectos, selecciona o crea un proyecto Cloud - -![](images/gcp-create-project.png) - -- Asígnale un nombre como `Wagon Bootcamp` por ejemplo -- Verás que se creará un `ID` automáticamente para el proyecto e. g. `wagon-bootcamp-123456` - -![](images/gcp_project.png) - -### Idioma de la cuenta - -Abre las preferencias en tu cuenta GCP para facilitar el seguimiento de las instrucciones durante el bootcamp: - -[https://myaccount.google.com/language](https://myaccount.google.com/language) - -Si el *idioma de preferencia* no es: - -- **English** -- **United States** - -Cámbialo a inglés: - -- Haz clic en el logo edición (es una lapicera) -- Selecciona **English** -- Selecciona **United States** -- Haz clic en **Select** - -### Cuenta de facturación - -Ahora conecta tu cuenta con tu tarjeta de crédito. Este paso es obligatorio para poder usar los servicios que suministra GCP. No te preocupes, podrás utilizar la mayoría de los servicios de GCP por medio de créditos gratuitos durante el bootcamp. - -![](images/gcp-billing.png) - -- Haz clic en **Billing** -- Haz clic en **MANAGE BILLING ACCOUNTS** -- Haz clic en **ADD BILLING ACCOUNT** -- Asígnale un nombre a tu cuenta de facturación, e. g. `My Billing Account` -- Haz clic en "I have read..." y acepta los términos de uso -- Haz clic en **CONTINUE** -- Selecciona tu tipo de cuenta: `Individual` -- Agrega tu nombre y dirección - -Verás que tienes créditos gratuitos con un valor de "$300 a utilizar en los próximos 90 días". - -- Haz clic en los detalles de la tarjeta -- Agrega la información de tu tarjeta de crédito -- Haz clic en **START MY FREE TRIAL**. Esto significa comenzar mi período de prueba. - -Cuando termines, verifica que la cuenta de facturación esté conectada con tu proyecto GCP. - -- Selecciona tu proyecto -- Ve a **Billing** -- Selecciona **LINK A BILLING ACCOUNT** -- Selecciona `My Billing Account` -- Haz clic en **SET ACCOUNT** - -Ahora deberías ver lo siguiente: - -```bash -Free trial status: $300 credit and 91 days remaining - with a full account, you'll get unlimited access to all of Google Cloud Platform. -``` - -Esto significa Estado de período de prueba: crédito de $300 y 91 días para usarlo - con la full account, tendrás acceso ilimitado a todo lo que ofrece Google Cloud Platform. - -
- 👉 Si no tienes una tarjeta de crédito 👈 - -Si no tienes una tarjeta de crédito, puedes abrir una cuenta en **Revolut**. -Revolut es una aplicación que funciona como un banco y que te permitirá crear una tarjeta de crédito virtual conectada a la dirección de facturación de tu smartphone. - -Ignora este paso si ya tienes una tarjeta de crédito. Simplemente úsala para hacer la configuración. - -Descarga la app Revolut o ve a [revolut](https://www.revolut.com/a-radically-better-account) y sigue los pasos para descargar la app (introduce tu número de teléfono móvil y haz clic en Get Started). - -- Abre la app Revolut -- Agrega tu número de teléfono móvil -- Agrega el código de verificación que recibiste por SMS -- La app te preguntará por tu país, dirección, primer y segundo nombre, fecha de nacimiento y el email -- La app también te pedirá tu profesión y una selfie -- La app te pedirá una foto de tu documento nacional de identidad o pasaporte - -Cuando termines, selecciona el plan estándar (gratuito). No tienes que agregar la tarjeta a Apple pay, pedir que te envíen una tarjeta a tu domicilio ni tampoco agregar dinero a la cuenta. - -Ahora tienes una tarjeta virtual que podrás usar para hacer la configuración de GCP. - -En la vista principal de la app Revolut - -- Haz clic en Ready to use -- Haz clic en the card -- Haz clic en Show card details -- Toma nota de la información de la tarjeta de crédito virtual y úsala para completar la configuración de GCP - -
- -
- 👉 Si recibes un email de Google diciendo "Urgent: your billing account XXXXXX-XXXXXX-XXXXXX has been suspended" 👈 - -Esto puede pasar justo después de haber creado la cuenta en Revolut. - -- Haz clic en PROCEED TO VERIFICATION -- Te pedirán que envíes una foto de tu tarjeta de crédito (solo los últimos 4 dígitos, nada más) -- Si ya has usado **Revolut**, puedes enviar una captura de pantalla de tu tarjeta de crédito virtual (no olvides quitar la fecha de vencimiento de la captura) -- Explica que estás haciendo el bootcamp de Le Wagon, que no tienes una tarjeta de crédito y que acabas de crear una cuenta en Revolut para poder configurar GCP para el bootcamp con una tarjeta de crédito virtual - -Es posible que te validen la cuenta pero también es posible que te pidan más información en los próximos 30 minutos. - -Cuando la cuenta sea validada recibirás un email diciendo lo siguiente: "Your Google Cloud Platform billing account XXXXXX-XXXXXX-XXXXXX has been fully reinstated and is ready to use.". Esto significa que tu cuenta Google Cloud Platform ha sido restablecida - -
- -### Habilitación de servicios de GCP - -- Asegúrate de que la facturación está habilitada para tu proyecto Google Cloud - -ℹ️ Tienes un **crédito de $300** para usar con recursos de Google Cloud. Esto será más que suficiente para el bootcamp. - -- [Habilita las APIs BigQuery y Compute Engine](https://console.cloud.google.com/flows/enableapi?apiid=bigquery,compute) (Esto puede tomar varios minutos) - -### Configuración de Cloud sdk - -- Autentica el CLI de `gcloud` con la cuenta que usaste para GCP - -```bash -gcloud auth login -``` - -- Inicia sesión en tu cuenta Google en la nueva pestaña que se abrió en tu navegador -- Lista la cuenta que tienes activa y verifica que el email que usaste para GCP está ahí - -```bash -gcloud auth list -``` - -- Define tu proyecto actual (reemplaza `PROJECT_ID` con el `ID` de tu proyecto e.g. `wagon-bootcamp-123456`) - -```bash -gcloud config set project PROJECT_ID -``` - -- Lista la cuenta que tienes activa y tu proyecto actual y verifica que tu proyecto está ahí - -```bash -gcloud config list -``` - -### Crea una llave 🔑 de cuenta de servicio - -Como ya creaste una cuenta `GCP account` y un `project` (identificado por su `PROJECT_ID`), vamos a configurar las acciones (llamadas API calls) que quieres que tu código ejecute. - -
- 🤔 ¿Por qué necesitamos una clave de cuenta de servicio? - - Creaste una `cuenta GCP` conectada a una tarjeta de crédito. Te facturarán de acuerdo al uso que les des a los recursos de **Google Cloud Platform**. El cargo se hará si utilizas algo después de que el período de prueba gratuito se haya terminado o si te excedes del límite de consumo que te permite dicho período. - - En tu `cuenta GCP` has creado un solo `proyecto GCP` identificado por su `PROJECT_ID`. Los `proyectos GCP` te permiten organizar y monitorear la manera en que consumes los recursos **GCP** de forma más precisa. En este bootcamp solo crearemos un solo proyecto. - - Ahora necesitamos una manera de saber qué recursos nuestro código podrá consumir dentro de un `GCP project`. Nuestro código consume recursos GCP por medio de llamadas API. - - Ya que las llamadas API no son gratuitas, es importante definir cuidadosamente cómo nuestro código las utilizará. Sin embargo, durante el bootcamp no habrá restricciones. Le permitiremos a nuestro código que utilice todas las API **GCP** sin restricciones. - - Así como pueden haber varios proyectos asociados a una cuenta GCP, un proyecto puede estar compuesto de muchos servicios (cualquier paquete de código, sin importar su formato, que necesite utilizar llamadas a la API de GCP para cumplir con su propósito). - - GCP exige que los servicios de los proyectos que usen llamadas API se registren en la plataforma y que se configuren sus credenciales por medio del acceso concedido a una `service account`. - - Por ahora solo tendremos que usar un solo servicio y crearemos la `service account` correspondiente. -
- -Ya que la [service account](https://cloud.google.com/iam/docs/service-accounts) es lo que identifica tu aplicación (y por ende tu cuenta de facturación GCP y, en última instancia, tu tarjeta de crédito), lo mejor es ser cuidadoso en los próximos pasos. - -⚠️ **No compartas la 🔑 del archivo json de tu cuenta de servicio** ⚠️ No la guardes en tu escritorio ni en tu código base de git (incluso si tu repositorio git es privado). Que no se te olvide en un lugar como la máquina de café y, por supuesto, no la envíes en un tweet. - -- Ve a la [página de las cuentas de servicio](https://console.cloud.google.com/apis/credentials/serviceaccountkey) -- Selecciona tu proyecto en la lista de proyectos recientes si te piden que -- Crees una cuenta de servicio: - - Haz clic en **CREATE SERVICE ACCOUNT** que significa crear une cuenta de servicio: - - Define un `Service account name` para esa cuenta. Esto significa Nombre de cuenta de servicio - - Haz clic en **CREATE AND CONTINUE** que significa crear y continuar - - Haz clic en **Select a role** que significa selecciona un rol. Escoge `Quick access/Basic` luego **Owner**. Esto otorga acceso total a todos los recursos - - Haz clic en **CONTINUE** - - Haz clic en **DONE** -- Descarga la 🔑 del archivo json de la cuenta de servicio: - - Haz clic en la cuenta de servicio recién creada - - Haz clic en **KEYS** - - Haz clic en **ADD KEY** y luego en **Create new key** - - Selecciona **JSON** y haz clic en **CREATE** - -![](images/gcp_create_key.png) - -El navegador acaba de guardar la 🔑 del archivo json de la cuenta de servicio en tu carpeta de descargas (el nombre se le asigna según el nombre de la cuenta de servicio. Es algo como `le-wagon-data-123456789abc.json`) - - -Ahora vamos a mover el archivo json de la cuenta de servicio desde tu disco en Windows al disco en Ubuntu. Esto le permitirá a las herramientas de desarrollo en Ubuntu acceder a los recursos de tu cuenta GCP. - -Primero crea un directorio para almacenar el archivo. - -👉 Abre una terminal en Ubuntu y ejecuta los siguiente comandos - -🚨 reemplaza el `GITHUB_NICKNAME` por tu nickname de **GitHub** - -``` bash -cd ~/code/GITHUB_NICKNAME -ls -la -``` - -Si el comando no muestra el directorio `dotfiles`, pídele ayuda a un TA 🙏 - -Si no es el caso, puedes proceder con la configuración: - -``` bash -mkdir gcp -``` - -![](images/wsl-gcp-dir.png) - -Ahora moveremos el archivo json de la cuenta de servicio al directorio `gcp` que acabamos de crear. - -Abre un **Buscador de Archivos** de Windows (Win + E) y localiza el directorio `gcp` en el sistema de archivo de Ubuntu. - -Puedes optar por las siguientes alternativas: - -- Usar el enlace de **Acceso rápido** que creamos hace un rato -- O escribir la localización del directorio `gcp` manualmente en la barra de direcciones del sistema de archivos de Ubuntu: - -```bash -\\wsl$\Ubuntu\home\UBUNTU_USERNAME\code\GITHUB_NICKNAME -``` - -🚨 Si optas por la segunda opción: - -- reemplaza el `UBUNTU_USERNAME` por el usuario que escogiste durante la configuración de **Ubuntu** -- reemplaza el `GITHUB_NICKNAME` por tu nickname de **GitHub** - -![](images/wsl-gcp-key.png) - -Cuando hayas localizado el directorio `gcp` en el **Buscador de Archivos** de Windows, ponle el archivo json de la cuenta de servicio que descargaste. - -Ahora deberías poder ver el archivo desde el sistema de archivos de Ubuntu. - -👉 Abre una terminal en Ubuntu y verifica que el archivo json de la cuenta de servicio ha sido movido - -``` bash -cd gcp -ls -la -``` - -![](images/wsl-gcp-dir-2.png) - -Si no ves el archivo json de la cuenta de servicio en el directorio `gcp`, pídele ayuda a un TA 🙏 - -Ahora almacenaremos la ruta al archivo json de la cuenta de servicio en una variable de entorno. - -🚨 Haz las siguientes sustituciones en este comando: - -- El `UBUNTU_USERNAME` por el usuario que escogiste durante la configuración de **Ubuntu** -- El `GITHUB_NICKNAME` por tu nickname de **GitHub** -- El `SERVICE_ACCOUNT_JSON_FILE_CONTAINING_YOUR_SECRET_KEY.json` por el nombre del archivo json de tu cuenta de servicio. - -``` bash -echo 'export GOOGLE_APPLICATION_CREDENTIALS=/home/UBUNTU_USERNAME/code/GITHUB_NICKNAME/gcp/SERVICE_ACCOUNT_JSON_FILE_CONTAINING_YOUR_SECRET_KEY.json' >> ~/.aliases -``` - - - -
- ℹ️ ¿Cómo encontrar la ruta absoluta de un archivo? - Puedes arrastrar el archivo a tu terminal. -
- -**Reinicia** tu terminal y ejecuta lo siguiente: - -``` bash -echo $GOOGLE_APPLICATION_CREDENTIALS -``` - -Deberías obtener la siguiente información: - -```bash -/some/absolute/path/to/your/gcp/SERVICE_ACCOUNT_JSON_FILE_CONTAINING_YOUR_SECRET_KEY.json -``` - -Ahora verifica si la ruta al archivo json de tu cuenta de servicio es el correcto: - -``` bash -cat $(echo $GOOGLE_APPLICATION_CREDENTIALS) -``` - -👉 Este comando debería mostrar el contenido del archivo json de tu cuenta de servicio. Si no es el caso, pídele ayuda a un TA 🙏 - -Tu código y utilidades ahora pueden acceder a los recursos de tu cuenta GCP. - -Continuemos con los últimos pasos de la configuración... - -- Lista las cuentas de servicio asociadas a tu cuenta activa y a tu proyecto actual -```bash -gcloud iam service-accounts list -``` -- Recupera el email de la cuenta de servicio e. g. `SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com` -- Lista los roles de la cuenta de servicio desde la cli (reemplaza el PROJECT_ID y el SERVICE_ACCOUNT_EMAIL) -```bash -gcloud projects get-iam-policy PROJECT_ID \ ---flatten="bindings[].members" \ ---format='table(bindings.role)' \ ---filter="bindings.members:SERVICE_ACCOUNT_EMAIL" -``` -- Ahora deberías ver que tu cuenta de servicio tiene el rol de `roles/owner` - -
- Resolución de problemas - -- `AccessDeniedException: 403 The project to be billed is associated with an absent billing account.`. Esto significa que el proyecto a facturar está asociado a una cuenta de facturación que no está habilitada - - Asegúrate de habilitar la facturación para tu proyecto https://cloud.google.com/billing/docs/how-to/modify-project -
- -🏁 Listo. ¡Has terminado la configuración de GCP! - - - ## Kitt - -Deberías haber recibido un correo electrónico de Le Wagon invitándote a registrarte en [Kitt](https://kitt.lewagon.com) (nuestra plataforma de aprendizaje). - -Entonces deberías recibir una invitación adicional de Slack, invitándote a la comunidad de los alumni de Le Wagon en slack (donde podrás chatear con tus compañeros y todos los demás alumni). Haz clic en **Join** y completa la información que te piden. - -Si no lo has recibido, por favor contacta a tu equipo de enseñanza. - - -## Slack - -[Slack](https://slack.com/) es una plataforma de comunicación popular en la industria tech. - -### Instalación - -[Descarga la aplicación Slack](https://slack.com/downloads/windows) e instálala. - -:warning: Si ya estás usando Slack en tu navegador, por favor descarga e instala **la aplicación de escritorio** la cual tiene todas las funciones. - - -### Parámetros - -Abre la aplicación e inicia sesión en `lewagon-alumni`. - -Asegúrate de **subir una foto para tu perfil** :point_down: - -![Cómo subir una foto de perfil en Slack](https://github.com/lewagon/setup/blob/master/images/slack_profile_picture.gif) - -La idea es tener Slack abierto todo el día para compartir enlaces útiles / pedir ayuda / decidir dónde almorzar / etc. - -Para asegurarte de que todo lo relacionado a videollamadas funcione bien, prueba tu cámara y tu micrófono: -- Abre la aplicación Slack -- Haz clic en tu foto de perfil en la esquina superior derecha -- Selecciona "Preferencias" en el menú. -- Haz clic en "Audio y vídeo" en la columna de la izquierda. -- Debajo de "Solución de problemas", haz clic en "Ejecutar una prueba de audio, vídeo y pantalla compartida". La prueba se abrirá en una nueva ventana. -- Comprueba que tus dispositivos preferidos de altavoz, micrófono y cámara aparecen en los menús desplegables y haz clic en "Iniciar prueba" -- Haz clic en el botón verde "Start test" - -![Chequea el micrófono y la cámara con Slack](https://github.com/lewagon/setup/blob/master/images/slack_call_test.png) - -:heavy_check_mark: Cuando termine el test deberías ver mensajes de "Succeed" en verde por lo menos para tu micrófono y tu cámara. :+1: - -:x: Si no es el caso, **contacta a un profesor**. - -¡También puedes instalar la aplicación Slack en tu smartphone e iniciar sesión en `lewagon-alumni`! - - -## Extra - -Si has terminado la configuración, te pedimos que preguntes si alguien necesita ayuda con la suya (macOS, Linux o Windows). Las primeras clases son a las 2pm. Hablaremos de la configuración que acabas de hacer y de Kitt. - -Si no tienes mucha experiencia con `git` y GitHub, por favor [ve nuevamente el video de este workshop](https://www.youtube.com/watch?v=Z9fIBT2NBGY) (puedes verlo a `1.25` de velocidad). - - diff --git a/WINDOWS_keep_current.es.md b/WINDOWS_keep_current.es.md deleted file mode 100644 index 78fe7e6..0000000 --- a/WINDOWS_keep_current.es.md +++ /dev/null @@ -1,301 +0,0 @@ - -# Cómo mantener tu configuración al día - -Esta sección contiene los pasos que tienes que seguir para asegurarte de que tu configuración esté actualizada. - -Primero y principal, para trabajar en buenas condiciones, asegúrate de que: - -- tienes una conexión internet de alta velocidad -- tu computadora tiene suficiente memoria (8GB) para poder ejecutar tu código eficientemente -- tu computadora tiene suficiente espacio en disco (30GB) para poder trabajar con grandes datasets. - -## git - -Verifica que git funcione: - -``` bash -git --version -``` - -👉 Deberías obtener algo parecido a esto de aquí abajo que te muestra la versión de git: - -``` bash -git version 2.33.0 -``` - -## GitHub - -Verifica que tengas acceso a los repositorios GitHub públicos de Le Wagon - -``` bash -cd ~/code// -git clone git@github.com:lewagon/data-analytics-setup data-analytics-setup -``` - -👉 Se debe clonar el repositorio correctamente: - -``` bash -Cloning into 'data-analytics-setup'... -remote: Enumerating objects: 21, done. -remote: Counting objects: 100% (21/21), done. -remote: Compressing objects: 100% (14/14), done. -Receiving objects: 100% (21/21), done. -Resolving deltas: 100% (6/6), done. -remote: Total 21 (delta 6), reused 16 (delta 1), pack-reused 0 -``` - -👉 Puedes borrar el repositorio clonado - -``` bash -rm -Rf data-analytics-setup -``` - -## Verificación de la configuración de pyenv - -Verifica que tengas un `~/.zprofile` : - -``` bash -cat ~/.zprofile -``` - -👉 Deberías poder ver las líneas siguientes: - -``` bash -# Setup the PATH for pyenv binaries and shims -export PYENV_ROOT="$HOME/.pyenv" -export PATH="$PYENV_ROOT/bin:$PATH" -type -a pyenv > /dev/null && eval "$(pyenv init --path)" -``` - -Si el comando no da ningún resultado, crea el archivo `~/.zprofile`: - -``` bash -cd -touch .zprofile -``` - -Agrega las siguientes líneas a tu `~/.zprofile` : - -``` bash -# Setup the PATH for pyenv binaries and shims -export PYENV_ROOT="$HOME/.pyenv" -export PATH="$PYENV_ROOT/bin:$PATH" -type -a pyenv > /dev/null && eval "$(pyenv init --path)" -``` - -## Creación de un ambiente virtual dedicado - -Actualiza pyenv: - - -``` bash -cd $(pyenv root) && git pull -``` - - -Instala la versión actual de python: - -```bash -pyenv install 3.12.9 -``` - -👉 Asegúrate de que el comando se ejecute completamente y luego **reinicia tu terminal**. - -Remueve el ambiente virtual dedicado actual: - -```bash -pyenv virtualenv-delete lewagon_current -``` - -Crea un nuevo ambiente virtual: - -```bash -pyenv virtualenv 3.12.9 lewagon_current -``` - -Define el nuevo ambiente virtual como predeterminado: - -```bash -pyenv global lewagon_current -``` - -Ahora deberías poder ver que el nuevo ambiente virtual está activado: - -``` bash -pyenv versions -``` - -👉 Aquí hay una muestra del resultado: - -``` bash - system - 3.12.9 - 3.12.9/envs/lewagon_current - 3.7.6 - 3.7.6/envs/lewagon -* lewagon_current - lewagon -``` - -### Instalación de los paquetes del bootcamp - -```bash -pip install -U pip -``` - - - -``` bash -pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/specs/releases/linux.txt -``` - - - -## GCP - -Asegúrate de que el comando `gcloud` esté conectado con el email de tu cuenta Google Cloud Platform: - -``` bash -gcloud auth list -``` - -👉 Esto muestra los emails de tu cuenta GCP: - -``` bash - Credentialed Accounts -ACTIVE ACCOUNT -* your.email_address@your.email.provider - -To set the active account, run: - $ gcloud config set account `ACCOUNT` -``` - -Verifica el nombre de tu proyecto gcp: - -``` bash -gcloud config list -``` - -👉 Esto muestra tanto el email de tu cuenta GCP como tu proyecto GCP: - -``` bash -[core] -account = your.email_address@your.email.provider -disable_usage_reporting = True -project = your-gcp-project-id - -Your active configuration is: [default] -``` - -Verifica que el email creado para la cuenta de servicio permita que tu código se identifique con GCP: - -``` bash -gcloud iam service-accounts list -``` - -👉 Esto muestra el email de la cuenta de servicio en GCP que permite que tu código se identifique con GCP. - -``` bash -DISPLAY NAME EMAIL DISABLED -your-gcp-project-id your-service-account@your-service-account.iam.gserviceaccount.com False -``` - -Ve a [GCP IAM & Admin / Service Accounts](https://console.cloud.google.com/iam-admin/serviceaccounts): - -- Selecciona tu proyecto -- Haz clic en el email de la cuenta de servicio -- Ve a `PERMISSIONS` -- Asegúrate de que el email de la cuenta de servicio tenga un `Role` configurado como `Owner` - -Verifica que hayas configurado tu máquina para que permita que tu código se identifique con GCP. El archivo de claves json de las credenciales de la cuenta de servicio debe estar conectado al email de la cuenta de servicio correcto: - -``` bash -cat $GOOGLE_APPLICATION_CREDENTIALS -``` - -👉 Esto muestra el contenido de la clave json de las credenciales de la cuenta de servicio: - -``` bash -{ - "type": "service_account", - "project_id": "your-gcp-project-id", - "private_key_id": "a2d4a2d4a2d4a2d4a2d4a2d4a2d4a2d4a2d4a2d4", - "private_key": "-----BEGIN PRIVATE KEY-----\nMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInM=\n-----END PRIVATE KEY-----\n", - "client_email": "your-service-account@your-service-account.iam.gserviceaccount.com", - "client_id": "105410541054105410541", - "auth_uri": "https://accounts.google.com/o/oauth2/auth", - "token_uri": "https://oauth2.googleapis.com/token", - "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", - "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/your-service-account%40your-service-account.iam.gserviceaccount.com" -} -``` - -Asegúrate de que el archivo contenga: - -- el id el proyecto adecuado: your-gcp-project-id -- el email de la cuenta de servicio adecuado: your-service-account@your-service-account.iam.gserviceaccount.com - -👉 Si esto no muestra nada o si el email dentro del archivo no es el de tu cuenta de servicio, regresa al setup. - - -## Chequeo de la configuración de Python - -### Chequeo de Python y packages - -Reinicia tu terminal: - -```bash -cd ~/code && exec zsh -``` - -Verifica tu versión de Python con los siguientes comandos: - -```bash -zsh -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/python_checker.sh)" 3.12.9 -``` - -Ejecuta el comando siguiente para verificar que hayas instalado los paquetes requeridos correctamente: - -```bash -zsh -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/pip_check.sh)" -``` - -Ahora ejecuta el siguiente comando para verificar que puedas cargar estos paquetes: - -```bash -python -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/pip_check.py)" -``` - -### Chequeo de Jupyter - -Ahora verifica que puedas iniciar un servidor de notebook en tu máquina: - -```bash -jupyter notebook -``` - -Tu navegador web debería abrir en una ventana `jupyter`: - -![jupyter.png](images/jupyter.png) - -Haz clic en `New` y, en el menú desplegable, selecciona Python 3 (ipykernel): - -![jupyter_new.png](images/jupyter_new.png) - -Debería abrirse una pestaña en un nuevo notebook: - -![jupyter_notebook.png](images/jupyter_notebook.png) - -Asegúrate de que estés usando la versión correcta de python en el notebook. Abre una celda y ejecuta lo siguiente: - -``` python -import sys; sys.version -``` - -Debería mostrar `3.12.9` seguido de algunos detalles adicionales. Si no es así, consulta con un TA. - -Puedes cerrar tu navegador web y luego cerrar el servidor jupyter con `CTRL` + `C`. - -¡Listo! Ya tienes un virtual env de python completo con todos los paquetes tercerizados que necesitarás en el bootcamp. - - diff --git a/macOS.es.md b/macOS.es.md deleted file mode 100644 index a9c9e21..0000000 --- a/macOS.es.md +++ /dev/null @@ -1,1186 +0,0 @@ -# Instrucciones para la configuración - -Aquí abajo encontrarás las instrucciones para configurar tu computadora para [el curso de Data Analytics de Le Wagon](https://www.lewagon.com/data-analytics-course/full-time) - -Por favor **léelas cuidadosamente y ejecuta todos los comandos en el siguiente orden**. Si tienes algún problema, no dudes en pedirle ayuda a una profesor :raising_hand: - -¡Comencemos! :rocket: - - -## Cuenta GitHub - -¿Ya tienes una cuenta GitHub? Si no es el caso, [ábrela ya](https://github.com/join). - -:point_right: **[Sube una foto](https://github.com/settings/profile)** y escribe tu nombre correctamente en tu cuenta GitHub. Esto es importante porque nosotros usaremos un tablero de comando interno con tu avatar. Por favor hazlo **ahora** antes de dar un paso más en esta guía. - -![Foto GitHub](https://github.com/lewagon/setup/blob/master/images/github_picture.png) - -:point_right: **[Habilita la Autenticación de Dos Factores (2FA)](https://docs.github.com/en/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication#configuring-two-factor-authentication-using-text-messages)**. GitHub te enviará mensajes de texto con un código cuando intentes iniciar sesión. Esto es importante para la seguridad y también pronto será necesario para contribuir código en GitHub. - - -## Chips Apple Silicon - -Si compraste tu computadora después de finales del 2020, es probable que tenga un nuevo chip Apple Silicon en lugar de un procesador Intel: descubrámoslo. - -Abre una nueva ventana de la tarminal desde Aplicaciones > Utilidades o búscala con [Spotlight](https://support.apple.com/es-es/HT204014): - -![Abrir Terminal en macOS](images/macos_open_terminal.png) - -Copia y pega el siguiente comando en la terminal y presiona `Enter` para ejecutarlo. - -``` bash -/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/setup/master/utils/macos_list_processor_type.sh)" -``` - -☝️ El resultado del comando debería indicar si tu computadora usa un chip Apple Silicon. - -Si tu computadora usa **Apple Silicon**, expande el siguiente párrafo y ejecútalo. En caso contrario, ignóralo. - -
- 👉  Setup para Apple Silicon 👈 - -Quieres asegurarte que no estás usando Rosetta, que es una forma de usar tu Terminal como si tuvieras una computadora con Intel. - -Abre la app Finder (o búscala con [Spotlight](https://support.apple.com/es-es/HT204014)). - -Ve a Aplicaciones > Utilidades. - -Ubica la app Terminal (selecciónala). - -Presiona `Cmd` + `I` en la app Terminal, luego verifica que la caja "Abrir usando Rosetta" esté **desmarcada**. -En caso de que no veas esta caja, simplemente continúa. -
- -🚨 Ten esto en mente. Deberás recordarlo más adelante en este setup si tu computadora usa un chip Apple Silicon o Intel. - - -## Cómo cerrar aplicaciones en una Mac correctamente - -Hacer clic en círculo rojo en la esquina superior izquierda de la ventana de la aplicación en Mac **no la termina el proceso**, solo cierra una ventana activa. Hay dos alternativas para cerrar la aplicación _realmente_. Puedes presionar `Cmd + Q` cuando la misma está activa. La otra opción es ir a `APP_NAME` -> `Quit` en la barra del menú. - -![Cerrar la Terminal en macOS](https://github.com/lewagon/setup/blob/master/images/macos_quit.png) - -Durante esta configuración, se te pedirá **cerrar y abrir nuevamente** aplicaciones varias veces. Por favor asegúrate de hacerlo correctamente :pray: - -## Herramientas de la Línea de Comando - -Abre una nueva terminal, copia y pega el comando siguiente y presiona `Enter`: - -```bash -xcode-select --install -``` - -Si obtienes el mensaje que te mostramos a continuación, puedes ignorar este paso e ir al siguiente. - -```bash -# command line tools are already installed, use "Software Update" to install updates -``` - -Este mensaje significa que las herramientas de la línea de comando ya están instaladas y te pide que uses "Software Update" para instalar las actualizaciones. Si no recibes este mensaje, se abrirá una ventana preguntándote si quieres instalar algún programa: haz clic en "Install" y espera. - - -![Instalación de xcode-select en macOS](https://github.com/lewagon/setup/blob/master/images/macos_xcode_select_install.png) - -:heavy_check_mark: Si ves el mensaje "The software was installed", lo que significa que el programa se ha instalado, entonces todo está bien :+1: - -:x: Si falla el comando `xcode-select --install` , intenta nuevamente: algunas veces los servidores de Apple se sobrecargan. - -:x: Si ves el mensaje "Xcode is not currently available from the Software Update server", debes actualizar el catálogo de actualización de programas: - -```bash -sudo softwareupdate --clear-catalog -``` - -Cuando termines eso, puedes intentar hacer la instalación nuevamente. - - -## Homebrew - -### 1. Instálalo: - -Si usas Mac tienes que instalar [Homebrew](http://brew.sh/) el cual es un sistema de gestión de paquetes. -Será necesario cuando tengamos que instalar algún programa. -Para instalarlo, abre tu Terminal y ejecuta lo siguiente: - -```bash -/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" -``` - -Te pedirá tu confirmación (presiona `Enter`) y tu **contraseña de usuario macOS** (la que usas para [iniciar sesión](https://support.apple.com/en-gb/HT202860) cuando reinicias tu Macbook). -:warning: Cuando escribas tu contraseña en la Terminal, **no** la verás (sólo verás algo como `*****`). ¡Esto es **normal**! Simplemente escribe tu contraseña y confirma presionando `Enter`. - -
- 🛠 Si aparece un Error: Not a valid ref: refs/remotes/origin/master - -El error completo es el siguiente: - -``` bash -Error: Not a valid ref: refs/remotes/origin/master : -fatal: ambiguous argument 'refs/remotes/origin/master': unknown revision or path not in the working tree. -``` - -Ejecuta los siguientes comandos para resolverlo: - -``` bash -rm -fr $(brew --repo homebrew/core) # because you can't `brew untap homebrew/core` -brew tap homebrew/core -``` - -
- -Si ya tienes Homebrew, el sistema te lo dirá. No hay problema, así que puedes continuar. - -### 2. Asegúrate de tener la versión más reciente: - -```bash -brew update -``` - -
- 🛠 Si aparece un error /usr/local must be writable - -Simplemente ejecuta lo siguiente: - -``` bash -sudo chown -R $USER:admin /usr/local -brew update -``` - -
- -### 3. Luego instala algunos programas útiles: - -Ejecuta lo siguiente en la terminal (puedes copiar / pegar todas las líneas juntas una sola vez). - -```bash -brew upgrade git || brew install git -brew upgrade gh || brew install gh -brew upgrade wget || brew install wget -brew upgrade imagemagick || brew install imagemagick -brew upgrade jq || brew install jq -brew upgrade openssl || brew install openssl -brew upgrade tree || brew install tree -brew upgrade ncdu || brew install ncdu -brew upgrade xz || brew install xz -brew upgrade readline || brew install readline -``` - - -## Visual Studio Code - -### Instalación - -Instala el editor de texto [Visual Studio Code](https://code.visualstudio.com). - -Copia (presionando `Cmd` + `C`) el comando de aquí abajo y luego pégalo en tu terminal (con `Cmd` + `V`): - -```bash -brew install --cask visual-studio-code -``` - -Luego abre VS Code ejecutando el siguiente comando en tu terminal: - -```bash -code -``` - -:heavy_check_mark: Si se acaba de abrir una ventana de VS Code, todo está bien y puedes continuar :+1: - -:x: De lo contrario, por favor **contacta a un profesor**. - - -## Extensiones de VS Code - -### Instalación - -Instala algunas extensiones útiles para VS Code. - -```bash -code --install-extension ms-vscode.sublime-keybindings -code --install-extension emmanuelbeziat.vscode-great-icons -code --install-extension MS-vsliveshare.vsliveshare -code --install-extension ms-python.python -code --install-extension KevinRose.vsc-python-indent -code --install-extension ms-python.vscode-pylance -code --install-extension ms-toolsai.jupyter -code --install-extension alexcvzz.vscode-sqlite -``` - -Aquí está la lista de las extensiones que estás instalando: - -- [Sublime Text Keymap and Settings Importer](https://marketplace.visualstudio.com/items?itemName=ms-vscode.sublime-keybindings) -- [VSCode Great Icons](https://marketplace.visualstudio.com/items?itemName=emmanuelbeziat.vscode-great-icons) -- [Live Share](https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsliveshare) -- [Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python) -- [Python Indent](https://marketplace.visualstudio.com/items?itemName=KevinRose.vsc-python-indent) -- [Pylance](https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance) -- [Jupyter](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter) -- [SQLite](https://marketplace.visualstudio.com/items?itemName=alexcvzz.vscode-sqlite) - - -## Oh-my-zsh - -Instalemos el plugin `zsh` [Oh My Zsh](https://ohmyz.sh/). - -Ejecuta este comando en la terminal: - -```bash -sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" -``` - -Si te preguntan "Do you want to change your default shell to zsh?", presiona `Y` - -Cuando termines, tu terminal debería lucir así: - -![La terminal de Ubuntu con OhMyZsh](https://github.com/lewagon/setup/blob/master/images/oh_my_zsh.png) - -:heavy_check_mark: Si es el caso, puedes continuar :+1: - -:x: Si no, por favor **pídele ayuda a un profesor**. - - -## direnv - -[direnv](https://direnv.net/) es una extensión del shell. Facilita trabajar con variables de entorno por proyecto, lo cual será útil para customizar el comportamiento de tu código. - - -``` bash -brew install direnv -echo 'eval "$(direnv hook zsh)"' >> ~/.zshrc -``` - - - -## GitHub CLI - -CLI es una abreviación de [Command-line Interface](https://en.wikipedia.org/wiki/Command-line_interface) que significa interfaz de línea de comando. - -En esta sección usaremos [GitHub CLI](https://cli.github.com/) para interactuar directamente con GitHub desde la terminal. - -Usaremos la GitHub CLI (`gh`) para conectarnos a GitHub utilizando *SSH*, un protocolo para iniciar la sesión utilizando claves SSH en lugar de la famosa pareja nombre de usuario y contraseña. - -Ya debería haberse instalado en tu computadora con los comandos que ejecutaste anteriormente. - -Lo primero que hay que hacer para **iniciar sesión** es copiar y pegar el comando siguiente en tu terminal: - -:warning: **NO edites el `email`** — Aunque `user:email` parezca un marcador de posición para tu dirección de correo real, no lo es — no lo reemplaces. - -```bash -gh auth login -s 'user:email' -w --git-protocol ssh -``` - -`gh` le hará algunas preguntas: - -- `Generate a new SSH key to add to your GitHub account?` Presiona `Enter` para pedirle a gh que genere las claves SSH por ti. - - Si ya tienes claves SSH, verás en su lugar `Upload your SSH public key to your GitHub account?`Con las flechas, selecciona la ruta de tu archivo de clave pública y pulsa `Intro`. - -- `Enter a passphrase for your new SSH key (Optional)`: - - **PARA LA MAYORÍA DE LOS ESTUDIANTES:** Simplemente presiona `Enter` para omitir. No necesitas una contraseña para el bootcamp y te la pediría cada vez que uses la clave. Sin embargo, hay un riesgo de que si alguien roba tu computadora, pueda subir código a GitHub. - - **SI LA SEGURIDAD ES MUY IMPORTANTE PARA TI:** Escribe una contraseña de tu elección y presiona `Enter`. Es _muy_ importante que si introduces una contraseña, la anotes en algún lugar inmediatamente y no la pierdas ni la olvides. Tendrás que introducirla con frecuencia. - -- `Title for your SSH key`. Puede dejarlo en la propuesta "GitHub CLI", presiona `Enter`. - -Obtendrás el siguiente resultado: - -```bash -! First copy your one-time code: 0EF9-D015 -- Press Enter to open github.com in your browser... -``` - -Selecciona y copia el código (`0EF9-D015` en el ejemplo) y luego presiona `Enter`. - -Tu navegador se abrirá y te pedirá que autorices GitHub CLI para usar tu cuenta GitHub. Acepta y espera un poco. - -Regresa a la terminal, presiona `Enter` nuevamente y listo. Eso es todo. - -Para verificar que están conectado correctamente, escribe lo siguiente: - -```bash -gh auth status -``` - -:heavy_check_mark: Si obtienes este mensaje: `Logged in to github.com as `, significa que todo está bien :+1: - -:x: De lo contrario, **contacta a un profesor**. - - -## Dotfiles - -Los hackers aman mejorar sus shells y sus herramientas. Comenzaremos con una configuración por defecto genial proporcionada por [Le Wagon](http://github.com/lewagon/dotfiles) y almacenada en GitHub. - -### Verifica tu configuración de GitHub CLI - -Primero, hagamos una verificación rápida. Abre tu terminal y ejecuta el comando siguiente: - -```bash -export GITHUB_USERNAME=`gh api user | jq -r '.login'` -echo $GITHUB_USERNAME -``` - -Deberías ver tu usuario GitHub. Si no es así, **no hagas más nada** y pide ayuda. -Parece que hay un problema con el paso anterior (`gh auth`). - -### Fork y/o clone los archivos de configuración - -Hay tres opciones, escoge **una**: - - -
- - No he hecho el bootcamp de Web Development o Data Science & AI o Data Analytics de Le Wagon - - - Tu configuración es personal, así que necesitas tu propio repositorio para almacenarla. Primero tienes que hacer el fork del repositorio en tu cuenta GitHub. - -Hacer un fork significa que crearás un nuevo repositorio en tu cuenta GitHub idéntico al original. Tendrás un nuevo repositorio en tu cuenta GitHub, `your_github_username/dotfiles`. El fork es necesario porque cada uno de ustedes necesitará poner información específica (e.g. tu nombre) en esos archivos. - -Ejecutemos este comando para hacer un **fork** del repositorio `lewagon/dotfiles` y clonarlo: - -```bash -mkdir -p ~/code/$GITHUB_USERNAME && cd $_ -gh repo fork lewagon/dotfiles --clone -``` - -
- - -
- - Ya hice el bootcamp de Web Development o Data Science & AI o Data Analytics de Le Wagon pero tengo una nueva laptop - - -Esto significa que ya has hecho el fork del repositorio GitHub lewagon/dotfiles pero tal vez la configuración para el nuevo bootcamp de Data Analytics no estaba lista en ese momento.Actualicémoslo. **Pide a un TA que te acompañe en los siguientes pasos.** - -Es hora de clonarlo el repositorio en tu laptop: - -```bash -mkdir -p ~/code/$GITHUB_USERNAME && cd $_ -gh repo clone lewagon/dotfiles -``` - - -Abre tu terminal y ve a tu proyecto `dotfiles`: - -```bash -cd ~/code/$GITHUB_USERNAME$/dotfiles -``` - -Es hora de fusionar los cambios de lewagon/dotfiles en los tuyos: - -1. Commit la versión actual de tus dotfiles: - ```bash - git add . - git status # Check what will be committed - git commit -m "Version prior to new setup" - ``` - -1. Trae los cambios del repositorio upstream: `git merge upstream/master` - -1. Verifica que no estés en estado MERGING. Si lo estás, resuelve los conflictos. - -1. Haz un `git diff HEAD~1 HEAD` para revisar qué cambió. - -1. Si todo parece estar en orden, continúa. - -
- ¿Demasiados conflictos? - - - Vamos a tomar la versión actual de `lewagon/dotfiles`. - - Primero aborta la merge: `git merge --abort`. - - Ejecuta `code .` - - En VS Code, abre el archivo zshrc. Reemplaza su contenido con la [versión más reciente](https://raw.githubusercontent.com/lewagon/dotfiles/master/zshrc). Luego guárdalo en el disco. - - Aún en VS Code, abre el archivo `zprofile`. Reemplaza su contenido con la [versión más reciente](https://raw.githubusercontent.com/lewagon/dotfiles/master/zprofile). Luego guárdalo en el disco. - - Regresa a la terminal y ejecuta un `git diff` y verifica que esto no haya eliminado ninguna configuración personal que quisieras conservar. - -
- -Es hora de guardar tus cambios y subirlos. - -```bash -git add . -git commit -m "Update for Data Analytics bootcamp" -git push origin master -``` - -
- - -
- - Ya hice el bootcamp de Web Development o Data Science & AI o Data Analytics de Le Wagon en la misma laptop - - -Esto significa que ya has hecho el fork del repositorio GitHub lewagon/dotfiles pero tal vez la configuración para el nuevo bootcamp de Data Analytics no estaba lista en ese momento. Actualicémoslo. **Pide a un TA que te acompañe en los siguientes pasos.** - - -Abre tu terminal y ve a tu proyecto `dotfiles`: - -```bash -cd ~/code/$GITHUB_USERNAME$/dotfiles -``` - -Es hora de fusionar los cambios de lewagon/dotfiles en los tuyos: - -1. Commit la versión actual de tus dotfiles: - ```bash - git add . - git status # Check what will be committed - git commit -m "Version prior to new setup" - ``` - -1. Trae los cambios del repositorio upstream: `git merge upstream/master` - -1. Verifica que no estés en estado MERGING. Si lo estás, resuelve los conflictos. - -1. Haz un `git diff HEAD~1 HEAD` para revisar qué cambió. - -1. Si todo parece estar en orden, continúa. - -
- ¿Demasiados conflictos? - - - Vamos a tomar la versión actual de `lewagon/dotfiles`. - - Primero aborta la merge: `git merge --abort`. - - Ejecuta `code .` - - En VS Code, abre el archivo zshrc. Reemplaza su contenido con la [versión más reciente](https://raw.githubusercontent.com/lewagon/dotfiles/master/zshrc). Luego guárdalo en el disco. - - Aún en VS Code, abre el archivo `zprofile`. Reemplaza su contenido con la [versión más reciente](https://raw.githubusercontent.com/lewagon/dotfiles/master/zprofile). Luego guárdalo en el disco. - - Regresa a la terminal y ejecuta un `git diff` y verifica que esto no haya eliminado ninguna configuración personal que quisieras conservar. - -
- -Es hora de guardar tus cambios y subirlos. - -```bash -git add . -git commit -m "Update for Data Analytics bootcamp" -git push origin master -``` - -
- - -### Ejecuta el instalador de dotfiles - -Ejecuta el instalador de `dotfiles`. - -```bash -cd ~/code/$GITHUB_USERNAME/dotfiles && zsh install.sh -``` - -Verifica los emails registrados en tu cuenta GitHub. Deberás seleccionar uno de ellos en el próximo paso: - -```bash -gh api user/emails | jq -r '.[].email' -``` - -Ejecuta el instalador de git: - -```bash -cd ~/code/$GITHUB_USERNAME/dotfiles && zsh git_setup.sh -``` - -:point_up: Esto te **guiará** con tu nombre (`FirstName LastName`) y con tu email. -:warning: Cuidado, **debes** poner uno de los emails de la lista de arriba que te suministra el comando `gh api ...` usado anteriormente. Si haces eso, Kitt no podrá hacerle seguimiento a tu progreso. Cualquier correo que elijas se mostrará **públicamente** en internet. 💡 Selecciona la dirección `@users.noreply.github.com` si no quieres que tu correo electrónico aparezca en los repositorios públicos a los que puedas contribuir. - -Ahora **cierra** todas las ventanas de tu terminal que tengas abiertas por favor. - - -## Instalando Python (con [`pyenv`](https://github.com/pyenv/pyenv)) - -### Desinstalar `conda` - -Como estamos utilizando `pyenv` para instalar y gestionar la versión de Python, necesitamos desinstalar [`conda`](https://docs.conda.io/projects/conda/en/latest/), otro gestor de paquetes que podrías tener en tu computadora si previamente instalaste [Anaconda](https://www.anaconda.com/). De esta forma, evitaremos problemas con Python más adelante. - -Chequea si tienes `conda` instalado en tu computadora: - -```bash -conda list -``` - -Si aparece `zsh: command not found: conda`, puedes **saltear** la desinstalación de `conda` e ir directo a la sección de **Instalar pre-requisitos**. - - -
- Instrucciones de desinstalación conda - -- Instala el paquete Anaconda-Clean desde tu terminal y comienza la limpieza -```bash -conda install anaconda-clean -anaconda-clean --yes -``` -- Remueve todos los directorios de Anaconda -```bash -rm -rf ~/anaconda2 -rm -rf ~/anaconda3 -rm -rf ~/.anaconda_backup - -rm -rf ~/opt - -``` -- Elimina el directorio Anaconda de tu `.bash_profile` - - Abre el archivo con `code ~/.bash_profile` - - Si el archivo abre, busca la línea que coincida con el siguiente patrón `export PATH="/path/to/anaconda3/bin:$PATH"` y eliminala - - - Guarda el archivo con `CMD` + `s` - -- Reinicia la terminal con `exec zsh` -- Remueve la inicializaciópn de Anaconda de tu `.zshrc`: - - Abre el archivo con `code ~/.zshrc` - - Remueve las líneas de código desde `>>> conda initialize >>>` hasta `<<< conda initialize <<<` -
- - -### Instalar pre-requisitos - -Antes de instalar Python, por favor verifica la versión de tu extensión `xz` con: - -```bash -brew info xz -``` - -Debe ser superior a `5.2.0`. **Si no es el caso**, debes ejecutar lo siguiente: - -```bash -sudo rm -rf /usr/local/opt/xz -brew upgrade -brew install xz -``` - -Luego ejecuta: - -```bash -brew install readline -``` - -### Instala `pyenv` - -macOS viene con una versión vieja de Python que no queremos usar. Tal vez ya hayas instalado Anaconda u otro programa para utilizar Python y paquetes de Ciencia de Datos. Si es así, no pasa nada ya que haremos una configuración profesional de Python que te permitirá cambiar de versión cuando quieras al escribir `python` en la terminal. - -Primero instala `pyenv` con el siguiente comando en la Terminal: - -```bash -brew install pyenv -exec zsh -``` - -### Instala Python - -Instala la [última versión estable de Python](https://www.python.org/doc/versions/) aceptada en el currículum de Le Wagon: - -```bash -pyenv install 3.12.9 -``` - -Este comando puede tomar un tiempo en ejecutarse. Esto es completamente normal. ¡No dudes en ayudar a los estudiantes que estén sentados cerca de ti! - -
- 🛠 Resolución de problemas - -Si aparece un error durante la instalación de Python con `pyenv` y relacionada con `zlib`: - -```txt -zipimport.ZipImportError: can't decompress data; zlib not available -``` - -Instala `zlib` con lo siguiente: - -```bash -brew install zlib -export LDFLAGS="-L/usr/local/opt/zlib/lib" -export CPPFLAGS="-I/usr/local/opt/zlib/include" -``` - -Luego trata de instalar Python nuevamente: - -```bash -pyenv install 3.12.9 -``` - -Es posible que aparezca otro error relacionado con `bzip2`. Esto lo puedes ignorar y continuar al paso siguiente. - -
-
- -OK. Cuando este comando termine de ejecutarse, le diremos al sistema que use esta versión de Python **por defecto**. Esto se hace con: - -```bash -pyenv global 3.12.9 -exec zsh -``` - -Para verificar si esto ha funcionado, ejecuta `python --version`. Si ves `3.12.9`, ¡todo está bien! Si no, pídele ayuda a un TA para resolver el problema por medio `pyenv versions` y `type -a python` (`python` debería estar usando la versión `.pyenv/shims` de primero). - - -## Entorno Virtual de Python - -Antes de instalar paquetes de Python, aislaremos la configuración del Bootcamp en un entorno virtual **dedicado**. Usaremos un plugin `pyenv` llamado [`pyenv-virtualenv`](https://github.com/pyenv/pyenv-virtualenv). - -### Instala un virtualenv - -Primero instala este plugin: - -```bash -git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv -exec zsh -``` - -Crea el entorno virtual que usaremos durante todo el bootcamp: - -```bash -pyenv virtualenv 3.12.9 lewagon -``` - -Define el entorno virtual con lo siguiente: - -```bash -pyenv global lewagon -``` - -¡Genial! Ahora cada vez que queramos instalar un paquete Python, lo haremos en ese entorno. - - -### Paquetes de Python - -Ahora que tenemos el ambiente virtual de `lewagon` adecuado, es hora de instalarle algunos paquetes. - -Primero, actualiza `pip`, la herramienta para instalar Paquetes Python desde [pypi.org](https://pypi.org). Ejecuta lo siguiente en la última terminal donde esté activado el virtualenv de `lewagon`: - -```bash -pip install --upgrade pip -``` - -Ahora instala algunos paquetes para las primeras semanas del programa: - - -Si tu computadora usa **Apple Silicon**, expande el párrafo de abajo y léelo. Si no es el caso, ignóralo. - -
- 👉  Configuración para Apple Silicon 👈 - -``` bash -pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/specs/releases/apple_silicon.txt -``` - -
- -Si tu computadora usa **Apple Intel**, expande el párrafo de abajo y léelo. Si no es el caso, ignóralo. - -
- 👉  Configuración para Apple Intel 👈 - -``` bash -pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/specs/releases/apple_intel.txt -``` - -
- - - -## Mejora Jupyter Notebook - -Mejora la visualización del [elemento `details` para revelación de información](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details) en tus notebooks. - -Ejecuta las siguientes líneas para crear una hoja de estilos `custom.css` en tu directorio de configuración de Jupyter: - -```bash -LOCATION=$(jupyter --config-dir)/custom -SOURCE=https://raw.githubusercontent.com/lewagon/data-analytics-setup/refs/heads/master/specs/jupyter/custom.css -mkdir -p $LOCATION -curl $SOURCE > $LOCATION/custom.css -``` - - -## Chequeo de la configuración de Python - -### Chequeo de Python y packages - -Reinicia tu terminal: - -```bash -cd ~/code && exec zsh -``` - -Verifica tu versión de Python con los siguientes comandos: - -```bash -zsh -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/python_checker.sh)" 3.12.9 -``` - -Ejecuta el comando siguiente para verificar que hayas instalado los paquetes requeridos correctamente: - -```bash -zsh -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/pip_check.sh)" -``` - -Ahora ejecuta el siguiente comando para verificar que puedas cargar estos paquetes: - -```bash -python -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/pip_check.py)" -``` - -### Chequeo de Jupyter - -Ahora verifica que puedas iniciar un servidor de notebook en tu máquina: - -```bash -jupyter notebook -``` - -Tu navegador web debería abrir en una ventana `jupyter`: - -![jupyter.png](images/jupyter.png) - -Haz clic en `New` y, en el menú desplegable, selecciona Python 3 (ipykernel): - -![jupyter_new.png](images/jupyter_new.png) - -Debería abrirse una pestaña en un nuevo notebook: - -![jupyter_notebook.png](images/jupyter_notebook.png) - -Asegúrate de que estés usando la versión correcta de python en el notebook. Abre una celda y ejecuta lo siguiente: - -``` python -import sys; sys.version -``` - -Debería mostrar `3.12.9` seguido de algunos detalles adicionales. Si no es así, consulta con un TA. - -Puedes cerrar tu navegador web y luego cerrar el servidor jupyter con `CTRL` + `C`. - -¡Listo! Ya tienes un virtual env de python completo con todos los paquetes tercerizados que necesitarás en el bootcamp. - - -## Insomnia - -> ℹ️ **¿Por qué?** Insomnia es una de las herramientas más conocidas para probar APIs, y será útil en nuestro curso de Introducción a las APIs. - -- Ve a [https://insomnia.rest/download](https://insomnia.rest/download) - -- Descarga Insomnia - -- Instala Insomnia - - - -## CLI de `gcloud` - -Antes de configurar nuestra cuenta Google Cloud Platform vamos a configurar el CLI de `gcloud` (una interfaz de línea de comando para Google Cloud Platform). Ejecuta el siguiente código y sigue las indicaciones de la terminal para actualizar tu $PATH y habilitar la finalización del comando del shell para el archivo `.zshrc`: - -```bash -brew install --cask google-cloud-sdk -``` - -Luego podrás ejecutar lo siguiente: - -```bash -$(brew --prefix)/share/google-cloud-sdk/install.sh -``` - -
- ¿Recibes un error no such file or directory? - - Prueba esto: - -```bash -$(brew --prefix)/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/install.sh -``` - -Si eso no funciona, contacta a un TA. - -
- - -## Configuración de Google Cloud Platform - -[GCP](https://cloud.google.com/) es una solución en la nube que usarás para colocar tus productos basados en Machine Learning en producción. - -🚨 Si estás en el grupo de estudiantes del **Bootcamp de Medio Tiempo**, ¡IGNORA ESTA SECCIÓN POR AHORA! **GCP** ofrece $300 en créditos durante 3 meses, así que no es buena idea activar tu cuenta GCP demasiado pronto 🙅‍♂️ - -### Preparación del Proyecto - -- Ve a [Google Cloud](https://console.cloud.google.com/) y crea una cuenta si aún no tienes una -- En la consola de Cloud, en la lista de proyectos, selecciona o crea un proyecto Cloud - -![](images/gcp-create-project.png) - -- Asígnale un nombre como `Wagon Bootcamp` por ejemplo -- Verás que se creará un `ID` automáticamente para el proyecto e. g. `wagon-bootcamp-123456` - -![](images/gcp_project.png) - -### Idioma de la cuenta - -Abre las preferencias en tu cuenta GCP para facilitar el seguimiento de las instrucciones durante el bootcamp: - -[https://myaccount.google.com/language](https://myaccount.google.com/language) - -Si el *idioma de preferencia* no es: - -- **English** -- **United States** - -Cámbialo a inglés: - -- Haz clic en el logo edición (es una lapicera) -- Selecciona **English** -- Selecciona **United States** -- Haz clic en **Select** - -### Cuenta de facturación - -Ahora conecta tu cuenta con tu tarjeta de crédito. Este paso es obligatorio para poder usar los servicios que suministra GCP. No te preocupes, podrás utilizar la mayoría de los servicios de GCP por medio de créditos gratuitos durante el bootcamp. - -![](images/gcp-billing.png) - -- Haz clic en **Billing** -- Haz clic en **MANAGE BILLING ACCOUNTS** -- Haz clic en **ADD BILLING ACCOUNT** -- Asígnale un nombre a tu cuenta de facturación, e. g. `My Billing Account` -- Haz clic en "I have read..." y acepta los términos de uso -- Haz clic en **CONTINUE** -- Selecciona tu tipo de cuenta: `Individual` -- Agrega tu nombre y dirección - -Verás que tienes créditos gratuitos con un valor de "$300 a utilizar en los próximos 90 días". - -- Haz clic en los detalles de la tarjeta -- Agrega la información de tu tarjeta de crédito -- Haz clic en **START MY FREE TRIAL**. Esto significa comenzar mi período de prueba. - -Cuando termines, verifica que la cuenta de facturación esté conectada con tu proyecto GCP. - -- Selecciona tu proyecto -- Ve a **Billing** -- Selecciona **LINK A BILLING ACCOUNT** -- Selecciona `My Billing Account` -- Haz clic en **SET ACCOUNT** - -Ahora deberías ver lo siguiente: - -```bash -Free trial status: $300 credit and 91 days remaining - with a full account, you'll get unlimited access to all of Google Cloud Platform. -``` - -Esto significa Estado de período de prueba: crédito de $300 y 91 días para usarlo - con la full account, tendrás acceso ilimitado a todo lo que ofrece Google Cloud Platform. - -
- 👉 Si no tienes una tarjeta de crédito 👈 - -Si no tienes una tarjeta de crédito, puedes abrir una cuenta en **Revolut**. -Revolut es una aplicación que funciona como un banco y que te permitirá crear una tarjeta de crédito virtual conectada a la dirección de facturación de tu smartphone. - -Ignora este paso si ya tienes una tarjeta de crédito. Simplemente úsala para hacer la configuración. - -Descarga la app Revolut o ve a [revolut](https://www.revolut.com/a-radically-better-account) y sigue los pasos para descargar la app (introduce tu número de teléfono móvil y haz clic en Get Started). - -- Abre la app Revolut -- Agrega tu número de teléfono móvil -- Agrega el código de verificación que recibiste por SMS -- La app te preguntará por tu país, dirección, primer y segundo nombre, fecha de nacimiento y el email -- La app también te pedirá tu profesión y una selfie -- La app te pedirá una foto de tu documento nacional de identidad o pasaporte - -Cuando termines, selecciona el plan estándar (gratuito). No tienes que agregar la tarjeta a Apple pay, pedir que te envíen una tarjeta a tu domicilio ni tampoco agregar dinero a la cuenta. - -Ahora tienes una tarjeta virtual que podrás usar para hacer la configuración de GCP. - -En la vista principal de la app Revolut - -- Haz clic en Ready to use -- Haz clic en the card -- Haz clic en Show card details -- Toma nota de la información de la tarjeta de crédito virtual y úsala para completar la configuración de GCP - -
- -
- 👉 Si recibes un email de Google diciendo "Urgent: your billing account XXXXXX-XXXXXX-XXXXXX has been suspended" 👈 - -Esto puede pasar justo después de haber creado la cuenta en Revolut. - -- Haz clic en PROCEED TO VERIFICATION -- Te pedirán que envíes una foto de tu tarjeta de crédito (solo los últimos 4 dígitos, nada más) -- Si ya has usado **Revolut**, puedes enviar una captura de pantalla de tu tarjeta de crédito virtual (no olvides quitar la fecha de vencimiento de la captura) -- Explica que estás haciendo el bootcamp de Le Wagon, que no tienes una tarjeta de crédito y que acabas de crear una cuenta en Revolut para poder configurar GCP para el bootcamp con una tarjeta de crédito virtual - -Es posible que te validen la cuenta pero también es posible que te pidan más información en los próximos 30 minutos. - -Cuando la cuenta sea validada recibirás un email diciendo lo siguiente: "Your Google Cloud Platform billing account XXXXXX-XXXXXX-XXXXXX has been fully reinstated and is ready to use.". Esto significa que tu cuenta Google Cloud Platform ha sido restablecida - -
- -### Habilitación de servicios de GCP - -- Asegúrate de que la facturación está habilitada para tu proyecto Google Cloud - -ℹ️ Tienes un **crédito de $300** para usar con recursos de Google Cloud. Esto será más que suficiente para el bootcamp. - -- [Habilita las APIs BigQuery y Compute Engine](https://console.cloud.google.com/flows/enableapi?apiid=bigquery,compute) (Esto puede tomar varios minutos) - -### Configuración de Cloud sdk - -- Autentica el CLI de `gcloud` con la cuenta que usaste para GCP - -```bash -gcloud auth login -``` - -- Inicia sesión en tu cuenta Google en la nueva pestaña que se abrió en tu navegador -- Lista la cuenta que tienes activa y verifica que el email que usaste para GCP está ahí - -```bash -gcloud auth list -``` - -- Define tu proyecto actual (reemplaza `PROJECT_ID` con el `ID` de tu proyecto e.g. `wagon-bootcamp-123456`) - -```bash -gcloud config set project PROJECT_ID -``` - -- Lista la cuenta que tienes activa y tu proyecto actual y verifica que tu proyecto está ahí - -```bash -gcloud config list -``` - -### Crea una llave 🔑 de cuenta de servicio - -Como ya creaste una cuenta `GCP account` y un `project` (identificado por su `PROJECT_ID`), vamos a configurar las acciones (llamadas API calls) que quieres que tu código ejecute. - -
- 🤔 ¿Por qué necesitamos una clave de cuenta de servicio? - - Creaste una `cuenta GCP` conectada a una tarjeta de crédito. Te facturarán de acuerdo al uso que les des a los recursos de **Google Cloud Platform**. El cargo se hará si utilizas algo después de que el período de prueba gratuito se haya terminado o si te excedes del límite de consumo que te permite dicho período. - - En tu `cuenta GCP` has creado un solo `proyecto GCP` identificado por su `PROJECT_ID`. Los `proyectos GCP` te permiten organizar y monitorear la manera en que consumes los recursos **GCP** de forma más precisa. En este bootcamp solo crearemos un solo proyecto. - - Ahora necesitamos una manera de saber qué recursos nuestro código podrá consumir dentro de un `GCP project`. Nuestro código consume recursos GCP por medio de llamadas API. - - Ya que las llamadas API no son gratuitas, es importante definir cuidadosamente cómo nuestro código las utilizará. Sin embargo, durante el bootcamp no habrá restricciones. Le permitiremos a nuestro código que utilice todas las API **GCP** sin restricciones. - - Así como pueden haber varios proyectos asociados a una cuenta GCP, un proyecto puede estar compuesto de muchos servicios (cualquier paquete de código, sin importar su formato, que necesite utilizar llamadas a la API de GCP para cumplir con su propósito). - - GCP exige que los servicios de los proyectos que usen llamadas API se registren en la plataforma y que se configuren sus credenciales por medio del acceso concedido a una `service account`. - - Por ahora solo tendremos que usar un solo servicio y crearemos la `service account` correspondiente. -
- -Ya que la [service account](https://cloud.google.com/iam/docs/service-accounts) es lo que identifica tu aplicación (y por ende tu cuenta de facturación GCP y, en última instancia, tu tarjeta de crédito), lo mejor es ser cuidadoso en los próximos pasos. - -⚠️ **No compartas la 🔑 del archivo json de tu cuenta de servicio** ⚠️ No la guardes en tu escritorio ni en tu código base de git (incluso si tu repositorio git es privado). Que no se te olvide en un lugar como la máquina de café y, por supuesto, no la envíes en un tweet. - -- Ve a la [página de las cuentas de servicio](https://console.cloud.google.com/apis/credentials/serviceaccountkey) -- Selecciona tu proyecto en la lista de proyectos recientes si te piden que -- Crees una cuenta de servicio: - - Haz clic en **CREATE SERVICE ACCOUNT** que significa crear une cuenta de servicio: - - Define un `Service account name` para esa cuenta. Esto significa Nombre de cuenta de servicio - - Haz clic en **CREATE AND CONTINUE** que significa crear y continuar - - Haz clic en **Select a role** que significa selecciona un rol. Escoge `Quick access/Basic` luego **Owner**. Esto otorga acceso total a todos los recursos - - Haz clic en **CONTINUE** - - Haz clic en **DONE** -- Descarga la 🔑 del archivo json de la cuenta de servicio: - - Haz clic en la cuenta de servicio recién creada - - Haz clic en **KEYS** - - Haz clic en **ADD KEY** y luego en **Create new key** - - Selecciona **JSON** y haz clic en **CREATE** - -![](images/gcp_create_key.png) - -El navegador acaba de guardar la 🔑 del archivo json de la cuenta de servicio en tu carpeta de descargas (el nombre se le asigna según el nombre de la cuenta de servicio. Es algo como `le-wagon-data-123456789abc.json`) - - -- Guarda el archivo json de la cuenta de servicio en un lugar que recuerdes. Por ejemplo: - -``` bash -/Users/MACOS_USERNAME/code/GITHUB_NICKNAME/gcp/SERVICE_ACCOUNT_JSON_FILE_CONTAINING_YOUR_SECRET_KEY.json -``` - -- Guarda la **ruta absoluta** al archivo `JSON` como una variable de entorno: - -``` bash -echo 'export GOOGLE_APPLICATION_CREDENTIALS=/path/to/the/SERVICE_ACCOUNT_JSON_FILE_CONTAINING_YOUR_SECRET_KEY.json' >> ~/.zshrc -``` - -**Nota:** cada vez que ejecutes este comando, agregará esta línea a tu archivo zshrc sin importar si la línea ya existe en el archivo. Si cometiste un error y necesitas arreglarlo, es preferible que abras el archivo y edites la línea! - -Puedes hacerlo ejecutando - -```bash -code ~/.zshrc -``` - -en la Terminal! 😄 - - - -
- ℹ️ ¿Cómo encontrar la ruta absoluta de un archivo? - Puedes arrastrar el archivo a tu terminal. -
- -**Reinicia** tu terminal y ejecuta lo siguiente: - -``` bash -echo $GOOGLE_APPLICATION_CREDENTIALS -``` - -Deberías obtener la siguiente información: - -```bash -/some/absolute/path/to/your/gcp/SERVICE_ACCOUNT_JSON_FILE_CONTAINING_YOUR_SECRET_KEY.json -``` - -Ahora verifica si la ruta al archivo json de tu cuenta de servicio es el correcto: - -``` bash -cat $(echo $GOOGLE_APPLICATION_CREDENTIALS) -``` - -👉 Este comando debería mostrar el contenido del archivo json de tu cuenta de servicio. Si no es el caso, pídele ayuda a un TA 🙏 - -Tu código y utilidades ahora pueden acceder a los recursos de tu cuenta GCP. - -Continuemos con los últimos pasos de la configuración... - -- Lista las cuentas de servicio asociadas a tu cuenta activa y a tu proyecto actual -```bash -gcloud iam service-accounts list -``` -- Recupera el email de la cuenta de servicio e. g. `SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com` -- Lista los roles de la cuenta de servicio desde la cli (reemplaza el PROJECT_ID y el SERVICE_ACCOUNT_EMAIL) -```bash -gcloud projects get-iam-policy PROJECT_ID \ ---flatten="bindings[].members" \ ---format='table(bindings.role)' \ ---filter="bindings.members:SERVICE_ACCOUNT_EMAIL" -``` -- Ahora deberías ver que tu cuenta de servicio tiene el rol de `roles/owner` - -
- Resolución de problemas - -- `AccessDeniedException: 403 The project to be billed is associated with an absent billing account.`. Esto significa que el proyecto a facturar está asociado a una cuenta de facturación que no está habilitada - - Asegúrate de habilitar la facturación para tu proyecto https://cloud.google.com/billing/docs/how-to/modify-project -
- -🏁 Listo. ¡Has terminado la configuración de GCP! - - - ## Kitt - -Deberías haber recibido un correo electrónico de Le Wagon invitándote a registrarte en [Kitt](https://kitt.lewagon.com) (nuestra plataforma de aprendizaje). - -Entonces deberías recibir una invitación adicional de Slack, invitándote a la comunidad de los alumni de Le Wagon en slack (donde podrás chatear con tus compañeros y todos los demás alumni). Haz clic en **Join** y completa la información que te piden. - -Si no lo has recibido, por favor contacta a tu equipo de enseñanza. - - -## Slack - -[Slack](https://slack.com/) es una plataforma de comunicación popular en la industria tech. - -### Instalación - -[Descarga la aplicación Slack](https://itunes.apple.com/fr/app/slack/id803453959?mt=12) e instálala. - -:warning: Si ya estás usando Slack en tu navegador, por favor descarga e instala **la aplicación de escritorio** la cual tiene todas las funciones. - - -### Parámetros - -Abre la aplicación e inicia sesión en `lewagon-alumni`. - -Asegúrate de **subir una foto para tu perfil** :point_down: - -![Cómo subir una foto de perfil en Slack](https://github.com/lewagon/setup/blob/master/images/slack_profile_picture.gif) - -La idea es tener Slack abierto todo el día para compartir enlaces útiles / pedir ayuda / decidir dónde almorzar / etc. - -Para asegurarte de que todo lo relacionado a videollamadas funcione bien, prueba tu cámara y tu micrófono: -- Abre la aplicación Slack -- Haz clic en tu foto de perfil en la esquina superior derecha -- Selecciona "Preferencias" en el menú. -- Haz clic en "Audio y vídeo" en la columna de la izquierda. -- Debajo de "Solución de problemas", haz clic en "Ejecutar una prueba de audio, vídeo y pantalla compartida". La prueba se abrirá en una nueva ventana. -- Comprueba que tus dispositivos preferidos de altavoz, micrófono y cámara aparecen en los menús desplegables y haz clic en "Iniciar prueba" -- Haz clic en el botón verde "Start test" - -![Chequea el micrófono y la cámara con Slack](https://github.com/lewagon/setup/blob/master/images/slack_call_test.png) - -:heavy_check_mark: Cuando termine el test deberías ver mensajes de "Succeed" en verde por lo menos para tu micrófono y tu cámara. :+1: - -:x: Si no es el caso, **contacta a un profesor**. - -¡También puedes instalar la aplicación Slack en tu smartphone e iniciar sesión en `lewagon-alumni`! - - -## Parámetros de macOS - -### Seguridad - -Es imperativo proteger tu sesión con una contraseña. Si todavía no es el caso, ve a ` > System Settings... > Users & Groups` y cambia la contraseña de tu computadora. Luego ve a ` > System Settings... > Lock Screen`. Configura el sistema para que pida la contraseña cada `5 seconds` después de regresar de la opción suspender y cuando se active el protector de pantalla. - -También puedes ir a ` > System Settings... > Desktop & Dock` y hacer clic en el botón `Hot Corners...` abajo a la izquierda. Selecciona la opción donde al hacer clic en la esquina inferior derecha se active el protector de pantalla. De esa manera al dejar tu escritorio podrás bloquear tu pantalla rápidamente poniendo el cursor del ratón en la esquina inferior derecha. En 5 segundos tu Macbook se bloqueará y te pedirá la contraseña para volver a tu sesión. - -### Teclado - -A medida que te vayas convirtiendo en programador, entenderás que pierdes tiempo cuando quitas las manos del teclado para usar otra herramienta. Por esa razón es importante aprender a minimizar el uso del trackpad o del ratón. Aquí te mostramos algunos trucos para que lo hagas en macOS. - -#### Velocidad del teclado - -Ve a ` > System Settings... > Keyboard`. Coloca a `Key repeat rate` en la posición más rápida (a la derecha) y a `Delay until repeat` en la posición más corta (a la derecha). - -#### macOS para hackers - -[Lee este script](https://github.com/mathiasbynens/dotfiles/blob/master/.macos) y selecciona algunas cosas que creas que serán útiles para ti. Por ejemplo, puedes escribir lo siguiente en la terminal: - -```bash -# Expanding the save panel by default -defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode -bool true -defaults write NSGlobalDomain PMPrintingExpandedStateForPrint -bool true -defaults write NSGlobalDomain PMPrintingExpandedStateForPrint2 -bool true - -# Save screenshots to the Desktop (or elsewhere) -defaults write com.apple.screencapture location "${HOME}/Desktop" - -# etc.. -``` - -### Anclaje de aplicaciones a tu dock - -Usarás frecuentemente casi todas las aplicaciones que has instalado hoy. ¡Anclémoslas a tu dock para que estén a solo un clic de ti! - -Para ello, inicia la aplicación. Haz clic derecho en el ícono de la barra de tareas para hacer que aparezca el menú contextual (también llamado emergente) y selecciona "Options" y después "Keep in Dock". - -![Cómo anclar una aplicación a la barra de tareas en macOS](https://github.com/lewagon/setup/blob/master/images/macos_dock.png) - -Ancla lo siguiente: -- Tu terminal -- Tu explorador de archivos -- VS Code -- Tu navegador de Internet -- Slack - - -## Extra - -Si has terminado la configuración, te pedimos que preguntes si alguien necesita ayuda con la suya (macOS, Linux o Windows). Las primeras clases son a las 2pm. Hablaremos de la configuración que acabas de hacer y de Kitt. - -Si no tienes mucha experiencia con `git` y GitHub, por favor [ve nuevamente el video de este workshop](https://www.youtube.com/watch?v=Z9fIBT2NBGY) (puedes verlo a `1.25` de velocidad). - - diff --git a/macOS_keep_current.es.md b/macOS_keep_current.es.md deleted file mode 100644 index cefaa0c..0000000 --- a/macOS_keep_current.es.md +++ /dev/null @@ -1,317 +0,0 @@ - -# Cómo mantener tu configuración al día - -Esta sección contiene los pasos que tienes que seguir para asegurarte de que tu configuración esté actualizada. - -Primero y principal, para trabajar en buenas condiciones, asegúrate de que: - -- tienes una conexión internet de alta velocidad -- tu computadora tiene suficiente memoria (8GB) para poder ejecutar tu código eficientemente -- tu computadora tiene suficiente espacio en disco (30GB) para poder trabajar con grandes datasets. - -## git - -Verifica que git funcione: - -``` bash -git --version -``` - -👉 Deberías obtener algo parecido a esto de aquí abajo que te muestra la versión de git: - -``` bash -git version 2.33.0 -``` - -## GitHub - -Verifica que tengas acceso a los repositorios GitHub públicos de Le Wagon - -``` bash -cd ~/code// -git clone git@github.com:lewagon/data-analytics-setup data-analytics-setup -``` - -👉 Se debe clonar el repositorio correctamente: - -``` bash -Cloning into 'data-analytics-setup'... -remote: Enumerating objects: 21, done. -remote: Counting objects: 100% (21/21), done. -remote: Compressing objects: 100% (14/14), done. -Receiving objects: 100% (21/21), done. -Resolving deltas: 100% (6/6), done. -remote: Total 21 (delta 6), reused 16 (delta 1), pack-reused 0 -``` - -👉 Puedes borrar el repositorio clonado - -``` bash -rm -Rf data-analytics-setup -``` - -## Verificación de la configuración de pyenv - -Verifica que tengas un `~/.zprofile` : - -``` bash -cat ~/.zprofile -``` - -👉 Deberías poder ver las líneas siguientes: - -``` bash -# Setup the PATH for pyenv binaries and shims -export PYENV_ROOT="$HOME/.pyenv" -export PATH="$PYENV_ROOT/bin:$PATH" -type -a pyenv > /dev/null && eval "$(pyenv init --path)" -``` - -Si el comando no da ningún resultado, crea el archivo `~/.zprofile`: - -``` bash -cd -touch .zprofile -``` - -Agrega las siguientes líneas a tu `~/.zprofile` : - -``` bash -# Setup the PATH for pyenv binaries and shims -export PYENV_ROOT="$HOME/.pyenv" -export PATH="$PYENV_ROOT/bin:$PATH" -type -a pyenv > /dev/null && eval "$(pyenv init --path)" -``` - -## Creación de un ambiente virtual dedicado - -Actualiza pyenv: - - -``` bash -brew update && brew upgrade pyenv -``` - - -Instala la versión actual de python: - -```bash -pyenv install 3.12.9 -``` - -👉 Asegúrate de que el comando se ejecute completamente y luego **reinicia tu terminal**. - -Remueve el ambiente virtual dedicado actual: - -```bash -pyenv virtualenv-delete lewagon_current -``` - -Crea un nuevo ambiente virtual: - -```bash -pyenv virtualenv 3.12.9 lewagon_current -``` - -Define el nuevo ambiente virtual como predeterminado: - -```bash -pyenv global lewagon_current -``` - -Ahora deberías poder ver que el nuevo ambiente virtual está activado: - -``` bash -pyenv versions -``` - -👉 Aquí hay una muestra del resultado: - -``` bash - system - 3.12.9 - 3.12.9/envs/lewagon_current - 3.7.6 - 3.7.6/envs/lewagon -* lewagon_current - lewagon -``` - -### Instalación de los paquetes del bootcamp - -```bash -pip install -U pip -``` - - -Si tu computadora usa **Apple Silicon**, expande el párrafo de abajo y léelo. Si no es el caso, ignóralo. - -
- 👉  Configuración para Apple Silicon 👈 - -``` bash -pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/specs/releases/apple_silicon.txt -``` - -
- -Si tu computadora usa **Apple Intel**, expande el párrafo de abajo y léelo. Si no es el caso, ignóralo. - -
- 👉  Configuración para Apple Intel 👈 - -``` bash -pip install -r https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/specs/releases/apple_intel.txt -``` - -
- - -## GCP - -Asegúrate de que el comando `gcloud` esté conectado con el email de tu cuenta Google Cloud Platform: - -``` bash -gcloud auth list -``` - -👉 Esto muestra los emails de tu cuenta GCP: - -``` bash - Credentialed Accounts -ACTIVE ACCOUNT -* your.email_address@your.email.provider - -To set the active account, run: - $ gcloud config set account `ACCOUNT` -``` - -Verifica el nombre de tu proyecto gcp: - -``` bash -gcloud config list -``` - -👉 Esto muestra tanto el email de tu cuenta GCP como tu proyecto GCP: - -``` bash -[core] -account = your.email_address@your.email.provider -disable_usage_reporting = True -project = your-gcp-project-id - -Your active configuration is: [default] -``` - -Verifica que el email creado para la cuenta de servicio permita que tu código se identifique con GCP: - -``` bash -gcloud iam service-accounts list -``` - -👉 Esto muestra el email de la cuenta de servicio en GCP que permite que tu código se identifique con GCP. - -``` bash -DISPLAY NAME EMAIL DISABLED -your-gcp-project-id your-service-account@your-service-account.iam.gserviceaccount.com False -``` - -Ve a [GCP IAM & Admin / Service Accounts](https://console.cloud.google.com/iam-admin/serviceaccounts): - -- Selecciona tu proyecto -- Haz clic en el email de la cuenta de servicio -- Ve a `PERMISSIONS` -- Asegúrate de que el email de la cuenta de servicio tenga un `Role` configurado como `Owner` - -Verifica que hayas configurado tu máquina para que permita que tu código se identifique con GCP. El archivo de claves json de las credenciales de la cuenta de servicio debe estar conectado al email de la cuenta de servicio correcto: - -``` bash -cat $GOOGLE_APPLICATION_CREDENTIALS -``` - -👉 Esto muestra el contenido de la clave json de las credenciales de la cuenta de servicio: - -``` bash -{ - "type": "service_account", - "project_id": "your-gcp-project-id", - "private_key_id": "a2d4a2d4a2d4a2d4a2d4a2d4a2d4a2d4a2d4a2d4", - "private_key": "-----BEGIN PRIVATE KEY-----\nMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInMIInM=\n-----END PRIVATE KEY-----\n", - "client_email": "your-service-account@your-service-account.iam.gserviceaccount.com", - "client_id": "105410541054105410541", - "auth_uri": "https://accounts.google.com/o/oauth2/auth", - "token_uri": "https://oauth2.googleapis.com/token", - "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", - "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/your-service-account%40your-service-account.iam.gserviceaccount.com" -} -``` - -Asegúrate de que el archivo contenga: - -- el id el proyecto adecuado: your-gcp-project-id -- el email de la cuenta de servicio adecuado: your-service-account@your-service-account.iam.gserviceaccount.com - -👉 Si esto no muestra nada o si el email dentro del archivo no es el de tu cuenta de servicio, regresa al setup. - - -## Chequeo de la configuración de Python - -### Chequeo de Python y packages - -Reinicia tu terminal: - -```bash -cd ~/code && exec zsh -``` - -Verifica tu versión de Python con los siguientes comandos: - -```bash -zsh -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/python_checker.sh)" 3.12.9 -``` - -Ejecuta el comando siguiente para verificar que hayas instalado los paquetes requeridos correctamente: - -```bash -zsh -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/pip_check.sh)" -``` - -Ahora ejecuta el siguiente comando para verificar que puedas cargar estos paquetes: - -```bash -python -c "$(curl -fsSL https://raw.githubusercontent.com/lewagon/data-analytics-setup/master/checks/pip_check.py)" -``` - -### Chequeo de Jupyter - -Ahora verifica que puedas iniciar un servidor de notebook en tu máquina: - -```bash -jupyter notebook -``` - -Tu navegador web debería abrir en una ventana `jupyter`: - -![jupyter.png](images/jupyter.png) - -Haz clic en `New` y, en el menú desplegable, selecciona Python 3 (ipykernel): - -![jupyter_new.png](images/jupyter_new.png) - -Debería abrirse una pestaña en un nuevo notebook: - -![jupyter_notebook.png](images/jupyter_notebook.png) - -Asegúrate de que estés usando la versión correcta de python en el notebook. Abre una celda y ejecuta lo siguiente: - -``` python -import sys; sys.version -``` - -Debería mostrar `3.12.9` seguido de algunos detalles adicionales. Si no es así, consulta con un TA. - -Puedes cerrar tu navegador web y luego cerrar el servidor jupyter con `CTRL` + `C`. - -¡Listo! Ya tienes un virtual env de python completo con todos los paquetes tercerizados que necesitarás en el bootcamp. - - From 75eeac3b0386f9a8a02a4c16d5ee609a8acbc5a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABtan=20Manchon?= Date: Tue, 2 Jun 2026 13:29:14 +0200 Subject: [PATCH 04/13] ruby version --- .ruby-version | 1 + 1 file changed, 1 insertion(+) create mode 100644 .ruby-version diff --git a/.ruby-version b/.ruby-version new file mode 100644 index 0000000..7636e75 --- /dev/null +++ b/.ruby-version @@ -0,0 +1 @@ +4.0.5 From afa0f5f8f27b8bd3863c59c2fd7c51cad95717b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABtan=20Manchon?= Date: Tue, 2 Jun 2026 14:12:28 +0200 Subject: [PATCH 05/13] web setup --- build.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/build.rb b/build.rb index 34c1e61..009ae82 100755 --- a/build.rb +++ b/build.rb @@ -21,7 +21,8 @@ def load_remote_partial(repo, name, locale) end def load_local_partial(name, locale) - path = locale == 'en' ? "_partials/#{name}.md" : "_partials/#{locale}/#{name}.md" + localized = "_partials/#{locale}/#{name}.md" + path = (locale != 'en' && File.exist?(localized)) ? localized : "_partials/#{name}.md" File.read(path, encoding: "utf-8") end @@ -58,7 +59,7 @@ def generate_files(loaded, builds, constants) File.open(output, "w:utf-8") do |f| build[:partials].each do |entry| content = loaded["#{partial_name(entry)}.#{locale}"].clone - variables = constants.merge(partial_vars(entry)) + variables = constants.merge(partial_vars(entry)).merge('build_md' => output) f << render_content(content, build[:os], variables) f << "\n\n" end From 3e708285440d684dd369b0aad66b5ba6b67c8de8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABtan=20Manchon?= Date: Tue, 2 Jun 2026 17:26:11 +0200 Subject: [PATCH 06/13] refacto --- build.rb | 89 +++++++----------------------------------- lib/build_spec.rb | 18 +++++++++ lib/builder.rb | 19 +++++++++ lib/generator.rb | 27 +++++++++++++ lib/localized_build.rb | 18 +++++++++ lib/partial.rb | 19 +++++++++ lib/partial/local.rb | 16 ++++++++ lib/partial/remote.rb | 30 ++++++++++++++ lib/partial_cache.rb | 17 ++++++++ 9 files changed, 179 insertions(+), 74 deletions(-) create mode 100644 lib/build_spec.rb create mode 100644 lib/builder.rb create mode 100644 lib/generator.rb create mode 100644 lib/localized_build.rb create mode 100644 lib/partial.rb create mode 100644 lib/partial/local.rb create mode 100644 lib/partial/remote.rb create mode 100644 lib/partial_cache.rb diff --git a/build.rb b/build.rb index 009ae82..702f5a5 100755 --- a/build.rb +++ b/build.rb @@ -1,81 +1,22 @@ -#!/usr/bin/env ruby -wU +#!/usr/bin/env ruby +# frozen_string_literal: true -require 'open-uri' -require 'liquid' require 'yaml' +require_relative 'lib/builder' -REPOS_CFG = YAML.load_file('constants/repos.yml').freeze +build_specs = Dir['builds/*.yml'].map { |filename| -def load_remote_partial(repo, name, locale) - repo = REPOS_CFG.dig('aliases', repo) || repo - branch = REPOS_CFG.dig('branches', repo) || 'main' - path = locale == 'en' ? name : "#{locale}/#{name}" - base_url = "https://github.com/lewagon/#{repo}/blob/#{branch}" - content = URI.open("https://raw.githubusercontent.com/lewagon/#{repo}/#{branch}/_partials/#{path}.md").read - content.scan(/\!\[.*\]\((.*)\)/).flatten - .reject { |ip| ip.start_with?("http") } - .each { |ip| content.gsub!(ip, "#{base_url}/#{ip}") } - content.scan(/src="(images\/.*)"/).flatten - .each { |ip| content.gsub!(ip, "#{base_url}/#{ip}") } - content -end + data = YAML.load_file(filename) -def load_local_partial(name, locale) - localized = "_partials/#{locale}/#{name}.md" - path = (locale != 'en' && File.exist?(localized)) ? localized : "_partials/#{name}.md" - File.read(path, encoding: "utf-8") -end + BuildSpec.new( + name: File.basename(filename, '.yml'), + os: data['os'], + locales: data['locales'], + partials: data['partials'] + ) +} -def load_partial(partial, locale) - if (m = partial.match(%r{\A(?[a-z][a-z0-9_-]*)/(?[a-z0-9_]+)\z})) - load_remote_partial(m[:repo], m[:name], locale) - else - load_local_partial(partial, locale) - end -end +constants = YAML.load_file('constants/constants.yml').freeze +repos_cfg = YAML.load_file('constants/repos.yml').freeze -def partial_name(entry) = entry.is_a?(Array) ? entry[0] : entry -def partial_vars(entry) = entry.is_a?(Array) ? entry[1] : {} - -def collect_partials(builds) - builds.flat_map { |_filename, build| - build[:locales].flat_map { |locale| - build[:partials].map { |e| [partial_name(e), locale] } - } - }.uniq.map { |partial, locale| - ["#{partial}.#{locale}", load_partial(partial, locale)] - }.to_h -end - -def render_content(content, os_name, variables) - Liquid::Template.parse(content).render(variables.merge('os' => os_name)) -end - -def generate_files(loaded, builds, constants) - builds.each do |filename, build| - build[:locales].each do |locale| - output = locale == 'en' ? "#{filename}.md" : "#{filename}.#{locale}.md" - - File.open(output, "w:utf-8") do |f| - build[:partials].each do |entry| - content = loaded["#{partial_name(entry)}.#{locale}"].clone - variables = constants.merge(partial_vars(entry)).merge('build_md' => output) - f << render_content(content, build[:os], variables) - f << "\n\n" - end - end - end - end -end - -builds = Dir['builds/*.yml'].map { |f| - name = File.basename(f, '.yml') - data = YAML.load_file(f) - [name, { os: data['os'], locales: data['locales'], partials: data['partials'] }] -}.to_h.freeze - -loaded = collect_partials(builds) - -constants = YAML.load_file('constants/constants.yml').freeze - -generate_files(loaded, builds, constants) +Builder.new(build_specs, constants, repos_cfg).run diff --git a/lib/build_spec.rb b/lib/build_spec.rb new file mode 100644 index 0000000..a86d164 --- /dev/null +++ b/lib/build_spec.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +require_relative 'localized_build' + +class BuildSpec + attr_reader :name, :os, :locales, :partials + + def initialize(name:, os:, locales:, partials:) + @name = name + @os = os + @locales = locales + @partials = partials + end + + def localized_builds(repos_cfg) + @locales.map { |locale| LocalizedBuild.new(self, locale, repos_cfg) } + end +end diff --git a/lib/builder.rb b/lib/builder.rb new file mode 100644 index 0000000..9a22437 --- /dev/null +++ b/lib/builder.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +require_relative 'build_spec' +require_relative 'partial_cache' +require_relative 'generator' + +class Builder + def initialize(build_specs, constants, repos_cfg) + @build_specs = build_specs + @constants = constants + @repos_cfg = repos_cfg + end + + def run + builds = @build_specs.flat_map { |spec| spec.localized_builds(@repos_cfg) } + cache = PartialCache.new(builds) + Generator.new(builds, cache, @constants).run + end +end diff --git a/lib/generator.rb b/lib/generator.rb new file mode 100644 index 0000000..55cfdca --- /dev/null +++ b/lib/generator.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +require 'liquid' + +class Generator + def initialize(localized_builds, cache, constants) + @localized_builds = localized_builds + @cache = cache + @constants = constants + end + + def run + @localized_builds.each do |build| + File.open(build.output_filename, 'w:utf-8') do |f| + build.partials.each { |partial| f << render(partial, build) } + end + warn "built #{build.output_filename}" + end + end + + private + + def render(partial, build) + variables = @constants.merge(partial.vars).merge('os' => build.os, 'build_md' => build.output_filename) + "#{Liquid::Template.parse(@cache[partial.url].clone).render(variables)}\n\n" + end +end diff --git a/lib/localized_build.rb b/lib/localized_build.rb new file mode 100644 index 0000000..7bb8f9d --- /dev/null +++ b/lib/localized_build.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +require_relative 'partial' + +class LocalizedBuild + attr_reader :os, :locale, :partials + + def initialize(spec, locale, repos_cfg) + @name = spec.name + @os = spec.os + @locale = locale + @partials = spec.partials.map { |entry| Partial.from(entry, locale, repos_cfg) } + end + + def output_filename + @locale == 'en' ? "#{@name}.md" : "#{@name}.#{@locale}.md" + end +end diff --git a/lib/partial.rb b/lib/partial.rb new file mode 100644 index 0000000..a7f3951 --- /dev/null +++ b/lib/partial.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +require_relative 'partial/remote' +require_relative 'partial/local' + +module Partial + REMOTE_REGEX = %r{\A(?[a-z][a-z0-9_-]*)/(?[a-z0-9_]+)\z} + + # entry is either a plain string or a hash: { 'name' => '...', 'vars' => { ... } } + def self.from(entry, locale, repos_cfg) + name = entry.is_a?(Hash) ? entry['name'] : entry + vars = entry.is_a?(Hash) ? entry.fetch('vars', {}) : {} + if (m = name.match(REMOTE_REGEX)) + Remote.new(m[:repo], locale, m[:name], vars, repos_cfg) + else + Local.new(locale, name, vars) + end + end +end diff --git a/lib/partial/local.rb b/lib/partial/local.rb new file mode 100644 index 0000000..92bb992 --- /dev/null +++ b/lib/partial/local.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +module Partial + class Local + attr_reader :url, :vars + + def initialize(locale, name, vars) + localized = "_partials/#{locale}/#{name}.md" + english = "_partials/#{name}.md" + @url = (locale != 'en' && File.exist?(localized)) ? localized : english + @vars = vars + end + + def content = File.read(@url, encoding: 'utf-8') + end +end diff --git a/lib/partial/remote.rb b/lib/partial/remote.rb new file mode 100644 index 0000000..33a86ba --- /dev/null +++ b/lib/partial/remote.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +require 'open-uri' + +module Partial + class Remote + attr_reader :url, :vars + + def initialize(repo, locale, name, vars, repos_cfg) + repo = repos_cfg.dig('aliases', repo) || repo + branch = repos_cfg.dig('branches', repo) || 'main' + path = locale == 'en' ? name : "#{locale}/#{name}" + @base_url = "https://github.com/lewagon/#{repo}/blob/#{branch}" + @url = "https://raw.githubusercontent.com/lewagon/#{repo}/#{branch}/_partials/#{path}.md" + @vars = vars + end + + def content + text = URI.open(@url).read + # Rewrite relative image paths to absolute GitHub URLs so they render outside their source repo + text.scan(/\!\[.*\]\((.*)\)/).flatten + .reject { |ip| ip.start_with?('http') } + .each { |ip| text.gsub!(ip, "#{@base_url}/#{ip}") } + text.scan(/src="(images\/.*)"/).flatten + .each { |ip| text.gsub!(ip, "#{@base_url}/#{ip}") } + warn "fetched #{@url}" + text + end + end +end diff --git a/lib/partial_cache.rb b/lib/partial_cache.rb new file mode 100644 index 0000000..91ab0c1 --- /dev/null +++ b/lib/partial_cache.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class PartialCache + def initialize(localized_builds) + @cache = localized_builds + .flat_map(&:partials) + .uniq { |partial| partial.url } + .sort_by { |partial| partial.url } + .map { |partial| Thread.new { [partial.url, partial.content] } } + .map { |thread| thread.value } + .to_h + end + + def [](url) + @cache[url] + end +end From 0704c888ecf4846122e4ff1c611ffe484027cd47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABtan=20Manchon?= Date: Wed, 3 Jun 2026 14:24:06 +0200 Subject: [PATCH 07/13] fix output order --- lib/partial/remote.rb | 1 - lib/partial_cache.rb | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/partial/remote.rb b/lib/partial/remote.rb index 33a86ba..01a0900 100644 --- a/lib/partial/remote.rb +++ b/lib/partial/remote.rb @@ -23,7 +23,6 @@ def content .each { |ip| text.gsub!(ip, "#{@base_url}/#{ip}") } text.scan(/src="(images\/.*)"/).flatten .each { |ip| text.gsub!(ip, "#{@base_url}/#{ip}") } - warn "fetched #{@url}" text end end diff --git a/lib/partial_cache.rb b/lib/partial_cache.rb index 91ab0c1..e425148 100644 --- a/lib/partial_cache.rb +++ b/lib/partial_cache.rb @@ -8,6 +8,7 @@ def initialize(localized_builds) .sort_by { |partial| partial.url } .map { |partial| Thread.new { [partial.url, partial.content] } } .map { |thread| thread.value } + .tap { |results| results.each { |url, _| warn "fetched #{url}" } } .to_h end From a9724f603efcd314c02c1368e9e12d7f43704465 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABtan=20Manchon?= Date: Wed, 3 Jun 2026 14:48:21 +0200 Subject: [PATCH 08/13] key name --- VM.md | 6 +++--- builds/VM.yml | 8 ++++++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/VM.md b/VM.md index 13ffabc..7211959 100644 --- a/VM.md +++ b/VM.md @@ -69,10 +69,10 @@ To create a separate SSH key to exclusively use for this bootcamp use the follow ```bash # replace your_email@example.com, this is purely informative and allows you to remember the use of this key -ssh-keygen -t ed25519 -f ~/.ssh/de-bootcamp -C your_email@example.com +ssh-keygen -t ed25519 -f ~/.ssh/da-bootcamp -C your_email@example.com ``` -Your new SSH Key will be named `de-bootcamp`. Make sure to remember it for later! +Your new SSH Key will be named `da-bootcamp`. Make sure to remember it for later! @@ -316,7 +316,7 @@ You can now change Host to whatever you would like to see as the name of your co ```bash # For instance -Host "de-bootcamp-vm" +Host "da-bootcamp-vm" HostName 34.77.50.76 # replace with your VM's public IP address IdentityFile User diff --git a/builds/VM.yml b/builds/VM.yml index 779ba1a..586cc4e 100644 --- a/builds/VM.yml +++ b/builds/VM.yml @@ -4,11 +4,15 @@ locales: [en] partials: - intro - setup/github - - de_setup/ssh_key + - name: de_setup/ssh_key + vars: + key_name: da-bootcamp - de_setup/gcp_setup - de_setup/virtual_machine - de_setup/win_vscode - - de_setup/vscode_remote_ssh + - name: de_setup/vscode_remote_ssh + vars: + vm_hostname: da-bootcamp-vm - vscode_extensions - setup/cli_tools - setup/oh_my_zsh From 242478f4052bea774cbbb65990f0c887c6064658 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABtan=20Manchon?= Date: Wed, 3 Jun 2026 15:15:42 +0200 Subject: [PATCH 09/13] test --- _partials/chrome.md | 1 + 1 file changed, 1 insertion(+) diff --git a/_partials/chrome.md b/_partials/chrome.md index 6a69837..7bb6aef 100644 --- a/_partials/chrome.md +++ b/_partials/chrome.md @@ -1,3 +1,4 @@ + ## Chrome - your browser Install the Google Chrome browser if you haven't got it already and set it as a __default browser__. From c9febdcfd6dcb3140e4a156863339bb12bdc8f9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABtan=20Manchon?= Date: Wed, 3 Jun 2026 15:17:34 +0200 Subject: [PATCH 10/13] test --- _partials/vscode_extensions.md | 1 + 1 file changed, 1 insertion(+) diff --git a/_partials/vscode_extensions.md b/_partials/vscode_extensions.md index 73799a3..69039c6 100644 --- a/_partials/vscode_extensions.md +++ b/_partials/vscode_extensions.md @@ -1,3 +1,4 @@ + ## VS Code Extensions ### Installation From a4d10cada33c838a2ce2a882c9e19bc4617f0525 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABtan=20Manchon?= Date: Wed, 3 Jun 2026 15:21:40 +0200 Subject: [PATCH 11/13] allows gha to push --- .github/workflows/build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e6b731f..cce586c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,6 +4,8 @@ on: jobs: build: runs-on: ubuntu-latest + permissions: + contents: write steps: - uses: actions/checkout@v2 - uses: ruby/setup-ruby@v1 From bc3bae2454f52bd8b777c779fec9674ae8bfc5c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABtan=20Manchon?= Date: Wed, 3 Jun 2026 15:54:55 +0200 Subject: [PATCH 12/13] ignore bundle build outputs --- .github/workflows/build.yml | 2 -- .gitignore | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 .gitignore diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index cce586c..d6e3270 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -11,8 +11,6 @@ jobs: - uses: ruby/setup-ruby@v1 with: bundler-cache: true - - name: Install dependencies - run: bundle install - name: Build run: | git config user.name github-actions diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4541a7b --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.bundle/ +vendor/ From 38e4fc73c9c611e0b8b3fa1c78f391a9f53210be Mon Sep 17 00:00:00 2001 From: github-actions Date: Wed, 3 Jun 2026 13:55:30 +0000 Subject: [PATCH 13/13] setup guides generated --- LINUX.md | 1 + VM.md | 1 + WINDOWS.md | 1 + macOS.md | 1 + 4 files changed, 4 insertions(+) diff --git a/LINUX.md b/LINUX.md index e8ad56d..2853086 100644 --- a/LINUX.md +++ b/LINUX.md @@ -67,6 +67,7 @@ code :x: Otherwise, please **contact a teacher** + ## VS Code Extensions ### Installation diff --git a/VM.md b/VM.md index 7211959..01ac333 100644 --- a/VM.md +++ b/VM.md @@ -325,6 +325,7 @@ Host "da-bootcamp-vm" **The setup of your local machine is over. All following commands will be run from within your 🚨 virtual machine**🚨 terminal (via VS code for instance) + ## VS Code Extensions ### Installation diff --git a/WINDOWS.md b/WINDOWS.md index 4b3379e..e14bc99 100644 --- a/WINDOWS.md +++ b/WINDOWS.md @@ -483,6 +483,7 @@ This terminal has tabs: you can choose to open a new terminal tab by clicking on **From now on, every time we will refer to the terminal or the console it will be this one.** DO NOT use any other terminal anymore. + ## VS Code Extensions ### Installation diff --git a/macOS.md b/macOS.md index 54be954..29296fa 100644 --- a/macOS.md +++ b/macOS.md @@ -189,6 +189,7 @@ code :x: Otherwise, please **contact a teacher** + ## VS Code Extensions ### Installation