La potencia de los recortes de código (snippes)

Un recorte de código es una pequeña plantilla que podemos reutilizar dentro de un editor de textos. Esta plantilla se pega, en el texto que se está editando, al escribir una palabra y pulsar el tabulador. En el siguiente ejemplo, al escribir html5 y pulsar tabulador, se pega la plantilla correspondiente:

Una vez pegada la plantilla se puede ver que al escribir en ciertas partes del texto, el texto se copia a otros lugares de forma automática. Pulsando tabulador, se van saltando a los diferentes campos de la plantilla.

Los recortes de código (snippes) están presentes en numerosos editores de texto como pueden ser Gedit, Vim, Sublime Text, Kate,…

Por ser Gedit un editor de textos muy extendido, en este artículo se va a mostrar cómo se activan y cómo se crean en él los recortes de código.

Activando los recortes en Gedit

Para activar los recortes de código se debe ir al menú “Editar/Preferencias” y en la pestaña “Complementos” activar “Recortes”:

También suele ser práctico activar el “Completado de palabras”.

Viendo los recortes disponibles

En el menú “Herramientas/Manage snippes” se pueden ver los recortes disponibles y la palabra que los dispara:

Como se puede ver en la imagen, para los archivos html se tienen numerosos recortes. En la parte izquierda de la ventana se pueden ver los recortes disponibles y en negrita la palabra que hay que escribir para activarlos. Por ejemplo, si se escribe html5 y se pulsa tabulador, se sustituirá por el texto, la plantilla, que aparece a la derecha. Más adelante nos meteremos en la forma de crear las plantillas.

Usando los recortes

Ya se han localizado los recortes disponibles. Sólo hay que escribir su disparador y pulsar tabulador, pero seguramente que si intentamos usarlos, no funcionen. Cada recorte sólo funciona para el tipo de archivo en el que se haya definido. Por ejemplo, los recortes de HTML sólo funcionarán si el archivo que se está editando se ha almacenado con la extensión html. Los recortes de C++ sólo funcionarán para los archivos con extensión “cpp”.

También podemos forzar el tipo de archivo seleccionándolo en la parte inferior del navegador:

Creando nuestras plantillas

Para crear una plantilla sólo hay que ir al menú “Herramientas/Manage snippes”, seleccionar en la parte izquierda el tipo de archivo para el que se desea crear el disparador y hacer clic sobre el símbolo “+” para añadirlo:

Le pondremos un nombre y en la parte inferior-derecha se escribe el disparador que deseamos que se ejecute. Ahora en la parte superior derecha escribimos el texto que se desea que se introduzca.

Por ejemplo, si se crea el disparador “hola” y en la parte superior derecha se escribe el texto “Hola mundo”, al escribir “hola” y pulsar el tabulador, se escribirá “Hola mundo”.

Pero lo interesante de las plantillas son los campos. Para definir los diferentes campos se usará $1, $2, $3,… una vez insertada la plantilla, al ir pulsando tabulador, el cursor irá saltando a las posiciones marcadas por $1, $2, $3,… Por ejemplo, se crea la plantilla:

Nombre: $1
Primer Apellido: $2
Segundo Apellido: $3
$0

Al insertarla el cursor aparecerá en la posición $1, allí escribimos el dato correspondiente. Si se vuelve a pulsar tabulador, saltará a la posición $2, rellenamos el primer apellido. Si se vuelve a pulsar tabulador, saltará a $3, rellenamos el segundo apellido. Si se pulsa tabulador una vez más, como ya no hay más posiciones a las que saltar, la plantilla se considerará finalizada y saltará a la posición indicada por $0.

Es llamativo que $0 sea la posición final.

Nos fijamos ahora en la siguiente plantilla:

Nombre: $1
Primer Apellido: $2
Segundo Apellido: $3
Nombre completo: $2 $3, $1
$0

Se puede ver que la posición $1 aparece repetida dos veces, eso significa que cuando se rellene el nombre, copiará dicho nombre en el segundo $1. De forma idéntica con $2 y $3:

A veces interesa que ciertos campos ya aparezcan rellenos con algún texto por defecto, para ello se usa la siguiente notación:

${número:Texto por defecto}

Por ejemplo:

