Nature

Eine Nanoc Website from Scratch (Teil 2)

, 2015-03-11T00:00:00+01:00

Nachdem wir in Teil 1 das Grundgerüst von Nanoc angesehen haben, mochte ich im heutigen Teil 2 ein paar Worte darüber verlieren, wie Nanoc arbeitet, wenn es unsere Website erstellt und ein paar der wichtigsten Begriffe einführen, mit denen wir es bei Nanoc immer wieder zu tun haben. In Teil 3 stürzen wir uns dann mitten in die Arbeit.

Items und Sources

Alle Dinge die Nanoc verarbeitet sind Items. Dabei können das durchaus sehr verschiedene Dinge sein. Da wir eine Website für einen Podcast bauen möchten sind unsere Items zum Beispiel die mp3 Dateien für die einzelnen Folgen. Jeder Text ist ein Item, jeder Blogeintrag also, jedes Bild ist ebenfalls ein Item. Nanoc kennt dabei grundsätzlich zwei verschiedene Arten von Item:

  • Binäre Items und
  • Textitems

Die letzteren sind recht einfach zu erkennen. Man kann sie in der Regel mit einem einfachen Texteditor erstellen, und sie lassen sich eben auch lesen wie Text. Darunter fallen neben ganz einfachen TXT Dateien auch so verbreitete Formate wir Markdown, oder das von mir für diesen Artikel verwendete Textile. Nanoc macht es sich recht einfach, welche Dateien es als Textitems betrachtet, man kann ihm die Dateiendungen, die es für Text halten soll ganz einfach in der Konfiguration mitteilen, die gängigsten kennt es bereits.

Alle Dateien, die nicht in dieser Konfiguration über ihre Dateiendung als Text eingetragen sind, werden automatisch von Nanoc als binäre Items betrachtet.

Wie selbstverständlich sind wir die ganze Zeit davon ausgegangen, das diese Items aus Dateien erzeugt werden. In Wirklichkeit verfügt Nanoc über das Konzept der "Datenquelle", die in der Praxis als Source bezeichnet wird. Das bedeutet, das wir für alle möglichen Dinge, wir die wir ein Ruby-Modul mit einer festgelegten Schnittstelle bauen Items erzeugen können. Das können Einträge in einer Datenbank sein, aber mit etwas Fantasie könnte man auch Suchmaschinentreffer, oder jede Frucht in seinem Obstkorb zu einem Item machen, indem man sich lediglich eine passende Umsetzung von Daten in ein Item ausdenkt.

Für unser Beispielprojekt bleiben wir aber bei Dateien. Nanoc macht es uns dadurch leicht, indem es für diesen gängigen Anwendungsfall bereits mehrere Sources mitliefert. Die beliebteste davon ist filesystemunified

Attribute

Das besondere an der Datenquelle filesystemunified ist, das sie nicht einfach eine Datei zu einem Item umwandelt, sondern nebenbei auch noch diesen Items Eigenschaften mitgeben kann, die in Attributen abgespeichert werden. Bei Text-Items ist das sehr einfach. Diese stammen sowieso aus einer Textdatei, da können wir die Attribute einfach an den Anfang der Datei schreiben. Für diesen Blogeintrag sehen die Attribute zum Beispiel so aus:

---
kind: article
category: meta
topic: tech
title: "Eine Nanoc Website from Scratch (Teil 2)"
created_at: 2015/12/06 13:00:00
tags: [nanoc, nachtnerd, blog, podcast]
pic: nanocworkshop.png
flattr: yes
excerpt: "Nachdem wir in Teil 1  das Grundgerüst von Nanoc angesehen haben, mochte ich im heutigen Teil 2 ein paar Worte darüber verlieren, wie Nanoc arbeitet, wenn es unsere Website erstellt und ein paar der wichtigsten Begriffe einführen, mit denen wir es bei Nanoc immer wieder zu tun haben."
---

Welche Attribute wir benutzen ist dabei völlig uns überlassen. Ich benutze für dieses Blog allerdings ein Artikelsystem, das dafür sorgt, dass die Artikel in der richtigen zeitlichen Reihenfolge auf der Website erscheinen. Dieses kümmert sich per Vereinbarung nur um Items, die @kind: article@ als Attribut haben. Die Attribute category und topic benutze ich in diesem Blog, um die Artikel ein wenig thematisch zu trennen. Im Endeffekt bestimmt sich darüber auch das kleine Icon unter dem Datum bei jedem Artikel, und es hat auch Einfluss auf das Titelbild des Artikels. Aber das habe ich mir mal selbst programmiert, von Hause aus wertet Nanoc diese Attribute nicht aus, wir werden uns aber einige Attribute ausdenken, und die auch einsetzen. Attribute sind ein guter Ort um verschiedenen Items verschiedene Eigenschaften zuzuweisen. Der Attributblock selbst wird mit einer kleinen Linie aus 3 Bindestrichen eingeleitet, und auch abgeschlossen. Unter dem abschließenden Trennstrich kommt dann der eigentliche Text.

