From bd915436e5b53078731803fc19be7e65149e4696 Mon Sep 17 00:00:00 2001 From: Marco D'Agostini Date: Wed, 15 Jul 2020 17:37:44 -0500 Subject: [PATCH] Fix linting, and added a main Header with the title --- Bitcoin Explicacion.es.md | 20 +++-- DB_MYSQL_TRANSACTIONS.es.md | 6 +- Ssh server as a Tor hidden service.es.md | 23 +++--- Ssh server as a Tor hidden service.md | 21 +++--- bash-zsh_TerminalShorcuts.md | 93 +++++++++++++----------- install youtube-dl in android.md | 30 ++++---- ubuntu 18 fresh install.md | 41 +++++++---- 7 files changed, 129 insertions(+), 105 deletions(-) diff --git a/Bitcoin Explicacion.es.md b/Bitcoin Explicacion.es.md index 7ad7e21..326d38f 100644 --- a/Bitcoin Explicacion.es.md +++ b/Bitcoin Explicacion.es.md @@ -1,4 +1,6 @@ -# Como funcionan los fees +# Bitcoin + +## Como funcionan los fees Cada ~10m (varia mucho, muchas veces hasta se tarda mas de 30m) se genera un bloque que como máximo puede pesar hasta 1Mb de informacion. @@ -6,41 +8,43 @@ La transaccion mas común y simple es de 2 entradas y 2 salidas, y esa pesa mas Lo mineros son los encargados de decidir cuales transacciones entran o no en un bloque, y por lo general, ellos le dan prioridad a las que tengan mejor fee (la que tenga la mayor densidad de BTC, osea la mayor **BTC/vbyte**) -En esta pagina https://bitcoinfees.earn.com puedes ver estimaciones de los fees actuales. Ahorita están absurdamente bajos, osea una transaccion normal te puede estar costando menos de 300 satoshis(0.025$) menos de 2,5 centavos de dolar. Con una wallet en la que tu tengas el control, tú decides cuantos fees vas a pagar. Si no pagas comision, corres el riesgo de que ni uno de los mineros meta tu transaccion en la blockchain y nunca se confirme. En la práctica los fees dependen principalmente de 2 cosas: +En esta pagina puedes ver estimaciones de los fees actuales. Ahorita están absurdamente bajos, osea una transaccion normal te puede estar costando menos de 300 satoshis(0.02# Bitcoin5$) menos de 2,5 centavos de dolar. Con una wallet en la que tu tengas el control, tú decides cuantos fees vas a pagar. Si no pagas comision, corres el riesgo de que ni uno de los mineros meta tu transaccion en la blockchain y nunca se confirme. En la práctica los fees dependen principalmente de 2 cosas: + - Congestión de la red, cuantas transacciones tienes haciendote competencia en el valor del fee (BTC/vbyte) - Cuanto estás dispuesto a esperar Fijate en la página, cada fila es un rango de fee/byte medido en **satoshis/byte**, el tamaño de la barra indica cuantas transacciones hay/habido en ese rango, y a la derecha, al final, hay una estimacion de minutos de espera (En la práctica varía) El peso de una transaccion no solo depende de la cantidad de entradas y salidas, tambien depende del tipo de direcciones de las salidas (y quizas tambien de las entradas, not sure). Y existen 3 tipos de direcciones: + - 1... (clásica) - 3... (Segwit envuelto en un script, para hacerlo compatible con la clásica) - bc1... (Segwit nativo) -El primero es el mas ineficiente (el que pesa mas en una transaccion), y el último es el mas eficiente. +El primero es el mas ineficiente (el que pesa mas en una transaccion), # Bitcoiny el último es el mas eficiente. Ya todos los servicios se han adaptado al mas eficiente, asi que asegurate de que la wallet que uses tenga direcciones que empiecen por **bc1...** - -# Wallets centralizadas vs descentralizadas +## Wallets centralizadas vs descentralizadas Las wallet descentralizadas modernas al momento de creacion generan un número aleatorio, que es básicamente el alma de tu wallet, de hecho, ese número **es** tu wallet, y quien lo tenga puede gastar tus BTC. Ese número te lo muestran en el formato **seed/semilla**, que es una lista de 12-24 palabras, es simplemente una forma mas presentable de mostrar el numero, ya que es mas facil de memorizar, y de transcribir. Y muchas wallet van un paso mas allá e implementan el estandar **BIP39**, para encriptar esa **seed** con un **password** que tú escojas, y en estos casos para recuperar tu wallet vas a necesitar tanto la seed, como el password. Esta opcion es la que uso yo, porque entonces yo guardo tranquilamente mi **seed** en todos lados, sin preocuparme si alguien la llega a obtener, y solo me preocupo de guardar bien la clave, que es mas corta y aún mas fácil de memorizar y de guardar. (Es importante escoger una buena clave, mas q todo q sea larga, o te le pueden hacer bruteforce) La necesidad de guardar bien esa clave es la desventaja que tienen las wallet descentralizadas vs las centralizadas/custodeadas, es muy facil cagarla, desde dejar muy a la vista la clave secreta a guardarla tan bien que se te pierde. O tambien si tienes muchos ahorros, tambien tienes que pensar en tener backups que tu familia pueda recuperar si te llega a pasar algo. - -# lightning +## lightning Está construido encima de Bitcoin. Y está basado en una especie de contrato entre 2 partes, y cada parte puede decidir meter X cantidad de BTC para usarlos dentro de ese canal, y mientras ese canal está abierto ambas partes pueden tranzar sin comision alguna, porque no son transacciones que se guardan en la blockchain, son transacciones totalmente privadas. Y aquí es donde entra lightning como tal, porque bajo ciertas condiciones, se pueden conectar los canales entre sí para así poder transferirle a entidades con las que no tengas canales abierto directamente. Ventajas: + - Transacciones son casi instantáneas. - Fees son aún mas bajos. Gratis si con quien abriste el canal de lightning es el mismo a quien le vas a pagar. Desventajas: + - No es suficiente con guardar la **seed** y **password**, tu aplicacion tambien necesita guardar cada cambio que se haga en tus canales abiertos. (La única aplicacion que probé creo que tenia para configurar Google Drive para guardar todos esos cambios). - Tu aplicacion tiene que estar pendiente de la red cada cierto tiempo (dependiendo de cuando tiempo se le configuró al canal, por lo general varios días) - Capacidad limitada de cantidad de Bitcoins que puedes enviar, depende de la capacidad de los canales de la ruta que atraviesa la transacción. -Lightning sigue en desarrollo activo, y algunas de las desventajas son mejorables sacrificando decentralizacion, como hace Phoenix Wallet, que me parece un muy buen tradeoff para noobs. \ No newline at end of file +Lightning sigue en desarrollo activo, y algunas de las desventajas son mejorables sacrificando decentralizacion, como hace Phoenix Wallet, que me parece un muy buen tradeoff para noobs. diff --git a/DB_MYSQL_TRANSACTIONS.es.md b/DB_MYSQL_TRANSACTIONS.es.md index 2ac6e1a..6f45a0c 100644 --- a/DB_MYSQL_TRANSACTIONS.es.md +++ b/DB_MYSQL_TRANSACTIONS.es.md @@ -38,7 +38,7 @@ END Al ejecutar ese procedimiento almacenado, se abre una transacción, se ejecuta la **Consulta 1**, y al intentar la **Consulta 2** falla. -Hay un problema aquí, la transacción no se deshace, sino que queda abierta, osea, tiene cambios hechos de la **Consulta 1**, pero no se han hecho permanentes en la BD (`COMMIT`), ni tampoco se han devuelto los cambios (`ROLLBACK`). Y puede ocurrir cualquiera de los dos escenarios. Por ejemplo si se cierra la conexión, la BD ejecuta un `ROLLBACK` y si se ejecuta cualquiera de estas consultas https://dev.mysql.com/doc/refman/8.0/en/implicit-commit.html se genera un `COMMIT` implicitamente. +Hay un problema aquí, la transacción no se deshace, sino que queda abierta, osea, tiene cambios hechos de la **Consulta 1**, pero no se han hecho permanentes en la BD (`COMMIT`), ni tampoco se han devuelto los cambios (`ROLLBACK`). Y puede ocurrir cualquiera de los dos escenarios. Por ejemplo si se cierra la conexión, la BD ejecuta un `ROLLBACK` y si se ejecuta cualquiera de estas consultas se genera un `COMMIT` implicitamente. Si en este estado de la BD se hace un `SELECT` para verificar si en la BD se hicieron los cambios de la **Consulta 1**, se va a obtener distintas respuestas dependiendo de si el `SELECT` se ejecuta desde la misma conexión/sesión o no. @@ -77,10 +77,10 @@ Esto sirve para que cualquier otra consulta que quiera leer o modificar los elem Los `SELECT` normales no generan ningun bloqueo, para eso existen el `SELECT ... FOR SHARE` y el `SELECT ... FOR UPDATE`. -En términos simples el **FOR SHARE** bloquea los elementos seleccionados para que otra consulta no pueda escribir sobre ellos hasta que se cierre la transacción, y el **FOR UPDATE** adicionalmente impide que tampoco puedan leerlos (igual que los `INSERT`, `UPDATE` o `DELETE`). Mas información https://dev.mysql.com/doc/refman/8.0/en/innodb-locking-reads.html +En términos simples el **FOR SHARE** bloquea los elementos seleccionados para que otra consulta no pueda escribir sobre ellos hasta que se cierre la transacción, y el **FOR UPDATE** adicionalmente impide que tampoco puedan leerlos (igual que los `INSERT`, `UPDATE` o `DELETE`). Mas información ### Recomendaciones Hay que analizar detalladamente todo lo que se mete dentro de una transacción, y reducirlo a lo mas mínimo posible, para evitar [Deadlocks](https://dev.mysql.com/doc/refman/5.7/en/innodb-deadlocks.html) o retrasos debido a bloqueos innecesarios. -Usar índices en todos los `WHERE` de las consultas que bloquean, para que dichos bloqueos sean lo mas óptimos posibles, y se bloquee solo lo que hace falta bloquear. \ No newline at end of file +Usar índices en todos los `WHERE` de las consultas que bloquean, para que dichos bloqueos sean lo mas óptimos posibles, y se bloquee solo lo que hace falta bloquear. diff --git a/Ssh server as a Tor hidden service.es.md b/Ssh server as a Tor hidden service.es.md index 917e525..19ba324 100644 --- a/Ssh server as a Tor hidden service.es.md +++ b/Ssh server as a Tor hidden service.es.md @@ -1,18 +1,19 @@ -*copiado sin verguenza alguna de https://www.techrepublic.com/article/how-to-run-an-ssh-connection-through-tor/* +# Configurar a un servicio onion + +*copiado sin verguenza alguna de * --- -# Instalar Tor +## Instalar Tor Instalar Tor en el cliente y en el servidor: sudo apt-get install tor -y -# Configurar Tor +## Configurar Tor 1. En el servidor vamos a editar el archivo de configuración de tor `/etc/tor/torrc`: - sudo nano /etc/tor/torrc 2. Al final del archivo vamos a agregar esto: @@ -26,7 +27,7 @@ Instalar Tor en el cliente y en el servidor: sudo systemctl restart tor -# Obtener la direccion .onion +## Obtener la direccion .onion Estará en el archivo `hostname` en la carpeta configurada anteriormente `/var/lib/tor/ssh/` @@ -34,18 +35,15 @@ Estará en el archivo `hostname` en la carpeta configurada anteriormente `/var/l Deberia arrojarte algo así: `riludi2kstjwmlzn.onion` -# Conectarse al servidor ssh con la direccion .onion - -```bash -torify ssh ... # reemplazar el dominio/ip por la direccion .onion` -``` +## Conectarse al servidor ssh con la direccion .onion + torify ssh ... # reemplazar el dominio/ip por la direccion .onion` Por ejemplo: torify ssh jack@riludi2kstjwmlzn.onion -## Opcional +### Opcional Para no tener que recordar la direccion **.onion** puedes configurar los parámetros de conexión en el archivo `~/.ssh/config` @@ -58,7 +56,6 @@ Ingresar configuracion: HostName riludi2kstjwmlzn.onion Port 22 - Ahora puedes conectarte así: - torify ssh serverTor \ No newline at end of file + torify ssh serverTor diff --git a/Ssh server as a Tor hidden service.md b/Ssh server as a Tor hidden service.md index 36ece03..d97974f 100644 --- a/Ssh server as a Tor hidden service.md +++ b/Ssh server as a Tor hidden service.md @@ -1,14 +1,16 @@ -*Shamelessly copied from https://www.techrepublic.com/article/how-to-run-an-ssh-connection-through-tor/* +# Configure an onion service + +*Shamelessly copied from * --- -# Install Tor +## Install Tor Install Tor on both client and server: sudo apt-get install tor -y -# Configure Tor +## Configure Tor 1. In the server let's edit tor's config file `/etc/tor/torrc`: @@ -25,7 +27,7 @@ Install Tor on both client and server: sudo systemctl restart tor -# Get .onion address +## Get .onion address It will be in the file `hostname` in the previously configured folder `/var/lib/tor/ssh` @@ -33,17 +35,15 @@ It will be in the file `hostname` in the previously configured folder `/var/lib/ You should get something like `riludi2kstjwmlzn.onion` -# Connect to the Tor hidden ssh server +## Connect to the Tor hidden ssh server -```bash -torify ssh ... # replace the domain/ip with the .onion address -``` + torify ssh ... # replace the domain/ip with the .onion address For example: torify ssh jack@riludi2kstjwmlzn.onion -## Optional +### Optional You don't need to remember the **.onion** address, you can write an entry to your user's ssh config file `~/.ssh/config`: @@ -56,7 +56,6 @@ Set configuration: HostName riludi2kstjwmlzn.onion Port 22 - Now you can simply connect with: - torify ssh serverTor \ No newline at end of file + torify ssh serverTor diff --git a/bash-zsh_TerminalShorcuts.md b/bash-zsh_TerminalShorcuts.md index 125aa3a..f017b42 100644 --- a/bash-zsh_TerminalShorcuts.md +++ b/bash-zsh_TerminalShorcuts.md @@ -1,57 +1,66 @@ -# Shortcuts +# Terminal Shortcuts -*For Ubuntu's default keybinding settings (i.e Emacs keybindings)* +## Default shortcuts -## Insert previous arguments - - Alt+.: insert last argument from last command. - - Alt+number+.: insert #nth last argument from last command. - - Alt+- , number , Alt+., **zsh:** Alt+-+number+.: insert #nth first argument from last command. +For Ubuntu's default keybinding settings (i.e Emacs keybindings) -*In Linux you can repeat commands to go back in history* +### Insert previous arguments -### Example: +- Alt+.: insert last argument from last command. +- Alt+number+.: insert #nth last argument from last command. +- Alt+- , number , Alt+., **zsh:** Alt+-+number+.: insert #nth first argument from last command. + +In Linux you can repeat commands to go back in history + +#### Example Last command is: mv foo bar - - Alt+0+.: insert first argument of last command = `mv` - - Alt+2+.: insert last 2nd argument of last command = `foo` - - up , Ctrl+w: last command without the last word = `mv foo` +- Alt+0+.: insert first argument of last command = `mv` +- Alt+2+.: insert last 2nd argument of last command = `foo` +- up , Ctrl+w: last command without the last word = `mv foo` +### Cut/Paste commands -## Cut/Paste commands -*(relative to cursor's position)* - - Ctrl+w: cuts last word - - Alt+d: cuts next word - - Ctrl+k: cuts everything after - - Ctrl+u, **zsh:** Alt+w: cuts everything before - - **zsh:** Ctrl+u: cuts the entire command *(In bash you can combine Ctrl+u , Ctrl+k)* - - Ctrl+y: paste characters previously cut with any **Cut command**. *In bash you can chain **cut commands**, and Ctrl+y will paste them all.* +(relative to cursor's position) +- Ctrl+w: cuts last word +- Alt+d: cuts next word +- Ctrl+k: cuts everything after +- Ctrl+u, **zsh:** Alt+w: cuts everything before +- **zsh:** Ctrl+u: cuts the entire command *(In bash you can combine Ctrl+u , Ctrl+k)* +- Ctrl+y: paste characters previously cut with any **Cut command**. *In bash you can chain **cut commands**, and Ctrl+y will paste them all.* -## Move cursor - - Ctrl+left: move to last word - - Ctrl+right: move to next word - - home or Ctrl+a: move to start of command - - end or Ctrl+e: move to end of command +### Move cursor +- Ctrl+left: move to last word +- Ctrl+right: move to next word +- home or Ctrl+a: move to start of command +- end or Ctrl+e: move to end of command -## Other - - Ctrl+_: undo last edit *(very useful when exceeding Ctrl+w)* +### Other -## To see all shortcuts available - - **bash:** `bind -lp` - - **zsh:** `bindkey -L` +- Ctrl+_: undo last edit *(very useful when exceeding Ctrl+w)* -# Custom shortcuts -## Iterate through arguments -*only works in zsh, and probably only Linux* +### To see all shortcuts available + +- **bash:** `bind -lp` +- **zsh:** `bindkey -L` + +## Custom shortcuts + +### Iterate through arguments + +only works in zsh, and probably only Linux + +#### Description -### Description Insert any argument of a previous command by iterating one by one until selection -### Setup Instructions +#### Setup Instructions + run this: autoload -Uz copy-earlier-word @@ -62,7 +71,8 @@ run this: Now use Alt+. to go as back as you want, then use Alt+: to iterate through the arguments -### Example: +#### Example + Last command is echo 1 2 3 4 5 @@ -74,12 +84,12 @@ Last command is - Alt+.+:+:+:+:: `1` - Alt+.+:+:+:+:+:: `echo` -source: https://stackoverflow.com/a/34861762/3163120 +source: +## Other examples -# Other examples +### Common usecases -## Common usecases Let's consider the last command to be: mv foo bar @@ -88,7 +98,8 @@ Let's consider the last command to be: Alt+0+.: first argument of last command = `mv` -# Limitations +## Limitations + "words" only includes `a-zA-Z` characters, so any symbol character will stop word-shortcuts. So if last argument was a url and you want to erase it with Ctrl+w it will be a pain. @@ -97,8 +108,6 @@ E.g: `curl -I --header "Connection: Keep-Alive" https://stackoverflow.com/questi To erase that **url** using Ctrl+w, you'd have to repeat it 12 times. - --- - -It would be great to have similar shortcuts that only stops at the **space character** \ No newline at end of file +It would be great to have similar shortcuts that only stops at the **space character** diff --git a/install youtube-dl in android.md b/install youtube-dl in android.md index a46ef05..bdc6fa7 100644 --- a/install youtube-dl in android.md +++ b/install youtube-dl in android.md @@ -1,17 +1,18 @@ [//]: # "Ctrl+K,V o Ctrl+Shift+V - Para ver vista previa en VSCode" -Tutorial to install [youtube-dl](https://github.com/ytdl-org/youtube-dl/) in android via [termux](https://termux.com/), and configure it to download links shared from another app. +# Tutorial to install [youtube-dl](https://github.com/ytdl-org/youtube-dl/) in android -*Based on https://www.reddit.com/r/Piracy/comments/baufql/youtubedl_the_easy_way_on_android/* +Based on -# Usage +## Usage Click **Share**, select **Termux**, choose video or audio, and that's it!, it will be saved to `Downloads/{Provider}/` e.g `Downloads/Youtube/` -# Install Termux -https://termux.com/ +## Install Termux -# Open Termux and run one of these: + + +## Open Termux and run one of these 1. [Youtube-dl + sharing + dialog **(Recommended)**](#youtube-dl--sharing--dialog-recommended) 2. [Youtube-dl + sharing](#youtube-dl--sharing) @@ -19,7 +20,7 @@ https://termux.com/ 4. [Termux extras](#termux-extras) 5. [All-In-One](#all-in-one) -## Youtube-dl + sharing + dialog **(Recommended)** +### Youtube-dl + sharing + dialog **(Recommended)** ```bash # Ask for storage permission @@ -60,13 +61,13 @@ https://termux.com/ - A prompt to enable storage will appear, press y then Enter - That's all!, just wait for it to finish upgrading/installing -### Usage: +#### Usage Share an URL to termux, a dialog will ask you to choose if download **video** or just **audio** -## Youtube-dl + sharing +### Youtube-dl + sharing -### Usage: +#### Usage Share URL to termux, this will automatically download the video. @@ -89,7 +90,7 @@ But if you always want to download just audio, replace `youtube-dl $url` with `y chmod +x ~/bin/termux-url-opener ``` -## Youtube-dl +### Youtube-dl This will only install youtube-dl in termux, sharing a URL to Termux will not work, you'll need to run the command manually from the terminal, e.g `youtube-dl https://youtu.be/blahblahblah` @@ -100,8 +101,7 @@ This will only install youtube-dl in termux, sharing a URL to Termux will not wo apt update && apt upgrade -y && apt install -y python ffmpeg && pip install youtube-dl ``` - -## Termux extras +### Termux extras ```bash # Add special keys to keyboard @@ -115,7 +115,7 @@ This will only install youtube-dl in termux, sharing a URL to Termux will not wo apt install -y nano ``` -## All-In-One +### All-In-One Youtube-dl + sharing + dialog + Termux extras @@ -153,4 +153,4 @@ Youtube-dl + sharing + dialog + Termux extras ['ESC', '/', '|', 'HOME', 'UP', 'END', 'PGUP', '-'], \ ['TAB','CTRL', 'ALT', 'LEFT', 'DOWN', 'RIGHT', 'PGDN', '~'] \ ]" > ~/.termux/termux.properties -``` \ No newline at end of file +``` diff --git a/ubuntu 18 fresh install.md b/ubuntu 18 fresh install.md index 3b24824..8c7b63d 100644 --- a/ubuntu 18 fresh install.md +++ b/ubuntu 18 fresh install.md @@ -1,9 +1,13 @@ +# Ubuntu install guide + ## Update & Upgrade + ```bash sudo apt update && sudo apt upgrade -y ``` ## Install Packages + ```bash sudo apt-get install python3-pip zsh curl wget git sudo apt-get install p7zip-full smplayer cmus speedtest-cli git-gui filezilla pavucontrol ufw servefile nmap fail2ban gimp most colordiff mosh dconf-editor ncdu qcalc jq tor fonts-noto & @@ -14,31 +18,38 @@ pip3 install youtube-dl tldr ## External Repositories ### Antimicro + ```bash sudo add-apt-repository ppa:mdeguzis/libregeek ``` -As of today, a bionic package is still not available, but the artful works!. https://github.com/AntiMicro/antimicro/issues + +As of today, a bionic package is still not available, but the artful works!. `sudo nano /etc/apt/sources.list.d/mdeguzis-ubuntu-libregeek-bionic.list` Replace `bionic` with `artful` + ```bash sudo apt update sudo apt install antimicro ``` -Put config file https://gist.github.com/madacol/19f8c71ba98f484a4294ccfe90e88e6e in `~/.config/antimicro` + +Put config file in `~/.config/antimicro` ### SinkSwitcher -https://github.com/madacol/sinkSwitcher + ## Web installs -- docker: https://download.docker.com -- VSCode: https://code.visualstudio.com/ -- chrome: https://www.chrome.com/ -- syncthing: https://apt.syncthing.net/ -- Zsh-syntax-highlighting: https://github.com/zsh-users/zsh-syntax-highlighting/blob/master/INSTALL.md + +- docker: +- VSCode: +- chrome: +- syncthing: +- Zsh-syntax-highlighting: ## Edit ~/.zshrc + ### Add shortcut "Alt+:" [to iterate through arguments](https://stackoverflow.com/questions/4009412/how-to-use-arguments-from-previous-command/55069846#55069846) + ```bash autoload -Uz copy-earlier-word zle -N copy-earlier-word @@ -46,19 +57,23 @@ bindkey "^[:" copy-earlier-word ``` ### Enable most + ```bash export PAGER=most ``` ## Gnome extensions + - Caffeine -- Dash to dock https://extensions.gnome.org/extension/307/dash-to-dock/ `sudo apt remove gnome-shell-extension-ubuntu-dock` https://github.com/micheleg/dash-to-dock/issues/643 -- suspend button NetSpeed https://extensions.gnome.org/extension/104/netspeed/ -- NetSpeed https://extensions.gnome.org/extension/104/netspeed/ +- Dash to dock `sudo apt remove gnome-shell-extension-ubuntu-dock` +- suspend button NetSpeed +- NetSpeed ## Custom shortcuts + - `systemctl suspend` -- Cmus https://medium.com/@madacol/configure-cmus-music-player-on-the-terminal-in-ubuntu-3c513d2d2cd0 +- Cmus ## StartUp -- Cmus `gnome-terminal -- cmus` \ No newline at end of file + +- Cmus `gnome-terminal -- cmus`