Archivo de la categoría: GNU/Linux

Generalidades sobre GNU/Linux.

Presentaciones web a partir de fichero de texto plano

Introducción

Cuando uno va  crear una presentación siempre recurre a programas tipo Powerpoint o -mejor aún- Libreoffice Impress. Estos programas generan un archivo que luego se puede reproducir a pantalla completa en un PC. Dicho PC debe contar con el programa en cuestión para visualizar la presentación o, al menos, de un visor compatible con dicho formato.

Otra posibilidad es genera una presentación para ser visualizada en un navegador web. Algunos programas permiten generar presentaciones de este modo pero, si queremos modificar la presentación, tenemos que tener, igualmente, el programa en cuestión para poder hacer los cambios que queramos para después volver a exportar la presentación en formato html.

A mí me gusta no tener que depender de programas concretos para editar las presentaciones, y tenía pendiente buscar algún mecanismo sencillo para generar presentaciones simples sin tener que estar toqueteando formatos cada 2×3.

Un día, en una presentación Caldum descubrí precisamente lo que andaba buscando: el sistema Slideshow S9.

Slideshow S9 es una solución solución elegante y sencilla para generar las presentaciones a partir de un archivo de texto plano «formateado» (*) usando Markdown.

Markdown

Markdown es un lenguajes de marcas ligero, es decir, un lenguaje más sencillo que otros como html, por ejemplo, que a la hora de editar se hacen más complejos y difíciles de mantener. Para entenderlo más fácilmente, lo mejor es un ejemplo:

Para poner en cursiva algo simplemente lo pondríamos así:

 

*texto a poner en cursiva*

Si queremos poner en negrita algo lo haríamos así:

**texto a poner en negrita**

Si queremos poner una lista no ordenada (la típica de guiones), la pondríamos así:

* Un elemento 
* Otro elemento de la lista

Si queremos hacer una lista ordenada:

1. Elemento 1
2. Elemento 2

Con esto ya os hacéis una idea de lo sencillo que es crear un archivo en Markdown. Si queréis ampliar la información al respecto, os dejo unos enlaces interesantes:

Slideshow S9

¿Pero qué es realmente Slideshow S9? Es un sistema para generar presentaciones html (para visualizarlas en un navegador web) a partir de un archivo de texto en formato markdown (entre otros).

En la web oficial tenéis, además de toda la información sobre el proyecto, un ejemplo de presentación en texto plano que os recomiendo que probéis para ver lo fácil y cómodo que es crear presentaciones usándolo.

Lo primero que necesitáis si queréis usarlo es instalarlo en vuestro sistema. Slideshow S9 está escrito en Ruby que se puede instalar usando el sistema de gestión de paquetes de Ruby llamado RubyGems. Para ello usaremos -como root- la aplicación gem, que es como se llama el programa que permite usar RubyGems en Linux:

# gem install slideshow

Una vez instalado, para crear una presentación a partir de un fichero de texto plano (podéis usar, insisto, el ejemplo que viene en la web oficial), haríamos esto:

$ slideshow2.0 build presentacion.txt

Ahora abrimos el fichero «presentacion.html» en el navegador y podremos ver la misma. Para poder avanzar y retroceder podemos usar distintas teclas, entre otras:

Action Key
Siguiente transparencia Space Bar, Right Arrow Down Arrow, Page Down
Anterior transparencia Left Arrow, Up Arrow, Page Up
Primera transparencia Home
Última End

Plantillas

El aspecto de la presentación es demasiado simple, pero podemos cambiar su aspecto sin más que usando alguna de las plantillas que hay disponbiles. Ésta es una de las cosas más interesantes que tiene este sistema, que se pueden usar montones de plantillas de forma muy sencilla, cambiando así el aspecto global de la presentación.

Las plantillas tenemos que instalarlas primero, pero su instalación no podría ser más sencilla. Primero ejecutamos este comando para actualizar el sistema de paquetes de RubyGems y que tenga en cuenta todos los últimos cambios en el mismo:

