Archive for December, 2008

Restringir edición a usuarios anónimos

Tuesday, December 9th, 2008

Solamente hay que agregar en el archivo LocalSettings.php (válido para versiones 1.5 y superiores):


$wgGroupPermissions['*']['edit'] = false;

Referencia

Valores por defecto para argumento hash

Thursday, December 4th, 2008

Cuando un método requiere varios argumentos puede resultar difícil recordar el orden en que deben ser pasados. Es por esto que algunos lenguajes permiten invocar métodos a través de nombres de parámetros y sus valores. Ruby no soporta esa forma, pero se puede obtener, el mismo resultado, a través del uso de un hash en el argumento.

Buscando encontré esta estupenda forma de establecer valores por defecto en un hash, de manera de obtener argumentos opcionales en la invocación.


def foo args
  args[:unidad] ||= 0
  args[:total] ||= 1
  args[:unidad] / args[:total]
end

>> foo :unidad => 23
=> 23
>> foo :total => 12
=> 0

Referencia

Imprimir PDF: dos páginas por hoja y doble faz

Wednesday, December 3rd, 2008

Recurrente problema que he tenido hace tiempo; además de ser una manera excelente de economizar en impresiones de libros digitales.

Simplemente he codificado un pequeño script que divide el documento en cuestión en dos archivos: primeras.pdf y segundas.pdf. Cada archivo contiene las hojas divididas, teniendo en cuenta que se van a imprimir dos hojas por cara, para primero imprimir todas las hojas correspondientes a las caras superiores y el otro el de las inferiores.

Por ejemplo: tenemos un documento llamado libro.pdf el cual tiene 16 hojas. Al utilizar el script obtendremos dos archivos, los cuales contendrán las hojas:

  • primeras.pdf; contiene hojas de las caras superiores: 1, 2, 5, 6, 9, 10, 13, 14.
  • segundas.pdf; contiene hojas de las caras inferiores: 3, 4, 7, 8, 11, 12, 15, 16.

Script


#!/bin/bash
total=#Coloque la cantidad de hojas del documento
eval pdftk A=$1 cat `i=1;while [ $i -lt $((total)) ];
do echo A$i A$(($i+1));
let i=$(($i + 4));
done` output primeras.pdf
eval pdftk A=$1 cat `i=3;while [ $i -lt $((total)) ];
do echo A$i A$(($i+1));
let i=$(($i + 4));
done` output segundas.pdf

Uso

  1. Hay que editar el script (como se indica más abajo).
  2. Colocar el documento en la misma carpeta que el script.
  3. Abrir una terminal y teclear:
    
    $ ./script.sh foo.pdf
    
  4. Genera dos archivos. Primero imprimir: primeras.pdf, luego segundas.pdf.

Consideraciones

  • Para que el script funcione se debe tener instalado pdftk; un pequeño software que manipula documentos PDF (en cualquier distribución Debian: aptitude install pdftk).
  • Lamento no ser un experto en bash; el script no es perfecto. Antes de utilizarlo hay que indicarle la cantidad de hojas del documento, editando el script, asignando el valor a la variable: total. He intentado automatizar esto pero no he podido lograrlo. Si alguien lograse hacerlo agradecería que compartiese la solución. (dejo una pequeña ayuda para obtener la cantidad de hojas del documento PDF: eval pdftk $documento dump_data | grep “NumberOfPages:” | awk ‘{print $2}’).