Archivo por meses: septiembre 2013

Un poco de… Emacs (IV): Comentarios

Si estáis programando es usual y recomendable (en realidad es ¡imprescindible!) añadir comentarios.

Lo normal es que lo hagáis manualmente tabulando vosotros mismos hasta llegar a la posición que os parece correcta, colocar el símbolo que introduce comentario en ese lenguaje y a continuación teclearlo.

Esto, obviamente, es una incomodidad cuando estás programando mucho tiempo. Lo más cómodo es que se haga de forma automática. Emacs, por supuesto, permite esto de forma sencilla como vamos a ver ahora.

Comentario en una línea de código

Estando situados en la línea de código que queremos comentar, pulsamos: M-; (es decir, la tecla ALT y el símbolo «;», para lo cual tendremos que usar la tecla MAY -ya que si no lo hacemos estaríamos tecleando el símbolo «,» en lugar de «;»).

Si queremos descomentar una línea anteriormente comentada pulsamos: C-u M-;

Comentario de una región de código

Seleccionamos un trozo de código y luego pulsamos -igual que antes- M-;

Para descomentar una región de texto anteriormente comentada pulsamos de nuevo: M-;. En este caso, como vemos, no hay que teclear previamente C-u.

Alguien se preguntará, ¿qué símbolo introducirá emacs para indicar que es comentario? ¿El carácter «#»? ¿El carácter «;»? Pues está claro: introducirá el que convenga en cada momento, y eso lo sabe emacs por el modo que se está usando. Así, si abrimos un archivo .c usará «#» y si abrimos un .el usará «;» para un comentario dentro de una línea y «;;» para comentar la línea entera.

Si tenéis alguna duda, curiosidad, información adicional… dejad un comentario (pero en este caso no hace falta pulsar M-;).

Un poco de… Emacs (III): comandos básicos

Algunos lectores me han sugerido que escriba un poco sobre las operaciones y comandos básicos en emacs, ya que les está costando seguir los artículos de esta serie (un poco de… emacs). De hecho, si no has usado nunca antes emacs, cuando trabajas con él la primera vez tienes dificultades para -por ejemplo- salir de la aplicación si no conoces bien el funcionamiento del mismo.

Aunque ya comenté al principio que esta serie no quería que fuera un tutorial de emacs (más que nada, porque existen muchos ya -y muy buenos- por internet (I)), en este artículo voy a explicar algunos de los aspectos más básicos de emacs. Empecemos.

Estructura de emacs

A continuación mostramos una captura de pantalla de emacs, en concreto en su versión 24, aunque es similar que las versiones inmediatamente anteriores:

emacs1

En la parte superior tenemos el menú y justo debajo una barra de herramientas con las opciones usuales (abrir archivo, guardar, cortar, copiar, imprimir…). Justo debajo tenemos la parte más importante de la aplicación, el buffer, que es precisamente donde escribimos (hablamos de esto más abajo).

En la parte inferior de la pantalla tenemos dos líneas: la superior, llamada «modeline», es donde aparecen los datos del estado (nombre del fichero, número de línea, modo activo -ya veremos qué son los modos en otro artículo-); la inferior, llamada minibuffer, se usa para «hablar» con emacs, es decir, para llamar a las funciones (por ejemplo: print-buffer, para imprimir el buffer actual).

Buffers y ficheros

Cuando arrancas emacs, lo que se muestra es un buffer llamado scratch. Un buffer no es más que el texto que se muestra en emacs. Podéis tener varios buffers abiertos, cada uno para una cosa (uno para escribir un documento, otro para probar combinaciones de teclas y funciones de emacs…).

Un buffer puede estar asociado a un fichero o no. Por ejemplo, si abrimos un fichero en emacs (ver apartado «Funciones más usuales en emacs» para ver cómo hacerlo), lo que hará será crear un buffer con el contenido del fichero. Luego, si modificamos el texto y salimos sin guardar, el fichero estará igual que al abrirlo, es decir, no reflejará los cambios, pero si guardamos, lo que hará es copiar el contenido del buffer en el fichero; dicho con otras palabras, guardará el fichero con las nuevas modificaciones (como en cualquier editor de texto).