Bei binären Items können wir natürlich nicht einfach in die Datei schreiben. Normalerweise sieht man bei Bildern oder MP3 Dateien auch keinen Klartext im Editor. Hier benötigen wir also einen anderen Weg Attribute "anzuhängen". Das unifiedfilesystem benutzt dazu einfach eine Datei die genau so heißt wie die Binärdatei selbst, nur mit der Dateiendung .yaml. Wenn wir also Attribute an die Datei Sendung1.mp3 anhängen wollen, dann schreiben wir die einfach in eine Textdatei namens Sendung1.yaml und alles ist gut. Sobald Nanoc aus unseren Dateien Items erzeugt hat, können wir die Attribute für jedes Item auf dem gleichen Weg lesen und schreiben, unabhängig davon, ob sie wie bei einer Textdatei unmittelbar in der Datei geschrieben wurden, oder wie bei einer Binärdatei in einer separaten YAML-Datei. Der Kopf der Textdatei hat das gleiche Format wie der Text in der separaten Datei nämlich das YAML Format. Das wichtigste in Kürze: Das Leerzeichen hinter dem Doppelpunkt ist wichtig. Auf die Details gehen wir dann später ein.

Items

Wenn aus all diesen Dateien dann Items werden, ist es für Nanoc völlig unerheblich, dass das mal Dateien waren. Konsequenterweise findet man dann in der Bezeichnung des Items auch keinen Hinweis mehr darauf. Ein typisches Item könnte zum Beispiel "Sendungen/Folge1/Titelbild" heißen. Items werden also in der Regel hierarchisch in einem Baum organisiert, und beginnen und enden immer mit einem /. Aus einem Item muss später auch nicht zwingend eine HTML Datei werden. Es kann durchaus nur intern verwendet werden, oder gar mehrfach in verschiedenen Dateien verwendet werden. So können zum Beispiel aus einer JPG Datei für die Ausgabe neben der Originaldatei noch weitere Dateien in kleineren Größen erzeugt werden. Es handelt sich aber nur um ein Item mit verschiedenen Repräsentationen.

Nachdem wir also die wichtigstem Begriffe in Nanoc (allen voran das "Item") zumindest umrissen haben, begeben wir uns in der kommenden Folge 3 unmittelbar in die Arbeit an unserer Podcast-Website.

Der Stand zum Ende dieses Teil findet sich "hier":https://github.com/andydrop/nachtnerd/tree/87caa28a1101f46a20f239c0b6d85967


Nature

Warpzonista Coders Club

, 2015-03-10T00:00:00+01:00

.. title: Warpzonista Coders Club .. author: Andreas Drop .. email: andy@remline.de .. date: 2015-03-10 .. uri: WarpzonistaCodersClub .. keywords: programmieren, warpzone .. tags: personal, hacking .. language: de

Ende Februar schien die Sonne so schön durchs Fenster, und aus dem Kopfhörer ertönte kubanische "Son":https://de.wikipedia.org/wiki/Son_Cubano Musik. Da kann ein Programmierer vor seinem Code schon mal gesellige Anwandlungen bekommen.

Also haben sich am 27.Februar, einige Menschen in der "Warpzone":http://warpzone.ms mit dem Ziel getroffen Softwareentwicklung, die ja üblicherweise eher im stillen Kämmerlein passiert, etwas sichtbarer zu machen. Dieses erste Treffen des Warpzonista Coders Club diente in erster Linie dem gegenseitigen Kennenlernen. Daher haben wir einfach mal kurz angerissen, was so jeder an persönlichem Interesse am Programmieren hat. Wir haben über Entwicklungsumgebungen gefachsimpelt, und dabei natürlich mit einem Augenzwinkern die "Frage des besten Editors":https://de.wikipedia.org/wiki/Editor_War geklärt.

