Mark Text: Markdown en tiempo real

Hace algún tiempo había escrito sobre Typora un editor de markdown excelente, pero que lamentablemente no es software libre. Pero hace unos días descubrí a Mark Text que hasta donde se es el primer editor de texto libre que interpreta automáticamente markdown. ¿Qué quiero decir con esto? Que si tipeamos lo siguiente:

**importante**

Lo transformará inmediatamente en:

importante

Otras funcionalidades que posee Mark Text son:

  • Autocompleta tags
  • Abre y cierra automáticamente:
  • Comillas ''
  • Corchetes []
  • Paréntesis ()
  • Llaves {}
  • Emojis
  • Resalta código fuente de acuerdo al lenguaje
  • De ser necesario además, propociona una vista en código fuente.
  • Formatea fórmulas matemáticas, por ejemplo, aquí debajo vemos el Teorema de Bayes:

$$P(A_i|B) = \frac{P(B|A_i) P(A_i)}{P(B)}$$

😢 Mark Text llamativamente no interpreta HTML Mark Text interpreta html en bloque, por ejemplo:

<H1>
  Encabezado 1
</H1>

Pero no html crudo:

<H1>Encabezado 1</H1>

Más allá de este y otros glitches no invalidan esta aplicación, y teniendo en cuenta la gran comunidad que tiene seguramente se convertirá en una gran alternativa para Typora.

Fuente de los "Hola Mundo": Anexo:Ejemplos de implementación del «Hola mundo» - Wikipedia, la enciclopedia libre

Como medir la memoria compartida

Medir la memoria RAM es una tarea complicada. Podemos ejecutar el comando ps y somar los valores de una determinada columna, pero no nos va a dar el resultado correcto. Los sistemas operativos actuales como Linux usan memoria virtual, esta les permite utilizar parte de la memoria RAM que necesita cada aplicación y sobreasignar la cantidad de memoria RAM, simulando que poseen mucha más memoria. Además, la mayoría de los programas usan librerías compartidas. Entonces al abrir otra aplicación que usa la misma librería que otro programa en ejecución ahorra cierta cantidad de memoria RAM. Por ejemplo, supongamos que queremos ver la cantidad de memoria que consume Firefox, si lo intentamos con ps:

ps -Cfirefox -o vsz --no-headers | awk '{ sum += $1 } END { print sum/1024/1024 }'

Eso da como resultado (en este caso particular) 3.75465 GB ¿Parece mucho, no?

En realidad ese resultado es poco significativo. El campo vsz es el tamaño de la memoria virtual que usa un proceso. Esto es: la memoria física realmente utilizada más memoria que el proceso puede llegar a necesitar en algún momento, más la memoria swap empleada.

Podríamos medirlo con un parámetro un poco más exacto tal como ls RSS. RSS (Resident Set Size) es la cantidad de memoria asignada a ese proceso y está en RAM. No incluye swap. Incluye la memoria de librerías compartidas siempre que las páginas de esas librerías estén en memoria.

Estos serían los resultados

pgrep -f /usr/lib64/firefox | xargs ps -o rss --no-headers | awk '{ sumrss += $1 }  END { print sumrss/1024/1024  }   '
2.92811

Pero existe una herramienta llamada smem que mide valores más útiles, estos son PSS y USS. PSS divide los bloques de memoria virtual compartida por la cantidad de procesos que en ese momento tienen una entrada en la tabla que traduce direcciones virtuales a físicas para la página. Dicho de otro modo la memoria compartida se divide por la cantidad de procesos que la usan.

Además, smem informa acerca de USS que es la memoria que no está compartida con otros procesos.

smem -tk -P/usr/lib64/firefox

Como se puede apreciar una diferencia de 17% respecto a la RSS

Además, smem puede mostrar la información de manera gráfica:

Fuentes y recursos adicionales

ranger

ranger es un gestor de archivos de consola con atajos de teclado de VI. Proporciona una interfaz minimalista y bonita basada en curses con una vista en la jerarquía de directorios. Viene con rifle, un lanzador de archivos bueno para encontrar cual programa usar para cada tipo de archivo.

Tenemos entonces un administrador de archivos fácilmente mantenible en un lenguaje de alto nivel. Una manera rápida de cambiar de directorios y navegar el sistema de archivos. Es pequeño pero útil, hace una cosa y la hace bien. Al estar basado en la consola, con una fácil integración en la shell de unix.

Desde ranger podemos ir a una shell (S mayúscula mediante) y volver a ranger (con exit). Además, posee atajos similares al viejo Midnight Commander con las teclas de función. Mediante w3m-img podemos previsualizar imágenes. Además, buscar archivos, cambiar archivos, crear directorios, renombrar archivos, etc.

No reemplaza a herramientas gráficas como Dolphin, pero sin duda es bueno tenerlo a mano cuando necesitamos la rapidez y la eficacia de la consola de texto.

Enlaces

Latte Dock

De acuerdo a su descripción:

