Archive for the 'Técnicas' category

Instalación cx_Oracle para ia64

jun 04 2011 Published by under Python, Técnicas

Itanium, un sistema ¿obsoleto?

Últimamente, algunos grandes de la informática como Microsoft, Oracle y RedHat han determinado que los sistemas Itanium han quedado obsoletos con lo que dejarán de darles soporte, aunque hace sólo unos pocos años estos sistemas de 64bits se ofertaban al mercado como el futuro de los sistemas servidores empresariales.

En este punto, me encuentro que tengo en mi trabajo algunos servidores Itanium II que, lejos de considerarlos obsoletos, me parecen perfectos para alojar en ellos algunos de los proyectos python desarrollados en plone o django. Con la reciente salida de la distribución Debian “Squeeze”, y con la ayuda de un alumno que vino a hacer sus prácticas con nosotros, me animé a sustituir el Linux RedHat que se había quedado sin mantenimiento por una la última versión ia64 de debian. Esta versión es algo más limitada en paquetes que las versiones para arquitecturas i686 y amd64, pero con un poco de esfuerzo es posible completar la instalación compilando paquetes a partir de los fuentes. Y puedo afirmar que ha sido todo un éxito. Vuelvo a tener un sistema potente, completo y, sobre todo, mucho más libre.

La idea de este artículo es contar cómo instalar y configurar, en debian para itanium, del cliente de oracle y el conector cx_Oracle para python.

Instalación cliente oracle

Lo primero es descargar desde la web de oracle del cliente. Para ello hay que descargar los siguiente paquetes para itanium, previo registro gratuito:

basic-10.2.0.4.0-linux-ia64.zip
sdk-10.2.0.4.0-linux-ia64.zip
sqlplus-10.2.0.4.0-linux-ia64.zip

jdbc-10.2.0.4.0-linux-ia64.zip
odbc-10.2.0.4.0-linux-ia64.zip

Los dos últimos son opcionales, pero siempre pueden venir bien guardarlos por si hacen falta en el futuro con alguna aplicación (el conector jdbc nos vendrá bien para usarlo con jython).

Se decomprimen estos paquetes en el mismo directorio y obtendremos un único directorio llamado:

instantclient_10_2

Movemos este directorio a un lugar adecuado, por ejemplo a:

/opt/oracle/instantclient_10_2

No olvidar darle permisos adecuados, sobre todo si queremos que el servidor apache (mod_wsgi) pueda acceder a él (puedo asegurar que se pierde mucho tiempo hasta que averiguas este fallo tan tonto):

# chmod +rx /opt/oracle/instantclient_10_2/

Cuando pasemos a compilar cx_Oracle, veremos algunos fallos por no ser capaz de encontrar algunas librerías compatidas. Para evitarlo, debemos crear algunos enlaces:

# cd /opt/oracle
# ln -s libclntsh.so.10.1 libclntsh.so
# ln -s libclntsh.so.10.1 libclntsh.dylib

Ahora tenemos que actualizar las referencias a la libreras compartidas. Creamos el fichero /etc/ld.so.conf.d/oracle.conf con la siguiente línea:

/opt/oracle/instantclient_10_2

Y actualizamos:

# ldconfig

Para comprobar que funciona bien, podemos probar la utilidad sqlplus a ver si conectamos. Esta utilidad viene dentro del directorio.