Se puede tener un buffer para escribir y no guardarlo, que es lo mismo que abrir otro editor/procesador de texto, escribir en un documento nuevo y salir sin guardar.

Combinaciones de teclas

Emacs está pensado para trabajar 100% con el teclado. Se puede usar el ratón, sí, pero lo cierto es que si estás quitando la mano del teclado para coger el ratón «pierdes tiempo». Si por el contrario aprendes a hacer las cosas directamente desde el teclado, aumentas tu productividad.

En emacs la mayoría de las funciones están asociadas a combinaciones de teclas (II). La simbología usada para representarlas es la siguiente:

C-g     --> Pulsas la tecla Control y, sin soltarla, pulsas la tecla G.
C-x C-f --> Pulsas la tecla Control y, sin soltarla, pulsas la tecla X. A 
            continución, pulsas la tecla Control y, sin soltarla, pulsas la tecla 
            F. Esto es lo mismo que pulsar la tecla Control y, sin soltarla, 
            pulsar la tecla X y, a continuación, la tecla F.
M-x     --> Pulsas la tecla ALT y, sin soltarla, pulsas la tecla X.

Cada función hemos dicho que se puede usar mediante su correspondiente combinación de teclas, pero también podemos llamar a la función directamente mediante el uso del minibuffer.

Arrancando y saliendo de Emacs

Para arrancar la aplicación, nada más simple, o bien desde el menú de aplicaciones (normalmente dentro de la categoría utilidades, o editores, o similar), o bien desde la propia línea de comandos (III):

$ emacs

Para salir de la aplicación pulsaremos la combinación de teclas:

C-x C-c

Si hemos hecho alguna modificación (si hemos escrito algo, vaya), nos preguntará si queremos guardar antes de salir, algo que hace cualquier editor que se precie (incluso Word lo hace :-P).

Funciones más usuales en emacs

Abrir archivo: C-x C-f
Guardar archivo: C-x C-s
Guardar archivo como: C-x C-w

Desplazar cursor derecha: C-f
Desplazar cursor izquierda: C-b
Desplazar cursor línea abajo: C-n
Desplazar cursor línea arriba: C-p
Desplazar cursor principio línea: C-a
Desplazar cursor final línea: C-e

Avanzar cursor una palabra: M-f
Retroceder cursor una palabra: M-b
Situar cursor al principio del texto: M-<
Situar cursor al final del texto: M->

Imprimir buffer actual: M-p
Eliminar buffer actual: C-x k    (IV)
Entrar en el minibuffer para introducir comandos: M-x
Cancelar combinación de teclas: C-g

Muchas combinaciones de teclas, aunque os resultarán extrañas al principio, están estudiadas para que sean sencillas de usar sin necesidad de levantar las manos del teclado. Por ejemplo, para desplazarnos por el documento podemos usar los cursores, pero tenemos que levantar la mano de la posición normal para usarlos. Además, las combinaciones de teclas, en la medida de lo posible, usan un carácter que recuerda la función que realizan. Por ejemplo:

C-f (move Forward)
C-b (move Backward)
C-n (move Next line)
C-p (move Previous line)

Se pueden realizar muchas opciones con los frames y ventanas de forma que podéis dividir una ventana en 2 horizontalmente, abrir un buffer distinto en cada uno, dividir de nuevo verticalmente… pero no vamos a entrar en estos detalles ya que esto pretende ser una pequeña introducción. Otro artículo hablaremos, si procede, de la gestión de frames y ventanas con emacs.