$ slideshow2.0 update

A continuación ejecutamos esto para instalar la plantilla:

$ slideshow2.0 install PLANTILLA
 
 Plantillas buenas: impress.js, deck.js, shower... Ejemplo de instalación de la plantilla "shower":
$ slideshow2.0 install shower

Ahora, si queremos generar una presentación usando una plantilla haríamos esto (en este caso usaremos la plantilla «shower»):

$ slideshow2.0 build presentacion.txt -t shower

Con este comando podéis ver qué plantillas tenéis instaladas:

$slideshow2.0 list

Podéis encontrar más plantillas aquí y más info sobre las mismas aquí.

Conclusiones

  • Si necesitáis hacer una presentación que se pueda visualizar sin problemas en cualquier equipo sin depender de que tenga tal o cual software,
  • si os gusta trabajar en texto plano para poder editarlo fácilmente,
  • si no queréis perder mucho tiempo en los formatos de las presentaciones y
  • si queréis automatizar al máximo la creación de presentaciones sencillas…

… ¡no dejéis de probar Slideshow S9!

 

(*) Lo entrecomillo porque realmente el formateo lo aplicamos a la vez que vamos escribiendo (una vez que conocemos el lenguaje Markdown y tenemos una cierta experiencia en su uso).

Autotexto en GNU/Linux (III)

En los dos anteriores artículos vimos cómo mejorar nuestra productividad a la hora de escribir textos repetitivos.

El primer método lo hacía con combinaciones de teclas. El segundo mejoraba éste ya que simplemente poniendo una sencilla abreviatura, ésta se expandía al texto que queríamos mostrar. Sin embargo, este último método era válido sólo para el editor emacs. En este artículo vamos a ver cómo hacer esto último pero ya siendo válido para cualquier aplicación de GNU/Linux que usemos.

Existe una aplicación fantástica en Linux que permite hace estas cosas de forma muy sencilla llamada Autokey.

En la propia web oficial del proyecto podéis ver cómo instalarlo desde repositorios para Debian/Ubuntu.

En mi caso (openSUSE 13.1) me he descargado los fuentes y lo he instalado así:

python setup.py install

Hay que ejecutarlo como root (o usar sudo) para que puedan copiarse los ejecutables en los directorios correspondientes.

Para ejecutarlo tenéis dos posibilidades: autokey-gtk y atuokey-qt. Como yo uso KDE he optado por la segunda opción. Para que ésta funcione hay que instalar las siguientes dependencias:

python-xlib
python-pyinotify
python-qscintilla

Para la de gtk no he probado así que no os puedo decir qué dependencias tiene exactamente. Al final, es lo mismo, porque simplemente se trata de un interfaz (gtk o bien qt) que usan la misma configuraicón (almacenada en $HOME/.config/autokey).

En esta interfaz podéis definir los textos e incluso ejecutar scripts. Por ejemplo, además de textos «estáticos» podéis hacer que cuando pulséis una abreviatura se inserte la hora actual. Tenéis ya definidos algunos ejemplos que os valdrán para probar la aplicación. Crear vuestras propias frases es bien sencillo:

  1. Pulsamos en File–> New –> Phrase (*)
  2. En el cuadro de texto escribís la frase que os interesa (puede ser una frase, un párrafo -con intros-… lo que queráis)
  3. Luego pulsáis en la parte inferior donde «Abbreviations», en concreto, en el botón de la derecha llamado «set». Ahí se os abre una ventanita para meter las distintas abreviaturas que queréis que «disparen» el texto.

Es muy completa la aplicación. Entre otras cosas, podéis:

  • Insertar un párrafo usando distintas abreviaturas
  • Especificar si queréis que haya que pulsar espacio tras la abreviatura o no
  • Ignorar mayúsculs/minúsculas a la hora de escribir las abreviaturas
  • Asignar combinaciones de teclas
  • Restringir la abreviatura para que sólo funcione en ciertas aplicaciones (opción «Window filter»)
  • Lo mejor: podéis crear scripts en python para hacer cualquier cosa que queráis que se inserte automáticamente. En la aplicación vienen varios ejemplos, pero las posibilidades son infinitas.