Der geneigte Leser möge bitte nach "Church of Emacs":http://www.youtube.com/watch?v=S76pHIYx3ik und "Cult of VIM":https://www.google.de/search?hl=de&q=Cult+of+Vim&hl=de googeln.

Eines der kurz angesprochenen Themen war auch die Programmiersprache Rust, die zwar noch als recht neu gilt, aber auf keinen Fall mehr in ihren Kinderschuhen steckt. Im Mai soll wohl die Version 1.0.0 erscheinen, was bedeutet, das sie als stabil genug für produktiven Einsatz betrachtet wird. Einen schönen Vortrag zu Rust gab es neulich beim CCC in Aachen. Hier eine "Aufzeichnung":https://videoag.fsmpi.rwth-aachen.de/?view=player&lectureid=4532#content dazu.

Obwohl der Coders Club ein offenes Treffen für Menschen mit Interesse am Programmieren bleiben soll wäre es schön wenn die einzelnen Abende ein grobes Rahmenthema hätten. Daher schlage ich für das nächste Treffen am 27. März einfach mal "Bücher" vor. Welche Bücher, abseits der Handbücher für eine einzelne Programmiersprache sollte man mal gelesen haben. Vielleicht Bücher zu gutem Workflow, oder eher philosophisches zum Programmieren. Welche Bücher sind völlig überbewertet, welche Verlage können einfach nicht übersetzen.

Wenn ihr also auch dabei sein wollt, kommt einfach am 27. März in die Warpzone, und schaut vorher mal in euer Bücherregal. Welches eurer Bücher hat euch weiter gebracht, und für welches hättet ihr am liebsten euer Geld zurück.

Themenideen für weitere Abende bitte in die Kommentare.

Mir fallen da noch folgende Themen ein

  • Was sollte eine gute IDE können.
  • Gibt es sowas wie gute Anfänger-Sprachen?
  • Wie sieht eure Arbeitsumgebung aus. Hört ihr Musik? Wie ist die Beleuchtung?

Und wo wir gerade bei Programmier-Anfängern sind. Der Coders Club möchte ausdrücklich eure Anlaufstation sein, wenn ihr gerade die ersten Schritte in der Programmierung gelernt habt, und nun tiefer eintauchen möchtet, und euch fragt was ihr mit dem erlernten Wissen jetzt tolles anfangen könnt.


Nature

Das Vlannkuchen Experiment

, 2015-01-09T00:00:00+01:00

Im Moment bin ich ja Strohwitwer, und daher neben meiner eigenen Ernährung auch für die vom Töchterlein alleinverantwortlich. Nun bin ich nicht unbedingt der Held an der Herdplatte, und daher gibt es für den Anfang zunächst einmal Speisen die ich problemlos zubereitet bekomme.Später,wenn die nötige Routine zurückgekehrt ist, wird dann wieder mehr nach Rezept gekocht. Eines der ersten Mittagessen (auch weil noch eine Handvoll Äpfel schon ziemlich schrumpelig wurden) war Apfelpfannkuchen, und einen Tag später gab es zu irgendetwas Vanille Vla als Nachspeise. Das brachte meine Tochter wohl auf den Gedanken

bq. Kann man eigentlich auch Pfannkuchen aus Vla machen?

Gute Frage eigentlich. Vla ist ja generell ein Milchprodukt. Also sollte man die Milch auch durch Vla ersetzen können. Ein Blick auf die Inhaltsstoffe brachte jetzt auch nichts, was einem Einsatz für die Pfannkuchenproduktion generell entgegenstand. Als Verdickungsmittel wurde Maismehl verwendet. Das schlimmste Ergebnis, welches ich mir vorstellen konnte, war also, das wir nachher statt eines Weichen Eierkuchens einen harten Taco in der Pfanne haben könnten. Auch nichts dramatisches, also wurde aus der Idee ein Plan, den wir soeben durchgeführt haben.

h3. Das Grundrezept

!>Vlannkuchen1.jpg(Drei Eier in einer Tasse aufgeschlagen)!

Ich bin kein Freund von von Angaben in Millilitern oder Gramm. Am allerliebsten sind mir Rezepte, bei denen ich die Zutaten in Tassen oder Löffelmaßen habe. Pfannkuchen kann man sehr schön mit Tassen abmessen. Mein Grundrezept für Zwei Personen pappsatt ist:

Eine Tasse Eier

Eine Tasse Milch

Eine Tasse Mehl

