Posar ordre en el conjunt d’articles

Últim article dels tres sobre el canvi del blog…

Després de decidir que migro el blog a un nou CMS i de fer efectiu el canvi, he aprofitat per posar una mica d’ordre per tenir tot un conjunt d’articles una mica més estructurats i amb més visió de conjunt, útil si un vol trobar ràpid relacions o temes ja tractats:

  • Ordenar i arreglar etiquetes.
  • Ordenar i arreglar categories.
  • Arreglar els enllaços entre articles.
  • Canviar la data dels fitxers per reflectir la data de creació de l’article.

Tot això ho podria haver fet amb WordPress, segurament, però treballar amb fitxers m’ha permès fer-ho de manera massiva en molts casos, estalviant temps (usant eines dels propis editors - Kate, en aquest cas).

Els dos primers punts no tenen gaire secret, és bàsicament feina manual de repassar tags i categories i anar fent petits canvis o eliminar coses sense sentit.

Els dos següents, els enllaços i la data de creació, tenen més interès, crec.

Enllaços i mapa d’articles

Arrel del comentari d’un amic sobre la possibilitat de fer un mapa de relacions entre els articles, finalmente he optat per fer enllaçar-los coincidint amb l’estructura dels fitxers dels articles.

Així, amb una estructura de fitxers com

content
	+--blog
	 +--article-1.md
	 +--article-2.md

els enllaços els posaré com

[article 1](/../article-1)
[article 2](/../article-2)

i alhora la URL corresponent seria

http://www.manelguerra.com/blog/article-1/
http://www.manelguerra.com/blog/article-2/

és a dir, faig servir la URI de l’article sense la barra final.

Aquesta codificació facilita la redacció de l’enllaç i una futura migració de carpetes, per exemple, en ser relativa.

La part més positiva és quan ens centrem en el contingut i passo d’usar Kate a usar Obsidian, un editor de markdown molt còmode i potent.

Anant a la part del graf de la carpeta (vault) on treballem, i definint com a filtre ../, ens trobem que el graf ens dóna de manera gràfica les relacions entre articles, sense els links externs ni imatges ni res! Interessantíssim per explorar com es repeteix una idea, o amb què s’ajunta… francament, no sé encara quin ús en faré, però és molt potent!

captura obsidian amb graf

Reflectir la data de l’article al fitxer

L’altre punt és més una capsigranyada que no pas una altra cosa, no té cap utilitat real (bé, potser si: Hugo construeix el RSS a partir de la data de modificació, si modifico ara tots els fitxers quan publiqui aquest article s’inclourien tots com nous al feed del blog!)

Senzillament volia això: que els fitxers tinguessin la data de redacció del post, que consta a l’etiqueta date: de la capçalera de l’article.

Ho podria fer a mà, usant la comanda touch de linux, i copiant l’string de la data, per exemple així:

touch --date=Sat, 05 Nov 2011 15:30:56 +0000 a-cremallengua.md

Però fer això pels 670 articles acumulats és molta feina.

Investigant una mica i aplicant la màgia del bash i de linux, finalment ho he aconseguit fer amb aquesta comanda:

grep ^date: *.md | sed 's/:date:/_/' | sed -E 's/(.*\_) (.*)/touch --date="\2\" \1/g' | sed 's/_$//g' | bash

Explicació (obviable excepte pels i les més tekkies):

  • grep ^date: *.md amb grep cerco la línia que comença (^) amb “date:” a tots els fitxers acabats en md
  • sed 's/:date:/_/' passo el conjunt del resultat (totes les línies) per pipe a sed, que la substitueix per “_” (que faré servir de caràcter de cerca, per separar el nom del fitxer i la data en la següent comanda)
  • sed -E 's/(.*\_) (.*)/touch --date="\2\" \1/g' passo el resultat a sed i invertint l’ordre dels dos strings resultants, afegint text (“touch –date…)
  • sed 's/_$//g' passo això de nou a sed per extreure el “_” al final de la línia ($). Aqui ja tinc un conjunt de 670 ordres touch per canviar la data
  • bash i passo tot això a bash, que ho executa des del pipe on ho ha rebut.

Ara sí, ara ja tinc tot el contingut afinat, posat al dia, ordenat i amb les dates que haguéssin tingut els fitxers (antiguitat) d’haver-ho fet en text des del primer dia. L’històric en local i en text, de fàcil emmagatzematge en temps i espai.

Ara, com deia fa uns dies, a centrar-se en el contingut.