Esto último (creación de scripts) es una parte muy potente que os permitirá conseguir casi cualquier dato para insertarlo en vuestros documentos. Por ejemplo, esto sería para introducir la fecha (viene por defecto ya definida en los scripts de python):

output = system.exec_command("date")
keyboard.send_keys(output)

De esta forma, se puede ejecutar cualquier comando que queráis. Por ejemplo:

output = system.exec_command("ls $HOME")
keyboard.send_keys(output)

Obviamente, el script puede ser tan complejo como queráis. Se pueden hacer cosas interesantes como ésta (viene en los ejemplos de la aplicación):

choices = ["This is the option 1", "This is the option 2", "This is the option 3"]

retCode, choice = dialog.list_menu(choices)
if retCode == 0:
   keyboard.send_keys("You chose " + choice)

En este caso, se muestra una lista donde podemos elegir la frase a insertar. Podéis modificarla y personalizarla con tantas opciones como queráis.

Aquí os dejo una captura de pantalla (usando la interfaz Qt):

Autokey

Autokey

Es una de las aplicaciones más útiles para GNU/Linux que he encontrado desde que lo uso (hace casi 15 años, allá por el 99 con RedHat Linux 6 -cuando aún no era Enterprise, ni existía Fedora, ni mucho menos Ubuntu…-).

Si sois desarrolladores podéis usarla para insertar code snippets, es decir, trozos de código que repetitivo que siempre tenéis que estar tecleando cada vez (por ejemplo, los includes típicos de una aplicación, la plantilla para empezar una función en un lenguaje determinado, definición de clases, …).

Si queréis más info, además de la web oficial (donde hay una wiki con ejemplos, manuales, FAQ…), os recomiendo que echéis un vistazo aquí, donde tenéis una descripción muy completa de la aplicación.

NOTA: en las primeras pruebas he detectado que si metéis un espacio en una abreviatura al programa no le sienta muy bien, así que cuando pongáis una abreviatura tecleadla y seguidamente pulsad intro. Ya está ;-).

 

(*) Sí, el programa está entero en inglés, pero es bastante intuitivo.

Autotexto en GNU/Linux (II): Abreviaturas en Emacs.

En el anterior artículo vimos una forma de insertar autotexto en distintas aplicaciones de GNU/Linux.

En esta entrega vamos a ver cómo hacer esto pero dentro de nuestro editor favorito: emacs.

Las abreviaturas en emacs son expresiones o palabras que se expanden en frases o cadenas que elijamos. El objetivo es ahorrarnos caracteres a la hora de tipear y, por tanto, acelerar nuestra escritura (y, por ende, nuestra productividad). Ejemplo: escribimos mucho nuestro nombre completo, así que definimos una abreviatura de forma que cuando tecleemos (por ejemplo) «nn» sin comillas, al pulsar espacio o intro se expanderá a nuestro nombre completo. ¿Cómo hacerlo? Usando la siguiente combinación de teclas:

C-x a i g

Esta combinación define una abreviatura (tenemos que pulsar esto tras escribir la palabra abreviada -en este caso «nn» sin comillas y sin poner espacios; al hacerlo nos pide que metamos la frase a abreviar, en este caso nuestro nombre completo). La letra «g» en la combinación de teclas es para que las abreviaturas estén disponibles para todos los buffers. Si por alguna razón queréis que sólo estén disponibles para un buffer usad «l» en su lugar.

Una vez creada (podemos crear tantas como queramos), si probamos a escribir «nn» no se sustituye por nuestro nombre, ¿por qué? Pues porque tenemos que estar en el modo menor Abbrev-mode. Activarlo con m-x Abbrev-mode y veréis qué bien!

Para eliminar las abreviaturas definidas:

M-x kill-all-abbrevs

Si queréis que esto esté siempre disponible cuando arranquéis emacs se pueden meter en el archivo de configuración .emacs.el.