Para poder compilar el paquete cx_Oracle se necesita unas cuantas variables de entorno que meteremos en el.profile`:

    export ORACLE_HOME="/opt/oracle/instantclient_10_2"
    export DYLD_LIBRARY_PATH="$ORACLE_HOME"
    export SQLPATH="$ORACLE_HOME"
 
    export PATH="$PATH:$ORACLE_HOME"

Para instalar el paquete cx_Oracle, podemos instalar antes el paquete python-pip que nos ofrece la utilidad pip que nos hará más fácil la instalación:

# apt-get install python-pip
# pip install cx_Oracle

Con ésto se debería descargar, compilar e instalar cx_Oracle. Saldrán algunas advertencias que podemos ignorar. Si todo ha salido bien, podemos pasar a probar si podemos importar el módulo:

    # python
    Python 2.6.6 (r266:84292, Dec 27 2010, 21:05:55)
    [GCC 4.4.5] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import cx_Oracle
    >>>

Con el módulo instalado, lo he probado desde el “backend” de oracle para django y todo funciona a la perfección.

One response so far

qtm con reStructuredText

may 24 2011 Published by under Python, Técnicas

Puestos a explotar todas las posibilidades de la utilidad qtm, también es posible emplear esta utilidad para previsualizar y subir al blog artículos escritos en reStructuredText (abreviadamente ReST) en lugar de markdown que viene por defecto.

De la instalación de docutils obtendremos las herramientas básicas con la que crear documentación para python. Una de estas herramientas es rst2html, con la que podríamos convertir un artículo en ReST a html antes de subirlo. El problema es que esta conversión se realiza como documento completo, con las secciones <head> y <body> típicas de un documento html, lo que no va bien si queremos insertar la salida de este comando a la entrada de nuestro blog.

Como solución, podríamos crear una plantilla para rst2html que sólo contenga la parte del <body>, pero hay una alternativa mejor: usar el script rst2wp de Matthias Friedrich. Colocamos este script en un directorio apropiado (eg: /home/usuario/bin) y configuramos qtm de la siguiente manera:

qtm para ReST

Como ya comenté en anteriores artículos, para escribir en páginas web resulta más sencillo usar markdown o markdown extra, pero a veces no queda más remedio que emplear ReST cuando necesitamos escribir documentación técnica en determinados blogs. Con qtm tenemos una herramienta sencilla para estos cometidos.

One response so far

qtm con markdown_extra

may 23 2011 Published by under Técnicas

Por defecto, qtm usa el comando markdown que se instala en linux en la ruta /usr/bin/markdown. Este comando acepta la sintáxis básica de markdown, insuficiente cuando estamos acostumbrados a usar la extensión markdown extra.

Con un pequeño truco, es posible usar markdown_extra con qtm. Instalando el módulo markdown para python (paquete python-markdown en ubuntu) obtenemos un comando alternativo llamado markdown_py que acepta numerosas extensiones para markdown, entre las que se incluye markdown_extra.

Para usar markdown_py en qtm, creamos el pequeño script que active la extensión extra en el parseo:

    #!/bin/bash

    exec markdown_py -x extra "$@"

Llamamos a este script markdown_extra, le asignamos permisos de ejecución y lo metemos en algún lugar apropiado como la carpeta bin de nuestro usuario linux. En la configuración de qtm, introducimos como ruta al comando markdown

/home/usuario/bin/markdown_extra

A partir de aquí podremos previsualizar nuestro código con markdown extra. También podríamos añadir otras extensiones como, por ejemplo, toc con la que podemos crear tablas de contenidos:

    #!/bin/bash

    exec markdown_py -x extra -x toc "$@"

Debemos asegurarnos que nuestro blog posea también esta extensión. Si no la tuviera, siempre tenemos la posibilidad de indicarle a qtm que convierta nuestra entrada a html antes de enviarla al blog.


Actualización

Para windows es necesario otro tipo de configuración. Una vez instalado el módulo python-markdown se debe crear un fichero .bat en C:\Python2.7\Scripts con el siguiente contenido:

    @"c:\python27\python.exe" "%1" -x extra -x toc "%2"

Si llamamos a este fichero markdown_extra.bat, la configuración de qtm quedaría de esta manera:

Preferencias de QTM

No responses yet

qtm: un editor para markdown y wordpress

may 22 2011 Published by under Técnicas

Buscando una aplicación para hacer más cómodas mis publicaciones en wordpress que, además, aceptara markdown, he estado a apunto de abandonar. Nigún cliente acepta markdown y, el único editor de markdown que he encontrado, retext1, no tiene opción para publicar en blogs.

Finalmente me he encontrado con esta joya llamada qtm desde la que estoy escribiendo este post. Es un cliente basado en Qt que permite editar el artículo fuera de línea. Puede usar markdown tanto para la previsualización como para la conversión a html antes de enviar a wordpress. En mi caso, como ya tengo activado un plugin en wordpress para markdown, envío el artículo directamente en markdown sin procesar a html.

Es necesario actualizarse a la última versión de qtm ya que con la versión que instala por defecto ubuntu me daba algunos problemas con las categorías y etiquetas. Para instalar la última versión, basta con añadir el repositorio PPA siguiente:

$ sudo apt-add-repository ppa:indigojo/ppa
$ sudo apt-get update
$ sudo install qtm

  1. retext es una utilidad para markdown que debería añadir a las que puse en mi anterior artículo. Puede previsualizar el resultado final a la vez que se va escribiendo. También tiene opciones para convertir un texto markdown a otros formatos como odt y pdf. 

2 responses so far

Lenguajes de marcas ligeras

may 17 2011 Published by under Técnicas

¿Para qué usar Lenguajes de Marcas Ligeras?

Últimamente he estado estudiando el uso markdown en diferentes niveles. Por el tipo de actividad que realizo, tengo que generar mucha documentación para acompañar código de programación y no resulta práctico tener que generar a mano los diversos formatos de documentos que se puedan necesitar. Es fundamental poder escribir un sólo documento y generar a partir de él todos los demás formatos.

Los Lenguajes de Marcas Ligeros como markdown permiten tener un documento en texto plano suficientemente “legible” para su uso como documentación interna en un proyecto y convertir después a otros formatos para presentaciones, publicación web o, simplemente, para su archivo. Estos lenguajes de marcas hacen muy cómodo el incorporar pequeños fragmentos de código durante el proceso de redacción, que aparecerán en el documento final con sintaxis coloreada gracias a varios plugins. Además, al ser documentos en texto plano, encajan perfectamente con el sistema de control de versiones de código que se use en el desarrollo.

markdown, markdown extra y reStructuredText

Markdown se centra en la generación de documentos HTML, algo bastante apropiado para su uso en blogs y wiki 1. La principal virtud de markdown es su “legibilidad” a pesar de tener contenida toda la información necesaria para generar la estructura del documento HTML, aunque resultará demasiado simple para crear documentación avanzada con tablas, notas bibliográficas, tablas de contenidos,…

Son muchas las propuestas para añadir a markdown nuevos elementos. Estas extensiones del lenguaje hacen que tengamos que indagar si una herramienta nos es útil o no según si acepta la extensión que estemos utilizando. De entre todas las extensiones, la más aceptada es la “PHP Markdown Extra”**, o simplemente “markdown extra”. Casi se puede asegurar que toda herramienta que procese markdown acepta también markdown extra (markdown para wordpress, python-markdown, pandoc, …).

Pero si nuestro objetivo es crear documentación más “profesional”, markdown se nos quedará corto enseguida. Antiguamente, toda la documentación se realizaba en \LaTeX, a partir del cual se podía generar documentos de cualquier formato y siempre con una calidad tipográfica profesional. Hoy en día, \LaTeX sigue siendo usado en la generación de los documentos finales, pero en la redacción de la documentación se están usando herramientas que simplifiquen la labor y, sobre todo, que consiga mejor legibilidad que un documento en formato \LaTeX.

Como alternativa a \LaTeX, sin duda destaca el languaje de marcas reStructuredText. Ligero, muy completo y legible. Posee cualquier elemento que necesite nuestro documento, con conversores de formato a casi cualquier cosa (incluido \LaTeX). La documentación de python es un buen ejemplo de lo que se puede hacer con reStructuredText junto con sphinx (Tema que abordaré en un próximo artículo).

Herramientas markdown

De momento, dejo reStructuredText para otro momento y me voy a centrar en markdown (y markdown extra). Como he dicho, el destino final de markdown es generar ficheros HTML; pero existen dos maneras sencillas de generar otros formatos:

  • Pandoc: es una herramienta que se puede usar para convertir entre markdown y reStructuredText, así como para generar otros muchos formatos como html, s5, docbook, opendocument, latex, context, texinfo, man, mediawiki y rtf. La calidad de los documentos generados dejan mucho qué desear, pero como conversor entre markdown y reStructuredText hace un buen papel.

  • calibre: se trata de uno de los más conocidos gestores de ebooks, una de las aplicaciones en python más destacadas. Lo que muchos desconocen es que entre los distintos formatos de libros electrónicos que es capaz de convertir admite markdown como formato de los ficheros de texto. Es la forma más rápida y sencilla de generar ebooks que tenemos a nuestro alcance. Basta configurar que use para la detección de capítulos la expresión //h:h1 para que nos cree automáticamente una tabla de contenidos.

    Selección de capítulos

NOTAS:


  1. Sin ir más lejos, toda esta entrada del blog está escrita en markdown gracias al plugin markdown para WordPress. Esta nota al pie es una característica extra aportada por markdown extra

4 responses so far