Archivo de la etiqueta: software libre

Anti-NoCodeTools: Diagramas

Bueno aquí un templario que lucha contra la tontería de las no code tools con artículos como:

Porque niños, eso de usar productos comerciales es como ir a la trabajadora sexual mas enferma que encuentres en un sucio callejón a intercambiar fluidos corporales por una pequeña y mal pagada suma de económica.

Pues eso de perder el tiempo con el ratoncito, subiendo un chispi, un poquitin pa’arriba o pa’abajo una caja en un diagrama, pues no se…siempre hay gente en los curros que no son cooperativas que les pagan por perder el tiempo, pero a los demás, no. Y además como en la mierda de sociedad que vivimos que el 8+8+8 es una mentira «asin de gorda» porque no tienes 8 horas para ser un humano con tus aficiones y si tienes que hacer un diagrama para algo, no tienes tiempo para jugar con el ratoncito cambiado la fuente y su tamaño.

Por eso «everything as code» o en español «todo a código», porque perder tiempo y ganar miopías dejando un diagrama bonito, cuando mejor escribirlo y una vez hecho, si acaso darle después cariño vía configuración (o ficheros de estilos que tenga) al diagrama generado.

Bueno pues vamos a hablar de las alternativas en software libre para escribir diagramas.

Empezamos por el mas viejo:

Graphviz

Que comenzó como un proyecto interno de la AT&T y se libero hace 35 años (en 1991), escrito en lenguaje C. Es el mas viejo y el que podemos decir que es un Heartbleed del software libre, porque tiene un bug muy gordo para hacer diagramas verticales (que crezcan en vertical) y como es software libre…todo el mundo lo usa y nadie pone un mísero dolar, euro o peseta para arreglarlo, . Por eso veras en caras herramientas o empresas que ofrecen sus servicios en la nube con algunos diagramas «un poco feos»…pues ahí lo tienes.

Otra cosa que da un poco jaqueca es que tiene dependencias del sistema de X, por lo que si tienes un servidor ahí con poquitos paquetes y limpio, cuando metes graphviz te instala cosas muy bizarras.

No obtante le tengo cariño porque para hacer un diagrama es tan simple como (cojo el diagrama del artículo Tocate los pies: NoCode tools II ):

digraph La_felicidad_de_las_nocode_tools {
  // title
  labelloc="t";
  label="La felicidad de las nocode tools.";

  "Fichero\nproyecto" [shape=box];
  "NoCode\nTool" [shape=box3d];
  "Bonita\nAplicación" [shape=note];
  
  "Usuario feliz" -> "NoCode\nTool"
  "Fichero\nproyecto" -> "NoCode\nTool"
  "NoCode\nTool" -> "Bonita\nAplicación"
}

Y para generarlo es:

dot -Tjpg /tmp/diagrama.gv -o /tmp/diagrama.jpg

Saliendo este bonito diagrama:

PlantUML

