noqqe


blog | sammelsurium | projects | about

Über gefixte Syntax und Stunden mit RegEx

2012-11-22 @ bash, blog, development, html, markdown, octopress, regex, web

Manchmal sitze ich abends einfach so herum und repariere kaputte/unschöne Syntax alter (via exitwp importierter) Blogposts unter Zuhilfenahme regulärer Ausdrücke damit besagte Eintraege nacher genauso aussehen wie vorher. Das hilft keinem. Nur mir, wenn ich mir die Markdown Sourcen des Octopress Repos anschaue.

Umbrüche

Einen Großteil der Zeit habe ich mir überlegt wie ich es schaffe nach 80 Zeichen einen automatischen Umbruch mit sed zu machen ohne dabei ein Wort zu zerhacken. Lösung:

sed -i -e 's#\(.\{80\}\S*\s\)#\1\n#g' *

Ugly syntax is ugly

Folgendes ist eine sehr schlimme Variante von Bildeinbettung in Markdown (imho). Exitwp ist da aber anscheinend anderer Meinung und hat damals alle Bilder so eingebunden:

Original:
[![CC by Drunken Monkey](/uploads/2010/10/243104896_eb10db6e1d.jpg)](/uploads/2010/10/243104896_eb10db6e1d.jpg)

Wünschenswert:
{% img center /uploads/2010/10/243104896_eb10db6e1d.jpg %}

Aber auch das hab ich dann noch hinbekommen.

sed -i -e 's#.*\[![^\(]*(\([^\)]*\).*#{% img center \1 %}#g' *

Misc

Zusätzlich noch die Domain zwetschge.org komplett aus den Posts gekratzt, Alte removed und kaputte Syntax aus exitwp generierten Posts.

$ git commit -a -m "fixed every broken markdown img tag with epic sed line"
[master b0b1693] fixed every broken markdown img tag with epic sed line
 78 files changed, 137 insertions(+), 137 deletions(-)

Außerdem hab ich die Hälfte des Blogposts schon bei Twitter gespoilert. Komisch das ich meinen Account da wieder reaktiviert hab.

Comments (17)

dakira on 2012-11-23T10:59:39
Hey. Kannst du mal ein wenig erzählen, wie du zu Octopress gekommen bist?

noqqe on 2012-11-23T16:22:16
Klar, dazu gibts nen Blogpost: http://noqqe.de/blog/2012/03/05/switched-to-octopress/. Ham uns im örtlichen Hackerspace bissl über Blogging Software unterhalten und dann kam (zum Großteil wegen Markdown und wegfallen von PHP) eins zum anderen :) Wenn du konkrete Fragen hast meld dich ;)

dakira on 2012-11-23T16:33:35
Dort wird die Motivation auch nicht erklärt. Meine Frage ist: Warum nicht mehr WP? Wieso ist PHP weggefallen, oder willst du nur sagen, dass octopress auf ruby setzt. Was heisst "wegen Markdown"? Schreibt man in octo die Artikel mit Markdown? Also kurz: Was war die Motivation?

noqqe on 2012-11-24T07:56:36
Naja: * Das ich kein PHP mehr brauche hat mir Security Technischund Performance Technisch gefallen. Die statischen HTML Files die ich per rsync einfach hochladen kann, find ich total nice. * Markdown: Ich denke dabei ist der Workflow ganz wichtig. Das Wordpress über seine Admin GUI "händeln" ist mir schon immer schwer gefallen. Die beiden Editoren bedienen. Es hat sich immer wie ein Kampf angefühlt. Wenn ich jetzt einen Post schreibe sitze ich vor meinem Vi mit Synatx Highlightning für die (wie ich finde) wunderschöne Auszeichnugssprache Markdown und setze danach einen git commit ab. Außerdem war WP einfach viel zu groß für das was ich damit mache. Ich wollte was simples, minimalistisches. Damit fühl ich mich jetzt wohler.

Dr. Azrael Tod on 2012-11-26T10:59:48
nicht zu vergessen wie ekelhaft vieles bei Wordpress ist... Ich hab mir vor längerer Zeit mal den Aufwand gemacht und versucht die Datenbank in ein eigenes Projekt zu konvertieren. Dinge wie permanente, absolute URLs in dem HTML-Strings die dieser Müll direkt in die Datenbank wirft sind noch die erträglichsten Sachen. Quellcode-Mäßig sieht es noch schlimmer aus.