NOTA: Aunque aquí pongo la combinación de teclas, tened en cuenta que cada función tiene un nombre y que podéis ejecutarla directamente en el minibuffer. Obviamente, para las opciones más usuales, lo suyo es usar una combinación de teclas para agilizar, pero si no conocéis la combinación de teclas o bien no hay ninguna asociada, podéis usar la función en el minibuffer. Por ejemplo, para imprimir el buffer podéis introducir la función «print-buffer» (para entrar en el minibuffer podéis pulsar M-x). Otra función que os puede resultar curiosa es «tetris», sin las comillas (que os divirtáis ;-)).

Si comenzáis con una combinación de teclas o bien entráis en el minibuffer y os dáis cuenta que queréis cancelar, que no queréis ejecutar la función que habíais pensado, podéis usar C-g (muy útil).

¿Necesitáis ayuda en emacs?

Como se comenta en la nota (I), existe un tutorial que podéis seguir para adquirir los conceptos básicos (algo como lo que he intentado transmitiros aquí). Podéis acceder a él pulsando C-h t

Si queréis saber qué función realiza una combinación de teclas podéis usar esta función en el minibuffer (ya sabéis: pulsando M-x váis al minibuffer (V)): where-is. Por ejemplo:

where-is <INTRO> print-buffer

os motrará esto:

Print buffer is on M-p.

También os dice cómo encontrar la función dentro de los menús de la aplicación.

Si, por el contrario, queréis saber qué función hay asociada a una combinación de teclas, usaréis la siguiente función: describe-key. Ejemplo:

describe-key <INTRO> M-p

que abrirá otro buffer (en un frame nuevo -veremos esto en otro artículo-) mostrándonos la información requerida.

También es posible que nos suene un comando, una palabra, pero no sabemos ni la combinación de teclas ni el nombre exacto de la función. En este caso podemos usar la función «apropos». Ejemplo:

apropos <INTRO> print

Esto nos mostrará todas las funciones que contienen «print» en ella.

Conclusión

Con este pequeño artículo quería mostraros unas pequeñas pinceladas sobre cómo funciona emacs. Obviamente, me he dejado muchas, muchísimas cosas en el tintero, pero para una introducción sencilla creo que no son necesarias (echarían a muchos para atrás ;-)).

A partir de aquí, si os pica el gusanillo de emacs, podéis echarle un vistazo al tutorial de emacs (recordad: C-h t). En internet tenéis mucha información. También hay libros, de los que yo os recomiendo «Learning GNU Emacs -Third Edition-«.

En esta misma web intentaré escribir de vez en cuando -cuando el tiempo me lo permita-, artículos sobre emacs, sobre cosas concretas, así que si os gusta emacs… ¡no os los perdaís! 😉

Por último, os dejo una hoja de referencia con las combinaciones de teclas y más usuales para que la imprimáis y la tengáis cerca de vuestro equipo para consulta. Es la que viene con la propia instalación de emacs. Aquí la tenéis de la página oficial de GNU, donde viene la misma hoja pero en plan… «envejecido» (cosas de RMS).

 

(I) Además, el propio emacs tiene su tutorial al que se puede acceder pulsando C-h t.

(II) En cualquier caso, las que no lo están también se pueden asociar a las combinaciones que queramos. También se pueden cambiar las asociaciones de teclas por defecto. Todo es personalizable, incluso en tiempo real (sin tener que salir de la aplicación, modificar configuraciones, recompilar, etc.). Esto es, sin embargo, materia para otros artículos.

(III) El «$» al principio, por si alguien se pierde, es el prompt de la línea de comandos. Es como el «C:\>» de Windows. A continuación del mismo escribimos los comandos que queremos ejecutar.

(IV) (Control y X al mismo tiempo, soltamos ambas y pulsamos «K»)

(V) En el minibuffer, de forma similar a como sucede en la consola de Linux, se puede usar el tabulador para autocompletar el comando. Así, si escribir «print» y le dáis al tabulador os dará como opciones «buffer» y «region». En cuanto pulséis las teclas suficientes para que sepa cuál queréis podéis pulsar de nuevo tabulador y se completará entera. Así, si pulsáis «print», le dáis a tabulador, y escribís «b», se completará a «print-buffer».

 

