Albano Cruz
[ web personal ]
[ status: active ]

Reactivando la página

Breves apuntes sobre la marcha.

Comenzando

Ha llegado el momento de reactivar la página personal. Y para ello me he marcado varios objetivos sobre el framework, motor, o como queramos llamarlo:

  1. tiene que poder instalarse desde los repositorios Debian
  2. tengo que poder generar páginas estáticas
  3. el motor ha de poder servir a tiempo real para desarrollo
  4. quiero trabajar en texto plano
  5. tengo que poder emplear LaTeX
  6. tiene que poder insertarse código HTML llegado el caso
  7. quiero unificar/importar mis publicaciones de Wordpress

El punto de partida es https://www.staticgen.com/.

Repositorios Debian

El software que compile/renderice la páginas estáticas ha de poder estar en los repositorios Debian, e instalarse con el gestor de paquetes sin más problema. Se admiten una o dos instalaciones extras de dependencias que también estén en el repositorio. El objetivo es reducir los tiempos de reinstalación en caso de migración de máquina, y de no necesitar nada más que lo que esté a mano del OS. El concepto es simplicidad.

Sobre las páginas estáticas

Con la eclosión de los motores o conversores de páginas estáticas, ahora hay mucho más donde elegir que antes. Simplifica el trabajo de redacción y publicación, así como los problemas derivados del mantenimiento (seguridad, actualizaciones). También es más sencillo el backup y el traslado.

Ahorra tener que estar al tanto de mantener una estructura sobredimensionada al verdadero objetivo de la publicación. También ayudan al placer del ascetismo o del código. La desnudez del interfaz al trabajar sobre ellas mejora la experiencia de la creación del sistema.

Trabajar en texto plano

Reducir la dependencia de los editores. Quiero poder centrarme en el contenido, y generarlo y manipularlo al modo de una máquina de escribir para que la focalización sobre lo redactado sea la máxima, y luego no tenga que andar perdiendo tiempo formateando y arreglando.

La posibilidad de combinar editores permite emplear uno u otro dependiendo del contexto, las labores de edición a realizar, y la necesidad de verse libre de distracciones. El editor no ha de cambiar la relación del documento con el sistema.

Para cubrir el trabajar con texto plano, y al mismo tiempo poder leer al vuelo lo redactado, tengo que poder emplear estos lenguajes:

  1. markdown
  2. textile
  3. reStructuredText

A ser posible los dos primeros. Son lenguajes sencillos, por lo que si aparece alguno nuevo, no hay problema en aprenderlo. Eso sí, mientras mantenga las propiedades de claridad de lectura y poder insertar algunas que otras formas de código.

La experiencia ha hecho que me sea más cómoda la edición de textos en textile que en markdown. La riqueza de etiquetado es más fácil de leer, y algo más completa.

LaTeX

Tal y como son algunos de los posts tengo que poder escribir en LaTeX para que las fórmulas que empleo a veces estén incluidas en la publicación sin ser imagen. Y al mismo tiempo tengo que poder hacer un copiapega desde mis documentos de trabajo con el mínimo fuzz.

\begin{equation}
x + y = z^2
\end{equation}

El estándar de la renderización de LaTeX para los blogs actualmente se realiza mediante mathjax. En el caso del jekyll he colocado en el include del pie de página el script correspondiente para poder emplearlo:

<script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script>

Mathjax mantiene una lista de comandos aceptados por su script.

La distintas plataformas

En Debian Jessie aparecen en el repositorio, y que superen las versión 1.0:

  1. nikola 7.1 — (python)
  2. jekyll 2.2 — (ruby)
  3. pelican 3.6 — (python)
  4. chronicle 4.6 — (perl)
  5. nanoc 3.7 — (ruby)

Es posible que aparezca alguno más. Pero en una búsqueda rápida, son los que parecen tener una presencia asentada.

chronicle queda descartado de inmediato por estar estar escrito en Perl. Prefiero Python, o si no hay más remedio, Ruby. Las pruebas comienza con Jekyll por su simplicidad (reconocida en toda la documentación online recogida), y por su claridad de estructura interna.

Análisis y Comparativa

» Jekyll

Bajo Debian Jessie la instalación es sencilla. Se hace mediante el instalador de paquetes sin inconveniente. Instala la versión 2.2.