${1:Ejemplo de texto}

En el ejemplo que se estaba desarrollando, se puede añadir un último campo, Teléfono, que por defecto muestre el texto “No disponible”:

Nombre: $1
Primer Apellido: $2
Segundo Apellido: $3
Teléfono: ${4:No disponible}
Nombre completo: $2 $3, $1
$0

Un último apunte

Los recortes de código están disponibles en numerosos editores de texto y suelen usar una sintaxis parecida para definir las plantillas, por lo que, en principio, será fácil trasladarlas de unos editores a otros.

El uso de recortes de código hace que la tarea de escribir un texto pueda ser más ágil en el caso de repetir algún cierto patrón de texto. A la hora de programar una página web, un código en C, o algo similar, los recortes de texto disminuyen los errores y ahorran tiempo.

Que los disfrutéis.

Anuncios
Publicado en Software | 1 Comentario

Creando un archivo que se puede leer desde Linux pero no desde Windows

Hace poco, por accidente, creé una archivo que se podía manejar desde Linux, pero Windows no podía con él. La cuestión es bastante sencilla:

Windows usá los dos puntos “:”, para identificar unidades, como por ejemplo, C:, D:, G:,… Por lo tanto el símbolo : no debería usarse en Windows para poner nombres a ficheros.

En mi caso en el nombre del fichero había puesto una hora en el formato: “20:30:00”. Claro, el separador era “:”.

Al llegar a Windows, me encontré que el navegador de ficheros lo listaba pero no lo podía abrir. Daba igual la aplicación que intentase usar. Para colmo el mismo error se producía si intentaba renombrar el archivo desde Windows.

¿La solución? En mi caso me fue más sencillo volver a Linux y cambiar el nombre del archivo.

Publicado en Historias, Software | 1 Comentario

Groff: El procesador de textos que ya tienes instalado

Haciendo un ejercicio de arqueología informática, he estado escribiendo un manual sobre el procesador de textos Groff:

manual_groff.pdf

Escribir este manual ha sido toda una experiencia, pues en muchos casos la documentación que hay en la red sobre este procesador de textos ¡data de los años 70!

Groff es la versión GNU de troff, procesador de textos usado en los antiguos UNIX.

A día de hoy groff está ampliamente superado por LaTEX, pero es ligero, se puede manejar por tuberías y seguramente ya lo tengas instalado por defecto en tu distribución de Linux, porque se usa para generar los manuales que se muestran por el comando “man”. Es muy útil para generar archivos PDF a partir de scripts escritos en bash o python.

Espero que lo disfrutéis.

Publicado en Uncategorized | 2 comentarios

Ejecuta un comando de forma automática cada vez que guardes un archivo

A veces hay que escribir comandos en consola para compilar o procesar unos archivos que se han modificado. Es tremendamente útil que esta operación se haga de forma automática. Por ejemplo, se están editando unos archivos en LATEX, cada vez que guardemos el archivo podemos conseguir que se genere el PDF correspondiente y nos lo muestre de forma totalmente automática.

Este proceso se puede automatizar usando el comando inotifywait. Este comando nos avisa de las modificaciones que se produzcan en el o los archivos que se le indiquen. Para usarlo, se puede usar un script como el que se muestra a continuación. En archivo se introduce el nombre del archivo que se quiere vigilar. En comando el comando que se ejecutará cada vez que haya una modificación:

b=0
inotifywait -m --event modify archivo | while read a ;
do
  if [[ $b -eq 0 ]] ; then
    b=1
  else
    echo $a
    comando
    b=0
  fi
done

Tecleando en un terminal:

man inotifywait

Tendremos disponible la documentación en la que se puede encontrar más opciones y ejemplos  de uso.

Publicado en Software | 1 Comentario

Probando Wayland en Ubuntu 16.04

Hasta ahora para dibujar ventanas en Linux usabamos X11. El protocolo X11 data de mediados de los 80. Esta escala temporal en el mundo de la informática es una barbaridad, por lo que alguien pensó que era hora de actualizarlo.

Wayland va a ser la nueva forma que vamos a tener de dibujar ventanas en Linux. Viene incluido de serie en Ubuntu 16.04 y ya puede ser probado.