Aunque esta funcionalidad es bastante práctica, en un próximo artículo os comentaré otro método que permite usar abreviaturas de esta forma (*) pero para todas las aplicaciones del sistema, lo cuál mejora bastante lo comentado en este artículo.

 

(*) autoexpandiendo el texto automáticamente al introducir una abreviatura y, por tanto, sin necesidad de usar combinaciones de teclas como en un artículo anterior (usando xclip).

Autotexto en GNU/Linux (I)

Ya os hablé hace tiempo de autohotkey. Es una aplicación para windows que permite automatizar acciones comunes mediante atajos de teclado.

En Linux también existe otra utilidad similar pero de ella os hablaré en otro artículo. Aquí os voy a contar cómo automatizar la introducción de textos de forma automática, con sólo pulsar unas combinaciones de teclas.

La idea es la siguiente:

  1. Existen unos textos, unas líneas, unas frases… que repetimos con cierta asiduidad y queremos no tener que teclarlas de nuevo cada vez.
  2. Creamos un script donde metemos los textos «maestros» que vamos a insertar en nuestros documentos, archivos, etc.
  3. Asignaremos combinaciones de teclas (*) para cada texto distinto de forma que cuando queramos que se inserte dicho texto donde tengamos el cursor en ese momento (puede ser una web, un cliente de correo, un procesador de texto e incluso la shell de comandos, por citar algunos ejemplos).

Para conseguir esto de una forma sencilla usaremos el comando xclip. Este comando permite trabajar con el portapapeles de Linux. Así, si ejecutamos esto:

echo CADENA | xclip -selection clipboard

lo que estamos haciendo es que la cadena CADENA se inserte cuando pulsemos pegar desde el portapapeles («clipboard» en inglés).

Así pues, para insertar textos, lo que haremos es pulsar una combinación de teclas y luego darle a pegar (que también podemos hacer con la combinación Control+V ó Control+Y si estamos en emacs, como bien sabéis).

CAD_00="Ésta es la cadena de ejemplo 0"
CAD_01="Ésta es la cadena de ejemplo 1"
CAD_02="Ésta es la cadena de ejemplo 2"
CAD_03="Ésta es la cadena de ejemplo 3"
CAD_04="Ésta es la cadena de ejemplo 4"
CAD_05="Ésta es la cadena de ejemplo 5"
CAD_06="Ésta es la cadena de ejemplo 6"
CAD_07="Ésta es la cadena de ejemplo 7"
CAD_08="Ésta es la cadena de ejemplo 8"
CAD_09="Ésta es la cadena de ejemplo 9"

CAD_ERROR=".-.Null.-."
case $1 in
 1)
 echo $CAD_01 | xclip -selection clipboard
 ;;
 2)
 echo $CAD_02 | xclip -selection clipboard
 ;;
 3)
 echo $CAD_03 | xclip -selection clipboard
 ;;
 4)
 echo $CAD_04 | xclip -selection clipboard
 ;;
 5)
 echo $CAD_05 | xclip -selection clipboard
 ;;
 6)
 echo $CAD_06 | xclip -selection clipboard
 ;;
 7)
 echo $CAD_07 | xclip -selection clipboard
 ;;
 8)
 echo $CAD_08 | xclip -selection clipboard
 ;;
 9)
 echo $CAD_09 | xclip -selection clipboard
 ;;
 0)
 echo $CAD_00 | xclip -selection clipboard
 ;;
 *) 
 echo $CAD_ERROR | xclip -selection clipboard
 ;;
esac

Ahora simplemente asignamos una combinación de teclas para cada una de las 10 cadenas (podemos poner más cadenas ampliando el case a partir del 10 en adelante) de tal forma que, al pulsarla, se ejecute el script con el argumento X (donde X es un número de 0 a 9 en este caso o de 0 a … donde queráis si lo ampliáis).

Con esto ya tenéis el texto en el portapapeles. Ahora sólo os queda pegar donde queráis con Control+V.

