Este es un blog más creado con pelican, un generador de sitios web estáticos programado con python. Aunque es muy potente y fácil de usar, hay algunos problemas y mejoras que he ido añadiendo, más allá de lo que sería la creación del blog.
Tanto la escritura de contenidos como la programación python, se realiza con vscode. Las extensiones utilizadas se incluyen como "extensiones recomendadas" que pueden verse al abrir el proyecto desde vscode.
Fichero: .vscode/extensions.json
Los artículos nuevos se crean siguiendo una plantilla: src/blog/template.md
.
Esta plantilla tiene varios campos:
- TITLE: título del artículo
- CATEGORY: categoría
- AUTHOR: autor (eg: Chema Cortés)
- NOW: fecha y hora actuales
- SLUG: título transformado para su uso en URIs.
Esta plantilla se puede autorellenar con el script src/blog/new_article.py
pasando como argumento el título y la categoría.
Para mayor facilidad, se ha creado una tarea de vscode que se invoca con F6 llamada "new article" que pedirá el título y la categoría a elegir entre algunas disponibles.
La tarea está definida en .vscode/tasks.json
El campo Modified de un artículo cambia automáticamente cada vez que se
modifica el artículo. Esto se consigue con la extensión "Auto Time Stamp"
(lpubsppop01.vscode-auto-timestamp
). También rellena el campo Date si está
vacío, por lo que basta borrarlo para que se ponga la fecha y hora actualizadas.
Opciones incluidas en .vscode/settings.json
:
{
"lpubsppop01.autoTimeStamp.birthTimeStart": "[dD]ate *:",
"lpubsppop01.autoTimeStamp.modifiedTimeStart": "[mM]odified *:",
"lpubsppop01.autoTimeStamp.momentFormat": " YYYY-MM-DD HH:mm:ss",
}
Cada problema tiene un script que lo corrige y que puede ser invocado a través de poetry run.
Al generar el sitio con pelican, hay veces que sale un error con el módulo slimit. Este error se debe a que el lexer usa alguna tabla desactualizada. Basta con borrar las tablas para que las regenere y así dejará de dar estos avisos.
Para borrar estas tablas:
$ poetry run slimit_warning
Borrado .venv/lib/python3.9/site-packages/slimit/lextab.py
Borrado .venv/lib/python3.9/site-packages/slimit/yacctab.py
En algún artículo se incluye código coconut. Para resaltar la sintáxis, markdown usa pygments. El lenguaje coconut incorpora un lexer para pygments, pero no está actualizado, con lo que provoca errores que para la generación del blog.
Para solucionarlo, se ha corregido el lexer que viene con coconut, por lo que es
necesario copiarlo en el módulo pygments que hay en el entorno virtual
(.venv
).
Para instalar este lexer:
$ poetry run coconut_lexer
Lexer instalado: .venv/lib/python3.9/site-packages/pygments/lexers/coconut.py
No instalar coconut
en este entorno virtual (al menos hasta que corrijan el
lexer)