Metralla: El camionero

El camionero fue sin duda el gran éxito de Metralla. He de reconocer que es simple y pegadiza. Tenía algo especial.

Primera parte

Noche cerrada
apareció
un coche negro
su vida cambió

En unos segundos
desapareció
el cabrón escapó
nadie lo pudo evitar

Estribillo

Y desde entonces
todas las noches
persigue, persigue en su camión
al cabrón que lo mató
persigue, persigue en su camión
al cabrón que lo mató

Segunda parte

Días más tarde
lo encontraron allí
lo que no esperaban
es que volviera así
el camionero regresó
todas las noches
buscando a aquel coche cabrón
viajó y persiguió
al coche negro
su rostro quemado a la gente asustó

perseguirá
para siempre en su camión

Estribillo

Raspberry Pi 3 laptop

Los materiales para mi portátil básico basado en raspberry pi 3:

  • Raspberry Pi 3
  • Pantalla táctil de 7 pulgadas
  • Teclado inalámbrico
  • Batería
  • Cable HDMI
  • Cable micro USB para la pantalla
  • Cable micro USB para la raspberry pi
  • USB drive para instalar el sistema operativo
  • Tarjeta micro SD para instalar el cargador de arranque

El teclado que estoy utilizando es un RII k12+, con conexión por RF. Incluye touchpad y tiene una autonomía bastante buena. Elegí RF en vez de bluetooth porque así puedo tenerlo disponible desde el arranque, cuando los drivers para bluetooth aún no están cargados.

El sistema operativo está instalado en un USB drive de Sandisk de 64gb. Es USB 3.0 pero eso no tiene relevancia en el caso de la raspberri pi 3, quizás con la siguiente versión…

Como batería utilizo un power pack con una batería de litio de 3800mAh que tiene dos salidas USB y carga mediante conector micro USB. Es apilable con la Raspberry Pi, evitando los problemas de cables sueltos. Además, incluye un interruptor de encendido, cosa que la raspberry pi no lleva y se echa de menos.

Nota

Como lo uso en clase y no tiene salida VGA compré un adaptador HDMI a VGA que utilizo para conectar al proyector o un monitor. Funciona perfectamente.

Estofado rápido

El estofado es un plato que acepta muchas variantes. La que propongo aquí es la que más ha gustado a los peques de la casa. Se trata de un plato rápido que no requiere pasos intermedios. Directamente todo a la cazuela.

Leer más…

Como mover el cursor en una GTKTextView

Como parte del desarrollo de Panspeak, me decidí a incluir una ayuda para agregar las marcas de texto escrito y leído. Tras un poco de buceo en la documentación de GTK3 encontré la forma de introducir la secuencia #-|-# en el punto de edición del documento. El problema es que tras incluir la secuencia había que desplazarse manualmente al punto en el que comienza la parte para texto escrito.

Como me parecía un poco una chapuza, se me ocurrió que tras la inserción sería bueno que el cursor fuera automáticamente al punto de inserción del texto escrito, como ya he visto que hacen varios IDEs.

Esta vez el buceo fue bastante más prolongado y tras un par de días llegué a esta solución:

1
2
3
4
5
6
def addMarker(self, widget):
    marker = "#-|-#"
    self.mybuffer.insert_at_cursor(marker)
    cursorPosition = self.mybuffer.get_property("cursor-position")
    myiter = self.mybuffer.get_iter_at_offset(cursorPosition - 3)
    self.mybuffer.place_cursor(myiter)

Lo que hago es calcular la posición en la que está el cursor después de insertar la marca con self.mybuffer.get_property(“cursor-position”). Lamentablemente no hay algo tipo set_property() para fijar la nueva posición del cursor así que hay que obtener el iter de la posición del cursor quitando el número de caracteres que necesita retroceder, mediante self.mybuffer.get_iter_at_offset(cursorPosition - 3). Para finalizar, se lleva el cursor a ese nuevo punto mediante self.mybuffer.place_cursor(iter).

Probablemente no sea la forma más elegante de hacerlo pero parece que funciona, luego, de momento, se queda así.