Podéis usar caracteres especiales e incluso el intro (\n) en vuestros textos.

Esta solución es sencilla, práctica y seguro que ayudará a aumentar vuestra productividad. Sin embargo, hay otras posibilidades aún más interesantes que veremos en próximas entregas. ¿Os las vais a perder?

 

(*) Combinaciones de teclas, hotkeys, shorcuts… todas estas expresiones se refieren a lo mismo.

KDE4 Service Menus

¿Qué son los Service Menus? Pues algo muy práctico, son menús contextuales con los que podemos hacer cositas con nuestros archivos con un simple clic de ratón.

Hace tiempo usé Thunar, un explorador de archivos sencillo pero con características muy interesantes, como la posibilidad de crear «Custom Actions», es decir, acciones personalizadas para el menú contextual.

Los Service Menus son esto mismo pero para KDE4. Funciona tanto para Dolphin como para Konqueror.

Ejemplos de Service Menu los podéis ver fácilmente al hacer clic con el botón derecho sobre un archivo comprimido, por ejemplo. Os aparece un submenú llamado Extraer, que tendrá dentro opciones como «Extraer Archivo a…», «Extraer Archivo aquí…», etc.

Lo interesante es que podemos crear nuestros propios Service Menus de tal forma que podemos ampliar el abanico de acciones a ejecutar sobre distintos tipos de archivos e incluso con directorios.

Los Service Menus se crean con un archivo .desktop donde se especifica el nombre, descripción, icono, tipos de archivos sobre los que se ejecutará y qué acciones concretas se aplicarán. Aquí explican muy bien cómo crear uno de ejemplo.

También podéis descargar Service Menus desde Kde-apps.org. Yo he probado éste y es bastante completo. Añade muchas funcionalidades para trabajar de forma rápida, cómoda y sencilla con ficheros de tipo pdf.

Por último, comentar que alguien ha creado también un editor de Service Menus, que os puede facilitar la tarea de añadir nuevas acciones y no tener que trabajar con los archivos .desktop. Podéis descargarlo aquí.

Monitorizando el consumo de red en nuestro equipo GNU/Linux (III)

Hemos hablado ya de las utilidades iftop iptraf. En esta entrada os quiero mostrar una muy sencilla y muy práctica que permite saber rápidamente qué procesos están consumiendo más ancho de banda sin necesidad de usar otras terceras aplicaciones.

La aplicación se llama nethogs. Se encuentra disponible en las distribuciones más importantes y para ejecutarla, simplemente pondremos:

nethogs INTERFACE

Por ejemplo:

nethogs eth0

o en mi caso:

nethogs enp2s0

Al arrancar la aplicación se muestra con este aspecto:

nethogs

Ejecución de nethogs (*)

Como se aprecia, se puede ver fácilmente qué procesos están usando la red y la velocidad con la que lo están haciendo.

Poco más que decir sobre esta aplicación. Muy sencilla y muy fácil de usar.

 

(*) Imagen descargada de la web -sourceforge-.

Monitorizando el consumo de red en nuestro equipo GNU/Linux (II)

En el anterior artículo vimos cómo usar iftop para monitorizar el consumo de ancho de banda en nuestro equipo GNU/Linux.

Hoy vamos a ver otro comando interesante: iptraf.

iptraf es una utilidad muy completa para monitorizar el consumo de ancho de banda actual en nuestras interfaces de red así como mostrar estadísticas de uso de las mismas.

Al arrancarlo sale una interfaz tipo curses, que permite seleccionar con los cursores del teclado la opción que queremos. Una opción que muestra bastante información es la de Detailed interface statistics, que muestra algo así:

Ejecución de iptraf

Ejecución de iptraf (*)

También es interesante la primera opción IP traffic monitor, que muestra las conexiones TCP junto con las estadísticas de paquetes y bytes enviados tanto en un sentido como en otro.

Espero que os resulte útil.

 

(*) Imagen descargada desde la web oficial de iptraf.

