MISCELLANEUS


IMAGEMAGICK

Ejemplos

  • Hacer el fondo transparente
convert input.png -transparent red output.png
  • Conversion entre formatos
convert image.png image.jpg
// bajando la calidad
convert image.png -quality 90 image.jpg
  • Convertir color de fondo a transparente o a otro color.
convert image.png -background white white.png
  • Montar imagenes
montage -label 'FRONT END' frontEnd.png  
 -label 'BACK END' backEnd.png   
 -label 'DATABASE' database.png   
 -label 'UTILS' utils.png   
 -tile 2x2  -geometry 200x200 total.png
  • Recortar los bordes
shave
  • Hacer el canvas mayor para encajar la imagen
convert input.png -gravity center -background white -extent 500x500
output.png
  • Optimizar imagenes
// png
convert INPUT.png -strip [-resize WxH] [-alpha Remove] OUTPUT.png

//jpg
convert INPUT.jpg -sampling-factor 4:2:0 -strip [-resize WxH] 
[-quality 85] [-interlace JPEG] [-colorspace Gray/sRGB] OUTPUT.jpg
  • Comprimir imagenes
// ojo que esto modifica el fichero actual, no crea uno nuevo
mogrify -strip -interlace Plane -gaussian-blur 0.05 -quality 40% *.jpg 

GIT

  • Instalar
// Debian backports para pillar la ultima version
deb http://ftp.debian.org/debian strecth-backports main
aptitude -t strecth-backports install "package"

// debian
aptitude install git
git config --global user.name "John Doe"
git config --global user.email johndoe@example.com
git config --list
nano ~/.gitconfig
  • Commands

git init [project-name] - Añade el directorio donde estamos y crea el .git
git status - lista todos los archivos nuevos o modificados sin haber sido committed

git add [file] - - Añade el fichero a la staging area y empieza a seguir los cambios que en el se producen
git add . - Añade todo en el directorio de forma recursiva a la staging area
git reset [file] - Saca al archivo de la staging area

git diff - Vemos los cambio del archivo
git diff --staged - Vemos los cambio que hemos mandado al staging
git commit -m "mensaje" - Realiza un commit y le asigna un "mensaje"

git log - Es un diario con los cambios hechos en commits an la actual rama

  • de .gitignore a github

Si añadimos algo a .gitignore ya no se commiteara pero tampoco desaparece lo existente en github. Para que se elimine de github ...

git rm -r --cached some-directory
git commit -m 'Remove the now ignored directory "some-directory"'
git push origin master - normalmente con git push vale

  • ramas

git checkout -b nuevaRama - crea nueva rama de rama nuevaRama
git checkout -d nombreRama - delete rama nombreRama
git checkout otraRama - cambia a la rama otraRama
git push origin nombreRama - push los commits de nombreRama

git stash - cambios no committed se arrastran de una rama a otra. Para mantenerlos separados hacemos un stash antes de movernos a otra rama para guardar esos cambios antes de cambiar de rama.
git stash apply - cuando vuelves a una rama recuperas los cambios sin hacer commit que se guardaron en esa rama.

  • volver a estado anterior

git reset --hard HEAD~5 - elimina los ultimos 5 commits
git push origin -f - sincroniza la nueva situacion

  • Volver a un commit anterior sin modificar el head
# Paso 1: Encuentra el hash del commit
git log

# Paso 2: Crea una nueva rama como backup (opcional pero recomendado)
git checkout -b nueva-rama

# Paso 3: Actualiza el directorio de trabajo al estado del commit
# Reemplaza <commit-id> con el hash del commit al que deseas volver
git checkout <commit-id> .

# Paso 4: Añade los cambios al índice (si es necesario)
git add .

# Paso 5: Haz un nuevo commit (si es necesario)
git commit -m "Revertir al estado del commit <commit-id>"

# Paso 6: Empuja los cambios al repositorio remoto (si es necesario)
git push origin nueva-rama

Reducir el tamaño del directorio .git


MKDOCS

  • Instalacion

apt-get install python-pip
pip list --outdated -lista paquetes que se pueden actualizar
pip install mkdocs
pip install --upgrade mkdocs -actualizar mkdocs

instalar mas temas

pip install mkdocs-bootstrap
pip install mkdocs-bootswatch
pip install mkdocs-material
pip install mkdocs-alabaster
pip install mkdocs-cinder

  • Configuracion
mkdocs new my-project
cd my-project
$ mkdocs serve
Running at: http://127.0.0.1:8000/
  • Comandos

mkdocs build - crea un directorio site con todo el contenido estatico que se subira al servidor

mkdocs build --clean - limpia lo que sobra de antes

mkdocs build -d ruta/donde/gustes - crea el resultado y con el nombre gustes

  • Ejemplo mkdocs.yml
site_name: Chuletas
google_analytics: ["UA-114956807-1", "auto"]
repo_url: https://github.com/jolav/chuletas
strict: true