bo on 2012-11-27T09:24:12
Statt des ersten sed kannst du auch `fmt` benutzen, müsste man sich aber noch etwas einfallen lassen, wie man damit umgeht, wenn man h1 und h2 mit `=` und `-` unterstreicht, die zieht er dann nämlich in eine Zeile zusammen. Könnte man natürlich auch nachträglich wieder hinbiegen, aber ich fände das deutlich schöner, wenn das von Anfang an nicht passiert. Das Problem gibt es nicht beim Atx-Style mit Hashes. Btw., die inline Bilder als {% img ... %} sind nicht Standard-Markdown, die andere Variante ![alt](url) ist es aber schon. Hat also 'nen Grund. :)

Martin on 2012-11-30T09:31:50
Ich sekundiere den letzten Abschnitt. Diese nicht standardkonformen Extension in Jekyll sind eine Pest. Wenn sowohl das Bild als auch die URL identisch sind, kann man das einfach referenced machen: [![alt][ref]][ref]. Nicht sonderlich intuitiv, aber dafür mit einem alternativen Text, der seit HTML5 Pflicht ist ;-)

noqqe on 2012-11-30T13:27:30
Pflicht bei html5? Wusst ich nicht O_o Sagen wirs so, sollte "Markdown - The Spec" jemals erscheinen, werd ich meine Syntax daran ausrichten. Ging ja auf HN genug rum die Diskussion ;)

posativ on 2012-11-30T21:18:31
Ja, die Markown Specs sind sehr unbefriedigend. Aber auf Jekyll zu setzen macht es schwieriger, zu anderen blog engines zu wechseln (z.B. wenn Du die lange Kompilierungszeit von Octopress/Jekyll leid bist :p)

noqqe on 2012-12-01T09:48:50
Naja zuletzt ging es ja drum einmal _einen_ Spec für Markdown zu definieren. Schau dir mal bei Wikipedia die Liste der Implementierungen [1] an. Und jede davon funktioniert ein bisschen anders. Sollte sich _ein_ Standard durchsetzen und tatsächlich zum RFC werden müssen eh einige leute was tun. Zum Thema Kompilierungszeit: Wie lange braucht dein Framework eigentlich so wenn du deinen Blog baust? Hätt mich eh mal interessiert :) [1]: http://en.wikipedia.org/wiki/List_of_Markdown_implementations

posativ on 2012-12-01T12:08:36
Pro Änderung/neuer Eintrag ~1s, from scratch ca. 10s, bei 170 Beiträgen. Wie lange braucht dein Blog mit Octopress?

noqqe on 2012-12-01T12:45:14
ah. ok. Bei mir sinds zwischen 20 und 30 Sekunden from scratch bei 279 Posts. (gerade selber zum ersten mal wc -l gemacht. wow 280 schon O_o)

posativ on 2012-12-01T13:23:18
Kann Octopress/Jekyll inzwischen was anderes als from scratch? 280 sind schon ordentlich viel. Gratulation dafür!

noqqe on 2012-12-01T13:35:09
Ich weiss nicht ob ich jetzt ein bisschen Ironie raushöre bei deinen "280" :D Jo du kannst rake isolate['post-name.markdown'] machen. Dann werden alle anderen Posts weggeschoben und du kannst das für rake preview schön zum testen nutzen. Bevor du Uploadest musst du aber dann trotzdem rake gen_deploy machen. (In dem Fall macht gen_deploy dann: integrate, generate, deploy) für dich.

noqqe on 2012-12-01T13:35:50
whatever. wollte deine Engine aber auch mal ausprobieren. :)

Martin on 2012-12-02T17:33:13
Nein, das war keine Ironie, sondern echte Anerkennung! :-) Das mit dem `rake isolate [/path/]` kannte ich gar nicht. Natürlich eine effektive Umgehung der kompletten Rekompilierung. Dann ist Octopress ja gar nicht mal so übel wie ich dachte (abseits der Jekyll-only Syntax :P)

Martin on 2012-12-02T17:34:45
Freue mich über jeden Nutzer, ist jetzt aber vom Theme her nicht so hübsch wie Octopress und bietet auch nicht diese hunderttausend one-click-and-go Features. Vielleicht sieht man sich ja mal in #acrylamid auf Freenode.