Lo primero que hay que hacer es instalar los paquetes necesarios. Para ello se ejecuta:

sudo apt-get install weston 
sudo apt-get install qtwayland5 
sudo apt-get install xwayland libreoffice-gtk3

Una vez instaladas las dependencias necesarias, se procede a configurar Weston. Weston es la implementación por defecto de cómo debería ser un entorno de escritorio bajo Wayland.

Con nuestro editor de texto favorito se va a crear el archivo “~/.config/weston.ini”:

[core]
modules=xwayland.so,cms-colord.so
shell=desktop-shell.so
#gbm-format=xrgb2101010

[shell]
#background-image=/usr/share/backgrounds/gnome/Aqua.jpg
#background-color=0xff002244
#background-type=tile
#panel-color=0x90ff0000
panel-location=top
#locking=true
#animation=zoom
#startup-animation=fade
#binding-modifier=ctrl
#num-workspaces=6
#cursor-theme=whiteglass
#cursor-size=24

#lockscreen-icon=/usr/share/icons/gnome/256x256/actions/lock.png
#lockscreen=/usr/share/backgrounds/gnome/Garden.jpg
#homescreen=/usr/share/backgrounds/gnome/Blinds.jpg
#animation=fade

[launcher]
icon=/usr/share/icons/gnome/24x24/apps/utilities-terminal.png
path=/usr/bin/weston-terminal

[launcher]
icon=/usr/share/pixmaps/firefox.png
path=/usr/bin/firefox


[input-method]
#path=/usr/lib/weston/weston-keyboard
path=/bin/ls


#[output]
#name=LVDS1
#mode=1680x1050
#transform=90
#icc_profile=/usr/share/color/icc/colord/Bluish.icc

#[output]
#name=VGA1
#mode=173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync
#transform=flipped

#[output]
#name=X1
#mode=1024x768
#transform=flipped-90

[libinput]
enable_tap=true

#[touchpad]
#constant_accel_factor = 50
#min_accel_factor = 0.16
#max_accel_factor = 1.0

[keyboard]
keymap_layout=es

[screen-share]
#command=/usr/bin/weston --backend=rdp-backend.so --shell=fullscreen-shell.so --no-clients-resize

Ahora sí. Vamos a ejecutar Wayland. Para ello pulsamos la combinación de teclas “Ctr+Alt+F1”, entraremos en modo consola. Siempre podemos volver al modo gráfico con “Ctr+Alt+F7”. Nos autentificamos y escribimos en el terminal:

weston-launch

Por ahora sólo podemos lanzar terminales, para poder ejecutar otras aplicaciones se abre un terminal dentro de Wayland y se debe escribir:

export QT_QPA_PLATFORM=wayland-egl
export GDK_BACKEND=wayland
export QT_QPA_PLATFORMTHEME=fusion
export QT_STYLE_OVERRIDE=fusion
export SAL_USE_VCLPLUGIN=gtk3

Con esta configuración podemos lanzar aplicaciones desde ese terminal. Vamos a notar diferencia entre las aplicaciones GTK3, Qt5 y X11. Las aplicaciones GTK3 y Qt5 se ejecutarán en modo Wayland nativo. Para las X11 se creará una ventana dentro de Weston, al estilo que usan los Mac. Por ejemplo, se puede ejecutar LibreOffice con el comando “lowriter”. Se puede navegar por Internet con el comando “webbroser”.

Weston trabaja mucho con las combinaciones del teclado, al estilo de Unity. Las más interesantes son:

Ctr + Alt + borrar → Salir de Weston

Super + tab → Cambiar de ventana

Super + rueda del ratón → Zoom

Super + Alt + rueda del ratón → Cambiar opacidad de la ventana

Super + k → Cerrar ventana

Super + s → Hacer captura de pantalla

Super + r → Hacer un vídeo de la pantalla

Toda la configuración de Weston se puede encontrar en el archivo “~/.config/weston.ini”. Para ver el manual de este archivo, se puede usar el comando “man weston.ini”. Aquí se cambian cosas como pueden ser la resolución de la pantalla, el idioma del teclado o la imagen de fondo.

