From 6f1379500365288f8e0a8832fdbed897e971a994 Mon Sep 17 00:00:00 2001 From: tavo Date: Thu, 14 Nov 2024 14:32:09 -0600 Subject: [PATCH] compu --- content/blog/fisica-computacional/_index.md | 167 ++++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 content/blog/fisica-computacional/_index.md diff --git a/content/blog/fisica-computacional/_index.md b/content/blog/fisica-computacional/_index.md new file mode 100644 index 0000000..4212dbc --- /dev/null +++ b/content/blog/fisica-computacional/_index.md @@ -0,0 +1,167 @@ +--- +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 +```