La única pega es que no puede convertir archivos .textile sin instalar además el ruby-redcloth, pero una vez instalado desde el gestor de paquetes no hay problema. Las urls de referencia son

  1. Jekyll: https://jekyllrb.com
  2. Textile: http://redcloth.org

A pesar de poderse actualizar al Jekyll 3.x a través de gem install jekyll, en Debian la actualización parece no funcionar del tirón. Así que mientras la versión 2.2 sea suficiente, seguiré funcionando con ella. El objetivo es aprender a usar el convertidor y realizar el diseño, no liarse con problemas de dependencias y configuraciones.

El Jekyll puede monitorizar los cambios, y servirlos sin tener que estar manualmente recompilando. Se hace con:

jekyll serve -w

La estructura y organización es sencilla y asequible. Cumple:

  1. repositorios [ok][min.fuzz][xtras.3]
  2. serve [ok]
  3. markdown [ok]
  4. textile [ok]
  5. rST [no]
  6. LaTeX [ok]
  7. HTML [ok]
  8. import WP [ok]

LaTeX funciona tanto en markdown como en textile, con una ligera diferencia: en markdown se puede poner LaTeX inline. En textile no.

Para la importación de WP, hay que instalar un la gem llamada jekyll-import que en Debian necesita los headers de Ruby. Para correr el importador también hace falta hpricot. Y todo para probar si funciona. Esto ya hace 3 instalaciones extras a parte del paquete jekyll.

A pesar de las instalaciones extras no ha funcionado. Este camino ha sido abandonado. Tras guglear:

  1. http://vitobotta.com/how-to-migrate-from-wordpress-to-jekyll/
  2. https://github.com/thomasf/exitwp

El primero de los métodos requiere demasiado tiempo. El segundo ha funcionado bien tras instalar python-html2markdown. Todo el material subido a los Wordpress que alguna vez he tenido ha sido importado sin problema.

» Nikola

Bajo Debian Jessie la instalación es sencilla. Se hace mediante el instalador de paquetes sin inconveniente. Instala la versión 7.1.0.

En la compilación de la demostración, se sugiere instalar python-pygal (para la renderización de gráficos). No parece accesible en el repositorio de Debian. La he descargado a mano desde testing. Depende de python-cairosvg que sí está en los repositorios. Instalada. Todo en orden.

Al igual que el Jekyll, puede actuar de servidor monitorizando los cambios:

nikola auto

Es un poco más lento que el Jekyll en la compilación, pero está claro a la primera que es mucho más completo. Y puede que mucho más elaborado de manejar.

Hay que tweakear un poco para que funcione con markdown, pero admite directamente el estilo GitHub. La única pega por ahora es que no trabaja con archivos textile según “out-of-the-box”. Puede que sea un fallo de la versión en el repositorio. Pero da lo mismo. Si hay que trastear mucho, me roba tiempo.

  1. repositorios [ok][min.fuzz][xtras.2]
  2. serve [ok]
  3. markdown [ok]
  4. textile [NO]
  5. rST [ok]
  6. LaTeX [ok]
  7. HTML [ok]
  8. import WP [¿?]

Una buena guía para la customización puede ser:

- http://louistiao.me/posts/how-i-customized-my-nikola-powered-site/

LaTeX lo maneja sin problemas, con unos comandos un poco raros si no estás habituado. Pero tanto markdown como reST pueden poner LaTeX en línea o como entorno.

En el caso del markdown es así, con doble \ :

	Euler’s formula: \\(e^{ix} = \cos x + i\sin x\\)

Con markdown admite etiquetado HTML, con reST no. Y no parece en un primer intento importar demasiado bien desde Wordpress.

Impresiones hasta aquí

Me quedo con Jekyll por su simplicidad. Voy buscando más un “blog” que otra cosa. Estoy más a gusto con textile que con reST. LaTeX lo hacen igual de bien salvo por el problema inline.

Jekyll es más rápido de modificar, customizar y renderizar en las máquinas a disposición, y produce menos archivos. La estructura producida también es más sencilla. Por ahora se ajusta más a mis necesidades.

Ahora toca abordar el tema del diseño.

// etiquetas // - web - static - diseño