Eine Tasse Eier entspricht dabei gut 6 Eiern je nach Tasse. Da wir heute eigentlich schon gut zu Mittag gegessen hatten, und wir im Zweifel nicht allzuviel Abfall erzeugen wollten haben wir es mit jeweils der halben Menge gemacht. Da ich nicht weiß, ob man unsere Eier nun als große oder kleine Eier bezeichnen kann sieht man auf dem Bild auch das Gewicht der drei Eier. Netto knapp 150 Gramm.

h3. Die Variante

!<Vlannkuchen2.jpg(Der erste Vlannkuchen in der Pfanne)!

Wie schon erwähnt wollten wir in dem Rezept lediglich die Milch durch Vanille Vla ersetzen. Nicht mit dem ganz tollen, den ich mal in den Niederlanden aus eine Glasflasche bekommen habe, aber der aus dem Tetrapack vom örtlichen Discounter ist ein akzeptabler Ersatz. Die möglichen Fehlerquellen waren vor allem drei Befürchtungen

  1. der Teig könnte zu dick werden (Lösung: Mehr Milch!)
  2. der Teig könnte durch das Maismehl beim Backen eher tacoartig werden (Lösung: Hey Tacos geil!)
  3. der Teig könnte durch den höheren Zuckeranteil zu schnell anbrennen (Lösung: Teig ausreichend dünn auftragen, damit er fertig ist, bevor aus Zucker Kohlenstoff wird)

Beim Anrühren des Teiges stellte sich aber recht schnell heraus, das er ausreichend dünnflüssig wurde, und damit Problem 1 und 3 wohl nicht auftreten.

h3. Die Zubereitung

!>Vlannkuchen3.jpg(Ein auseinander gerissener Pfannkuchen auf einem Teller)!

Die Menge, die wir angerührt hatten reichte für 2 Vlannkuchen in der haushaltsüblichen Dicke, also nicht wie diese hauchdünnen Kirmes-Crêpe, sondern eben "futtern wie bei Muttern" Beim ersten Exemplar hatte ich doch noch zu viel Angst, das er mir zu braun wird, und habe ihn daher ein wenig zu früh gedreht. Als Ergebnis ist mir der Pfannkuchen beim Wenden zusammengepappt, und konnte auch nicht mehr gerettet werden. Demnach gab es zunächst also keinen Vlannkuchen, sondern eher einen Kaiservlarrn. Ich hab ihn kurzerhand komplett in Teile zerlegt, damit wenigstens alle Teile von allen Seiten braun wurden. Der positive Nebeneffekt dabei war der wirklich sehr leckere Vanille Geruch, der sich in der Küche ausbreitete. Uns beiden lief jedenfalls schon trotz der Mißgeschicks das Wasser im Munde zusammen.

!<Vlannkuchen4.jpg(Der zweite Vlannkuchen in der Pfanne in nahezu perfektem braun)!

Der zweite Vlannkuchen wurde dann schon deutlich besser. Ich habe ihn nur lediglich im Restfett vom ersten gebacken, und ich bilde mir ein, dass die etwas trockeneren Exemplare sich auch einfach besser wenden lassen. Zumindest klappte er nun nicht mehr einfach zusammen, und wurde dadurch auf beiden Seiten goldbraun. Trotzdem keine Spur vom gefürchteten Taco Effekt. Ich nehme an, das die gesamte Menge an Maismehl dazu einfach zu gering ist. Der Vanille-Duft in der ganzen Küche lies uns auch mittlerweile das Wasser im Munde zusammenlaufen, daher landete Nummer 2 auch Ruck-Zuck auf dem Teller und wir haben uns gemeinsam an die Verkostung gemacht.

h3. Das Fazit

!>Vlannkuchen5.jpg(Ein Pfannkuchen mit Vanille- und Schoko Vla bestrichen)!

Nun, was soll ich sagen: LANG-WEI-LIG. Sowohl der kleingezupfte, als auch der normale Vlannkuchen schmeckte exakt wie ein ganz normaler Pfannkuchen. Vom Vanille-Aroma war absolut nichts mehr übrig geblieben, weder für die Nase, noch für den Gaumen. Um das ganze noch irgendwie zu retten, haben wir noch versucht, ob man es anderweitig mit Vla aufwerten kann. Wir haben also jeweils einen Klecks Vanille- und Schoko Vla auf die Pfannkuchen gegeben. Schoko-Vla ist sowieso nicht mein Geschmack, aber meiner Tochter hat der Pfannkuchen damit geschmeckt, und auch mein Anteil wurde durch den Vanille Vla durchaus aufgewertet.