Un saludo.

Como referencia

Para trabajar con textos utilizas un GTKTextView o un GTKSourceView. A esa vista se le asocia un buffer y las posiciones que necesitas en ese buffer vienen determinadas por los iters. Esos iters permiten definir marcas, regiones de texto, el texto completo, una posición concreta, etc.

Cómo crear documentos en PDF para leer en un lector de libros electrónicos.

Mi lector de libros electrónicos, un booq <del>Cervantes</del> classic bastante añejo, no maneja demasiado bien los documentos en html que creo con pandoc. Pierde el formato de las listas y el formato de los encabezados tampoco es el más apropiado.

La mejor solución que he encontrado para leer los temas de la oposición (o cualquier otro documento) es pasarlos a .pdf desde markdown, usando pandoc. El inconveniente de pandoc es que en el modo automático no crea unos pdfs optimizados para mi lector, por lo que he preparado un plantilla adaptada a lo que necesito y le digo a pandoc que lo utilice cuando crea los documentos en latex con la opción —template=miplantilla.tex.

Ahí va la plantilla:

\documentclass[13pt]{extarticle}
\usepackage{setspace}
\setstretch{1.5}
\usepackage{fontspec}
\usepackage[a6paper, hmargin=.8cm, vmargin=.8cm, landscape]{geometry}
\usepackage{polyglossia}
\setmainlanguage{spanish}
\usepackage{titlesec}
\setromanfont{Charis SIL}

\titleformat*{\section}{\large\bfseries}
\titleformat*{\subsection}{\large\bfseries}
$if(title)$
\title{$title$$if(subtitle)$\\\vspace{0.5em}{\large $subtitle$}$endif$}
$endif$

$if(author)$
\author{$for(author)$$author$$sep$ \and $endfor$}
$endif$

\date{$date$}

\begin{document}
\pagenumbering{gobble}
$if(title)$
\maketitle
$endif$


$if(toc)$
{
    \hypersetup{linkcolor=black}
    \setcounter{tocdepth}{$toc-depth$}
    \tableofcontents
}
$endif$

$body$

\end{document}

La clase extarticle, que es una versión extendida de la clase article me permite utilizar fuentes de 13pt de tamaño base, que se leen bastante bien. Con el paquete geometry defino el tamaño de papel a a6 en formato apasisado (landscape) y dejo unos márgenes estrechos para aprovechar mejor el espacio. Estoy utilizando como fuente principal Charis SIL, que se lee muy bien en mi lector. Para evitar perder espacio con los números de página he utilizado el valor googble en \pagenumbering{}. Por lo demás, aunque yo no utilizo el campo autor, fecha o la tabla de contenidos los he dejado disponibles por si a alguien le pudiera resultar de interés.

Para obtener el documento en versión latex:

pandoc mi_documento.md --template=mi_plantilla.tex -o mi_documento.tex

y para el documento final:

xelatex mi_documento.tex

Normalmente lo ejecuto dos veces para que mantenga la referencia de encabezados correctamente, pero con una podría valer también.

Un saludo.

Lista aleatoria en Python

Para que una lista se combine de forma aleatoria hay usar shuffle()

1
2
3
4
import random

lista = [1, 2, 3, 4, 5, 6]
random.shuffle(lista)

no hace falta crear una nueva lista para almacenar el nuevo orden porque shuffle() da como resultado None

Si lo que se quiere es combinar de forma aleatoria un diccionario, entonces el primer paso es crear una lista con los pares key/value del diccionario. Para eso se utiliza el método .items().

1
2
3
4
5
6
7
8
diccionario_compra = { 'tomates': '1 kilo',
                     'limones': 'medio kilo',
                     'huevos': 'una docena',
                   }

lista_compra = diccionario_compra.items()
print lista_compra
[('tomates', '1 kilo'),('limones', 'medio kilo'),('huevos', 'una docena'),]

Ahora para hacerla aleatoria solo haría falta usar shuffle() en lista_compra y tendríamos nuestra lista aleatoria preparada.