El siguiente que mas me pegado en un curro (bueno con grapviz también lo he trabajado mucho en una empresa que perdió su espíritu…que destrozo humano fue para mucha gente) que estuve, allí aunque nos trataban como gallinas ponedoras de huevos hacían pero hacían muy bien metodología y usábamos muchos diagramas hechos en plantuml (embebidos en otra herramienta que le cogí cariño (pese a estar hecha en ruby) Redmine.

En si plantuml se invento para hacer los UML (que era la piedra filosofal de los comerciales, CEOs y demás gente que no trabaja directamente en los 90, que creían que a partir de los diagramas UML iba aparecer mágicamente el código sin necesidad de esos melenudos metaleros programadores) pero le han metido mas diagramas y formas de usarlo (hasta un sudoku y el juego de morirse de hambre en USA).

Picado en java, tiene muchas formas de usarlo (en su momento lo usábamos embebido en redmine como dije) desde linea de comando con su cli, ha lanzar un pequeño servidor web con un formulario pequeño para hacer el diagrama ahí en vivo. Tienen un docker para hacer fácil en plantuml/plantuml-server el server web.

Copio el código del articulo anterior que era para plantuml:

@startuml
actor "Usuario feliz" as usuario
file "Fichero\nproyecto" as fichero
node "NoCode\nTool" as nocodetool
artifact "Bonita\nAplicación" as aplicacion

title La felicidad de las nocode tools.

usuario --> nocodetool
fichero --> nocodetool
nocodetool --> aplicacion
@enduml

Y la ejecución en la linea de comando es:

java -jar plantuml.jar /tmp/diagrama.puml -tpng /tmp/diagrama.png

Ofreciendo el bonito diagrama de:

mermaid-cli

Es de los que menos me he pegado, usa un lenguaje de estos novedoso (vamos js con npm y tal), por lo que usarlo en web es relativamente fácil pero ademas tienen un cli.

Y el código del diagrama es:

graph TD

A[Fichero<br />proyecto] --> B{{NoCode<br />tool}}
C([Usuario feliz]) --> B
B --> D[[Bonita<br />Aplicación]]
Y para ejecutarlo…escribo el paso  de instalarlo localmente con npm (es un poco bestia por que instala un chromium headless, la instalación es 358mb en total …lo de siempre con la alegría de npm):
npm install @mermaid-js/mermaid-cli

npx mmdc -i /tmp/diagrama.mermaid -o /tmp/diagrama.png

Y da el siguiente y bonito diagrama:

ditaa

Gracias Swicher por darme lo a conocer, es de agradecer que gente buena lea el blog y encima te ayude a aprender.

Es curioso porque aquí los diagramas «los pintas» en ASCII y ya es algo «legible» para el que no conozca el código. Escrito en Java tiene su herramienta para hacerlo desde la linea de comandos.

Y como en las anteriores herramientas code (because code is the best) para diagramas, os muestro como es con ditaa (obra de Swicher en un gist):

La felicidad de las nocode tools.
+----------------+  +--------+
|👤 Usuario feliz|  |{d}     |
+------------+---+  |Fichero |
             |      |proyecto|
             |   /--+--------+
             |   |
             v   v
           +------+
           |{io}  |
           |NoCode|
           |Tool  |
           +--+---+
              |
              v
        +-----------+
        |Bonita   📜|
        |Aplicación |
        +-----------+

En muchas distribuciones de GNU/Linux que tienen ditaa pero voy a usar la versión jar (standalone ….lo que me costo encontrar una traducción a esta para los juegos libres que empezaron como un mod de quake3 y con la liberación del motor fueron juegos «independientes»).

Y para obtener la imagen es:

(actualmente hay un bug y para que salgan los emoji solo funciona si la salida es svg)

java -jar ditaa-0.11.0-standalone.jar diagrama.ditaa --svg diagrama.svg

Y para PNG (que no salen los emoji)

java -jar ditaa-0.11.0-standalone.jar diagrama.ditaa diagrama.png

Y nos sale el bonito diagrama:

Ya veis que con código se puede hacer casi todo, quizá por ser crítico, lo que echo de menos en muchas de estas herramientas es algún fichero tipo css para configurar estilos por si quieres afinar y sea mas limpio, en plan «fichero diagrama» + «fichero de estilos».

Por cierto mientras escribía estas lineas (que han sido varios días) en uno de los barrapuntos americano ha salido la noticia de graphviz:

Create diagrams with code using Graphviz

He añadido a la lista páginas Indie Libre

Algo que tenía pendiente desde hace meses (la tenía en una pestaña en el móvil) y lo que hay que hacer hay que hacerlo.

Indie Libre

Es un devblog de desarrollo de juegos indie con el genial Godot.

En donde podrás aprender mucho sobre esta herramienta libre y desarrollo de juegos.

Sinceramente le deseo lo mejor al señor Cesar León que no tengo el placer de conocerle.

Galería de los proyectos de videojuegos hechos con Godot en 2020

Que decir de Godot, mas que Un engine software libre de creación de videojuegos, nacido en la humilde Argentina que ha conquistado el mundo y «le da de sopapos» al asqueroso Unity3D (que se han bajado los pantalones y han sacado IDE para GNU/Linux…ahora buenas horas mangas verdes) y al maquiavélico UnrealEngine.

Han publicado su «showreel» de proyectos del 2020, vamos su galería de proyectos que hacen empresas de videojuegos usando este genial engine.

El de videjuegos para pc y consolas:

Y el de videojuegos para móvil:

Iba a sacarme la chorra…pero como dicen los geniales Lendakaris Muertos…chorra cacahuete, porque en google trends de este año nos sigue ganando de goleada en las búsquedas el asqueroso Unity3D:

¿Quién se cargo a Stallman en Docker?

Hay poca gente que niegue la revolución que esta siendo Docker en el mundo de GNU/Linux.

Después de la caza de brujas que paso a finales del año pasado contra el pobre Richard Stallman que resumo en el articulo de meneame:

Ahora que ha muerto Stallman quememos la Free Software Foundation

Pues sabia que habían quitado al pobre Stallman del generador de nombres de contenedores docker sin nombre. Fue en septiembre 2019.

El verdugo o nazi, porque para mi es como la quema de libros que hacían los nazis para borrar la historia es: hn3000

Todo esto siempre me trae a la memoria el poema de Primero vinieron… de Martin Niemöller

«Primero vinieron a buscar a los comunistas y no dije nada porque yo no era comunista.
Luego vinieron por los judíos y no dije nada porque yo no era judío.
Luego vinieron por los sindicalistas y no dije nada porque yo no era sindicalista.
Luego vinieron por los católicos y no dije nada porque yo era protestante.
Luego vinieron por mí pero, para entonces, ya no quedaba nadie que dijera nada»

Espero que tarde o temprano se restituya la memoria de Stallman antes de que muera y hagan los típicos rollos que suelen hacer con los Oscar a titulo póstumo…porque la ouija no tiene mucha cobertura wifi.

Por cierto un día me salio el primer cosmonauta humano (y soviético) Yuri Alekseyevich Gagarin, como «gagarin_algo» también esta Valentina Tereshkova…pero todavía no me ha salido esa combinación. Pero algún día los borrarán.

Manual en español de Libreoffice: Domando al Escritor

Gracias al comentario Swicher en un pequeño articulo que hago sobre lo que busca la gente: Ayudando a los que buscan: tutorial libreoffice

Y Swicher dijo:

Swicher
2020-02-11 a las 08:11

También esta Domando al Escritor enfocado en LibreOffice Writer y que podría interesarle a mas de uno.

Gracias por el comentario Swicher.

 

Chincha rabiña yo tengo una …Patreon

De esas cosas que lo piensas…y piensas…y piensas…y al final dices «¿Por qué no?».

Y ahí que me he metido, https://www.patreon.com/migueldedios .

¿Qué busco?

Pues a falta de trabajar en una cooperativa o en una fundación de software libre, voy a intentar que el trabajo voluntario que hago en el software libre tenga algo de colchón económico, mientras espero para dormir feliz cada noche.

Hombre en plan cuento de lechera he puesto el «goal» de 5000$ que no creo que nunca llegue, pero molaría ser un Icculus de la vida y vivir del software libre pero haciendo lo que te gusta.

Aunque el camino que he puesto es un poco GATO VIOLÍN , es porque creo que es el mas ético, ayudar a una persona a que siga haciendo lo que le hace feliz y además no es invadir Polonia, coño que es hacer cultura y software libre.

¿Y cómo será y en que dejará los tomates?

Pues creo que salvo que me den otros aires, sera como un blog de trabajo, poniendo artículos de las mierdas (de software libre o cultura libre) que estoy metido hasta el codo. Proyectos que quiero afrontar y también estaría bien un poco de comunicación por vuestras reales partes porque yo que se, no es solo el moni-moni es también decirme «oye Miguel porque no haces esto así o lo haces asa».

Y los tomates, pues creo que seguiré como hasta ahora un blog mas o menos personal…de los últimos que quedan, porque la gente por el dios google se han «especializado» y son monotematicos para conseguir mas pagerank y estar en en la primera página en google…pues no, paso…intentare no rozar la ilegalidad que no quiero ser un Cesar Strawberry de la vida. Pero ya esta.

Powerline Docker: Si existe y es fácil de instalar

De la saga peliculera: Powerline: configurandolo para Bash y GNU/Linux (of course) y mi duda si había un segmento para vigilar docker.

Pues si, lo hay y se llama: Powerline Docker

Y para instalarlo, primero tienes que tener instalado el Powerline (revisa el anterior link de arriba) y después instalarlo con:

$ pip install powerline-docker

Y después la coña marinera de añadir el juego de colores…debería ser distinto en plan cargarlo de un fichero que venga adjunto al plugin.

Añadir a:

/home/<usuario>/.config/powerline/colorschemes/default.json

    "docker":                    { "fg": "gray8",           "bg": "darkestblue", "attrs": [] },
    "docker_running":            { "fg": "green",           "bg": "darkestblue", "attrs": [] },
    "docker_paused":             { "fg": "brightestorange", "bg": "darkestblue", "attrs": [] },
    "docker_exited":             { "fg": "brightred",       "bg": "darkestblue", "attrs": [] },
    "docker_restarting":         { "fg": "gray10",          "bg": "darkestblue", "attrs": [] },
    "docker:divider":            { "fg": "gray4",           "bg": "darkestblue", "attrs": [] }

Añadir el segmento a vuestro fichero de configuración de shell:

{
	"function": "powerline_docker.docker",
	"priority": 30
},

Y después el típico replace del demonio:

$ powerline-daemon --replace

Y ya esta:

Y os saldrá el emoji de la ballenita con el contador de contenedores en funcionamiento en mi caso solo 1 y 13 contenedores parados.

Por cierto las frutitas que veis es un segmento que he hecho.

Powerline: configurandolo para Bash y GNU/Linux (of course)

No tengo tiempo para escribir, y estoy hablando del famoso powerline que ha habido mucho artículo en la blogosfera hispana estas últimas semanas.

Y paso como con SQLite la gente mucho hablar, que si tal que si cual, pero enseñame la mandanga, porque puedo hablar del espíritu de la gominola y pero si no me he manchado las manos es como ser «entrenador de fútbol de barra de bar», y tengo que reconocer que SQLite ha mejorado pero por ejemplo no trae comprobación de tipos por defecto y aquí te lo explicaba en Domesticando SQLite.

Hace unos años un excompa de curro que por desgracia usaba Apple, nadie es perfecto, puede que ya haya gente nativa digital en el mundo libre, pero muchos hemos usado cosas asquerosas como m$-win98 y andabas que si cygwin, dev c++ y al final decías «¡Que cojones! ¡¡¡Vamos a ser serios y valientes y ni particionar disco duro, ni ostias, todo para GNU/Linux!!!» Y pasado unos meses ya estas siendo libre. En mi caso la última vez que hice el gilipollas fue con WinXP haya por 2004, después, ya los discos duros están eticamente configurados.

Pues lo lamentable de los maqueros, es que no se si por secta o por gilipollez parecida a un adolescente que se gasta un pastizal en una zapatillas de marca o unos vaqueros (en mis tiempos mozos eso pasaba), o por economía porque tiene que ser muy vergonzoso gastarte un pastizal en portátil que le cambias el sistema operativo y ya no es elitista y encima ves que va mejor y que podrías haberte gastado menos dinero.

Pero bueno esta gente intenta acercarse a como vivimos bien la gente en GNU/Linux, pero sin dar el paso, y este excompa me enseño el rollito de que usaba mucho la terminal y tenia un invento que no se si sería powerline o algo parecido.

Pasaron los años. Y eso la blogosfera hispana empezaron a hablar de Powerline.

Pensé, voy a ponerlo y catástrofe, no funciona bien. Y a partir de este punto os voy a contar la mandanga de Powerline y como ponerlo rechulon y útil.

¿Qué es el powerline?: Es un script python para tener una linea de comandos hipervitaminada. Pasamos de:

A esto:

También se puede usar como barra de aplicaciones en I3 hasta barra de estado para Vim, entre otros. Pero en este articulo nos centramos en la shell de toda la vida.

El powerline se pueden configurar zonas/lados, en una shell típica tienes el prompt a la derecha. Pero el powerline soporta derecha, izquierda e incluso arriba.

Malas noticias, Bash no soporta lado derecho, solo lado izquierdo.

Instalar Powerline, puedes o instalarlo desde pip pero es mas recomendable (aunque no sera la última versión) instalarlo desde el gestor de paquetes del GNU/Linux en mi caso LinuxMint:

$ sudo apt install powerline fonts-powerline

Para activarlo en Bash tiene su miga porque tienes que editar tu fichero de configuración de usuario en:

/home/<usuario>/.bashrc

Añades al final el siguiente trozo de código que le dice que lance el demonio de powerline y ejecute el powerline

# Powerline
if [ -f /usr/share/powerline/bindings/bash/powerline.sh ]; then
	powerline-daemon -q
	POWERLINE_BASH_CONTINUATION=1
	POWERLINE_BASH_SELECT=1
	source /usr/share/powerline/bindings/bash/powerline.sh
fi

Y lo mejor salir y entrar de la terminal para que cargue la nueva configuración.

La configuración de Powerline por defecto es chula, pero se le puede dar mas cera, en la documentación dice que merguea el fichero de configuración por defecto del sistema con la que tengas personal en tu usuario ¡¡MENTIRA!! . La que tengas en personal te la machaca, sobre todo los segmentos. Los segmentos son los trozitos del separados del prompt. Solución al machaque insensible, pues copiarte el fichero de configuración del sistema y modificarlo a tu gusto.

Entonces tienes que hacer:

$ cd ~
$ mkdir -p .config/powerline/themes/shell/
$ cp /usr/share/powerline/config_files/themes/shell/default.json /home/<usuario>/.config/powerline/themes/shell/
$ <editor_favorito> /usr/share/powerline/config_files/themes/shell/default.json

Hay plugins para Powerline yo uso powerline-gitstatus, después os cuento como se instala, pero antes os muestro mi configuración, os explico cosas y tal:

{
	"segments": {
		"left": [
			{
				"function": "powerline.segments.common.time.date",
				"priority": 20,
                "args": {
					"format": "%H:%M"
				}
			},
			{
				"function": "powerline.segments.shell.mode"
			},
			{
				"function": "powerline.segments.common.net.hostname",
				"priority": 10
			},
			{
				"function": "powerline.segments.common.env.user",
				"priority": 30
			},
			{
				"function": "powerline.segments.common.env.virtualenv",
				"priority": 50
			},
			{
				"function": "powerline.segments.shell.cwd",
				"priority": 10
			},
			{
                "function": "powerline_gitstatus.gitstatus",
                "priority": 90
            },
            {
				"function": "powerline.segments.shell.jobnum",
				"priority": 20
			},
			{
				"function": "powerline.segments.shell.last_status",
				"priority": 20
			}
		]
	}
}

«Cosas» de la configuración:

  • Es un fichero json
  • Si necesitas saber si la configuración esta bien, Powerline te da un comando para probar si la configuración (usando la de sistema y la tuya a la vez que es como sera) es:
    $ powerline-lint

    Y te devolvera errores o mejor ninguno.

  • Como estamos en Bash, solo usamos el subarray «left«.
  • El orden es de arriba abajo, y en la pantalla saldran de izquierda a derecha.
  • Cada hash, dict, array asociativo o platanos con chocolate (aunque mas o menos se esta poniendo de moda lo de dict) es un segmento (un trozito del prompt), y es:
    • function: el segmento a poner, podeis ver que son en plan modulos de python, «modulo.submodulo.submodulo.funcion». Y por ver los que hay (hay muchos muchos y muy curiosos en el core y como plugin, que si batería, que si carga de cpu, metereología….) :
      • powerline.segments.common.time.date: segmento para poner fecha y tiempo. Si ya se que en el escritorio, en el movil y puede que en la muñeca tienes un reloj, pero es muy útil para ver a si a ojo cuando lanzaste un comando o cuanto tardo un comando en terminar.
      • powerline.segments.shell.mode: el modo de la shell, si esta en el normal no aparece.
      • powerline.segments.common.net.hostname: el nombre la maquina, solo sale si te conectas a ti mismo por ssh.
      • powerline.segments.common.env.user: el usuario que estas, junto con el anterior poco útil.
      • powerline.segments.common.env.virtualenv: si estas usando virtualenv te pone el nombre. En mi caso tampoco muy útil, todos estos inventos (venv, chroot…) con el invento de docker es el que mas juegas.
      • powerline.segments.shell.cwd: el path donde estas trabajando, vamos como el prompt normal (creo que se puede vitaminar con la configuración).
      • powerline_gitstatus.gitstatus: este es uno que me hizo ponerme serio con powerline, en el segmento te muestra muy resumido mucha información si el directorio es un proyecto git, desde la rama que estas, hasta los commits que tienes pendientes de subir, ficheros añadidos y sin añadir al siguiente commit. Este viene de un plugin externo, después os comento como se instala.
      • powerline.segments.shell.jobnum: no uso mucho el rollo de mandar trabajos a background, pero cuando lo uso mola saber cuando han terminado la ejecución, muestra en amarillo un contador de trabajos en background. También útil cuando se te escapa un & y no te has dado cuenta que has mandado a background una ejecución.
      • powerline.segments.shell.last_status: otro muy útil, ya sabéis que en GNU/Linux cualquier comando que lances devuelve 0 si ha terminado correctamente y un numero distinto si mal. Este segmento solo aparece cuando el ultimo comando ha salido mal y en un rojo alarma, muy útil porque hay comando que no devuelven ninguna salida de texto pero si petan.
    • priority: un valor numerico que dice la prioridad del segmento en mostrarse, se ocultan primero los que tienen los numeros mas grandes, cuando:
      • la linea de prompt es mas grande que el ancho de ventana/pantalla.
      • cuando supera un espacio para dejar el escribir al usuario, en principio se puede configurar pero no funciona creo que apesta a bug.
    • args: es un dict json donde pasarle parametros al segmento para personalizarlo, el único que tengo configurado yo es el del tiempo que le he puesto solo para mostrarme las horas y minutos, hay que mirar en la documentación del segmento que parametros acepta:
      "args": {
      	"format": "%H:%M"
      }

Y ya esta, no es muy complicado, después hay ficheros de configuración de powerline o para separar la configuración de los segmentos de la configuración de diseño, también hay un fichero de configuración de colores, pero con los que vienen por defecto a mi me sobran.

Aunque autocarga la configuración cada vez que se cambia (un hotreloader como dicen los modernos), algunas veces no lo hace y puedes forzar la recarga con:

$ powerline-daemon --replace

Instalar Powerline-gitstatus ,tiene su miga porque no es solo instalarlo hay que meterle configuración de color por defecto si no peta.

Instalarlo es:

$ pip3 install powerline-gitstatus

Y tienes que hacerte los directorios de las configuraciones de colores:

$ mkdir -p /home/<usuario>/.config/powerline/colorschemes/shell

Y después copiar los ficheros (ya sabes que el mergeo no funciona bien) de por defecto del sistema. El solarized no se si es un cargocult pero a mi me petaba el powerline-gitstatus aunque no usara ese esquema de colores, total no molesta mucho:

$ cp /usr/share/powerline/config_files/colorschemes/shell/default.json /home/<usuario>/.config/powerline/colorschemes
/shell
$ cp /usr/share/powerline/config_files/colorschemes/shell/solarized.json /home/<usuario>/.config/powerline/colorschemes
/shell

Y añadir el juego de colores de powerline-gitstatus, por no liar os pego los dos ficheros mios, pero basicamente son los valores para powerline-gitstatus:

default.json

{
	"name": "Default color scheme for shell prompts",
	"groups": {
		"hostname":         { "fg": "brightyellow", "bg": "mediumorange", "attrs": [] },
		"environment":      { "fg": "white", "bg": "darkestgreen", "attrs": [] },
		"mode":             { "fg": "darkestgreen", "bg": "brightgreen", "attrs": ["bold"] },
		"attached_clients": { "fg": "white", "bg": "darkestgreen", "attrs": [] },
	"gitstatus":                 { "fg": "gray8", "bg": "gray2", "attrs": [] },
    "gitstatus_branch":          { "fg": "gray8", "bg": "gray2", "attrs": [] },
    "gitstatus_branch_clean":    { "fg": "green", "bg": "gray2", "attrs": [] },
    "gitstatus_branch_dirty":    { "fg": "gray8", "bg": "gray2", "attrs": [] },
    "gitstatus_branch_detached": { "fg": "mediumpurple", "bg": "gray2", "attrs": [] },
    "gitstatus_behind":          { "fg": "gray10", "bg": "gray2", "attrs": [] },
    "gitstatus_ahead":           { "fg": "gray10", "bg": "gray2", "attrs": [] },
    "gitstatus_staged":          { "fg": "green", "bg": "gray2", "attrs": [] },
    "gitstatus_unmerged":        { "fg": "brightred", "bg": "gray2", "attrs": [] },
    "gitstatus_changed":         { "fg": "mediumorange", "bg": "gray2", "attrs": [] },
    "gitstatus_untracked":       { "fg": "brightestorange", "bg": "gray2", "attrs": [] },
    "gitstatus_stashed":         { "fg": "darkblue", "bg": "gray2", "attrs": [] },
    "gitstatus:divider":         { "fg": "gray8", "bg": "gray2", "attrs": [] }
	},
	"mode_translations": {
		"vicmd": {
			"groups": {
				"mode": {"fg": "darkestcyan", "bg": "white", "attrs": ["bold"]}
			}
		}
	}
}

solarized.json

{
	"name": "Solarized dark for shell",
	"groups": {
		"mode": { "fg": "solarized:base3", "bg": "solarized:green", "attrs": ["bold"] },
        	"gitstatus":                 { "fg": "gray8", "bg": "gray2", "attrs": [] },
    "gitstatus_branch":          { "fg": "gray8", "bg": "gray2", "attrs": [] },
    "gitstatus_branch_clean":    { "fg": "green", "bg": "gray2", "attrs": [] },
    "gitstatus_branch_dirty":    { "fg": "gray8", "bg": "gray2", "attrs": [] },
    "gitstatus_branch_detached": { "fg": "mediumpurple", "bg": "gray2", "attrs": [] },
    "gitstatus_behind":          { "fg": "gray10", "bg": "gray2", "attrs": [] },
    "gitstatus_ahead":           { "fg": "gray10", "bg": "gray2", "attrs": [] },
    "gitstatus_staged":          { "fg": "green", "bg": "gray2", "attrs": [] },
    "gitstatus_unmerged":        { "fg": "brightred", "bg": "gray2", "attrs": [] },
    "gitstatus_changed":         { "fg": "mediumorange", "bg": "gray2", "attrs": [] },
    "gitstatus_untracked":       { "fg": "brightestorange", "bg": "gray2", "attrs": [] },
    "gitstatus_stashed":         { "fg": "darkblue", "bg": "gray2", "attrs": [] },
    "gitstatus:divider":         { "fg": "gray8", "bg": "gray2", "attrs": [] }
	},
	"mode_translations": {
		"vicmd": {
			"groups": {
				"mode": { "fg": "solarized:base3", "bg": "solarized:blue", "attrs": ["bold"] }
			}
		}
	}
}

Y ya sabéis si un restart del powerline-daemon y ya esta.

Y bueno por finalizar el articulo, os pongo los segmentos que echo en falta y que creo que no existen:

  • Un segmento que muestre el estado del watson es un tracker/contador de tiempo desde terminal (escrito en python) para en el curro cuando te preguntan en que has estado trabajando decir pues «he estado X horas mierda que necesita este cliente» yo antes usaba Hamster Applet pero se han metido en una rescritura del proyecto y se han cargado el soporte para cualquier cosa que no sea Gnome3.
  • Un segmento que muestre estado del docker (actualización: si hay…os debo un articulo), rollo contenedores levantados, caidos y alguna cosa mas.
  • Un segmento que te avise que el directorio es un montaje sshfs o así.
  • Un segmento que muestre un cita rollo el fortune.
  • Un segmento que muestre un string desde un api web o así, para enganchar resultados deportivos, valores de criptomonedas o votos en meneame.
  • Lo mismo pero pasando como argumento un comando a ejecutar.
  • La tragaperras que se hizo años para elbinario .

Y falta un awesome_list de powerline en el m$-github.

Domesticando SQLite

Le tengo cariño a SQLite aunque no pase mucho con el, ni siquiera los findes vamos al parque a echar pan duro a los patos. Eso de tener una base de datos embebida en cualquier programa que piques o una base de datos tirando de un fichero y un cli es mágico en esta época de microservicios y apis y miles de capas.

Me recuerda también a Lua otro invento que también le tengo cariño pero menos tiempo paso con el, porque este es un lenguaje de programación para añadirlo a tus proyectos y tener un punto abierto para que la gente extienda y haga locuras con tu proyecto en forma de extensiones, plugins, mods…desde un entorno mas o menos seguro.

Pues parece que se ha vuelto a poner de moda SQLite, pero los tutoriales que he encontrado por ahí…y no quiero señalar a nadie, hablan de como instalarlo y lo bonito que es y tal.

Pero nadie habla de lo malo de SQLite, algo que descubres cuando pasas tiempo con el…y es que parece pregunta típica y tópica de entrevista de trabajo, «Del lenguaje PliPli….dime que cosas te gustan y que cosas no te gustan.».

Y una cosa que nadie trata es que SQLite es muy espartano en relación a un PostgreSQL o un MariaDB (MySQL como Belalugosi is dead), como simil o metafora, es como pasar de un Python o un lenguaje de muy alto nivel a ensamblador.

Ya que estamos hablando de Bela Lugosi is Dead, la mejor adaptación del tema original (salvo que Marilyn Manson haga una y sea decente porque últimamente el chico anda de capa baja) de Opera IX:

SQLite no trae chequeo de tipos de columnas

 

Puedes meter un entero en una columna de texto y al revés y se queda tan pancho el SQLite y no es un bug, aquí tenéis la explicación.: SQLite lets me insert a string into a database column of type integer!

Pero se puede arreglar con:

create table test (
   id integer check(typeof(id) = 'integer'),
   name "text" check(typeof("text") = 'text')
);

Y aquí, se acaba la lista de cosas….porque iba a hablar de las foreing keys, pero mira que soy perro viejo que recuerdo que hace unos años no tenía y he mirado se introdujeron en el 2009, espero que mi memoria no me falle y es porque no estaba esa versión en las distros hasta mas tarde.

Y por cierto otra cosa que me encanta de SQLite que cuando hace poco años, los SJW y demás calaña (pero en serio que calaña de gente, no hace nada mas que intoxicar los colectivos en vez de ayudar y si quiere poner su granito de arena de su ideología) se pusieron serios con mierdas de códigos de conducta, el creador D. Richard Hipp en vez de bajarse los pantalones, pues dijo «queréis código conducta, pues toma código conducta» y adopto para el proyecto las reglas de los templarios del siglo VI.

MAN, se que lo odias. Hay alternativas al man

Las páginas manual de Unix (claro esta GNU/Linux también), son oscas y duras, ayudan pero son como el viejo sabio profesor de artes marciales vas a maldecirlo pero al final vas ha seguir el camino de kungfu y transcender y luchar como Neo en Matrix sin ni siquiera mirar al contrincante.

Historias de abuelo cebolleta digital

Como siempre queridos niños acercaros aquí a la chimenea junto al abuelo cebolleta, que os voy a contar un cuento. En mis tiempos cuando era un niño pequeño e intentaba hacer mis cosillas en un ZX Spectrum +2A (con 128Kb de RAM y se podía hacer de todo), pues en aquellos tiempos sin internet ni nada, solo tenías:

  • el manual del ordenador, que en aquellos tiempos te daban en papel un manual del ordenador, y era un tocho de manual de 100 y pico páginas. Era en blanco y negro y plagado de textos, pero oye te explicaba como programar en Basic. Era bastante espartano. Y al final del libro un par de listados en Basic de juegos o programas de contabilidad.
  • bibliotecas de barrio, donde no se porque…pero tenían en mi caso libros de programación para niños. De vez en cuando me pregunto quién pensó en comprar libros de programación para niños en una biblioteca de barrio obrero del extrarradio. Era una biblioteca que pertenecía a la obra social de Caja Salamanca y Soria (obra social que era obligada por ley). Aun recuerdo el pasillo oscuro con estanterías a los lados y los libros de programación para niños en un rinconcito, y como niños no había internet, solo sabías que había mas libros de una colección por la contra portada, e incluso descubrías que había otros ordenadores ademas de nuestro querido Spectrum y el amigo raro del Amstrad (porque reconozcamoslo en aquella época fue el Spectrum en España), había ordenadores como C64, el Dragon 64. Y aprendías a base de escribir listados de código en basic y audazmente cambiar cosas y ver que pasaba.

Cómo usar el man

Antes de ver alternativas al MAN, vamos a ver como usar MAN por si acaso ayuda. Recordar que el Man no necesita internet para nada, puedes estar después de una guerra nuclear, encerrado en un bunker soviético sobreviviendo al invierno nuclear y si tenéis un ordenador con GNU/Linux y tenéis que buscar como hackear un t1000 si podréis….con un Atari Porfolio…

Para ver el Man de un commando en GNU/Linux:

$ man <comando>

Las ayudas o mejor dicho páginas de man tienen el siguiente formato o estructura (hay raras excepciones):

  • Nombre: nombre y descripción corta.
  • Sinopsis: ejemplos muy cortos de como se usa.
  • Descripción: descripción de como se usa, mas o menos larga.
  • Opciones: lista de parámetros posibles.
  • Copyright: quien hizo en comando, licencia y tal.
  • Errores: sección que describe errores conocidos o como reportar errores.
  • Véase también: lista otros comandos parecidos o relacionados.
  • Notas: sección de notas.

Para moverse y usar el Man (es parecido a Vi/Vim)

  • con la flecha arriba y flecha abajo, hacer scroll por el texto.
  • AvPág y RePág para desplazarte como bloques de páginas.
  • G para ir al final del archivo (páginas se llaman) Man.
  • g para ir al principio del página Man.
  • q para salir del man.
  • / para entrar en modo busqueda, entonces abajo te aparece una barra donde escribir lo que buscas.
  • n para buscar el siguiente
  • N para buscar el anterior
  • q para salir del modo buscar

Si no te apañas en la terminal…golpe de remo…bueno siempre es duro esa pantalla de fondo negro y letras blancas, pues tienes unos ruedines para el man que es verlos en navegador con:

$ sudo apt-get install groff

Y después con:

$ man -H <comando>

Si se queja de que no encuentra navegador puedes forzarlo con:

$ man --html=<navegador> <comando>

¿Qué son esos números en plan chmod(2) que salén en las páginas man algunas veces?

Pues son otras páginas sobre un comando (si se usa por ejemplo en C):
Sección – Descripción

  1. Comandos Generales
  2. Llamadas al sistema
  3. Biblioteca C de funciones
  4. Ficheros especiales (normalmente dispositivos, que se pueden encontrar en /dev) y drivers
  5. Formatos de fichero y convenciones
  6. Juegos y salvapantallas
  7. Miscelánea
  8. Comandos de administración del sistema y Demonios

Y para abrir por ejemplo chmod(2) es:

$ man 2 chmod

Y finalmente para buscar entre todas la páginas man que hay instaladas, un texto en especial es:

$ man -wK <texto buscar>

Te devuelve una lista de ficheros que cada linea es:

<path_man>/man<num_página>/<nombre_página>.<num_página>.gz

Por ejemplo para:

$ man -wK game

Devuelve una lista larga (en mi caso porque cada programa puede instalar su página de manual), y la última linea mia pone:

/usr/share/man/man7/tc-hfsc.7.gz

Y para abrirlo:

$ man 7 tc-hfsc

Por cierto hay commandos que no tienen binarios en el sistema por ejemplo el cd (que es como una función de bash), si haces:

$ whatis cd
cd: nothing appropriate.

Si haces por ejemplo un:

$ whatis ls
ls (1) - list directory contents

Y para ver ayuda del cd es en la página builtins:

$ man builtins

Alternativas a man

Hay un montón, parece que cada lenguaje moderno se a quedido hacer su própia alternativa…usando su sistema de paquetería, que si python, que si ruby, que si nodejs…

Las voy a dividir en si necesitas internet o no (una vez instaladas para instalarlas sera necesario internet), por si estas en un bunker soviético sobreviviendo al desastre nuclear por culpa del capitalismo e internet no existe…quiza packet rádio sigue ahí.

Por cierto un truco para comprobar si un comando necesita internet es usar

unshare -r -n <comando>

Alternativas de ayuda en GNU/Linux con internet

Bropages

Son listados de ejemplos de comandos, porque algunas veces se aprende mas fácilmente viendo ejemplos que leyendo tochazos de documentación. Además incluso puedes votar los ejemplos. El nombre de bro es por el rollo ya de hace unos años de la invasión por chulos de discoteca en las carreras de ingenieria dejando a parte a la fauna friki y que se les llamo brogramers gente mas interesada en el gimnasio que en el dado de 20 caras.

Esta ayuda se instala con el sistema de paquetes de Ruby, que se llama gem, para instalar gem (en Debian/Ubuntu) es:

$ sudo apt install ruby
$ sudo apt-get install ruby-dev

Y después:

$ sudo gem install bropages

Para usarlo es tán fácil como:

$ bro <comando>

Se pueden botar las chuletas, pero  creo que hay que registrarse.

cheat.sh

Este es curioso porque puede consultarse vía nuestro gran amigo el comando curl como un servicio, pero te lo pinta con colores (que queda todo mas hacker) y todo en terminal. O descargarse un bash que te da una shell para hacer las consultas. Tiene su propio «lenguaje de consultas» por ejemplo:

$ curl cheat.sh/

Devuelve una tabla de ayuda muy vistosa de como funciona cheat.sh .

Te devuelve ejemplos de la llamada de php

$ curl cheat.sh/php

Te devuelve ejemplos de zip.

$ curl cheat.sh/php/zip

Para listar terminos posibles en cada rama que hay se puede hacer con:

$ curl https://cht.sh/:list
$ curl https://cht.sh/php/:list

Ayuda

$ curl https://cht.sh/:help

Incluso por lenguaje

$ curl https://cht.sh/php/:help

También te da un articulo o bigcheatsheet como lo llaman ellos sobre variados temas del lenguaje:

$ curl https://cht.sh/php/:learn

Para buscar en todos los articulos es:

$ curl cheat.sh/~list

Para descargar el bash es tan fácil como:

$ curl https://cht.sh/:cht.sh > ~/bin/cht.sh

Para ejecutar

$ bash curl cheat.sh

Y te da una shell para ir de forma interactiva.

Alternativas de ayuda en GNU/Linux sin internet

Cheat

También devuelve listados de ejemplos de un comando, este se instala con pip el sistema de paquetes de Python. Al no necesitar conexión a internet, los listados de ejemplos se actualizan con cada nueva versión del paquete cheat.

Para instalar pip (para python3) es:

$ sudo apt install python3-pip

Y para instalar cheat es:

$ sudo pip3 install cheat

Para usarlo es realmente fácil con:

$ cheat ls

TLDR

Otra ayuda para comandos en terminal programada en nodejs (javascript) y por lo tanto para instalarla es con su gestor de paquetes npm. También es un listado de ejemplos de comandos como el resto. Su nombre viene «too long didn’t read» en español «demasiado largo; no lo leí». Lo meto en la categoría «sin conexión» pero es no es cierto del todo porque este tiene una cache de ayudas de comandos, que se descarga la primera vez que lo usas y que puedes actualizar de vez en cuando.

Para instalar npm te recomiendo el siguiente link de como instalar npm en Ubuntu/Debian ya que siempre es un poco jaleo de instalar

Y para instalar tldr es:

$ sudo npm install -g tldr

Y usarlo es:

$ tldr <comando>

Y actualizar la cache:

$ tldr --update

Tiene una cosa curiosa como mostrar un commando al azar (por aprender mola) que es así:

$ tldr --random

Incluso lo puedes «pipear» con cowsay y queda una cosa muy hacker y curiosa:

Resumen

El mundo de software libre siempre hay alternativas mas o menos curiosas a todo. Y además se ve que lo estándar es importante, porque las páginas Man ya pronto tendrán 50 años.

Lo cierto, a nivel personal, tengo instaladas todas estas alternativas pero siempre se me olvidan usar.