Wenn man also unbedingt Vla und Pfannkuchen miteinander verbinden möchte, dann sollte man den Vla einfach am Ende über den fertigen Pfannkuchen kippen, und eventuell vorher noch etwas erhitzen, denn im fertigen Resultat ist der Geschmack ansonsten nicht auszumachen.


Nature

Warum ich eine andere Blogtechnik nutze

, 2010-12-17T00:00:00+01:00

Es gibt reichlich Content Mangement Sytem, die auch frei verfügbar sind. Warum ich lieber Nanoc verwende beschreibe ich in diesem Artikel

Wenn man wie ich im Laufe der Zeit schon einige Blogsysteme ausprobiert hat, stellt man fest "perfekt ist davon keines". Aber das liegt in der Natur der Dinge. So ein Blogsystem wird für eine breite Palette von digitalen Publikationen genutzt. Von Katzenblogs, dem Kleingartenverein Kleinkleckersdorf, oder dem Bundesverband der Demokratiepartei. Dabei solle es gleich gut mit Text, Bildern Filmen, oder anderen Medien klarkommen.

Oft ist es jedoch so, dass dies Eigenschaften nicht in einem einzelnen Blog gefordert werden. In diesem Blog gibt es zum Beispiel nur einen einzelnen Autoren, das wäre eine Autorenverwaltung mit Authentifizierung(wer ist der Benutzer) und Rechteverwaltung(was darf der Benutzer) völliger Overkill.

Dieses Blog

Dafür soll mir die Technik die Haupttätigkeit des Schreibens so einfach wie möglich gestalten. Außerdem möchte ich möglichst wenig Arbeit damit haben mich um die Sicherheit des Blogs zu kümmern.

Nanoc kam mir dabei sehr entgegen.

  • Ich schreibe die Texte einfach in irgendeinem normalen Editor auf meinem System. Das ist in der Regel gEdit, aber auch Nano oder Scite benutze ich hin und wieder.
  • Für die sparsame Formatierung zeichne ich meinen Text mit Textile aus. das ermöglicht mir von einfachen Dingen wie Unterstreichungen oder Fettdruck auch das schnelle verlinken, oder das einbinden von Bildern.
  • Nanoc ist nur ein Compiler, der aus meinen einfachen Textdateien dann HTML Seiten erzeugt, und dazu die hinterlegten Layouts und Filter benutzt. Da diese Seiten nicht interaktiv sind stellen sie kein zusätzliches Einfallstor für einen Angreifer dar.
  • Filter und Zusatzfunktionen kann ich mir in Ruby selbst schreiben. Wie man sieht ist die rechte Spalte bisher noch weitgehend leer. Hier sollen in der nächsten Zeit für den Leser nützliche Verknüpfungen zum Text zu finden sein.

Die ersten beiden Zusatzfunktionen verrichten dabei bisher eher unauffällig ihre Arbeit. Sie fügen automatisch Links in meinen Text ein, wenn bestimmte Wörter darin auftauchen, und sorgen dafür, dass ein simples Bild, welches unter der Creative Commons Lizenz steht eben auch lizenzkonform mit dem Autoren, dem Originalwerk und dem Lizenztext verlinkt werden.

Über gute Ideen, welche Funktionen nützlich und/oder erwünscht wären freue ich mich immer. Entweder legt ihr sie in den Kommentaren ab, oder schreibt mir einfach eine Mail.


Nature

Allem Anfang wohnt ein Zauber inne

, 2010-12-08T00:00:00+01:00

Herzlich willkommen in meinem Blog. Das ist nicht das erste Blog, welches ich führe, aber das erste für mich , das ich von vornherein mit einem fest umrissenen Themenkreis starte. Es wird hier um das Internet, die Gesellschaft, und die Beziehungen zwischen beiden gehen.

Ich selbst bin nun schon seit einigen Jahren im Internet, und seit etwa 1984 halte ich mich in den diversen Netzwerken auf. Mailinglisten hießen noch Bretter, und die eMail noch Netmail.


Andy Drop

I like it, when I see the intentions of a code author, and i like to see it written down in remark lines. Why didn't someone do that with the world. It would be far easier to understand. So I started to document my world wherever I see the need to do so. In text. With Emacs Org mode. I want to share this world with you.


Categories

  • Emacs logoEmacs
    The OS-like text editor
  • Org mode logoOrg mode
    Emacs built-in mode for organizing everything
  • Plaintext logoPlaintext
    Using plain text for everything