El consumo de RAM es bajo. Una sesión recién abierta de Weston consume 82 Mb. Comparando con X11, una sesión recién iniciada de Openbox consume 96 Mb. Para hacer esta prueba he parado lightdm usando el comando “service lightdm stop”. Como Weston es un gestor de ventanas ligero, por eso lo comparo con Openbox.

He notado que se puede trabajar bajo Wayland, llegando a lanzar documentos de LibreOffice bajo Wayland y trabajar sin problemas. Pero la integración de las aplicaciones con Wayland está todavía muy verde. Supongo que con el tiempo esto se solucionará. De hecho, no he sido capaz de ejecutar Firefox, que suelta una extraña ventana de error. Las ventanas de las aplicaciones GTK3 y Qt5 tienen decoraciones diferentes. La decoración de la ventana también es diferente cuando se lanza una aplicación X11 pura o una aplicación de Weston pura. Por ahora me voy a quedar con X11, pero Wayland será una opción interesante cuando en un futuro se mejore la integración de las aplicaciones.

Publicado en Opinión, Software | 1 Comentario

Mini-manual sobre el formato PDF

Este es un pequeño manual sobre el formato PDF. En la red se pueden encontrar bibliotecas para manejar dicho formato, pero el objetivo un pequeño manual es permitirnos crear nuestros propios archivos PDF usando nuestro editor de textos favorito.

Los ejemplos los podéis descargar desde el siguiente enlace:

https://drive.google.com/folderview?id=0B1x9hVRJS4GmdUZpeVpYR1YzSjQ&usp=sharing

Seguir leyendo

Publicado en Software | 1 Comentario

Adapt: La forma sencilla de instalar paquetes de otra versión de Ubuntu

Adapt es un programa que permite instalar paquetes de otras versión de Ubuntu en la versión que tengamos instalada. Se pueden instalar paquetes de una Ubuntu 15.10 en una Ubuntu 14.04, por ejemplo. Todo esto funciona gracias a contenedores que descargan una versión de la distribución que se haya elegido.

Si queréis saber más sobre adapt os recomiendo leer la siguiente presentación realizada por Dustin Kirkland:

http://people.canonical.com/~kirkland/SCALE%2014x-%20adapt%20install%20anything.pdf

¿Por qué puede ser útil?

La mayoría de las personas tratan de usar las versiones estables de Ubuntu, las LTS. Esto significa que vamos a trabajar con versiones de los programas “estables”. Es decir, que si nuestra Ubuntu 14.04 viene con la versión 4.2 de LibreOffice, aunque salga la versión 5 de LibreOffice, las actualizaciones sólo nos van a permitir instalar la versión 4.2. A no ser que instalemos LibreOffice desde los backports, desde un ppa o bajando el instalador de LibreOffice, seguiremos siempre con la misma versión 4.2 de LibreOffice.

Esto es cierto para casi todos los paquetes de la distribución. Por ejemplo, Firefox sí se actualiza a la última versión que salga, pero LibreOffice no. Esto es así por motivos de seguridad.

Esta forma de gestionar las versiones se hace por estabilidad de la distribución, que es algo muy deseable en servidores, pero puede resultar fustrante para el usuario doméstico.

Si queremos estar siempre a la última, tenemos dos opciones, pasarnos a una distribución rolling-release (que instala siempre las últimas versiones de los programas) o intentamos instalar los paquetes por otros medios.

Ahora aparece adapt que instala un contenedor y dentro de ese contenedor descarga la versión que necesitemos de Ubuntu. Las aplicaciones se ejecutarán dentro de dicho contenedor.

Un contenedor es una forma de virtualización que simplemente le dice a los programas vais a estar confinados dentro de este espacio en el disco duro, vais a poder usar estas conexiones de red, podéis usar estos recursos de CPU y ¡tenéis prohibido salir de ahí! Evidentemente lo que vayamos a ejecutar dentro del contenedor tiene que estar adaptado a funcionar en ese entorno. Es fácil darse cuenta que un contenedor va a usar menos recursos que una máquina virtual de VirtualBox y podemos tener miles funcionando en un servidor.

Para saber más sobre la magia de los contenedores:

https://es.wikipedia.org/wiki/LXC

http://www.ubuntu.com/cloud/lxd

https://wiki.gentoo.org/wiki/LXD

Publicado en Uncategorized | 1 Comentario