Taxonomías en Hugo – Parte 2

En una entrada anterior vimos cómo hacer un sitio muy básico en Hugo. Vamos a ver más características de este gestor de contenidos.

Hugo permite definir taxonomías. Las taxonomías de Hugo son similares a las categorías de WordPress. La idea básica consiste en definir unas etiquetas que podremos asignar a nuestras entradas. Cuando hagamos clic sobre una de estas etiquetas, se nos mostrarán todas las entradas que tengan esta etiqueta.

Seguir leyendo

Anuncios
Publicado en Software | Etiquetado | 1 Comentario

Hugo – Parte 1

Hugo es un sistema por línea de comandos para generar sitios web estáticos. Una frase muy chula, pero… ¿qué significa realmente?

Seguir leyendo

Publicado en Software | Etiquetado | 3 comentarios

Off-topic: El cambio climático y lo que no hacemos por evitarlo

Me gustaría enseñaros un vídeo que muestra la evolución del CO2 en la atmósfera durante un año. Evidentemente es una simulación por ordenador, pero tiene algunas cuestiones interesantes:

  • Durante los meses de primavera y verano, la fotosíntesis se ve favorecida, se puede ver muy claramente la absorción del CO2 por parte de los árboles (el efecto es espectacular).
  • La mayoría de los países desarrollados parece que estén ardiendo del CO2 que emiten.
  • El modelo también muestra la evolución del CO (no CO2), un gas altamente perjudicial.

El vídeo está en inglés, pero se viendo las leyendas de la parte inferior se puede entender la evolución del CO2:

Todos sabemos que el CO2 es uno de los responsables del efecto invernadero, pero no el único:

Basado en el vídeo anterior, hay otro que ofrece más información:

Vamos hacer unos números. He buscado por Internet la cantidad de CO2 que absorbe un árbol en un año y obtengo que es del orden de 10 kg de CO2 al año por término medio. Aunque esta cifra varía mucho en función del tamaño del árbol y su etapa de crecimiento.

Supongamos que un ordenador gaste al año del orden de 200 kWh. En la producción de esos 200 kWh se emiten 130 kg de CO2. Por lo tanto, se necesitan 13 árboles para compensar el CO2 que emite un ordenador.

¿Y un coche que haga 20000 km al año? Según este enlace, emite unas 3 toneladas de CO2, aunque según otros sitios las emisiones podrían ser de 2’5 toneladas anuales. Serían necesarios de 250 a 300 árboles para compensar sus emisiones anuales.

En hacer esos 20000 km un tren emite del orden 250 kg de CO2 por pasajero. Por lo que se necesitarían 25 árboles para neutralizar sus emisiones.

¿Y en la fabricación? En fabricar un teléfono móvil se generan gran cantidad de contaminantes. Se estima, por ejemplo, que en la fabricación de cada unidad de iPhone 6 se generan 80kg de CO2, en el transporte hasta la tienda unos 3kg y en su reciclaje 1kg. El usuario se estima que sólo emitirá del orden de 10kg de CO2 por usarlo. En general en los aparatos electrónicos, se contamina más al fabricarlos que lo que el usuario contaminará debido a su uso.

¿Cuántos árboles hay en el mundo? Se estima que hay del orden de 3 billones de árboles. 15 mil millones de ellos son talados cada año.

¿Cuántos coches hay en el mundo? Se estiman que unos mil millones.

Y ahora hago la siguiente cuenta si cada coche hiciera 20000km anuales, emitiendo 3000kg de CO2 al año, emitirán 3.000.000.000.000kg de CO2 al año, los árboles absorben 30.000.000.000.000kg de CO2 al año. Es decir que sólo con los coches estamos contrarrestando la absorción de un décimo del CO2 por parte de los árboles. La cosa preocupa un poco pues a parte de los coches CO2 producen las fábricas, las centrales térmicas, la mayoría de las calefacciones, los seres vivos,…

En esta guerra coches vs árboles, van ganando los coches claramente, como muestra el siguiente vídeo de la evolución del CO2 en la serie temporal:

Está claro que algo estamos haciendo mal, pero… ¿qué hacemos por evitarlo? Yo prácticamente nada. Tengo muchos buenos propósitos, pero si he de hacer un trayecto por ocio, en el cual el tiempo que tarde me da igual, cogeré el coche. Tengo las tres bolsitas de basura para reciclar, pero en mi entono soy de los únicos. A veces por pequeños gestos, como el de guardar un plástico en el bolsillo para tirarlo en su contenedor correspondiente, hacen que me tilden de friki (sí, me ha sucedido).

Tal vez habría que decir basta y cambiar ciertas costumbres: Limitar el uso del coche y no usarlo si hay una alternativa menos contaminante. Usar los aparatos electrónicos hasta que literalmente revienten y no dejarse guiar por modas absurdas que intentan obligarnos a cambiar de móvil cada dos años (por ejemplo). Reusar todo lo que se pueda reusar, como los envases. Reciclar cuando algo llegue al final de su vida útil. Ahorrar energía (apagar la luz y otros dispositivos cuando  no se usen)…

Me temo que sólo tengo buenas intenciones y volveré a coger el coche, comprar el móvil de última generación, o tirar el papelito al suelo mientras digo: ¡Qué sucias están las calles y este ayuntamiento no limpia!

Termino con unas palabras que se atribuyen a los Indios Cris del Canadá: “Cuando hayáis talado el último árbol, matado el último animal y contaminado el último río os daréis cuenta de que el dinero no se come… “

Publicado en Uncategorized | 3 comentarios

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.

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