LibreOffice Styles Tutorial

LibreOffice Styles Tutorial (click to download)

LibreOffice Styles Tutorial

I wrote a small-and-quick tutorial for using LibreOffice Styles. It is intended to quickly let you understand (and hopefully grasp) the concepts behind the use of Styles without having to go through an entire manual.

It briefly covers and exemplifies the notion of Paragraph and Character Styles, Direct Formatting, automatic table of contents generation and chapter rearrangement through the Navigator.

Styles can do much more than explained in the tutorial, but it should get you started saving a significant amount of time.

Download it by clicking on the image or from here: /files/libreoffice-styles.odt

Se crea una zona horaria para Quintana Roo

El 31 de enero de 2015 se publicó en el DOF un decreto que crea una nueva zona horaria en México para Quintana Roo (UTC-0500).

Alguien ya mandó el cambio al Time Zone Database. El 30 de enero de 2015 se liberó la versión 2015a del paquete tzdata de Unix, con la actualización para la zona America/Cancun.

Según el CENAM hay un vacío legal en el decreto: siendo legalmente estrictos Quintana Roo no contaría con horario de verano, pero seguramente esta no es la intención. Es posible que más adelante haya otra actualización a las zonas horarias y por lo tanto a la Time Zone Database.

Consumo pico de memoria general en Linux

Desafortunadamente, Linux no mantiene un registro del consumo pico de memoria general. Sí lo hace para un proceso pero no para la totalidad del sistema.

A falta de esto y como mero hack, el siguiente script se puede dejar corriendo durante un tiempo determinado:

#!/bin/bash

free -m -s 0.05 | while read A _ V _; do
  [ "$A" = "-/+" ] && [ "$V" -gt "${M:-0}" ] && { M=$V; echo $M; }
done

Ventajas:

  • No necesita de la instalación de ningún programa externo.
  • Es compatible con POSIX Shell.

Desventajas:

  • Funciona por sondeo (polling) cada 0.05 segundos. Esto significa que si entre muestra y muestra hay un pico que desaparece, éste no se reflejará. Idealmente el kernel llevaría el registro de manera asíncrona durante cada llamada a brk() y sbrk().
  • Podría no funcionar en locales con diferente separador decimal. Sería necesario cambiar 0.05 por 0,05. Tal vez se pudiera usar el parámetro $1 para evitar este problema.

El problema de la liebre

Tendria yo como unos 10 años cuando leí el siguiente acertijo en un libro llamado “A jugar con los números”:

Una liebre pesa 10 libras más la mitad de su peso. ¿Cuál es el peso de la liebre?

Inmediatamente llegué a una respuesta: 15. Busqué la solución al final del libro y decía simplemente:

20 libras (y no 15 como era de esperar).

Ni una palabra más ni una palabra menos.

Pregunté a algunos adultos muy pacientes y algunos también decían que 15. Si alguien me dijo que 20 fue por  usar alguna herramienta matemática (seguramente álgebra, pero yo ni si quiera sabía lo que era).

Cuando aprendí álgebra la ecuación resultó obvia:

p = 10 + p/2

Y manipular la ecuación para dejar sola la p es fácil: primero se multiplica todo por 2:

2p = 2*10 + 2p/2

2p = 20 + p

Y se le resta p a todo:

2pp = 20 + pp

p = 20

Bien, ya tengo la respuesta. Confirma que mi intuición estaba mal. Pero no me quedo agusto si hay una discrepancia entre la realidad y mi interpretación de la realidad. Ahora, ¿cómo corregir mi intuición? ¿Dónde estaba el error? ¿Podía haberlo comprendido yo, de niño, sin conocimiento de álgebra?

Sigue leyendo

Nuevo proyecto: Caddeus, un Makefile para TDD en C

Caddeus es un Makefile para GNU Make que sirve como plantilla para comenzar el desarrollo de cualquier proyecto en C. Caddeus está liberado bajo una licencia BSD simplificada. Caddeus está hospedado en Github en la siguiente dirección

https://github.com/alvarezp/caddeus

Esta plantilla soporta automáticamente:

Un modelo de desarrollo dirigido por pruebas (TDD): No es un framework sino la construcción de un módulo y su falla temprana sin reconstruir otros módulos ni reejecutar cada pruebas innecesariamente. La regla es muy simple: si tienes un modulo.c, crea otro llamado modulo.t.c y Make automáticamente compilará y ejecutará modulo.t.c automáticamente después y registrará si la prueba pasó. Cualquier modificación al módulo provocará una ejecución nueva de las pruebas de dicho módulo.

Un archivo llamado aplicacion.tt es considerado un script a ser ejecutado tras la compilación de la aplicación final, útil para prueba de integración.

Por defecto, las CFLAGS son muy estrictas, forzando la estandarización y la portabilidad (o la documentación de la falta de portabilidad) desde un principio: -std=c99 -W -Wall -Werror -Wextra -pendatic-errors. Si tu programa falla con estas banderas, intenta #define _GNU_SOURCE al principio de tu módulo y proponte como reto poder eliminar esa definición. Como resultado, tendrás un código de mayor calidad y mejor portabilidad.

Análisis estático automático, cortesía de CppCheck y Clang. Si están presentes en el sistema, todos tus módulos serán automáticamente revisados por CppCheck y Clang, dándote seguridad de un código fuente de mayor calidad.

Análisis automático de ejecución, cortesía de Valgrind. Si está instalado en el sistema, las pruebas unitarias se ejecutarán a través de Valgrind con revisión completa por fugas de memoria.

Todo lo anterior se desactiva automáticamente ante la presencia de un archivo “RELEASE”, lo que permite liberar código sin forzar a que el resto del mundo ejecute las mismas pruebas.

Se pueden establecer timeouts de manera opcional para dejar corriendo el juego de pruebas y si se cae en un ciclo infinito, el consumo del CPU se detenga después de un tiempo establecido.

Se generan automáticamente dependencias de los archivos .c a sus encabezados .h, de modo que al cambiar cualquiera de los encabezados, también se regeneran los módulos que correspondan.