Monitorizando el consumo de red en nuestro equipo GNU/Linux (I)

Si nos interesa saber qué ancho de banda se está consumiendo en nuestro equipo Linux podemos hacerlo de forma muy sencilla usando la aplicación iftop.

iftop es una sencilla aplicación que funciona en modo texto y que, por tanto, podemos lanzar en cualquier sesión de terminal que tengamos abierta.

Está disponible para las distribuciones más importantes. Al arrancar la aplicación tiene este aspecto:

Ejecución de iftop (screenshot de la web oficial)

Ejecución de iftop (*)

Como vemos, nos muestra una lista de IPs origen e IPs destino que detecta nuestra tarjeta de red y qué cantidad de tráfico estamos enviando/recibiendo. Nos muestra 3 columnas a la derecha, en las cuáles nos informa el tráfico enviado/recibido en los últimos 2, 10 y 40 segundos.

Es algo parecido a lo que hace top con los recursos del sistema pero ésta aplicación lo hace con el consumo de ancho de banda.

En las dos últimas líneas nos muestra el tráfico acumulado (tanto recibido como enviado) desde que hemos arrancado la aplicación, los picos de tráfico y también el total de enviado y recibido en los últimos 2, 10 y 40 segundos.

Una vez que lo arrancamos tenemos varias opciones útiles, como por ejemplo:

t: Cambia el aspecto (sólo tráfico enviado, sólo recibido, ambos en una línea, ambos en 2 líneas)
p: Muestra los números de puerto
n: No resuelve los nombres de host (muestra las IPs)
T: muestra una columna adicional con los totales acumulados para ese tráfico
l: permite hacer filtros introduciendo la cadena por la cuál queremos filtrar
?: muestra la ayuda (todas las teclas y sus funciones)

Usad la opción «?» para ver todas porque hay muchas más opciones. Por ejemplo, también son útiles las que permiten ordenar el resultado por una u otra columna (con «<» y «>»).

Se puede arrancar ya la aplicación con unos parámetros. Por ejemplo, si sabemos que no queremos que resuelva los nombres podemos arrancarlo con la opción -n. Con el comando man podéis indagar más sobre todas las opciones disponibles.

Es muy útil para poder saber, en un momento en el que notáis que las descargas o la navegación web -por ejemplo- van más lentas de lo normal.

 

(*) Imagen descargada de la wikipedia.

Monitorizando vuestro equipo con «saidar»

En GNU/Linux existen muchas utilidades para monitorizar los distintos parámetros que miden la actividad y el estado del sistema, como consumo de CPU, de memoria, lectura/escritura en discos, uso de la red, etc.

Normalmente, cada una de estas utilidades monitoriza unos parámetros en concreto, por lo que si queremos ver otros tenemos usar otras utilidades. Esto no tiene por qué ser un problema, porque a uno le puede interesar consultar unos parámetros en un momento y otros en otro. Sin embargo, si queremos ver todos (*) podemos usar una herramienta como «saidar».

Saidar nos muestra en un formato de texto aunque fácilmente legible, consumo de CPU, de memoria, de red, uso de disco duro, entre otros. Para instalarlo, simplemente usar el gestor de paquetes de vuestra distro y lo tendréis. Si no os lo encuentra pensad en cambiar de distro ;-P. Ubuntu y OpenSuse, por ejemplo, lo tienen.

Al ejecutar el comando «saidar», aparecerá algo así:

Salida del comando saidar

Salida del comando saidar

Como vemos, con esta utilidad podemos observar, de un vistazo, algunos de los parámetros más importantes que muestran el estado de nuestro equipo.

Un aspecto a tener en cuenta respecto a la información suministrada sobre la memoria usada/libre: la información es correcta, por supuesto, pero hay que tener en cuenta que Linux usa memoria libre para optimizar procesos del sistema como vimos en el anterior artículo.

El comando se puede dejar lanzado en una terminal y va actualizando cada 2 segundos.

 

(*) Realmente no son todos los parámetros del sistema, sino algunos de los parámetros más significativos.