From 6a117589f0528eeb98201b70da45db2c7d124441 Mon Sep 17 00:00:00 2001 From: tavo Date: Wed, 25 Dec 2024 02:28:53 -0600 Subject: [PATCH] pyv y reestructura --- content/blog/fisica-computacional/_index.md | 163 ------------------ content/blog/fisica-computacional/cpp.md | 9 + content/blog/fisica-computacional/git.md | 41 +++++ .../fisica-computacional/preparar_entorno.md | 23 +++ content/blog/fisica-computacional/python.md | 90 ++++++++++ content/blog/fisica-computacional/shell.md | 30 ++++ content/blog/fisica-computacional/vim.md | 6 + themes/blog/layouts/_default/list.html | 2 +- themes/blog/layouts/_default/single.html | 19 +- themes/blog/layouts/shortcodes/rawhtml.html | 1 + 10 files changed, 219 insertions(+), 165 deletions(-) create mode 100644 content/blog/fisica-computacional/cpp.md create mode 100644 content/blog/fisica-computacional/git.md create mode 100644 content/blog/fisica-computacional/preparar_entorno.md create mode 100644 content/blog/fisica-computacional/python.md create mode 100644 content/blog/fisica-computacional/shell.md create mode 100644 content/blog/fisica-computacional/vim.md create mode 100644 themes/blog/layouts/shortcodes/rawhtml.html diff --git a/content/blog/fisica-computacional/_index.md b/content/blog/fisica-computacional/_index.md index 4212dbc..cab4d8e 100644 --- a/content/blog/fisica-computacional/_index.md +++ b/content/blog/fisica-computacional/_index.md @@ -1,167 +1,4 @@ --- title: "Guías para Física Computacional" date: 2024-11-14 -layout: single --- - -# Guías para Física Computacional - ---- - -## Preparar el entorno - -**Descargar ISOs** - -- [Debian (live)](http://mirrors.ucr.ac.cr/debian-cd/current-live/amd64/iso-hybrid/) -- [Windows 10](https://www.youtube.com/watch?v=dQw4w9WgXcQ) - -**Virtualizar sistema operativo** - -- [VirtualBox](https://www.virtualbox.org/wiki/Downloads) -- [Hyper-V (Exclusivo Windows)](https://learn.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v) -- [Boxes (Exclusivo Linux)](https://flathub.org/apps/org.gnome.Boxes) - -**Instalar sistema operativo** - -Tutorial: [Tutorial para Instalar un sistema operativo]() - -1. Crear USB booteable ([Balena Etcher](https://etcher.balena.io/)) -2. Seleccionar USB en BIOS/Boot Menu (dependiendo de la computadora) -3. Seguir pasos de instalación (dependiendo del sistema operativo a instalar) - ---- - -## Shell - -`builtin`: Función incorporada en el shell (para efectos de estas guías, en GNU Bash). Por ejemplo, `for`, `break`, `return`, etc. - -| Comando | Descripción | Ejemplo | -|-:|-|-| -| [`man`](https://man7.org/linux/man-pages/man1/man.1.html) | Ver manuales de referencia del sistema | `man ls` | -| [`pwd`](https://man7.org/linux/man-pages/man1/pwd.1.html) | Imprimir nombre del directorio | `pwd` | -| [`ls`](https://man7.org/linux/man-pages/man1/ls.1.html) | Listar contenidos del directorio | `ls` | -| [`cd`](https://man7.org/linux/man-pages/man1/cd.1p.html) | [`builtin`] Cambiar el directorio actual | `cd Descargas` | -| [`mkdir`](https://man7.org/linux/man-pages/man1/mkdir.1.html) | Crear directorios | `mkdir carpeta` | -| [`touch`](https://man7.org/linux/man-pages/man1/touch.1.html) | Cambiar marcas de tiempo | `touch ejemplo.txt` | -| [`rm`](https://man7.org/linux/man-pages/man1/rm.1.html) | Eliminar archivos o directorios | `rm ejemplo.txt` | -| [`cp`](https://man7.org/linux/man-pages/man1/cp.1.html) | Copiar archivos y directorios | `cp a.txt a-copia.txt` | -| [`mv`](https://man7.org/linux/man-pages/man1/mv.1.html) | Mover (renombrar) archivos | `mv doc.pdf book.pdf` | -| [`echo`](https://www.man7.org/linux/man-pages/man1/echo.1.html) | [`builtin`] Mostrar una línea de texto | `echo "hola $USER!"` | -| [`cat`](https://man7.org/linux/man-pages/man1/cat.1.html) | Concatenar archivos | `cat a.txt b.txt` | -| [`cut`](https://man7.org/linux/man-pages/man1/cut.1.html) | Eliminar secciones de una línea | `cut -d. -f1 /etc/hosts` | -| [`head`](https://man7.org/linux/man-pages/man1/head.1.html) | Imprimir la primera parte de archivos | `head /etc/passwd` | -| [`tail`](https://man7.org/linux/man-pages/man1/tail.1.html) | Imprimir la última parte de archivos | `tail /etc/passwd` | -| [`wc`](https://man7.org/linux/man-pages/man1/wc.1.html) | Imprime líneas, palabras, bytes de un archivo | `wc -l /proc/cpuinfo` | -| [`uniq`](https://man7.org/linux/man-pages/man1/uniq.1.html) | Reportar u omitir líneas repetidas | `uniq archivo.txt` | -| [`grep`](https://man7.org/linux/man-pages/man1/grep.1.html) | Imprime líneas que coincidan con patrones | `grep 'NAME' /etc/os-release` | -| [`sed`](https://man7.org/linux/man-pages/man1/sed.1.html) | Editor de secuencias: filtrar, transformar texto | `sed 's/N/P/g' /etc/os-release` | -| [`awk`](https://man7.org/linux/man-pages/man1/awk.1p.html) | Lenguaje de escaneo y procesado de patrones | `awk '{ print $2 }' /proc/meminfo` | -| [`ps`](https://man7.org/linux/man-pages/man1/ps.1.html) | Reporta instantánea de procesos actuales | `ps aux` | -| [`du`](https://man7.org/linux/man-pages/man1/du.1.html) | Estimar el uso del espacio de archivo | `du -h archivo.txt` | - ---- - -## Vim - -Vi IMproved, un editor de texto para programadores - ---- - -## Git - -```sh -mkdir -p ~/.config/git -vim ~/.config/git/config -``` - -Vamos a crear un archivo de configuración base para git. No es de mucha -relevancia el usuario e email que escribamos aquí, funciona más que nada como -referencia para saber quién hizo un cambio. Por ejemplo, aquí podría poner -`name = compu1` para identificar que un cambio fue hecho desde la computadora 1. -El archivo debería verse así: - -```toml -[user] - email = miusuario@correo.com - name = usuario -``` - -Ahora, necesitamos una forma de autenticarnos en un servidor corriendo `git`. -Primero, necesitamos crear una llave SSH: - -```sh -ssh-keygen -t ed25519 -# Va a pedir nombre de la llave, y una contraseña, nada de esto es necesario. -# Podemos simplemente presionar ENTER hasta que se cree la llave. -``` - -Ahora, necesitamos agregar esta llave en la plataforma de preferencia. -Primero, la imprimimos en la terminal y la copiamos (usualamente con -`Ctrl+Shift+V`) - -```sh -cat ~/.ssh/id_ed25519.pub -``` - -Para agregarla en [GitHub](https://github.com/settings/keys), pegamos la llave -en la pestaña _Ajustes > Llaves SSH y GPG_. - ---- - -## Python - -El procedimiento de descargar python varía de acuerdo al sistema operativo que -estemos utilizando, para instalarlo en Debian GNU/Linux (y derivados como -Ubuntu): - -```sh -sudo apt install python3 python-is-python3 python3-dev python3-pip python3-venv -``` - -Necesitaremos varias librerías base para poder trabajar con Python, para -obtener las librerías de forma ordenada podemos: - -**1. Preparar un entorno virtual "base"** - -```sh -# Este comando: -# Crea un entorno virtual y lo guarda en ~/.local/share/venv/base - -python -m venv ~/.local/share/venv/base -``` - -**2. Llamar al entorno de manera sencilla** - -```sh -# OPCIÓN 1 -# Agrega una instrucción al bashrc que llama al script activate para activar el -# entorno virtual (como está en el bashrc, correrá automáticamente en nuevas -# instancias de Bash) - -echo ". ~/.local/share/venv/base/bin/activate" >> ~/.bashrc - -# OPCIÓN 2 -# En lugar de siempre activar el mismo entorno, podemos crear un alias "venv" -# que al escribirse activa el entorno "base". Es decir, cada vez que vayamos -# a trabajar en un proyecto de python, escribimos "venv". - -echo 'alias venv=". ~/.local/share/venv/base/bin/activate"' >> ~/.bashrc -``` - -**3. Instalar librerías** - -```sh -pip install --upgrade pip # Actualizar pip a la versión más reciente -pip install jupyter # Podemos instalar un paquete -pip install numpy matplotlib scipy # ... o varios a la vez -pip install mkdocs mkdocs-material -``` - ---- - -## C/C++ - -```sh -sudo apt install build-essential -sudo apt install libomp-dev openmpi-bin libopenmpi-dev -``` diff --git a/content/blog/fisica-computacional/cpp.md b/content/blog/fisica-computacional/cpp.md new file mode 100644 index 0000000..eb3fc44 --- /dev/null +++ b/content/blog/fisica-computacional/cpp.md @@ -0,0 +1,9 @@ +--- +title: "6. C/C++" +date: 2024-11-14 +--- + +```sh +sudo apt install build-essential +sudo apt install libomp-dev openmpi-bin libopenmpi-dev +``` diff --git a/content/blog/fisica-computacional/git.md b/content/blog/fisica-computacional/git.md new file mode 100644 index 0000000..4ff1a0e --- /dev/null +++ b/content/blog/fisica-computacional/git.md @@ -0,0 +1,41 @@ +--- +title: "4. git" +date: 2024-11-14 +--- + +```sh +mkdir -p ~/.config/git +vim ~/.config/git/config +``` + +Vamos a crear un archivo de configuración base para git. No es de mucha +relevancia el usuario e email que escribamos aquí, funciona más que nada como +referencia para saber quién hizo un cambio. Por ejemplo, aquí podría poner +`name = compu1` para identificar que un cambio fue hecho desde la computadora 1. +El archivo debería verse así: + +```toml +[user] + email = miusuario@correo.com + name = usuario +``` + +Ahora, necesitamos una forma de autenticarnos en un servidor corriendo `git`. +Primero, necesitamos crear una llave SSH: + +```sh +ssh-keygen -t ed25519 +# Va a pedir nombre de la llave, y una contraseña, nada de esto es necesario. +# Podemos simplemente presionar ENTER hasta que se cree la llave. +``` + +Ahora, necesitamos agregar esta llave en la plataforma de preferencia. +Primero, la imprimimos en la terminal y la copiamos (usualamente con +`Ctrl+Shift+V`) + +```sh +cat ~/.ssh/id_ed25519.pub +``` + +Para agregarla en [GitHub](https://github.com/settings/keys), pegamos la llave +en la pestaña _Ajustes > Llaves SSH y GPG_. diff --git a/content/blog/fisica-computacional/preparar_entorno.md b/content/blog/fisica-computacional/preparar_entorno.md new file mode 100644 index 0000000..b8d48e2 --- /dev/null +++ b/content/blog/fisica-computacional/preparar_entorno.md @@ -0,0 +1,23 @@ +--- +title: "1. Preparar el entorno" +date: 2024-11-14 +--- + +## Descargar ISOs + +- [Debian (live)](http://mirrors.ucr.ac.cr/debian-cd/current-live/amd64/iso-hybrid/) +- [Windows 10](https://www.youtube.com/watch?v=dQw4w9WgXcQ) + +## Virtualizar sistema operativo + +- [VirtualBox](https://www.virtualbox.org/wiki/Downloads) +- [Hyper-V (Exclusivo Windows)](https://learn.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v) +- [Boxes (Exclusivo Linux)](https://flathub.org/apps/org.gnome.Boxes) + +## (Opcional) Instalar sistema operativo + +Tutorial: [Tutorial para Instalar un sistema operativo]() + +1. Crear USB booteable ([Balena Etcher](https://etcher.balena.io/)) +2. Seleccionar USB en BIOS/Boot Menu (dependiendo de la computadora) +3. Seguir pasos de instalación (dependiendo del sistema operativo a instalar) diff --git a/content/blog/fisica-computacional/python.md b/content/blog/fisica-computacional/python.md new file mode 100644 index 0000000..8e13558 --- /dev/null +++ b/content/blog/fisica-computacional/python.md @@ -0,0 +1,90 @@ +--- +title: "5. Python" +date: 2024-11-14 +lastmod: 2024-12-25 +--- + +El procedimiento de descargar python varía de acuerdo al sistema operativo que +estemos utilizando, para instalarlo en Debian GNU/Linux (y derivados como +Ubuntu): + +```sh +sudo apt install python3 python-is-python3 python3-dev python3-pip python3-venv +``` + +Necesitaremos varias librerías base para poder trabajar con Python, para +obtener las librerías de forma ordenada podemos: + +**1. Preparar un entorno virtual "base"** + +```sh +# Este comando: +# Crea un entorno virtual y lo guarda en ~/.local/share/venv/base + +python -m venv ~/.local/share/venv/base +``` + +**2. Llamar al entorno de manera sencilla** + +```sh +# OPCIÓN 1 +# Agrega una instrucción al bashrc que llama al script activate para activar el +# entorno virtual (como está en el bashrc, correrá automáticamente en nuevas +# instancias de Bash) + +echo ". ~/.local/share/venv/base/bin/activate" >> ~/.bashrc + +# OPCIÓN 2 +# En lugar de siempre activar el mismo entorno, podemos crear un alias "venv" +# que al escribirse activa el entorno "base". Es decir, cada vez que vayamos +# a trabajar en un proyecto de python, escribimos "venv". + +echo 'alias venv=". ~/.local/share/venv/base/bin/activate"' >> ~/.bashrc +``` + +**3. Instalar librerías** + +Una vez tengamos activado el entorno, podemos empezar a instalar los paquetes +necesarios para el curso. + +```sh +pip install --upgrade pip # Actualizar pip a la versión más reciente +pip install jupyter # Podemos instalar un paquete +pip install numpy matplotlib scipy # ... o varios a la vez +pip install mkdocs mkdocs-material +``` + +# Opción automatizada: `pyv` + +Con esta herramienta podemos abstraer la funcionalidad del módulo de +python-venv que se utiliza anteriormente para el manejo de librerías. + +Página del proyecto `pyv`: [git.tavo.one/tavo/pyv](https://git.tavo.one/tavo/pyv) + +Tutorial completo sobre `pyv`: + +{{< rawhtml >}} + +{{< /rawhtml >}} + +**Instalar `pyv`** + +```sh +git clone https://git.tavo.one/tavo/pyv.git ~/.local/share/pyv +printf 'for f in pyv pyv_comp.bash ; do if [ -f ~/.local/share/pyv/$f ] ; then . ~/.local/share/pyv/$f ; fi ; done' >> ~/.bashrc +``` + +Si tenemos la herramienta `pyv` instalada, podemos abstraer esta funcionalidad. +Por ejemplo, con los siguientes comandos: + +```sh +pyv new v1 # create venv named v1 +pyv new v2 # create venv named v2 +pyv ls # list venvs +pyv rm v2 # delete venv named v2 +pyv enter v1 # enter venv named v1 +pyv exit # exit current venv +``` diff --git a/content/blog/fisica-computacional/shell.md b/content/blog/fisica-computacional/shell.md new file mode 100644 index 0000000..802dfd4 --- /dev/null +++ b/content/blog/fisica-computacional/shell.md @@ -0,0 +1,30 @@ +--- +title: "2. Shell" +date: 2024-11-14 +--- + +`builtin`: Función incorporada en el shell (para efectos de estas guías, en GNU Bash). Por ejemplo, `for`, `break`, `return`, etc. + +| Comando | Descripción | Ejemplo | +|-:|-|-| +| [`man`](https://man7.org/linux/man-pages/man1/man.1.html) | Ver manuales de referencia del sistema | `man ls` | +| [`pwd`](https://man7.org/linux/man-pages/man1/pwd.1.html) | Imprimir nombre del directorio | `pwd` | +| [`ls`](https://man7.org/linux/man-pages/man1/ls.1.html) | Listar contenidos del directorio | `ls` | +| [`cd`](https://man7.org/linux/man-pages/man1/cd.1p.html) | [`builtin`] Cambiar el directorio actual | `cd Descargas` | +| [`mkdir`](https://man7.org/linux/man-pages/man1/mkdir.1.html) | Crear directorios | `mkdir carpeta` | +| [`touch`](https://man7.org/linux/man-pages/man1/touch.1.html) | Cambiar marcas de tiempo | `touch ejemplo.txt` | +| [`rm`](https://man7.org/linux/man-pages/man1/rm.1.html) | Eliminar archivos o directorios | `rm ejemplo.txt` | +| [`cp`](https://man7.org/linux/man-pages/man1/cp.1.html) | Copiar archivos y directorios | `cp a.txt a-copia.txt` | +| [`mv`](https://man7.org/linux/man-pages/man1/mv.1.html) | Mover (renombrar) archivos | `mv doc.pdf book.pdf` | +| [`echo`](https://www.man7.org/linux/man-pages/man1/echo.1.html) | [`builtin`] Mostrar una línea de texto | `echo "hola $USER!"` | +| [`cat`](https://man7.org/linux/man-pages/man1/cat.1.html) | Concatenar archivos | `cat a.txt b.txt` | +| [`cut`](https://man7.org/linux/man-pages/man1/cut.1.html) | Eliminar secciones de una línea | `cut -d. -f1 /etc/hosts` | +| [`head`](https://man7.org/linux/man-pages/man1/head.1.html) | Imprimir la primera parte de archivos | `head /etc/passwd` | +| [`tail`](https://man7.org/linux/man-pages/man1/tail.1.html) | Imprimir la última parte de archivos | `tail /etc/passwd` | +| [`wc`](https://man7.org/linux/man-pages/man1/wc.1.html) | Imprime líneas, palabras, bytes de un archivo | `wc -l /proc/cpuinfo` | +| [`uniq`](https://man7.org/linux/man-pages/man1/uniq.1.html) | Reportar u omitir líneas repetidas | `uniq archivo.txt` | +| [`grep`](https://man7.org/linux/man-pages/man1/grep.1.html) | Imprime líneas que coincidan con patrones | `grep 'NAME' /etc/os-release` | +| [`sed`](https://man7.org/linux/man-pages/man1/sed.1.html) | Editor de secuencias: filtrar, transformar texto | `sed 's/N/P/g' /etc/os-release` | +| [`awk`](https://man7.org/linux/man-pages/man1/awk.1p.html) | Lenguaje de escaneo y procesado de patrones | `awk '{ print $2 }' /proc/meminfo` | +| [`ps`](https://man7.org/linux/man-pages/man1/ps.1.html) | Reporta instantánea de procesos actuales | `ps aux` | +| [`du`](https://man7.org/linux/man-pages/man1/du.1.html) | Estimar el uso del espacio de archivo | `du -h archivo.txt` | diff --git a/content/blog/fisica-computacional/vim.md b/content/blog/fisica-computacional/vim.md new file mode 100644 index 0000000..487cdbc --- /dev/null +++ b/content/blog/fisica-computacional/vim.md @@ -0,0 +1,6 @@ +--- +title: "3. vim" +date: 2024-11-14 +--- + +Vi IMproved, un editor de texto para programadores diff --git a/themes/blog/layouts/_default/list.html b/themes/blog/layouts/_default/list.html index 0fd09da..e67caac 100644 --- a/themes/blog/layouts/_default/list.html +++ b/themes/blog/layouts/_default/list.html @@ -1,10 +1,10 @@ {{ define "main" }}
+ <- Atrás

{{ .Title }}

- {{ .Content }}