nav:
  - 'Menu': 'index.md'
  - 'HTML': 'html.md'  
  - 'CSS': 'css.md'
  - 'Front End': 'frontend.md'
  - 'Javascript': 'javascript.md'
  - 'Javascript snippets': 'javascript-snippets.md'
  - 'Reactjs': 'reactjs.md'
  - 'Vuejs': 'vuejs.md'
  - 'Nodejs con Expressjs': 'nodejs-expressjs.md'
  - 'Nodejs snippets': 'nodejs-snippets.md'
  - 'Nodejs Bases de Datos': 'nodejs-bases-de-datos.md'
  - 'Golang': 'golang.md'
  - 'Golang web': 'golang-web.md'
  - 'Golang snippets': 'golang-snippets.md'
  - 'Golang Bases de Datos': 'golang-bases-de-datos.md'
  - 'Debian': 'debian.md'
  - 'Varios': 'varios.md'

#theme: alabaster
#theme_dir: "chuletas-theme"
theme:
  name: alabaster
  custom_dir: chuletas-theme
site_dir: 'chuletas'
docs_dir: 'docs'
extra_css:
- '_extra/css/extra.css'
extra_javascript:
- '_extra/js/highlight.pack.js'
extra:
  logo: '_img/chuletas128.png'
  include_toc: true

GLITCH.COM

Plantilla package.json

{
  "name": "sp500",
  "version": "0.1.11",
  "description": "betazone finance sp500 stock real time data",
  "main": "sp.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node sp.js"
  },
  "engines": {
    "node": "8.x"
  },
  "author": "jolav",
  "license": "BSD-3-Clause",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/jolav/betazone.git"
  },
  "bugs": {
    "url": "https://github.com/jolav/betazone/issues"
  },
  "homepage": "https://github.com/jolav/betazone#readme",
  "dependencies": {
    "express": "^4.16.2",
    "dotenv": "^5.0.0",
  }
}

EXPRESIONES REGULARES

  • Flags

Se añaden despues de la expresion regular para indicar algo

/expReg/i - ignora mayusculas o minusculas
/expReg/g - repetir la busqueda a traves de la cadena entera

  • Basicos

. - cualquier cosa
\s - espacio en blanco
\S - cualquiera menos espacio en blanco
\d - numero
\D - no numero
\w - caracter alfanumerico (a-z, A-Z, 0-9)
\W - no caracter alfanumerico
\t - tabulador
\r - retorno de carro
\n - nueva linea

  • Limites

^ - Comienzo de cadena o de multilinea
\A - Comienzo de cadena
$ - Fin de cadena o fin de multilinea
\Z - Fin de cadena
\b - Palabra limite , "\bcat\b" pilla en "cat in the hat" pero no en "locate"
\B - No es una palabra limite
\< - Comienzo de palabra
\> - Fin de palabra

  • Grupos y rangos

Los rangos son inclusive

(X|Y) - X o Y, ejemplo \b(cat|dog)s\b pilla "cats" o "dogs"
(...) - Grupos
[abc] - Rango ("a" ó "b" ó "c")
[^abc] - No ("a" ó "b" ó "c")
[a-h] - Minuscula entre la "a" y la "h"
[A-H] - Mayucula entre la "a" y la "h"
[3-6] - Numero entre 3 y 6 ambos inclusive

  • Cuantificadores

Por defecto los cuantificadores solo se aplican a un caracter, para aplicarlo a mas usar (...) para especificar la cadena buscada

X* - 0 ó mas repeticiones de X
X+ - 1 ó mas repeticiones de X
X? - 0 ó instancias de X, vamos que es opcional
X{m} - exactamente m instancias de X
X{m,} - al menos m instancias de X
X{m,n} - entre m y n instancias(incluidas) de X

  • Especiales

{}[]()^$.|*+?\ y - entre corchetes deben ser escapados con contrabarra \

Javascript

En Javascript las expresiones regulares han de estar en una sola linea.
Los espacios en blanco son significativos
Delimitadas por barras /

var expreg = /ab+c/;
var expreg = new RegExp('/ab+c/');
expreg.test(variableATestarConLaexpresionRegular) // da true o false
  • Metodos

regexp.exec(string) Si la expresion regular casa con el string devuelve un array

  • array[0] es la subcadena que casa con la expresion regular
  • array[1] el texto capturado por el primer grupo
  • array[2] el texto capturado por el segundo grupo
  • array[n] el texto capturado por el n grupo
  • Si la expresion regular tiene una bandera g la busqueda empieza en la posicion regexp.lastIndex (inicialmente cero). Si la busqueda es exitosa regexp.lastIndex pasara a ser el siguiente caracter tras la coincidencia. Si falla pasa a 0.
  • Esto permite buscar varias coincidencias en una sola cadena

regexp.test(string) Si la expresion regular casa con el string devuelve true, si no false

var b = /&.+;/.test('frank & beans'); // b is true

string.replace(expreg, nueva) - en la cadena string reemplaza lo que casa con la expresion regular por la string nueva

string.match(regexp) - busca la regexp en la cadena string y devuelve las coincidencias en un array

var str = "The rain in SPAIN stays mainly in the plain";
var res = str.match(/ain/g); 
console.log(res) // [ 'ain', 'ain', 'ain' ]

ExpReg Comunes

.replace(/\s+/g, "") - Elimina todos los espacios en blancos
.replace(/\s/g, "loQueSea") - Reemplaza todos los espacios en blanco por loQueSea

/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ - direccion de correo valida

Aqui