Cómo instalar Choqok 1.4 en Kubuntu 13.04

Para el que no loconozca, Choqok es uno de los mejores clientes de Twitter que hay para GNU/Linux. En concreto, está basado en librerías Qt, con lo que los usuarios de KDE (entre los que me incluyo) lo conocerán/disfrutarán más (aunque podéis instalarlo en cualquier entorno de escritorio).

Choqok estaba basado en la API 1.0 de Twitter y, tras el cambio de ésta a la 1.1 y retirar el soporte completo a la 1.0, Choqok dejó de ser operativo. El desarrollador del cliente anunció que dejaba el proyecto y que esperaba que alguien siguiera con él.

Pues bien, afortunadamente otro desarrollador ha continuado con él y desde el 1 de Septiembre tenemos la versión 1.4 de Choqok disponible para GNU/Linux en sus distintos sabores.

Esta versión es compatible con la nueva API de Twitter, por lo que es totalmente operativa (de lo cuál puedo dar fe ya que la estoy usando;-)). Para instalarla en Ubuntu y derivadas (Kubuntu en mi caso (*)) podemos hacerlo a través de un PPA:

add-apt-repository ppa:adilson/experimental
aptitude update
aptitude install choqok

Que lo disfrutéis 😉

 

(*) Aunque el título del artículo hace referencia a la versión Kubuntu 13.04, no debéis tener problemas para instalarlo en otra versión de Ubuntu.

bambam: para que tu peque se divierta aporreando el teclado

Todos los que tenemos una niña (aplíquese también para el caso de niños) sabemos que si los ponemos delante del ordenador, menos programar en python van a hacer de todo, aunque básicamente se resume a aporrear las teclas.

Aunque esto puede parecer una buena forma de poner a prueba un programa o sistema operativo, ya que así se mide la cantidad de ventanas que es capaz de abrir o de decenas teclas que es capaz de procesar por segundo… la realidad es que nuestra pequeña va, posiblemente, a borrar/modificar archivos, abrir doscientos menús y ejecutar aplicaciones y acciones que pueden dejar KO el sistema, etc.

La decisión salomónica en estos casos es que no toquen más el PC, pero lo cierto es que les divierte, así que lo suyo es encontrar una aplicación que les permita seguir divirtiéndose con el ordenador pero sin destrozar los archivos que hay contenidos en él.

En este sentido, hace poco, mi colega Jesusda me comentó que existe un programa que permite precisamente esto. Esta aplicación se llama bambam (*), nombre muy apropiado para el cometido de dicha aplicación, ya que «Bam Bam» es el nombre del bebé -adoptado- de Pablo Mármol (de la serie de dibus «Los Picapiedra»), que tenía una fuerza brutal y pegaba buenos golpes con su palo de madera:

bambam003

Volviendo a la aplicación que nos ocupa, deciros que está normalmente en los repos de vuestra distro. En el caso de Debian y derivadas (Ubuntu, Kubuntu, Xubuntu, Linux Mint, etc., etc.) lo podéis instalar tal que así (aunque yo uso aptitude podéis usar igualmente apt-get).:

aptitude install bambam

Cuando la lanzáis se muestra la pantalla en blanco y cuando se pulsa una tecla aparece la letra en una posición y color aleatorios. Si se pulsa otra tecla (escape, tabulador, F1…) aparece un dibujo. En todos los casos se oye un sonido (también aleatorio) al pulsar la tecla.

Por tanto, se pulse lo que se pulse y se aporree lo que se aporree, se muestra algo en una posición de la pantalla, en un color y con un sonido (todos aleatorios).

La única forma de salir de la aplicación es pulsar las teclas «q», «u», «i», «t» una detrás de otra, es decir, escribir «quit«. Es difćil, por tanto, que la pequeña usuaria salga de la aplicación y vuelva a hacer de las suyas en el sistema operativo, y si lo hace, la niña (o niño) promete.

