[LibreOffice] Aplicar coloreado de sintaxis a un trozo de código

Supongamos que has insertado un trozo de código fuente en Python en tu documento .odt. Por defecto, Writer no dispone de ninguna utilidad para colorear las líneas como haría un buen IDE (lo que se conoce como Syntax Highlighting) y tu código se vería bastante feucho. Para realizar el coloreado de sintaxis en LibreOffice Writer, instalaremos la extensión «Code Colorizer Formatter» de Andrew Pitonyak, al que algunos conoceréis por su excelente documento sobre programación de macros en LibreOffice/OpenOffice.org. Una vez instalada la extensión y antes de poderla usar, también tendréis que copiar el estilo _OOoComputerCode de este documento, tal y como se explicó en DiarioLinux.

Aplica el estilo _OOoComputerCode a la sección de código que quieras colorear. Selecciona ahora: Tools/Macros/Run Macro…/My Macros/MacroFormaterADP, elige el lenguaje en el que está programada la sección de código de tu documento (Python en nuestro caso) y a continuación pulsa MainPython y «Run…», tal y como se ve en la figura adjunta.

[LibreOffice] Instalar LibreOffice 3.6 en Ubuntu 12.04

Receta rápida para instalar LibreOffice 3.6 en Ubuntu 12.04 (dado que la versión 3.6 no está aún en el repositorio principal de Ubuntu tiene una pequeña complejidad su instalación, de ahí el tip)

Puedes descargar los .deb a mano (vienen en un paquete tgz que tendrás que descomprimir) e instalar de forma paralela una versión anterior a la 3.6 y la propia 3.6 haciendo:

$ cd /tmp/LibO_3.6.0.2_Linux_x86_install-deb_en-US/
$ sudo dpkg -i *deb

O más fácil aún, sustituir la versión vieja por la nueva usando un repo PPA:

sudo add-apt-repository ppa:libreoffice/ppa
sudo apt-get update
sudo apt-get install libreoffice libreoffice-gnome

[LibreOffice] Copiar estilos entre documentos

Así que has creado una serie de estilos en tu documento .odt (LibreOffice) que te gustaría reutilizar en otro .odt distinto… Bien, aquí va una receta rápid para hacerlo.

Abre los dos .odt y desde cualquiera de ellos, selecciona File/Templates/Organize

Doble click en el nombre de los documentos. Se abrirá un submenú «Styles». Doble click en «Styles». Se abrirá un listado de los estilos que tiene el documento. Ahora, elige el estilo que quieres copiar, pulsa la tecla Control y arrastra ese estilo de un documento a otro (es importante que pulses Control porque en otro caso, en lugar de copiar, lo moverías). ¡Listo!

Hackit’2012, solucionario. Level 2

En el nivel 2 vemos que cada vez que pulsamos una tecla dentro del input del formulario, según la consola (Developer Tools) de Chrome, pestaña Network, estamos enviando una petición Ajax al servidor. Si pulsamos sobre el nombre del script invocado (jscheck), veremos en la consola algo como lo siguiente: , lo cual parece indicar que la longitud del password que estamos introduciendo no es la correcta. Podemos pegar en el navegador la URL del script jscheck con el parámetro adecuado, e ir probando hasta obtener un error distinto al ERR:LEN.

https://hackit2012.marcansoft.com/hackit/2/jscheck?password=123456789

De esta forma conseguimos averiguar la longitud de la clave (9 caracteres). Pero ahora el error «ERR:IDX:0» parece indicar que la posición 0 de nuestra clave es incorrecta. Mediante un sencillo script podemos iterar sobre el primer carácter hasta averiguar que es la A.

https://hackit2012.marcansoft.com/hackit/2/jscheck?password=A23456789

Ahora el error es «ERR:IDX:1». Sigue al conejo blanco 🙂

Hackit’2012, solucionario. Level 1.

Para no perder las buenas costumbres y de paso aprender algo más por el camino, tengo la intención de ir comentando las soluciones a 6 de los niveles del HackIt 2012 que se celebró en la Euskal Encounter en Julio. El organizador del concurso, marcan, ha publicado en su web todas las pruebas, para que podamos salsear con ellas.

El nivel 1 es muy sencillo. Si nos fijamos en el código fuente de la página, veremos:

<script type="text/javascript">// <![CDATA[
function check() {var p=$('#password').val();var o=[42,96,21,102,18,85,48,68,48,89,55,80,3,119,22,100,16,117,17];if(p.length!=(o.length-1)){return false;}for(i=0;i<(o.length-1);i++){if(p.charCodeAt(i)!=(o[i+1]^o[i])){return false;}}return true;}
$(document).ready(function(){$('#password').keyup(function(e){$('#password').css({'background-color':(check()?'#8f8':'#f88')});});
});
// ]]></script>

Así pues, el código busca el password tecleado en el formulario y compara su longitud con la del array o (-1). Si son iguales, comienza una comparación letra a letra del password tecleado con el array o. En concreto, busca que la posición i del password sea igual a o[i+1]^o[i] (el operador ^ es un XOR). Esto lo podemos calcular fácilmente haciendo uso de la consola del navegador (en Chrome: pulsamos Shift+Ctrl+J):