Latte Dock es una barra de tareas basada en los frameworks de plasma que proporciona un elegante e intuitiva experiencia para las tareas y plasmoides. Anima sus contenidos por medio de efectos de zoom parábolico e intenta aparecer solamente cuando se la necesita.

Latte Dock fue creado por Michail Vourlakos. Creo que es un buen candidato a ser el panel predeterminado en KDE Plasma. Si bien faltan pulir algunas cosas, es muy configurable, relativamente fácil de usar y muy elegante. Tiene al menos 3 esquemas de configuración (además de uno personalizado): Unity - que recuerda al fallido entorno creado por Ubuntu - , Plasma y Extended.

Aquí algunas imágenes del mismo:

Enlaces:

5 ejemplos con journalctl

Las siguientes son ejemplos de consultas que podemos hacer con journaltcl:
  • ¿Cómo busco un comando o aplicación?
    journalctl \_COMM=master
  • ¿Cómo busco un usuario?
  • journalctl _UID=1000”
  • ¿Cómo veo los logs en un intervalo de tiempo?
    journalctl -S 2017-12-11 -U “2017-12-13 12:15”
  • ¿Cómo busco una determinada unidad?
    journalctl -u httpd
  • ¿Cómo veo los (posibles) problemas?
    journalctl -p notice

journalctl

Lo viejo, lo bueno y lo nuevo en Neovim

Características

El editor Neovim se presenta como el sucesor del editor Vim.

  • El conector entre componentes de software, MessagePack de manera eficiente intercambia datos en binario y sirve para intercambiarlos en lenguajes tales como JSON.
  • Los plugins remotos son coprocesos que tienen un canal de comunicación por medio de RPC con el proceso de neovim. Estos plugins además se ejecutan de manera asíncrona, mejorando así el rendimiento.
  • Una configuración predeterminada más potente y amigable.

La configuración predeterminada incluye las siguientes funcionalidades:

  • Cuando se detecta que un archivo ha sido cambiado dentro de Vim, automáticamente lo lee de vuelta.
  • Permite borrar una autoindentación,  saltos de línea y al comienzo de inserción.
  • Ahora los directorios de backup están en ~/.local/share/nvim/backup siguiendo las directrices xdg [^1]
  • Resalta los resultados coincidentes de búsquedas
  • Realiza búsquedas incrementales
  • Muestra siempre la línea de estado
  • Ahora se pueden ver mejor las tabulaciones y espacios al final de cada línea
  • Muestr el comando que se está ejecutando
  • Manejo más inteligente de tabulaciones
  • Asume una terminal de conexión rápida
  • La campanilla está deshabilitada para todos los eventos
  • El directorio para temporales está en ~/.local/share/nvim/swap [^1].
  • El comando display muestra la última línea de los registros.
  • Justifica automáticamente usando el ancho del texto, inserción y borrado inteligente de caracteres de comentarios.

Configuración

  • En $HOME creamos un enlace:

lrwxrwxrwx 1 sergio sergio 19 nov 5 23:30 init.vim -> /home/sergio/.vimrc

  • Y también en $HOME/.config:

lrwxrwxrwx 1 sergio sergio 17 nov 5 23:30 nvim -> /home/sergio/.vim

  • En $HOME/.vimrc
if has(‘nvim’) 
  Plug ‘Shougo/deoplete.nvim’, { ‘do’: ‘:UpdateRemotePlugins’ } 
  Plug ‘vim-airline/vim-airline’ 
else 
  Plug ‘Shougo/deoplete.nvim’ 
  Plug ‘roxma/nvim-yarp’ 
  Plug ‘roxma/vim-hug-neovim-rpc’ 
  python3 from powerline.vim import setup as powerline_setup 
  python3 powerline_setup() 
  python3 del powerline_setup 
  set laststatus=2 
  set t_Co=256 
endif 
 
let g:deoplete#enable_at_startup = 1 
 
neoterm 
Plug ‘kassio/neoterm’ 
 
“call vundle#end()            “ required 
call plug#end() 

Nuevas funcionalidades provenientes de plugins

Algunos de estos plugins son:

  • far.vim: Buscar y remplazar, abre un panel de vista previa.
  • deoplete.nvim: Autocompletar.
  • floobits: Etherpad usando neovim.
  • neoterm: Terminal embebida.
    neoterm
  • vim-pandoc: Integración con el conversor de lenguajes de marcas ligeros pandoc.

Conclusión

El editor VIM es una extraordinaria herramienta, no obstante adolece de disparidad en sus configuraciones predeterminadas, algunos inconvenientes de rendimiento e integración con otros componentes de software. Neovim viene a responder a estos inconvenientes y por ahora lo está haciendo muy bien. De hecho, VIM en su versión 8, incorporó muchas mejoras provenientes de Neovim. El tiempo dirá si los proyectos se terminan fusionando. Lo importante es que tenemos una alternativa moderna al casi treintañero VIM.

Notas

[ ^1 ]: Freedesktop.org