mirror of
https://gitlab.com/tavo-wasd/blog.git
synced 2025-06-06 14:23:30 -06:00
pyv y reestructura
This commit is contained in:
parent
6f13795003
commit
6a117589f0
10 changed files with 219 additions and 165 deletions
|
@ -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
|
||||
```
|
||||
|
|
9
content/blog/fisica-computacional/cpp.md
Normal file
9
content/blog/fisica-computacional/cpp.md
Normal file
|
@ -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
|
||||
```
|
41
content/blog/fisica-computacional/git.md
Normal file
41
content/blog/fisica-computacional/git.md
Normal file
|
@ -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_.
|
23
content/blog/fisica-computacional/preparar_entorno.md
Normal file
23
content/blog/fisica-computacional/preparar_entorno.md
Normal file
|
@ -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)
|
90
content/blog/fisica-computacional/python.md
Normal file
90
content/blog/fisica-computacional/python.md
Normal file
|
@ -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 >}}
|
||||
<video width=100% controls>
|
||||
<source src="https://r2.tavo.one/blog/pyv.mp4" type="video/mp4">
|
||||
Your browser does not support the video tag.
|
||||
</video>
|
||||
{{< /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
|
||||
```
|
30
content/blog/fisica-computacional/shell.md
Normal file
30
content/blog/fisica-computacional/shell.md
Normal file
|
@ -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` |
|
6
content/blog/fisica-computacional/vim.md
Normal file
6
content/blog/fisica-computacional/vim.md
Normal file
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
title: "3. vim"
|
||||
date: 2024-11-14
|
||||
---
|
||||
|
||||
Vi IMproved, un editor de texto para programadores
|
|
@ -1,10 +1,10 @@
|
|||
{{ define "main" }}
|
||||
<main>
|
||||
<a href="../"><- Atrás</a>
|
||||
<article>
|
||||
<header>
|
||||
<h1>{{ .Title }}</h1>
|
||||
</header>
|
||||
<!-- "{{ .Content }}" pulls from the markdown content of the corresponding _index.md -->
|
||||
{{ .Content }}
|
||||
</article>
|
||||
<ul>
|
||||
|
|
|
@ -2,5 +2,22 @@
|
|||
{{ .Title }}
|
||||
{{ end }}
|
||||
{{ define "main" }}
|
||||
{{ .Content }}
|
||||
<main>
|
||||
<a href="../"><- Atrás</a>
|
||||
<article>
|
||||
<header>
|
||||
<h1>{{ .Title }}</h1>
|
||||
</header>
|
||||
{{ .Content }}
|
||||
</article>
|
||||
<br>
|
||||
<div style="display: flex; justify-content: space-between; width: 100%;">
|
||||
{{ with .NextInSection }}
|
||||
<a href="{{ .Permalink }}"><p style="text-align:left"><- Anterior: {{ .Title }}</p></a>
|
||||
{{ end }}
|
||||
{{ with .PrevInSection }}
|
||||
<a href="{{ .Permalink }}"><p style="text-align:right">Siguiente: {{ .Title }} -></p></a>
|
||||
{{ end }}
|
||||
</div>
|
||||
</main>
|
||||
{{ end }}
|
||||
|
|
1
themes/blog/layouts/shortcodes/rawhtml.html
Normal file
1
themes/blog/layouts/shortcodes/rawhtml.html
Normal file
|
@ -0,0 +1 @@
|
|||
{{ .Inner }}
|
Loading…
Reference in a new issue