Backup-remoto con autolimitación de ancho de banda

El siguiente comando, de una única línea parece que hiciera magia:

 tar -cj /backup | cstream -t 777k | ssh host 'tar -xj -C /backup'

Explicación:

tar -cj : (j) comprime con bzip el directorio backup, (c) y lo empaqueta en un único archivo cstream -t 777k : limita la transferencia del contenido que le llega (el archivo empaquetado) a 777 kbps ssh host ‘tar -xj -C /backup’ : se conecta por ssh al host destino y desempaqueta+descomprime el archivo bzip de backup que le llega en un directorio con el mismo nombre.

cstream es una joya que acabo de descubrir, al igual que el comando que he explicado, gracias a la excelente base de datos de comandos para administradores Linux que es commandlinefu.com

Plegar y desplegar secciones de texto en Vim

Supongamos que tienes 4 secciones en tu documento de texto. Quieres centrar tu atención sólo en la sección 2, de tal forma que el resto de secciones, queden plegadas. Puedes ver en la imagen adjunta lo que buscamos. Esa funcionalidad se conoce como «Code folding». Pero para los no iniciados, mejor plegar o desplegar secciones de texto. ¿Cómo se hace en Vim? Fácil. Seleccionas las líneas que quieras plegar (en modo Visual) y pulsas zf (la z la puedes recordar porque su forma parece que forme un pliegue) Para abrir un pliegue, pulsa zo (open). Para cerrarlo de nuevo zc (close).

Si cierras Vim y lo vuelves a abrir con el mismo fichero de texto, ¿se mantienen los pliegues? Por defecto, NO. Si quieres que se mantengan debes de teclear esto en tu .vimrc:

" Save folds
au BufWinLeave ?* mkview
au BufWinEnter ?* silent loadview

SalesForce compra DimDim

Hemos hablado antes de DimDim en DiarioLinux, una aplicación para web meetings (videoconferencia, pizarra compartida, gestión de usuarios, …) que en su día puso el código bajo una licencia libre . Digo en su día porque llevaba desde 2008 sin actualizar el código de su versión libre, llegado un punto en el que la versión privativa poco o nada tenía que ver con la libre. El caso es que hoy se ha publicado una nota de prensa en la que se indica que SalesForce ha comprado DimDim por 31 millones de dólares en cash. Ahí es nada. SalesForce es una compañía especializada en ofrecer servicios y aplicaciones de cloud computing para empresas. ¿Qué pasará con la versión opensource de DimDim? Nada, seguirá como hasta ahora, es decir, sin recibir aportaciones desde hace años.

Recordemos que hay alternativas libres a DimDim, igual de potentes (aunque gráficamente no tan trabajadas): OpenMeetings y Big Blue Button (ésta última especialmente recomendada para Universidades). Elija la que más le guste 🙂

Vim con shell integrada

Seguimos con configuraciones que hacen de Vim, en mi opinión, un potente IDE. El de hoy es un truquito que permite integrar una terminal dentro de un buffer Vim. Así podréis teclear lo que queráis en uno de los buffers (el superior, por ejemplo) y en el inferior tener abierto el intérprete Bash 🙂 Podéis ver el resultado en la imagen adjunta. Así no tendréis que hacer uso de GNU-Screen o similares.

El procedimiento es sencillo. Basta con instalar el plugin Conque Shell. Y la instalación es de lo más sencillo. Descarga de la URL anterior el fichero Conque Shell.vba (es un archivo Vim Ball, un formato estándar para plugins Vim). Ábrelo en Vim (o en GVim) y teclea

:so %

¡Listo! Ya está instalado el plugin 🙂 Para abrir una nueva shell Bash en la ventana inferior, teclea:

:ConqueTermSplit bash

Hay más comandos y configuraciones Conque que puedes ver en la web del plugin.

Vim: F3 compilar, F4 ejecutar

Para desarrollo uso indistintamente como IDE Eclipse (un verdadero IDE, al que una vez que te acostumbras ya es difícil dejarlo) y Vim. Alguien podría decir que Vim no puede ser considerado un IDE… tal vez sea así, pero desde luego teniendo en cuenta todas las ayudas que ofrece para el desarrollador (ctags, autocompletamiento, gestión de archivos, múltiples buffers en una única ventana, pestañas, code-beautifiers, code-folding, marcadores, plugins…) la frontera entre ser un simple editor de texto y/o un completo IDE de desarrollo cada vez es más difusa. Intentaré comentar en distintos posts algunas de las características que hacen de Vim, en mi opinión, un potente entorno de desarrollo (a costa de tener que aprenderse múltiples comandos y combinaciones de teclas así como de tener un interfaz «bastante» austero, cosa que a veces es bueno y nos permite centrarnos en nuestro código sin distracciones).

Para empezar un sencillo «truco» que permite asignar a la tecla F3 la orden de compilar el código de un programa C, y a la tecla F4 ejecutarlo, todo ello sin abandonar Vim (antes tenía que tener otra ventana abierta, guardar en Vim, compilar en la otra ventana con gcc y ejecutar, en su caso, para volver a la ventana Vim a seguir editando, un tostón vaya). A la chicha: ¿cómo hacer la asignación de teclas? Basta con que en tu archivo $HOME/.vimrc guardes lo siguiente:

map <F3> : call CompileGcc()<CR>
func! CompileGcc()
  exec "w"
  exec "!gcc % -o %<"
endfunc
 
map <F4> :call CompileRunGcc()<CR>
func! CompileRunGcc()
  exec "w"
  exec "!gcc % -o %<"
  exec "! ./%<"
endfunc