v5.HerH.de - Blog2017-10-10T02:12:52+00:00Henrik 'HerHde' Hüttemannmail@herh.deSpotify ist doof.2016-06-16T00:00:00+00:00/blog/spoitfy-ist-doof
<h2 id="worum-geht-es">Worum geht es?</h2>
<p>Es geht um <em>Spotify</em>, einen kommerziellen Musik-Streaming-Dienst und dessen Sinn und Unsinn. Es gibt kostenlose und kostenpflichtige Konten:</p>
<blockquote>
<ol>
<li>Free</li>
<li>Zugriff auf den Spotify Katalog über Deinen Computer und Dein Tablet – auf Abruf und mit Werbung
<ul>
<li>Nur Shuffle-Zugriff auf Deinem Handy (Android und iPhone) – mit Werbung</li>
<li>Erstellen und Teilen von Playlists</li>
<li>Premium</li>
</ul>
</li>
<li>Musik ohne Werbung und auf Abruf auf Deinem Computer, Handy und Tablet
<ul>
<li>Hochqualitatives Streamen (320 kbit/s)</li>
<li>Möglichkeit, auch offline zu hören</li>
<li>Spotify mithilfe von Connect auf Lautsprechern, Fernseher und im Auto abspielen</li>
<li>Erstellen und Teilen von Playlists</li>
</ul>
</li>
</ol>
<p>– Auszug aus der <a href="https://support.spotify.com/de/account_payment_help/subscription_options/subscription-levels/">Spotify-Hilfe</a></p>
</blockquote>
<p><strong><em>Premium</em></strong> kostet 10€ im Monat, 5€ für Studenten und es gibt “Familien”-Abos á 15€ für 6 Konten (2,5€/Konto).</p>
<h2 id="spotify-ist-toll">Spotify ist toll</h2>
<p>Es ist eine tolle Idee, “jederzeit” die Musik der Wahl hören zu können, ohne sie lokal abzuspeichern, besonders mit den kleinen Speichern der Mobiltelefone.</p>
<p>Außerdem bietet Spotify verschiedene vorgefertigte Playlists, erledigt also einiges an redaktioneller Arbeit für die Nutzer und hilft ihnen, neue Musik kennen zu lernen.</p>
<p>Für den Standardpreis bekommt man sonst so ca 2 Alben auf CD (Das ist so ein legacy-hardware-Müll). Also hat man mit Spotify deutlich mehr Auswahl. Ich meine auf legalem Weg.</p>
<h2 id="aber">…aber</h2>
<p>Es gibt einige Punkte, die ich mehr oder minder Schlecht finde.</p>
<ul>
<li>Das kostenlose Abo beinhaltet Werbung (na gut, ist ja noch in Ordnung)</li>
<li>Du musst online sein, um Musik zu hören, außer, du zahlst.</li>
<li>Soweit ich gesehen habe, bedeutet Shuffle-Zugriff unter <em>1.2</em>, dass man sich die Musik nur begrenzt aussuchen kann.</li>
<li>Man hat keine Kontrolle über die Musikbibliothek, was es da nicht gibt, kriegt man nicht, und was da ist, kann manchmal sogar verschwinden.</li>
<li>Man kann Musik mit anderen “teilen”, aber sie nicht an sie weiter<em>geben</em>.</li>
<li>Die halten 320 kbit/s für hochqualitativ! Okay, ja, kann man machen, aber mancht doch einfach mal auch lossless für Premium-Audiophile.</li>
<li>Man muss sein Geburtsdatum und Geschlecht angeben. Leute, das muss doch nicht sein.</li>
<li>Client und Schnittstellen sind nicht frei, also
<ul>
<li>muss ich noch ein Programm (oder noch eine tolle App mehr für nur einen Zweck) installieren</li>
<li>oder den Webplayer nutzen</li>
<li>statt meiner bisherigen Media-/Audioplayer</li>
<li>und für die Nutzung meiner bisherigen Infrastruktur z.T. Premium oder andere Soft-/Hardware haben.</li>
<li>Ach ja, außerdem muss ich bei jedem Neustart des Client eine private Session starten, wenn ich der Meinung bin, dass es keinen was angeht, was ich höre.</li>
<li>Ja klar, bestimmt hat das was mit DRM zu tun.</li>
</ul>
</li>
<li>Es kostet monatlich.
<ul>
<li>Und ich besitze nichts von der Musik.</li>
<li>Die Künstler haben nicht so viel davon.</li>
<li>So als Student läppert sich das. Sagen wir mal 30€ für Internet, 10€ fürs Mobiltelefon, 5€ für Spotify, 10€ für Netflix, da haben wir schonmal 55€ im Monat für digitalen Lifestyle. Okay, wenn man sich nichts davon mit anderen teilt.</li>
<li>Also Netflix und Spotify kosten so 15€ im Monat, der Rundfunkbeitrag 17,5€. Privatisierungswarnung! Spaß beiseite, wenn man von den öffentlich-rechtlichen auch so eine Auswahl an Musik, Filmen und Serien bekommen würde, ohne “Depublizierung” und so… Hmm, das kling nach ner ganz guten Idee, bei der auch die “Contentmafia” noch genug Geld bekommen würde. Da würde ich auch nen Rundfunkbeitrag von 20€ pro Monat pro Haushalt oder mehr gerechtfertigt finden. So mit offenen Standards und Lizenzen und in richtig gut. Müsste man™ mal durchrechnen und sich genauer überlegen.</li>
</ul>
</li>
</ul>
<h2 id="es-ist-schon-okay">Es ist schon okay.</h2>
<p>Ja okay, Spotify, Netflix und Konsorten sind das, was ich mir früher gewünscht habe, nur noch nicht ganz so frei und wunderbar, aber schonmal ein ganz guter Schritt. Mach weiter so - oder so ähnlich.</p>
<p>An sich kann ich es verstehen, Musik und Videos als Luxus anzusehen und in einem dementsprechenden System mit Begrenzungen und Kosten auszuliefern, andererseits ist das ganze auch kulturelles Gut, zu dem jeder Zugang, einige Nutzungsrechte und Freiheiten haben sollte, aber das ist wahrscheinlich noch zu progressiv und würde die Musik töten.</p>
<p>Ich persönlich liebäugle ja eher mit Netflix, da ich viel Musik auf Platte habe und große HD Videos seltener schaue, also nur selten auf Platte brauche, allerdings muss ich bei solchen Sachen auch immer genug im Monat oder Durchschnitt gucken, damit es sich lohnt. Und wenn das Konto ausläuft, sind die Filme weg.</p>
<p>Bis ich mich überwinden kann, dafür monatlich hinzublätter, gucke ich mir die Anstalt, heute-show und Tatortreiniger an, höre Podcasts und L’UniCo und mache mich darüber lächerlich, was es alles für * as a Service-Sachen gibt.</p>
Willkommen in der Kryptographie2015-04-01T00:00:00+00:00/blog/willkommen-in-der-kryptographie
<h2 id="warum-verschlüsselnß">Warum verschlüsseln??ß?</h2>
<h2 id="was-ist-kryptographie-und-so">Was ist Kryptographie und so?</h2>
<p>Kurz und knapp: Verschlüsselte Kommunikation, in dem Sinne werde ich es hier erklären.</p>
<h2 id="verschiedene-arten">Verschiedene Arten</h2>
<p>Früher, als alles noch besser war, kam man (bspw. später auch <a href="https://de.wikipedia.org/wiki/Caesar-Verschl%C3%BCsselung">Cäsar</a>) auf die Idee, Botschaften unlesbar zu machen, für den Fall, dass jemand den Boten abfängt.
Später kam <a href="https://de.wikipedia.org/wiki/Kerckhoffs%E2%80%99_Prinzip">man</a> auf die Idee, dass <em>die Sicherheit eines kryptographischen Verfahrens allein auf der Geheimhaltung des Schlüssels basieren soll – das Verfahren selbst muss also nicht geheim gehalten werden</em>. Das ist jetzt üblich.</p>
<h3 id="symmetrische-crypto"><a href="https://de.wikipedia.org/wiki/Symmetrisches_Kryptosystem">Symmetrische Crypto</a></h3>
<p>Also nutzt(e) man einen Schlüssel, mit dem man den Informationen en- und decodieren kann, den jeder Teilnehmer kennen muss. Dazu fallen oftmals Begriffe/Namen von Verfahren, wie etwa:</p>
<ul>
<li>AES oder Rijndael</li>
<li>DES, Triple-DES</li>
<li>Blowfish, Twofish</li>
<li>RC# (RC4 ist broken!)</li>
<li>Serpent
Symmetrische Verfahren teilen sich auf in…</li>
</ul>
<h4 id="strom--und-blockchiffre"><a href="https://de.wikipedia.org/wiki/Stromverschl%C3%BCsselung">Strom</a>- und <a href="https://de.wikipedia.org/wiki/Blockverschl%C3%BCsselung">Blockchiffre</a></h4>
<p>Stream cipher verschlüsseln Buchstaben für Buchstaben, block cipher nehmen Blöcke vordefinierter Länge und <em>wumms</em>. Es gibt Unterschiede, aber dieser gesamte Absatz ist relativ unwichtig für uns.</p>
<h3 id="asymmetrische-crypto">Asymmetrische Crypto</h3>
<p>Dann kamen 1976 <em>Whitfield <strong>Diffie</strong></em> und <em>Martin <strong>Hellman</strong></em> mit der Idee, jeweils einen <strong>öffentlichen</strong> Schlüssel zur Ver- und einen <strong>privaten</strong> (geheimen!) Schlüssel zur Entschlüsselung pro Person zu nutzen. Damit kann man auch über abgehörte Kanäle eine verschlüsselte Kommunikation führen und muss auch nicht den Schlüssel austauschen, wenn ein Teilnehmer nicht mehr vertrauenswürdig ist.</p>
<p><strong>TL;DR:</strong></p>
<ul>
<li>Public-key</li>
<li>+Verschlüsseln()</li>
<li>+Signatur verifizieren()</li>
<li>Private-key</li>
<li>+Entschlüsseln()</li>
<li>+Signieren()</li>
</ul>
<h4 id="public-key-encryption">Public-key encryption</h4>
<h4 id="digitale-signatur">Digitale Signatur</h4>
<h4 id="public-key-authentification">Public-key authentification</h4>
<h4 id="otr">OTR</h4>
<h2 id="hash">Hash</h2>
<h1 id="was-wofür">Was wofür?</h1>
<h2 id="https">HTTPS</h2>
Neues aus dem Rathaus2015-03-26T00:00:00+00:00/blog/neues-aus-dem-rathaus
<p>Ich bin irgendwie aus Langeweile im Rathaus gelandet, weil dort eine öffentliche Sitzung stattfindet. nachdem ich den passenden Bus verpasst habe, bin ich 10 Minuten nach Beginn siegessicher einmarschiert. Profijournalist eben; nur da, um das wichtigste abzufischen.
Es geht um einen zusätzlichen verkaufsoffenen Sonntag im Advent, das schließen einiger Schulen und den <em>Neubau eines Trainings- und Nachwuchszentrums am Almepark Nord (0081/15 E1)</em>. Aus gesteigerter Langeweile fange ich an, diesen Text zu schreiben. Immer horche ich wegen dieser $Person namens Hüttemann auf.</p>
<p>Der Verkauf an den SCP wurde nach formfehlern und hin und her angenommen. doch jetzt geht es um den Haushalt 2015. <strong><em>Yay</em></strong>, es soll ein Defizit von 26 Millionen beschlossen werden, <strong><em>booh</em></strong>, sowas darf nicht weiter passieren.
Es geht mir nicht mal darum, zu berichten, irgendwie objektiv zu sein… Es wird mit strengem Ton reichlich Bullshit in die Mikrofone gekippt, der anscheinend bei den Fraktionssitzungen reichlich mit Phrasen gewürzt wurde.
Da will ich einfach nicht hier einen auf schlechten Reporter machen.</p>
<p>Ratsherr Markus Mertens sagt, dass der Haushalt endlich mal von einer breiten Mehrheit getragen werden soll. Das will die Mehrheit so!!1!!</p>
<p>Ratsherr Franz-Josef Henze meint: Schön und gut, aber dann möchten wir nicht alle verarscht werden, weil der Bürgermeister immer wieder den Hoppenhof als Fass aufmacht, indem er es “ergebnisoffen prüfen” will.
Wohnraum fehlt. Den Immobilienbesitzern sagt er, nach fest kommt ab, was die Mietpreisschraube angeht.
Die SPD will die Bibliotheksgebüren der CDU wieder aschaffen, weil die Leute seidem nicht mehr lesen wollen. Flüchtlinge, ja, die sind wirgendwie okay. Der Wirtschaft geht es nach ihrem eigenen Eindruck Jahr für Jahr besser, da wäre doch eine <em>moderate</em> Erhöhung der Steuern nicht sinnvoll? Ein Rundumschlag des Danks, besonders die Verwaltung arbeitet ordentlich. Dem Haushalt stimmen wir aber nicht zu.</p>
<p>Jetzt Ratsherr Ralf Pirsig von Bündnis’90/Die Grünen. Es krankt überall, dei Maspernhalle geht vor die Hunde; am Bahnhofsumfeld, den den CDU größer haben will. Universitätzstadt wollen sie hingegen nicht, auch nicht mehr Radwege oder Photovoltaikanlagen auf den Dächern der Städtischen Gebäude. Die Zentralstation soll da bleiben, wo sie ist.</p>
<p>Wo soll das Geld herkommen? Aus Steuern? Pah, Pirsing und co stimmen nicht zu.</p>
<p>Jetzt Ratsherr Reinhard Borgmeier von der DIP, dei den tollen ex-Salzkottener Bürgermeister platt macht. <em>Es passt kein Blatt Papier zwischen Bürgermeister und Fraktion</em> sagte der Bürgermeister. Er nimmt wohl keine Position ein, auf die man ihn festnageln könnte.
Der Soli, den PB abführt beträgt dieses Jahr 6 Millionen. Das könnte man doch auch hier nutzen!</p>
<p>Oh, die FDP ist am Zug. Die bloßen Zahlen kapiert doch keiner von euch. Mit dem Hauhaltsplan sind wir nicht von den <em>Damen und Herren im Kreis abhängig.</em> Diese kritische Flüchtlingssituation, man weiß nicht, wann sie einem zugeschickt werden und dann muss man ihnen noch Wohnungen auf dem Wohnungmarkt anmieten! Von unserem Geld!!!1!!!
Der SCP aber, der hat unser Herz erobert und ein <em>Marketingwunder</em> geschaffen. Damit wir aber nicht von der Presse wo anders verhöhnt werden, muss jetzt Trainingszentrum sein! Sportliche Heimat brauchen die!
Königsplätze und Marinengässchen müssen erneuert werden. Der Schandfleck muss verschwinden, von der Westernmauer muss man auf die Kiesau schauen können. Die Immobilenbesitzer dort sollen aus ihrem dornröschenschlaf geweckt werden, also sich gefälligst verpissen.
Die Jugend, Uni und die Kleinsten sind natürlich auch irgendwie wichtig.
<em>Wünsch dir was</em>-Geschenke sind mit der FDP nicht drin…
CDU und FDP sind auch so klug, am Bahnhof erst ein Parkhaus zu bauen, wenn das Umfeld geplant ist. Die Bahn wird auch dringlich angesprochen. Das Entree der Stadt muss schick aussehen.
Bla bla, letztendlich wird nur das umgesetzt, was der Bürger will.
wat.
wat. wtf.</p>
<p>Das war Ratsherr Dominic Gundlach.</p>
<p>Die FBI schickt Ratsfrau Karin Schnauß an den start. Ein einschläfernder Ton übernimmt die Soundanlage. Irgendwas mit <em>die rot-grüne Landesregierung zwingt uns</em> Man müsste sollte geprüft werden. Wir von der FBI konnten uns leider nicht durchsetzen. Der Kreis verarscht uns, wir müssen den Flughafen <strong><em>Paderborn</em></strong>-<em>Lippstadt</em> am stärksten mitbezahlen.
Weil die Stadtverwaltung in der Stadt ist, stärkt sie die kaufkraft. Es wäre zu teuer, sie an die Elsener str. zu bringen.
Die Zentralstation sollte aber schnell geklährt werden. Wir lehnen den Haushalt aus sachlichen Gründen ab, nicht aus politischen.</p>
<p>Ratsherr Johannes Knaup von der AfD schlägt einen lauten, gezogenen Ton an den Tag, der mir irgendie aus dem Fernsehen entführt scheint. Irgendwelche schlechte Wortspiele mit paderborner Graubrot. Für alles und jeden wird geld ausgegeben. dazu nicht zehn, sondern 6 beispiele:</p>
<ul>
<li>SCP. Why, whyyyy??? Steuergelder gehören nicht in den Profifußball. Der SCP ist sowieso schuldenfrei und finanziell gut.</li>
<li>Die Königsplätze verdienen ihren Nicht, deswegen reißen wir alles ab und bauen für ca 17 Millionen erstmal was geiles. Ob das mit dem Verkehr dann noch passt?</li>
<li>Paderhalle und Maspernplatz. Hubböden in der Paderhalle sind in der Planung so teuer dass das Gebäudemanagement Paderborn (GMP) zurückschreckt. Die Akustik sollte man aber verbessen.</li>
<li>Schulhöfe sind wieder Sauteuer. 3 Millionen Euro in den Ofen. Pelizäus soll so bleiben, statt alles wegzuwerfen und neu zu machen.</li>
<li>Beratungsgesellschaften sind harte Schmarotzer. Die teuren Gutachten, die eingeholt werden, landen z.T. im Müll.</li>
<li>Personal, es werden irgendwelche schwachsinnigen eingestellt, um was zu managen.
Fazit: Weniger Ausgaben statt höherer Einnahmen.</li>
</ul>
<p>Das Thema endet. Endlich. Lol, Die Bürger haben nichts zum Haushaltsplan eingereicht. Ja, hätte ich mich mal informiert.
Natürlich hat die CDU den Haushaltsplan gerade durchgewunken.</p>
Code4PB2015-01-28T00:00:00+00:00/blog/code4pb
<p>Codesnippets:</p>
<figure class="highlight"><pre><code class="language-ruby" data-lang="ruby"><span class="lineno">1</span> <span class="k">def</span> <span class="nf">show</span>
<span class="lineno">2</span> <span class="vi">@widget</span> <span class="o">=</span> <span class="no">Widget</span><span class="p">(</span><span class="n">params</span><span class="o">[</span><span class="ss">:id</span><span class="o">]</span><span class="p">)</span>
<span class="lineno">3</span> <span class="n">respond_to</span> <span class="k">do</span> <span class="o">|</span><span class="nb">format</span><span class="o">|</span>
<span class="lineno">4</span> <span class="nb">format</span><span class="o">.</span><span class="n">html</span> <span class="c1"># show.html.erb</span>
<span class="lineno">5</span> <span class="nb">format</span><span class="o">.</span><span class="n">json</span> <span class="p">{</span> <span class="n">render</span> <span class="ss">json</span><span class="p">:</span> <span class="vi">@widget</span> <span class="p">}</span>
<span class="lineno">6</span> <span class="k">end</span>
<span class="lineno">7</span> <span class="k">end</span></code></pre></figure>
<p>HTML:</p>
<figure class="highlight"><pre><code class="language-html" data-lang="html"><span class="lineno"> 1</span> <span class="nt"><nav</span> <span class="na">id=</span><span class="s">"nav"</span><span class="nt">></span> <span class="c"><!-- Navbar --></span>
<span class="lineno"> 2</span> <span class="nt"><div</span> <span class="na">class=</span><span class="s">"container"</span><span class="nt">></span>
<span class="lineno"> 3</span> <span class="nt"><div</span> <span class="na">class=</span><span class="s">"row"</span><span class="nt">></span>
<span class="lineno"> 4</span> <span class="nt"><i</span> <span class="na">id=</span><span class="s">"nav-button"</span> <span class="na">class=</span><span class="s">"icon-circle-arrow-down"</span><span class="nt">></i></span>
<span class="lineno"> 5</span> <span class="nt"><h2</span> <span class="na">id=</span><span class="s">"logo"</span><span class="nt">><a</span> <span class="na">href=</span><span class="s">"/"</span><span class="nt">></span>bendick <span class="nt"><span</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">></span>precision<span class="nt"></span></span>inc.<span class="nt"></a></h2></span>
<span class="lineno"> 6</span> <span class="nt"><div</span> <span class="na">id=</span><span class="s">"top-nav"</span> <span class="na">class=</span><span class="s">""</span><span class="nt">></span>
<span class="lineno"> 7</span> <span class="nt"><ul</span> <span class="na">id=</span><span class="s">"fixed-nav"</span><span class="nt">></span>
<span class="lineno"> 8</span> <span class="nt"><li</span> <span class="na">class=</span><span class="s">"current"</span><span class="nt">><a</span> <span class="na">href=</span><span class="s">"#header"</span><span class="nt">></span>Home<span class="nt"></a></li></span>
<span class="lineno"> 9</span> <span class="nt"><li><a</span> <span class="na">href=</span><span class="s">"#mission"</span><span class="nt">></span>Mission<span class="nt"></a></li></span>
<span class="lineno">10</span> <span class="nt"><li><a</span> <span class="na">href=</span><span class="s">"#services"</span><span class="nt">></span>Services<span class="nt"></a></li></span>
<span class="lineno">11</span> <span class="nt"><li><a</span> <span class="na">href=</span><span class="s">"#examples"</span><span class="nt">></span>Examples<span class="nt"></a></li></span>
<span class="lineno">12</span> <span class="nt"><li><a</span> <span class="na">href=</span><span class="s">"#contact"</span><span class="nt">></span>Contact<span class="nt"></a></li></span>
<span class="lineno">13</span> <span class="nt"></ul></span>
<span class="lineno">14</span> <span class="nt"></div></span>
<span class="lineno">15</span> <span class="nt"></div></span>
<span class="lineno">16</span> <span class="nt"></div></span>
<span class="lineno">17</span> <span class="nt"></nav></span><span class="c"><!-- End Navbar --></span></code></pre></figure>
To Arch up2014-12-15T00:00:00+00:00/blog/to-arch-up
<p>Lange Zeit habe ich einen Bogen drum gemacht, jetzt möchte ich mich dem Ganzen wölben: Arch Linux.</p>
<p>Mir sind einige Bilder in Erinnerung, bei denen die Überlegenheit Archs gegenüber seinen Verwandten ausgedrückt wird. Minimal, flexibel, selbstgebastelt, das bleibt von der Recherche hängen.</p>
<p>Wachliegen. Versuchen zu schlafen. Nur mal kurz tippen gehen. Das hier schreiben, Arch per Torrent runterladen und ab in die VM. Nachdem ich <em>archibald</em> getippt hatte, hatte Virtualbox bereits Arch 64bit ausgewählt.</p>
<p>Nun benutze ich Linux Mint 17, bin auch ziemlich zufrieden damit, das größte Problem war, dass ich mich damals dafür entschied, mein Nutzerverzeichnis zu verschlüsseln. FUSE nutze ich definitiv nicht noch einmal, schon bevor ich 200 GB vertonter Backups in mein Home gepackt habe, verursachte es einige Hänger und Erfrierungen der grafischen Oberfläche. Zu Mint 17.1 soll man laut der Entwickler nur Updaten, wenn man Probleme hat, die dadurch gefixt werden. Dagegen hören sich die <em>rolling releases</em> ganz gut an, besonders, weil ich irgendwie momentan einan hang zu neueren Versionen entwickle.
Ein weiteres Linux vor einem BSD zu testen halte ich für einfacher, ich möchte auch in absehbarer Zeit Ergebnisse und verzettel mich gerne.</p>
<p>Aha, ich lande nach einem schönen, schnellen Booten in der Root-Z-Shell. Es liegt eine <em>install.txt</em> rum, ein plaintext-Auszug der <a href="https://wiki.archlinux.org/index.php/Installation_guide">Installationsanweisung im Wiki</a>. Internet fällt auch in die Box rein, nur das Keyboard-Layout ist nicht meins. Schade, Magie kann so schön sein.</p>
<figure class="highlight"><pre><code class="language-sh" data-lang="sh"> loadkeys de-latin1</code></pre></figure>
<p>So, Punkt 2.1 der Wikianleitung wäre geschafft. Noobfreundlich, dieser Archie. Oh Gott, ich soll Partitionieren? <strong><em>Ja, einmal bitte Vollverschlüsselt!</em></strong> So automatisch wie bei Debian läuft es wohl nicht, auch nicht schlecht, um mal die Partitionierung ohne Geparted kennen zu lernen.
Lernen, ja… Es gibt sehr viel zu entdecken, zu lesen, schön, wenn man den Praxisbezug direkt hat. Nachdem ich einige Theorie hab und mich für eine Systemverschlüsselung auf Blockebene entschieden habe, landete ich irgendwann beim <em>LVM on LUKS</em> mit <strong><em>dm-crypt</em></strong>, doch vorher muss ein wenig partitioniert werden.</p>
Hello again2014-11-22T00:00:00+00:00/blog/hello-again<p>Hier ist wieder HerH, der Typ, dessen “News” beinahe älter als er selbst sind. Mithilfe von Jekyll realisiere ich nun die Version 5 des <strong><em>HerH.de Netzwerks.</em></strong></p>
My first Post2014-11-21T21:26:52+00:00/blog/my-first-post<p>So, jekyll serviert diesen <strong>Mist</strong> in <abbr title="HyperText Markup Language">HTML</abbr>, aber hält es auch, was es verspricht? Ich will, dass es in HTML angezeigt wird!111elf
NewLine!1!1!</p>
<p>NEOlain (^doubletab)
<img src="/img/cat.jpg" alt="meowlein" /></p>
<h2 id="ein-titel-wie-man-ihn-sich-nur">Ein Titel, wie man ihn sich nur</h2>
<h1 id="this-is-an-h1">This is an H1</h1>
<h2 id="this-is-an-h2">This is an H2</h2>
<p>Normaler Text! br<br />
<strong>MarkDownSyndrom</strong> <3 HTML<br />
<span style="color: yellow">No More.</span>
<!--more-->
<span style="color: red">Das sollte nicht mehr drin sein.</span></p>
Welcome to Jekyll!2014-11-20T00:00:00+00:00/blog/welcome-to-jekyll<p>You’ll find this post in your <code>_posts</code> directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run <code>jekyll serve</code>, which launches a web server and auto-regenerates your site when a file is updated.</p>
<p>To add new posts, simply add a file in the <code>_posts</code> directory that follows the convention <code>YYYY-MM-DD-name-of-post.ext</code> and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works.</p>
<p>Jekyll also offers powerful support for code snippets:</p>
<figure class="highlight"><pre><code class="language-ruby" data-lang="ruby"><span class="k">def</span> <span class="nf">print_hi</span><span class="p">(</span><span class="nb">name</span><span class="p">)</span>
<span class="nb">puts</span> <span class="s2">"Hi, </span><span class="si">#{</span><span class="nb">name</span><span class="si">}</span><span class="s2">"</span>
<span class="k">end</span>
<span class="n">print_hi</span><span class="p">(</span><span class="s1">'Tom'</span><span class="p">)</span>
<span class="c1">#=> prints 'Hi, Tom' to STDOUT.</span></code></pre></figure>
<p>Check out the <a href="http://jekyllrb.com">Jekyll docs</a> for more info on how to get the most out of Jekyll. File all bugs/feature requests at <a href="https://github.com/jekyll/jekyll">Jekyll’s GitHub repo</a>. If you have questions, you can ask them on <a href="https://github.com/jekyll/jekyll-help">Jekyll’s dedicated Help repository</a>.</p>
Jekyll Introduction2011-12-29T00:00:00+00:00/blog/jekyll-introduction
<p>This Jekyll introduction will outline specifically what Jekyll is and why you would want to use it.
Directly following the intro we’ll learn exactly <em>how</em> Jekyll does what it does.</p>
<h2 id="overview">Overview</h2>
<h3 id="what-is-jekyll">What is Jekyll?</h3>
<p>Jekyll is a parsing engine bundled as a ruby gem used to build static websites from
dynamic components such as templates, partials, liquid code, markdown, etc. Jekyll is known as “a simple, blog aware, static site generator”.</p>
<h3 id="examples">Examples</h3>
<p>This website is created with Jekyll. <a href="https://github.com/mojombo/jekyll/wiki/Sites">Other Jekyll websites</a>.</p>
<h3 id="what-does-jekyll-do">What does Jekyll Do?</h3>
<p>Jekyll is a ruby gem you install on your local system.
Once there you can call <code>jekyll --server</code> on a directory and provided that directory
is setup in a way jekyll expects, it will do magic stuff like parse markdown/textile files,
compute categories, tags, permalinks, and construct your pages from layout templates and partials.</p>
<p>Once parsed, Jekyll stores the result in a self-contained static <code>_site</code> folder.
The intention here is that you can serve all contents in this folder statically from a plain static web-server.</p>
<p>You can think of Jekyll as a normalish dynamic blog but rather than parsing content, templates, and tags
on each request, Jekyll does this once <em>beforehand</em> and caches the <em>entire website</em> in a folder for serving statically.</p>
<h3 id="jekyll-is-not-blogging-software">Jekyll is Not Blogging Software</h3>
<p><strong>Jekyll is a parsing engine.</strong></p>
<p>Jekyll does not come with any content nor does it have any templates or design elements.
This is a common source of confusion when getting started.
Jekyll does not come with anything you actually use or see on your website - you have to make it.</p>
<h3 id="why-should-i-care">Why Should I Care?</h3>
<p>Jekyll is very minimalistic and very efficient.
The most important thing to realize about Jekyll is that it creates a static representation of your website requiring only a static web-server.
Traditional dynamic blogs like Wordpress require a database and server-side code.
Heavily trafficked dynamic blogs must employ a caching layer that ultimately performs the same job Jekyll sets out to do; serve static content.</p>
<p>Therefore if you like to keep things simple and you prefer the command-line over an admin panel UI then give Jekyll a try.</p>
<p><strong>Developers like Jekyll because we can write content like we write code:</strong></p>
<ul>
<li>Ability to write content in markdown or textile in your favorite text-editor.</li>
<li>Ability to write and preview your content via localhost.</li>
<li>No internet connection required.</li>
<li>Ability to publish via git.</li>
<li>Ability to host your blog on a static web-server.</li>
<li>Ability to host freely on GitHub Pages.</li>
<li>No database required.</li>
</ul>
<h1 id="how-jekyll-works">How Jekyll Works</h1>
<p>The following is a complete but concise outline of exactly how Jekyll works.</p>
<p>Be aware that core concepts are introduced in rapid succession without code examples.
This information is not intended to specifically teach you how to do anything, rather it
is intended to give you the <em>full picture</em> relative to what is going on in Jekyll-world.</p>
<p>Learning these core concepts should help you avoid common frustrations and ultimately
help you better understand the code examples contained throughout Jekyll-Bootstrap.</p>
<h2 id="initial-setup">Initial Setup</h2>
<p>After <a href="/index.html#start-now">installing jekyll</a> you’ll need to format your website directory in a way jekyll expects.
Jekyll-bootstrap conveniently provides the base directory format.</p>
<h3 id="the-jekyll-application-base-format">The Jekyll Application Base Format</h3>
<p>Jekyll expects your website directory to be laid out like so:</p>
<pre><code>.
|-- _config.yml
|-- _includes
|-- _layouts
| |-- default.html
| |-- post.html
|-- _posts
| |-- 2011-10-25-open-source-is-good.markdown
| |-- 2011-04-26-hello-world.markdown
|-- _site
|-- index.html
|-- assets
|-- css
|-- style.css
|-- javascripts
</code></pre>
<ul>
<li>
<p><strong>_config.yml</strong>
Stores configuration data.</p>
</li>
<li>
<p><strong>_includes</strong>
This folder is for partial views.</p>
</li>
<li>
<p><strong>_layouts</strong>
This folder is for the main templates your content will be inserted into.
You can have different layouts for different pages or page sections.</p>
</li>
<li>
<p><strong>_posts</strong>
This folder contains your dynamic content/posts.
the naming format is required to be <code>@YEAR-MONTH-DATE-title.MARKUP@</code>.</p>
</li>
<li>
<p><strong>_site</strong>
This is where the generated site will be placed once Jekyll is done transforming it.</p>
</li>
<li>
<p><strong>assets</strong>
This folder is not part of the standard jekyll structure.
The assets folder represents <em>any generic</em> folder you happen to create in your root directory.
Directories and files not properly formatted for jekyll will be left untouched for you to serve normally.</p>
</li>
</ul>
<p>(read more: <a href="https://github.com/mojombo/jekyll/wiki/Usage">https://github.com/mojombo/jekyll/wiki/Usage</a>)</p>
<h3 id="jekyll-configuration">Jekyll Configuration</h3>
<p>Jekyll supports various configuration options that are fully outlined here:
(<a href="https://github.com/mojombo/jekyll/wiki/Configuration">https://github.com/mojombo/jekyll/wiki/Configuration</a>)</p>
<h2 id="content-in-jekyll">Content in Jekyll</h2>
<p>Content in Jekyll is either a post or a page.
These content “objects” get inserted into one or more templates to build the final output for its respective static-page.</p>
<h3 id="posts-and-pages">Posts and Pages</h3>
<p>Both posts and pages should be written in markdown, textile, or HTML and may also contain Liquid templating syntax.
Both posts and pages can have meta-data assigned on a per-page basis such as title, url path, as well as arbitrary custom meta-data.</p>
<h3 id="working-with-posts">Working With Posts</h3>
<p><strong>Creating a Post</strong>
Posts are created by properly formatting a file and placing it the <code>_posts</code> folder.</p>
<p><strong>Formatting</strong>
A post must have a valid filename in the form <code>YEAR-MONTH-DATE-title.MARKUP</code> and be placed in the <code>_posts</code> directory.
If the data format is invalid Jekyll will not recognize the file as a post. The date and title are automatically parsed from the filename of the post file.
Additionally, each file must have <a href="https://github.com/mojombo/jekyll/wiki/YAML-Front-Matter">YAML Front-Matter</a> prepended to its content.
YAML Front-Matter is a valid YAML syntax specifying meta-data for the given file.</p>
<p><strong>Order</strong>
Ordering is an important part of Jekyll but it is hard to specify a custom ordering strategy.
Only reverse chronological and chronological ordering is supported in Jekyll.</p>
<p>Since the date is hard-coded into the filename format, to change the order, you must change the dates in the filenames.</p>
<p><strong>Tags</strong>
Posts can have tags associated with them as part of their meta-data.
Tags may be placed on posts by providing them in the post’s YAML front matter.
You have access to the post-specific tags in the templates. These tags also get added to the sitewide collection.</p>
<p><strong>Categories</strong>
Posts may be categorized by providing one or more categories in the YAML front matter.
Categories offer more significance over tags in that they can be reflected in the URL path to the given post.
Note categories in Jekyll work in a specific way.
If you define more than one category you are defining a category hierarchy “set”.
Example:</p>
<pre><code>---
title : Hello World
categories : [lessons, beginner]
---
</code></pre>
<p>This defines the category hierarchy “lessons/beginner”. Note this is <em>one category</em> node in Jekyll.
You won’t find “lessons” and “beginner” as two separate categories unless you define them elsewhere as singular categories.</p>
<h3 id="working-with-pages">Working With Pages</h3>
<p><strong>Creating a Page</strong>
Pages are created by properly formatting a file and placing it anywhere in the root directory or subdirectories that do <em>not</em> start with an underscore.</p>
<p><strong>Formatting</strong>
In order to register as a Jekyll page the file must contain <a href="https://github.com/mojombo/jekyll/wiki/YAML-Front-Matter">YAML Front-Matter</a>.
Registering a page means 1) that Jekyll will process the page and 2) that the page object will be available in the <code>site.pages</code> array for inclusion into your templates.</p>
<p><strong>Categories and Tags</strong>
Pages do not compute categories nor tags so defining them will have no effect.</p>
<p><strong>Sub-Directories</strong>
If pages are defined in sub-directories, the path to the page will be reflected in the url.
Example:</p>
<pre><code>.
|-- people
|-- bob
|-- essay.html
</code></pre>
<p>This page will be available at <code>http://yourdomain.com/people/bob/essay.html</code></p>
<p><strong>Recommended Pages</strong></p>
<ul>
<li><strong>index.html</strong>
You will always want to define the root index.html page as this will display on your root URL.</li>
<li><strong>404.html</strong>
Create a root 404.html page and GitHub Pages will serve it as your 404 response.</li>
<li><strong>sitemap.html</strong>
Generating a sitemap is good practice for SEO.</li>
<li><strong>about.html</strong>
A nice about page is easy to do and gives the human perspective to your website.</li>
</ul>
<h2 id="templates-in-jekyll">Templates in Jekyll</h2>
<p>Templates are used to contain a page’s or post’s content.
All templates have access to a global site object variable: <code>site</code> as well as a page object variable: <code>page</code>.
The site variable holds all accessible content and metadata relative to the site.
The page variable holds accessible data for the given page or post being rendered at that point.</p>
<p><strong>Create a Template</strong>
Templates are created by properly formatting a file and placing it in the <code>_layouts</code> directory.</p>
<p><strong>Formatting</strong>
Templates should be coded in HTML and contain YAML Front Matter.
All templates can contain Liquid code to work with your site’s data.</p>
<p><strong>Rending Page/Post Content in a Template</strong>
There is a special variable in all templates named : <code>content</code>.
The <code>content</code> variable holds the page/post content including any sub-template content previously defined.
Render the content variable wherever you want your main content to be injected into your template:</p>
<pre><code>...
<body>
<div id="sidebar"> ... </div>
<div id="main">
{{content}}
</div>
</body>
...</code></pre>
<h3 id="sub-templates">Sub-Templates</h3>
<p>Sub-templates are exactly templates with the only difference being they
define another “root” layout/template within their YAML Front Matter.
This essentially means a template will render inside of another template.</p>
<h3 id="includes">Includes</h3>
<p>In Jekyll you can define include files by placing them in the <code>_includes</code> folder.
Includes are NOT templates, rather they are just code snippets that get included into templates.
In this way, you can treat the code inside includes as if it was native to the parent template.</p>
<p>Any valid template code may be used in includes.</p>
<h2 id="using-liquid-for-templating">Using Liquid for Templating</h2>
<p>Templating is perhaps the most confusing and frustrating part of Jekyll.
This is mainly due to the fact that Jekyll templates must use the Liquid Templating Language.</p>
<h3 id="what-is-liquid">What is Liquid?</h3>
<p><a href="https://github.com/Shopify/liquid">Liquid</a> is a secure templating language developed by <a href="http://shopify.com">Shopify</a>.
Liquid is designed for end-users to be able to execute logic within template files
without imposing any security risk on the hosting server.</p>
<p>Jekyll uses Liquid to generate the post content within the final page layout structure and as the primary interface for working with
your site and post/page data.</p>
<h3 id="why-do-we-have-to-use-liquid">Why Do We Have to Use Liquid?</h3>
<p>GitHub uses Jekyll to power <a href="http://pages.github.com/">GitHub Pages</a>.
GitHub cannot afford to run arbitrary code on their servers so they lock developers down via Liquid.</p>
<h3 id="liquid-is-not-programmer-friendly">Liquid is Not Programmer-Friendly.</h3>
<p>The short story is liquid is not real code and its not intended to execute real code.
The point being you can’t do jackshit in liquid that hasn’t been allowed explicitly by the implementation.
What’s more you can only access data-structures that have been explicitly passed to the template.</p>
<p>In Jekyll’s case it is not possible to alter what is passed to Liquid without hacking the gem or running custom plugins.
Both of which cannot be supported by GitHub Pages.</p>
<p>As a programmer - this is very frustrating.</p>
<p>But rather than look a gift horse in the mouth we are going to
suck it up and view it as an opportunity to work around limitations and adopt client-side solutions when possible.</p>
<p><strong>Aside</strong>
My personal stance is to not invest time trying to hack liquid. It’s really unnecessary
<em>from a programmer’s</em> perspective. That is to say if you have the ability to run custom plugins (i.e. run arbitrary ruby code)
you are better off sticking with ruby. Toward that end I’ve built <a href="http://github.com/plusjade/mustache-with-jekyll">Mustache-with-Jekyll</a></p>
<h2 id="static-assets">Static Assets</h2>
<p>Static assets are any file in the root or non-underscored subfolders that are not pages.
That is they have no valid YAML Front Matter and are thus not treated as Jekyll Pages.</p>
<p>Static assets should be used for images, css, and javascript files.</p>
<h2 id="how-jekyll-parses-files">How Jekyll Parses Files</h2>
<p>Remember Jekyll is a processing engine. There are two main types of parsing in Jekyll.</p>
<ul>
<li><strong>Content parsing.</strong>
This is done with textile or markdown.</li>
<li><strong>Template parsing.</strong>
This is done with the liquid templating language.</li>
</ul>
<p>And thus there are two main types of file formats needed for this parsing.</p>
<ul>
<li><strong>Post and Page files.</strong>
All content in Jekyll is either a post or a page so valid posts and pages are parsed with markdown or textile.</li>
<li><strong>Template files.</strong>
These files go in <code>_layouts</code> folder and contain your blogs <strong>templates</strong>. They should be made in HTML with the help of Liquid syntax.
Since include files are simply injected into templates they are essentially parsed as if they were native to the template.</li>
</ul>
<p><strong>Arbitrary files and folders.</strong>
Files that <em>are not</em> valid pages are treated as static content and pass through
Jekyll untouched and reside on your blog in the exact structure and format they originally existed in.</p>
<h3 id="formatting-files-for-parsing">Formatting Files for Parsing.</h3>
<p>We’ve outlined the need for valid formatting using <strong>YAML Front Matter</strong>.
Templates, posts, and pages all need to provide valid YAML Front Matter even if the Matter is empty.
This is the only way Jekyll knows you want the file processed.</p>
<p>YAML Front Matter must be prepended to the top of template/post/page files:</p>
<pre><code>---
layout: post
category : pages
tags : [how-to, jekyll]
---
... contents ...
</code></pre>
<p>Three hyphens on a new line start the Front-Matter block and three hyphens on a new line end the block.
The data inside the block must be valid YAML.</p>
<p>Configuration parameters for YAML Front-Matter is outlined here:
<a href="https://github.com/mojombo/jekyll/wiki/YAML-Front-Matter">A comprehensive explanation of YAML Front Matter</a></p>
<h4 id="defining-layouts-for-posts-and-templates-parsing">Defining Layouts for Posts and Templates Parsing.</h4>
<p>The <code>layout</code> parameter in the YAML Front Matter defines the template file for which the given post or template should be injected into.
If a template file specifies its own layout, it is effectively being used as a <code>sub-template.</code>
That is to say loading a post file into a template file that refers to another template file with work in the way you’d expect; as a nested sub-template.</p>
<h2 id="how-jekyll-generates-the-final-static-files">How Jekyll Generates the Final Static Files.</h2>
<p>Ultimately, Jekyll’s job is to generate a static representation of your website.
The following is an outline of how that’s done:</p>
<ol>
<li>
<p><strong>Jekyll collects data.</strong>
Jekyll scans the posts directory and collects all posts files as post objects. It then scans the layout assets and collects those and finally scans other directories in search of pages.</p>
</li>
<li>
<p><strong>Jekyll computes data.</strong>
Jekyll takes these objects, computes metadata (permalinks, tags, categories, titles, dates) from them and constructs one
big <code>site</code> object that holds all the posts, pages, layouts, and respective metadata.
At this stage your site is one big computed ruby object.</p>
</li>
<li>
<p><strong>Jekyll liquifies posts and templates.</strong>
Next jekyll loops through each post file and converts (through markdown or textile) and <strong>liquifies</strong> the post inside of its respective layout(s).
Once the post is parsed and liquified inside the the proper layout structure, the layout itself is “liquified”.
<strong>Liquification</strong> is defined as follows: Jekyll initiates a Liquid template, and passes a simpler hash representation of the ruby site object as well as a simpler
hash representation of the ruby post object. These simplified data structures are what you have access to in the templates.</p>
</li>
<li>
<p><strong>Jekyll generates output.</strong>
Finally the liquid templates are “rendered”, thereby processing any liquid syntax provided in the templates
and saving the final, static representation of the file.</p>
</li>
</ol>
<p><strong>Notes.</strong>
Because Jekyll computes the entire site in one fell swoop, each template is given access to
a global <code>site</code> hash that contains useful data. It is this data that you’ll iterate through and format
using the Liquid tags and filters in order to render it onto a given page.</p>
<p>Remember, in Jekyll you are an end-user. Your API has only two components:</p>
<ol>
<li>The manner in which you setup your directory.</li>
<li>The liquid syntax and variables passed into the liquid templates.</li>
</ol>
<p>All the data objects available to you in the templates via Liquid are outlined in the <strong>API Section</strong> of Jekyll-Bootstrap.
You can also read the original documentation here: <a href="https://github.com/mojombo/jekyll/wiki/Template-Data">https://github.com/mojombo/jekyll/wiki/Template-Data</a></p>
<h2 id="conclusion">Conclusion</h2>
<p>I hope this paints a clearer picture of what Jekyll is doing and why it works the way it does.
As noted, our main programming constraint is the fact that our API is limited to what is accessible via Liquid and Liquid only.</p>
<p>Jekyll-bootstrap is intended to provide helper methods and strategies aimed at making it more intuitive and easier to work with Jekyll =)</p>
<p><strong>Thank you</strong> for reading this far.</p>
<h2 id="next-steps">Next Steps</h2>
<p>Please take a look at <a href=""></a>
or jump right into <a href="">Usage</a> if you’d like.</p>
Enter the World.1992-08-02T00:00:00+00:00/blog/Enter-the-World<h1 id="lorem">Lorem…</h1>
<p>…ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p>
<p>Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo.</p>
<p>Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim.<strong>LOL</strong>
<!--more--></p>
<p>Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus.</p>
<p>Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus.</p>
<p>Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna.</p>