Ale, ya podéis dejar a la pequeña delante del equipo para que aporree el teclado tranquilamente.

 

PD.: gracias, Jesusda, por la info.

Compartir teclado, ratón y monitor entre 2 PCs con poco dinero

Supongo que muchos de vosotros ya sabéis qué es un switch KVM. Es un aparatito que permite compartir un teclado, un ratón y un monitor entre 2 ó más PCs. De hecho, KVM viene de «Keyboard, Video, Mouse» (teclado, vídeo y ratón).

La idea es que conectas al cacharrito tu teclado, tu ratón y tu monitor. A partir de ahí, vas conectando a dicho aparato los PCs que quieras que lo usen mediante unos cables creados a tal fin (que normalmente se venden con el KVM, e incluso en algunos casos van integrados en el mismo -sin posibilidad de quitarlos-).

Hay de muchos tipos pero, en general, tenemos KVMs con conexión de tipo PS/2 (cuando tenemos PCs que usan este tipo de conexión, la cuál va quedando ya obsoleta) y de tipo USB (teclado y ratón se conectan por USB). La conexión por monitor suele ser por VGA (es lo más económico) aunque hay también más modernos que incluyen conexión HDMI (muy útil si queremos compartir una conexión de vídeo de tipo Full HD -1920 x 1080-).

En mi caso, yo tengo un monitor que permite tanto conexión por VGA como por HDMI, y quiero compartir dicho monitor junto con el teclado y el ratón entre mi PC y mi portátil.

El PC tiene conexión por HDMI al monitor, el ratón es USB y el teclado (algo -bastante- antiguo) es de tipo PS/2. Dado que no hay (al menos no he visto) KVMs que permitan mezclar USB con PS/2 para conectar teclado y ratón (*), he comprado un teclado USB.

Como los KVMs con conexión HDMI son algo caros y estoy intentando buscar una solución económica, yo he comprado un sencillo KVM con conexión VGA para monitor y USB para teclado y ratón, similar al que se muestra en la siguiente imagen.

kvm_usb

Yo no he comprado los cables ya que no los necesito. Ahora comprenderéis por qué.

Teniendo un monitor Full HD con una entrada HDMI libre y un portátil con salida HDMI, usar otro tipo de conexión de menos calidad sería una pena, así que lo que hago es conectar los dos equipos (PC y portátil) al monitor con dos cables HDMI (uno por equipo, lógicamente). El monitor tiene la opción con un botón (rotulado normalmente como «source» -origen-) de seleccionar el dispositivo, así que ya tengo ambos equipos compartiendo el monitor.

El KVM USB lo uso, por tanto, para compartir teclado y ratón solamente. Al KVM conecto el teclado y el ratón (también puedo conectar un dispositivo adicional para compartir entre ambos equipos, como un pendrive) y, con dos cables USB de tipo A/B (el que se usa para las impresoras, para que me entendáis), conecto un puerto USB del PC y del portátil a dicho cacharrín.

Ahora, para alternar entre un equipo y otro tengo que pulsar 2 botones: el del KVM (para el teclado y el ratón) y el del source del monitor.

De esta forma hemos conseguido compartir teclado, ratón y monitor por muy poco dinero. Un cable (de calidad normal) HDMI de 2 metros lo encontráis por 3 euros. Un switch KVM como el que os he mostrado en la foto lo podéis conseguie en eBay o Amazon (sin los cables) por menos de 15 euros.

Espero que os resulte útil y, si conocéis otra forma más económica de conseguir esto, no dudéis en poner el correspondiente comentario.

 

(*) Otros problemas de la conexión PS/2: no es plug & play, los portátiles actuales no tienen este tipo de conexión, los teclados más modernos son todos USB, por citar algunas. Aunque la conexión PS/2 soporta más conexiones simultáneas de teclas, los últimos teclados USB tienen también este problema solucionado (en cualquier caso, no creo que ningún usuario normal necesite pulsar más de 3 ó 4 teclas a la vez).