<?xml version="1.0" encoding="utf-8" ?>

<rss version="0.91" >
<channel>
<title>Blog - gnuheidix</title>
<link>https://gnuheidix.de/</link>
<description>...was wollte ich noch sagen? Genau.</description>
<language>de</language>
<image>
    <url>https://gnuheidix.de/uploads/thomas_heidrich_avatar.serendipityThumb.jpg</url>
    <title>RSS: Blog - gnuheidix - ...was wollte ich noch sagen? Genau.</title>
    <link>https://gnuheidix.de/</link>
    <width>88</width>
    <height>110</height>
</image>

<item>
    <title>CSS: prefers-color-scheme</title>
    <link>https://gnuheidix.de/archives/74-CSS-prefers-color-scheme.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:39 --&gt;&lt;img class=&quot;serendipity_image_right&quot; width=&quot;100&quot; height=&quot;100&quot;  src=&quot;https://gnuheidix.de/uploads/tango-blog.serendipityThumb.png&quot;  loading=&quot;lazy&quot; alt=&quot;&quot;&gt;Nur durch reinen Zufall bin ich über das verhältnismäßig neue Media Feature &lt;em&gt;prefers-color-scheme&lt;/em&gt; gestolpert.&lt;/p&gt;
&lt;h3&gt;Motivation&lt;/h3&gt;
&lt;p&gt;Schon immer haben mich sehr helle Bildschirme gestört und besonders wenn man viele Stunden davor sitzt, ist es für die Augen einfach entspannender, wenn es mal nicht wenig schwarz auf viel weiß sein muss. Seitdem die Desktopumgebung Gnome einen Dark-Mode anbietet, bin ich ein großer Fan davon und eben ist an mir vorbreigescrollt, dass die Browser den bevorzugten Modus ans CSS durchreichen.&lt;/p&gt;
&lt;h3&gt;Nutzung&lt;/h3&gt;
&lt;p&gt;Wie man es genau nutzt, muss ich hier jetzt nicht groß ausführen.&lt;/p&gt;
&lt;pre&gt;
@media (prefers-color-scheme: dark) {
  ...
}
&lt;/pre&gt;
&lt;p&gt;Lest Details einfach &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme&quot; title=&quot;MDN WebDocs&quot;&gt;bei Mozilla&lt;/a&gt; nach. Auch die achten übrigens darauf, ob ihr den Dark-Mode bevorzugt.&lt;/p&gt;
&lt;p&gt;Bei meinem Blog habe ich mich für ein vollständiges Schwarz im Dark-Mode entschieden, weil mich besonders bei OLED-Displays immer sehr nervt, wenn Leute meinen ein sehr dunkles Grau großflächig verwenden zu müssen. Pixel, die aus sein dürfen, leben länger. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Fazit&lt;/h3&gt;
&lt;p&gt;Die Unterstützung in mein Blog einzubauen, hat mich nur ein paar Minuten gekostet. Es bisschen könnte ich besonders bei der Kommentareingabemaske noch schrauben, aber alles in allem ist das schon mal recht gut nutzbar.&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Mod: Braun IRT6520</title>
    <link>https://gnuheidix.de/archives/73-Mod-Braun-IRT6520.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:60 --&gt;&lt;img class=&quot;serendipity_image_right&quot; width=&quot;100&quot; height=&quot;100&quot;  src=&quot;https://gnuheidix.de/uploads/switches.png&quot;  alt=&quot;&quot;&gt;Ein Fieberthermometer, dass für den Einsatz an Kindern konzipiert ist und dabei eine nicht deaktivierbare akustische Tastendruckrückmeldung aufweist, ist ja schon eine skurrile Sache.&lt;/p&gt;
&lt;h3&gt;Motivation&lt;/h3&gt;
&lt;p&gt;Das &lt;a href=&quot;https://www.braunhealthcare.com/de_de/thermometers/ear/thermoscan-7&quot;&gt;IRT6520&lt;/a&gt; verspricht die Körpertemperatur im Ohr messen zu können und dabei relativ genau zu sein. Ich kann bestätigen, dass es eine gute Schätzung im Vergleich zur als exakt einzustufenden rektalen Messung abgibt und dabei praktisch nicht invasiv ist. Wenn man aber dem schlafenden Kind die Körpertemperatur messen möchte, ist der Tastendruckton, welchen es stets von sich gibt, einfach völlig unnötig und sogar störend. Es reicht schließlich aus, dass das Display nach erfolgter Messung die Farbe ändert.&lt;/p&gt;
&lt;h3&gt;Modifikation&lt;/h3&gt;
&lt;p&gt;Das Gerät hat im Batteriefach eine TX6-Schraube. Ist diese raus, wird das Gerät noch von sechs Plastiknasen an der linken und rechten Längsseite zusammengehalten. Man kann deren Position sehen, wenn man sich die Fuge zwischen beiden Gehäusehälften genau anschaut. Mit einem sehr dünnen flachen Schraubendreher bekommt man das zerstörungsfrei auf. Das Gehäuse steht unter keiner nennenswerten Spannung, das öffnet sich ohne Gewalt.&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; title=&quot;SMD-Buzzer&quot; href=&#039;https://gnuheidix.de/uploads/smd_buzzer.jpg&#039;&gt;&lt;!-- s9ymdb:165 --&gt;&lt;img class=&quot;serendipity_image_right&quot; width=&quot;110&quot; height=&quot;103&quot;  src=&quot;https://gnuheidix.de/uploads/smd_buzzer.serendipityThumb.jpg&quot; title=&quot;SMD-Buzzer&quot; alt=&quot;SMD-Buzzer&quot;&gt;&lt;/a&gt;Nun sieht man die Leiterplatte und die Sensoreinheit. Beide werden von jeweils zwei kurzen TX6-Schrauben gehalten. Alle vier Schrauben sind zu entfernen und die Leiterplatte samt Sensoreinheit herumzudrehen. An der Sensoreinheit abgewandten Seite findet man den SMD-Buzzer, welcher für die Geräusche verantwortlich ist. Er ist allein auf weiter Flur und man braucht keinen spezialisierten Lötkolben, um ihn auszulöten. Mir hat mein &lt;a href=&quot;https://www.amazon.de/dp/B01639AKSS/&quot;&gt;8W USB-Lötkolben&lt;/a&gt; völlig ausgereicht.&lt;/p&gt;
&lt;p&gt;Nun baut man das Gerät in umgekehrter Reihenfolge zusammen.&lt;/p&gt;
&lt;h3&gt;Fazit&lt;/h3&gt;
&lt;p&gt;Das IRT6520 ist leicht modifizierbar. Hätte Braun das Gerät einmal gegen seine Zielgruppe getestet, wäre bestimmt aufgefallen, dass ein mehrfarbiges Display zur Bewertung der Körpertemperatur gut für übermüdete Eltern ist, der Ton diesen Vorteil aber durch Hinzufügen von Nervenkitzel direkt wieder über Bord wirft. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/laugh.png&quot; alt=&quot;:-D&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Ich hoffe, euch hilft dieser Tipp und es bewahrt ein paar dieser Geräte vor der Mülltonne.&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Mod: Lenco SCD-24</title>
    <link>https://gnuheidix.de/archives/72-Mod-Lenco-SCD-24.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:40 --&gt;&lt;img alt=&quot;&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/tango-audio.png&quot; style=&quot;width:100px&quot; /&gt;Unerwünschte nicht deaktivierbare Produktfunktionalitäten bereiten einem oft Kopfzerbrechen. Besonders hat das letztlich ein Geschenk geschafft, welches nicht ohne Weiteres zurückgegeben werden konnte.&lt;/p&gt;

&lt;h3&gt;Motivation&lt;/h3&gt;

&lt;p&gt;Es handelt sich um ein Radio mit CD-Spieler, welches für die Nutzung durch Kinder bestimmt ist. Zumindest behauptet das die &lt;a href=&quot;https://www.amazon.de/dp/B0089AK54E&quot;&gt;Produktbeschreibung&lt;/a&gt;. In der Anleitung steht: &lt;em&gt;&quot;Wenn das Gerät für ca. 15 Minuten nicht bedient wird, dann schaltet es sich automatisch aus (im Stopp-Modus/ bei geöffnetem CD-Fach).&quot;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Dagegen ist ja ersteinmal nichts einzuwenden. In der Tat war die Funktionalität aber so geschaffen, dass sich das Gerät stets sowohl im Radio- als auch im CD-Betrieb nach ziemlich genau zehn Minuten abgeschaltet hat. Das ist unglaublich nervig, weil es dann erst aus und wieder eingeschaltet werden musste. Weiter ging die CD wieder von vorn los. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/sad.png&quot; alt=&quot;:-(&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Beim Einschalten konnte man stets feststellen, dass sich das Gerät etwa eine halbe Sekunde Zeit gelassen hat, bis die Power-LED an ging. Für ein derartiges Gerät in dieser Preisklasse ist das grundsätzlich ungewöhnlich, weil Steuerungstechnik, die nachdenkt, ob Einschalten jetzt eine gute Idee ist, einfach nur unnötig die Stückliste aufbläst. Normalerweise wacht ein &lt;a href=&quot;https://de.wikipedia.org/wiki/Ferengi&quot;&gt;Ferengi&lt;/a&gt; über diese Liste, weil er mit einer kürzeren Liste mehr Profit macht.&lt;/p&gt;

&lt;p&gt;Meine Vermutung geht in die Richtung, dass diese Zeitsteuerung einfach nur ein zu einer Standardschaltung nachträglich hinzugefügter IC ist, welcher sich ohne Schaltplan leicht umgehen lässt. Ich selbst würde sowas mit einem &lt;a href=&quot;https://de.wikipedia.org/wiki/NE555&quot;&gt;NE555&lt;/a&gt; realisieren.&lt;/p&gt;

&lt;h3&gt;Modifikation&lt;/h3&gt;

&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/zeitschaltungsschaltkreis.jpg&quot;&gt;&lt;!-- s9ymdb:162 --&gt;&lt;img alt=&quot;Platine mit Zeitschaltungsschaltkreis&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/zeitschaltungsschaltkreis.serendipityThumb.jpg&quot; style=&quot;width:110px&quot; /&gt;&lt;/a&gt;Das Gerät ist mit fünf Schrauben an der Unterseite leicht zu öffnen und alle Verbinder kann man zerstörungsfrei abstecken. An der Oberseite war auch noch ein markiertes Schraubenloch, aber da hat der Hersteller einfach keine Schraube reingeschraubt.&lt;/p&gt;

&lt;p&gt;Der fragwürdige IC ist sehr schnell gefunden. Auf der Oberseite hat er keine Beschriftung. Pin 1 ist VCC und Pin 8 ist GND. Die Pins 2 und 3 sind nicht angeschlossen. Ich habe den IC, welcher meines Erachtens ein kleiner PLC ist, entfernt und nach ein wenig Messen hat sich gezeigt, dass lediglich Pin 5 und 7 überbrückt werden müssen, um dem Rest des Gerätes das Gefühl zu geben, dass die zehn Minuten noch nicht um sind. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/modifikation_ohne_ic.jpg&quot;&gt;&lt;!-- s9ymdb:161 --&gt;&lt;img alt=&quot;Modifikation ohne IC&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/modifikation_ohne_ic.serendipityThumb.jpg&quot; style=&quot;width:69px&quot; /&gt;&lt;/a&gt;Das Gerät schaltet sich nun auch ohne Gedenksekunde ein. Im eingeschalteten und ausgeschalteten Zustand hat sich der Stromverbrauch nicht geändert. Die Lösung macht einen richtigen Eindruck. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/laugh.png&quot; alt=&quot;:-D&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

&lt;h3&gt;Fazit&lt;/h3&gt;

&lt;p&gt;Leider wird das Gerät nicht wie einst üblich mit einem Schaltplan geliefert. Die EU sollte hierfür mal eine klare Regelung schaffen, um Geräte reparier- und modifizierbar zu machen.&lt;/p&gt;

&lt;p&gt;Meine NE555-Lösung wäre zu kompliziert gewesen für eine optimierte Stückliste und PLCs scheinen einfach billig genug zu sein.&lt;/p&gt;

&lt;p&gt;Eine konfigurierbare maximale Lautstärke oder ein verschraubtes Batteriefach hätte ich für ein Kinderradio als sinnvoller erachtet als eine Zeitschaltung, welche jedes Hörspiel oder Märchen mit hoher Präzision versaut.&lt;/p&gt;

&lt;p&gt;Ich hoffe sehr, dass dieser Beitrag ein solches Gerät vor der Müllkippe bewahrt. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Lasst euch dieses Gerät nicht schenken. Die Gesamtkonstruktion ist auch für ein Kinderradio einfach ungenügend.&lt;/p&gt;

&lt;h3&gt;Nachtrag&lt;/h3&gt;

&lt;p&gt;Auf der Unterseite des IC steht nach genauem Hinsehen &lt;em&gt;3CF1946T 028-4&lt;/em&gt;. Eine kurze Suche war dazu erfolglos.&lt;/p&gt;
 
    </description>
</item>
<item>
    <title>Sommer: Lüftungsapparatur</title>
    <link>https://gnuheidix.de/archives/71-Sommer-Lueftungsapparatur.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:156 --&gt;&lt;img alt=&quot;&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/dia_sommer.png&quot; style=&quot;width:100px&quot; /&gt;Unser globales Terraforming-Experiment beschert uns jeden Sommer wärmere Temperaturen. Auch wenn man nicht im Dachgeschoss wohnt, kann man die Raumtemperatur bei wochenlang anhaltendem heißen Wetter nur schwer unter Kontrolle bringen. Mein Lösungsansatz ist seit mehr als einem Jahr mit Erfolg im Einsatz.&lt;/p&gt;

&lt;h3&gt;Motivation&lt;/h3&gt;

&lt;p&gt;Es handelt sich um eine eingeschossige Wohnung mit Fenstern zur Nord-, West- und Südseite. Bei kontinuierlich heißem Wetter ist es in der Regel nach mehr als einer Woche trotz geschickter Lüftungsstrategie und konsequenter Abschattung nicht mehr möglich, die Wärme in der Wohnung unter 26°C zu halten, ohne Einbußen bei CO&lt;sub&gt;2&lt;/sub&gt;- und Luftfeuchtigkeitsniveau hinnehmen zu müssen.&lt;/p&gt;

&lt;p&gt;Nachts sinken die Außentemperaturen auf ein angenehmes Niveau, aber mangels hinreichender Luftzirkulation kühlen die Räume trotz vollständig geöffneter Fenster nur unzureichend ab. Darüberhinaus stellen sperrangelweit offene Fenster ein potentielles Sicherheitsproblem dar.&lt;/p&gt;

&lt;p&gt;Basierend auf meinen Erfahrungen mit Kühlung in Computergehäusen habe ich die dort zur Anwendung kommenden Konzepte auf die gesamte Wohnung angewendet.&lt;/p&gt;

&lt;h3&gt;Konzept&lt;/h3&gt;

&lt;p&gt;Es soll keine dauerhafte Installation sondern lediglich ein Fenstereinsatz sein, welcher die Raumluft nach Draußen zur Westseite abführt. Durch die Öffnung des am weitest entfernten Nordseitenfenster und dem gezielten Öffnen bzw. Schließen der Türen ist der Luftstrom der kühlen Nordseitenluft durch vier Räume zu führen. Weiter gilt es, die Intensität des Luftstroms regulierbar zu machen.&lt;/p&gt;

&lt;h3&gt;Fenstereinsatz&lt;/h3&gt;

&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/fenstereinsatz2.jpg&quot; title=&quot;Fenstereinsatz&quot;&gt;&lt;!-- s9ymdb:160 --&gt;&lt;img alt=&quot;Fenstereinsatz&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/fenstereinsatz2.serendipityThumb.jpg&quot; style=&quot;width:77px&quot; title=&quot;Fenstereinsatz&quot; /&gt;&lt;/a&gt;Das Ganze basiert auf einem Lüfter aus dem Kfz-Bereich und einer dicken Sperrholzplatte. Diese wird im Fensterrahmen mit kleinen Riegeln an dessen Beschlägen gehalten.&amp;#160;Auf der Außenseite ist eine Art Gitter angebracht, welches ein modizifizierter Grillrost ist, um Tiere vor dem Eindringen abzuhalten. Auf der Innenseite habe ich solide Schubladengriffe aus Aluminium angebracht, die beim Einsetzen- und Herausnehmen helfen.&lt;/p&gt;

&lt;p&gt;Der Lüfter ist ein &lt;a href=&quot;https://www.amazon.de/dp/B07DVG9GSX/&quot;&gt;Noname-Modell&lt;/a&gt; und hat 80W Leistung. Man muss darauf achten, dass die Anlaufleistung stets erheblich höher ist. Aus dem Stillstand direkt auf 100% Drehzahl hat er bei meinen Messungen bis zu 160W gezogen. Mit einem 200W-Netzteil sollte man auf der sicheren Seite sein. Der Luftdurchsatz ist auf allen Verkaufsplattformen, auf denen dieser Lüfter vertrieben wird, anders angegeben. Es ist aber genug für den Anfang, habe ich festgestellt. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Es ist noch genügend Platz in der Holzplatte für einen weiteren baugleichen Lüfter, welcher bei fortschreitender Klimaerwärmung hingezufügt wird.&lt;/p&gt;

&lt;h3&gt;Stromversorgung&lt;/h3&gt;

&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/stromversorgung_front_aus.jpg&quot; title=&quot;Stromversorgung von vorn - ausgeschaltet&quot;&gt;&lt;!-- s9ymdb:159 --&gt;&lt;img alt=&quot;Stromversorgung von vorn - ausgeschaltet&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/stromversorgung_front_aus.serendipityThumb.jpg&quot; style=&quot;width:110px&quot; title=&quot;Stromversorgung von vorn - ausgeschaltet&quot; /&gt;&lt;/a&gt;Aus Gründen der Einfachheit habe ich mich für ein PC-Netzteil entschieden, welches ich bereits im Keller hatte. Das Gute daran ist, dass solche Netzteile für diese Zwecke mit stets hinreichender Qualitätsanmutung und Leistung daherkommen. Die 12V-Versorgung ist in der Regel für besonders energiehungrige Komponenten, wie Grafikkarten, mehr als ausreichend dimensioniert. Nichtsdestotrotz sind stets die technischen Details zu prüfen, da der Spaß schließlich unbeaufsichtigt die ganze Nacht entspannt durchlaufen soll. Abbrennen sollte bei diesen Netzteilen nichts, da sie in der Regel mit Überhitzungs- und Überlastschutzschaltungen ausgestattet sind.&lt;/p&gt;

&lt;p&gt;Zur Einstellung der Lüfterdrehzahl habe ich einen &lt;a href=&quot;https://www.amazon.de/dp/B075FR2LBP/&quot;&gt;PWM-basierten Regler&lt;/a&gt; eingesetzt. Bei diesen Reglern ist unbedingt darauf zu achten, dass die Steuerfrequenz über 20kHz liegt, sonst hört man ein nerviges Pfeiffen. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/stromversorgung_front_an.jpg&quot; title=&quot;Stromversorgung von vorn - eingeschaltet&quot;&gt;&lt;!-- s9ymdb:158 --&gt;&lt;img alt=&quot;Stromversorgung von vorn - eingeschaltet&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/stromversorgung_front_an.serendipityThumb.jpg&quot; style=&quot;width:110px&quot; title=&quot;Stromversorgung von vorn - eingeschaltet&quot; /&gt;&lt;/a&gt;Nach dem Drehzahlregler ist ein analoges Amperemeter geschaltet. Es kommt problemlos mit dem PWM-Signal zurecht und hilft sehr beim Betrieb. Sobald es dauerhaft mehr als 7A anzeigt, ist etwas nicht in Ordnung.&lt;/p&gt;

&lt;p&gt;Von Bahar Enclosure gibt es sehr schicke Gehäuse für derartige Projekte. Ich habe mich für das Modell BDA-400 in der Variante &lt;a href=&quot;http://www.bahar.asia/Product/445/name?BDA-40008-A1-W275&quot;&gt;&lt;em&gt;220*120*275 mm with handhold&lt;/em&gt;&lt;/a&gt; entschieden. Es macht einen soliden Eindruck, obwohl die Ober- und Unterseite nur über selbstschneidende Schrauben in den Plastikelementen der Vorder- und Rückseite zusammengehalten werden. Mehr als zehn Mal kann man das Gehäuse deshalb nicht auf- und zuschrauben, bevor die Schrauben ihren Biss verlieren. Es spricht aber nichts dagegen die mitgelieferten Schrauben durch ordentliche Senkkopfschrauben mit Muttern zu ersetzen. Die Plastikteile haben hinreichend Material, um die Muttern gut integrieren zu können.&lt;/p&gt;

&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/stromversorgung_rueckseite.jpg&quot; title=&quot;Stromversorgung Rückseite&quot;&gt;&lt;!-- s9ymdb:157 --&gt;&lt;img alt=&quot;Stromversorgung Rückseite&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/stromversorgung_rueckseite.serendipityThumb.jpg&quot; style=&quot;width:110px&quot; title=&quot;Stromversorgung Rückseite&quot; /&gt;&lt;/a&gt;Obwohl das PC-Netzteil einen recht großen, nach draußen blasenden Lüfter eingebaut hat, ist der erzeugte Luftstrom nicht gut genug, um die Abwärme der Kühlkörper des Drehzahlreglers abzuführen. Deshalb habe ich an der Vorderseite einen Lüfter eingebaut, welcher direkt auf diese Kühlkörper bläst. Weiter hat der Netzteillüfter schon einiges seiner Lebensdauer verbraucht und sobald er ausfällt gibt es noch einen anderen, der alles vor dem Hitzetod bewahrt. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/laugh.png&quot; alt=&quot;:-D&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Den PWM-Ausgang habe ich mittels dreipoliger XLR-Steckverbinder gelöst. Das mag jetzt für Leute aus der Tontechnik unentspannt sein, weil man jedes ihrer Geräte beim Anschluss direkt zerstören kann, aber ich versichere, dass der Kasten die Wohnung nicht verlässt. Weiter habe ich zwischenzeitlich eine entsprechende warnende Beschriftung aufgeklebt. Das tolle an den XLR-Verbindern von Neutrik &lt;a href=&quot;https://www.neutrik.com/de/produkt/nc3mxx&quot;&gt;NC3MXX&lt;/a&gt; und &lt;a href=&quot;https://www.neutrik.com/de/produkt/nc3fd-lx&quot;&gt;NC3FD-LX&lt;/a&gt; ist ihre überaus solide Machart, welche eine praktisch unverwüstliche und präzise gefertigte Qualitätsanmutung aufweist. Die Buchse verriegelt auch den Stecker, sodass nichts abrutschen kann.&lt;/p&gt;

&lt;h3&gt;Nutzung&lt;/h3&gt;

&lt;p&gt;Innerhalb von drei Minuten hat man das Netzteil aus dem Schrank geholt und den Fenstereinsatz eingehängt. Meist lasse ich den Lüfter zwischen 40 und 80% laufen, weil das zum einen völlig ausreicht und zum anderen die Geräuschentwicklung im Rahmen hält. Auf voller Lüfterdrehzahl kann man sich nur mit Mühe längere Zeit im Raum aufhalten. Er rauscht eben einfach wie ein Kfz-Radiatorlüfter. Bei denen wird auf Luftdurchsatz anstatt auf Geräuschentwicklung optimiert.&lt;/p&gt;

&lt;p&gt;Der Luftdurchsatz ist auch bei 60% Leistung groß genug, sodass man Kraft braucht, wenn man die Tür, die den letzten großen Luftweg durch die Wohnung schafft, schließen möchte. Da pfeift es durch alle Türritzen und Schlüssellöcher, wenn man sie trotzdem schließt. Der Lüfter dreht dann direkt ein wenig langsamer und der Strommesser zeigt an, dass sich der Lüfter mehr anstrengen muss als normal. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Wenn in der Nacht draußen 22°C und in der Wohnung 26°C sind, schafft man es mit der Lösung, bis zu ein Grad pro Stunde zu reduzieren. Meist läuft der Lüfter nur die erste Stunde auf Maximum, um fürs Schlafen eine angenehme Temperatur zu schaffen, um dann mit etwa 60% Leistung über die Nacht zu kommen. Wenn draußen tagsüber 30°C und nachts 20°C herrschen und in der Wohnung abends beim Einschalten knapp 26°C sind, ist die Raumtemperatur am Morgen auf etwa 22°C gesunken. Es ist aber wichtig, nicht zu verschlafen, da sonst wieder wärmere Luft von außen in die Wohnung transportiert wird. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/laugh.png&quot; alt=&quot;:-D&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

&lt;h3&gt;Fazit&lt;/h3&gt;

&lt;p&gt;Diese Lösung war einst lediglich als Experiment gedacht, aber jetzt ist sie zum festen Bestandteil des Lebens im Sommer geworden.&lt;/p&gt;

&lt;p&gt;Ich hoffe, dass ihr wie ich durch eine derartige Bastelei auf die Anschaffung einer richtigen Klimaanlage verzichten könnt.&lt;/p&gt;

&lt;h3&gt;Nachtrag&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;31.07.2020:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Falls ihr es dennoch nicht aushaltet und eine Klimaanlage kauft, achtet bitte stets darauf, dass sie mit einem Kühlmittel geladen ist, welches bei Austritt keinen katastrophalen Schaden an unserer Erdatmosphäre anrichtet. Diese haben einen sehr kleinen GWP-Wert in &lt;a href=&quot;https://en.wikipedia.org/wiki/List_of_refrigerants&quot;&gt;dieser Liste&lt;/a&gt;. Isobutan (R600a) und Propan (R290) sind beispielsweise welche von den klimafreundlichen Mitteln. Gleiches gilt für Kühlschränke, Wärmepumpentrockner und anderen Geräte, in denen Kältemittel ist. Gute Hersteller schreiben die Kältemittelnummer mit in die technischen Details eines Produktes auf ihrer Website. Letztlich hatte ich die Wahl zwischen einem Modell, dass bei einem Kältekreislaufleck 1,5t CO&lt;sub&gt;2&lt;/sub&gt;-Äquivalent in die Atmosphäre entweichen lässt und einem anderen Modell, bei dem es nur knapp ein Kilogramm ist.&lt;/p&gt;

&lt;p id=&quot;upgrade&quot;&gt;&lt;em&gt;24.06.2021:&lt;/em&gt;&lt;/p&gt;

&lt;video id=&quot;videoAlt&quot; class=&quot;serendipity_image_left&quot; poster=&quot;/uploads/tango-movie.serendipityThumb.png&quot; preload=&quot;none&quot;&gt; &lt;source type=&quot;video/webm&quot; src=&quot;https://gnuheidix.de/files/videos/luefter_alt.webm&quot;&gt; &lt;a href=&quot;https://gnuheidix.de/files/videos/luefter_alt.webm&quot;&gt;Video ansehen&lt;/a&gt;&lt;/video&gt;

&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/luefter_alt.jpg&quot;&gt;&lt;!-- s9ymdb:163 --&gt;&lt;img alt=&quot;alter Lüfter&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/luefter_alt.serendipityThumb.jpg&quot; style=&quot;width:110px&quot; /&gt;&lt;/a&gt;Der &lt;a class=&quot;videoskip&quot; data-timeoffset=&quot;1&quot; href=&quot;#videoAlt&quot;&gt;Noname-Lüfter&lt;/a&gt; fällt immer mehr durch eine erhöhte Geräuschentwicklung auf. Noch ist der Stromverbrauch unverändert, aber es ist abzusehen, dass sich die Lager im Motor verabschieden. Vermutlich waren sie erhöhtem Verschleiß ausgesetzt, weil das Lüfterrad nicht sauber ausgewuchtet ist. Das Vibrationsniveau war von Anfang an nicht brillant.&lt;br /&gt;
&lt;br /&gt;
Um das Problem zu beheben, habe ich mich für einen VA18-AP70/LL-86S von Spal entschieden. Der ist zwar völlig überdimensioniert, aber das Ziel ist nicht, ihn auf voller Leistung laufen zu lassen. Mit 3450m³/h maximalem Luftdurchsatz, ist er mehr als doppelt so leistungsfähig wie der bisherige und er muss noch weniger arbeiten, um den gewünschten Luftstrom zu erzeugen. &lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/luefter_neu.jpg&quot;&gt;&lt;!-- s9ymdb:164 --&gt;&lt;img alt=&quot;neuer Lüfter&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/luefter_neu.serendipityThumb.jpg&quot; style=&quot;width:110px&quot; /&gt;&lt;/a&gt;Die Spezifikation des Lüfters weist ihn mit einer maximalen Stromaufnahme von 17,4A aus, was fast das dreifache des bisherigen Lüfters ist. Das von mir eingesetzte 300W PC-Netzteil reicht mit den 18A (21A kurzzeitig) auf der 12V-Schiene gerade so aus. Den PWM-Regler musste ich aber &lt;a href=&quot;https://www.amazon.de/dp/B08214QW3X/&quot;&gt;größer dimensionieren&lt;/a&gt;, um ruhig schlafen zu können.&lt;/p&gt;

&lt;video id=&quot;videoNeu&quot; class=&quot;serendipity_image_left&quot; poster=&quot;/uploads/tango-movie.serendipityThumb.png&quot; preload=&quot;none&quot;&gt; &lt;source type=&quot;video/webm&quot; src=&quot;https://gnuheidix.de/files/videos/luefter_neu.webm&quot;&gt; &lt;a href=&quot;https://gnuheidix.de/files/videos/luefter_neu.webm&quot;&gt;Video ansehen&lt;/a&gt;&lt;/video&gt;

&lt;p&gt;Erste Tests des &lt;a class=&quot;videoskip&quot; data-timeoffset=&quot;1&quot; href=&quot;#videoNeu&quot;&gt;Spal&lt;/a&gt; sind äußerst vielversprechend. Er zieht 15A ohne Gegendruck und erzeugt praktisch keinerlei Vibrationen. Er schafft gefühlt bei 5A die selbe Menge an Luftdurchsatz wie der alte bei 7A und macht dabei ein angenehmeres ruhiges rauschendes Geräusch. Wenn man ihn voll aufdreht, ist er natürlich bei weitem lauter. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/laugh.png&quot; alt=&quot;:-D&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;
 
    </description>
</item>
<item>
    <title>Mod: Grunwerg SS30R</title>
    <link>https://gnuheidix.de/archives/70-Mod-Grunwerg-SS30R.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:74 --&gt;&lt;img alt=&quot;&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/Contact-new.png&quot; style=&quot;width:100px&quot; /&gt;Warmes Wasser ist für den Windelwechselvorgang in meiner Familie zentraler Bestandteil und um dies stets verfügbar zu machen, haben wir uns für eine Pumpthermoskanne (SS30R) entschieden. Dies funktioniert hervorragend, aber man braucht für die Bedienung leider zwei Hände.&lt;/p&gt;

&lt;h3&gt;Motivation&lt;/h3&gt;

&lt;p&gt;Bei der Bedienung der &lt;a href=&quot;https://www.amazon.de/dp/B00CEFJ61I/&quot;&gt;SS30R&lt;/a&gt; in unmodifizierter Form hält man mit der einen Hand den Lappen und mit der anderen pumpt man Luft in die Kanne mithilfe des integrierten Blasebalgs. Es ist jedoch grundsätzlich erforderlich, eine Hand immer am Kind zu haben.&lt;/p&gt;

&lt;h3&gt;Modifikation&lt;/h3&gt;

&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/ss30r_modifiziert.jpg&quot; title=&quot;geschlossene SS30R Pumpthermoskanne in modifizierter Form&quot;&gt;&lt;!-- s9ymdb:152 --&gt;&lt;img alt=&quot;geschlossene SS30R Pumpthermoskanne in modifizierter Form&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/ss30r_modifiziert.serendipityThumb.jpg&quot; style=&quot;width:73px&quot; title=&quot;geschlossene SS30R Pumpthermoskanne in modifizierter Form&quot; /&gt;&lt;/a&gt;Das Pumpen der Luft gilt es mit dem Fuss auslösbar zu machen, da einer zum Stehen ausreicht. Ich bin zufällig über eine regelbare &lt;a href=&quot;https://www.amazon.de/dp/B07Y81LQ1Z/&quot;&gt;Aquariumpumpe&lt;/a&gt; gestolpert und habe diese mit ein paar anderen Teilen kombiniert, die ich noch herumliegen hatte.&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.amazon.de/dp/B07Y1TDWSB/&quot;&gt;Eurosteckerverlängerung&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;Behälter von &lt;a href=&quot;https://www.amazon.de/dp/B00ARRJHU0/&quot;&gt;Heinz Fridge Pack XXL 1kg&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.amazon.de/dp/B01461MZG0/&quot;&gt;Silikonschlauch&lt;/a&gt; 6x8mm&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.amazon.de/dp/B01AWE0L6G/&quot;&gt;Einmachglasgummiring&lt;/a&gt; 43x71mm&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.amazon.de/dp/B014J65KPK/&quot;&gt;Grobhandtaster&lt;/a&gt; als Fussschalter&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Der Kern der Modifikation ist das Ersetzen des Blasebalgs und die Verstärkung des Kannendeckels bis zu dem Punkt, ab der er im Stande ist, den Thermosdeckel so straff auf die Kanne zu drücken, damit die unterdimensionierte Dichtung hinreichend abdichtet, sodass die im Vergleich zum Blasebalg geringe Luftpumpleistung der Aquariumpumpe ausreicht, um das Wasser aus der Kanne zu drücken.&lt;/p&gt;

&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/kannendeckel_modifiziert.jpg&quot; title=&quot;Kannendeckel geöffnet in modifizierter Form&quot;&gt;&lt;!-- s9ymdb:153 --&gt;&lt;img alt=&quot;Kannendeckel geöffnet in modifizierter Form&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/kannendeckel_modifiziert.serendipityThumb.jpg&quot; style=&quot;width:73px&quot; title=&quot;Kannendeckel geöffnet in modifizierter Form&quot; /&gt;&lt;/a&gt;Bewährt hat sich ein zurechtgeschnittener Heinz-Bohnenbehälter, der zum einen gut in den blasebalgumschließenden Deckel passt und zum anderen strukturell stabil genug gebaut ist. Dies alleine reicht allerdings nicht aus, da der obere Ring des Kannendeckels nur eingeschnappt ist und der Bohnenbehälter so nicht hinreichend auf die Druckplatte zum Thermosdeckel wirken kann, ohne dass der obere Ring herausschnappt.&lt;/p&gt;

&lt;p&gt;Abhilfe für diese Unterdimensionierung schaffen mehrere zum Drittelkreis gebogene Stricknadeln, die im Schnappmechanismus versenkt und mit Heißkleber großzügig vergossen werden.&lt;/p&gt;

&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/kannendeckel_offen.jpg&quot; title=&quot;Kannendeckel geöffnet&quot;&gt;&lt;!-- s9ymdb:155 --&gt;&lt;img alt=&quot;Kannendeckel geöffnet&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/kannendeckel_offen.serendipityThumb.jpg&quot; style=&quot;width:73px&quot; title=&quot;Kannendeckel geöffnet&quot; /&gt;&lt;/a&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/thermosdeckel_offen.jpg&quot; title=&quot;Kannen- und Thermosdeckel geöffnet&quot;&gt;&lt;!-- s9ymdb:154 --&gt;&lt;img alt=&quot;Kannen- und Thermosdeckel geöffnet&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/thermosdeckel_offen.serendipityThumb.jpg&quot; style=&quot;width:73px&quot; title=&quot;Kannen- und Thermosdeckel geöffnet&quot; /&gt;&lt;/a&gt;Damit hinreichender Druck zwischen Druckplatte und Thermosdeckel hergestellt wird, haben sich Einmachglasgummis bewährt. Je nach Zuschnitt des Bohnenbehälters kann man hier in der Anzahl variieren.&lt;/p&gt;

&lt;p&gt;Die Aquariumpumpe hat bereits einen dünnen Silikonschlauch und ein Rückschlagventil im Paket dabei und diese Teile können direkt mit benutzt werden. Der dünne Schlauch passt perfekt in den 6x8er Schlauch, welcher wiederum sehr gut abdichtend direkt in den Thermosdeckel passt. Mithilfe einer Druckfeder kann man einen zweckmäßigen Knickschutz am Kannendeckel realisieren.&lt;/p&gt;

&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/aquariumpumpe.jpg&quot; title=&quot;regulierbare Aquariumpumpe mit Absperrhahn&quot;&gt;&lt;!-- s9ymdb:151 --&gt;&lt;img alt=&quot;regulierbare Aquariumpumpe mit Absperrhahn&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/aquariumpumpe.serendipityThumb.jpg&quot; style=&quot;width:76px&quot; title=&quot;regulierbare Aquariumpumpe mit Absperrhahn&quot; /&gt;&lt;/a&gt;Einen Absperrhahn habe ich nachträglich hinzugefügt, um im Krabbelalter keine Überschwemmungen zu haben. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/laugh.png&quot; alt=&quot;:-D&quot; class=&quot;emoticon&quot; /&gt; Besser wäre hier allerdings ein Trennschalter oder ein Entlüftungsventil, um Druckaufbau direkt zu verhindern.&lt;/p&gt;

&lt;p&gt;Die Regelbarkeit der Pumpe ist relevant, da bei voller Thermoskanne eine niedrige Pumpleistung völlig ausreichend ist, da kaum Luft komprimiert werden muss. Beim letzten Drittel des verbleibenden Wassers in der Kanne ist es praktisch, die Pumpleistung erhöhen zu können, um den Druckaufbau zu verkürzen. Da die Kanne nicht perfekt dicht ist, sinkt der Innenluftdruck kurz nach der Nutzung schnell zurück auf Umgebungsdruck ab, wodurch die Pumpe bei leerwerdender Kanne die Luft immer erst soweit verdichten muss, damit das Wasser nach draußen gedrückt werden kann.&lt;/p&gt;

&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/fusstaster.jpg&quot; title=&quot;Fusstaster auf Basis eines Grobhandtasters&quot;&gt;&lt;!-- s9ymdb:150 --&gt;&lt;img alt=&quot;Fusstaster auf Basis eines Grobhandtasters&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/fusstaster.serendipityThumb.jpg&quot; style=&quot;width:110px&quot; title=&quot;Fusstaster auf Basis eines Grobhandtasters&quot; /&gt;&lt;/a&gt;Der Grobhandtaster ist kombiniert mit dem beliebig teilbaren Verlängerungskabel großartig für den kurzzeitigen Betrieb der Aquariumpumpe. Die Beschriftung mit &quot;Alarm&quot; ist in meiner Realisierung ein wenig irreführend, aber einen anderen Taster mit hinreichender Wasserdichtigkeit hatte ich gerade leider nicht in meinem Fundus. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

&lt;h3&gt;Fazit&lt;/h3&gt;

&lt;p&gt;Die vorliegende Modifikation stellt für unsere Anforderungen die optimale Lösung dar. Waschbare Mulllappen wie &lt;a href=&quot;https://www.amazon.de/dp/B07TZ4S5LH/&quot;&gt;diese&lt;/a&gt; sind unseres Erachtens Einmalfeuchttüchern stets vorzuziehen. Im Außeneinsatz nutzen wir sie in Kombination mit einer kleinen Dessertschüssel und einer sowieso stets vorhanden Wasserflasche.&lt;/p&gt;

&lt;p&gt;Ich hoffe, diese Lösung hilft noch anderen Leuten. Für uns ist sie nicht mehr wegzudenken. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

&lt;h3&gt;Nachtrag&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;19.07.2020:&lt;/em&gt; Ich habe euch eine &lt;a href=&quot;https://www.amazon.de/hz/wishlist/ls/1Q51D2VHD4UJB&quot;&gt;Teileliste&lt;/a&gt; mit kleinen Hinweisen zusammengestellt.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;13.08.2020:&lt;/em&gt; Heute ist die Spule der Aquariumpumpe mit einem Plopp ausgestiegen. Glücklicherweise war das nur die oberste Windung, die durchgebrannt ist und ich konnte die Spule schnell reparieren. Habt bestenfalls ordentlichen Lackdraht daheim, um die Spule zur Not neu wickeln zu können.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;22.11.2020:&lt;/em&gt; Die Spule der Aquariumpumpe hat heute endgültig versagt. Dieses Mal waren mehr als 20 Windungen gleichzeitig ausgestiegen und die Geruchsentwicklung war auch nicht schlecht. Lackdraht habe ich gerade nicht hinreichend zur Hand. Ich probiere jetzt einen Pumpenhersteller &lt;a href=&quot;https://schego.de/&quot;&gt;aus dem Nebenort&lt;/a&gt;. Drückt mir die Daumen, dass die länger hält.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;23.11.2020:&lt;/em&gt; Die &lt;a href=&quot;https://schego.de/de/home/hobby-freizeit/aquarientechnik/membranpumpen/&quot;&gt;Schego 850&lt;/a&gt; macht von der Verarbeitungsqualität und dem Luftdurchsatz her einen überragend guten Eindruck. Ich bin begeistert und hoffe, dass ich nun an der Front Ruhe habe. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;
 
    </description>
</item>
<item>
    <title>Mod: Angelcare Classic XL</title>
    <link>https://gnuheidix.de/archives/69-Mod-Angelcare-Classic-XL.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:139 --&gt;&lt;img alt=&quot;&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/trash.png&quot; style=&quot;width:100px&quot; /&gt;Auf das Thema Nachwuchs haben sich eine Menge Industriezweige eingeschossen, um Eltern das Geld aus der Tasche zu ziehen. Beim Windeleimer fängt es an.&lt;/p&gt;

&lt;p&gt;Es gibt eine große Anzahl vorgefertigter Lösungen, von der mich keine als Ganzes überzeugt. Es gibt immer etwas, was man Nachkaufen muss und es wird alles erheblich mehr als bei üblichem Marketing mit fadenscheinigen Alleinstellungsmerkmalen versehen.&lt;/p&gt;

&lt;p&gt;Grundsätzlich ist es für mich neu gewesen, Fäkalien - wenn auch zeitlich begrenzt - in der Wohnung zwischenzulagern. Obwohl ich ein großer Fan des Youtube-Channels &lt;a href=&quot;https://www.youtube.com/user/draingo1&quot;&gt;draingo1&lt;/a&gt; bin, hat mich dieses Thema im Vorfeld sehr beschäftigt, um es so komfortorientiert wie möglich zu gestalten.&lt;/p&gt;

&lt;h3&gt;Motivation&lt;/h3&gt;

&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/2370_totale_geschlossen.jpg&quot; title=&quot;2370 in der Totale - geschlossen.jpg&quot;&gt;&lt;!-- s9ymdb:141 --&gt;&lt;img alt=&quot;2370 in der Totale - geschlossen.jpg&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/2370_totale_geschlossen.serendipityThumb.jpg&quot; style=&quot;width:63px&quot; title=&quot;2370 in der Totale - geschlossen.jpg&quot; /&gt;&lt;/a&gt;Ich bin über den &lt;a href=&quot;https://www.amazon.de/dp/B07RY35ZD1&quot;&gt;Angelcare Classic XL&lt;/a&gt; (2370) für rund 10€ gestolpert und habe mir gedacht, dass es sicher einfache Wege gibt, die Primärfunktion ohne ständiges Nachkaufen von &lt;a href=&quot;https://www.amazon.de/dp/B01N9HCZCO&quot;&gt;Kartuschen&lt;/a&gt; für ca. 7€ das Stück nutzen zu können. Mit einer Kartusche kann man den 2370 vier Mal laden. Alleine das Plastik der Kartuschen ist unnötige Ressourcenverschwendung. Es reicht mir der Umweltschaden der Einwegwindeln.&lt;/p&gt;

&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/2370_hersteller_kartusche.jpg&quot; title=&quot;2370 Hersteller der Kartusche&quot;&gt;&lt;!-- s9ymdb:144 --&gt;&lt;img alt=&quot;2370 Hersteller der Kartusche&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/2370_hersteller_kartusche.serendipityThumb.jpg&quot; style=&quot;width:110px&quot; title=&quot;2370 Hersteller der Kartusche&quot; /&gt;&lt;/a&gt;Lustig ist der Name, den sich die Firma auf der Kartusche gegeben hat. Tja, da ist der Name perfekt gewählt und ich habe auch herausgefunden, dass sie eine ähnliche Produktserie als Katzenklokotzwischenlager vermarkten. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/laugh.png&quot; alt=&quot;:-D&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

&lt;h3&gt;Modifikation&lt;/h3&gt;

&lt;p&gt;Sobald man die eine mitgelieferte Kartusche leergefahren hat, baut man den Beutelabschneider im Inneren des 2370 aus, da dieser nun nicht mehr gebraucht wird und potenziell im Weg ist, insofern man nicht plant Endlosbeutel zu nutzen. Am besten ist es natürlich, wenn man ihn beim initialen Zusammenbau garnicht erst installiert hat. Man kann ihn am einfachsten entfernen, indem man den Scharnierstift, welcher beide Eimerhälften verbindet, kurzzeitig halb herauszieht.&lt;/p&gt;

&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/2370_entladen.jpg&quot; title=&quot;2370 entladen&quot;&gt;&lt;!-- s9ymdb:143 --&gt;&lt;img alt=&quot;2370 entladen&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/2370_entladen.serendipityThumb.jpg&quot; style=&quot;width:53px&quot; title=&quot;2370 entladen&quot; /&gt;&lt;/a&gt;Die leere Kartusche entnimmt man dem 2370 und wärmt schon einmal die Heißklebepistole an. Man merkt spätestens jetzt, wenn man sich das Teil genau anschaut, dass es strukturell so ausgelegt ist, dass es die vier Ladevorgänge gerade so überlebt, bevor Teile abbrechen. Von der Unterseite betrachtet sieht man eine Falz, an welcher der innere Ring und das äußere Beutelreservoir zusammengeklipst und minimal geschweißt ist. Das bekommt man ohne Werkzeug mit Fingerspitzengefühl problemlos auf. Falls der Hersteller seine Pressschweißmaschine zwischenzeitlich rekonfiguriert hat, dann schneidet man es mit einer kleinen Trennscheibe einfach auf.&lt;/p&gt;

&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/2370_kartusche_modifiziert_unten.jpg&quot; title=&quot;2370 Kartusche modifiziert von unten&quot;&gt;&lt;!-- s9ymdb:146 --&gt;&lt;/a&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/2370_kartusche_modifiziert_oben.jpg&quot; title=&quot;2370 Kartusche modifiziert von oben&quot;&gt;&lt;!-- s9ymdb:145 --&gt;&lt;img alt=&quot;2370 Kartusche modifiziert von oben&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/2370_kartusche_modifiziert_oben.serendipityThumb.jpg&quot; style=&quot;width:110px&quot; title=&quot;2370 Kartusche modifiziert von oben&quot; /&gt;&lt;/a&gt;Besonders der innere Ring, an welchem der Beutel anliegt, sieht über die Zeit einigen mechanischen Stress und um ihn zu verstärken, bietet es sich an, die Löcher am inneren Ring von unten mit Malerkreppband zur verschließen und eine Schicht Heißkleber rundherum zu verteilen. Sobald das trocken ist, entfernt man das Kreppband und wiederholt die Prozedur von unten. Sollte eure Kartusche am oberen Rand des inneren Rings, an dem der Beutel vorbeigeführt wird, scharfe Kanten haben, dann schleift sie einfach mit etwas feinem Sandpapier ab.&lt;/p&gt;

&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/2370_kartusche_modifiziert_unten.jpg&quot; title=&quot;2370 Kartusche modifiziert von unten&quot;&gt;&lt;img alt=&quot;2370 Kartusche modifiziert von unten&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/2370_kartusche_modifiziert_unten.serendipityThumb.jpg&quot; style=&quot;width:110px&quot; title=&quot;2370 Kartusche modifiziert von unten&quot; /&gt;&lt;/a&gt;Steckt beide Hälften wieder zusammen. Verklebt sie mit Heißkleber insofern man nicht plant, Endlosbeutel zu nutzen.&lt;/p&gt;

&lt;p&gt;Ihr werdet merken, dass die Kartusche nun einen erheblich vertrauenserweckenderen Eindruck an den relevanten Stellen macht.&lt;/p&gt;

&lt;h3&gt;Beutelwahl&lt;/h3&gt;

&lt;p&gt;Grundsätzlich hat man die Wahl zwischen Endlos- und konventionellen Plastikbeuteln. Es gibt Anbieter, die sich darauf &lt;a href=&quot;https://www.amazon.de/dp/B002Q9IXQG&quot;&gt;spezialisiert&lt;/a&gt; haben, am Nachkaufwahnsinn teilzuhaben und umweltfreundlichere Lösungen bereitstellen, die minimalen Mehraufwand mit sich bringen.&lt;/p&gt;

&lt;p&gt;Ich kann zu den Endlosbeuteln nichts weiter sagen, da ich mich für den konventionellen Weg entschieden habe.&lt;/p&gt;

&lt;p&gt;Ich empfehle, dass man Beutel mit etwa 70 Litern Fassungsvermögen wählt, die höher als breit geschnitten sind. Der innere Klappenmechanismus des 2370 bedarf etwas Zusatzbeutelmaterial, deswegen die großzügige Dimensionierung. Für Stillstuhl empfehle ich Beutel aus HDPE mit einer Stärke von mindestens 10&amp;#160;µm. Für alles, was danach kommt, sollten es 15&amp;#160;µm oder mehr sein. Ich selbst nutze aktuell &lt;a href=&quot;https://www.amazon.de/dp/B0053HE9ES/&quot;&gt;AG-264&lt;/a&gt; mit 9&amp;#160;µm. Die funktionieren gut, wenn man nicht stopft, sobald der 2370 voll ist. LDPE-Beutel sollten über 20&amp;#160;µm haben, falls man sich für sowas entscheidet.&lt;/p&gt;

&lt;p&gt;Ich habe diesbezüglich viel getestet und alles, was der Spezifikation eines Gelben Sacks nahe kommt, ist gut genug.&lt;/p&gt;

&lt;h3&gt;Nutzung&lt;/h3&gt;

&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/2370_geladen.jpg&quot; title=&quot;2370 geladen mit konventionellem Beutel&quot;&gt;&lt;!-- s9ymdb:142 --&gt;&lt;img alt=&quot;2370 geladen mit konventionellem Beutel&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/2370_geladen.serendipityThumb.jpg&quot; style=&quot;width:110px&quot; title=&quot;2370 geladen mit konventionellem Beutel&quot; /&gt;&lt;/a&gt;Um den 2370 nun zu laden, entfaltet man den Beutel vollständig, zieht ihn in die Länge und führt ihn bei geschlossenem Eimer durch die Klappe, sodass noch etwa 10&amp;#160;cm Beutel an jeder Kante sichtbar sind. Nehmt einen stumpfen schmalen Gegenstand und drückt den Beutelüberstand von oben in das Beutelreservoir der Kartusche. Nehmt ein Gummi und fixiert die Geschichte. Bei mir hat sich hierfür ein abgebrochener Schaschlikspieß und ein ausgemustertes Stirnband, dass ich mit einer Schlaufe versehen habe, bewährt.&lt;/p&gt;

&lt;p&gt;Zum Entladen entfernt ihr das Gummi, holt den Beutelüberstand aus dem Reservior und öffnet den Eimer. Nehmt die Beutelöffnung nicht allzu fest in die eine Hand und komprimiert den Beutelinhalt in das untere Eimerteil mit der anderen Hand, sodass die Luft entweicht, um Kapazität der schwarzen Tonne zu sparen. Verschließt den Beutel mit einem Knoten.&lt;/p&gt;

&lt;p&gt;Ich habe letztendlich immer einen monolithisch anmutenden Würfel von etwa 30&amp;#160;cm Kantenlänge.&lt;/p&gt;

&lt;h3&gt;Fazit&lt;/h3&gt;

&lt;p&gt;Alles, was häufig genutzt wird, sollte so wenig wie möglich im Weg sein, um den Frustfaktor von unnötig empfundener repetitiver Arbeit zu minimieren. Mit meinem Lösungsansatz habe ich meines Erachtens einen guten Weg gefunden, nicht mehr an die Firma gebunden zu sein, die versucht aus Scheiße Geld zu machen. Nebenbei habe ich Müll ohne Komfortverlust reduziert.&lt;/p&gt;

&lt;p&gt;Ich hoffe, dass diese Erkenntnisse jemand anderem Zeit sparen, die anderswo sicherlich besser investiert ist. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

&lt;h3&gt;Nachbau&lt;/h3&gt;

&lt;p&gt;Falls ihr überlegt, die Kartuschen robust und wiederverschließbar nachzubauen und zu vertreiben, dann vergesst es besser schnell wieder. Obwohl es mir technologisch unerklärlich ist, hat die Firma es wie auch immer geschafft, das Design in den &lt;a href=&quot;https://patents.google.com/patent/US6974029B2/en&quot;&gt;Vereinigten Staaten&lt;/a&gt;, Japan und China zu patentieren.&lt;/p&gt;
 
    </description>
</item>
<item>
    <title>Mod: Comandante C40</title>
    <link>https://gnuheidix.de/archives/68-Mod-Comandante-C40.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:56 --&gt;&lt;img alt=&quot;&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/kaffee.png&quot; style=&quot;width:100px&quot; /&gt;Die handbetriebene Kaffeemühle &lt;a href=&quot;https://comandantegrinder.com/&quot;&gt;Comandante C40&lt;/a&gt; ist unglaublich gut in allen Belangen. Wenn man aber widererwartend körperlich den Handbetrieb nur mit Mühe benutzen kann, wird der Weg zum Kaffeegenuss steinig.&lt;/p&gt;

&lt;h3&gt;Motivation&lt;/h3&gt;

&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/comandante_original.jpg&quot; title=&quot;Comandante unmodifiziert&quot;&gt;&lt;!-- s9ymdb:138 --&gt;&lt;img alt=&quot;Comandante unmodifiziert&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/comandante_original.serendipityThumb.jpg&quot; style=&quot;width:110px&quot; title=&quot;Comandante unmodifiziert&quot; /&gt;&lt;/a&gt;Aktuell nutze ich meine Arme mehr als sonst und ich finde es sehr entspannend, wenn sie mal eine kurze Pause haben. Meine Kaffeemühle braucht also eine Erweiterung, welche die Entspannung nicht behindert. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/laugh.png&quot; alt=&quot;:-D&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Ich habe zwar noch meine alte elektrische Kaffeemühle im Keller, aber bei der ist das Endprodukt bei weitem nicht so gut. Auch ein zeitweiser Wechsel zurück war für mich keine Lösung.&lt;/p&gt;

&lt;h3&gt;Modifikation&lt;/h3&gt;

&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/adapter_zerlegt.jpg&quot; title=&quot;entwickelter Adapter in Einzelzeilen&quot;&gt;&lt;!-- s9ymdb:137 --&gt;&lt;img alt=&quot;entwickelter Adapter in Einzelzeilen&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/adapter_zerlegt.serendipityThumb.jpg&quot; style=&quot;width:110px&quot; title=&quot;entwickelter Adapter in Einzelzeilen&quot; /&gt;&lt;/a&gt; &lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/kurbel_und_nuss.jpg&quot; title=&quot;Vergleich Comandante-Kurbel und Stecknusselement&quot;&gt;&lt;!-- s9ymdb:136 --&gt;&lt;img alt=&quot;Vergleich Comandante-Kurbel und Stecknusselement&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/kurbel_und_nuss.serendipityThumb.jpg&quot; style=&quot;width:110px&quot; title=&quot;Vergleich Comandante-Kurbel und Stecknusselement&quot; /&gt;&lt;/a&gt; Die Comandante besitzt einen 5,5&amp;#160;mm Sechskantantrieb, welcher magnetisch am Kurbelelement gehalten wird. Mit ein paar Teilen aus dem Werkzeugkasten, ist schnell ein passender Kurbelersatz konstruiert, welcher mit jedem Akkuschrauber angetrieben werden kann.&lt;/p&gt;

&lt;p&gt;Es braucht hierfür eine &lt;a href=&quot;https://www.amazon.de/dp/B001B3VC8O/&quot;&gt;5,5&amp;#160;mm Nuss&lt;/a&gt;, ein &lt;a href=&quot;https://www.amazon.de/dp/B0092JMGJS/&quot;&gt;1/4&quot; Kugelgelenk&lt;/a&gt; und einen &lt;a href=&quot;https://www.amazon.de/dp/B001B4TP64/&quot;&gt;1/4&quot; Vierkant auf Sechskant-Adapter&lt;/a&gt;. Die Plexiglasscheibe kann man weglassen oder von der Kurbel auf die Nuss übertragen. Ich hatte die Scheibe noch von einer Ersatzkurbel übrig.&lt;/p&gt;

&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/comandante_modifiziert_mit_akkuschrauber.jpg&quot; title=&quot;Comandante modifiziert mit Akkuschrauber&quot;&gt;&lt;!-- s9ymdb:134 --&gt;&lt;img alt=&quot;Comandante modifiziert mit Akkuschrauber&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/comandante_modifiziert_mit_akkuschrauber.serendipityThumb.jpg&quot; style=&quot;width:73px&quot; title=&quot;Comandante modifiziert mit Akkuschrauber&quot; /&gt;&lt;/a&gt; &lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/adapter_installiert.jpg&quot; title=&quot;Adapter auf Comandante installiert&quot;&gt;&lt;!-- s9ymdb:135 --&gt;&lt;img alt=&quot;Adapter auf Comandante installiert&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/adapter_installiert.serendipityThumb.jpg&quot; style=&quot;width:73px&quot; title=&quot;Adapter auf Comandante installiert&quot; /&gt;&lt;/a&gt;Anstatt des Kugelgelenks hatte ich erst ein Kreuzgelenk im Einsatz, aber das ist von der Handhabung her nicht bedienfehlerresistent, was besonders im halbwachen Geisteszustand ein wichtiger Faktor ist. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/laugh.png&quot; alt=&quot;:-D&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Beispielsweise in Verbindung mit dem Bosch IXO hat man nun eine elektrische Kaffeemühle. Es ist aber ratsam, die Mühle mit nicht mehr als 200&amp;#160;min&lt;sup&gt;-1&lt;/sup&gt; zu drehen. Die Kaffeemühle würde das mit ihrer Kugellagerung ohne Probleme aushalten, aber dem Kaffee würde das bestimmt nicht gut tun.&lt;/p&gt;

&lt;h3&gt;Fazit&lt;/h3&gt;

&lt;p&gt;Not macht erfinderisch und ich hoffe, das hilft jemandem anders genauso, wie es mir geholfen hat. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

&lt;h3&gt;Nachtrag&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;11.07.2020:&lt;/em&gt; Wie sich herausstellt, gibt es ein solches &lt;a href=&quot;https://www.bosch-diy.com/de/de/p/ixo-collection-gewuerzmuehlen-aufsatz-1600a001ye-v35525&quot;&gt;Produkt&lt;/a&gt; bereits für Gewürze. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/laugh.png&quot; alt=&quot;:-D&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;
 
    </description>
</item>
<item>
    <title>Mod: Bosch GAS 18V-1</title>
    <link>https://gnuheidix.de/archives/67-Mod-Bosch-GAS-18V-1.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:140 --&gt;&lt;img alt=&quot;&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/clear.png&quot; style=&quot;width:100px&quot; /&gt;Der Akkusauger GAS 18V-1 ist gut verarbeitet, praktisch und preiswert, insofern man bereits Akkus und Ladegerät der Bosch 18V-Linie hat. Leider fehlt ihm aber für die Nutzung abseits der Werkstatt die Filterfähigkeit für den feinen Hausstaub.&lt;/p&gt;

&lt;h3&gt;Motivation&lt;/h3&gt;

&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/gas_18v-1.jpg&quot; title=&quot;Bosch GAS 18V-1 auf dem Akku stehend&quot;&gt;&lt;!-- s9ymdb:127 --&gt;&lt;img alt=&quot;Bosch GAS 18V-1 auf dem Akku stehend&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/gas_18v-1.serendipityThumb.jpg&quot; style=&quot;width:58px&quot; title=&quot;Bosch GAS 18V-1 auf dem Akku stehend&quot; /&gt;&lt;/a&gt;Der Staubsauger ist prima, um das Chaos beim Basteln im Rahmen zu halten. Leider habe ich aber feststellen müssen, dass der &lt;a href=&quot;https://www.amazon.de/dp/B07D5HFSRT&quot;&gt;vliesbasierte Filter&lt;/a&gt; (Hygienefilter) mangels hinreichender Vorfilterung beim Aufsaugen von Hausstaub übermäßig belastet wird und dadurch das Gerät schnell an Saugleistung verliert.&lt;/p&gt;

&lt;p&gt;Ich betrachte das nicht als konzeptionellen Fehler des Gerätes, weil es meines Erachtens nur für groben Schmutz konzipiert wurde.&lt;/p&gt;

&lt;h3&gt;Modifikation&lt;/h3&gt;

&lt;p&gt;Ich habe mir das Filtersystem genau angeschaut und angepasst, sodass es von den Filterstufen her an meinen AEG AUFGREEN angelehnt ist. Der AEG ist wie der Bosch zyklonbasiert.&lt;/p&gt;

&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/hygienefilter_installiert.jpg&quot; title=&quot;Bosch Hygienefilter eingebaut&quot;&gt;&lt;!-- s9ymdb:130 --&gt;&lt;img alt=&quot;Bosch Hygienefilter eingebaut&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/hygienefilter_installiert.serendipityThumb.jpg&quot; style=&quot;width:89px&quot; title=&quot;Bosch Hygienefilter eingebaut&quot; /&gt;&lt;/a&gt;Der AEG hat den &lt;a href=&quot;https://shop.aeg.de/p/9001966697&quot;&gt;Hygienefilter&lt;/a&gt; nach dem Motor, was eine unfassbare Fehlkonstruktion ist, weil sich der Motor und sein umgebendes Gehäuse mit der Zeit komplett mit sehr feinen Partikeln füllt. Das macht der Bosch mit seinem Filter direkt vor dem Motor besser.&lt;/p&gt;

&lt;p&gt;Der AEG hat allerdings einen &lt;a href=&quot;https://shop.aeg.de/p/1184255014&quot;&gt;Feinstaubfilter&lt;/a&gt;, welcher einen sehr großen Teil der feineren Partikel auffängt. Den hat der Bosch leider nicht, weil der Hersteller vermutlich die notwendigen Schritte für die Schmutzbehälterleerung so gering wie möglich für den Werkstattbetrieb halten wollte.&lt;/p&gt;

&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/innenfilter_unmodifiziert.jpg&quot; title=&quot;Bosch Innenfilter unmodifiziert, grobe Löcher in Plastik&quot;&gt;&lt;!-- s9ymdb:129 --&gt;&lt;img alt=&quot;Bosch Innenfilter unmodifiziert, grobe Löcher in Plastik&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/innenfilter_unmodifiziert.serendipityThumb.jpg&quot; style=&quot;width:110px&quot; title=&quot;Bosch Innenfilter unmodifiziert, grobe Löcher in Plastik&quot; /&gt;&lt;/a&gt;Der Bosch hat im Vergleich zum AEG nur einen sehr groben Innenfilter aus transparentem Plastik mit Löchern von etwa einem Millimeter. Der AEG hat ein &lt;a href=&quot;https://shop.aeg.de/p/140111382028&quot;&gt;Innenfiltergitter&lt;/a&gt; aus Nylon mit Löchern von etwa 0,3&amp;#160;mm für die kleinen Fussel, die nicht von der zyklonbasierten Filterung erfasst werden. Das macht der AEG eindeutig besser.&lt;/p&gt;

&lt;h4&gt;Feinstaubfilter&lt;/h4&gt;

&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/feinstaubfilter_zerlegt.jpg&quot; title=&quot;Bosch neuer Feinstaubfilter zerlegt&quot;&gt;&lt;!-- s9ymdb:132 --&gt;&lt;img alt=&quot;Bosch neuer Feinstaubfilter zerlegt&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/feinstaubfilter_zerlegt.serendipityThumb.jpg&quot; style=&quot;width:61px&quot; title=&quot;Bosch neuer Feinstaubfilter zerlegt&quot; /&gt;&lt;/a&gt; &lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/feinstaubfilter_installiert.jpg&quot; title=&quot;Bosch neuer Feinstaubfilter installiert&quot;&gt;&lt;!-- s9ymdb:131 --&gt;&lt;img alt=&quot;Bosch neuer Feinstaubfilter installiert&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/feinstaubfilter_installiert.serendipityThumb.jpg&quot; style=&quot;width:106px&quot; title=&quot;Bosch neuer Feinstaubfilter installiert&quot; /&gt;&lt;/a&gt;Direkt vor dem Hygienefilter ist hinreichend Platz, um Filterschwämme passender Größe einzubauen. Hier habe ich die Ohrpolster eines ausgedienten Kopfhörers, welche zufällig gerade perfekt vom Durchmesser her gepasst haben, eingesetzt und aus einer Papprolle Abstandshalter zugeschnitten. Die beiden Halteelemente sind erforderlich, weil die von mir eingesetzten Filter, welche in etwa 60&amp;#160;ppi haben, zu dünn sind, um alleine vom Hygienefilter gehalten zu werden. Wenn man einen Filterschwamm herumliegen hat, der etwa 2-3&amp;#160;cm Dicke aufweist, kann man sich die Halter sparen.&lt;/p&gt;

&lt;p&gt;Optimal wäre meines Erachtens eine Filterschwammkombination aus 60 und 10&amp;#160;ppi hintereinander. Das feine 60er fängt den Feinstaub und das 10er steuert strukturelle Festigkeit bei. Die Idee ist nicht auf meinem Mist gewachsen, sondern an dem mir bekannten &lt;a href=&quot;https://www.miele.de/haushalt/ersatzteile-trockner-9773.htm?mat=09164761&quot;&gt;Sockelfilter der Miele T1&lt;/a&gt; angelehnt. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

&lt;h4&gt;Innenfiltergitter&lt;/h4&gt;

&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/genaehtes_innenfilternetz.jpg&quot; title=&quot;genähtes Innenfilternetz zerlegt&quot;&gt;&lt;!-- s9ymdb:128 --&gt;&lt;img alt=&quot;genähtes Innenfilternetz zerlegt&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/genaehtes_innenfilternetz.serendipityThumb.jpg&quot; style=&quot;width:110px&quot; title=&quot;genähtes Innenfilternetz zerlegt&quot; /&gt;&lt;/a&gt; &lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/genaehtes_innenfilternetz_installiert.jpg&quot; title=&quot;genähtes Innenfilternetz installiert&quot;&gt;&lt;!-- s9ymdb:133 --&gt;&lt;img alt=&quot;genähtes Innenfilternetz installiert&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/genaehtes_innenfilternetz_installiert.serendipityThumb.jpg&quot; style=&quot;width:110px&quot; title=&quot;genähtes Innenfilternetz installiert&quot; /&gt;&lt;/a&gt; Ein Obst- und Gemüsenetz von meinem Supermarkt, welche seit etwa einem Jahr als Plastikbeutelersatz angeboten werden, habe ich mehrlagig genäht, sodass es um den Innenfilter gewickelt und mit Schlüpfergummis gehalten werden kann. Die Gummis hätte ich natürlich auch in das Filternetz integrieren können. Mangels Zeit habe ich die provisorische Variante gewählt, welche bei jeder Filterreinigung etwas aufwändiger zu reinstallieren ist.&lt;/p&gt;

&lt;h3&gt;Fazit&lt;/h3&gt;

&lt;p&gt;Der Akkusauger funktioniert nun klasse im gesamten Haushalt und die neuen Filter können unter fließendem Wasser gereinigt werden. Die Wartung hat jetzt natürlich mehr zu erledigende Schritte.&lt;/p&gt;

&lt;p&gt;Es wäre klasse, wenn Bosch diese Filtererweiterung vorgefertigt für dieses Gerät anbieten könnte. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

&lt;h3&gt;Hinweis zum AEG AUFGREEN&lt;/h3&gt;

&lt;p&gt;Bitte seht vom Kauf eines AEG AUFGREEN ab, weil der nachgelagerte Hygienefilter die Luft zwar reinigt, aber der im inneren verschmutzte Motor nur äußerst aufwändig gereinigt werden kann. Das Gerät ist zwar vollständig zerlegbar, aber das klappt höchstens zehn Mal, weil die schraubenarme Konstruktion mit seinen vielen Plastiknasen bei jeder Reinigung kontinuierlich schwächer wird.&lt;/p&gt;

&lt;p&gt;Weiter bricht die Verbindung vom Drehzahlregler zum Poti alleine beim scharf ansehen. Viele Dichtungen sind nicht dicht, was zu Saugleistungsverlust führt. Das Innenfilternetz wird bei Hausstaub stark belastet, weil wohl die Zyklonfilterung unzureichend arbeitet. Der Feinstaubfilter ist schnell dicht und die Saugleistung im Keller.&lt;/p&gt;

&lt;p&gt;Viel besser konzipiert und wartbar ist hingegen ein Miele CX1.&lt;/p&gt;

&lt;h3&gt;Nachtrag&lt;/h3&gt;

&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/filter_mit_bohrstaub_hygienefilterseite.jpg&quot; title=&quot;Feinstaubfilter nachdem Bohrstaub gesaugt wurde - Hygienefilterseite&quot;&gt;&lt;!-- s9ymdb:147 --&gt;&lt;img alt=&quot;Feinstaubfilter nachdem Bohrstaub gesaugt wurde - Hygienefilterseite&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/filter_mit_bohrstaub_hygienefilterseite.serendipityThumb.jpg&quot; style=&quot;width:110px&quot; title=&quot;Feinstaubfilter nachdem Bohrstaub gesaugt wurde - Hygienefilterseite&quot; /&gt;&lt;/a&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/filter_mit_bohrstaub_behaelterseite.jpg&quot; title=&quot;Feinstaubfilter nachdem Bohrstaub gesaugt wurde - Behälterseite&quot;&gt;&lt;!-- s9ymdb:148 --&gt;&lt;img alt=&quot;Feinstaubfilter nachdem Bohrstaub gesaugt wurde - Behälterseite&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/filter_mit_bohrstaub_behaelterseite.serendipityThumb.jpg&quot; style=&quot;width:110px&quot; title=&quot;Feinstaubfilter nachdem Bohrstaub gesaugt wurde - Behälterseite&quot; /&gt;&lt;/a&gt;&lt;em&gt;12.07.2020:&lt;/em&gt; Auch für die handwerkliche Nutzung ist der Feinstaubfilter von Vorteil. Hier sind die improvisierten Feinstaubfilter, nachdem Bohrstaub eingesaugt wurde, zu sehen. Der nachgeschaltete Hygienefilter sieht nach wie vor aus wie neu und riecht auch nicht nach Bohrstaub. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;
 
    </description>
</item>
<item>
    <title>HTTP/2: off</title>
    <link>https://gnuheidix.de/archives/66-HTTP2-off.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:93 --&gt;&lt;img alt=&quot;&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/list-task-due.serendipityThumb.png&quot; style=&quot;width:100px&quot; /&gt;Ich hätte ja nicht gedacht, dass ich so schnell wieder den Stecker dieses Protokolls ziehen muss. Netflix hat eine Analyse &lt;a href=&quot;https://github.com/Netflix/security-bulletins/blob/master/advisories/third-party/2019-002.md&quot;&gt;veröffentlicht&lt;/a&gt;, welche auf inkorrekte Behandlung von Sonderfällen bei Implementierungen von HTTP/2 hinweist, die zu Denial-of-Service-Attacken genutzt werden können.&lt;/p&gt;

&lt;h3&gt;Motivation&lt;/h3&gt;

&lt;p&gt;Netflix hat schon einmal CVEs angemeldet und hat klar herausgearbeitet, dass sich die zugehörige &lt;a href=&quot;https://tools.ietf.org/html/rfc7540&quot;&gt;RFC7540&lt;/a&gt; größtenteils nur auf den Happy Path bezieht und Sonderfälle und Angriffsszenarien der individuellen Implementierung überlässt. Obwohl noch nicht klar ist, welche Implementierungen konkret für welche CVEs betroffen sind, deaktiviere ich es vorsichtshalber überall.&lt;/p&gt;

&lt;p&gt;Der Fakt der vagen RFC ist für mich Grund genug, alle Implementierungen als nicht hinreichend vertrauenswürdig einzustufen, bis das Gegenteil individuell bewiesen ist. Die Qualität einer Protokoll-Spezifikation liegt in genau diesen Details. Die RFC ist von 2015. Vier Jahre, schade, dass sich erst jetzt Leute damit beschäftigen.&lt;/p&gt;

&lt;h3&gt;Fazit&lt;/h3&gt;

&lt;p&gt;Danke Netflix! &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

&lt;h3&gt;Nachtrag&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;16.08.2019:&lt;/em&gt; Ubuntu hat &lt;a href=&quot;https://usn.ubuntu.com/4099-1/&quot;&gt;USN-4099-1&lt;/a&gt; veröffentlicht.&lt;/p&gt;
 
    </description>
</item>
<item>
    <title>nginx: ECDH mit mehreren Kurven</title>
    <link>https://gnuheidix.de/archives/65-nginx-ECDH-mit-mehreren-Kurven.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:60 --&gt;&lt;img alt=&quot;&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/switches.png&quot; style=&quot;width:100px&quot; /&gt;Erst letztlich habe ich ein Distributions-Upgrade meines Servers durchgeführt und nun kann ich mich an den vielen neuen Features erfreuen. Bisher konnte ich nginx nur eine ECDH-Kurve nutzen lassen. Das hat sich geändert.&lt;/p&gt;

&lt;p&gt;Der Webserver nginx kann mit Version 1.11.0+ in Verbindung mit OpenSSL 1.0.2+ den TLS-Schlüsselaustausch abhängig von den Fähigkeiten der sich verbindenden Clients mit unterschiedlichen Kurven durchführen. Das ist eine positive Entwicklung, weil man sich nicht mehr auf einen kleinsten gemeinsamen Nenner als Kompromiss einigen muss.&lt;/p&gt;

&lt;h3&gt;Konfiguration&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_ecdh_curve&quot;&gt;Standardmäßig&lt;/a&gt; überlässt nginx die Entscheidung, welche Kurven zu verwenden sind, OpenSSL. Der Default ist:&lt;/p&gt;

&lt;pre&gt;
ssl_ecdh_curve auto;
&lt;/pre&gt;

&lt;p&gt;Bei mir hat dies jedoch dazu geführt, dass die Kurven in der Prioritätenreihenfolge &lt;em&gt;x25519, secp256r1, secp384r1, secp521r1&lt;/em&gt; stehen. Das mag aus Performancesicht Sinn ergeben, aber wenn man die Transportsicherheit auf 11 drehen möchte, braucht es imho eine andere Reihenfolge.&lt;/p&gt;

&lt;p&gt;Ich nutze diese Konfiguration:&lt;/p&gt;

&lt;pre&gt;
ssl_ecdh_curve X25519:secp521r1:secp384r1:prime256v1;
&lt;/pre&gt;

&lt;p&gt;Das belohnt natürlich jeder vernünftige &lt;a href=&quot;https://tls.imirhil.fr/https/gnuheidix.de&quot;&gt;TLS-Tester&lt;/a&gt; und vor allem fortschrittliche Clients, die NIST-Kurven für vertrauensunwürdig halten, freuen sich.&lt;/p&gt;

&lt;h3&gt;Fazit&lt;/h3&gt;

&lt;p&gt;Sinnvolle Defaults sind gut und wichtig für jedes Stück Software. Man sollte aber jeden noch so guten Default hinterfragen, ob er zu den Anforderungen passt. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;
 
    </description>
</item>
<item>
    <title>DNS: CAA Resource Record</title>
    <link>https://gnuheidix.de/archives/64-DNS-CAA-Resource-Record.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:74 --&gt;&lt;img alt=&quot;&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/Contact-new.serendipityThumb.png&quot; style=&quot;width:100px&quot; /&gt;Das Vertrauen in TLS und damit auch in HTTPS basiert für normalsterbliche Leute auf dem Vertrauen in die vielen Zertifizierungsstellen, die bei Betriebssystemen und Browsern vorkonfiguriert sind. Ein Sicherheitsproblem in auch nur einer Zertifizierungsstelle (CA) reicht, um das ganze System unsicher zu machen.&lt;/p&gt;

&lt;h3&gt;Motivation&lt;/h3&gt;

&lt;p&gt;Die Geschichte der CAs ist gespickt mit Fehlern. Nur wenige haben eine weiße Weste.&lt;/p&gt;

&lt;p&gt;Ab September 2017 haben sich &lt;a href=&quot;https://cabforum.org/pipermail/public/2017-March/009988.html&quot;&gt;alle CAs selbstverpflichtet&lt;/a&gt; den&amp;#160;Certification Authority Authorization (CAA) Resource Record (RR) bei der Ausstellung eines jeden Zertifikats zu prüfen.&lt;/p&gt;

&lt;h3&gt;CAA RR&lt;/h3&gt;

&lt;p&gt;Der CAA RR ist im &lt;a href=&quot;https://tools.ietf.org/rfc/rfc6844.txt&quot;&gt;RFC6844&lt;/a&gt; beschrieben und definiert, dass man im DNS hinterlegen kann, welche CA einem ein Zertifikat ausstellen darf. Im Falle von Let&#039;s Encrypt sieht das z.B. wie folgt aus.&lt;/p&gt;

&lt;pre id=&quot;caa_output_zonefile&quot;&gt;
example.com.    CAA    0 issue &quot;letsencrypt.org&quot;
example.com.    CAA    0 issuewild &quot;;&quot;
example.com.    CAA    0 iodef &quot;mailto:bla@example.com&quot;&lt;/pre&gt;

&lt;p&gt;Der Eintrag &lt;em&gt;issue&lt;/em&gt; und &lt;em&gt;issuewild&lt;/em&gt; beschreibt, welche CAs erlaubt sind. Da Let&#039;s Encrypt keine Wildcardzertifikate ausstellt, ist dies im Beispiel deaktiviert.&lt;/p&gt;

&lt;p&gt;Mit &lt;em&gt;iodef&lt;/em&gt; kann man eine URL oder Mailadresse spezifizieren, an die Verstoßversuche gemeldet werden sollen.&lt;/p&gt;

&lt;h3&gt;Anmerkungen&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://www.ssllabs.com/ssltest/index.html&quot;&gt;Qualys SSL Server Test&lt;/a&gt; prüft seit neustem auch diesen Record, ein Punktabzug ist mir nicht bekannt.&lt;/p&gt;

&lt;p&gt;Es gibt einen &lt;a href=&quot;https://sslmate.com/labs/caa/&quot;&gt;CAA RR Generator&lt;/a&gt;&amp;#160;für die großen CAs, über das Critical Flag, welches im Beispiel 0 ist, sollte man sich aber noch weiter informieren, bevor man das einfach auf 0 setzt.&lt;/p&gt;

&lt;h3&gt;Fazit&lt;/h3&gt;

&lt;p&gt;Ich bin gespannt, inwiefern dies hilft. Überzeugt bin ich erst, wenn zehn Jahre am Stück kein CA-Problem mehr auftritt. Das ganze CA-Konzept erachte ich als inherent unsicher und gehört überholt. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

&lt;p&gt;DNSSEC und Fingerprints der benutzten selbsterzeugten Zertifikate drin ablegen und&amp;#160;schon wäre man den CA-Wasserkopf los;&lt;/p&gt;
 
    </description>
</item>
<item>
    <title>Hetzner: Firewall für Rootserver</title>
    <link>https://gnuheidix.de/archives/63-Hetzner-Firewall-fuer-Rootserver.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:80 --&gt;&lt;img alt=&quot;&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/tango-unblock-request.png&quot; style=&quot;width:100px&quot; /&gt;Seit 01.12.2016 kann man sich, wenn man bei Hetzner einen Rootserver besitzt, eine Firewall klicken. Das ist ein feiner Zug von Hetzner.&lt;/p&gt;

&lt;p&gt;In einem &lt;a href=&quot;https://www.hetzner.de/de/hosting/news/kostenlose-firewall-fuer-ihre-dedicated-root-server&quot;&gt;Beitrag im Newsbereich&lt;/a&gt; bei Hetzner ist mir heute diese Neuerung aufgefallen und ich habe sie gleich bei diesem Server eingerichtet. So wird das System etwas besser geschützt und auch ein bisschen entlastet, wenn jemand meint, alle Ports durchprobieren zu müssen.&lt;/p&gt;

&lt;h3&gt;Fazit&lt;/h3&gt;

&lt;p&gt;Die Firewall funktioniert auf den ersten Blick wie spezifiziert. Die Übernahme einer Konfigurationsänderung dauert etwa 20 Sekunden. Leider wird aber nur IPv4 unterstützt. Ich bin allerdings zuversichtlich, dass IPv6-Funktionalität bald nachgerüstet wird. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;
 
    </description>
</item>
<item>
    <title>HTTP/2: Performancegewinn(er)</title>
    <link>https://gnuheidix.de/archives/62-HTTP2-Performancegewinner.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:124 --&gt;&lt;img alt=&quot;&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/performance.png&quot; style=&quot;width:100px&quot; /&gt;Ich achte privat und beruflich stets auf optimale Frontendperformance und mir wird es von modernen Webapplikationen oder esoterischen Architekturen diesbezüglich&amp;#160;selten leicht gemacht, weil während derer Entwicklung oft unzureichend&amp;#160;an diese Anforderung gedacht wird. HTTP/2 wird mir die Arbeit etwas leichter machen.&lt;/p&gt;

&lt;h3&gt;Motivation&lt;/h3&gt;

&lt;p&gt;Seitdem HTTP/2 nun auch in den beiden großen Webservern Apache und nginx implementiert ist, habe ich es nun auch für mein&amp;#160;Blog aktiviert, um zu sehen, inwieweit die bisher schon sehr guten Performancewerte übertroffen werden.&lt;/p&gt;

&lt;p&gt;Mir ist bekannt, dass die Dokumentation beider Webserver zum Zeitpunkt der Erstellung dieses Beitrags die HTTP/2-Funktionalität als experimentell ausweist.&lt;/p&gt;

&lt;p&gt;Mir geht es in diesem speziellen Beitrag primär um die Testung der Frontendperformance ohne Browsercache. Dies ist dem geschuldet, dass ich die Cachingkonfiguration dieser Website bereits als praktisch optimal erachte. Weiter will ich hier die Datenübertragungsperformance beleuchten und Daten werden schließlich nur übertragen, wenn sie noch nicht im Browsercache liegen.&lt;/p&gt;

&lt;h3&gt;HTTP/1.1&lt;/h3&gt;

&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/gnuheidix_http1.png&quot; title=&quot;HTTP1.1 Wasserfalldiagramm und Details&quot;&gt;&lt;!-- s9ymdb:125 --&gt;&lt;img alt=&quot;HTTP1.1 Wasserfalldiagramm&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/gnuheidix_http1.serendipityThumb.png&quot; style=&quot;width:24px&quot; title=&quot;HTTP1.1 Wasserfalldiagramm und Details&quot; /&gt;&lt;/a&gt;Am &lt;a href=&quot;https://www.webpagetest.org/result/161009_Z2_MK4/1/details/&quot;&gt;09.10.2016&lt;/a&gt; habe ich eine Performanceanalyse mittels WebPagetest ausgeführt, um den allgemeinen TLS-Overhead von einem externen System zu prüfen.&lt;/p&gt;

&lt;p&gt;Es ist zu sehen, dass der Chrome-Browser für die neun einzelnen Ressourcen der Startseite dieses Blogs nacheinander insgesamt drei TLS-Verbindungen aufgebaut hat. Dabei wird nach der DNS-Auflösung bereits eine zweite Verbindung aufgebaut, weil er sich wohl auf weitere Ressourcendownloads vorbereitet. Er versucht, sobald er eine bisher nicht geladene Ressource erkennt, eine der aktuell nicht benutzten Verbindungen zu benutzen. Falls alle ausgelastet sind, wird direkt eine neue Verbindung aufgebaut.&lt;/p&gt;

&lt;p&gt;Dieses Verhalten ist dem geschuldet, dass HTTP/1.1 pro Verbindung keine Ressourcen gleichzeitig übertragen kann. Dabei wird aber pro Verbindung in Kauf genommen, dass trotz geringer Datenmengen bei optimierten Websites die unter dem TLS liegende TCP-Verbindung bezüglich Slow-Start noch nicht warm ist. Die maximal mögliche Datenrate des Clients von 5&amp;#160;Mbps wird dabei gerade mal zur Hälfte ausgenutzt.&lt;/p&gt;

&lt;p&gt;Es ist außerdem zu sehen, dass abhängig von den verfügbaren Verbindungen alle Ressourcen nacheinander geladen werden.&lt;/p&gt;

&lt;p&gt;Der vollständige Ladevorgang der Seite benötigt in diesem Test etwa 1,4&amp;#160;Sekunden.&lt;/p&gt;

&lt;h3&gt;HTTP/2&lt;/h3&gt;

&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/gnuheidix_http2.png&quot; title=&quot;HTTP/2 Wasserfalldiagramm mit Details&quot;&gt;&lt;!-- s9ymdb:126 --&gt;&lt;img alt=&quot;HTTP/2 Wasserfalldiagramm mit Details&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/gnuheidix_http2.serendipityThumb.png&quot; title=&quot;HTTP/2 Wasserfalldiagramm mit Details&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.webpagetest.org/result/161025_WF_A67/1/details/&quot;&gt;Heute&lt;/a&gt; habe ich eine weitere Performanceanalyse mit identischer Konfiguration durchgeführt, um die Änderungen durch die Aktivierung von HTTP/2 von einem externen System zu prüfen.&lt;/p&gt;

&lt;p&gt;Es fällt direkt auf, dass der Browser lediglich eine einzige TLS-Verbindung aufbaut. Sämtliche im HTML referenzierten Ressourcen werden durch die selbe Verbindung gleichzeitig übertragen und dabei wird sogar kurzzeitig die maximal mögliche Datenrate des Clients erreicht.&lt;/p&gt;

&lt;p&gt;Der vollständige Ladevorgang der Seite benötigt hier 0,9&amp;#160;Sekunden, das ist eine halbe Sekunde weniger als mit HTTP/1.1 auf den ersten Blick.&lt;/p&gt;

&lt;p&gt;Man darf nicht übersehen, dass es, bis die initiale TLS-Verbindung steht, länger im HTTP/1.1-Test dauerte als im Test mit HTTP/2. Diese Unterschiede kommen in der Regel von unterschiedlichen Lastzuständen der Netzwerkinfrastruktur zwischen dem WebPagetest-Client und meinem Server.&lt;/p&gt;

&lt;p&gt;Wenn man diesen Nachteil berücksichtigt, dann ist HTTP/2 etwa 0,4&amp;#160;Sekunden performanter.&lt;/p&gt;

&lt;h3&gt;Webserveranpassung&lt;/h3&gt;

&lt;p&gt;Ich nutze die &lt;a href=&quot;http://packages.ubuntu.com/de/xenial/nginx-extras&quot;&gt;größte Version&lt;/a&gt; von nginx, die in den Ubuntupaketen verfügbar ist. Diese Version hat bereits das notwendige Modul hineincompiliert. Man aktiviert es in der &lt;a href=&quot;https://nginx.org/en/docs/http/ngx_http_v2_module.html&quot;&gt;listen-Direktive&lt;/a&gt;. Es ist nur eine Zeile, die man anpassen muss.&lt;/p&gt;

&lt;p&gt;Man darf nicht vergessen, dass dieses Modul experimentell ist und man sich gut überlegen sollte, ob man es aktiviert. HTTP/2 ist im Vergleich zu HTTP/1.1 erheblich komplexer. Mangels Alter bzw. Reife des Codes ist es im Prinzip nur eine Frage der Zeit, bis kritische Bugs bekannt werden.&lt;/p&gt;

&lt;p&gt;Im schlimmsten Fall übernimmt mir jemand den Webserver. Bei diesem Blog finde ich das Risiko akzeptabel. Wenn niemand sowas benutzt und keiner Bugs meldet, wird der Code schließlich auch nicht reifer. Man sieht aber an existierenden Sicherheitsanalysen, dass sich &lt;a href=&quot;https://www.nginx.com/blog/the-imperva-http2-vulnerability-report-and-nginx/&quot;&gt;nginx ganz gut schlägt&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Fazit&lt;/h3&gt;

&lt;p&gt;Mit der breiten Unterstützung von HTTP/2 auf Client- und Serverseite ist ein Grundstein gelegt, Anforderungen von Nutzern&amp;#160;moderner Webapplikationen mit endlichem Aufwand gerecht werden zu können.&lt;/p&gt;

&lt;p&gt;Ich muss noch weitere Tests fahren, um weitere Aussagen treffen zu können. Als nächstes sehe ich Lasttestvergleiche, um zu prüfen, wie viel &quot;Strom&quot; die HTTP/2-Komplexität auf dem Server in Abwärme umwandelt. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

&lt;h3&gt;Nachtrag&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;26.10.2016:&lt;/em&gt; Man muss beachten, dass die HTTP/2-Verbindung fehlschlagen kann, wenn man zu &lt;a href=&quot;https://tools.ietf.org/html/rfc7540#appendix-A&quot;&gt;unsichere TLS-Ciphers&lt;/a&gt; konfiguriert hat. Ich habe das gemerkt, weil mein SailfishOS Mobiltelefon diese Site nicht mehr erreichen konnte. Zum Glück hat nginx die &lt;a href=&quot;https://nginx.org/en/docs/ngx_core_module.html#debug_connection&quot;&gt;debug_connection-Direktive&lt;/a&gt;. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;
 
    </description>
</item>
<item>
    <title>Coreutils: dd kann jetzt sprechen</title>
    <link>https://gnuheidix.de/archives/61-Coreutils-dd-kann-jetzt-sprechen.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:8 --&gt;&lt;img alt=&quot;&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/tango-executable.serendipityThumb.png&quot; style=&quot;width:100px&quot; /&gt;Bei der Verwendung von dd steht ja immer die Frage im Raum, wie weit es schon ist. Mit Coreutils 8.24 wurde dd nun die Fortschrittsanzeige beigebracht.&lt;/p&gt;

&lt;p&gt;Bisher brauchte ich immer einen anderen Prozess, der ein Signal an den dd-Prozess gesendet hat, damit dieses den eigenen Fortschritt ausgibt. Das sah in der Regel so aus.&lt;/p&gt;

&lt;pre&gt;
$ watch &#039;killall dd -USR1&#039;
&lt;/pre&gt;

&lt;p&gt;Dies lässt alle dd-Prozesse alle zwei Sekunden den aktuellen Fortschritt ausgeben.&lt;/p&gt;

&lt;h3&gt;Coreutils 8.24 und neuere&lt;/h3&gt;

&lt;p&gt;Bei einer am Puls der Zeit mitlaufenden Linux-Distribution reicht es aus, dd einen weiteren Parameter mitzugeben.&lt;/p&gt;

&lt;pre&gt;
$ dd if=/dev/zero of=/dev/mmcblk0 status=progress
1222816256 bytes (1,2 GB, 1,1 GiB) copied, 491,063 s, 2,5 MB/s
&lt;/pre&gt;

&lt;p&gt;Wenn man den Parameter &lt;em&gt;status&lt;/em&gt; beim Start von dd vergessen hat, funktioniert die alte Variante natürlich auch noch.&lt;/p&gt;

&lt;p&gt;Ob man das coole Feature nutzen kann, lässt sich natürlich auch leicht herausfinden.&lt;/p&gt;

&lt;pre&gt;
$ dd --version
dd (coreutils) 8.25&lt;/pre&gt;

&lt;h3&gt;Fazit&lt;/h3&gt;

&lt;p&gt;Ich finde es schön, dass auch dieses Stück Software noch hervorragend gepflegt wird. Ich hoffe, Euch hilft dieser Tipp bei der nächsten Kopierorgie. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;
 
    </description>
</item>
<item>
    <title>Unitymedia: WifiSpot - Der erste Kontakt</title>
    <link>https://gnuheidix.de/archives/60-Unitymedia-WifiSpot-Der-erste-Kontakt.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:122 --&gt;&lt;img alt=&quot;&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/Network-wireless.serendipityThumb.png&quot; style=&quot;width:100px&quot; /&gt;Seit kurzem hat Unitymedia vielen Kunden ein öffentliches Wifi mit der SSID &lt;em&gt;Unitymedia&amp;#160;WifiSpot&lt;/em&gt; in die Unitymediabox konfiguriert. Dieses Vorgehen ist sehr umstritten.&lt;/p&gt;

&lt;h3&gt;Hintergrund&lt;/h3&gt;

&lt;p&gt;Über die Intention der Unitymedia für diesen Schritt kann man viel Spekulieren und Pressemitteilungen wälzen. Fakt ist, dass ich mit diesem WifiSpot beglückt wurde.&lt;/p&gt;

&lt;p&gt;Aus den &lt;a href=&quot;https://app.unitymedia.de/service/index.html/faqs/search?search%5Bwords%5D=wifispot&amp;amp;topic%5B%5D=&quot; title=&quot;zum Unitymedia-FAQ&quot;&gt;FAQs&lt;/a&gt;&amp;#160;konnte ich entnehmen, dass&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;span class=&quot;serendipity_entry_body&quot;&gt;auf WPA2-Enterprise gesetzt wird&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;&lt;span class=&quot;serendipity_entry_body&quot;&gt;man mit Geräten, die einmal erfolgreich mit dem eigenen Wifi verbunden waren, nicht mehr auf WifiSpot zugreifen kann&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;&lt;span class=&quot;serendipity_entry_body&quot;&gt;eigenes internes Netz und WifiSpot-Netz getrennt behandelt werden&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;&lt;span class=&quot;serendipity_entry_body&quot;&gt;die im gebuchten Tarif erlaubten Datenraten durch WifiSpot-Aktivität nicht beeinflusst werden&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;&lt;span class=&quot;serendipity_entry_body&quot;&gt;sich Unitymediakunden kostenfrei Zugangsdaten anlegen können, um mit hohen Datenraten ohne Volumenbegrenzung in fremden WifiSpots aufs Internet zugreifen zu können&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;&lt;span class=&quot;serendipity_entry_body&quot;&gt;sich Nicht-Kunden Zugangsdaten per SMS zusenden lassen können, um mit begrenztem Datenvolumen und niedrigen Datenraten aufs Internet zugreifen zu können&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Beobachtungen&lt;/h3&gt;

&lt;h4&gt;Kanäle&lt;/h4&gt;

&lt;p&gt;Meine erste Feststellung war, dass vom WifiSpot und meinem eigenen Wifi der selbe Kanal belegt wird. Dies hat selbstverständlich zur Folge, dass WifiSpot-Aktivität meine maximal möglichen Datenraten einschränkt. In einem solchen Kanal und den umliegenden Kanälen kann zu einem Zeitpunkt x schließlich immer nur ein Teilnehmer senden. Lediglich die per LAN-Kabel an die Unitymediabox angeschlossenen Geräte mögen also von WifiSpot-Aktivität unbeeinträchtigt bleiben.&lt;/p&gt;

&lt;p&gt;Schön wäre es, wenn man z.B. das eigene Wifi ins 2,4 Ghz und den WifiSpot ins 5Ghz-Band packen könnte. So würden sich beide nicht beeinflussen.&lt;/p&gt;

&lt;h4&gt;Deaktivierung&lt;/h4&gt;

&lt;p&gt;Nach weiterer Recherche habe ich herausgefunden, dass falls man den WifiSpot anderen nicht zur Verfügung stellen möchte, man sich ins Kundencenter auf der Website von Unitymedia einloggen und dort unter &lt;em&gt;Meine Produkte - Internet&lt;/em&gt; den Haken bei WifiSpot entfernen muss. Die Kabelbox wird dann innerhalb von 24h von Unitymedia aus umkonfiguriert und neugestartet. Weiter wird der eigene Premiumzugang zu fremden WifiSpots gesperrt.&lt;/p&gt;

&lt;p&gt;Nur schwer kann ich mir erklären, warum man das nicht im Webinterface der Box vom lokalen Netz aus einstellen kann. Ich kann mir nur vorstellen, dass dann eine Firmware eingespielt wird, die diese Funktionalität garnicht erst mitbringt. Auch ist es möglich, dass die Box den Zugang zum zentralen WifiSpot-Authentifikationssystem entzogen bekommt.&lt;/p&gt;

&lt;h4&gt;WPA2-Enterprise&lt;/h4&gt;

&lt;p&gt;In einem FAQ wird bereits darauf &lt;a href=&quot;https://app.unitymedia.de/service/index.html/faqs/2570fee1-a58c-4ee2-aba6-34d8b3a4074c&quot; title=&quot;Link zum Unitymedia-FAQ&quot;&gt;hingewiesen&lt;/a&gt;, dass kein allgemein akzeptiertes Zertifikat eingesetzt wird. Leider wird aber das Zertifikat der ausstellenden CA nicht zum Download angeboten. Alternativ fehlt auch der Fingerprint des Zertifikats, um es selbsttätig bestätigen zu können. Somit kann kein Nutzer sicherstellen, dass die Kommunikation wirklich mit der potentiell vertrauenswürdigen Gegenstelle bei Unitymedia stattfindet.&lt;/p&gt;

&lt;p&gt;Mein wpa_supplicant lässt deshalb die Verbindung beim TLS-Handshake berechtigterweise sterben. Das hier hat der Journald aufgefangen.&lt;/p&gt;

&lt;pre&gt;
NetworkManager[402]: device (wlan1): supplicant interface state: associating -&amp;gt; associated
wpa_supplicant[470]: wlan1: CTRL-EVENT-EAP-PROPOSED-METHOD vendor=0 method=25
wpa_supplicant[470]: wlan1: CTRL-EVENT-EAP-METHOD EAP vendor 0 method 25 (PEAP) selected
wpa_supplicant[470]: TLS: Certificate verification failed, error 19 (self signed certificate in certificate chain) depth 2 for &#039;/C=NL/O=Liberty Global Oper
wpa_supplicant[470]: wlan1: CTRL-EVENT-EAP-TLS-CERT-ERROR reason=1 depth=2 subject=&#039;/C=NL/O=Liberty Global Operations B.V./OU=Root CA0001/CN=Liberty Global
wpa_supplicant[470]: SSL: SSL3 alert: write (local SSL3 detected an error):fatal:unknown CA
wpa_supplicant[470]: OpenSSL: openssl_handshake - SSL_connect error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed
wpa_supplicant[470]: wlan1: CTRL-EVENT-EAP-FAILURE EAP authentication failed
kernel: wlan1: deauthenticated from c6:xx:ca:fe:ba:be (Reason: 23=IEEE8021X_FAILED)
&lt;/pre&gt;

&lt;p&gt;Es riecht in den Standardeinstellungen auf Clientseite sogar nach SSLv3, was mich sehr beunruhigt.&lt;/p&gt;

&lt;h3&gt;Fazit&lt;/h3&gt;

&lt;p&gt;Ohne eine Möglichkeit, die Gegenstelle als vertrauenswürdig einstufen zu können, kann man das so nicht benutzen. Zum Schutz der Leute in meiner Nähe habe ich den WifiSpot nun im Kundencenter deaktiviert. Das hat nach fünf Minuten und einem automatischen Neustart der Unitymediabox auch wunderbar geklappt.&lt;/p&gt;

&lt;h3&gt;Nachtrag&lt;/h3&gt;

&lt;p&gt;10.07.2016: Das Fehlen des Fingerprints und des CA-Cert-Files habe ich Unitymedia bereits heute gemeldet.&lt;/p&gt;

&lt;p&gt;11.07.2016: Meine Unitymediabox hat sich heute ohne Ankündigung neugestartet und der WifiSpot war wieder da. Im Kundencenter steht, dass WifiSpot bei mir deaktiviert ist. Das ist doch eine Frechheit. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/sad.png&quot; alt=&quot;:-(&quot; class=&quot;emoticon&quot; /&gt; - Die Unitymediabox habe ich einmal von Strom getrennt, um zu sehen, ob das wirklich mein WifiSpot ist und nicht der eines Nachbarn. - Nein, der WifiSpot wird eindeutig von meiner Box erzeugt. - Ich schalte WifiSpot im Kundencenter jetzt nochmal ein und aus. - Das hat geklappt.&lt;/p&gt;

&lt;p&gt;12.07.2016: Wieder wurde der WifiSpot ohne meine Genehmigung aktiviert. Ich hab angerufen und vom Berater die Nummer 0800-7001177 bekommen. Weiter hat er gesagt, dass ich dort richtig Randale machen soll. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/laugh.png&quot; alt=&quot;:-D&quot; class=&quot;emoticon&quot; /&gt; - Laut Techniker ist der WifiSpot deaktiviert und sollte nicht da sein. - viele Warteschleifen, mehrere Weiterleitungen in die &quot;Technik&quot; - Techniker2 empfiehlt einen Reset des Gerätes mit dem Knopf an der Rückseite, ich bin gespannt. Der Reset dauerte eine Stunde bis das Modem wieder da war und man es im LAN ansprechen konnte. Die Wifi-Einstellungen meines privaten Netzes und das Adminpasswort habe ich geändert. Jetzt noch ein Blick in die umliegenden Netze. - Der WifiSpot ist noch da. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/sad.png&quot; alt=&quot;:-(&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

&lt;p&gt;13.07.2016: Ich habe diesen Blogbeitrag an &lt;a href=&quot;https://mobile.twitter.com/gnuheidix/status/753106416215482368&quot; title=&quot;mein Tweet&quot;&gt;@UnitymediaHilfe getwittert&lt;/a&gt;, weil ich gerade keine Zeit und Lust auf Warteschleifen und Telefonieren habe.&lt;/p&gt;

&lt;p&gt;14.07.2016: Heute hat sich &lt;a href=&quot;https://mobile.twitter.com/UnitymediaHilfe/status/753563629627269120&quot; title=&quot;UnitymediaHilfe hat geantwortet&quot;&gt;@UnitymediaHilfe gemeldet&lt;/a&gt;, dass sie diese Angelegenheit prüfen. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

&lt;p&gt;17.07.2016: Der WifiSpot ist nun nicht mehr da. Entsprechend der Uptimeanzeige, wurde das Gerät gestern um 16:00 Uhr neugestartet. Vermutlich hat Unitymedia die Konfiguration korrigiert. Ich bin mal vorsichtig optimistisch, dass das nun gelöst ist.&lt;/p&gt;
 
    </description>
</item>
<item>
    <title>Fail2ban: Already banned</title>
    <link>https://gnuheidix.de/archives/59-Fail2ban-Already-banned.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:10 --&gt;&lt;img class=&quot;serendipity_image_right&quot; width=&quot;100&quot; height=&quot;100&quot; src=&quot;https://gnuheidix.de/uploads/tango-devil.serendipityThumb.png&quot; /&gt;Mithilfe des Tools &lt;a href=&quot;https://de.wikipedia.org/wiki/Fail2ban&quot; title=&quot;Link in die Wikipedia&quot;&gt;Fail2ban&lt;/a&gt; kann man automatisiert Logdateien überwachen lassen und entsprechend konfigurierbarer Regeln bestimmen, ab welcher Anzahl an bestimmten Logeinträgen in einem bestimmten Zeitraum z.B. eine IP in die Firewall geworfen werden soll. Auf Fehlkonfiguration ist bei Fail2ban ist allerdings peinlich genau zu achten.&lt;/p&gt;
&lt;h3&gt;Nicht abgedeckte Ports&lt;/h3&gt; 
&lt;p&gt;Falls eine konfigurierte Regel nicht alle Ports des zu überwachenden Prozesses abdeckt, kommt es zu dem Phänomen, dass Fail2ban dieselbe IP immer und immer wieder blocken möchte. Im Logfile &lt;em&gt;/var/log/fail2ban.log&lt;/em&gt; macht sich das wie folgt bemerkbar.&lt;/p&gt; 
&lt;pre&gt;2016-01-01 12:00:00,000 fail2ban.actions: INFO   [process] xxx.xxx.xxx.xxx already banned&lt;/pre&gt; 
&lt;p&gt;Dies weist darauf hin, dass weiterhin Anfragen den Prozess belästigen, obwohl bereits vorher von Fail2ban festgestellt wurde, dass dies geblockt gehört.&lt;/p&gt; 
&lt;h4&gt;Beispiel&amp;#160;&lt;/h4&gt; 
&lt;p&gt;Bei einem Mailserver sind eine Menge an Ports im Spiel und so kann es sein, dass man bei der Fail2ban-Konfiguration z.B. den Message-Submission-Port &lt;em&gt;submission&lt;/em&gt; vergisst und ein Bot trotz Blockversuch fröhlich weiterversucht, seinen Spam über den smtpd zu verschleudern.&lt;/p&gt; 
&lt;pre&gt;[sasl]
enabled  = true
port     = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s,submission
filter   = sasl
logpath  = /var/log/mail.log
&lt;/pre&gt; 
&lt;h3&gt;Fazit&lt;/h3&gt; 
&lt;p&gt;So ein Blick ins Log von Fail2ban ist immer mal wieder zu etwas gut. Ich hoffe, dass der Hinweis Euch hilft. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>IPv6: Dynamische IPs bei Unitymedia</title>
    <link>https://gnuheidix.de/archives/58-IPv6-Dynamische-IPs-bei-Unitymedia.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:13 --&gt;&lt;img class=&quot;serendipity_image_right&quot; width=&quot;100&quot; height=&quot;100&quot; src=&quot;https://gnuheidix.de/uploads/tango-internet.serendipityThumb.png&quot; /&gt;Als Kunde von Unitymedia bekomme ich für all meine Geräte eine IPv6-Adresse zugewiesen. Leider ändert sich diese bei jedem Bootvorgang des Modems.&lt;/p&gt;
&lt;h3&gt;Motivation&lt;/h3&gt; 
&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/raspberry.jpg&quot;&gt;&lt;!-- s9ymdb:121 --&gt;&lt;img class=&quot;serendipity_image_right&quot; width=&quot;110&quot; height=&quot;83&quot; src=&quot;https://gnuheidix.de/uploads/raspberry.serendipityThumb.jpg&quot; alt=&quot;RaspberryPi mit externer Festplatte&quot; /&gt;&lt;/a&gt;Ich habe einen RaspberryPi mit externer Festplatte und ich möchte, dass er jeden Tag einmal von meinem Rootserver ein Päckchen mit Backups empfängt.&lt;/p&gt; 
&lt;p&gt;Früher war das bei Unitymedia kein Problem, da sich die einmal zugewiesene IPv4-IP praktisch nie geändert hat. Seit meinem Umzug nach Frankfurt am Main bekommt mein Modem nur noch eine geNATete IPv4-IP, bei der jegliche Portweiterleitung im Router auf das Zielsystem nicht zuverlässig funktioniert. Weiter bekommt jedes meiner Geräte aber eine IPv6-IP, die vollständig erreichbar ist.&lt;/p&gt;
&lt;p&gt;Da sie sich entgegen meines Verständnisses von IPv6 regelmäßig ändert, muss ein Hack her.&lt;/p&gt; 
&lt;h3&gt;freedns.io&lt;/h3&gt; 
&lt;p&gt;Da ich keine Lust hatte, auch noch einen DNS-Server zu betreiben, habe ich mich dazu entschieden, den Dienst &lt;a href=&quot;https://freedns.io/&quot;&gt;freedns.io&lt;/a&gt; zu verwenden. Diesen kann man per HTTPS-POST einfach aktualisieren. Das API lässt zwar nur zwei Updates am Tag zu, das reicht aber in der Regel für meine Zwecke. Es werden übrigens nur Updates gezählt, bei denen sich der Eintrag tatsächlich ändert.&lt;/p&gt; 
&lt;p&gt;Somit kann man einen trivialen Cronjob schreiben, der alle 15 Minuten die eigene IP meldet.&lt;/p&gt; 
&lt;pre&gt;*/15 &lt;strong&gt; &lt;/strong&gt; &lt;strong&gt; &lt;/strong&gt; ~/scripts/freednsio.sh&lt;/pre&gt; 
&lt;p&gt;Bei ArchLinux wird das Paket &lt;em&gt;python2-netifaces&lt;/em&gt; benötigt, damit das folgende Skript funktioniert.&lt;/p&gt; 
&lt;pre&gt;#!/usr/bin/python2

import urllib
import urllib2
import netifaces

addrs = netifaces.ifaddresses(&#039;eth0&#039;)
url = &#039;https://freedns.io/request&#039;
params = {
  &#039;username&#039;: &#039;blipp&#039;,
  &#039;password&#039;: &#039;blubb&#039;,
  &#039;host&#039;: &#039;hostname&#039;,
  &#039;record&#039;: &#039;AAAA&#039;,
  &#039;value&#039;: addrs[netifaces.AF_INET6][0][&#039;addr&#039;]
}

data = urllib.urlencode(params)
req = urllib2.Request(url, data)

try:
  response = urllib2.urlopen(req)
  content = response.read()
  print content
except urllib2.URLError as e:
  print &quot;FreeDNS-Update-Error: %d %s (%s)&quot; % (e.code, e.reason, e.read())
&lt;/pre&gt; 
&lt;h3&gt;Fazit&lt;/h3&gt; 
&lt;p&gt;Mit diesem etwas unschönen Hack kann man die eigene Maschine ohne große Ausfälle erreichbar halten. Vielleicht hilft es Euch ja auch. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Performance: Perfmap für Bilder</title>
    <link>https://gnuheidix.de/archives/57-Performance-Perfmap-fuer-Bilder.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:11 --&gt;&lt;img class=&quot;serendipity_image_right&quot; width=&quot;100&quot; height=&quot;100&quot; src=&quot;https://gnuheidix.de/uploads/tango-appointment.serendipityThumb.png&quot; /&gt;Wasserfalldiagramme sind sehr gut für die Analyse der Frontendperformance einer Webseite geeignet. Es ist aber schwierig, Nichttechnikern Probleme auf deren Basis verständlich zu machen.&lt;/p&gt;
&lt;h3&gt;Wasserfalldiagramme&lt;/h3&gt; 
&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/wasserfall.png&quot;&gt;&lt;!-- s9ymdb:119 --&gt;&lt;img class=&quot;serendipity_image_right&quot; width=&quot;110&quot; height=&quot;18&quot; src=&quot;https://gnuheidix.de/uploads/wasserfall.serendipityThumb.png&quot; alt=&quot;Wasserfalldiagramm am Beispiel gnuheidix.de&quot; /&gt;&lt;/a&gt;Es ist eine Menge Vorwissen notwendig, um Wasserfalldiagramme, welche jeder vernünftige Browser auf Anfrage für einen Seitenladevorgang erstellt, deuten zu können.&lt;/p&gt; 
&lt;p&gt;Im Bild ist meine Blogstartseite als Wasserfall zu sehen. Lediglich die CSS-Ressource blockiert das Rendering während des Ladevorgangs.&lt;/p&gt; 
&lt;h3&gt;Perfmap&lt;/h3&gt; 
&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/perfmap.png&quot;&gt;&lt;!-- s9ymdb:120 --&gt;&lt;img class=&quot;serendipity_image_right&quot; width=&quot;98&quot; height=&quot;110&quot; src=&quot;https://gnuheidix.de/uploads/perfmap.serendipityThumb.png&quot; alt=&quot;Perfmap-Ergebnis für gnuheidix.de&quot; /&gt;&lt;/a&gt;Es wird eine Heatmap durch das &lt;a href=&quot;https://github.com/zeman/perfmap&quot;&gt;Bookmarklet Perfmap&lt;/a&gt; auf Basis der Informationen aus dem &lt;a href=&quot;http://www.w3.org/TR/resource-timing/&quot;&gt;Resource Timing API&lt;/a&gt; in die Seite gezeichnet. Dies kann sehr einfach interpretiert werden und hilft, die Prioritäten bei der Frontendperformanceverbesserung bezüglich teurer Bilder richtig zu setzen. Im Bild ist zu sehen, dass meine Blogstartseite relativ unspektakulär ist.&lt;/p&gt; 
&lt;p&gt;Diese Heatmap ist bei bilderlastigen Seiten wesentlich sinnvoller. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/laugh.png&quot; alt=&quot;:-D&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
&lt;h3&gt;Fazit&lt;/h3&gt; 
&lt;p&gt;Wasserfall und Heatmap haben ihre Daseinsberechtigung. Die Heatmap gibt uns neue Möglichkeiten, um ressourcenlastige Seiten zu analysieren. Versucht es doch auch einmal. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Google: Zwei-Faktor-Authentifizierung braucht Backup</title>
    <link>https://gnuheidix.de/archives/56-Google-Zwei-Faktor-Authentifizierung-braucht-Backup.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:6 --&gt;&lt;img class=&quot;serendipity_image_right&quot; width=&quot;100&quot; height=&quot;100&quot; src=&quot;https://gnuheidix.de/uploads/tango-unlocked.serendipityThumb.png&quot; /&gt;Damit niemand Zugang zu einem Googleaccount bekommt, selbst wenn das Passwort z.B. durch einen Keylogger im einem Internetcafé mitgeschnitten wurde, empfiehlt es sich, die &lt;a href=&quot;http://www.google.de/intl/de/landing/2step/&quot;&gt;Zwei-Faktor-Authentifizierung&lt;/a&gt; zu aktivieren. Das kann aber auch nach hinten losgehen.&lt;/p&gt;
&lt;p&gt;Logins klappen ab dem Zeitpunkt der Aktivierung dieser Funktion nur dann, wenn man z.B. eine Information aus einer SMS, die während des Loginvorgangs auf dem eigenen Mobiltelefon empfangen wird, eingibt.&lt;/p&gt; 
&lt;h3&gt;Problem&lt;/h3&gt; 
&lt;p&gt;Meine Frau hat für einen neuen Mobilfunkvertrag ihre Telefonnummer aus dem alten Vertrag mitgenommen. Aus unerfindlichen Gründen kann sie seit der Vertragsumstellung keine SMS mehr von Google empfangen. Die SMS-Zentrale ist korrekt eingestellt und SMS können auch an andere Telefone gesendet und empfangen werden. Google verlangt nun bei jedem Loginversuch eine Information, die nicht mehr empfangen werden kann. Sie ist aus dem Account ausgesperrt.&lt;/p&gt; 
&lt;p&gt;Leider bietet es Google nicht an, auf diese Mobiltelefonnummer einen Sprachanruf mit einer Codedurchsage durchzuführen, anstatt eine SMS zu senden. Um dies ändern zu können, müsste sie sich erst einloggen.&lt;/p&gt; 
&lt;p&gt;Die Kontowiederherstellungsanfrage, welche meine Frau gestellt hat, wurde bisher abgelehnt. Ich bin gespannt.&lt;/p&gt; 
&lt;h3&gt;Möglichkeiten&amp;#160;&lt;/h3&gt; 
&lt;p&gt;Sobald der Zugang wieder möglich ist, werden wir &lt;a href=&quot;https://support.google.com/accounts/answer/1187538?hl=de&quot;&gt;Backup-Codes erzeugen&lt;/a&gt; lassen, um genau für diesen Fall gewappnet zu sein. Diese stellen einen dauerhaft gültigen Ersatz dar und man kann sie an einem sicheren Ort aufbewahren.&lt;/p&gt; 
&lt;h3&gt;Fazit&lt;/h3&gt; 
&lt;p&gt;Ich finde es schade, dass Google seinen Nutzern&amp;#160;Zwei-Faktor-Authentifizierung anbietet, ohne sie zu zwingen, Backupcodes zu erstellen.&lt;/p&gt; 
&lt;p&gt;Sollte dieses Problem einmal bei meinem Online-Banking auftreten, kann ich zumindest zu einer Filiale fahren und das Problem dort lösen lassen, weil ich mich mit meinem Personalausweis einfach ausweisen kann. Im Falle von Google ist das nicht so einfach.&lt;/p&gt; 
&lt;p&gt;Ich hoffe, Du erzeugst nun Deine Google-Backupcodes, wenn Du sie nicht bereits hast. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Nachtrag&amp;#160;&lt;/h3&gt;
&lt;p&gt;Nach etwa fünf Tagen ohne Zugang und mehreren Versuchen mit Problemtickets wurde die Zwei-Faktor-Authentifizierung durch Google deaktiviert. Nun funktioniert der Login wieder wie er soll.&lt;/p&gt; 
    </description>
</item>
<item>
    <title>LCA2015: Programming - Engineering</title>
    <link>https://gnuheidix.de/archives/55-LCA2015-Programming-Engineering.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:97 --&gt;&lt;img class=&quot;serendipity_image_right&quot; width=&quot;100&quot; height=&quot;100&quot; src=&quot;https://gnuheidix.de/uploads/Internet-group-chat.serendipityThumb.png&quot; /&gt;Die Menschen der heutigen Welt verlassen sich täglich darauf, dass eine Menge Softwaresysteme so funktionieren, wie sie es sollen. Um diese komplexen Systeme zu bauen, bedarf es aber mehr als eine Hand voll Leute, die Programmieren können.&lt;/p&gt;
&lt;h3&gt;Software ist Vertrauen&lt;/h3&gt; 
&lt;p&gt;So, wie man als Fahrer dem Automobilhersteller vertraut, dass ein Fahrzeug bei 200 km/h auf der Autobahn nicht die Heckklappe verliert, vertraut man auch Software-Entwicklern im täglichen Leben.&lt;/p&gt; 
&lt;p&gt;Beim Abruf dieses Blogbeitrags vertraut man darauf, dass sich der verwendete Browser nicht dazu bewegen lässt, Schadcode, der in dieser Webseite eingebettet sein kann, auf dem eigenen Gerät auszuführen.&lt;/p&gt; 
&lt;h3&gt;Programming Considered Harmful&lt;/h3&gt; &lt;video id=&quot;videoPCH&quot; class=&quot;serendipity_image_left&quot; poster=&quot;/uploads/tango-movie.serendipityThumb.png&quot; preload=&quot;none&quot;&gt; &lt;source type=&quot;video/webm&quot; src=&quot;https://gnuheidix.de/files/videos/Programming_Considered_Harmful.webm&quot; /&gt; &lt;a href=&quot;https://gnuheidix.de/files/videos/Programming_Considered_Harmful.webm&quot;&gt;Video ansehen&lt;/a&gt;&lt;/video&gt; 
&lt;p&gt;Der XFS-Entwickler Dave Chinner erklärt schön in seinem Vortrag &lt;a class=&quot;videoskip&quot; data-timeoffset=&quot;62&quot; href=&quot;#videoPCH&quot;&gt;Programming Considered Harmful&lt;/a&gt;, den er auf der LCA2015 gehalten hat, was gute Softwareprojekte und Software-Entwickler ausmacht.&lt;/p&gt; 
&lt;p&gt;Am Beispiel des Linux-Kernels erklärt er, wie dieses Softwareprojekt mit der ständig steigenden Komplexität zurechtkommt und welche Maßnahmen aus welchen Gründen ergriffen wurden, um Silos zu vermeiden.&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;h3&gt;Fazit&lt;/h3&gt; 
&lt;p&gt;Dave erläutert klar, dass es nicht auf die Cleverness einer Einzelperson ankommt, sondern darauf, dass alle beteiligten Entwickler ihr Wissen strukturiert weitergeben und dass sie ihre Arbeit gegenseitig überprüfen. &lt;/p&gt; 
&lt;p&gt;Der Prozess der Softwareentwicklung ist der entscheidende Faktor, der die resultierende Softwarequalität bestimmt. Ihm muss man vertrauen, denn niemand ist vollkommen. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Munin: Export nach Carbon bald möglich</title>
    <link>https://gnuheidix.de/archives/54-Munin-Export-nach-Carbon-bald-moeglich.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:87 --&gt;&lt;img class=&quot;serendipity_image_right&quot; width=&quot;100&quot; height=&quot;100&quot; src=&quot;https://gnuheidix.de/uploads/tango-statistics.serendipityThumb.png&quot; /&gt;Aussagekräftige Dashboards sind bei der Analyse von Metriken ein Muss. &lt;a href=&quot;http://grafana.org/&quot; title=&quot;Grafana Website&quot;&gt;Grafana&lt;/a&gt; ist diesbezüglich das komfortabelste und flexibelste Werkzeug, das ich bisher gesehen habe und es sieht so aus, als würde man bald Metriken aus Munin mit Bordmitteln in Grafana anzeigen lassen können.&lt;/p&gt;
&lt;h3&gt;Situation&lt;/h3&gt; 
&lt;p&gt;Ich erachte &lt;a href=&quot;http://guide.munin-monitoring.org/en/latest/architecture/index.html&quot; title=&quot;Architektur&quot;&gt;Munin&lt;/a&gt; als ein sehr einfach zu konfigurierendes Monitoringsystem. Für die Erfassung neuer Metriken reicht es, ein kleines Skript - ein Plugin - zu schreiben und auf dem Munin-Node einzubinden. Der Munin-Node-Prozess ist auf praktisch jedem Stück Blech lauffähig, solange Perl installiert ist. Das Protokoll, das er mit dem Master spricht, ist so einfach, dass es sogar einen sehr schlanken in &lt;a href=&quot;https://github.com/munin-monitoring/munin-c&quot; title=&quot;Munin-C&quot;&gt;C geschiebenen Spin-Off&lt;/a&gt; gibt.&lt;/p&gt; 
&lt;p&gt;Der Munin-Master skaliert bis zu einer Nodeanzahl, die sein fünfminütigens Pollingintervall nicht sprengt. Es gibt aber noch ein &lt;a href=&quot;http://guide.munin-monitoring.org/en/latest/node/async.html&quot; title=&quot;Munin-Async-Daemon&quot;&gt;Zwischenstück&lt;/a&gt;, dass den Master diesbezüglich entlastet und öfter Daten einsammeln kann, um sie dann geschlossen an den Master übergeben zu können.&lt;/p&gt; 
&lt;h3&gt;Motivation&amp;#160;&lt;/h3&gt; 
&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/munin-graphs-sample.png&quot;&gt;&lt;!-- s9ymdb:99 --&gt;&lt;img class=&quot;serendipity_image_right&quot; width=&quot;68&quot; height=&quot;110&quot; src=&quot;https://gnuheidix.de/uploads/munin-graphs-sample.serendipityThumb.png&quot; /&gt;&lt;/a&gt;Leider aber ist die Ausgabe der Graphen durch den Munin-Master ein wenig unflexibel, wenn man es mit heutigen Standards misst. Die Übersichtlichkeit der Graphenanordnung ist ausgezeichnet und ich kann gut die Korrelation von Vorfällen des aktuellen Tages und der letzten Woche herausfinden. Alles, was darüber hinaus geht, ist ein ziemlich großer Schmerz.&lt;/p&gt; 
&lt;h4&gt;InfluxDB&amp;#160;&lt;/h4&gt; 
&lt;p&gt;Grafana benötigt als Datenquelle in der aktuellen Version 2.0 eine Instanz von Graphite, OpenTSDB oder InfluxDB. Ich persönlich finde &lt;a href=&quot;http://influxdb.com/&quot; title=&quot;InfluxDB Website&quot;&gt;InfluxDB&lt;/a&gt; am interessantesten, weil es einfach keine Abhängigkeiten aufweist und sehr interessante Features anbietet. Es ist aber ganz klar noch nicht so gut abgehangen, wie &lt;a href=&quot;http://opentsdb.net/&quot; title=&quot;OPenTSDB Website&quot;&gt;OpenTSDB&lt;/a&gt;&amp;#160;oder &lt;a href=&quot;https://graphite.readthedocs.org/en/latest/overview.html&quot; title=&quot;Graphite Doku&quot;&gt;Graphite&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Munin mit Carbon-Export&lt;/h3&gt; 
&lt;p&gt;Heute ist mir beim Durchgehen der letzten Commits im Munin-Projekt aufgefallen, dass ein &lt;a href=&quot;https://github.com/munin-monitoring/munin/pull/428&quot; title=&quot;Carbon Export - Github&quot;&gt;Pull-Request akzeptiert&lt;/a&gt; wurde, der einen Export nach Carbon - dem Metrikdatenempfänger von Graphite - möglich macht. InfluxDB liefert standardmäßig die Funktionalität mit, Metriken wie ein Carbon-Prozess zu empfangen. Damit lässt sich InfluxDB in bestehende Graphite-Setups einfach integrieren.&lt;/p&gt; 
&lt;h3&gt;Fazit&lt;/h3&gt; 
&lt;p&gt;&lt;a target=&quot;_blank&quot;&gt;&lt;/a&gt;&lt;a target=&quot;_blank&quot;&gt;&lt;/a&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/grafana-dashboard.png&quot;&gt;&lt;!-- s9ymdb:118 --&gt;&lt;img class=&quot;serendipity_image_right&quot; width=&quot;110&quot; height=&quot;56&quot; src=&quot;https://gnuheidix.de/uploads/grafana-dashboard.serendipityThumb.png&quot; /&gt;&lt;/a&gt;Munin kann nach dem Release dieses Features sowohl Graphite als auch InfluxDB mit Metriken und damit externe Dashboards wie Grafana mit Daten versorgen. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;Das vom Munin-Master erzeugte simple Dashboard ist damit nicht obsolet geworden, weil es nach wie vor hervorragend ohne Konfigurationsaufwand funktioniert und aus dem Stand 80% all meiner Anforderungen erfüllt. Die restlichen 20% übernimmt bald einfa&lt;a target=&quot;_blank&quot;&gt;&lt;/a&gt;ch Grafana. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
    </description>
</item>
<item>
    <title>Munin: Alarme via Jabber versenden</title>
    <link>https://gnuheidix.de/archives/53-Munin-Alarme-via-Jabber-versenden.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:71 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; src=&quot;https://gnuheidix.de/uploads/system-monitor.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;Die Erfassung von Metriken ist beim Monitoring mindestens genauso wichtig, wie das Benachrichtigen verantwortlicher Personen, wenn nun mal etwas wohldefinierte Grenzwerte überschreitet. Ich löse das nun via Jabber.&lt;br /&gt;&lt;/p&gt;
&lt;h3&gt;Situation&lt;/h3&gt; 
&lt;p&gt;Oft habe ich schon beobachtet, dass sich Leute bei Problemen automatisiert E-Mails senden lassen. Das führt oft zu überlaufenden Postfächern und qualmenden Mailservern. Schließlich wird kein Mailserver auf die Idee kommen, Mails nicht zuzustellen, wenn er meint, dass ein Benutzer zu viele Mails bekommt. Er wird alles versuchen, seinen Job zu machen und bei Ressourcenknappheit dem anderen Mailserver Bescheid sagen, es bitte später erneut zu probieren.&lt;br /&gt;&lt;/p&gt; 
&lt;h4&gt;Jabber&lt;/h4&gt; 
&lt;p&gt;Jabber hingegen ist auf Chatnutzung ausgelegt und jede Nachricht ist nach dem Lesen tendenziell zum Wegwerfen bestimmt. Weiter haben Jabberserver stets gesetzte Limits, wie viele Nachrichten bei einem Nutzer, der offline ist, vorgehalten werden. Alarme aus Monitoringsystemen erfüllen den Wegwerfcharakter hervorragend.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;Wenn man sie direkt mitbekommt, sucht man den nächsten Rechner und beginnt mit der Analyse in Graphen und Logfiles. Wenn man sie nicht sofort mitbekommt, weil man vorübergehend offline ist, ist das schade und man muss hoffen, dass eine andere verantwortliche Person den Alarm bemerkt hat.&lt;/p&gt; 
&lt;h3&gt;Munin mit Jabberalarm&lt;/h3&gt; 
&lt;p&gt;Die folgende Konfiguration ist auf dem &lt;a title=&quot;externer Link&quot; href=&quot;http://guide.munin-monitoring.org/en/latest/architecture/index.html&quot;&gt;Munin-Master&lt;/a&gt; vorzunehmen. Weiter wird auf das Werkzeug &lt;a href=&quot;http://sendxmpp.hostname.sk/&quot;&gt;sendxmpp&lt;/a&gt; zurückgegriffen.&lt;/p&gt; 
&lt;p&gt;Man erstellt als erstes ein Jabberkonto für Munin, damit man sich von ihm sauber anschreiben lassen kann. Technische- und Menschenaccounts sollte man tunlichst trennen. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;Mit ejabberd geht die Erstellung wie folgt.&lt;/p&gt; 
&lt;pre&gt;# ejabberdctl register munin JABBERSERVERHOST PASSWORT&lt;/pre&gt; 
&lt;p&gt;Nun legt man die Zugangsdaten für den neuen Nutzer &lt;em&gt;munin&lt;/em&gt; in einer Konfigurationsdatei, die nur von einem Muninprozess gelesen werden kann ab.&lt;/p&gt; 
&lt;pre&gt;# echo &quot;munin@JABBERSERVERHOST PASSWORT&quot; &amp;gt; /etc/munin/munin-jabberalert.conf
# chmod 400 /etc/munin/munin-jabberalert.conf
# chown munin /etc/munin/munin-jabberalert.conf
&lt;/pre&gt; 
&lt;p&gt;In der Konfiguration &lt;em&gt;/etc/munin/munin.conf&lt;/em&gt; fügt man nun die Kontaktanweisung im globalen Abschnitt - außerhalb der Node-Einstellungen - hinzu. Jede Direktive bekommt dabei &lt;u&gt;eine Zeile&lt;/u&gt; für sich.&lt;br /&gt;&lt;/p&gt; 
&lt;pre&gt;contacts jabber
contact.jabber.command sendxmpp -i -t -f /etc/munin/munin-jabberalert.conf NUTZER@JABBERSERVERHOST

# the first node configuration
[foo]
    address bar
&lt;/pre&gt; 
&lt;p&gt;Das war es bereits und das Logging findet normalerweise nach&lt;em&gt; /var/log/munin/munin-limits.log&lt;/em&gt; statt, falls debuggt werden muss.&lt;/p&gt; 
&lt;h4&gt;Test&lt;/h4&gt; 
&lt;p&gt; &lt;a href=&quot;https://gnuheidix.de/uploads/20150301185249.jpg&quot; title=&quot;Alarm auf dem Jolla&quot; class=&quot;serendipity_image_link&quot;&gt;&lt;!-- s9ymdb:117 --&gt;&lt;img width=&quot;110&quot; height=&quot;108&quot; alt=&quot;Alarm auf dem Jolla&quot; title=&quot;Alarm auf dem Jolla&quot; src=&quot;https://gnuheidix.de/uploads/20150301185249.serendipityThumb.jpg&quot; class=&quot;serendipity_image_right&quot; /&gt;&lt;/a&gt;Zum Test kann ein Plugin modizifiert werden, um einen &lt;em&gt;Warning&lt;/em&gt; oder &lt;em&gt;Critical&lt;/em&gt; zu triggern. Ob das klappt, sieht man im Webinterface von Munin. Die Kategorie mit dem Alarm wird gelb bzw. rot markiert, wenn ein Grenzwert überschritten wurde.&lt;/p&gt; 
&lt;p&gt;Ich persönlich habe zum Test einfach eine meiner Websites einen Fehlercode werfen lassen. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/laugh.png&quot; alt=&quot;:-D&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
&lt;h3&gt;Fazit&lt;/h3&gt; 
&lt;p&gt;Abhängig davon, wie wichtig etwas ist, kann man sich beliebig viele Grenzwerte definieren. Ich habe nur die aller wichtigsten eingerichtet, wie Platte aus dem RAID gefallen, Plattenplatz wird knapp, Webserver melden etwas anderes als 200 auf der Startseite, Errorlogs haben Einträge und so weiter.&lt;/p&gt; 
&lt;p&gt;Ich hoffe, ich konnte Dir bei Deinem Monitoring-Fanatismus behilflich sein. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Hetzner: vServer und Plattenwartezeiten</title>
    <link>https://gnuheidix.de/archives/52-Hetzner-vServer-und-Plattenwartezeiten.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:84 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/tango-charts.serendipityThumb.png&quot; /&gt;Aufgrund der wiederkehrend hohen Plattenwartezeiten habe ich bei Hetzner letztlich von einem vServer auf einen Rootserver aus der Serverbörse gewechselt. Der Unterschied ist erheblich.&lt;/p&gt;
&lt;h3&gt;Situation&lt;/h3&gt; 
&lt;p&gt;Meine Maschinen überwache ich stets mit Munin. Dieses Werkzeug misst alle fünf Minuten relevante Metriken und visualisiert sie bei Bedarf in hübschen Graphen. So kann ich Änderungen in den Systemleistungen zeitlich verfolgen und frühzeitig Gegenmaßnahmen einleiten.&lt;/p&gt; 
&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; title=&quot;Plattenwartezeit&quot; href=&quot;https://gnuheidix.de/uploads/sda-week.png&quot;&gt;&lt;!-- s9ymdb:115 --&gt;&lt;img width=&quot;110&quot; height=&quot;70&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/sda-week.serendipityThumb.png&quot; title=&quot;Plattenwartezeit&quot; alt=&quot;Plattenwartezeit&quot; /&gt;&lt;/a&gt;Bei Hetzner hatte ich seit Jahren einen vServer VQ7 mit einem halben Gigabyte Hauptspeicher und einem Prozessorkern. Dieser war völlig ausreichend für meine Zwecke aber etwa ein bis zweimal im Jahr sank die Plattenperformance im Bezug auf die Wartezeiten erheblich. Dies war offenbar stets dem Umstand geschuldet, dass ich mir die eigentliche Maschine mit anderen Leuten teilen musste. Ein Supportticket reichte in der Regel, um auf einen ruhigeren Host umgezogen zu werden. Dieses Mal wurde es aber bei jedem Umzug schlimmer und ich wollte keine neuen Supportanfragen mehr schreiben.&lt;/p&gt; 
&lt;h3&gt;Serverbörse&lt;/h3&gt; 
&lt;p&gt;&lt;a target=&quot;_blank&quot;&gt;&lt;/a&gt;&lt;a class=&quot;serendipity_image_link&quot; title=&quot;Plattenwartezeit vereinfacht&quot; href=&quot;https://gnuheidix.de/uploads/diskstats_latency_vereinfacht.png&quot;&gt;&lt;!-- s9ymdb:116 --&gt;&lt;img width=&quot;110&quot; height=&quot;63&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/diskstats_latency_vereinfacht.serendipityThumb.png&quot; title=&quot;Plattenwartezeit vereinfacht&quot; alt=&quot;Plattenwartezeit vereinfacht&quot; /&gt;&lt;/a&gt;In der &lt;a href=&quot;https://robot.your-server.de/order/market/country/DE&quot; title=&quot;externer Link&quot;&gt;Serverbörse&lt;/a&gt; kann man gebrauchte Rootserver zu einem angemessenen Preis mieten. Ich habe mich für einen Vierkerner mit 16 Gigabyte Hauptspeicher entschieden. Wie Ihr an den Graphen seht, ist die Plattenwartezeit (Disk Latency) von Durchschnittlich 260ms mit Spitzen bis zu sieben Sekunden auf Durchschnittlich 20ms mit Spitzen bis 200ms gefallen.&lt;/p&gt; 
&lt;p&gt;Dies entspricht der normalen Performance konventioneller Platten. Bei SSDs hingegen geht es nur noch um etwa 0,5ms Wartezeit.&lt;/p&gt; 
&lt;p&gt;Wie Ihr seht, habe ich zwei unterschiedlich flinke Platten. Die schnellere ist eine neue Western Digital und die langsamere eine Seagate mit bereits einem Jahr Betriebszeit.&lt;/p&gt; 
&lt;h3&gt;Fazit&lt;/h3&gt; 
&lt;p&gt;Der vServer hat mir gute Dienste geleistet, auch wenn er gelegentlich lahmte. Für durchgängige Leistung kommt man meines Erachtens an einem Rootserver nicht vorbei. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>HTML: Performance durch Resource Hints</title>
    <link>https://gnuheidix.de/archives/51-HTML-Performance-durch-Resource-Hints.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:39 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; src=&quot;https://gnuheidix.de/uploads/tango-blog.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;Die Frontendperformance von Websites ist äußerst wichtig, um Nutzer nicht auf die Idee zu bringen, schnell eine andere Website aufzurufen. Das W3C bohrt mit &lt;a title=&quot;externer Link zum W3C&quot; href=&quot;http://www.w3.org/TR/resource-hints/&quot;&gt;Resource Hints&lt;/a&gt; HTML mal wieder etwas auf, um komplexen Systemen mit verteilten Ressourcen auf die Sprünge zu helfen.&lt;br /&gt;&lt;/p&gt;
&lt;h3&gt;Motivation&lt;/h3&gt; 
&lt;p&gt;Browser bauen bei der Benutzung einer bestimmten Domain nur eine begrenzte Anzahl an Verbindungen auf. Dies beschränkt die Anzahl der Ressourcen, die gleichzeitig geladen werden können.&lt;/p&gt; 
&lt;p&gt;Um dies zu umgehen und die verfügbare Bandbreite eines jeweiligen Nutzers besser auslasten zu können, bietet es sich an, Ressourcen auf verschiedene Hosts zu verteilen.&lt;/p&gt; 
&lt;p&gt;Der Aufbau von neuen Verbindungen ist allerdings ein nicht zu unterschätzender Overhead, wodurch diese Maßnahme weise eingesetzt gehört.&lt;br /&gt;&lt;/p&gt; 
&lt;h3&gt;DNS-Prefetch&lt;/h3&gt; 
&lt;p&gt;Die Browser unterstützen bereits das Auflösen einer Domain bevor das HTML komplett eingelesen wurde. Folgendes kommt dabei in den &amp;lt;head&amp;gt;.&lt;/p&gt; 
&lt;pre&gt;&amp;lt;link rel=&quot;dns-prefetch&quot; href=&quot;&amp;#47;/largeimages.mydomain.tld/&quot;&amp;gt;&lt;/pre&gt; 
&lt;p&gt;Besonders wenn beispielsweise Javascript am Ende des HTML von externen Ressourcen eingebunden wurde, erhöht diese Maßnahme die Performance spürbar.&lt;/p&gt; 
&lt;h3&gt;Resource Hints&lt;/h3&gt; 
&lt;p&gt; Das W3C geht mit &lt;a title=&quot;externer Link zum W3C&quot; href=&quot;http://www.w3.org/TR/resource-hints/&quot;&gt;Resource Hints&lt;/a&gt; einen Schritt weiter. Mit Preconnect und Preload können ganze Verbindungen aufgebaut bzw. ganze Ressourcen in den Browsercache vorgeladen werden.&lt;/p&gt; 
&lt;p&gt;Beispiel aus dem Draft: &lt;br /&gt;&lt;/p&gt; 
&lt;pre&gt;&amp;lt;link rel=&quot;preconnect&quot; href=&quot;&amp;#47;/example.com&quot;/&amp;gt;

&amp;lt;link rel=&quot;preload&quot; href=&quot;&amp;#47;/example.com/next-page.html&quot; as=&quot;html&quot; loadpolicy=&quot;next&quot;/&amp;gt;
&lt;/pre&gt; 
&lt;p&gt; Besonders wenn es verschlüsselte Verbindungen über Leitungen mit hohen Latenzen sind, wird dieses Feature bei korrektem Einsatz erhebliche Geschwindigkeitsverbesserungen erzielen. Bisher wurde diese Funktionalität bei Bedarf mittels XMLHttpRequest in Javascript individuell nachgebaut.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;In Chromium wird die &lt;a title=&quot;externer Link&quot; href=&quot;https://www.chromestatus.com/features/5560623895150592&quot;&gt;Unterstützung für Resource Hints&lt;/a&gt; gerade implementiert. Wenn andere Browserhersteller mitziehen, kann bald auf diesen Hack verzichtet werden.&lt;br /&gt;&lt;/p&gt; 
&lt;h3&gt;Fazit&lt;/h3&gt; 
&lt;p&gt;In den Anfängen von HTML war Performance noch Nebensache und die Leute haben sich gefreut, wenn sie einen Link zu einem anderen Dokument einbinden und etwas farbig hervorheben konnten.&lt;/p&gt; 
&lt;p&gt;HTML passt sich nun immer mehr neuen Anforderungen an. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
&lt;h3&gt;Nachsatz&lt;br /&gt;&lt;/h3&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt;Es versteht sich von selbst, dass auf externen Domains keine Ressourcen liegen, die das Rendering blockieren.&lt;br /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Elektronik: Adventskalender ohne Schokolade</title>
    <link>https://gnuheidix.de/archives/50-Elektronik-Adventskalender-ohne-Schokolade.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:111 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/application-x-geda-symbol.serendipityThumb.png&quot; /&gt;Bereits 2013 habe ich überlegt, mir den &lt;a title=&quot;zum Conradkatalog&quot; href=&quot;http://www.conrad.de/ce/de/product/1225950/&quot;&gt;Adventskalender von Conrad&lt;/a&gt; zuzulegen. Dieses Jahr war es nun soweit.&lt;br /&gt;&lt;/p&gt;
&lt;h3&gt;Motivation&lt;/h3&gt; 
&lt;p&gt;Mir war es wichtig, einen Adventskalender zu haben, der für meine Freundin und mich zusammen passend ist. In einem Radio- und TV-Geschäft habe ich in meiner Kindheit im Reparaturdienst ausgeholfen und besitze grundlegende Kenntnisse in der Elektronik. Meine Freundin ist grundsätzlich offen für alles technische und liebt Basteleien.&lt;/p&gt; 
&lt;h3&gt;Erfahrungen&lt;/h3&gt; 
&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/CAM01178.jpg&quot; alt=&quot;Adventskalender&quot;&gt;&lt;!-- s9ymdb:112 --&gt;&lt;img width=&quot;83&quot; height=&quot;110&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/CAM01178.serendipityThumb.jpg&quot; /&gt;&lt;/a&gt;Auf der Rückseite des Kalenders ist ein Karton mit Grundlagen der Elektrotechnik und ein Beschreibungsbuch für die Experimente. Das Buch enthält etwa eine halbe Seite mit Erklärungen, einen Schalt- und einen Steckplan pro Tag. Die notwendige Zeit pro Experiment steigt von Tag zu Tag, übersteigt aber jeweils nie 30 Minuten. Es werden nur die absolut notwendigen technischen Grundlagen erklärt. Für meinen Geschmack hätte es gern etwas mehr sein können.&lt;/p&gt; 
&lt;p&gt;Es wird behauptet, dass lediglich eine 9V-Batterie notwendig ist. In der Tat braucht man aber noch zusätzlich eine spitze Zange und ein scharfes Messer, da man den Klingeldraht sonst nicht bearbeiten kann.&lt;/p&gt; 
&lt;p&gt;Der Schwierigkeitsgrad ist für Amateure passend. Geduld und feinmotorische Fähigkeiten sind aber zwingend notwendig.&lt;br /&gt;&lt;/p&gt; 
&lt;h3&gt;Durchführung&lt;/h3&gt; 
&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; title=&quot;24. Experiment&quot; href=&quot;https://gnuheidix.de/uploads/CAM01175.jpg&quot;&gt;&lt;!-- s9ymdb:113 --&gt;&lt;img width=&quot;110&quot; height=&quot;97&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/CAM01175.serendipityThumb.jpg&quot; title=&quot;24. Experiment&quot; alt=&quot;24. Experiment&quot; /&gt;&lt;/a&gt;Am ersten Tag bekommt man eine LED und einen Widerstand. Am dritten Tag bekommt man ein Steckbrett und täglich kommen dann Widerstände, LEDs, Transistoren usw. hinzu. Besonders interessant finde ich die Spezial-LEDs mit integrierten Schaltungen, die Mehrfarben, Kerzen- und Blinkeffekte ohne Eigenarbeit bereitstellen. Erst im letzten Experiment werden alle verbaut und man hat, wenn man möchte, einen Weihnachtsbaumanhänger in Form eines Steckbretts.&lt;/p&gt; 
&lt;h3&gt;Fazit&lt;/h3&gt; 
&lt;p&gt;Meiner Freundin und mir hat der Kalender sehr gefallen. Interessant ist, dass kein weiterführendes Werbematerial von Conrad mitgeliefert wird, welches erklärt, wo man durchgebrannte Bauteile nachbestellen kann.&lt;/p&gt; 
&lt;p&gt;Besonders schön hätte ich es gefunden, wenn man z.B. einen Blinkeffekt mit einzelnen Transistoren aufbaut und dann die Schaltung in die LED integriert bekommt. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Duplicity: Paramiko und OpenSSH 6.7</title>
    <link>https://gnuheidix.de/archives/49-Duplicity-Paramiko-und-OpenSSH-6.7.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:110 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; src=&quot;https://gnuheidix.de/uploads/preferences-desktop-remote-desktop.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;Täglich führt mein Server ein inkrementelles Backup mittels&amp;#160;&lt;a title=&quot;Duplicity Homepage&quot; href=&quot;http://duplicity.nongnu.org/&quot;&gt;Duplicity&lt;/a&gt; durch. Ein Update von OpenSSH auf dem Zielsystem Raspberry Pi hat letztlich diesen Prozess unterbrochen.&lt;/p&gt;
&lt;h3&gt;Backend Exception&lt;/h3&gt; 
&lt;p&gt;Im Duplicity-Log meines zu backupenden Servers war lediglich folgendes zu sehen.&lt;/p&gt; 
&lt;pre&gt;BackendException: ssh connection to XXXX failed:

ssh: Connected (version 2.0, client OpenSSH_6.7)
ssh: Exception: Incompatible ssh peer (no acceptable kex algorithm)
ssh: Traceback (most recent call last):
ssh:   File &quot;/usr/lib/python2.7/dist-packages/paramiko/transport.py&quot;, line 1585, in run
ssh:     self._handler_table[ptype](self, m)
&lt;/pre&gt; 
&lt;p&gt;Das SSH-Backend verweigert den Verbindungsaufbau. Ein manueller Versuch mittels CLI-Werkzeug sftp funktioniert hingegen problemlos.&lt;/p&gt; 
&lt;p&gt;Nach kurzer Recherche bin ich bei &lt;a title=&quot;Github Issue&quot; href=&quot;https://github.com/paramiko/paramiko/issues/423&quot;&gt;Github&lt;/a&gt; fündig geworden. Laut dem Paramiko-Entwickler ist mindestens Version 1.15.1 der Bibliothek erforderlich, wenn man mit einem Zielsystem dieser OpenSSH-Version kommunizieren möchte.&lt;/p&gt; 
&lt;h3&gt;Lösungsansätze&lt;/h3&gt; 
&lt;p&gt;Grundsätzlich hatte ich die Möglichkeit des Downgrades von OpenSSH 6.7 auf 6.6 auf dem Zielsystem. Diese Option mochte ich allerdings nicht, da ich sonst ab diesem Zeitpunkt keine Sicherheitsupdates mehr von den Arch-Repositories hätte einspielen können. Bei einem von außen praktisch frei aufrufbaren Dienst sollte man diese Option nie ziehen.&lt;/p&gt; 
&lt;p&gt;Ein Update der Paramiko-Bibliothek auf dem Ubuntu-Server wurde auch in keinem PPA angeboten. Auf ein Update über den üblichen Weg von Canonical will ich nicht warten. All meine bisherigen derartigen Bugreports wurden nie bearbeitet, obwohl ich stets Patches mit angehängt habe. Diese Option scheidet also auch aus.&lt;/p&gt; 
&lt;p&gt;In der Manpage von Duplicity habe ich einen guten Hinweis gefunden. Es gibt ein weiteres SSH-Backend.&lt;/p&gt; 
&lt;h3&gt;pexpect&lt;/h3&gt; 
&lt;p&gt;Das Backend &lt;a title=&quot;SSH-Backends von Duplicity&quot; href=&quot;http://duplicity.nongnu.org/duplicity.1.html#sect18&quot;&gt;pexpect&lt;/a&gt;&amp;#160;existiert noch und wird noch unterstützt. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;Nach dem Setzen der folgenden Option im Duplicity-Befehl des Backupskripts, funktionierte der Prozess wieder.&lt;/p&gt; 
&lt;pre&gt;--ssh-backend pexpect&lt;/pre&gt; 
&lt;h3&gt;Fazit&lt;/h3&gt; 
&lt;p&gt;Es ist sehr fein, dass diese Legacyimplementierung noch zur Verfügung steht. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Varnish: Shared Memory Log</title>
    <link>https://gnuheidix.de/archives/48-Varnish-Shared-Memory-Log.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:50 --&gt;&lt;img width=&quot;110&quot; height=&quot;110&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/tango-harddisk.serendipityThumb.png&quot; /&gt;Varnish liefert Seiten, insofern sie im Cache vorgehalten werden, ohne Plattenzugriff direkt aus dem Hauptspeicher aus. Wie ich aber letztlich gelesen habe, stimmt das nicht uneingeschränkt.&lt;/p&gt;
&lt;p&gt;Laut &lt;a title=&quot;Varnish-Manual&quot; href=&quot;https://www.varnish-software.com/static/book/Tuning.html#the-shared-memory-log&quot;&gt;Varnish-Book&lt;/a&gt; wird das Shared Memory Log standardmäßig auf der Platte geführt, wo es bei vielen Zugriffen eine Menge IO erzeugen kann.&lt;/p&gt; 
&lt;p&gt;Dem &lt;em&gt;varnishd&lt;/em&gt; kann mittels des Parameters &lt;em&gt;-l&lt;/em&gt; mitgeteilt werden, wie groß er das Log dimensionieren soll. Eine Entkopplung von der Platte ist mittels tmpfs einfach möglich, da die als Round-Robin geführte Datei nicht größer als konfiguriert wird.&lt;/p&gt; 
&lt;p&gt;Meine /etc/fstab besitzt damit nun folgende Zeile.&lt;/p&gt; 
&lt;pre&gt;tmpfs /var/lib/varnish tmpfs rw,size=64M 0 0&lt;/pre&gt; 
&lt;p&gt;Ich hoffe, ich konnte Euch bei Eurer Varnishkonfiguration einen guten Tipp geben. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>PHP: FPM-Backend offline nach Update</title>
    <link>https://gnuheidix.de/archives/47-PHP-FPM-Backend-offline-nach-Update.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:78 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/tango-application-x-php.serendipityThumb.png&quot; /&gt;Nach dem Einspielen der heute bei Ubuntu 14.04 LTS veröffentlichten PHP-Updates für 5.5.9, blieb das PHP-Backend (FPM) für den Webserver nicht erreichbar. Seitenaufrufe meines Blogs resultierten in einem Fehlercode. Was war passiert?&lt;br /&gt;&lt;/p&gt;
&lt;h3&gt;Status 503 und 502&lt;/h3&gt; 
&lt;p&gt;Der dem Webserver nginx vorgeschaltete Varnish meldete einen 503 Service Unavailable. Statische Inhalte funktionierten.&lt;/p&gt; 
&lt;p&gt;Ok, FPM ist wohl nicht erreichbar. &lt;em&gt;ps aux | grep fpm&lt;/em&gt; zeigte allerdings, dass es läuft. Die Logfiles von nginx sind aufschlussreicher. Laut Accesslog wird 502 Bad Gateway an Varnish gemeldet. Das Errorlog gibt den entscheidenden Hinweis.&lt;br /&gt;&lt;/p&gt; 
&lt;pre&gt;[crit] 1337#0: *169 connect() to unix:/var/run/php5-fpm.sock failed (13: Permission denied) while connecting to upstream, client: xxx.xxx.xxx.xxx, server: gnuheidix.de, request: &quot;GET / HTTP/1.1&quot;, upstream: &quot;fastcgi://unix:/var/run/php5-fpm.sock:&quot;, host: &quot;gnuheidix.de&quot;&lt;/pre&gt; 
&lt;p&gt;Wie sich herausstellte, hatte der Unix Domain Socket mit root:root 660 für nginx unpassende Einstellungen.&lt;/p&gt; 
&lt;h3&gt;Anpassung der Konfiguration&lt;/h3&gt; 
&lt;p&gt;Die Prozesspool-Einstellung &lt;em&gt;/etc/php5/fpm/pool.d/www.conf&lt;/em&gt; habe ich nach kurzer Recherche um folgende Zeilen erweitert.&lt;/p&gt; 
&lt;pre&gt;listen.owner = daemon
listen.group = daemon
listen.mode = 0660&lt;/pre&gt; 
&lt;p&gt;Diese Einstellung lässt die FPM-Worker den gleichen Nutzer und Gruppe nehmen wie nginx. Nach dem Durchstarten von FPM war mein Blog wieder vollständig erreichbar.&lt;/p&gt; 
&lt;h3&gt;Hintergrund&lt;/h3&gt; 
&lt;p&gt;FPM war nicht mehr zugreifbar, weil die Defaults, welche meine Konfiguration nutzte, geändert wurden. Im Rahmen von &lt;a href=&quot;http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=2014-0185&quot; title=&quot;externer Link&quot;&gt;CVE 2014-0185&lt;/a&gt; konnten beliebige Prozesse auf den Socket zugreifen. Dies ist im &lt;a title=&quot;externer Link&quot; href=&quot;https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1307027&quot;&gt;Ubuntu-Bugreport&lt;/a&gt; schön dokumentiert.&lt;/p&gt; 
&lt;p&gt;Meine FPM-Konfiguration war bis zum Zeitpunkt meiner heutigen Änderung nicht wasserdicht. Ich hatte es nicht gemerkt, weil der Default mit 0666 jedem Prozess Zugriffsrechte eingeräumt hatte.&lt;/p&gt; 
&lt;h3&gt;Fazit&lt;/h3&gt; 
&lt;p&gt;Gute Software erkennt man an sinnvollen und vorausschauend gewählten Defaulteinstellungen. PHP ist nun ein kleines Stückchen besser und ich ein bisschen achtsamer geworden. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>SSH: Proxyfunktion als VPN-Ersatz</title>
    <link>https://gnuheidix.de/archives/46-SSH-Proxyfunktion-als-VPN-Ersatz.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:108 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; src=&quot;https://gnuheidix.de/uploads/network-proxy.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;Eine gewisse Zeit hatte ich OpenVPN auf meinem Server im Einsatz, um vertrauenswürdige Internetverbindungen herstellen zu können. Das gleiche erreiche ich nun einfacher mit SSH.&lt;br /&gt;&lt;/p&gt;
&lt;h3&gt;Motivation&lt;/h3&gt; 
&lt;p&gt;In Hotels, auf Konferenzen, Parteitagen oder ähnlichen Veranstaltungen wird oft ein frei zugängliches WLAN angeboten. Dies ist löblich, aber da ich den anderen Leuten im Netz oder dem Netzbetreiber selbst in der Regel nie komplett vertrauen will, brauche ich einen hochgradig verschlüsselten Kanal zu einem von mir kontrollierten Computer, von dem ich beruhigt aufs Internet zugreifen kann.&lt;/p&gt; 
&lt;h3&gt;OpenVPN&lt;/h3&gt; 
&lt;p&gt;Mit dem auf OpenSSL aufsetzenden System OpenVPN habe ich bis vor ca. einem Jahr diesen verschlüsselten Tunnel aufgebaut. Die Einrichtung war leider nicht wirklich einfach und einen Dienst, den ich vielleicht fünf Mal im Jahr brauche, permanent laufen zu lassen, mag ich nicht. Die Systemressourcen sind mir zu kostbar.&lt;/p&gt; 
&lt;p&gt;Darüber hinaus meide ich wenn möglich gern alles, was auf *SSL zurückgreift. Ich glaube, dass seit Heartbleed auch andere Leute so denken.&lt;br /&gt;&lt;/p&gt; 
&lt;h3&gt;SSH als SOCKS-Proxy&lt;br /&gt;&lt;/h3&gt; 
&lt;p&gt;&lt;a href=&quot;https://gnuheidix.de/uploads/ssh-socks-proxy.png&quot; class=&quot;serendipity_image_link&quot;&gt;&lt;!-- s9ymdb:109 --&gt;&lt;img width=&quot;110&quot; height=&quot;49&quot; alt=&quot;SOCKS-Proxy via SSH - ein Screenshot&quot; src=&quot;https://gnuheidix.de/uploads/ssh-socks-proxy.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;&lt;/a&gt;Auf all meinen Rechnern ist ein SSH-Server zur Fernwartung eingerichtet und mit dem Parameter &lt;em&gt;-D&lt;/em&gt; kann man den SSH-Client anweisen, einen SOCKS-Proxyserver bereitzustellen, sobald die Verbindung zum SSH-Server steht. Anwendungen, wie Browser, Mailprogramm usw. kann man so konfigurieren, dass der Verkehr über den Proxy läuft. In vielen Linuxdistributionen kann man das sogar sehr einfach mittels Klickibunti systemweit einrichten.&lt;/p&gt; 
&lt;p&gt;Wenn zu erwarten ist, dass die fremden Netze den SSH-Port sperren, kann man den SSH-Server auf einem grundsätzlich erreichbaren Port, wie 80 oder 443 laufen lassen.&lt;br /&gt;&lt;/p&gt; 
&lt;h3&gt;Fazit&lt;/h3&gt; 
&lt;p&gt;SSH tunnelt sauber IPv6, ich muss keinen Dienst extra laufen lassen und ich nutze ein Werkzeug, das ich schon sehr lange kenne, ein bisschen öfter. Mehr kann ich mir nicht wünschen.&lt;/p&gt; 
&lt;p&gt;Versucht es doch auch einmal. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;&lt;/p&gt;  
    </description>
</item>
<item>
    <title>Mailserver: Sender Policy Framework</title>
    <link>https://gnuheidix.de/archives/45-Mailserver-Sender-Policy-Framework.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:80 --&gt;&lt;img height=&quot;100&quot; width=&quot;100&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/tango-unblock-request.serendipityThumb.png&quot; /&gt;Die Bearbeitung von Spammails ist heutzutage leider die Hauptbeschäftigung von praktisch jedem Mailserver. Verschiedene Mechanismen werden bei der Spamprüfung hintereinander geschaltet, um beim Durchlauf einer jeden E-Mail zu entscheiden, ob sie zugestellt werden sollte oder nicht. Das Sender Policy Framework (SPF) kann den Servern die Arbeit etwas erleichtern.&lt;br /&gt; &lt;/p&gt;
&lt;h3&gt;Geschichte&lt;/h3&gt; 
&lt;p&gt;Mit der Arbeit an &lt;a title=&quot;Spezifikation von SPF&quot; href=&quot;http://www.openspf.org/Specifications&quot;&gt;SPF&lt;/a&gt; wurde 2003 begonnen und der finale experimentelle Status wurde 2006 mit RFC4408 erreicht. Dieser Standard wird heutzutage bereits von einigen Mailservern unterstützt.&lt;/p&gt; 
&lt;p&gt;Im April diesen Jahres wurde SPFv1 mit &lt;a title=&quot;RFC7208 beim IETF&quot; href=&quot;http://tools.ietf.org/rfc/rfc7208.txt&quot;&gt;RFC7208&lt;/a&gt; offiziell von der Internet Engineering Task Force als Standard verabschiedet.&lt;/p&gt; 
&lt;h3&gt;Motivation&lt;/h3&gt; 
&lt;p&gt;E-Mails von meinem Mailserver an einen Google-Mailaccount wurden, wenn sie recht kurz waren, öfters als möglicher Spam ohne Zustellung zurückgewiesen. Ich mache Google keinen Vorwurf. Viel mehr als das Ergebnis vom &lt;a href=&quot;http://de.wikipedia.org/wiki/Bayesscher_Filter#Anwendung_in_E-Mails&quot; title=&quot;Wikipedia-Link&quot;&gt;Bayes-Filter&lt;/a&gt; und einer Übereinstimmung von SMTP-Banner und Reverse-DNS-Eintrag mit hatte es zur Klassifizierung schließlich nicht greifbar. Weiter schlägt bei Google so viel Spam auf, dass sie es sich einfach nicht leisten können, dort Ressourcen zu verbraten.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;Nach etwas Recherche habe ich herausgefunden, dass SPF mein Problem lösen könnte.&lt;/p&gt; 
&lt;h3&gt;Funktionsweise&lt;/h3&gt; 
&lt;p&gt;Dieser Mechanismus verhindert, dass jemand E-Mails mit falschem Absender
 versenden kann, insofern der empfangende Mailserver das prüft bzw. 
prüfen kann. Es wird beim versendenden Mailserver ein SPF-Record im DNS gesetzt, welcher beschreibt, welche Rechner E-Mails für die benutzte Domain versenden dürfen. Ein empfangender Mailserver kann nach Abfrage des SPF-Records entscheiden, ob die IP des Mailservers, von dem er die Mail bekommt, der Regel des Records entspricht. &lt;br /&gt;&lt;/p&gt; 
&lt;h3&gt;Einrichtung &lt;br /&gt;&lt;/h3&gt; 
&lt;p&gt;Alles hängt am &lt;a href=&quot;http://www.openspf.org/SPF_Record_Syntax&quot; title=&quot;SPF-Record Syntax&quot;&gt;SPF-Record&lt;/a&gt;, der in jedem Fall korrekt sein muss. Falls man sich vertut und empfangende Mailserver ein SPF-Fail feststellen, kann das die Zustellungen um ein Vielfaches unwahrscheinlicher machen. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;h4&gt;Senderichtung&lt;/h4&gt; 
&lt;p&gt;Abhängig vom Setup kann es beliebig kompliziert sein, die passende SPF-Regel herauszufinden. Mir hat es geholfen, die RFC zu lesen. Letztendlich war die Regel aber für mein Setup mit einem Mailserver und einer mailsendenden Domain ziemlich einfach.&lt;/p&gt; 
&lt;pre&gt;$ host -t txt gnuheidix.de
gnuheidix.de descriptive text &quot;v=spf1 mx -all&quot;&lt;/pre&gt; 
&lt;p&gt;Diese Regel sagt nicht mehr aus, als dass die im MX-Record hinterlegten Rechner Mails senden dürfen und kein anderer. Es gibt übrigens auch einen &lt;a title=&quot;SPF-Record Tester&quot; href=&quot;http://www.kitterman.com/spf/validate.html&quot;&gt;Tester&lt;/a&gt; vom Schreiber der RFC.&lt;br /&gt;&lt;/p&gt; 
&lt;h4&gt;Empfangsrichtung&lt;/h4&gt; 
&lt;p&gt;Es kann sein, dass beim eigenen Mailserver bereits SPF geprüft wird. OpenSPF hat eine &lt;a href=&quot;http://www.openspf.org/Implementations&quot; title=&quot;SPF-Implementierungen&quot;&gt;Liste der Implementierungen&lt;/a&gt; zusammengestellt.&lt;/p&gt; 
&lt;p&gt;Man kann die eigene Unterstützung testen, indem man in den Header einer E-Mail, die man von außerhalb des eigenen Mailservers empfangen hat, schaut. Folgender Header zeigt beispielhaft, dass gegen SPF erfolgreich geprüft wurde.&lt;/p&gt; 
&lt;pre&gt;Received-SPF: Pass (sender SPF authorized) identity=mailfrom;
 client-ip=199.59.150.99; helo=spruce-goose-bd.twitter.com;
 envelope-from=bbbbbbbbbb2baaa=gnuheiix.de@bounce.twitter.com;
 receiver=baaa@gnuheiix.de&lt;/pre&gt; 
&lt;p&gt;Um die SPF-Prüfung bei meinem Postfix an den Start zu bringen, habe ich das Package &lt;em&gt;postfix-policyd-spf-python&lt;/em&gt; installiert und die Einrichtungsschritte der &lt;a title=&quot;Ubuntu-Manpage&quot; href=&quot;http://manpages.ubuntu.com/manpages/precise/en/man1/policyd-spf.1.html&quot;&gt;Manpage&lt;/a&gt; befolgt. Das ist nach 15 Minuten erledigt.&lt;/p&gt; 
&lt;h3&gt;Fazit&lt;/h3&gt; 
&lt;p&gt;Diese weitere Komplexitätsstufe kann den entscheidenden Unterschied bei der Spamklassifizierung machen.&lt;/p&gt; 
&lt;pre&gt;X-Spam-Status: No,
  tests=[BAYES_50=0.8, RP_MATCHES_RCVD=-0.552,
         SPF_HELO_PASS=-0.001, SPF_PASS=-0.001]&lt;/pre&gt; 
&lt;p&gt;Probiert es doch mal aus. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
&lt;h3&gt;Nachtrag&lt;/h3&gt; 
&lt;p&gt;&lt;em&gt;29.05.2014:&lt;/em&gt; Es gibt auch ein &lt;a title=&quot;externer Link&quot; href=&quot;http://blog.alexanderkoch.net/2012/munin-plugin-fur-policyd-spf/&quot;&gt;Plugin für Munin&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Postfix: Verschlüsselung zwischen Mailservern</title>
    <link>https://gnuheidix.de/archives/44-Postfix-Verschluesselung-zwischen-Mailservern.html</link>

    <description>
        &lt;!-- s9ymdb:103 --&gt;&lt;img alt=&quot; &quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/Mail-closed.serendipityThumb.png&quot; style=&quot;width:100px&quot; /&gt;
&lt;p&gt;Eine vollkommen wasserdichte verschlüsselte Kommunikation mittels E-Mail ist nur durch eine Ende-zu-Ende-Verschlüsselung realisierbar. Nur wenige Nutzer greifen jedoch darauf zurück. Grundlegende Maßnahmen sind dennoch möglich.&lt;/p&gt;

&lt;h3&gt;Geschichte&lt;/h3&gt;

&lt;p&gt;E-Mail kommt aus einer Zeit, in der alles als Klartext übertragen wurde und niemand jemals an Verschlüsselung dachte. Die Zeiten haben sich geändert und das dafür zuständige Protokoll SMTP wurde um Verschlüsselungsoptionen erweitert.&lt;/p&gt;

&lt;p&gt;Bis eine E-Mail ihren Empfänger erreicht, wird sie unter Umständen über mehrere verschiedene Mailservern geleitet. Während dieser automatischen Weiterleitungsvorgänge zwischen Mailservern kann bei unzureichenden Maßnahmen der E-Mail-Inhalt durch Dritte einfach mitgelesen werden.&lt;/p&gt;

&lt;h3&gt;Motivation&lt;/h3&gt;

&lt;p&gt;Insofern Mailserver korrekt konfiguriert sind, können sie den Mailtransport untereinander verschlüsselt durchführen, indem sie auf Bibliotheken wie OpenSSL zurückgreifen. Auch wenn man lediglich die eigenen Server beeinflussen kann, hat jeder Mailserveradministrator die Verantwortung, das Setup zeitgemäß zu halten. Verschlüsselungsverfahren gelten eben nur eine begrenzte Zeit als sicher.&lt;/p&gt;

&lt;p&gt;Mit dem Werkzeug &lt;a href=&quot;https://starttls.info/&quot; title=&quot;externer Link&quot;&gt;starttls.info&lt;/a&gt; kann man den eigenen Mailserver prüfen lassen und es werden allgemeine Hinweise ausgegeben, wo Verbesserungsbedarf besteht.&lt;/p&gt;

&lt;h3&gt;Konfiguration von Postfix&lt;/h3&gt;

&lt;p&gt;Ich setze Postfix als Mailserver ein und folgende Einstellungen habe ich getroffen, um besser gerankt zu werden.&lt;/p&gt;

&lt;pre&gt;
smtp_tls_ciphers = high
smtpd_tls_ciphers = high
smtp_tls_mandatory_ciphers = high
smtpd_tls_mandatory_ciphers = high

smtp_tls_security_level = may
smtpd_tls_security_level = encrypt

smtp_tls_protocols = !SSLv2, !SSLv3
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_protocols = !SSLv2, !SSLv3
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3

smtp_tls_exclude_ciphers = aNULL, DES, RC4, MD5, 3DES
smtpd_tls_exclude_ciphers = aNULL, DES, RC4, MD5, 3DES
smtp_tls_mandatory_exclude_ciphers = aNULL, DES, RC4, MD5, 3DES
smtpd_tls_mandatory_exclude_ciphers = aNULL, DES, RC4, MD5, 3DES

# NO_RENEGOTIATION postfix 3.3 openssl &amp;gt;1.1.1
tls_ssl_options = 0x40000000
tls_preempt_cipherlist = yes
tls_eecdh_auto_curves = X25519 X448 secp521r1 secp384r1 prime256v1
tls_high_cipherlist = !aNULL:!eNULL:!CAMELLIA:HIGH:@STRENGTH
&lt;/pre&gt;

&lt;p&gt;Mit den Einstellungen in &lt;em&gt;*protocols&lt;/em&gt; deaktiviere ich SSL vollständig, da es von verschiedenen Stellen als unsicher eingestuft wird. Weiter gibt es TLS 1.0 bereits lange genug. Mit &lt;em&gt;*tls_ciphers&lt;/em&gt; und &lt;em&gt;*tls_mandatory_ciphers&lt;/em&gt; auf &lt;em&gt;high&lt;/em&gt; schränke ich auf die durch Postfix als gut eingestuften Ciphers ein und danach deaktiviere ich manuell weitere mittels &lt;em&gt;*exclude_ciphers&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Durch &lt;em&gt;smtp_tls_security_level&lt;/em&gt; auf &lt;em&gt;may&lt;/em&gt; mache ich alles optional. So kann man weiterhin mit Mailservern kommunizieren, die keinerlei verschlüsselte Kommunikation unterstützen, wie aktuell z.B. die von KabelBW und Hotmail. Wenn man Hardliner ist, kann jederzeit das Level auf &lt;em&gt;encrypt&lt;/em&gt; gestellt werden und schon pocht Postfix auf Verschlüsselung. Es gibt aber auch noch &lt;a href=&quot;http://www.postfix.org/postconf.5.html#smtp_tls_security_level&quot; title=&quot;Postfix Manual&quot;&gt;härtere Level&lt;/a&gt;. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

&lt;h3&gt;Testung&lt;/h3&gt;

&lt;p&gt;Mit sslscan kann man jederzeit die verbliebenen aktivierten Ciphers auflisten lassen.&lt;/p&gt;

&lt;pre&gt;
$ sslscan --starttls --no-failed localhost:25&lt;/pre&gt;

&lt;p&gt;Weiter bietet es sich an, das Senden und Empfangen von E-Mails an große E-Mailanbieter wie gmail, gmx,... zu testen. Das Logfile von Postfix bzw. das hoffentlich korrekt eingerichtete Monitoring dessen gibt Aufschluss darüber, ob alles einwandfrei arbeitet.&lt;/p&gt;

&lt;h3&gt;Fazit&lt;/h3&gt;

&lt;p&gt;Unglaublich viele Konfigurationsparameter machen OpenSSL für einen Dienst wie Postfix nur in Verbindung mit viel Rechercheaufwand einrichtbar. Weiter muss man stets IT-Nachrichten lesen, um zu Wissen auf welche Funktionalität der Bibliothek man lieber gerade verzichten sollte.&lt;/p&gt;

&lt;p&gt;Leider kann man OpenSSL nicht dienstübergreifend konfigurieren, wenn man es nicht gerade selbst kompilieren will. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

&lt;h3&gt;Nachtrag&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;27.05.2014:&lt;/em&gt; Einen weiteren guten Mailservertester gibt es übrigens bei &lt;a href=&quot;https://de.ssl-tools.net/mailservers&quot; title=&quot;externer Link&quot;&gt;ssl-tools.net&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;20.05.2015:&lt;/em&gt; smtp(d)_tls_ciphers hinzugefügt, danke Akimiya &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;28.08.2016:&lt;/em&gt; smtp(d)_tls_exclude_ciphers um 3DES erweitert; Noch einen guten SSL-Tester gibts bei &lt;a href=&quot;https://tls.imirhil.fr/&quot; title=&quot;externer Link&quot;&gt;tls.imirhil.fr&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;06.12.2019:&lt;/em&gt; Kompatibilität zu &lt;a href=&quot;https://testssl.sh/&quot;&gt;testssl.sh&lt;/a&gt; in der Version 3.0&lt;/p&gt;

&lt;p&gt;&lt;em&gt;01.06.2020:&lt;/em&gt; Cipherlist und Protokolle für eingehende Mails aufgeweicht, um von ranziger kommunaler IT empfangen zu können &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/sad.png&quot; alt=&quot;:-(&quot; class=&quot;emoticon&quot; /&gt; - in Anlehnung an &lt;a href=&quot;https://www.kuketz-blog.de/postfix-ecdsa-rsa-keys-und-tls-konfiguration/&quot;&gt;Mike Kuketz&lt;/a&gt;&lt;/p&gt;
 
    </description>
</item>
<item>
    <title>HTTP: Header und Browsercaching</title>
    <link>https://gnuheidix.de/archives/43-HTTP-Header-und-Browsercaching.html</link>

    <description>
        &lt;!-- s9ymdb:39 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; src=&quot;https://gnuheidix.de/uploads/tango-blog.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt; 
&lt;p&gt;Die Standardeinstellungen der gängigen Webserver nginx und Apache sind in vielen Linux-Distribution so vorgenommen, dass sie ganz gut mit statischen Dateien umgehen können. Bei dynamisch generierten Inhalten sind sie allerdings grundsätzlich machtlos und man muss etwas in die Trickkiste greifen, um das Browsercaching sauber hinzubekommen.&lt;/p&gt;
&lt;h3&gt;Statische Inhalte 
&lt;/h3&gt; 
&lt;p&gt;Bei ordentlich umgesetzten Websites haben statische Inhalte, wie 
Bilder, JavaScript, CSS, Schriften und was einem da noch so alles einfallen
 könnte, grundsätzlich einen gesetzten Last-Modified-Header auf die 
letzte Änderungszeit der jeweiligen Datei und einen gesetzten 
Cache-Control-Header mit einem MaxAge sehr weit in der Zukunft liegend. Alternativ kann man auch einen Expires-Header in der Zukunft liegend benutzen. 
Wenn einem bei sowas ein Fehler unterlaufen ist, wird einem Google 
Pagespeed oder YSlow freundlich aber bestimmt auf die Fehlkonfiguration 
hinweisen. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;Der Vorteil an diesem Vorgehen ist, dass Browser eine einmal gecachte
 statische Datei nie wieder anfragen werden. Die Seitenaufbauzeit 
bereits besuchter Seiten und der erzeugte Traffic wird dadurch auf ein 
Minimum reduziert.&lt;br /&gt;&lt;/p&gt; 
&lt;h4&gt;Dateiänderungen&lt;/h4&gt; 
&lt;p&gt;Es gibt Leute, die den Grund aufführen, dass sie eine JavaScript- 
oder CSS-Datei gerne immer mal wieder ändern möchten und vermeiden 
wollen, gegen gefüllte Browsercaches zu laufen. Dieser Grund ist 
ungültig, wenn man in der Webapplikation grundsätzlich den Ansatz fährt,
 den Dateinamen der jeweiligen veränderten statischen Datei zu ändern 
sobald sich der Inhalt geändert hat. Bei JavaScript und CSS gehört es 
heutzutage aus Performancegründen zum guten Ton, es zu minifizieren. Im 
gleichen Zug kann man bei Änderungen dem Dateinamen ja auch noch um eine
 Hashsumme des Inhalts anreichern.&lt;/p&gt; 
&lt;p&gt;Bei Bildern und anderem gibt es meines Erachtens ebenfalls keine 
nennenswerten Showstopper. Die Arbeitsprozesse der Webapplikation müssen
 einfach darauf ausgerichtet sein bzw. werden.&lt;/p&gt; 
&lt;h3&gt;Dynamische Inhalte&lt;/h3&gt; 
&lt;p&gt;Webserver können grundsätzlich keine Standardaussage treffen, wie 
lange z.B. das HTML eines Blogbeitrags vom Browsercache vorgehalten 
werden soll, ohne zwischendurch neue Inhalte abzufragen. Das Blogsystem 
kann das in der Regel auch nicht, weil es nicht vorher wissen kann, wann
 ein Autor einen neuen Beitrag veröffentlichen wird oder wann eine 
eingebundene Twitternachricht in der Seitennavigation aufpoppen wird. Es
 kann aber eine klare Aussage machen, wann der Inhalt einer bestimmten 
URL das letzte Mal aktualisiert wurde. &lt;/p&gt; 
&lt;p&gt;Hierfür braucht das System
 lediglich den Last-Modified-Header oder einen Etag-Header setzen. 
Browser werden bei jedem Aufruf den Last-Modified-Zeitpunkt und / oder 
das Etag der gecachten Version mitsenden. Wenn das Blogsystem 
feststellt, dass die Version bereits die aktuelle ist, antwortet es mit 
einem HTTP 304 und sendet keinen Inhalt. Der Browser weiß damit, dass er
 bereits die aktuelle Version hat und kann sie ohne Download des HTML darstellen. Falls es eine neue Version gibt, kommt ein regulärer HTTP 200 mit Inhalt.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;Ein
 MaxAge sollte man bei HTML nur setzen, wenn man sich absolut sicher 
ist, keine neuen Inhalte in der gegeben Zeit ausliefern zu wollen. Einen
 Blogbeitrag zu veröffentlichen und dies direkt zu vertwittern könnte 
bei heißen Browsercaches der jeweiligen aufrufenden Benutzer sonst peinlich werden.&lt;/p&gt; 
&lt;h3&gt;Problem&lt;/h3&gt; 
&lt;p&gt;Die von mir aufgezeigten Funktionsprinzipien des Browsercaches ohne Nachfrage bei statischen und mit Nachfrage
 bei dynamischen Inhalten werden von keiner mir bekannten 
Standardwebapplikation sauber implementiert. Im Falle von Blogsystemen schaffen es diesbezüglich weder Wordpress noch Serendipity, aus der Standardkonfiguration heraus gute Scores 
bei &lt;a href=&quot;http://developers.google.com/speed/pagespeed/insights/&quot; title=&quot;Google PageSpeed&quot;&gt;PageSpeed&lt;/a&gt; zu bekommen. Sie greifen den grundlegenden Mechanismus des Browsercachings nicht auf.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;Die Gründe für derartige Designlücken sind mir nicht bekannt. Offenbar ist Frontendperformance für viele Leute nicht so wichtig. Es kann auch sein, dass wegen der gesteigerten Komplexität von der Umsetzung abgesehen wird.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;Für mich persönlich haben Effizienz und Zuverlässigkeit die 
höchste Priorität. Der Funktionsumfang ist zweitrangig.&lt;/p&gt; 
&lt;h4&gt;Varnish mit synthetischem Last-Modified-Header&lt;/h4&gt; 
&lt;p&gt;Varnish kann man einen Last-Modified-Header zur Backendantwort hinzufügen lassen, um so für die Zeit, in der das jeweilige Objekt im Cache von Varnish liegt, Browsercache mit Nachfrage zu unterstützen.&lt;/p&gt; 
&lt;pre&gt;sub vcl_fetch {
    if (!beresp.http.last-modified) {
        set beresp.http.Last-Modified = beresp.http.date;
    }
}
&lt;/pre&gt; 
&lt;p&gt;Varnish bügelt damit etwas aus, was in der Applikation vernachlässigt wurde. Probiert es einfach mal aus. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Munin: Monitoring von Details</title>
    <link>https://gnuheidix.de/archives/42-Munin-Monitoring-von-Details.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:71 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; src=&quot;https://gnuheidix.de/uploads/system-monitor.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;Zur Überwachung meiner Server nutze ich das Monitoring-Werkzeug &lt;a href=&quot;http://munin-monitoring.org/&quot; title=&quot;externer Link&quot;&gt;Munin&lt;/a&gt;, um wichtige Statusindikatoren kontinuierlich aufzuzeichnen und die Entwicklung der Werte jederzeit einsehen zu können. Zwischenzeitlich habe ich eine recht hohe Detailstufe erreicht.&lt;br /&gt;&lt;/p&gt;
&lt;h3&gt;Indikatoren &lt;br /&gt;&lt;/h3&gt; 
&lt;p&gt;&lt;a href=&quot;https://gnuheidix.de/uploads/munin-graphlist-overview.png&quot; class=&quot;serendipity_image_link&quot;&gt;&lt;!-- s9ymdb:98 --&gt;&lt;img width=&quot;17&quot; height=&quot;110&quot; alt=&quot;aktuelle Graphen-Liste&quot; src=&quot;https://gnuheidix.de/uploads/munin-graphlist-overview.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;&lt;/a&gt;Bei meinem Monitoring-Setup sind bei der Überwachung einer jeden Maschine bis zu vier unterschiedliche Indikatortypen vorzufinden.
&lt;/p&gt; 
&lt;h4&gt;Systemwerte&lt;/h4&gt; 
&lt;p&gt;Dies umfasst alles, was direkte Rückschlüsse auf den Status vom Betriebssystem mittels Prozessorlast, Hauptspeicherbelegung, Prozesse, Interrupts uvm. zulässt. Subsysteme wie Dateisysteme und Netzwerkkommunikation sind da auch dabei.&lt;/p&gt; 
&lt;h4&gt;Angebotene Dienste&lt;/h4&gt; 
&lt;p&gt;Jeder bereitgestellte Dienst hat potentiell unterschiedliche Eckpunkte, welche Überwachung erfordern. Bei Webservern bieten sich z.B. Logfiles, Workerinformationen, Requestraten, Request-RTTs, Netzlast usw. an. Bei Mailservern sind hingegen die unterschiedlichen Queues, Greylisting-Treffer, Eingeloggte Nutzer usw. interessant.&lt;/p&gt; 
&lt;h4&gt;Applikationen&lt;/h4&gt; 
&lt;p&gt;Dies ist die höchste Flughöhe. Es werden immer wieder Interaktionen aus Nutzersicht nachgestellt und geprüft. Dies umfasst z.B. den HTTP-Responsecode [&lt;a href=&quot;https://github.com/munin-monitoring/contrib/blob/master/plugins/http/http_responsecode&quot; title=&quot;Github-Repository&quot;&gt;Munin-Plugin&lt;/a&gt;] aller Website-Homepages, deren Ladezeit und deren Google PageSpeed-Werte.&lt;/p&gt; 
&lt;p&gt;Besonders interessant ist dabei die Auswertung von Google PageSpeed [&lt;a href=&quot;https://github.com/munin-monitoring/contrib/blob/master/plugins/http/http_pagespeed&quot; title=&quot;Github-Repository&quot;&gt;Munin-Plugin&lt;/a&gt;]. Einen besseren Test gibt es in der Tat fast nicht. Die Sites werden periodisch von einem externen System abgefragt und analysiert. Selbstanalysen, wie es die bisherigen Indikatoren waren, sind zwar gut, helfen aber bei der Erkennung von externen Problemen, wie Routingfehlern, nicht. Wenn es ein externes System schafft, die eigene Applikation zu verwenden, dann ist die Chance sehr sehr hoch, dass es die Nutzer auch können.&lt;br /&gt;&lt;/p&gt; 
&lt;h4&gt;Externe Dienste&lt;/h4&gt; 
&lt;p&gt;Da ohne essentielle Dienste, wie DNS und NTP nichts sauber arbeitet, ist auch an dieser Stelle ein wenig Überwachung notwendig. So ist man in der Lage, extern verursachte Applikationsausfälle schneller eingrenzen zu können.&lt;/p&gt; 
&lt;h3&gt;Benutzung&lt;/h3&gt; 
&lt;p&gt; &lt;a href=&quot;https://gnuheidix.de/uploads/munin-graphs-sample.png&quot; title=&quot;ein kleiner Bereich aus dem Munin-Overview&quot; class=&quot;serendipity_image_link&quot;&gt;&lt;!-- s9ymdb:99 --&gt;&lt;img width=&quot;68&quot; height=&quot;110&quot; alt=&quot;Graphen-Auszug&quot; title=&quot;ein kleiner Bereich aus dem Munin-Overview&quot; src=&quot;https://gnuheidix.de/uploads/munin-graphs-sample.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;&lt;/a&gt;Wenn das Monitoring erst einmal ein paar Wochen gelaufen ist, erkennt man im Muster der Graphen, wie sich Nutzerzahlen zu unterschiedlichen Tageszeiten und andere Ereignisse auf die einzelnen Teilbereiche auswirken. Beispielsweise erkennt man, was z.B. das tägliche Backup, eine Konfigurationsänderung oder ein neuer Blogbeitrag für das System bedeutet.&lt;/p&gt; 
&lt;p&gt;Wenn man z.B. einen Blogbeitrag schreibt, vertwittert und dann auf einmal das Monitoring meldet, dass der Webserver sporadisch 500er rausgibt, der PageSpeed-Score sinkt und Datenbanken am Limit sind, weiß man, wo man als nächstes mit dem Hammer nacharbeiten muss, um ein optimal laufendes System für den zu erfüllenden Zweck zu haben.&lt;/p&gt; 
&lt;h3&gt;Ausblick&lt;/h3&gt; 
&lt;p&gt;Als nächstes habe ich vor, das Alerting auszubauen und für jeden Indikator Limits festzulegen. Munin hebt dann bei einer Limitüberschreitung den jeweiligen Graph hervor und erklärt in der Detailansicht, was wie weit überschritten wurde. Beispielsweise triggert die Verfügbarkeit von Updates bereits jetzt eine Warnung, welche mich darauf hinweist, dass ich reagieren muss.&lt;/p&gt; 
&lt;p&gt;Es gibt viele Leute, die sich für sowas E-Mails senden lassen, aber - ganz ehrlich - E-Mail ist nicht das passende Werkzeug für sowas. Was, wenn ein DNS ausfällt, alle Limits auf einmal überschritten werden und das System tausende Problemmails rauspumpt. Nicht nur fängt man sich bei sowas die Pole-Position in Spamblacklists ein, man hat auch keinen Überblick drüber, was alles wann kaputt ging.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;Eine Alert-Historie hat Munin noch nicht so richtig, aber die Erweiterung ist, soweit ich weiß, in der Pipeline. Ich setze übrigens noch die Version 1.4.x ein, obwohl es bereits 2.x gibt. Ein Upgrade wird bei nächsten Betriebssystemupgrade fällig.&lt;/p&gt; 
&lt;h4&gt;Infrastruktur-Graphen&lt;/h4&gt; 
&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/loads-day.png&quot;&gt;&lt;!-- s9ymdb:100 --&gt;&lt;img width=&quot;110&quot; height=&quot;69&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/loads-day.serendipityThumb.png&quot; alt=&quot;systemübergreifende CPU loads&quot; /&gt;&lt;/a&gt;Angefangen habe ich nun auch, Graphen erzeugen zu lassen, die Indikatoren mehrerer unterschiedlicher Maschinen zusammen anzeigt. Wenn man weiß, wie es geht, ist es einfach. In der Anleitung gibt es einen &lt;a title=&quot;Munin-Manual&quot; href=&quot;http://munin.readthedocs.org/en/latest/example/graph/aggregate.html&quot;&gt;hervorragenden Eintrag&lt;/a&gt; hierfür.&lt;/p&gt; 
&lt;h3&gt;Fazit&lt;/h3&gt; 
&lt;p&gt;Es gibt immer etwas, was noch kein Monitoring hat. Sobald man ein Problem gelöst hat, sollte man überlegen, ob man es mit etwas mehr Monitoring schneller hätte eingrenzen können. Es ist meines Erachtens besser, erst einmal alles aufzuzeichnen. Verwerfen kann man unwichtige Daten durch umfassende Health-Report-Graphen immernoch.&lt;/p&gt; 
&lt;p&gt;Wenn man es auf die Spitze treibt, hat man nur noch eine Art Lampe, die sagt, ob alles i.O. ist. Besonders beim Treffen &lt;a href=&quot;http://makeitso.gnuheidix.de/&quot;&gt;wichtiger Entscheidungen&lt;/a&gt;, ist das hilfreich. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
&lt;h3&gt;Nachtrag&lt;/h3&gt; 
&lt;p&gt;17.02.2014: Nach erneutem Lesen der Dokumentation von Munin, habe ich herausgefunden, dass es nicht geplant ist, eine Alerthistorie zu implementieren. Die Designentscheidung hingegen ist, dass Alerts an externe Programme, wie Nagios, weitergereicht werden, weil diese dafür spezialisiert sind. Gute Entscheidung!&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
    </description>
</item>
<item>
    <title>LCA2014: Aufzeichnungen interessanter Vorträge</title>
    <link>https://gnuheidix.de/archives/41-LCA2014-Aufzeichnungen-interessanter-Vortraege.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:97 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/Internet-group-chat.serendipityThumb.png&quot; /&gt;Die &lt;a href=&quot;http://linux.conf.au/&quot;&gt;linux.conf.au&lt;/a&gt;, welche eine der größten Linux-Konferenzen ist, fand diese Woche statt. Es gab eine Menge sehr guter Vorträge, welche nicht immer mit Linux zu tun hatten. Einige schöne habe ich gemirrort.
&lt;/p&gt;
&lt;h3&gt;Linux Filesystems: Where did they come from&lt;/h3&gt; &lt;video id=&quot;videoFilesystems&quot; class=&quot;serendipity_image_left&quot; poster=&quot;/uploads/tango-movie.serendipityThumb.png&quot; preload=&quot;none&quot;&gt; &lt;source type=&quot;video/mp4&quot; src=&quot;https://gnuheidix.de/files/videos/47-Linux_Filesystems_Where_did_they_come_from_-_Dave_Chinner.mp4&quot; /&gt; 
&lt;p&gt;&lt;a href=&quot;https://gnuheidix.de/files/videos/47-Linux_Filesystems_Where_did_they_come_from_-_Dave_Chinner.mp4&quot;&gt;Video ansehen&lt;/a&gt;&lt;/p&gt; &lt;/video&gt; 
&lt;p&gt;
Der XFS-Entwickler Dave Chinner fasst sehr schön die &lt;a class=&quot;videoskip&quot; data-timeoffset=&quot;383&quot; href=&quot;#videoFilesystems&quot;&gt;Geschichte der Dateisystemtechnologien&lt;/a&gt; zusammen. Außerdem geht er auf &lt;a class=&quot;videoskip&quot; data-timeoffset=&quot;1450&quot; href=&quot;#videoFilesystems&quot;&gt;Featurehistorie und unterschiedliche Entwicklungsstile&lt;/a&gt; der heutzutage wichtigen Linux-Dateisysteme ein.
&lt;/p&gt; 
&lt;p&gt;
Die Entwicklungsstile sind echt klasse illustriert. Die einen bauen tendenziell immer dazu und dazu und die anderen räumen auch mal komplett um und auf. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/laugh.png&quot; alt=&quot;:-D&quot; class=&quot;emoticon&quot; /&gt;
&lt;/p&gt; 
&lt;h3&gt;Testing for Accessibility&lt;/h3&gt; &lt;video id=&quot;videoAccessibility&quot; class=&quot;serendipity_image_left&quot; poster=&quot;/uploads/tango-movie.serendipityThumb.png&quot; preload=&quot;none&quot;&gt; &lt;source type=&quot;video/mp4&quot; src=&quot;https://gnuheidix.de/files/videos/115-Testing_for_Accessibility_-_Alice_Boxhall.mp4&quot; /&gt; 
&lt;p&gt;&lt;a href=&quot;https://gnuheidix.de/files/videos/115-Testing_for_Accessibility_-_Alice_Boxhall.mp4&quot;&gt;Video ansehen&lt;/a&gt;&lt;/p&gt; &lt;/video&gt; 
&lt;p&gt;
Alice Boxhall erklärt die &lt;a class=&quot;videoskip&quot; data-timeoffset=&quot;72&quot; href=&quot;#videoAccessibility&quot;&gt;Hintergründe von Barrierefreiheit&lt;/a&gt; im Web und führt &lt;a class=&quot;videoskip&quot; data-timeoffset=&quot;697&quot; href=&quot;#videoAccessibility&quot;&gt;Maßnahmen&lt;/a&gt; und &lt;a class=&quot;videoskip&quot; data-timeoffset=&quot;1429&quot; href=&quot;#videoAccessibility&quot;&gt;Tests&lt;/a&gt; auf, die man bei der Entwicklung von Webanwendungen beachten sollte.
&lt;/p&gt; 
&lt;p&gt;
Es ist erstaunlich, was man alles übersehen und falsch machen kann. Die im Vortrag erwähnten &lt;a class=&quot;videoskip&quot; data-timeoffset=&quot;1830&quot; href=&quot;#videoAccessibility&quot;&gt;Entwicklertools&lt;/a&gt; habe ich direkt installiert und über dieses Blog eiern lassen. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt; 
&lt;/p&gt; 
&lt;h3&gt;TCP Tuning for the Web&lt;/h3&gt; &lt;video id=&quot;videoTCP&quot; class=&quot;serendipity_image_left&quot; poster=&quot;/uploads/tango-movie.serendipityThumb.png&quot; preload=&quot;none&quot;&gt; &lt;source type=&quot;video/mp4&quot; src=&quot;https://gnuheidix.de/files/videos/118-TCP_Tuning_for_the_Web_-_Jason_Cook.mp4&quot; /&gt; 
&lt;p&gt;&lt;a href=&quot;https://gnuheidix.de/files/videos/118-TCP_Tuning_for_the_Web_-_Jason_Cook.mp4&quot;&gt;Video ansehen&lt;/a&gt;&lt;/p&gt; &lt;/video&gt; 
&lt;p&gt;
Jason Cook arbeitet beim Content Delivery Network fastly und erklärt, was an vorderster Front arbeitende Server &lt;a class=&quot;videoskip&quot; data-timeoffset=&quot;107&quot; href=&quot;#videoTCP&quot;&gt;die ganze Zeit&lt;/a&gt; tun, wenn sie unter Feuer stehen und wie man sie auf Kernellevel so konfiguriert, dass sie sich selbst so wenig wie möglich im Weg sind.
&lt;/p&gt; 
&lt;p&gt;
Ich finde es äußerst fesselnd, wie Jason unglaublich viele Aspekte anspricht und Lösungsmöglichkeiten aufzeigt. Leute, die hauptberuflich als Administrator im Webbereich arbeiten, werden diesen Vortrag lieben. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;
&lt;/p&gt; 
&lt;h3&gt;Synchronous Replication Even Across Datacentres&lt;/h3&gt; &lt;video id=&quot;videoReplication&quot; class=&quot;serendipity_image_left&quot; poster=&quot;/uploads/tango-movie.serendipityThumb.png&quot; preload=&quot;none&quot;&gt; &lt;source type=&quot;video/mp4&quot; src=&quot;https://gnuheidix.de/files/videos/48-Synchronous_Replication_Even_Across_Datacentres_-_Arjen_Lentz.mp4&quot; /&gt; 
&lt;p&gt;&lt;a href=&quot;https://gnuheidix.de/files/videos/48-Synchronous_Replication_Even_Across_Datacentres_-_Arjen_Lentz.mp4&quot;&gt;Video ansehen&lt;/a&gt;&lt;/p&gt; &lt;/video&gt; 
&lt;p&gt;
Arjen Lentz zeigt, wie man Datenbanken über Rechenzentrumsgrenzen hinweg repliziert und die Applikation ausfallsicher macht. Dabei geht er auf verschiedene &lt;a class=&quot;videoskip&quot; data-timeoffset=&quot;435&quot; href=&quot;#videoReplication&quot;&gt;Replikationsarten&lt;/a&gt; ein. Kern des Vortrags ist die Funktionsweise von &lt;a class=&quot;videoskip&quot; data-timeoffset=&quot;709&quot; href=&quot;#videoReplication&quot;&gt;Galera in MariaDB&lt;/a&gt; auf hohem Detailgrad. Außerdem gibt er Hinweise, was man bei der &lt;a class=&quot;videoskip&quot; data-timeoffset=&quot;1740&quot; href=&quot;#videoReplication&quot;&gt;Umstellung&lt;/a&gt; beachten sollte.
&lt;/p&gt; 
&lt;p&gt;Ich finde es interessant zu sehen, wie Datenbanken &lt;em&gt;ernsthaft&lt;/em&gt; eingesetzt werden. So heißen Scheiß habe ich bisher nicht gemacht, aber es ist gut zu Wissen, wie man sowas richtig macht. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
&lt;h3&gt;A web page in seven syscalls&lt;/h3&gt; &lt;video id=&quot;videoVarnish&quot; class=&quot;serendipity_image_left&quot; poster=&quot;/uploads/tango-movie.serendipityThumb.png&quot; preload=&quot;none&quot;&gt; &lt;source type=&quot;video/mp4&quot; src=&quot;https://gnuheidix.de/files/videos/99-A_web_page_in_seven_syscalls_-_Tollef_Fog_Heen.mp4&quot; /&gt; 
&lt;p&gt;&lt;a href=&quot;https://gnuheidix.de/files/videos/99-A_web_page_in_seven_syscalls_-_Tollef_Fog_Heen.mp4&quot;&gt;Video ansehen&lt;/a&gt;&lt;/p&gt; &lt;/video&gt; 
&lt;p&gt;
Tollef Fog Heen ist Varnish-Entwickler und erklärt detailliert, was &lt;a class=&quot;videoskip&quot; data-timeoffset=&quot;374&quot; href=&quot;#videoVarnish&quot;&gt;Varnish&lt;/a&gt; ist, wie er funktioniert und wie man ihn mit den mitgelieferten Werkzeugen administriert.
&lt;/p&gt; 
&lt;p&gt;Mein Blog hier nutzt Varnish und ich betrachte ihn als eine der zur Zeit wichtigsten serverseitigen Technologien von heutigen Webapplikationen. &lt;a class=&quot;videoskip&quot; data-timeoffset=&quot;1820&quot; href=&quot;#videoVarnish&quot;&gt;Speeeed!&lt;/a&gt; &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
&lt;h3&gt;Raspberry Pi Hacks: Building Great Pi Projects&lt;/h3&gt; &lt;video id=&quot;videoRaspberry&quot; class=&quot;serendipity_image_left&quot; poster=&quot;/uploads/tango-movie.serendipityThumb.png&quot; preload=&quot;none&quot;&gt; &lt;source type=&quot;video/mp4&quot; src=&quot;https://gnuheidix.de/files/videos/102-Raspberry_Pi_Hacks_Building_Great_Pi_Projects_-_Ruth_Suehle_and_Tom_Callaway.mp4&quot; /&gt; 
&lt;p&gt;&lt;a href=&quot;https://gnuheidix.de/files/videos/102-Raspberry_Pi_Hacks_Building_Great_Pi_Projects_-_Ruth_Suehle_and_Tom_Callaway.mp4&quot;&gt;Video ansehen&lt;/a&gt;&lt;/p&gt; &lt;/video&gt; 
&lt;p&gt;
Ruth Suehle und Tom Callaway haben ein Buch über mögliche Einsatzgebiete des Raspberry Pi geschrieben und geben einige ihrer Erfahrungen auf äußerst &lt;a class=&quot;videoskip&quot; data-timeoffset=&quot;324&quot; href=&quot;#videoRaspberry&quot;&gt;erfrischende Art&lt;/a&gt; zum besten. Tom stellt unter anderem klar, dass die &lt;a class=&quot;videoskip&quot; data-timeoffset=&quot;1149&quot; href=&quot;#videoRaspberry&quot;&gt;Stromversorgung&lt;/a&gt; den größten Ärger macht.
&lt;/p&gt; 
&lt;p&gt;Auch ich hatte bei meinem eigenen Raspberry Pi damit Schwierigkeiten. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
&lt;h3&gt;Zusammenfassung&lt;/h3&gt; 
&lt;p&gt;
Auch wenn ich nicht alle Aufzeichnungen gesehen habe, kann ich sagen, dass es wieder eine äußerst lehrreiche Konferenz war. Wenn Du die anderen Mitschnitte willst, musst Du nach &lt;a href=&quot;http://mirror.linux.org.au/linux.conf.au/2014/&quot;&gt;Australien&lt;/a&gt;, was zeitweise sehr langsam ist. 
&lt;/p&gt; 
&lt;p&gt;
Ich habe absichtlich HTML5-Video für die Einbindung eingesetzt und hoffe, dass es ausreichend gut funktioniert. Hinterlass einfach einen Kommentar, wenn es Probleme macht. Oh, hoffentlich habe ich ausreichend wenig Besucher auf diesem Blog, sodass mein Traffickontingent nicht überzogen wird. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/laugh.png&quot; alt=&quot;:-D&quot; class=&quot;emoticon&quot; /&gt;
&lt;/p&gt; 
    </description>
</item>
<item>
    <title>PHP: Versionsunterschiede mit Travis CI erkennen</title>
    <link>https://gnuheidix.de/archives/40-PHP-Versionsunterschiede-mit-Travis-CI-erkennen.html</link>

    <description>
        &lt;!-- s9ymdb:94 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; src=&quot;https://gnuheidix.de/uploads/travis-logo-php.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;Die Unterschiede zwischen den Versionen der PHP-Laufzeitumgebung sind erheblich. Dies kann man den &lt;a title=&quot;PHP5 Changelog&quot; href=&quot;http://php.net/ChangeLog-5.php&quot;&gt;Release Notes&lt;/a&gt; leicht entnehmen. Um die Auswirkungen einer Umstellung auf die eigene Applikation klar abgrenzen zu können, bedarf es Tests.&lt;br /&gt;
&lt;p&gt;Normalerweise rollt man ein Versionsupgrade erst schrittweise auf Entwicklungs-, Test- und Stagesystemen aus. Neben den notwendigen Anpassungen sind dann parallel sämtliche Test-Suites und am Ende ein manueller Systemtest zu fahren. Dies beeinträchtigt die reguläre Arbeitsgeschwindigkeit erheblich, bis das Upgrade überall durchgeführt wurde.&lt;br /&gt;&lt;/p&gt; 
&lt;h3&gt;Continuous Integration&lt;/h3&gt; 
&lt;p&gt;Wenn &lt;a href=&quot;http://en.wikipedia.org/wiki/Continuous_integration&quot; title=&quot;Wikipedia-Link&quot;&gt;Continuous Integration&lt;/a&gt; (CI) ein Bestandteil des gelebten Softwareentwicklungsprozesses darstellt, ist es ein unverzichtbares Instrument zur Sicherstellung der Softwarequalität.&lt;/p&gt; 
&lt;p&gt;Fakt ist, dass man nur in seltenen Fällen während einer solchen Aktion die reguläre Entwicklungsarbeit einstellen kann, was zur Folge hat, dass man sich nicht leisten kann, dass das CI-System für längere Zeit nicht mit Stage- bzw. Produktionsparametern betrieben wird.&lt;/p&gt; 
&lt;p&gt;Man kann aber das CI-System so umbauen, dass es beide Laufzeitumgebungen abdeckt.&lt;/p&gt; 
&lt;h3&gt;Travis CI&lt;/h3&gt; 
&lt;p&gt;Mittels &lt;a title=&quot;externer Link&quot; href=&quot;http://about.travis-ci.org/&quot;&gt;Travis CI&lt;/a&gt; kann man in wenigen Klicks ein Repository bei &lt;a title=&quot;externer Link&quot; href=&quot;https://github.com/&quot;&gt;Github&lt;/a&gt; um ein vollwertiges CI-System erweitern. Man braucht lediglich eine &lt;a title=&quot;aus einem meiner Projekte&quot; href=&quot;https://github.com/gnuheidix/api.piratenpartei-bw.de/blob/master/.travis.yml&quot;&gt;Konfigurationsdatei im Repository&lt;/a&gt; hinterlegen und schon kann man seine Test-Suites dort laufen lassen. Getriggert wird ein CI-Build unter anderem bei jedem Push, wenn man es nicht explizit im Commitkommentar unterdrückt. Selbst wenn mehrere Leute nahezu gleichzeitig pushen, werden alle Builds nacheinander erstellt und man kann Probleme &lt;a title=&quot;Buildübersicht von meinem Projekt api.piratenpartei-bw.de&quot; href=&quot;https://travis-ci.org/gnuheidix/api.piratenpartei-bw.de/builds&quot;&gt;komfortabel zurückverfolgen&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Man kann auch wunderbar konfigurieren, welche Versionen der PHP-Laufzeitumgebung bei der Builderstellung berücksichtigt werden sollen.&lt;/p&gt; 
&lt;h3&gt;Versionsunterschiede&lt;br /&gt;&lt;/h3&gt; 
&lt;p&gt;Zu Testzwecken habe ich mir ein &lt;a href=&quot;https://github.com/gnuheidix/php-test&quot; title=&quot;Github-Repository&quot;&gt;Github-Repository&lt;/a&gt; mit ein paar wenigen Tests zusammengesteckt und es auf alle aktuell von Travis-CI unterstützten PHP-Laufzeitumgebungen &lt;a href=&quot;https://travis-ci.org/gnuheidix/php-test/builds/16346197&quot; title=&quot;Ergebnis von Build #4&quot;&gt;losgelassen&lt;/a&gt;. Das Ergebnis kann man in der Ausgabe eines jeden Buildjobs - &lt;a title=&quot;externer Link&quot; href=&quot;https://travis-ci.org/gnuheidix/php-test/jobs/16346198&quot;&gt;5.2&lt;/a&gt;, &lt;a href=&quot;https://travis-ci.org/gnuheidix/php-test/jobs/16346199&quot;&gt;5.3&lt;/a&gt;, &lt;a href=&quot;https://travis-ci.org/gnuheidix/php-test/jobs/16346200&quot;&gt;5.4&lt;/a&gt;, &lt;a href=&quot;https://travis-ci.org/gnuheidix/php-test/jobs/16346201&quot;&gt;5.5&lt;/a&gt;, &lt;a href=&quot;https://travis-ci.org/gnuheidix/php-test/jobs/16346202&quot;&gt;HHVM 2.3&lt;/a&gt; - sehen.&lt;/p&gt; 
&lt;h4&gt;array_memory.php - 100.000 Arrayelemente&lt;br /&gt;&lt;/h4&gt; 
&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/array_memory.png&quot;&gt;&lt;!-- s9ymdb:95 --&gt;&lt;img width=&quot;110&quot; height=&quot;62&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/array_memory.serendipityThumb.png&quot; alt=&quot;Liniendiagramm array_memory&quot; /&gt;&lt;/a&gt;Es ist zu sehen, dass Speicherverbrauch und Ausführungszeit bei 5.2 im Gegensatz zu 5.3 bis 5.5 niedriger sind. 5.3 ist dort in beiden Fällen eindeutig am schlechtesten. HHVM gibt für die 100.000 Nullerelemente keinen signifikanten Speicherverbrauch aus, braucht aber knapp das Doppelte an Ausführungszeit. Für dieses triviale Beispiel hat HHVM offenbar noch nicht die notwendige Betriebstemperatur erreichen können. Den Speicherverbrauch würde ich nur mit Vorsicht genießen.&lt;/p&gt; 
&lt;p&gt;Ich vermute stark, dass bei HHVM die Speicherverwaltung effizienter als beim regulären PHP gestaltet ist, was eine echte Wohltat wäre. 100.000 Arrayelemente mit jeweils dem Integerwert 0 sind beim regulären PHP mit um die 14 MB echt eine Menge Holz. Bevor man sowas einem einem Embedded-Entwickler zeigt, sollte man in Deckung gehen.&lt;/p&gt; 
&lt;h4&gt;binarytrees.php&lt;/h4&gt; 
&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/benchsmarksgame.png&quot;&gt;&lt;!-- s9ymdb:96 --&gt;&lt;img width=&quot;110&quot; height=&quot;62&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/benchsmarksgame.serendipityThumb.png&quot; alt=&quot;Liniendiagramm binarytrees.php&quot; /&gt;&lt;/a&gt;Ich habe mich wieder mal beim &lt;a href=&quot;http://benchmarksgame.alioth.debian.org/u64/program.php?test=binarytrees&amp;amp;lang=php&amp;amp;id=3&quot; title=&quot;externer Link&quot;&gt;Benchmarks Game&lt;/a&gt; bedient, um einen kleinen aber schweren Algorithmus im Bezug auf Prozessor- und Speicherlast zu haben. PHP 5.3 ist wieder der ultimative Verlierer und 5.2 steht verhältnismäßig gut da. HHVM kann seine Stärken voll ausspielen und es zeigt sich, dass bei einem genügend komplexen Algorithmus der Overhead vom JIT irrelevant wird.&lt;br /&gt;&lt;/p&gt; 
&lt;h3&gt;Fazit&lt;/h3&gt; 
&lt;p&gt;Grundlegendes Monitoring von Rahmenparametern ist beim Fahren von Tests ratsam. So kann man beispielsweise auch schnell auf einen Performanceeinbruch, verursacht durch beispielsweise ein Datenbankupgrade oder eine frisch hinzugekommene zu teure Abfrage, hingewiesen werden.&lt;/p&gt; 
&lt;p&gt;Man sieht bei PHP klar, dass dessen Featureerweiterungen von 5.2 auf 5.3 Nachteile im Ressourcenverbrauch nach sich zogen, welche man in 5.4 und 5.5 versuchte wieder zu glätten. &lt;a title=&quot;externer Link&quot; href=&quot;http://www.hhvm.com/&quot;&gt;HHVM&lt;/a&gt; stellt meines Erachtens für PHP langfristig gesehen die Zukunft dar. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Ubuntu 12.04: Featured Bugs</title>
    <link>https://gnuheidix.de/archives/39-Ubuntu-12.04-Featured-Bugs.html</link>

    <description>
        &lt;!-- s9ymdb:93 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; src=&quot;https://gnuheidix.de/uploads/list-task-due.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;Meinen vServer betreibe ich mit der aktuellen Version von Ubuntu Server LTS. Damit nicht noch jemand anders über die darin enthaltenen Bugs stolpert, habe ich hier ein Liste angefangen.&lt;br /&gt;
&lt;p&gt;Ich habe das Gefühl, dass nun weniger unkritische Bugs in der aktuell laufenden Version 12.04 gefixt werden. Vermutlich hängt es damit zusammen, dass die neue LTS-Version 14.04 schon in greifbarer Nähe ist. Die folgenden Bugs haben mich selbst betroffen. Sollte ich auf weitere stoßen, werde ich diese Liste erweitern.&lt;br /&gt;&lt;/p&gt; 
&lt;h3&gt;&lt;a title=&quot;Link zum Ubuntu-Bugtacker&quot; href=&quot;https://bugs.launchpad.net/ubuntu/+source/logwatch/+bug/1058760&quot;&gt;#1058760 - Logwatch: unmatched entries for dovecot login&lt;/a&gt;&lt;/h3&gt; 
&lt;p&gt;Ich lasse mir wöchentlich die Zusammenfassung aller Logfiles per E-Mail senden, um eine Dokumentation des Systemstatuses zu haben und Probleme zurückverfolgen zu können. Dovecot loggt unter anderem alle Loginvorgänge. Logwatch kommt mit diesem Format nicht zurecht und verzeichnet jeden normalen Loginvorgang hervorgehoben als unbekannten Eintrag. Alleine mein Telefon ruft stündlich E-Mails ab und das macht die Zusammenfassung unnötig lang und unübersichtlich.&lt;/p&gt; 
&lt;h3&gt;&lt;a title=&quot;Link zum Ubuntu-Bugtacker&quot; href=&quot;https://bugs.launchpad.net/ubuntu/+source/munin/+bug/1210936&quot;&gt;#1210936 - Munin: Warnings in munin-graph.log during each graph rendering run&lt;/a&gt;&lt;/h3&gt; 
&lt;p&gt;Als Monitoring-Werkzeug setze ich Munin ein. Eine Ungenauigkeit in der Programmierung erzeugt Warnungen im Log, welche einfach nicht sein müssen.&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;https://bugs.launchpad.net/ubuntu/+source/munin/+bug/1052815&quot; title=&quot;Link zum Ubuntu-Bugtacker&quot;&gt;#1052815 - Munin: users plugin throws warnings&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt; Im Munin-Plugin users, welches Art und Anzahl der eingeloggten Betriebssystembenutzer auswertet, wird ein veralteter Programmierstil verwendet, welches mit der nun eingesetzten Version von Perl nicht mehr zusammenpasst.&lt;br /&gt;&lt;/p&gt; 
&lt;h3&gt;Fazit&lt;/h3&gt; 
&lt;p&gt;Laut &lt;a href=&quot;https://wiki.ubuntu.com/LTS&quot; title=&quot;externer Link&quot;&gt;Ubuntu LTS-Dokumentation&lt;/a&gt; wird 12.04 bis Oktober 2017 gepflegt. Obwohl es bald etwas Neues gibt, sollten meines Erachtens auch Unsauberkeiten angegangen werden. Ich mag einfach Systeme, die absolut einwandfrei arbeiten.&lt;/p&gt; 
&lt;p&gt;Software ist wie in Fässern gelagerter Whiskey, je älter, desto besser. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
    </description>
</item>
<item>
    <title>Markenrecht: Canonical mahnt ab</title>
    <link>https://gnuheidix.de/archives/38-Markenrecht-Canonical-mahnt-ab.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:91 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/font-generic.serendipityThumb.png&quot; /&gt;Seitdem dieses Blog existierte, setzte ich als Schriftart stets die &lt;a href=&quot;http://font.ubuntu.com/&quot; title=&quot;externer Link&quot;&gt;Ubuntu Font Family&lt;/a&gt; ein. Heute habe ich das geändert.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; title=&quot;vorher&quot; href=&quot;https://gnuheidix.de/uploads/blog-ubuntu-font.jpg&quot;&gt;&lt;!-- s9ymdb:92 --&gt;&lt;img width=&quot;110&quot; height=&quot;30&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/blog-ubuntu-font.serendipityThumb.jpg&quot; title=&quot;vorher&quot; alt=&quot;Blog mit Ubuntuschrift&quot; /&gt;&lt;/a&gt;Die Ubuntu-Schrift finde ich erfrischend und passend für mein Blog. Die Firma Canonical, welche hinter Ubuntu steht, hat heute mit jemandem &lt;a href=&quot;http://www.golem.de/news/fix-ubuntu-canonical-setzt-marke-gegen-kritische-webseite-ein-1311-102640.html&quot; title=&quot;externer Link&quot;&gt;Streit angefangen&lt;/a&gt;, weil das Logo in einem &lt;a href=&quot;https://fixubuntu.com/&quot; title=&quot;externer Link&quot;&gt;unpassenden Kontext&lt;/a&gt; eingesetzt wurde. Mir widerstrebt das Verhalten von Canonical und als Konsequenz habe ich die Schrift entfernt. Wenn ich also nun hier &amp;quot;Ubuntu&amp;quot; schreibe, bin ich vor diesem rechtlichen Logo-Angriff sicher.&lt;/p&gt; 
&lt;p&gt;Auf meiner Sympathiepunkteskala bewegt sich Canonical mit hoher Geschwindigkeit in Richtung Apple. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/sad.png&quot; alt=&quot;:-(&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Performance: Der Weg zu Lasttests</title>
    <link>https://gnuheidix.de/archives/37-Performance-Der-Weg-zu-Lasttests.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:87 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/tango-statistics.serendipityThumb.png&quot; /&gt;Überraschungen sind beim Betrieb einer Webapplikation unerwünscht und deshalb ist es unter anderem gut zu wissen, wie viel sie aushält. &lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Mit dieser Information kann man dann entscheiden, ob das für den jeweiligen Zweck ausreichend ist, oder ob man die Performance noch weiter optimieren muss. Besonders nachdem man Änderungen vorgenommen hat, sollte ein Lasttest gefahren werden, um zu sehen, ob sich das System diesbezüglich verschlechtert hat.&lt;/p&gt; 
&lt;h3&gt;Brot und Butter&lt;/h3&gt; 
&lt;p&gt;All das, was eine Applikation sehr oft machen muss, hat so wenig Ressourcen wie nur irgend möglich zu verbrauchen. Beispielsweise bei einem Blog muss das Aufrufen von Beiträgen flutschen, damit im Ernstfall hohe Zugriffszahlen bewältigt werden können. Das Erstellen von Kommentaren ist im Vergleich äußerst selten, wodurch man dort nicht so viel Zeit investieren muss.&lt;/p&gt; 
&lt;p&gt;Wenn die Webapplikation nicht trivial ist, sollte man prüfen, wie sich die meisten Benutzer verhalten. So kann man herausfinden, wo sich Optimierungen am meisten lohnen würden.&lt;/p&gt; 
&lt;h3&gt;Do it yourself&lt;br /&gt;&lt;/h3&gt; 
&lt;p&gt;Es gibt eine Menge Werkzeuge, die einem beim Erzeugen von Last unterstützen. Diese können aber nur dann aussagekräftige Ergebnisse liefern, wenn man sie unter Rahmenbedingungen einsetzt, die der realen Nutzung entsprechen.&lt;/p&gt; 
&lt;p&gt;Folgendes ist zu beachten: &lt;br /&gt;&lt;/p&gt; 
&lt;ol&gt; 
&lt;li&gt;Wenn man von Daheim aus Tests durchführt, kann die eigene Internetverbindung eher ausgelastet sein, als das unter Feuer zu nehmende Zielsystem.&lt;/li&gt; 
&lt;li&gt;Wenn man direkt gegen das Produktionssystem testet, darf man sich bei dessen Ausfall nicht beschweren. Ein Testsystem mit einer möglichst der Produktionsumgebung entsprechenden Hardware, Anbindung und einem repräsentativen Datenbestand ist erforderlich.&lt;/li&gt; 
&lt;li&gt;Wenn man das zu testende System über das Loopback-Interface sich selbst belasten lässt, fehlt ein erheblicher Teil der Realität bei der Netzwerkkommunikation. Paketlaufzeiten, das Verlorengehen von Paketen und das lange Offenhalten von Verbindungen langsamer weit entfernter Clients; Weiter verfälscht man das Ergebnis, weil die Lasterzeugung selbst auch Last erzeugt.&lt;br /&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h4&gt;Siege&lt;/h4&gt; 
&lt;p&gt;Mit &lt;a title=&quot;externer Link&quot; href=&quot;http://www.joedog.org/siege-home/&quot;&gt;Siege&lt;/a&gt; kann man zusammenhanglose GET und POST HTTP-Anfragen absetzen. Externe Ressourcen wie Bilder usw. werden dabei nicht nachgeladen. Mit dem folgenden Befehl wird beispielsweise die Startseite dieses Blogs von 50 simulierten Benutzern abgefragt und dies für zehn Sekunden lang mit jeweils einer Sekunde Wartezeit zwischen der jeweiligen Benutzerabfrage.&lt;/p&gt; 
&lt;pre&gt;$ siege http://gnuheidix.de/ -d1 -c50 -t10s
** SIEGE 3.0.5
** Preparing 50 concurrent users for battle.
The server is now under siege...
HTTP/1.1 200   0.04 secs:    3430 bytes ==&amp;gt; GET  /
HTTP/1.1 200   0.06 secs:    3430 bytes ==&amp;gt; GET  /
:
:
Lifting the server siege...      done.

Transactions:		         857 hits
Availability:		      100.00 %
Elapsed time:		        9.82 secs
Data transferred:	        2.80 MB
Response time:		        0.05 secs
Transaction rate:	       87.27 trans/sec
Throughput:		        0.29 MB/sec
Concurrency:		        4.78
Successful transactions:         857
Failed transactions:	           0
Longest transaction:	        0.15
Shortest transaction:	        0.04
&lt;/pre&gt; 
&lt;p&gt;
Die Auswertung des Testlaufs ist informativ, spiegelt aber wie gesagt nur die der Startseite alleine wider. Dies lässt dadurch keine Aussage über die Zugriffsfestigkeit zu. Dieser Test ergibt Sinn, wenn die abzufragende Seite bei jeder Anfrage on-the-fly gerendert wird und man wissen möchte, ab welcher Anzahl an gleichzeitigen Zugriffen dieser Prozess in die Knie geht.&lt;/p&gt; 
&lt;h4&gt;Apache JMeter&lt;/h4&gt; 
&lt;p&gt;Im Gegensatz zu Siege kann man sich bei &lt;a href=&quot;http://jmeter.apache.org/&quot; title=&quot;externer Link&quot;&gt;JMeter&lt;/a&gt; umfangreiche Testsuites zusammenklicken, bei denen einzelne Aufrufe voneinander abhängen und Prüfungen der Abfrageergebnisse durchgeführt werden. Die Bedienung ist entsprechend der vielen Möglichkeiten kompliziert. Die Hilfefunktion ist allerdings sehr ausführlich und verständlich.&lt;/p&gt; 
&lt;p&gt;Dave Gardner hat in seinem Blogbeitrag &lt;a title=&quot;externer Link&quot; href=&quot;http://www.davegardner.me.uk/blog/2010/09/23/effective-load-testing-with-apache-jmeter/&quot;&gt;Effective load testing with Apache JMeter&lt;/a&gt; gut beschrieben, wie man etwas mehr als nur einen &amp;quot;Hello World&amp;quot; HTTP-Request macht.&lt;/p&gt; 
&lt;h3&gt;Dienstanbieter&lt;/h3&gt; 
&lt;p&gt;Da nicht jeder eine gut angebundene Maschine hat, die zur Erzeugung der Last benutzt werden kann, wurden einige Plattformen entwickelt, die darauf spezialisiert sind, Last auf anderen Systemen zu erzeugen.&lt;/p&gt; 
&lt;p&gt;Last erzeugt man mit Netzwerktraffic und das kostet Geld. Die meisten Anbieter geben aber ein gewisses Monatskontingent frei.&lt;br /&gt;&lt;/p&gt; 
&lt;h4&gt;Blitz&lt;/h4&gt; 
&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/blitzioResult.jpg&quot;&gt;&lt;!-- s9ymdb:88 --&gt;&lt;img width=&quot;92&quot; height=&quot;110&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/blitzioResult.serendipityThumb.jpg&quot; alt=&quot;Ergebnisgraphen von Biltz&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://gnuheidix.de/uploads/blitzioReport.png&quot; class=&quot;serendipity_image_link&quot;&gt;&lt;!-- s9ymdb:89 --&gt;&lt;img width=&quot;55&quot; height=&quot;110&quot; alt=&quot;Blitz.io-Report&quot; src=&quot;https://gnuheidix.de/uploads/blitzioReport.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://gnuheidix.de/uploads/blitzio_multi_location.jpg&quot; title=&quot;Blitz Setup von mehreren Rechenzentren&quot; class=&quot;serendipity_image_link&quot;&gt;&lt;!-- s9ymdb:101 --&gt;&lt;img width=&quot;110&quot; height=&quot;105&quot; alt=&quot;Blitz Setup von mehreren Rechenzentren&quot; title=&quot;Blitz Setup von mehreren Rechenzentren&quot; src=&quot;https://gnuheidix.de/uploads/blitzio_multi_location.serendipityThumb.jpg&quot; class=&quot;serendipity_image_right&quot; /&gt;&lt;/a&gt;Bei &lt;a href=&quot;https://www.blitz.io/&quot; title=&quot;externer Link&quot;&gt;Blitz&lt;/a&gt; gibt man eine unter Last zu setzende URL mit ein paar Rahmenbedingungen wie Dauer, simulierter Benutzeranzahl, Anfragenherkunft, Ramp-Up usw. ein und schon bekommt man zwei schicke Graphen und einen kurzen Report über Fehler und Antwortzeiten. Blitz ist mit Siege vergleichbar. Es werden keine externen Ressourcen nachgeladen. Besonders praktisch finde ich, dass man sich von verschiedenen Rechenzentren aus unter Feuer nehmen lassen kann.&lt;/p&gt; 
&lt;h4&gt;Load Impact&lt;/h4&gt; 
&lt;p&gt;Etwas mehr als Blitz kann &lt;a href=&quot;https://loadimpact.com/&quot; title=&quot;externer Link&quot;&gt;Load Impact&lt;/a&gt;. Dort werden alle Ressourcen nachgeladen und man kann sich Benutzungsszenarios zusammenbauen. Dies kann man in einer Art Skript machen oder Klickpfade direkt im Browser aufzeichnen lassen. Es ist sogar möglich, die Anfragen aus Rechenzentren verschiedener Länder gleichzeitig kommen zu lassen. Am Ende gibt es einen &lt;a href=&quot;http://loadimpact.com/load-test/gnuheidix.de-b3f40251da7940d3c441366c31be45ca&quot; title=&quot;externer Link&quot;&gt;verlinkbaren Report&lt;/a&gt;. Die Möglichkeiten kommen zwar bei weitem nicht an JMeter heran, aber für die meisten Zwecke dürfte es ausreichen.&lt;/p&gt; 
&lt;h3&gt;Fazit&lt;/h3&gt; 
&lt;p&gt;Lasttests gehören einfach in den Entwicklungsprozess einer jeden guten Webapplikation. Dabei ist es egal, ob es ein Blog, ein Shop, eine Kommunikationsplattform oder ein API ist. Habt bei Euren Tests stets genügend Monitoring auf das zu testende System ausgerichtet, um herausfinden zu können, an welcher Stelle der Applikation Probleme auftauchen. Falls Ihr das nicht macht, ist die Findung von Verbesserungsansätzen reines Rätselraten. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
&lt;h4&gt;Nachtrag vom 04.01.2014&lt;/h4&gt; 
&lt;p&gt;Bei Blitz kann man nun bis zu vier URLs angeben, die beim Testlauf auch abgerufen werden sollen. So könnte man also im Falle eines Blogs die Startseite laden, einen Beitrag aufrufen und einen Kommentar schreiben. Auf einen sehr kurzen Report kann man sogar &lt;a href=&quot;https://www.blitz.io/report/69e9556e3d5438581cc0fe1efb052831&quot; title=&quot;Blitz Report&quot;&gt;verlinken&lt;/a&gt;. Dessen Informationsgehalt ist gering, aber zum Angeben reicht es. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/laugh.png&quot; alt=&quot;:-D&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
&lt;h4&gt;Nachtrag vom 09.08.2016&lt;/h4&gt; 
&lt;p&gt;Seit der Version 4.0.0 von Siege ist die Option &lt;em&gt;parser&lt;/em&gt; zur siegerc hinzugekommen. Diese standardmäßig aktivierte Funktionalität parst das geladene HTML und fügt nun auch Bilder, Stylesheets, Skripte,... mit zur Liste der URLs hinzu, die abfragt werden.&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Munin: Graph-Größen anpassen</title>
    <link>https://gnuheidix.de/archives/36-Munin-Graph-Groessen-anpassen.html</link>

    <description>
        &lt;!-- s9ymdb:71 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; src=&quot;https://gnuheidix.de/uploads/system-monitor.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;In letzter Zeit habe ich die Graphen des Monitoring-Werkzeugs &lt;a href=&quot;http://munin-monitoring.org/&quot; title=&quot;externer Link&quot;&gt;Munin&lt;/a&gt; öfters mittels Zoomfunktion im Browser vergrößert, um auf hochauflösenden Monitoren genug erkennen zu können. Das geht auch anders.&lt;br /&gt;
&lt;p&gt;Entweder stieg die Pixeldichte meiner Monitore oder meine Augen werden schlechter. Egal, ich halte die standardmäßige Größe von 400 mal 200 Pixel für nicht mehr zeitgemäß.&lt;/p&gt; 
&lt;h3&gt;Master-Konfiguration&lt;/h3&gt; 
&lt;p&gt;In der Konfiguration des Munin-Masters, welcher die Graphen und die HTML-Seiten rendert, kann man die Standardbreite und -höhe global oder gruppenweise festlegen. &lt;/p&gt; 
&lt;h4&gt;/etc/munin/munin.conf&lt;/h4&gt; 
&lt;pre&gt;# global
graph_width 600
graph_height 300

[gnuheidix.de]
    # aktuelle Gruppe
    graph_width 600
    graph_height 400
&lt;/pre&gt; 
&lt;p&gt;Man kann diese Einstellung auch im Node oder im Plugin selbst durchführen, aber ich rate davon ab. Der Master gibt die Graphen aus und es ist meines Erachtens seine Verantwortlichkeit, die Größe zu bestimmen.&lt;/p&gt; 
&lt;h3&gt;Plugin-Konfiguration&lt;/h3&gt; 
&lt;p&gt;Mir ist aufgefallen, dass beispielsweise das Plugin &lt;em&gt;diskstats&lt;/em&gt; der Meinung ist, die Graphbreite selbst festlegen zu müssen. Zum Glück kann man den hartcodierten Wert noch mit einer Pluginkonfiguration im Node überschreiben.&lt;/p&gt; 
&lt;h4&gt;/etc/munin/plugin-conf.d/munin-node&lt;/h4&gt; 
&lt;pre&gt;[diskstats]
env.graph_width 600
&lt;/pre&gt; 
&lt;p&gt;Die Gründe für dieses Plugin-Verhalten sind mir aktuell nicht klar. Im Plugincode wird eine Menge daran herumgerechnet, wie breit der Graph nun sein soll. Ich werde dem nachgehen und für Tipps bin ich natürlich dankbar. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
&lt;h3&gt;Fazit&lt;/h3&gt; &lt;a href=&quot;https://gnuheidix.de/uploads/varnish_hit_rate-month.png&quot; title=&quot;Varnish-Hitraten&quot; class=&quot;serendipity_image_link&quot;&gt;&lt;!-- s9ymdb:86 --&gt;&lt;img width=&quot;110&quot; height=&quot;68&quot; alt=&quot;Varnish-Hitraten&quot; title=&quot;Varnish-Hitraten&quot; src=&quot;https://gnuheidix.de/uploads/varnish_hit_rate-month.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;&lt;/a&gt;
&lt;p&gt;Wieder einmal zeigt sich, wie vielseitig Munin ist. Zu viele Möglichkeiten, etwas lösen zu können, erfordern enorme Disziplin, da man sich sonst sehr schnell alles verbaut. Glaub mir, ich entwickle beruflich zur Zeit mit PHP Webshops. Ich spreche aus Erfahrung. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/laugh.png&quot; alt=&quot;:-D&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Webserver: Ausliefern zufälliger Inhalte</title>
    <link>https://gnuheidix.de/archives/34-Webserver-Ausliefern-zufaelliger-Inhalte.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:83 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/tango-emblem-photos.serendipityThumb.png&quot; /&gt;Auch wenn die Problematik vielleicht selten vorkommen mag, ist das Ausliefern zufälliger Inhalte für eine Webanwendung nicht trivial. So viele Möglichkeiten...&lt;br /&gt;&lt;/p&gt;
&lt;h3&gt;Motivation&lt;/h3&gt; 
&lt;p&gt;Die Seite &lt;a href=&quot;http://shipitsquirrel.github.io/&quot; title=&quot;externer Link&quot;&gt;shipitsquirrel.github.io&lt;/a&gt; finde ich klasse. Dort wird einfach ein Eichhorn gezeigt, welches zum Shippen eines Produkts auffordert. Ich wollte etwas ähnliches haben.&lt;/p&gt; 
&lt;p&gt;Es gibt niemanden, der &amp;quot;Make it so.&amp;quot; besser sagen kann, als der Captain des Raumschiffs &lt;em&gt;USS Enterprise NCC-1701-D&lt;/em&gt; aus dem Universum von &lt;a title=&quot;Wikipedia-Link&quot; href=&quot;http://de.wikipedia.org/wiki/Star_Trek&quot;&gt;Star Trek&lt;/a&gt;. Jeder, der von der Serie &lt;em&gt;Star Trek - The Next Generation&lt;/em&gt; noch nie etwas gehört hat, wird jetzt nur noch &lt;em&gt;wtf?&lt;/em&gt; denken, aber das ist mir egal. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/laugh.png&quot; alt=&quot;:-D&quot; class=&quot;emoticon&quot; /&gt; Die Allgemeinbildung ist einfach nicht gleichmäßig verteilt. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;Gerne möchte ich beim Aufruf des Systems immer mal ein anderes Bild mit dem Spruch &amp;quot;Make it so&amp;quot; ausliefern lassen. Es soll schließlich nicht gar so schnell langweilig werden.&lt;/p&gt; 
&lt;p&gt;Die Subdomain makeitso war von mir schnell angelegt und während sich das nun munter unter den DNS-Servern herumgesprochen hatte, stand ich vor der Qual der Wahl.&lt;/p&gt; 
&lt;h3&gt;Möglichkeiten&lt;/h3&gt; 
&lt;p&gt;In welchem Layer meines Setups löse ich das nur?&lt;/p&gt; 
&lt;h4&gt;Varnish-Cache&lt;/h4&gt; 
&lt;p&gt;&lt;a title=&quot;externer Link&quot; href=&quot;https://www.varnish-cache.org/&quot;&gt;Varnish&lt;/a&gt; kann selbst praktisch keine bei sich liegenden Inhalte ausliefern. In seiner Konfigurationssprache VCL kann man lediglich kurze personalisierte Fehlermeldungsrückgaben zusammenbauen. Damit ein Bild auszuliefern, ist Quark. Mit &lt;a title=&quot;Varnish-Dokumentation&quot; href=&quot;https://www.varnish-cache.org/trac/wiki/VCLExampleRedirectInVCL&quot;&gt;Umleitungen&lt;/a&gt; kann Varnish aber sehr gut umgehen. Ein Round-Robin-Umleiter ist in VCL schnell zusammengesteckt.&lt;/p&gt; 
&lt;pre&gt;sub vcl_recv {
    if(req.http.host ~ &quot;makeitso.gnuheidix.de&quot;){
        error 750 &quot;Make it so&quot;;
    }
}

sub vcl_error {
    if (obj.status == 750) {
	set obj.status = 302;

        # true on each odd request id
        if (req.xid ~ &quot;[13579]$&quot;){
             set obj.http.Location = &quot;http://ownsite.de/1.jpg&quot;;
        }else{
             set obj.http.Location = &quot;http://ownsite.de/2.jpg&quot;;
        }

        return(deliver);
    }
}
&lt;/pre&gt; 
&lt;p&gt;Abhängig von der Anzahl der Bilder wird öfters ein anderes kommen als beim Aufruf zuvor. So ganz prickelnd finde ich die Lösung nicht, weil man tatsächlich weggeleitet wird und man für jede Bildererweiterung an der Varnish-Konfiguration basteln muss. Zur Syntaxprüfung der Konfiguration kann man folgenden Befehl nutzen.&lt;/p&gt; 
&lt;pre&gt;sudo varnishd -C -f /etc/varnish/default.vcl&lt;/pre&gt; 
&lt;p&gt;Die Weiterleitungsziele sollten auch auf eigenen Systemen liegen, damit sich niemand anders gestört fühlt. Zum einen hat nicht jeder ein performantes Setup und zum anderen kostet Traffic Geld. Weiter ist Bandbreite leider für jede Maschine endlich.&lt;br /&gt;&lt;/p&gt; 
&lt;h4&gt;Nginx&lt;/h4&gt; 
&lt;p&gt;Es gibt ein sehr schönes Modul, welches genau für den Zweck zu passen vermag. Mithilfe vom &lt;a href=&quot;http://wiki.nginx.org/HttpRandomIndexModule&quot; title=&quot;Nginx-Dokumentation&quot;&gt;HttpRandomIndexModule&lt;/a&gt; kann man Inhalte eines Verzeichnisses zufällig ausliefern lassen.&lt;/p&gt; 
&lt;p&gt;Bei Ubuntu ist das Modul aber nur in den Nginx des Pakets &lt;a href=&quot;http://packages.ubuntu.com/precise/nginx-extras&quot; title=&quot;Ubuntu-Paketrepository&quot;&gt;nginx-extras&lt;/a&gt; hineinkompiliert, wodurch ich nginx-full ersetzen musste. Das ist nicht schlimm, dachte ich. Nach dem Ersetzen des Pakets kam Nginx nicht mehr hoch. Er meldete, dass Port 80 bereits durch einen anderen Prozess belegt ist. Das ist vollkommen richtig. Varnish gehört dieser Port. Tatsächlich hat der Paketwechsel die Defaultkonfiguration mittels Symlink in /etc/nginx/sites-enabled/ aktiviert. Naja, das Paket hat es gut gemeint, aber es hat mir gezeigt, dass man bei Ubuntu nicht stets die volle Kontrolle hat.&lt;/p&gt; 
&lt;p&gt;Varnish muss bei diesem Ansatz alles zum Webserver durchleiten ohne an Caching zu denken.&lt;/p&gt; 
&lt;pre&gt;sub vcl_recv {
    if(req.http.host ~ &quot;makeitso.gnuheidix.de&quot;){
        return (pass);
    }
}
&lt;/pre&gt; 
&lt;p&gt;Nginx wird auf das Verzeichnis ausgerichtet und browserseitige Cachingmechanismen werden entschärft.&lt;br /&gt;&lt;/p&gt; 
&lt;pre&gt;server {
    listen   127.0.0.1:8081;

    root /srv/www/makeitso.gnuheidix.de;
    server_name makeitso.gnuheidix.de;

    location / {
        random_index  on;
        if_modified_since off;
        add_header Last-Modified &quot;&quot;;
    }
}
&lt;/pre&gt; 
&lt;p&gt;Funktioniert! Seht Euch &lt;a href=&quot;http://makeitso.gnuheidix.de&quot;&gt;makeitso.gnuheidix.de&lt;/a&gt; an und ladet ein paar Mal neu. Der Zufall hält sich bei zwei Dateien zwar in Grenzen, aber so muss es aussehen. Die Erweiterbarkeit ist auch sehr gut, weil man keine Konfiguration ändern muss, um neue Bilder aufzunehmen.&lt;/p&gt; 
&lt;h4&gt;PHP&lt;/h4&gt; 
&lt;p&gt;Die im Webservermodul realisierte Funktionalität hätte ich auch in einem PHP-Skript abbrennen können. Es wäre allerdings um Welten langsamer. Auf eine mögliche Beispielimplementierung verzichte ich an dieser Stelle.&lt;/p&gt; 
&lt;h3&gt;Ergebnis&lt;/h3&gt; 
&lt;p&gt;Mein &lt;a title=&quot;Make it so&quot; href=&quot;http://makeitso.gnuheidix.de&quot;&gt;MakeItSo-Generator&lt;/a&gt; ist schick umgesetzt und gefällt mir. Alles, was nicht bis in die niedrigste Systemschicht muss, ist eine potenziell erwägenswerte Lösung. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>HHVM: Darf es in die Produktion?</title>
    <link>https://gnuheidix.de/archives/33-HHVM-Darf-es-in-die-Produktion.html</link>

    <description>
        &lt;!-- s9ymdb:80 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/tango-unblock-request.serendipityThumb.png&quot; /&gt;In den letzten Tagen habe ich mit &lt;a title=&quot;Github-Repository&quot; href=&quot;https://github.com/facebook/hiphop-php&quot;&gt;HHVM&lt;/a&gt; experimentiert, &lt;a href=&quot;https://gnuheidix.de/archives/31-PHP-Apachemodul-vs.-HHVM.html&quot; title=&quot;zum Blogbeitrag&quot;&gt;einiges&lt;/a&gt; &lt;a href=&quot;https://gnuheidix.de/archives/32-PHP-HHVM-Benchmark.html&quot; title=&quot;zum Blogbeitrag&quot;&gt;geschrieben&lt;/a&gt; und ich bin beeindruckt, wie gut es bereits funktioniert. Jetzt steht natürlich die glorreiche Frage im Raum, ob man es bereits auf Produktivsystemen einsetzen sollte. &lt;br /&gt;
&lt;h3&gt;Fakten&lt;/h3&gt; 
&lt;ol&gt; 
&lt;li&gt;Es &lt;a href=&quot;https://github.com/facebook/hiphop-php/blob/master/README.md&quot; title=&quot;Github-Repository&quot;&gt;ist&lt;/a&gt; Freie Software.&lt;/li&gt; 
&lt;li&gt;In Sachen Kompatibilität zu PHP wird stets etwas fehlen.&lt;br /&gt;&lt;/li&gt; 
&lt;li&gt;Es wird &lt;a title=&quot;Github-Repository&quot; href=&quot;https://github.com/facebook/hiphop-php/graphs/commit-activity&quot;&gt;stetig weiterentwickelt&lt;/a&gt;, um mit aktuellen PHP-Versionen und deren Features schritthalten zu können.&lt;/li&gt; 
&lt;li&gt;Facebook nutzt HHVM seit 2013 &lt;a title=&quot;Link zu Facebook&quot; href=&quot;https://www.facebook.com/notes/10150121348198920&quot;&gt;produktiv&lt;/a&gt;. Sein Vorgänger war HPHP, welcher seit &lt;a href=&quot;http://en.wikipedia.org/wiki/HipHop_for_PHP#History_Before_HHVM&quot; title=&quot;Wikipedia-Link&quot;&gt;ca. 2008&lt;/a&gt; in der Entwicklung war.&lt;br /&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;Meinung&lt;/h3&gt; 
&lt;p&gt;Die Fakten klingen doch nicht schlecht, oder?&lt;/p&gt; 
&lt;h4&gt;Offenheit&lt;/h4&gt; 
&lt;p&gt;Ganz wichtig finde ich persönlich, dass ich in die Software 
hineinschauen kann und Änderungen vornehmen darf. Alleine diese Macht zu
 haben, gibt mir schon ein sicheres Gefühl, wenn es brennt, nicht 
komplett aufgeschmissen zu sein. Ja, ich werde den Code mangels Zeit 
höchstwahrscheinlich nicht komplett auditieren, aber andere interessierte 
Entwickler werden das tun. Falls doch mal ein Problem unerkannt bleibt, 
wird es nach dem Erkennen zeitnahe behoben werden können.&lt;/p&gt; 
&lt;h4&gt;Kompatibilität&lt;/h4&gt; 
&lt;p&gt;Die aktuelle PHP-Version setzt meines Erachtens kaum jemand produktiv ein, weil sie die großen Distributionen erst in die Mainstream-Repositories aufnehmen, wenn sie zumindest etwas abgehangen ist. Selbst Gentoo hat die zum Zeitpunkt der Veröffentlichung dieses Blogbeitrags aktuelle Version PHP 5.5 noch als &lt;a href=&quot;http://packages.gentoo.org/package/dev-lang/php&quot; title=&quot;Gentoo-Repository&quot;&gt;&lt;em&gt;unstable&lt;/em&gt;&lt;/a&gt; markiert. Es ist also nicht schlimm, wenn die Bleeding-Edge-Features nicht am Start sind. Um die Kompatibilität zu einer PHP-Anwendung zu prüfen, sollte zumindest die Testsuite der Anwendung mit HHVM ausgeführt und die Ergebnisse und vor allem Laufzeiten verglichen werden.&lt;/p&gt; 
&lt;h4&gt;Entwicklung &lt;/h4&gt; 
&lt;p&gt;Das Projekt sieht von der Anzahl der mitarbeitenden Personen und den Commits gesund aus. Der &lt;a title=&quot;Github-Repository&quot; href=&quot;https://github.com/facebook/hiphop-php/issues&quot;&gt;Issue-Tracker&lt;/a&gt; ist gut gefüllt und wird bearbeitet. Weiter finde ich, dass die &lt;a href=&quot;https://github.com/facebook/hiphop-php/wiki/_pages&quot; title=&quot;Github-Repository&quot;&gt;Dokumentation&lt;/a&gt; auf dem richtigen Weg ist.&lt;br /&gt;&lt;/p&gt; 
&lt;h4&gt;Verbreitung&lt;/h4&gt; 
&lt;p&gt;Mir ist keine andere Firma oder Person als Facebook selbst bekannt, die HHVM produktiv einsetzt. Im Readme des Projekts steht wörtlich:&lt;/p&gt; 
&lt;pre&gt;HipHop is most commonly run as a standalone server, replacing both Apache and modphp.&lt;/pre&gt; 
&lt;p&gt;Die Software an vorderster Front bei geringer Verbreitung einzusetzen, halte ich persönlich für gefährlich. Nicht umsonst hat es viele viele Jahre gebraucht, bis beispielsweise der Apache-Webserver die Stabilität und Robustheit von heute erreicht hat. Der Code wurde einfach von vielen Leuten eingesetzt, geprüft und verbessert ohne dabei einer &lt;span class=&quot;st&quot;&gt;&lt;em&gt;Featuritis&lt;/em&gt;&lt;/span&gt; zu verfallen. Sicherheitslücken gibt es in Apache deshalb vergleichsweise wenig. Genau das fehlt meines Erachtens HHVM noch.&lt;br /&gt;&lt;/p&gt; 
&lt;h3&gt;Fazit&lt;/h3&gt; 
&lt;p&gt;Nur wenn unkritische Anwendungen betrieben werden, würde ich HHVM als Standalone-Server einsetzen. Gegen den Einsatz bei einzelnen rechenintensiven Prozessen spricht wenig, wenn die Eingaben nicht von potenziell bösen Nutzern stammen.&lt;/p&gt; 
&lt;p&gt;Das ist nur meine Meinung. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>PHP: HHVM-Benchmark</title>
    <link>https://gnuheidix.de/archives/32-PHP-HHVM-Benchmark.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:82 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; src=&quot;https://gnuheidix.de/uploads/slow-php.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;Im &lt;a href=&quot;http://benchmarksgame.alioth.debian.org/&quot; title=&quot;externer Link&quot;&gt;Benchmarksgame&lt;/a&gt; schneidet PHP stets äußerst schlecht ab. Die Implementierung in C benötigt meist wenige Sekunden Ausführungszeit, wohingegen PHP stets mehrere Minuten den Rechner belastet. Was bringt da &lt;a href=&quot;https://github.com/facebook/hiphop-php&quot; title=&quot;Github-Repository&quot;&gt;HHVM&lt;/a&gt;?&lt;/p&gt;
&lt;h3&gt;Ausgangssituation&lt;/h3&gt; 
&lt;p&gt;In meinem &lt;a href=&quot;https://gnuheidix.de/archives/31-PHP-Apachemodul-vs.-HHVM.html&quot;&gt;letzten Blogbeitrag&lt;/a&gt; habe ich herausgefunden, dass durch HHVM im Falle der Applikation &lt;a title=&quot;externer Link&quot; href=&quot;http://s9y.org/&quot;&gt;Serendipity&lt;/a&gt; keine erhebliche Beschleunigung erzielt wird, wenn man PHP in Verbindung mit &lt;a title=&quot;externer Link&quot; href=&quot;http://xcache.lighttpd.net/&quot;&gt;XCache&lt;/a&gt; einsetzt.&lt;/p&gt; 
&lt;p&gt;Offensichtlich habe ich nicht den Anwendungsfall getroffen, für den HHVM einst gebaut wurde. Dann lasse ich es eben richtig rechnen. Am &lt;a title=&quot;externer Link&quot; href=&quot;http://benchmarksgame.alioth.debian.org/u64/benchmark.php?test=binarytrees&amp;amp;lang=all&amp;amp;data=u64&quot;&gt;Binarytree-Benchmarksgame&lt;/a&gt; habe ich mich hierfür bedient.&lt;/p&gt; 
&lt;p&gt;Auf der dort vorliegenden Testumgebung benötigt PHP 5.5 satte elf Minuten und C etwa zehn Sekunden für den selben Algorithmus.&lt;/p&gt; 
&lt;h3&gt;Testumgebung&lt;/h3&gt; 
&lt;p&gt;Ich habe wieder meine Hiphop-VM gestartet, alle unnötigen Dienste deaktiviert und den Quellcode vom Binarytrees in eine &lt;a title=&quot;das verwendete PHP-Skript&quot; href=&quot;https://gnuheidix.de/files/binarytrees.txt&quot;&gt;PHP-Datei&lt;/a&gt; gesteckt. Beim ersten Ausführungsversuch mit PHP 5.3 wird mir trotz Speicherlimit von zwei Gigabyte die folgende Meldung ausgegeben.&lt;/p&gt; 
&lt;pre&gt;hiphop@hiphop-test:~$ php -n -d memory_limit=2048M binarytrees.php 20
Fatal error: Allowed memory size of 2147483648 bytes exhausted (tried to allocate 73 bytes) in /home/hiphop/binarytrees.php on line 18
&lt;/pre&gt; 
&lt;p&gt;Ich verkneife mir jetzt jeglichen Kommentar und aktualisiere die PHP-Version auf 5.4, weil dort diesbezüglich &lt;a title=&quot;Release notes&quot; href=&quot;http://php.net/releases/5_4_0.php&quot;&gt;optimiert&lt;/a&gt; wurde.&lt;/p&gt; 
&lt;p&gt;Es ist zu erwarten, dass mein Setup die beim Benchmarksgame angegebenen elf Minuten nicht exakt erreicht, da ich andere Hardware am Start habe.&lt;/p&gt; 
&lt;h3&gt;Durchführung&lt;br /&gt;&lt;/h3&gt; 
&lt;p&gt;Die Ausgabe des Benchmarkskripts &lt;em&gt;binarytrees.php&lt;/em&gt; sieht stets wie folgt aus. Es wird also bei jedem Testlauf richtig gerechnet.&lt;/p&gt; 
&lt;pre&gt;stretch tree of depth 21	 check: -1
2097152	 trees of depth 4	 check: -2097152
524288	 trees of depth 6	 check: -524288
131072	 trees of depth 8	 check: -131072
32768	 trees of depth 10	 check: -32768
8192	 trees of depth 12	 check: -8192
2048	 trees of depth 14	 check: -2048
512	 trees of depth 16	 check: -512
128	 trees of depth 18	 check: -128
32	 trees of depth 20	 check: -32
long lived tree of depth 20	 check: -1
&lt;/pre&gt; 
&lt;p&gt;Nun folgen die Ausführungszeiten ohne die Skriptausgaben.&lt;/p&gt; 
&lt;h4&gt;PHP 5.4 mit Standardeinstellungen&lt;/h4&gt; 
&lt;p&gt;Der Schalter &lt;em&gt;n&lt;/em&gt; deaktiviert die php.ini und damit jegliche Extensions.&lt;/p&gt; 
&lt;pre&gt;hiphop@hiphop-test:~$ time php -n -d memory_limit=2048M binarytrees.php 20

real	8m26.254s
user	8m4.882s
sys	0m21.217s
&lt;/pre&gt; 
&lt;p&gt;Die Zeit weicht wie erwartet ab, bewegt sich aber in gleichen Regionen.&lt;/p&gt; 
&lt;h4&gt;PHP 5.4 mit XCache&lt;/h4&gt; 
&lt;p&gt;Ohne den Schalter &lt;em&gt;n&lt;/em&gt; wird nun auch auf XCache zurückgegriffen.&lt;/p&gt; 
&lt;pre&gt;hiphop@hiphop-test:~$ time php -d memory_limit=2048M binarytrees.php 20

real	8m27.003s
user	8m5.634s
sys	0m21.201s
&lt;/pre&gt; 
&lt;p&gt;Die Zeit steigt minimal im Vergleich zur Standardeinstellung.&lt;/p&gt; 
&lt;h4&gt;HHVM mit Standardeinstellungen&lt;/h4&gt; 
&lt;p&gt;Es muss kein Speicherlimit gesetzt werden, weil HHVM in den Standardeinstellungen keines gesetzt hat.&lt;br /&gt;&lt;/p&gt; 
&lt;pre&gt;hiphop@hiphop-test:~$ hhvm --version
HipHop VM v2.1.0-dev (rel)
Compiler: tags/HPHP-2.1.0-0-gee8da60efaad9398eb4fb5909ede5cf6bb662128
Repo schema: 56ccb9c5c4a45b351e042a3b4da0b98d7e4e27f9

hiphop@hiphop-test:~$ time hhvm binarytrees.php 20

real	4m34.108s
user	4m33.741s
sys	0m0.176s
&lt;/pre&gt; 
&lt;p&gt;Cool!&lt;/p&gt; 
&lt;h4&gt;Zusatztest: PHP 5.5 mit eigenem OpCode-Cache&lt;/h4&gt; 
&lt;p&gt;Um allen gerecht zu werden, habe ich auch einen Testlauf mit der aktuellsten PHP-Version gefahren. Ich setze den Schalter &lt;em&gt;n&lt;/em&gt; nicht, damit die gesamte Zend-Magic in Betrieb ist. Früher hieß das Teil übrigens nicht einfach &lt;em&gt;OPcache&lt;/em&gt; sondern &lt;em&gt;Optimizer Plus&lt;/em&gt;. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/laugh.png&quot; alt=&quot;:-D&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;pre&gt;hiphop@hiphop-test:~$ php -v
PHP 5.5.1-1~precise+1 (cli) (built: Jul 22 2013 07:33:14) 
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies
    with Zend OPcache v7.0.2-dev, Copyright (c) 1999-2013, by Zend Technologies

hiphop@hiphop-test:~$ time php -d memory_limit=2048M binarytrees.php 20

real	8m32.390s
user	8m9.683s
sys	0m22.509s
&lt;/pre&gt; 
&lt;p&gt;
Bummer! &lt;br /&gt;&lt;/p&gt; 
&lt;h3&gt;Ergebnis&lt;/h3&gt; 
&lt;p&gt;PHP 5.3 ist ein Speicherschwein.&lt;/p&gt; 
&lt;p&gt; &lt;strong&gt;PHP 5.4&lt;/strong&gt; kommt mit zwei Gigabyte Speicherlimit aus und es ist irrelevant, ob XCache aktiviert ist. Es benötigt &lt;strong&gt;knappe 8,5 Minuten&lt;/strong&gt;. XCache erzeugt unnötigen Overhead, weil es nie einen Cachehit erzeugen kann. Das Skript läuft eben exakt ein einziges Mal.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;HHVM&lt;/strong&gt; benötigt lediglich &lt;strong&gt;4,5 Minuten&lt;/strong&gt;. An dieser Stelle kommt der &lt;a title=&quot;Wikipedia-Link&quot; href=&quot;http://de.wikipedia.org/wiki/Just-in-time-Kompilierung&quot;&gt;JIT&lt;/a&gt; voll zum Tragen. Ich habe mir eine erheblichere Beschleunigung gewünscht, aber eine knapp 50 prozentige Verkürzung der Ausführungszeit ist ein gutes Ergebnis.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;PHP 5.5&lt;/strong&gt; braucht &lt;strong&gt;gute 8,5 Minuten&lt;/strong&gt; und damit noch mehr Zeit als 5.4. Ich betrachte das als &lt;strong&gt;Reinfall&lt;/strong&gt;.&lt;br /&gt;&lt;/p&gt; 
&lt;h3&gt;Fazit &lt;br /&gt;&lt;/h3&gt; 
&lt;p&gt;Wenn Ihr also langlaufende rechenintensive Prozesse in PHP benutzen müsst, probiert HHVM definitiv mal aus. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt; 
&lt;/p&gt; 
    </description>
</item>
<item>
    <title>PHP: Apachemodul vs. HHVM</title>
    <link>https://gnuheidix.de/archives/31-PHP-Apachemodul-vs.-HHVM.html</link>

    <description>
        &lt;!-- s9ymdb:78 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; src=&quot;https://gnuheidix.de/uploads/tango-application-x-php.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt; 
&lt;p&gt;Dass &lt;a href=&quot;http://benchmarksgame.alioth.debian.org/u64/benchmark.php?test=binarytrees&amp;amp;lang=all&amp;amp;data=u64&quot; title=&quot;externer Link&quot;&gt;PHP bzgl. Performance&lt;/a&gt; nicht gut ist, steht außer Frage. Überspitzt gesagt sind viele Handstände notwendig, um Webanwendungen, die darauf zurückgreifen, so gut einzurichten, dass sie bei endlichem Ressourcenverbrauch mehr als eine Hand voll Anfragen gleichzeitig bedienen können. Heute habe ich ein Experiment zur Beschleunigung der reinen Ausführungsgeschwindigkeit durchgeführt.&lt;br /&gt;&lt;/p&gt;
&lt;h3&gt;Oldschool &lt;br /&gt;&lt;/h3&gt; 
&lt;p&gt;Im 0815-Style werden Webanwendungen unter Verwendung von Apache mit mod_php deployt. Apache führt dabei den PHP-Code in seinen Arbeitsprozessen direkt aus. Bei jeder Anfrage, die PHP benötigt, wird das angefragte Skript aus dem Dateisystem geholt und Zeile für Zeile &lt;a title=&quot;Wikipedia-Link&quot; href=&quot;http://de.wikipedia.org/wiki/Interpreter&quot;&gt;interpretiert&lt;/a&gt;. Das verbraucht aus technischer Sicht unter anderem viel Prozessorzeit, welche bei jeder Anfrage erneut aufgewendet werden muss, auch wenn sich der PHP-Code selbst nicht geändert hat. Unterm Strich wird also durch unnötige repetitive Arbeit Strom in Abwärme umgewandelt.&lt;br /&gt;&lt;/p&gt; 
&lt;h3&gt;HipHop VM for PHP (HHVM)&lt;/h3&gt; 
&lt;p&gt;Die Entwickler der Werbeplattform Facebook greifen ebenfalls auf PHP zurück. Aufgrund der vielen Millionen täglichen Benutzeranfragen haben sie &lt;a title=&quot;Github-Repository&quot; href=&quot;https://github.com/facebook/hiphop-php&quot;&gt;HHVM&lt;/a&gt; zur &lt;a href=&quot;http://de.wikipedia.org/wiki/Just-in-time-Compilierung&quot; title=&quot;Wikipedia-Link&quot;&gt;Just-in-time-Kompilierung&lt;/a&gt; von PHP-Skripten entwickelt. Es basiert auf der Idee von &lt;a title=&quot;externer Link&quot; href=&quot;http://www.phpcompiler.org/&quot;&gt;phc&lt;/a&gt;, wurde aber nicht auf maximale Kompatibilität optimiert, was einen Geschwindigkeitsvorteil bringt.&lt;/p&gt; 
&lt;h3&gt;Testumgebung&lt;/h3&gt; 
&lt;p&gt;Ich habe mir eine VM in Virtualbox mit Ubuntu-Server 12.04 amd64 geklickt und den Apache mit mod_php, welche auf PHP-Version 5.3 zurückgreift, installiert. Weiter habe ich die Blogsoftware &lt;a href=&quot;http://s9y.org/&quot; title=&quot;externer Link&quot;&gt;Serendipity&lt;/a&gt;, welche ich auch für diesen Blog einsetze, heruntergeladen, den Apache darauf ausgerichtet und die Installation unter Verwendung von &lt;a title=&quot;externer Link&quot; href=&quot;http://www.sqlite.org/&quot;&gt;SQLite&lt;/a&gt; als Datenbankbackend durchgeführt. Ich habe einen Testbeitrag im Blog erstellt, damit es mehr als nur eine leere Startseite gibt. Das Kommentieren des Beitrags klappt auch. So weit so gut.&lt;/p&gt; 
&lt;p&gt;Um HHVM nutzbar zu machen, habe ich die entsprechende &lt;a title=&quot;Github-Repository&quot; href=&quot;https://github.com/facebook/hiphop-php/wiki/Prebuilt-Packages-on-Ubuntu-12.04&quot;&gt;Paketquelle eingerichtet&lt;/a&gt; und das Hiphop-Paket installiert. Hiphop hat keine vordefinierte Konfigurationsstruktur wie Apache. Das muss man sich selbst zusammenlöten, wenn man es produktiv einsetzen möchte.&lt;/p&gt; 
&lt;p&gt;Status: Apache läuft und bedient Anfragen auf Port 80, HHVM ist aus&lt;/p&gt; 
&lt;p&gt;Rahmenbedingung: Es gibt praktisch keine Netzwerkwartezeiten, da wir alles auf einer Maschine machen. Es gibt Overhead durch die VM, welcher aber bei beiden Testkandidaten gleichermaßen existiert.&lt;br /&gt;&lt;/p&gt; 
&lt;h3&gt;Durchführung&lt;/h3&gt; 
&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/hiphop-vs-apache.png&quot;&gt;&lt;!-- s9ymdb:77 --&gt;&lt;img width=&quot;110&quot; height=&quot;49&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/hiphop-vs-apache.serendipityThumb.png&quot; alt=&quot;Ergebnis: Hiphop vs. Apache&quot; /&gt;&lt;/a&gt;Ich öffne zwei Browsertabs und Firebug ist auf Netzwerkanalyse ausgerichtet. Ich lade die Startseite zehn Mal neu. Die &lt;a title=&quot;Wikipedia-Link&quot; href=&quot;http://en.wikipedia.org/wiki/Time_To_First_Byte&quot;&gt;Time-to-first-byte&lt;/a&gt; liegt beim Apache bei etwa 60ms. Ich fahre den Apache herunter und starte HHVM im Serendipityhauptverzeichnis mit folgendem Befehl.&lt;/p&gt; 
&lt;pre&gt;sudo hhvm -m server -p 80&lt;/pre&gt; 
&lt;p&gt;Nun lade ich im zweiten Browsertab die Seite zehn Mal neu. Die Time-to-first-byte pegelt sich nach drei Ladevorgängen bei etwa 15ms ein. Das Serendipity-Backend ist auch nutzbar. &lt;br /&gt; &lt;/p&gt; 
&lt;h3&gt;Fazit&lt;/h3&gt; 
&lt;p&gt;Dieses Experiment hat eindrucksvoll gezeigt, wozu Hiphop VM for PHP in der Lage ist. Eine Laufzeitverringerung um satte 75% ist ein sehr gutes Ergebnis. Jeder, der eine stark unter Feuer stehende PHP-Webanwendung betreibt, hat die Chance mit HHVM die Applikationsperformance zu erhöhen, insofern die Kompatibilität gewährleistet ist.&lt;/p&gt; 
&lt;p&gt;Facebook betreibt übrigens auch ein &lt;a href=&quot;http://www.hiphop-php.com/&quot; title=&quot;externer Link&quot;&gt;WordPress-Blog&lt;/a&gt; mit und über Hiphop. &lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;Probiert es doch einfach selbst aus. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
&lt;h3 id=&quot;xcache&quot;&gt;Nachtrag: XCache&lt;/h3&gt; 
&lt;p&gt; Da ich die Testumgebung einmal aufgebaut hatte, ließ ich es mir nicht nehmen, Apache einmal mit und einmal ohne &lt;a href=&quot;http://xcache.lighttpd.net/&quot; title=&quot;externer Link&quot;&gt;XCache&lt;/a&gt; laufen zu lassen. Siehe da, im Falle der Webapplikation Serendipity bewegt sich die TTFB-Beschleunigung bei aktiviertem XCache im Vergleich zur Standardinstallation ohne auch bei etwa 75%. Bei einem Ubuntu-Server reicht damit die Installation vom Paket &lt;em&gt;php5-xcache&lt;/em&gt; aus, um Serendipity serverseitig enorm zu beschleunigen.&lt;br /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>JavaScript: Visual Event 2</title>
    <link>https://gnuheidix.de/archives/30-JavaScript-Visual-Event-2.html</link>

    <description>
        &lt;!-- s9ymdb:79 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; src=&quot;https://gnuheidix.de/uploads/tango-system-search.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;Nicht selten musste ich bisher bei mir unbekannten Websites herausfinden, auf welchen Events welche DOM-Elemente registriert sind. &lt;a href=&quot;http://www.sprymedia.co.uk/article/Visual+Event+2&quot; title=&quot;externer Link&quot;&gt;Visual Event 2&lt;/a&gt; von Allan Jardine ist dabei eine große Hilfe.
&lt;p&gt; &lt;a href=&quot;https://gnuheidix.de/uploads/visualevent.png&quot; class=&quot;serendipity_image_link&quot;&gt;&lt;!-- s9ymdb:76 --&gt;&lt;img width=&quot;110&quot; height=&quot;60&quot; alt=&quot;Screenshot&quot; src=&quot;https://gnuheidix.de/uploads/visualevent.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;&lt;/a&gt;Nach dem Aktivieren dieses Bookmarklets werden alle auf Events lauschenden DOM-Elemente farblich hinterlegt und beim Anklicken wird angezeigt, welches Event der Auslöser ist und welcher Codeabschnitt die Verarbeitung übernimmt. Eine tiefgreifende Recherche ist damit nicht möglich, aber für einen Anfang ist das schon mal sehr gut. Der Punkt in der linken oberen Ecke zeigt Events, die am Dokument hängen.&lt;/p&gt; 
&lt;p&gt;Probiert es doch einfach selbst aus. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt; &lt;/p&gt; 
    </description>
</item>
<item>
    <title>Varnish: Fehlerbehandlung bei Backendfehlern</title>
    <link>https://gnuheidix.de/archives/29-Varnish-Fehlerbehandlung-bei-Backendfehlern.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:106 --&gt;&lt;img height=&quot;100&quot; width=&quot;100&quot; src=&quot;https://gnuheidix.de/uploads/varnish100.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;Gestern hatte mein Server ein Problem mit seinem Dateisystem. Es ist plötzlich Read-Only geworden und dadurch konnte das PHP beim Rendern der Seiten keine Cachedateien mehr erzeugen. Lediglich eine Fehlermeldung war beim Aufruf dieses Blogs zu sehen. Sowas in der Mittagspause zu entdecken, ist schon bitter.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;h3&gt;Webanwendung mit Problemen &lt;br /&gt;&lt;/h3&gt; 
&lt;p&gt;Ohne schreibend auf das Dateisystem zugreifen zu können, quittierte das Blogsystem &lt;a href=&quot;http://s9y.org/&quot;&gt;Serendipity&lt;/a&gt; sofort den Dienst. Es wurden nur noch Fehlermeldungen mit dem HTTP-Fehlercode 500 ausgegeben. Dank des stets heißen &lt;a href=&quot;https://www.varnish-cache.org/&quot;&gt;Varnish-Cache&lt;/a&gt; hat man das als Benutzer beim Klicken durch die Seiten ohne Kommentare zu schreiben nicht gemerkt. Erst als das Alter der Cacheeinträge eine Stunde überschritten hatte, verwarf Varnish diese und die Fehler waren auf allen Seiten in voller Pracht zu sehen.&lt;/p&gt; 
&lt;h3&gt;Sonderbehandlung für Backendfehler&lt;br /&gt;&lt;/h3&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt;Varnish beantwortet alle HTTP-Anfragen einer Site. Alles, was nicht in dessen Cache ist, wird beim Webserver Nginx angefragt. Jener fragt wiederum PHP und so weiter. Nginx ist also das Backend von Varnish, welches in meinem Fall nicht mehr korrekt arbeitete. Glücklicherweise ist in der Anleitung von Varnish ein Kapitel, welches erklärt, wie man &lt;a href=&quot;https://www.varnish-cache.org/docs/3.0/tutorial/handling_misbehaving_servers.html&quot;&gt;mit einer fehlerwerfenden Webanwendung umgehen&lt;/a&gt; kann.&lt;br /&gt;&lt;/p&gt; 
&lt;h4&gt; Grace-Mode&lt;/h4&gt; 
&lt;p&gt;Meine Konfiguration umfasst nun, dass etwas einst korrekt gecachtes von Varnish nur dann verworfen wird, wenn der jeweilige Cacheeintrag:&lt;br /&gt;&lt;/p&gt; 
&lt;ol&gt; 
&lt;li&gt;mindestens eine Stunde alt ist und das Backend eine fehlerfreie Antwort liefert.&lt;/li&gt; 
&lt;li&gt;älter als fünf Tage ist.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h4&gt;Saint-Mode &lt;br /&gt;&lt;/h4&gt; 
&lt;p&gt;Weiter lasse ich Varnish beim Auffrischen eines abgelaufenen Cacheeintrags erst nach einer Minute einen neuen Auffrischungsversuch unternehmen, wenn währenddessen ein Backendfehler aufgetreten ist. Damit versuche ich zu verhindern, dass bei vielen Fehlern das Backend durch Überlastung den Geist aufgibt.&lt;br /&gt;&lt;/p&gt; 
&lt;ol&gt; &lt;/ol&gt; 
&lt;h3&gt;Fazit &lt;br /&gt;&lt;/h3&gt; 
&lt;p&gt;Dieses Vorgehen hat zur Folge, dass Backendfehler nicht so schnell für den Sitebesucher sichtbar werden. Es erfordert aber gleichzeitig ein Monitoring, welches nicht nur schaut, ob beim HTTP-Request von außen etwas kommt. Vielmehr muss der Gesundheitszustand des Backends selbst überwacht werden. Ich löse das so, indem ich alle paar Tage ins Munin schaue und prüfe, ob der Webserver &lt;a href=&quot;https://gnuheidix.de/archives/25-Monitoring-Dateigroessen-mit-Munin-ueberwachen.html&quot;&gt;nginx etwas ins Errorlog geschrieben&lt;/a&gt; hat. Besser wäre es allerdings den Server an ein externes Monitoring anzuschließen. Ein System kann sich schließlich nur bis zu einem gewissen Grad selbst überwachen.&lt;/p&gt; 
&lt;p&gt;Ich hoffe, ich konnte Euch insofern helfen, dass Ihr nicht die gleichen Fehler wie ich macht. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
&lt;h4&gt;Nachtrag&lt;/h4&gt; 
&lt;p&gt;Fehler müssen nicht zwangsläufig den Code 500 haben. Ich betrachte alles &amp;gt;= 500 als Fehler und aktiviere hierfür dann den Saint-Mode. Wenn z.B. das PHP-Backend down ist, meldet nginx einen 502 an Varnish und der sollte damit umgehen können. Schaut in meine &lt;a href=&quot;https://gnuheidix.de/files/varnishConfig.txt&quot;&gt;Varnishkonfiguration&lt;/a&gt;. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Ghostery: Externe Dienste erkennen und blockieren</title>
    <link>https://gnuheidix.de/archives/28-Ghostery-Externe-Dienste-erkennen-und-blockieren.html</link>

    <description>
        &lt;!-- s9ymdb:74 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/Contact-new.serendipityThumb.png&quot; /&gt;Die Einbindung von Diensten externer Anbieter ist auf Websites heutzutage nichts Neues. Analytics, Werbung, Marketing,... werden dabei vom Websitebetreiber eingekauft und unterstützen ihn beim Erreichen mehr oder weniger sinnvoller Ziele. Ein tolles Werkzeug, welches diese externen Einbindungen komfortabel sichtbar macht, ist das Firefox-Plugin &lt;a href=&quot;http://www.ghostery.com/&quot;&gt;Ghostery&lt;/a&gt;.

&lt;p&gt;&lt;a href=&quot;https://gnuheidix.de/uploads/ghostery_golemDE.jpg&quot; title=&quot;Ghostery bei einem Golem-Artikel&quot; class=&quot;serendipity_image_link&quot;&gt;&lt;img width=&quot;69&quot; height=&quot;110&quot; alt=&quot;Ghostery bei einem Golem-Artikel&quot; title=&quot;Ghostery bei einem Golem-Artikel&quot; src=&quot;https://gnuheidix.de/uploads/ghostery_golemDE.serendipityThumb.jpg&quot; class=&quot;serendipity_image_right&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Ghostery&lt;/h3&gt; 
&lt;p&gt;Dieses Plugin besitzt eine vom Hersteller gepflegte Liste an bekannten Einbindungen, welche periodisch aktualisiert wird. Diese hat keinen Anspruch auf Vollständigkeit. Besonders selbstgebaute Lösungen, die kaum verbreitet sind, werden dadurch nicht erkannt. Nichtsdestotrotz ist es erstaunlich, was alles so eingesetzt wird. Besonders Nachrichtenseiten binden eine Menge Zeug ein. Kein Wunder, dass sie X Handstände machen müssen, um die Frontendperformance nicht allzu sehr zu beeinträchtigen.&lt;/p&gt; 
&lt;p&gt;Aktuell meldet mir Ghostery, dass es 740 Cookies und 1490 Pixel externer Anbieter erkennen und auf Wunsch blockieren kann.&lt;/p&gt; 
&lt;h3&gt; Alternative&lt;br /&gt;&lt;/h3&gt; 
&lt;p&gt;Ohne dieses Werkzeug könnte man auch alle derartigen Einbindungen erkennen. Man müsste lediglich das HTML und JavaScript der Website Zeile für Zeile durchgehen. Wenn alles minified ist und selbst ein Beautifier nur Müll liefert, bleibt fast nur noch der Blick ins Protokoll der Netzkommunikation und das Setzen von XHR-Breakpoints. Beim Firefox macht man das in der Webkonsole und die ist über die Tastenkombination Ctrl+Shift+K zu erreichen. Selbst da sieht man nicht wirklich gut, was genau über WebSockets nach draußen kommuniziert wird.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://gnuheidix.de/uploads/ghostery_golemDE.jpg&quot; title=&quot;Ghostery bei einem Golem-Artikel&quot; class=&quot;serendipity_image_link&quot;&gt;&lt;!----&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://gnuheidix.de/uploads/ghostery_golemDE.jpg&quot; title=&quot;Ghostery bei einem Golem-Artikel&quot; class=&quot;serendipity_image_link&quot;&gt;&lt;!----&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://gnuheidix.de/uploads/ghostery_golemDE.jpg&quot; title=&quot;Ghostery bei einem Golem-Artikel&quot; class=&quot;serendipity_image_link&quot;&gt;&lt;!----&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://gnuheidix.de/uploads/ghostery_golemDE.jpg&quot; title=&quot;Ghostery bei einem Golem-Artikel&quot; class=&quot;serendipity_image_link&quot;&gt;&lt;!----&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://gnuheidix.de/uploads/ghostery_golemDE.jpg&quot; title=&quot;Ghostery bei einem Golem-Artikel&quot; class=&quot;serendipity_image_link&quot;&gt;&lt;!-- s9ymdb:75 --&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Probiert Ghostery einfach auf Euren Lieblingssites aus. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Serendipity: Performancezentriertes Serversetup</title>
    <link>https://gnuheidix.de/archives/27-Serendipity-Performancezentriertes-Serversetup.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:105 --&gt;&lt;img height=&quot;100&quot; width=&quot;100&quot; src=&quot;https://gnuheidix.de/uploads/serendipity100.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;Im September 2012 habe ich dieses Blog auf &lt;a href=&quot;https://gnuheidix.de/archives/15-Blog-Relaunch-mit-Serendipity.html&quot;&gt;Serendipity umgestellt&lt;/a&gt;. Seitdem habe ich Erfahrungen gesammelt, wie ich meinen Server gut für diese Anwendung einstelle, um eine höchstmögliche Performance herauszuholen.&lt;br /&gt;&lt;/p&gt;
&lt;h3&gt;Motivation&lt;br /&gt;&lt;/h3&gt; 
&lt;p&gt;Mir liegt die Performance von Websites sehr am Herzen. Es stört mich, wenn ich warten muss und noch mehr stört es mich, wenn eine Webanwendung wie &lt;a href=&quot;http://s9y.org/&quot;&gt;Serenditpity (S9y)&lt;/a&gt;, Wordpress usw. zum Beantworten einer Anfrage aufwändige Berechnungen durchführt und diese danach komplett verwirft. Kommt die gleiche Anfrage eine halbe Sekunde später nochmal, muss die Antwort erneut berechnet werden.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;In einem 0815-Setup muss ein Webserver für jede Anfrage PHP bemühen, viele Skripte auszuführen, welche wiederum Datenbankabfragen durchführen. Nach diesem Brimborium, kann er die fertiggerenderte Antwort endlich an den anfragenden Webbrowser senden. Wenn es eine etwas durchdachtere Webapplikation ist, benutzt sie selbst Caches, um Berechnungen und Datenbankabfragen zu reduzieren.&lt;/p&gt; 
&lt;p&gt;Nichtsdestotrotz halte ich alles für unperformant, was über PHP abgewickelt wird. Häufig vorkommende Aufrufe will ich dort nicht permanent durchleiten, es darf schließlich nur wenig Systemressourcen benötigen. Andernfalls reicht es, wenn Fefe einen Link setzt, um die Site zu lüften. Selten vorkommendes wie das Hinzufügen eines Kommentars oder das Editieren eines Blogbeitrags kann ruhig einen Augenblick länger dauern.&lt;br /&gt;&lt;/p&gt; 
&lt;h3&gt;Architektur vereinfacht erklärt&lt;br /&gt;&lt;/h3&gt; 
&lt;p&gt;In meinem Setup werden HTTP-Anfragen von außen auf Port 80 vom Cache &lt;a href=&quot;https://www.varnish-cache.org/&quot;&gt;Varnish&lt;/a&gt;  entgegen genommen. Kennt Varnish die Antwort auf die Anfrage bereits, beantwortet er sie direkt. Wenn nicht, fragt er den Webserver nginx auf dem lokalen Port 8081. Wenn die angefragte Ressource statisch ist, zieht sie &lt;a href=&quot;http://nginx.org/&quot;&gt;Nginx&lt;/a&gt; aus dem Dateisystem. Wenn die Ressource auf ein PHP-Skript abzielt, spricht nginx mit php-fpm über das FastCGI-Protokoll auf einem UNIX-Domain-Socket. php-fpm lässt einen neuen oder arbeitslosen Arbeitsprozess die Antwort in Verbindung mit XCache rendern. Dabei auftretende Datenbankabfragen laufen gegen eine SQLite-Datenbank. Varnish merkt sich jede Antwort von nginx für knapp eine Stunde. Ein Cacheanheizer läuft stündlich über die Site und aktualisiert im Varnishcache die wichtigsten Ressourcen.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;Das 0815-Setup hat lediglich den &lt;a href=&quot;http://httpd.apache.org/&quot;&gt;Apache-Webserver&lt;/a&gt; mit mod_php. Apache führt selbst das PHP bei Bedarf aus und blockiert jeweils einen seiner Arbeitsprozesse dabei. PHP spricht bei Bedarf mit einer &lt;a href=&quot;http://www.mysql.de/&quot;&gt;MySQL-Datenbank&lt;/a&gt; über eine TCP-Socketverbindung.&lt;/p&gt; 
&lt;h3&gt;Varnish&lt;/h3&gt; 
&lt;p&gt;Jede Webapplikation benötigt potenziell eine eigene Varnishkonfiguration. Bei S9y können sogar einzelne Plugins Anpassungen erfordern. Varnish hat eine eigene Konfigurationssprache namens &lt;a href=&quot;https://www.varnish-cache.org/docs/trunk/reference/vcl.html&quot;&gt;VCL&lt;/a&gt;. Sie ist mit der vhost-Konfiguration von Apache vergleichbar, welche auch für jede Site individuell ist.&lt;/p&gt; 
&lt;p&gt;Bei meinem Blog ist bis auf das S9y-Backend und die Kommentarfunktion alles cachebar. Dem entsprechend habe ich auch meine &lt;a href=&quot;https://gnuheidix.de/files/varnishConfig.txt&quot;&gt;Konfiguration&lt;/a&gt; gestaltet. Die Cacheverfallsdauer ist auf exakt eine Stunde minus zwei Sekunden eingestellt.&lt;/p&gt; 
&lt;p&gt;Solange die Cacheeinträge nicht veraltet sind, kann ich den Webserver nginx sogar runterfahren. Die Site bleibt verfügbar. Bei anderen Setups kann in Verbindung mit Varnish die Datenbank wegglühen, externe Ressourcen nicht antworten oder die Festplatten vollgas arbeiten. Varnish hat alles im Hauptspeicher und bedient, soweit er kann, Anfragen.&lt;br /&gt;&lt;/p&gt; 
&lt;h3&gt;Cacheanheizer&lt;/h3&gt; 
&lt;p&gt;Ein profaner Cronjob läuft exakt stündlich über die gesamte Site und aktualisiert damit den Varnishcache.&lt;/p&gt; 
&lt;pre&gt;cd /tmp &amp;amp;&amp;amp; wget --header &quot;X-Varnish-Nuke:1&quot; --mirror -A &#039;*.html&#039;,&#039;*.css&#039;,&#039;*.js&#039;,&#039;*.png&#039;,&#039;*.jpg&#039;,&#039;*.gif&#039; --delete-after http://gnuheidix.de&lt;/pre&gt; 
&lt;p&gt;Bilder sind in meinem Blog nur Schmuckwerk und können getrost ein wenig langsamer sein. Wenn weitere Ressourcen z.B. für den Style benötigt werden, sollten sie an dieser Stelle mit angeheizt werden.&lt;/p&gt; 
&lt;h3&gt;Nginx&lt;/h3&gt; 
&lt;p&gt;Ich habe mich für diesen Webserver entschieden, weil er einfach wesentlich performanter ist als Apache und trotzdem Features wie Rewrites unterstützt. Weiter ist er auch weit verbreitet und dadurch gut getestet. Für Nginx wird wieder eine eigene &lt;a href=&quot;https://gnuheidix.de/files/nginxConfig.txt&quot;&gt;Konfiguration&lt;/a&gt; benötigt. Besonders wichtig ist dabei der S9y-Teil und der FastCGI-Teil. Die Rewrites lassen die URLs gut aussehen und die FastCGI-Konfiguration übergibt einfach alles an php-fpm, was nach PHP riecht.&lt;br /&gt;&lt;/p&gt; 
&lt;h3&gt;php-fpm mit XCache&lt;br /&gt;&lt;/h3&gt; 
&lt;p&gt;Durch &lt;a href=&quot;http://php-fpm.org/&quot;&gt;php-fpm&lt;/a&gt; ist unter anderem die Überwachung langsamer PHP-Prozesse sehr einfach. Weiter lässt er stets nur so viele Arbeitsprozesse am Leben, um die aktuelle Last gut abzuarbeiten, was Hauptspeicher spart. Mittels &lt;a href=&quot;http://xcache.lighttpd.net/&quot;&gt;XCache&lt;/a&gt; muss ein PHP-Arbeitsprozess die Skripte nicht immer von Grund auf verarbeiten. Es wird der OpCode im Hauptspeicher gehalten und kann ohne Parsen direkt ausgeführt werden.&lt;/p&gt; 
&lt;p&gt;XCache ist schnell eingerichtet. Mir fällt kein Grund ein, XCache auf einem Webserver mit PHP nicht zu aktivieren. Auch das oben umschriebene 0815-Setup würde davon profitieren. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
&lt;h3&gt;SQLite&lt;/h3&gt; 
&lt;p&gt;Ich erspare meinem Server eine MySQL-Instanz, weil ich das für meine Zwecke für völlig überzogen halte. Diese würde etwa 100MB im Betrieb verheizen, die im Varnish, XCache oder Linux-Dateisystemcache wesentlich besser angelegt sind. S9y unterstützt &lt;a href=&quot;http://www.sqlite.org/&quot;&gt;SQLite&lt;/a&gt; als Datenbank, schließlich führt es keine Super-Fancy-Abfragen durch. Die Datenbank liegt als Datei im Dateisystem und wird bei Bedarf von PHP angezogen. Ein Performancevergleich zwischen MySQL und SQLite bei der Anwendung S9y würde mich echt interessieren. Wenn ich viel Zeit habe, messe ich das mal.&lt;/p&gt; 
&lt;h3&gt;Serendipity&lt;/h3&gt; 
&lt;p&gt;Auch S9y habe ich modifiziert. Hauptsächtlich habe ich da an den eingebundenen statischen Ressourcen geschraubt. Dies arbeite ich aber in einem anderen Blogbeitrag auf, weil dieser hier wohl bereits etwas länger geworden ist. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
&lt;h3&gt;Nachtrag&lt;br /&gt;&lt;/h3&gt; 
&lt;p&gt;&lt;em&gt;05.06.2013:&lt;/em&gt; &lt;a href=&quot;http://www.lullabot.com/blog/articles/configuring-varnish-high-availability-multiple-web-servers/&quot;&gt;Varnish mit mehreren Backends&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;18.12.2013:&lt;/em&gt; &lt;a href=&quot;https://gnuheidix.de/files/varnishConfig.txt&quot;&gt;Varnish-Konfiguration&lt;/a&gt; aktualisiert mit Grace-Mode und Saint-Mode, Cacheanheizer immer ein Cache-Miss für gleichmäßiges Anheizen&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;12.01.2014:&lt;/em&gt; &lt;a href=&quot;https://gnuheidix.de/files/nginxConfig.txt&quot;&gt;nginx-Konfiguration&lt;/a&gt; aktualisiert mit Rewrite-Magic für www-Subdomain; Hinweis: Client-IPs kann man in nginx mit dem Modul &lt;a title=&quot;externer Link&quot; href=&quot;http://wiki.nginx.org/HttpRealipModule&quot;&gt;HttpRealip&lt;/a&gt; extrahieren. (&lt;a title=&quot;externer Link&quot; href=&quot;http://linuxaria.com/article/how-to-log-the-correct-ip-having-varnish-and-nginx&quot;&gt;Anleitung&lt;/a&gt;)&lt;br /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Spiel: Zen Bound 2</title>
    <link>https://gnuheidix.de/archives/26-Spiel-Zen-Bound-2.html</link>

    <description>
        &lt;!-- s9ymdb:73 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/tango-input-gaming.serendipityThumb.png&quot; /&gt; 
&lt;p&gt;Beim Durchstöbern von &lt;a href=&quot;http://store.steampowered.com/browse/linux/&quot;&gt;Steam&lt;/a&gt; bin ich vorhin auf &lt;a href=&quot;http://zenbound.com/&quot;&gt;Zen Bound 2&lt;/a&gt; gestoßen. Die Einfachheit des Spielkonzepts finde ich klasse.&lt;/p&gt;
&lt;p&gt;Umwickle einen Gegenstand mit einem Stück Schnur. Nur wenig Computerspiele basieren auf etwas so einfachem. Besonders für zwischendurch zur Entspannung ist es wunderbar.&lt;/p&gt;
&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/zenbound2.jpg&quot;&gt;&lt;!-- s9ymdb:72 --&gt; &lt;img width=&quot;110&quot; height=&quot;83&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/zenbound2.serendipityThumb.jpg&quot; alt=&quot;Screenshot&quot; /&gt;&lt;/a&gt;
&lt;p&gt;Ursprünglich wurde es für Touchgeräte entwickelt, aber mit der Maus klappt es auch ganz gut. Die Musik und Soundeffekte sind ruhig und können einzeln abgeschalten werden. Mit den über einhundert Leveln hat man einiges zutun.&lt;/p&gt; 
&lt;p&gt;Probiert es einfach mal aus. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Monitoring: Dateigrößen mit Munin überwachen</title>
    <link>https://gnuheidix.de/archives/25-Monitoring-Dateigroessen-mit-Munin-ueberwachen.html</link>

    <description>
        &lt;!-- s9ymdb:71 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; src=&quot;https://gnuheidix.de/uploads/system-monitor.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;Die Größen bestimmter Dateien können viel über den Zustand eines Systems aussagen. Ich setze &lt;a href=&quot;http://munin-monitoring.org/&quot;&gt;Munin&lt;/a&gt; als Monitoringtool meines Servers ein und habe es letztlich um diese Art Überwachungsfunktionalität erweitert.&lt;br /&gt;
&lt;p&gt;Munin ist simpel. Es läuft einfach alle fünf Minuten los und sammelt die konfigurierten Messwerte ein. Diese werden als Graphen in Bilddateien gerendert und in ein paar HTML-Seiten geordnet einsortiert. Die Messwerte werden dabei von vielen einzelnen Munin-Plugins besorgt.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://gnuheidix.de/uploads/munin_nginx_errorlog.png&quot; class=&quot;serendipity_image_link&quot;&gt;&lt;!-- s9ymdb:70 --&gt;&lt;img width=&quot;110&quot; height=&quot;62&quot; src=&quot;https://gnuheidix.de/uploads/munin_nginx_errorlog.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;&lt;/a&gt;Mithilfe der ausführlichen &lt;a href=&quot;http://munin-monitoring.org/wiki/Documentation&quot;&gt;Dokumentation&lt;/a&gt; habe ich mir das &lt;a href=&quot;https://github.com/gnuheidix/munin-plugins&quot;&gt;Plugin du&lt;/a&gt; gebaut, welches eine oder mehrere Dateigrößen abfragen kann. Zur Zeit verwende ich es, um die Größe des Webserver-Errorlogs zu überwachen. Schließlich schaue ich da nicht täglich rein.&lt;/p&gt; 
&lt;p&gt;Besonders nach dem Deployment neuer Softwareversionen kann ich so einfach und schnell prüfen, ob etwas schief gelaufen ist. Das Errorlog wird täglich mittels Logrotate &amp;quot;auf Null gesetzt&amp;quot;, wodurch über Tage, Wochen und Monate Tendenzen und Spitzen in den Munin-Graphen schön sichtbar werden.&lt;/p&gt; 
&lt;p&gt;Ich hoffe, dass Euch diese Idee bei der Überwachung Eurer Maschinen geholfen hat. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt; &lt;br /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Kaffee: Austausch der Schalter beim Kaffeeboy</title>
    <link>https://gnuheidix.de/archives/24-Kaffee-Austausch-der-Schalter-beim-Kaffeeboy.html</link>

    <description>
        &lt;!-- s9ymdb:60 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; src=&quot;https://gnuheidix.de/uploads/switches.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;Als ich letztlich meine &lt;a href=&quot;https://gnuheidix.de/archives/20-Kaffee-Instandsetzung-eines-AKA-K500-Kaffeeboy.html&quot;&gt;Kaffeemaschine instand gesetzt&lt;/a&gt; habe, ist mir aufgefallen, dass die Schalter des knapp dreißig Jahre alten Geräts nicht mehr lange durchhalten würden. Gestern haben sie nun vollends versagt.&lt;br /&gt;
&lt;p&gt;Durch das Auslösen der Sicherung haben sich die Schalter gestern Abend beim Ausschalten verabschiedet. Mich hat es in der Tat sehr überrascht, als ich in der Küche auf einmal im Dunkeln stand. Das war für mich das Zeichen, dass ich sie ersetzen muss.&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/kabel_alt.jpg&quot;&gt;&lt;!-- s9ymdb:61 --&gt;&lt;img width=&quot;110&quot; height=&quot;83&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/kabel_alt.serendipityThumb.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Ausgangssituation&lt;/h3&gt; 
&lt;p&gt;Ich brauchte zwei Schalter, die mindestens 250V / 4A schalten können. Die Verkabelung in der Maschine sah auch nicht mehr so gut aus. Besonders nervig fand ich, dass sämtliche Kabel eine schwarze Isolation hatten. Als das Gerät 1985 in Leipzig gebaut wurde, gab es wohl gerade nichts anderes.&lt;br /&gt;&lt;/p&gt; 
&lt;h3&gt;Ersatzteileinkauf &lt;br /&gt;&lt;/h3&gt; 
&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/schalter_alt_neu.jpg&quot;&gt;&lt;!-- s9ymdb:62 --&gt;&lt;img width=&quot;110&quot; height=&quot;83&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/schalter_alt_neu.serendipityThumb.jpg&quot; /&gt;&lt;/a&gt;Zum Glück gibt es in Stuttgart eine Filiale von &lt;a href=&quot;http://www.conrad.de/&quot;&gt;Conrad&lt;/a&gt;. Mir war von vornherein klar, dass ich nie und nimmer exakt die gleichen Bauteile bekommen würde. Meine Anforderung war lediglich, dass sie von den Dimensionen her so ähnlich sein sollen, dass ich sie durch Bearbeitung des Kaffeemaschinengehäuses passend machen kann. Die integrierten Kontrollleuchten waren für mich zweitrangig, weil ich sie zur Not durch zwei externe hätte ersetzen können.&lt;/p&gt; 
&lt;p&gt;Letztendlich habe ich mich für einen &lt;a href=&quot;http://www.conrad.de/ce/de/product/700873/&quot;&gt;roten&lt;/a&gt; und einen &lt;a href=&quot;http://www.conrad.de/ce/de/product/700874/&quot;&gt;grünen&lt;/a&gt; Schalter mit jeweils integrierter Kontrollleuchte und einen Beutel passender Flachsteckhülsen entschieden. Alles zusammen hat rund sechs Euro gekostet.&lt;/p&gt; 
&lt;h3&gt;Was nicht passt...&lt;/h3&gt; 
&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/schalter_neu.jpg&quot;&gt;&lt;!-- s9ymdb:63 --&gt;&lt;/a&gt;Mein Plan war es, die neuen Schalter quer zur Schaltrichtung der alten einzubauen. Augenmaß und Nebeneinanderhalten stimmte mich zuversichtlich.&amp;#160; Von der Höhe her passten die neuen perfekt. Auch die Schaltervertiefung im Maschinengehäuse passte sehr gut. Nebeneinander hatten beide allerdings noch keinen Platz. &lt;/p&gt; 
&lt;p&gt;Den Steg, welcher die beiden alten Schalter voreinander separierte, habe ich heraus gebrochen. Beim grünen Schalter habe ich auf der breiten Seite links und rechts sämtliches überstehendes Plastik mit einem scharfen Messer entfernt. Beim roten Schalter habe ich das gleiche nur auf der linken breiten Seite gemacht. Dabei habe ich mir in den Daumen geschnitten. Naja, das war ja abzusehen.&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/schalter_neu.jpg&quot;&gt;&lt;img width=&quot;110&quot; height=&quot;83&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/schalter_neu.serendipityThumb.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/kabel_neu.jpg&quot;&gt;&lt;!-- s9ymdb:64 --&gt;&lt;/a&gt;Beim Maschinengehäuse habe ich die linke Schaltervertiefung mit dem Messer vollständig entfernt. Der grüne Schalter wird damit nur noch oben und unten vom Gehäuse gehalten, was völlig ausreicht. Durch das Entfernen des überstehenden Plastiks rutschen beide Schalter sehr nahe zusammen. Nun passen sie knapp aber gut ins Gehäuse. Die Einschnapparretierung beider Schalter hält ausgezeichnet. Von außen betrachtet sehen beide Schalter nun so aus, als wären sie für diese Kaffeemaschine gebaut worden.&lt;/p&gt; 
&lt;h3&gt;Verkabelung&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/kabel_neu.jpg&quot;&gt;&lt;img width=&quot;110&quot; height=&quot;83&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/kabel_neu.serendipityThumb.jpg&quot; /&gt;&lt;/a&gt;&lt;/h3&gt; 
&lt;p&gt;Ein altes Kaltgerätekabel habe ich im Keller gefunden, welches sich sofort freiwillig zur Aderspende gemeldet hat. Mithilfe der Flachsteckhülsen, einem Messer, diverser Zangen und viel Geduld habe ich die Verkabelung schick in blau und braun wiederhergestellt. Das erhöht die so schon gute Wartbarkeit noch mehr. Die Schaltung ist nun richtig schön übersichtlich.&lt;/p&gt; 
&lt;h3&gt;Testlauf&lt;/h3&gt; 
&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/k500_testlauf.jpg&quot;&gt;&lt;!-- s9ymdb:65 --&gt;&lt;img width=&quot;110&quot; height=&quot;83&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/k500_testlauf.serendipityThumb.jpg&quot; /&gt;&lt;/a&gt;Nach dem Schließen des Gehäuses konnte ich nun den ersten Test durchführen. Wie erwartet funktionierte die Maschine. Die neuen Schalter haben eine sehr schöne Beleuchtung und ich bin gespannt, ob sie wie die alten auch knappe dreißig Jahre halten.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;Von nun an kann ich also wieder Kaffee trinken. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Enterprise Architect: PDF-Generierung nicht möglich</title>
    <link>https://gnuheidix.de/archives/23-Enterprise-Architect-PDF-Generierung-nicht-moeglich.html</link>

    <description>
        &lt;!-- s9ymdb:57 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/ealogo.serendipityThumb.png&quot; /&gt;Die Einstellungen meiner Installation von &lt;a href=&quot;http://www.sparxsystems.com/products/ea/index.html&quot;&gt;Enterprise Architect&lt;/a&gt; habe ich letztlich zurückgesetzt. Die Hauptfunktion der PDF-Generierung war danach leider verschwunden.
&lt;p&gt;&lt;a href=&quot;https://gnuheidix.de/uploads/ea_ifcustom.jpg&quot; class=&quot;serendipity_image_link&quot;&gt;&lt;!-- s9ymdb:58 --&gt;&lt;img width=&quot;110&quot; height=&quot;72&quot; src=&quot;https://gnuheidix.de/uploads/ea_ifcustom.serendipityThumb.jpg&quot; class=&quot;serendipity_image_right&quot; /&gt;&lt;/a&gt;Es hat mich eine Stunde gekostet, um herauszufinden, wie ich die PDF-Generierung, welche ich normalerweise über die F8-Taste aufrufe, wiederherstellen kann.&lt;/p&gt; 
&lt;p&gt;Man muss auf der Startseite &lt;em&gt;Interface Customization &lt;/em&gt;auswählen und prüfen, dass in den nachfolgenden Dialogen &lt;em&gt;Complete&lt;/em&gt; gewählt ist. Offenbar war eine Einstellung drin, welche F8 komplett entschärft hat.&lt;/p&gt; 
&lt;p&gt;Wenigstens ist nun wieder alles wie früher. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Filme: Regisseur von Pretty Woman</title>
    <link>https://gnuheidix.de/archives/22-Filme-Regisseur-von-Pretty-Woman.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:14 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; src=&quot;https://gnuheidix.de/uploads/tango-movie.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;Gerne verfolge ich die &lt;a href=&quot;http://de.wikipedia.org/wiki/Audiokommentar&quot;&gt;Audiokommentare&lt;/a&gt; zu Filmen, die mir besonders gefallen, um Hintergründe zur Entstehung von Szenen mitzubekommen.&lt;/p&gt;
&lt;p&gt;Besonders hervorheben möchte ich die Einstellung von &lt;a href=&quot;http://de.wikipedia.org/wiki/Garry_Marshall&quot;&gt;Garry Marshall&lt;/a&gt; bei seiner Arbeit als Regisseur am Film &lt;a href=&quot;http://de.wikipedia.org/wiki/Pretty_Woman&quot;&gt;Pretty Woman&lt;/a&gt;.
&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;I as a director always choose to have the viewer say &amp;quot;What a bad 
editor.&amp;quot;, &amp;quot;What a bad director.&amp;quot; than say &amp;quot;What a bad actress or 
actor.&amp;quot;.&lt;/em&gt;&lt;/p&gt; 
&lt;p&gt;[...]&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;I want you to see the best of them.&lt;/em&gt;&lt;/p&gt; 
&lt;p&gt;[...]&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;I believe that you must always pick the best performance. I try 
everything possible to make the acting honest. If the acting can&#039;t be 
fixed with editing, I take out the dialog and blow music through it. 
That is the way you protect an actor.&lt;/em&gt;&lt;/p&gt; 
&lt;p&gt;andere in Schutz nehmen; Mut zur Lücke zeigen; Garry hat einen guten Job gemacht. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Webserver: mögliche Schwachstellen in der php.ini</title>
    <link>https://gnuheidix.de/archives/21-Webserver-moegliche-Schwachstellen-in-der-php.ini.html</link>

    <description>
        &lt;p&gt; &lt;!-- s9ymdb:39 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/tango-blog.serendipityThumb.png&quot; /&gt;Beim Betrieb von Webapplikationen ist aufgrund der vielfältigen Angriffsvektoren stets Vorsicht geboten. Diesbezüglich ist mir beim Ausloten von Möglichkeiten letztlich das Skript &lt;a href=&quot;http://pentestmonkey.net/tools/web-shells/php-reverse-shell&quot;&gt;php-reverse-shell&lt;/a&gt; über den Weg gelaufen. Das hat mich daran erinnert, dass es unter vielen anderen ein paar besondere Ecken gibt, auf die man beim Setup eines Webservers und der php.ini achten sollte.&lt;/p&gt; 

&lt;p&gt;Grundsätzlich gilt, dass &amp;quot;gefährliche&amp;quot; PHP-Funktionen wie &lt;strong&gt;proc_open&lt;/strong&gt; mittels &lt;strong&gt;disable_functions&lt;/strong&gt; deaktiviert gehören. Einschalten kann man sie, wenn sie von der jeweiligen Applikation gebraucht werden. Bevor ich alles wiederhole, was andere schlaue Leute bereits geschrieben haben, verweise ich einfach mal auf den Artikel &lt;a href=&quot;http://heise.de/-270918&quot;&gt;Serverfrieden&lt;/a&gt; bei heise Security. Der deckt meines Erachtens einiges ab. Auch die iX hat 2006 im Artikel &lt;a href=&quot;http://heise.de/-129368&quot;&gt;PHP-Sicherheit: Vorsicht vor popen() und proc_open()&lt;/a&gt; vor dieser Art Sicherheitslücken gewarnt.&lt;/p&gt; 
&lt;p&gt;Bitte prüft Euer Serversetup, bevor jemand ein böses Skript hochlädt und eine Reverse-Shell aufmacht. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Kaffee: Instandsetzung eines AKA K500 - Kaffeeboy</title>
    <link>https://gnuheidix.de/archives/20-Kaffee-Instandsetzung-eines-AKA-K500-Kaffeeboy.html</link>

    <description>
        &lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/k500-einzelteile.jpg&quot;&gt;&lt;!-- s9ymdb:54 --&gt;&lt;/a&gt;&lt;!-- s9ymdb:56 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; src=&quot;https://gnuheidix.de/uploads/kaffee.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;Ich liebe guten Kaffee. Aus diesem Grund habe ich mir zum Geburtstag eine &lt;a href=&quot;http://de.wikipedia.org/wiki/Kaffeemaschine#Dampfdruckmaschine&quot;&gt;Dampfdruckkaffeemaschine&lt;/a&gt; schenken lassen. Es handelt sich dabei um einen in Ostdeutschland wohl bekannten Kaffeeboy. Mein Modell stammt aus dem &lt;a href=&quot;http://de.wikipedia.org/wiki/Volkseigener_Betrieb&quot;&gt;VEB&lt;/a&gt; Elektrogeräte Leipzig, wurde im Jahr 1985 gebaut und ist damit älter als ich. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Dichtungen&lt;/h3&gt; 
&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/k500-einzelteile.jpg&quot;&gt;&lt;img width=&quot;38&quot; height=&quot;110&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/k500-einzelteile.serendipityThumb.jpg&quot; /&gt;&lt;/a&gt; Im Kaffee-Zubereitungsbetrieb habe ich feststellen müssen, dass stets geringe Mengen an Wasser an den Kanten der Kesselverkleidung austreten. Da Undichtigkeit kein Feature sein kann, habe ich die Maschine kurzerhand zerlegt und bin fündig geworden. Am Wassereinfüllstutzen und an der Schraube einer Wartungsöffnung oberhalb des Brühelementanschlusses war jeweils die Dichtung komplett defekt. Glücklicherweise hatten meine Eltern noch Ersatzdichtungen vorrätig. Im Bild sind die alten und neuen Dichtungen im Vergleich zu sehen.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;Nach dem Dichtungswechsel war es allerdings noch nicht ausgestanden.&lt;/p&gt; 
&lt;h3&gt;Schalter&lt;/h3&gt; 
&lt;p&gt;Bereits beim Zerlegen ist mir der starke Abnutzungszustand der Schiebeschalter aufgefallen. Der rote Schalter ist für den Zubereitungsbetrieb und der weiße für den Warmhaltebetrieb. Als ich sie für den ersten Test mit neuen Dichtungen in Betrieb nehmen wollte, hat der rote Schalter nicht funktioniert. Nach dem Zerlegen habe ich festgestellt, dass die Kontakte im Laufe der Jahre offenbar völlig verdreckt sind. Mit einer Nagelfeile, welche aus der gleichen Zeit wie die Maschine stammt, habe ich die Kontakte sehr gut reinigen können.&lt;/p&gt; 
&lt;h3&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/testdrive.jpg&quot;&gt;&lt;img width=&quot;110&quot; height=&quot;83&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/testdrive.serendipityThumb.jpg&quot; /&gt;&lt;/a&gt;&lt;/h3&gt; 
&lt;p&gt;Der zweite Testlauf ging erfolgreich über die Bühne. Alles ist dicht, die Schalter funktionieren und der Kaffee schmeckt. Morgen werde ich die Kesselverkleidung wieder installieren.&lt;br /&gt;&lt;/p&gt; 
&lt;h3&gt;Fazit&lt;/h3&gt; 
&lt;p&gt;Besonders bei Maschinen, die exzessiv verwendet werden, merkt man das Alter verhältnismäßig schnell. Mein Respekt gilt den Konstrukteuren dieser Kaffeemaschine. Die Eigenschaften Einfachheit, Robustheit und Wartungsfreundlichkeit sind einfach bemerkenswert. Leider gibt es keine Ersatzteile mehr, wodurch diese Maschine bestimmt irgendwann aufgrund eines Verschleißteils wie einem Schalter außer Dienst gestellt werden muss.&lt;br /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>codecademy.com: eine Programmierlernplattform</title>
    <link>https://gnuheidix.de/archives/19-codecademy.com-eine-Programmierlernplattform.html</link>

    <description>
        &lt;p&gt; &lt;!-- s9ymdb:39 --&gt;&lt;!-- s9ymdb:52 --&gt;&lt;img width=&quot;110&quot; height=&quot;110&quot; src=&quot;https://gnuheidix.de/uploads/200px-Start-here.svg.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;Vor kurzem bin ich durch die Autorin von &lt;a href=&quot;http://ryuu.de/&quot;&gt;ryuu&lt;/a&gt; auf die Site &lt;a href=&quot;http://www.codecademy.com&quot;&gt;codecademy.com&lt;/a&gt; aufmerksam geworden.&lt;/p&gt;

&lt;p&gt;
Dort können alle, ohne sich unbedingt anmelden zu müssen, Programmieraufgaben, die von anderen Leuten erstellt wurden, lösen. Zur Zeit werden Kurse für die Sprachen Python, JavaScript und Ruby angeboten. Weiter gibt es Grundlagenkurse für die Webseitenerstellung mit HTML und CSS. Der Fortschritt der Teilaufgaben wird zuverlässig getrackt und es werden virtuelle Trophäen verteilt. Das besondere ist meines Erachtens, dass man die Lösungen zu den Aufgaben direkt im Browser eingeben kann. Dort wird alles sofort kontrolliert und es werden je nach Kurseinstellungen Tipps ausgegeben, wenn es nicht ganz gestimmt hat.&lt;/p&gt; 
&lt;h3&gt;Fazit &lt;br /&gt;&lt;/h3&gt; 
&lt;p&gt;Alles in allem finde ich die Idee und den Workflow der Plattform gut. Noch Potenzial sehe ich bei den Leuten, die die Kurse erstellen. Zu jeder Programmieraufgabe fände ich Links zu mehr Hintergrundinformationen sinnvoll. Auf der anderen Seite ist es auch wieder gut, dass diese Infos fehlen, weil man so lernt, selbst danach zu suchen. Das Problem, was ich beim Selbstsuchen sehe, ist, dass Neulinge eventuell durch ungenaue Informationen von schlechten Quellen verwirrt werden und dadurch die Lust verlieren.&lt;br /&gt; &lt;/p&gt; 
    </description>
</item>
<item>
    <title>idle3-tools: Alterung von WDC-Festplatten verlangsamen</title>
    <link>https://gnuheidix.de/archives/18-idle3-tools-Alterung-von-WDC-Festplatten-verlangsamen.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:50 --&gt;&lt;img width=&quot;110&quot; height=&quot;110&quot; src=&quot;https://gnuheidix.de/uploads/tango-harddisk.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;Da ich mein RAID-Array aus Mangel an freiem Speicherplatz erweitern musste, habe ich mir aufgrund der guten Rezensionen die &lt;a title=&quot;externer Link zu amazon&quot; href=&quot;http://www.amazon.de/dp/B004VFJ9MK&quot;&gt;WD20EARX&lt;/a&gt; von &lt;a href=&quot;http://wdc.com/&quot; title=&quot;externer Link zur Herstellerwebsite&quot;&gt;Western Digital&lt;/a&gt;
 zugelegt. Nach den ersten Betriebsstunden ist mir das ungewöhnlich 
starke Ansteigen eines Vitalwerts der neuen Platte aufgefallen.&lt;/p&gt; 

&lt;h3&gt;S.M.A.R.T. - Kontrolle ist besser&lt;br /&gt;&lt;/h3&gt; 
&lt;p&gt;Moderne Festplatten überwachen sich mittels &lt;a href=&quot;http://en.wikipedia.org/wiki/S.M.A.R.T.&quot;&gt;&lt;strong&gt;S&lt;/strong&gt;elf-&lt;strong&gt;M&lt;/strong&gt;onitoring, &lt;strong&gt;A&lt;/strong&gt;nalysis and &lt;strong&gt;R&lt;/strong&gt;eporting &lt;strong&gt;T&lt;/strong&gt;echnology&lt;/a&gt;
 selbst und melden dem Betriebssystem, wenn das eigene Versagen absehbar
 ist. Das manuelle Prüfen dieser Werte ist nichtsdestotrotz ratsam. Mir 
ist es beispielsweise einmal bei einem Rechnerumbau passiert, dass ich 
den großen Lüfter der Festplatten vergessen habe anzuschließen. Das 
hätte ich nie bemerkt, wenn ich in der Woche nicht flüchtig in die 
Plattenüberwachung geschaut hätte. Alle Platten waren mit jeweils ca. 
60°C heiß gelaufen und bewegten sich an der oberen Grenze der 
Herstellerspezifikationen. Wären sie so die nächsten Jahre durchgelaufen, 
hätte ich mich wohl vorzeitig von ihnen verabschieden können.&lt;/p&gt; 
&lt;h3&gt;WD Green - Desktopfestplatten&lt;/h3&gt; 
&lt;p&gt;&lt;a href=&quot;https://gnuheidix.de/uploads/loadcyclecount-wd20earx.png&quot; class=&quot;serendipity_image_link&quot;&gt;&lt;!-- s9ymdb:51 --&gt;&lt;img width=&quot;110&quot; height=&quot;104&quot; src=&quot;https://gnuheidix.de/uploads/loadcyclecount-wd20earx.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;&lt;/a&gt;Laut Western Digital sind ihre Platten der Serie &amp;quot;Green&amp;quot; besonders 
umweltfreundlich. Das finde ich grundsätzlich nicht verkehrt. Leider 
scheinen aber alle diese Platten einen kritischen Konfigurationsfehler 
zu haben. Standardmäßig parken diese Platten ihre Schreib-/Leseköpfe 
nach fünf Sekunden Nichtbenutzung außerhalb des Plattenstapels, um 
Energie zu sparen. Das Feature hat die Firma &amp;quot;IntelliPark&amp;quot; getauft. Das klingt nicht schlecht, ist es aber, wenn man die 
Herstellerspezifikation gelesen hat. Für lediglich 300.000 Parkvorgänge 
sind diese Festplatten ausgelegt. Noch schlechter wird es einem, wenn man 
bedenkt, dass Linuxmaschinen normalerweise nach ca. zehn bis 30 Sekunden
 die Dateisystemcaches auf die Platten wegschreiben.&lt;/p&gt; 
&lt;p&gt;Bereits nach 13 Stunden in Betrieb war der Zähler der Parkvorgänge - Load Cycle Count - meiner neuen Platte bereits bei über 400. Meine anderen Platten haben nach mehreren Jahren jeweils nur knappe 2000 dieser Parkvorgänge.&lt;/p&gt; 
&lt;h3&gt;Konfiguration anpassen&lt;br /&gt;&lt;/h3&gt; 
&lt;p&gt;Dank Christophe Bothamy dem Entwickler von &lt;a href=&quot;http://idle3-tools.sourceforge.net/&quot;&gt;idle3-tools&lt;/a&gt; kann man die Zeit bis zum Parkvorgang bei diesen Green-Platten beliebig einstellen und einer vorzeitigen Alterung entgegenwirken. Die Software ist sogar in den Ubuntu-Repositories, was darauf schließen lässt, dass es ein weit verbreitetes Problem zu sein scheint. Es gibt sogar einen Wikieintrag bei &lt;a href=&quot;http://wiki.ubuntuusers.de/WD_IntelliPark&quot;&gt;Ubuntuusers.de&lt;/a&gt; zu diesem Thema.&lt;/p&gt; 
    </description>
</item>
<item>
    <title>MinimalCD: eine kleine Installation mit viel Potenzial</title>
    <link>https://gnuheidix.de/archives/17-MinimalCD-eine-kleine-Installation-mit-viel-Potenzial.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:49 --&gt;&lt;img width=&quot;110&quot; height=&quot;110&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/Tango-Media-cdrom.svg.serendipityThumb.png&quot; /&gt;Um eine Linuxdistribution zu installieren, lädt man sich in der Regel ein CD oder DVD-Image aus dem Netz. Danach packt man es auf ein Speichermedium, steckt dieses ins Zielsystem und führt die Installation durch. Bei Images von Linuxdistributionen verhält es sich allerdings genauso wie mit den Rechnern selbst. Wenn man sie einmal hat, sind sie im Prinzip bereits veraltet.&lt;/p&gt;
&lt;h3&gt;mini.iso&lt;/h3&gt; 
&lt;p&gt;Nahezu jede größere Distribution bietet zu diesem Zweck ein sehr kleines Installationsimage, welches nur die nötigsten Dinge enthält und direkt während der Installation die aktuellsten Pakete, die man auch wirklich braucht, aus den Netz lädt. Damit spart man sich Zeit, Netzwerktraffic und Strom. Bei Ubuntu lautet diese Installationsart &lt;a href=&quot;https://help.ubuntu.com/community/Installation/MinimalCD/&quot;&gt;MinimalCD&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Hat man diese einmal installiert, besitzt man nach dem ersten Hochfahren lediglich ein Terminal. Nun kann man sich sein System so zusammenstellen, wie man es für richtig hält. Möchte man nun z.B. das Derivat UbuntuStudio installieren, reicht lediglich ein einziger Befehl aus.&lt;/p&gt; 
&lt;pre&gt;sudo apt-get install ubuntustudio-desktop
&lt;/pre&gt; 
&lt;p&gt;Probiert es einfach mal aus, wenn Ihr das nächste mal einen Rechner aufsetzt. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
&lt;h3&gt;andere Distributionen&lt;/h3&gt; 
&lt;a href=&quot;http://www.debian.org/CD/netinst/&quot;&gt;Debian netinst&lt;/a&gt;, &lt;a href=&quot;http://en.opensuse.org/SDB:Network_installation&quot;&gt;OpenSuse Network installation&lt;/a&gt; 
    </description>
</item>
<item>
    <title>byobu: Screen mit Extras</title>
    <link>https://gnuheidix.de/archives/16-byobu-Screen-mit-Extras.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:59 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/byobu1.serendipityThumb.png&quot; /&gt;Meinen vServer bediene ich ausschließlich über das Terminal via SSH. Das finde ich sehr bequem und es ist vor allem ressourcensparend für den Server selbst. Noch bequemer mache ich mir dabei die Arbeit mithilfe von &lt;a href=&quot;http://wiki.ubuntuusers.de/byobu&quot;&gt;byobu&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;&amp;#160;Dieser auf &lt;a href=&quot;http://de.wikipedia.org/wiki/GNU_Screen&quot;&gt;Screen&lt;/a&gt; aufbauende Terminalmultiplexer lässt mich mehrere Terminals in einer SSH-Session benutzen. Diese sind recht modern in Tabs eingeteilt und über F-Tasten erfolgt die Bedienung des Multiplexers. Er kann komfortabel konfiguriert werden, damit er z.B. in der untersten Zeile bestimmte Systemparameter anzeigt. Besonders, wenn man mehrere unterschiedliche Systeme bedient, helfen diese Angaben unheimlich, um den Überblick zu bewahren.&lt;/p&gt; 
&lt;p&gt;Mit einem Druck auf F6 kann ich byobu die Verbindung zwischen Server und meinem System beenden lassen. Sämtliche Terminals laufen auf &lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/byobu.png&quot;&gt;&lt;img width=&quot;110&quot; height=&quot;77&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/byobu.serendipityThumb.png&quot; /&gt;&lt;/a&gt;dem Server in allen Tabs weiter. Das ist auch praktisch, wenn die SSH-Verbindung während eines kritischer Prozesse ungewollt abreißt. So laufen diese weiter und werden nicht abgewürgt. Nach erneutem Verbindungsaufbau startet byobu automatisch und ich kann mit exakt dem gleichen Setup weiterarbeiten. Die Installation des Werkzeugs geht in Ubuntu schnell von der Hand.&lt;/p&gt; 
&lt;pre&gt;sudo apt-get install byobu
&lt;/pre&gt; 
&lt;p&gt;Nach dem ersten Start erklärt es sich auch nahezu von selbst. Mit F9 kommt Ihr ins Konfigurationsmenü. Probiert es einfach mal aus. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Blog-Relaunch mit Serendipity</title>
    <link>https://gnuheidix.de/archives/15-Blog-Relaunch-mit-Serendipity.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:105 --&gt;&lt;img height=&quot;100&quot; width=&quot;100&quot; src=&quot;https://gnuheidix.de/uploads/serendipity100.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;Nach etwa einem Jahr mit einer selbstgebastelten Blogsoftware habe ich mich nun dazu entschlossen, sie durch &lt;a href=&quot;http://s9y.org/&quot;&gt;Serendipity&lt;/a&gt; (s9y) zu ersetzen. Dies ist darin begründet, dass ich meine Hauptdesignentscheidung, welche das direkte Ausliefern der Webseiteninhalte ohne PHP-Bremse umfasst, mit meinem jetzigen Wissen geschickter lösen kann. Außerdem war mir der Aufwand einen Blogbeitrag zu erstellen in meinem alten System zu hoch.&lt;/p&gt;
&lt;h3&gt;Ladezeit &lt;br /&gt;&lt;/h3&gt; 
&lt;p&gt;Bei meinem alten System hat ein Cronjob stündlich sämtliche Inhalte in HTML-Dateien gerendert, damit der Webserver nicht erst irgendein Skript anwerfen muss, um die Inhalte zusammenzustellen. In Kombination mit dem gatling-Webserver stand zumindest auf Serverseite einem schnellen Seitenaufbau nichts im Wege. Auch der Ressourcenverbrauch dieses Setups war äußerst gering. Gegen Ende habe ich aber angefangen, dieses Prinzip aufzuweichen. Eine Suchfunktion über sämtliche Microblogeinträge ließ bei jeder Anfrage ein PHP-Skript laufen. Es war egal, ob dabei 100 mal das gleiche gesucht wurde. Immer wurde PHP bemüht, die Informationen zusammenzukratzen.&lt;/p&gt; 
&lt;h3&gt;Varnish&lt;/h3&gt; 
&lt;p&gt;&lt;!-- s9ymdb:46 --&gt;&lt;img height=&quot;99&quot; width=&quot;110&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/varnish_stamp_blue200x180.serendipityThumb.png&quot; /&gt;S9y ist ohne PHP nicht lauffähig. Ich setze nun den Webserver nginx ein, da s9y erweiterte URL-Rewrites für den Betrieb benötigt. Der Webserver spricht über FastCGI direkt mit einem ständig laufenden PHP-Prozess um derartige Anfragen rendern lassen zu können. Nginx lauscht lediglich auf einer lokalen Adresse. Vor ihm steht der Cache &lt;a href=&quot;https://www.varnish-cache.org/&quot;&gt;Varnish&lt;/a&gt;, welcher auf Port 80 Anfragen entgegen nimmt, bisher nicht gecachte Inhalte vom nginx bestellt und sie sich dann für eine Stunde merkt. Wenn also nun &lt;a href=&quot;http://blog.fefe.de/&quot;&gt;Fefe&lt;/a&gt; aus irgendeinem Grund auf eine meiner Seiten linkt, muss mein Server nicht aufgrund von Überlastung zu Grunde gehen. Varnish hält die Inhalte im Hauptspeicher zum direkten Ausliefern bereit und sämtliche Besucher bekommen die Inhalte schnell ausgeliefert.&lt;/p&gt; 
&lt;h4&gt;Nutzerintraktionen &lt;br /&gt;&lt;/h4&gt; 
&lt;p&gt;Dieses Vorgehen bedeutet auch, dass Nutzerinteraktionen, wie z.B. Kommentare, frühestens nach einer Stunde sichtbar sind. Ob sich dieses Setup bewährt, werde ich erst sehen, wenn es ein Stückchen gelaufen ist. In einem nächsten Schritt kann ich einen Cronjob anlegen, welcher nach 55 Minuten den Varnish-Cache leert und sämtliche Seiten bestellt, um den Cache zu erneuern und eine schnelle Auslieferung sicherzustellen. Dies lässt zwar eine konkrete Suchanfrage nach &amp;quot;Bla&amp;quot; trotzdem das PHP arbeiten, allerdings passiert das für gleiche Suchanfragen innerhalb einer Stunde nur einmal. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
&lt;h4&gt;Ressourcen&lt;/h4&gt; 
&lt;p&gt; &lt;a href=&quot;https://gnuheidix.de/uploads/nginx-varnish-ressourcen.png&quot; class=&quot;serendipity_image_link&quot;&gt;&lt;!-- s9ymdb:47 --&gt;&lt;img height=&quot;45&quot; width=&quot;110&quot; src=&quot;https://gnuheidix.de/uploads/nginx-varnish-ressourcen.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;&lt;/a&gt;Varnish lasse ich bis zu 256 MB für den Cache nutzen. S9y greift auf SQLite zurück, damit ich mir den ressourcenfressenden MySQL-Server spare. Böse Menschen können den Cache locker voll laufen lassen und ihn zum Flattern bringen. Gegen das können meines Erachtens nur Firewallregeln helfen, die ich einrichte, wenn erste Angriffe aufschlagen. Im Bild sind Varnish, Nginx und der PHP-Prozess samt aktuellem Ressourcenverbrauch zu sehen.&lt;br /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Musik: Qualität für alle</title>
    <link>https://gnuheidix.de/archives/14-Musik-Qualitaet-fuer-alle.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:40 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/tango-audio.serendipityThumb.png&quot; /&gt;Musik heutzutage schnell und bequem kaufen zu können, ist bei amazon 
und anderen Anbietern gut möglich. Leider ist allerdings die Qualität 
der Daten meist nicht einmal ansatzweise mit dem vergleichbar, was es 
auf CDs zu kaufen gibt, bzw. technisch problemlos möglich ist.&lt;/p&gt; 

&lt;h3&gt;Damals&lt;/h3&gt; 
&lt;p&gt;Im Gegensatz zu heute hatten früher viele Leute nur 
Internetverbindungen mit sehr geringen Datenübertragungsraten. Es war 
Ende der 90er Jahre normal, lediglich auf etwa 56kbps bei der 
Internetnutzung zurückgreifen zu können. Die betuchten Leute hatten ISDN
 und konnten durch Bündelung beider Leitungen bis zu 128kbps rausholen, 
wenn sie bereit waren die doppelten Verbindungsgebühren zu zahlen. Das 
war für die Websites dieser Zeit völlig ausreichend. Für größere 
Datenübertragungen war es trotzdem nicht tauglich, insofern man begrenzt
 Zeit oder Geld zur Verfügung hatte.&lt;/p&gt; 
&lt;h3&gt;Audiodatenkompression&lt;/h3&gt; 
&lt;p&gt;Alle denken sofort an MP3. Ja, dieses Kompressionsverfahren 
funktioniert gut, um trotz geringer Übertragungsraten Audiodaten mit 
Wiedergabelängen im Minutenbereich in endlicher Zeit laden zu können. 
Die Reduktion der Datenmenge wird dadurch erreicht, indem für das 
menschliche Gehör fast nicht wahrnehmbare Frequenzbereiche entfernt 
und schwer unterscheidbare nur ungenau gespeichert werden.&lt;/p&gt; &lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/mp3-128kbps.jpg&quot;&gt;&lt;!-- s9ymdb:41 --&gt;&lt;img width=&quot;110&quot; height=&quot;71&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/mp3-128kbps.serendipityThumb.jpg&quot; /&gt;&lt;/a&gt; 
&lt;p&gt;In der Spektrumanalyse eines Titels meiner Musiksammlung aus dem 
Jahr 2000 ist zu sehen, dass mindestens ein Viertel des hörbaren 
Frequenzbereichs praktisch entfernt wurde. Wenn ich den Titel anhöre ist
 die Qualität schlechter als das, was ein gutes analoges FM-Radio bei 
optimalem Empfang zu leisten vermag. Für &lt;a href=&quot;http://commons.wikimedia.org/wiki/File:Casio_wmp1_docking_station.JPG&quot; title=&quot;Wikipediaartikel - 32MB MP3-Uhr&quot;&gt;MP3-Player von damals&lt;/a&gt; mit sehr wenig Speicherplatz war das ok. Es ging durch die Speicherpreise schlichtweg nicht anders.&lt;/p&gt; 
&lt;h3&gt;Heute&lt;/h3&gt; 
&lt;p&gt;Die begrenzenden Faktoren Speicherplatz und Datenübertragungsraten
 spielen heute keine primäre Rolle mehr. Keine Frage, es ist wichtig für
 Geräte, die Beschränkungen unterliegen, Fallbacks zur Verfügung zu 
stellen. Es gibt trotzdem keinen Grund für Musikläden wie amazon, Titel 
ausschließlich mit verlustbehafteter MP3-Datenkompression anzubieten. 
Wenn ich ein Musikstück digital kaufe, möchte ich mindestens das haben, 
was es auf einer CD gibt.&lt;/p&gt; &lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/mp3-amazon-2012.jpg&quot;&gt;&lt;!-- s9ymdb:42 --&gt;&lt;img width=&quot;110&quot; height=&quot;71&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/mp3-amazon-2012.serendipityThumb.jpg&quot; /&gt;&lt;/a&gt; 
&lt;p&gt;Wenn der Anbieter freundlich ist, weil er möglichst viele Kunden 
haben möchte, bietet er die Musikstücke in verschiedenen Formaten an, um
 praktisch jedem Anspruch gerecht werden zu können. So kann sich z.B. 
jemand, der noch ein 56kbps-Modem nutzt, den gekauften Titel gleich als 
stark komprimierte MP3 laden und einen Tag lang glücklich hören. 
Nebenbei kann ja der Download der z.B. mittels &lt;a href=&quot;http://de.wikipedia.org/wiki/Free_Lossless_Audio_Codec&quot;&gt;FLAC&lt;/a&gt; verlustfrei komprimierten Fassung über Nacht laufen, wenn es wichtig genug ist.&lt;/p&gt; 
&lt;p&gt;Man muss einfach die Freiheit haben, selbst entscheiden zu können.
 Die Spektrumanalyse zeigt einen Titel, den ich 2012 bei amazon gekauft 
habe. Für MP3 üblich sind Frequenzbereiche gleich ganz ausgeblendet, was
 sich bei gutem Audioequipment einfach nur schlecht anhört.&lt;/p&gt; 
&lt;h3&gt;Meine Anforderungen&lt;/h3&gt; &lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/flac-24bit.jpg&quot;&gt;&lt;!-- s9ymdb:43 --&gt;&lt;img width=&quot;110&quot; height=&quot;71&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/flac-24bit.serendipityThumb.jpg&quot; /&gt;&lt;/a&gt; 
&lt;p&gt;Ich möchte Musikstücke grundsätzlich als &lt;a href=&quot;http://de.wikipedia.org/wiki/Free_Lossless_Audio_Codec&quot;&gt;FLAC&lt;/a&gt;
 haben. Dabei sollte in der Datei gleich noch das Albumcover integriert 
und der Dateiname sinnvoll gewählt sein. Ich kann mir für meine Geräte 
schließlich selbst die komprimierten Version encodieren, wenn ich 
möchte. Da alle meine Geräte mit FLAC zurecht kommen, brauche ich das 
allerdings nicht mal. In der Spektrumanalyse ist ein mit FLAC 
enkodiertes Musikstück zu sehen. Auffällig ist, dass der Frequenzbereich
 von 0 bis 22 kHz komplett vorhanden ist. Diesen Unterschied höre ich 
und der ist mir wichtig. Ihr könnt, wenn Ihr möchtet, gern selbst den 
Titel &lt;a href=&quot;http://botanybay.bandcamp.com/track/piracy&quot;&gt;Piracy von Botany Bay&lt;/a&gt;,
 den ich der Spektrumanalyse verwendet habe, mit verschiedenen Verfahren
 komprimiert und als FLAC bei Bandcamp anhören. Den Preis könnt Ihr beim
 Kauf zumindest momentan selbst festsetzen. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt; Beachtet bitte, dass die
 FLAC-Version sogar noch besseren Ton liefert als die Audio-CD. Die 
Daten sind bei gleicher Abtastrate von 44,1kHz mit 24 Bit statt wie bei 
einer Audio-CD üblich mit 16-Bit-Werten gespeichert.&lt;/p&gt; 
&lt;p&gt;Für wirklich Audiophile sind Versionen mit höheren Abtastraten bis
 zu 192kHz erforderlich. So hohe Qualitätsstufen ergeben nur bei 
Musikstücken Sinn, bei denen die Aufnahmetechnik absolut einwandfrei ist
 und der Hörer die besten Wiedergabegeräte hat, die es für Geld zu 
kaufen gibt. Bei solchen Anlagen kosten selbst Kabel hunderte Euro. Mir 
persönlich reicht 16 Bit / 44,1kHz über meine Kopfhörer von Sennheiser. 
Ich wollte nur aufzeigen, was es noch gibt. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Studium: Bachelorarbeit</title>
    <link>https://gnuheidix.de/archives/13-Studium-Bachelorarbeit.html</link>

    <description>
        &lt;p&gt;&lt;a href=&quot;https://gnuheidix.de/uploads/tango-blog.png&quot; class=&quot;serendipity_image_link&quot;&gt;&lt;!-- s9ymdb:39 --&gt;&lt;/a&gt;&lt;!-- s9ymdb:39 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/tango-blog.serendipityThumb.png&quot; /&gt;Im April 2011 habe ich meine Bachelorarbeit abgegeben. In diesem Beitrag
 könnt Ihr sie selbst lesen und ich würde mich freuen, wenn jemand 
darauf aufsetzt.&lt;/p&gt; 
&lt;p&gt;Vor etwa einem Jahr habe ich mein Studium durch die Abgabe meiner &lt;a title=&quot;Meine Bachelorarbeit als PDF&quot; href=&quot;https://gnuheidix.de/files/bachelorthesis_heidrich_final.pdf&quot;&gt;Bachelorarbeit&lt;/a&gt;
 mit dem Thema &amp;quot;Galerie-Synchronisation&amp;quot; abschließen können. 
Zurückblickend muss ich sagen, dass meine Schulzeit, zu der ich mein 
Studium dazuzähle, sehr schön war. Täglich teils sehr weit 
auseinanderliegende Themenbereiche in unterschiedlichen Veranstaltungen 
erleben zu können, hat schon was.&lt;/p&gt; 
&lt;h3&gt;Abschluss&lt;/h3&gt; 
&lt;p&gt;Besonders spannend finde ich jedoch die Wochen, in denen ich meine &lt;a title=&quot;Meine Bachelorarbeit als PDF&quot; href=&quot;https://gnuheidix.de/files/bachelorthesis_heidrich_final.pdf&quot;&gt;Bachelorarbeit&lt;/a&gt; bei &lt;a href=&quot;http://miradlo.com/&quot;&gt;miradlo&lt;/a&gt;
 geschrieben habe. Unzählige Flipcharts und viele thematische 
Diskussionen mit meinen Betreuenden haben die Zeit geprägt. Damit auch 
andere von meiner Arbeit profitieren können, ohne mich fragen zu müssen,
 habe ich sie unter die Lizenz &lt;a href=&quot;http://creativecommons.org/licenses/by-sa/3.0/de/deed.de&quot;&gt;CC-BY-SA 3.0&lt;/a&gt;
 gestellt. Ich finde, dass solche Arbeiten nur etwas bringen, wenn 
möglichst alle darauf Zugriff haben und sie weiterverwenden dürfen. Ich 
würde mich sehr freuen, wenn jemand meine Arbeit als Basis für etwas 
eigenes verwendet. &lt;a href=&quot;https://gnuheidix.de/pages/impressum.html&quot;&gt;Schreibt mir&lt;/a&gt;, wenn Ihr zur Arbeit Fragen haben solltet.&lt;/p&gt; 
&lt;h3&gt;Fazit&lt;/h3&gt; 
&lt;p&gt;Auch nach der Schulzeit geht zumindest für mich das Lernen weiter.
 Die tägliche Arbeit, Diskussionen mit anderen und die Teilnahme an 
Barcamps helfen mir dabei am meisten. Für mich funktioniert diese 
Strategie sehr gut. Falls Ihr bisher noch bei keinem &lt;a href=&quot;http://de.wikipedia.org/wiki/Barcamp&quot;&gt;Barcamp&lt;/a&gt; wart, solltet Ihr es zumindest einmal ausprobieren. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Linux Mint: Manchmal sind es nur Kleinigkeiten</title>
    <link>https://gnuheidix.de/archives/12-Linux-Mint-Manchmal-sind-es-nur-Kleinigkeiten.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:107 --&gt;&lt;img height=&quot;100&quot; width=&quot;100&quot; src=&quot;https://gnuheidix.de/uploads/linuxmint-logo.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;Im September habe ich geschrieben, dass Lubuntu mein Lieblingsubuntuderivat ist. Dies hat sich zugunsten von Linux Mint geändert.&lt;/p&gt;
&lt;p&gt;Seit etwa dem 27.November 2011 bin ich Feuer und Flamme für &lt;a href=&quot;http://linuxmint.com/&quot;&gt;Linux Mint&lt;/a&gt;. Bis zu diesem Zeitpunkt war bei mir &lt;a href=&quot;http://lubuntu.net&quot;&gt;Lubuntu&lt;/a&gt; im Einsatz, welches mir gute Dienste geleistet hat. Was ich besonders geschätzt habe, waren der sparsame 
Ressourcenumgang und die Arbeitsgeschwindigkeit. Nicht gefallen hat mir 
die Instabilität von lxpanel und &lt;a href=&quot;http://wiki.lxde.org/de/PCManFM&quot;&gt;PCManFM&lt;/a&gt;.
 Der Dateibrowser PCManFM war äußerst schnell, allerdings hat es mich 
immer geärgert, wenn er beim Verschieben der Desktopicons den Geist 
aufgab. Ihn hatte ich relativ schnell durch den altbewährten &lt;a href=&quot;http://de.wikipedia.org/wiki/Nautilus_%28Dateimanager%29&quot;&gt;Nautilus&lt;/a&gt; ersetzt. Die meisten anderen LXDE-eigenen Anwendungen habe ich im Laufe der Zeit wieder durch ihre Gnomependants ersetzt.&lt;/p&gt; 
&lt;h3&gt;Gnome kam wieder durch&lt;/h3&gt; 
&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; title=&quot;linux_mint_original.jpg&quot; href=&quot;https://gnuheidix.de/uploads/linux_mint_original.jpg&quot;&gt;&lt;!-- s9ymdb:36 --&gt;&lt;img height=&quot;69&quot; width=&quot;110&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/linux_mint_original.serendipityThumb.jpg&quot; title=&quot;linux_mint_original.jpg&quot; /&gt;&lt;/a&gt;Als ich Linux Mint 12 ausprobierte, welches ein aussehenstechnisch
 angepasstes Gnome3 einsetzt, ist mir sofort die Fensterleiste 
aufgefallen. Diese habe ich bei meinen bisherigen Gnome3-Tests immer so 
stark vermisst, dass ich es nahezu direkt als nichtbenutzbar abstempelte
 und mich abwandte. Nach genauem Hinsehen stellte ich fest, dass das 
Gnome3 von den Entwicklern von Linux Mint mit diversen Extensions 
angepasst wurde, welche sich problemlos im laufenden Betrieb an- und 
abschalten lassen. Das Menü, welches Ihr auf dem Bild in aufgeklappter 
Form seht, finde ich nicht so hübsch. Alle Fenster, Anwendungen, 
Arbeitsflächen usw. sind meines Erachtens gut über den Knopf oben rechts
 erreichbar. Besonders gelungen finde ich das Iconset, welches ich als 
einziges nicht verändert habe.&lt;/p&gt; 
&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; title=&quot;linux_mint_aktivitaeten.jpg&quot; href=&quot;https://gnuheidix.de/uploads/linux_mint_aktivitaeten.jpg&quot;&gt;&lt;!-- s9ymdb:37 --&gt;&lt;img height=&quot;69&quot; width=&quot;110&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/linux_mint_aktivitaeten.serendipityThumb.jpg&quot; title=&quot;linux_mint_aktivitaeten.jpg&quot; /&gt;&lt;/a&gt;Das Benachrichtigungssystem in der Mitte des unteren Bildrandes 
finde ich sehr schön unauffällig, da sich die Hauptbedienelemente bei 
Gnome3 beim Arbeiten oben befinden. Lediglich in der Aktivitätenansicht 
wird man auf dem ersten Blick mit Knöpfen überhäuft. Links gibts die 
Favoriten und rechts die Arbeitsflächen. Unten rechts gibts noch nicht 
bearbeitete Nachrichten und z.B. Wechseldatenträger. In der Mitte sind 
Anwendungen verschieden kategorisiert zu finden.&lt;/p&gt; 
&lt;h3&gt;Anpassungen&lt;/h3&gt; 
&lt;p&gt;Diese Extensions sind recht schnell mit JavaScript und CSS erstellbar und können auf einer &lt;a href=&quot;https://extensions.gnome.org&quot;&gt;Gnome-Plattform&lt;/a&gt;
 veröffentlicht und direkt durch einen Klick im Browser installiert 
werden. Diese ganze Funktionalität arbeitet für ihren Alphastatus schon 
beeindruckend gut. Vorsicht ist bei dieser Ecke stets geboten, da diese 
Extensions so weit ich weiß Vollrechte haben. Ein Keylogger lässt sich 
da sicherlich perfekt verstecken. Das API ist umfangreich und man kann 
alle Ecken prima erreichen. Auch ich habe mich gestern mal &lt;a href=&quot;https://github.com/gnuheidix/gnome-shell-extension-mpriscontrol/commit/df1f4991893d7a8398e28e7f0c35464ecf5737d5&quot;&gt;an einer Extension versucht&lt;/a&gt; und so schwierig fand ich es nicht.&lt;/p&gt; 
&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; title=&quot;linux_mint_heidi.jpg&quot; href=&quot;https://gnuheidix.de/uploads/linux_mint_heidi.jpg&quot;&gt;&lt;!-- s9ymdb:38 --&gt;&lt;img height=&quot;69&quot; width=&quot;110&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/linux_mint_heidi.serendipityThumb.jpg&quot; title=&quot;linux_mint_heidi.jpg&quot; /&gt;&lt;/a&gt;Den Theme von Linux Mint finde ich zwar gelungen, aber mir hat 
schon immer der originale Gnome3-Look mit dem blauen Hintergrund 
gefallen. Ich finde das sehr beruhigend und die Infos der schwarzen 
oberen Leiste sind wegen des stärkeren Kontrasts besser lesbar.&lt;/p&gt; 
&lt;h3&gt;Möglichkeiten&lt;/h3&gt; 
&lt;p&gt;Die Systemeinstellungen sind wunderbar zusammengefasst und äußerst übersichtlich. Die Backupanwendung &lt;a href=&quot;http://wiki.ubuntuusers.de/D%C3%A9j%C3%A0_Dup&quot;&gt;Deja-Dup&lt;/a&gt;,
 welche in jedem Ubuntu nachinstalliert werden kann, bietet eine 
komfortable Möglichkeit, automatisiert Backups des Systems anzufertigen.
 Wenn Ihr diesbezüglich ein schlechtes Gewissen habt, solltet Ihr das 
mal ausprobieren.&lt;/p&gt; 
&lt;p&gt;Standardmäßig ist bei Linux Mint 12 Gnome-Zeitgeist aktiviert, 
welche sämtliche Nutzeraktivitäten loggt und bei Bedarf einsehbar macht.
 Rein prinzipiell kann man nachschauen, was man letzten Mittwoch um 
15:30 Uhr für einen Musiktitel gehört hat. Es ist praktisch ein kleiner 
Überwachungsstaat auf dem eigenen Rechner. Ich habe diese Funktion 
deaktiviert, da ich meine Dateien, Musiktitel usw. nicht so sehr 
überwachen möchte. Wenn man schließlich seine Dateien gut behandelt, 
behandeln sie einen auch gut. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt; Für andere Leute mag das sicherlich 
sinnvoll sein. Bemerkenswert finde ich die extrem einfache 
Deinstallation der Überwachung. Einfach die Zeitgeistpakete entfernen 
und fertig. Keine Anwendung ist mir unter die Augen gekommen, welche 
diesen Dienst zum Funktionieren braucht. Ich bin offenbar von KDE 
geschädigt worden, weil dort zumindest in der Version 4.7 ohne Akonadi 
und Nepomuk nichts wirklich funktioniert.&lt;/p&gt; 
&lt;h3&gt;Debian Edition&lt;/h3&gt; 
&lt;p&gt;Von Linux Mint gibt es auch eine Debian Edition. Diese basiert auf
 dem Testing-Zweig von Debian und nicht auf Ubuntu. Dies wird als 
Rolling Release betrieben, was bedeutet, das man durch die Updates stets
 ein aktuelles System hat und keine Upgrades durchführen braucht. Auch 
dieses habe ich einmal auf meinem Testlaptop installiert. Alleine der 
Punkt, dass es den &lt;a href=&quot;http://en.wikipedia.org/wiki/Advanced_Configuration_and_Power_Interface#Global_states&quot;&gt;S3-Standby&lt;/a&gt;
 nicht Out of the box hinbekommen hat, fand ich erschreckend. Das Laptop
 habe ich mir zu meinem Studiumsbeginn gekauft und es ist meines 
Erachtens schon so sehr in die Jahre gekommen, dass ich das einfach 
erwarten kann. Das von Linux Mint eingesetzte Gnome-Panel für 
Fensterleiste, Anwendungsmenü, Benachrichtigungsfeld usw. hatte öfters 
Darstellungsfehler.&lt;/p&gt; 
&lt;h3&gt;Fazit&lt;/h3&gt; 
&lt;p&gt;Als ich Lubuntu einsetzte war ich der Meinung, dass 
Arbeitsflächeneffekte überflüssig seien. Die bei Gnome3 eingesetzten 
finde ich nach ein bisschen Eingewöhnung nun richtig klasse. Tja, wenn 
man sich wirklich an etwas gewöhnen möchte und im Kopf nicht &amp;quot;die 
Rolladen runterlässt&amp;quot;, kommt man mit fast allem zurecht.&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Linux und Ich: Weihnachtsverlosung</title>
    <link>https://gnuheidix.de/archives/11-Linux-und-Ich-Weihnachtsverlosung.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:33 --&gt;&lt;!-- s9ymdb:33 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/tango-shamrock.serendipityThumb.png&quot; title=&quot;tango-shamrock.png&quot; /&gt;Christoph Langner führt in seinem &lt;a href=&quot;http://linuxundich.de/&quot;&gt;Blog&lt;/a&gt; eine &lt;a href=&quot;http://linuxundich.de/de/allgemein/die-grose-linux-und-ich-weihnachtsverlosung-2011/&quot;&gt;Weihnachtsverlosung&lt;/a&gt; durch und jeder darf mitmachen.&lt;/p&gt; 

&lt;p&gt;Die große &lt;a href=&quot;http://linuxundich.de/de/allgemein/die-grose-linux-und-ich-weihnachtsverlosung-2011/&quot;&gt;Weihnachtsverlosung&lt;/a&gt; von Christoph Langner in seinem Blog &lt;a href=&quot;http://linuxundich.de/&quot;&gt;Linux und Ich&lt;/a&gt; ist eine tolle Sache. Jeder darf mitmachen und als Hauptpreis gibt es einen kleinen Rechner zu gewinnen.&lt;/p&gt; 
&lt;p&gt;Genau genommen ist diese Gelegenheit für mich perfekt. Vor einiger
 Zeit konnte ich nämlich auf meiner PS3 noch offiziell Linux ausführen. 
Diese Funktionalität wurde sogar beim Kauf von Sony beworben und es war 
einer meiner Kaufgründe. Einen Cell-Prozessor gibt es schließlich sonst 
nur in Großrechnern von IBM. Sowas daheim zu haben und den eigenen Code 
darauf auszuführen hatte was. Ubuntu lief recht gut und ich konnte 
mittels mplayer jedes vorstellbare Videoformat in hoher Qualität 
wiedergeben.&lt;/p&gt; 
&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; title=&quot;ps3.jpg&quot; href=&quot;https://gnuheidix.de/uploads/ps3.jpg&quot;&gt;&lt;!-- s9ymdb:34 --&gt;&lt;img width=&quot;110&quot; height=&quot;96&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/ps3.serendipityThumb.jpg&quot; title=&quot;ps3.jpg&quot; /&gt;&lt;/a&gt;Leider aber hat Sony die Linuxunterstützung mittels eines 
Firmwareupdates ausgebaut. Seitdem ist diese schwarze Kiste unter meinem
 großen Monitor nur noch zum Abspielen von BluRays und gelegentlich 
einer Zockerrunde da. Der eigentliche Reiz, dieses Gerät zu verwenden, 
ist weg. Mit dem Hauptpreis hätte ich einen guten Grund, diese Kiste 
ihres Amtes zu entheben. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;Mach doch auch mit bei dieser Verlosung. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Piratenpartei: Bundesparteitag 2011.2</title>
    <link>https://gnuheidix.de/archives/10-Piratenpartei-Bundesparteitag-2011.2.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:15 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; src=&quot;https://gnuheidix.de/uploads/piraten-signet.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;Wer meine Kurzmeldungen verfolgt hat, weiß, dass ich am Bundesparteitag 
2011.2 der Piratenpartei teilnehme. In diesem Beitrag werde ich nach und
 nach ein paar Impressionen veröffentlichen.&lt;/p&gt;
&lt;p&gt;Das sind ein paar Bilder, die ich während meines Aufenthaltes beim Bundesparteitag (BPT112) aufgenommen habe.&lt;/p&gt; 
&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/Piraten/bpt112-org000.jpg&quot;&gt;&lt;!-- s9ymdb:16 --&gt;&lt;/a&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/Piraten/bpt112-org000.jpg&quot;&gt;&lt;!-- s9ymdb:16 --&gt;&lt;img width=&quot;83&quot; height=&quot;110&quot; class=&quot;serendipity_image_center&quot; src=&quot;https://gnuheidix.de/uploads/Piraten/bpt112-org000.serendipityThumb.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;Vor der Stadthalle steht das Piratenschiff &amp;quot;Orange Pearl&amp;quot;. Die Halle ist dadurch von weiten nicht zu übersehen. &lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/Piraten/bpt112-org000.jpg&quot;&gt;&lt;!-- s9ymdb:16 --&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/Piraten/bpt112-org001.jpg&quot;&gt;&lt;!-- s9ymdb:17 --&gt;&lt;img width=&quot;110&quot; height=&quot;83&quot; class=&quot;serendipity_image_center&quot; src=&quot;https://gnuheidix.de/uploads/Piraten/bpt112-org001.serendipityThumb.jpg&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p&gt;Kurz vor 10:00 Uhr sind schon sehr viele Piraten vorm Eingang der Stadthalle und warten auf die Eröffnung der Akkreditierung.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://gnuheidix.de/uploads/Piraten/bpt112-org002.jpg&quot; class=&quot;serendipity_image_link&quot;&gt;&lt;!-- s9ymdb:18 --&gt;&lt;img width=&quot;110&quot; height=&quot;83&quot; src=&quot;https://gnuheidix.de/uploads/Piraten/bpt112-org002.serendipityThumb.jpg&quot; class=&quot;serendipity_image_center&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Die Akkreditierung läuft und es geht langsam in Richtung Eingang.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://gnuheidix.de/uploads/Piraten/bpt112-org003.jpg&quot; class=&quot;serendipity_image_link&quot;&gt;&lt;!-- s9ymdb:19 --&gt;&lt;img width=&quot;110&quot; height=&quot;83&quot; src=&quot;https://gnuheidix.de/uploads/Piraten/bpt112-org003.serendipityThumb.jpg&quot; class=&quot;serendipity_image_center&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p&gt;Der mäßige Fluglärm ist hier in Offenbach nicht zu überhören, wenn man unter freiem Himmel steht.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://gnuheidix.de/uploads/Piraten/bpt112-org004.jpg&quot; class=&quot;serendipity_image_link&quot;&gt;&lt;!-- s9ymdb:20 --&gt;&lt;img width=&quot;110&quot; height=&quot;83&quot; src=&quot;https://gnuheidix.de/uploads/Piraten/bpt112-org004.serendipityThumb.jpg&quot; class=&quot;serendipity_image_center&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p&gt;Kurz vor dem Eingang nach hinten blickend ist zu sehen, dass weiterhin stetig Piraten an der Halle ankommen.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://gnuheidix.de/uploads/Piraten/bpt112-org005.jpg&quot; class=&quot;serendipity_image_link&quot;&gt;&lt;!-- s9ymdb:21 --&gt;&lt;img width=&quot;110&quot; height=&quot;83&quot; src=&quot;https://gnuheidix.de/uploads/Piraten/bpt112-org005.serendipityThumb.jpg&quot; class=&quot;serendipity_image_center&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;In der Halle kurz vor der Eröffnung. Alle bauen
 ihre Rechner samt Netzwerktechnik auf und testen die 
Internetverbindung. Zumindest ich habe von Beginn an Netz.&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://gnuheidix.de/uploads/Piraten/bpt112-org006.jpg&quot; class=&quot;serendipity_image_link&quot;&gt;&lt;!-- s9ymdb:22 --&gt;&lt;img width=&quot;110&quot; height=&quot;83&quot; src=&quot;https://gnuheidix.de/uploads/Piraten/bpt112-org006.serendipityThumb.jpg&quot; class=&quot;serendipity_image_center&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p&gt;Eine kleine Showeinlage mit Nebelwerfern zu Beginn.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://gnuheidix.de/uploads/Piraten/bpt112-org007.jpg&quot; class=&quot;serendipity_image_link&quot;&gt;&lt;!-- s9ymdb:23 --&gt;&lt;img width=&quot;110&quot; height=&quot;83&quot; src=&quot;https://gnuheidix.de/uploads/Piraten/bpt112-org007.serendipityThumb.jpg&quot; class=&quot;serendipity_image_center&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p&gt;Während der Eröffnungsrede von unserem 
Bundesvorsitzenden Sebastian Nerz ist die Halle schon sehr gut gefüllt. 
Sebastian legt uns nahe, uns nicht gegenseitig zu bekämpfen. Jeder, der 
weiß, was in letzter Zeit auf den Mailinglisten bzw. anderen 
Kommunikationsmedien los war, kann ihm nur zustimmen.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://gnuheidix.de/uploads/Piraten/bpt112-org008.jpg&quot; class=&quot;serendipity_image_link&quot;&gt;&lt;!-- s9ymdb:24 --&gt;&lt;img width=&quot;110&quot; height=&quot;83&quot; src=&quot;https://gnuheidix.de/uploads/Piraten/bpt112-org008.serendipityThumb.jpg&quot; class=&quot;serendipity_image_center&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p&gt;ein leichter Linksschwenk mit der Kamera&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://gnuheidix.de/uploads/Piraten/bpt112-org009.jpg&quot; class=&quot;serendipity_image_link&quot;&gt;&lt;!-- s9ymdb:25 --&gt;&lt;img width=&quot;110&quot; height=&quot;83&quot; src=&quot;https://gnuheidix.de/uploads/Piraten/bpt112-org009.serendipityThumb.jpg&quot; class=&quot;serendipity_image_center&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p&gt;Während der Abstimmung der Geschäfts- / Tagesordnung konnten wir unsere Ja/Nein-Karten schon mal Warm machen. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://gnuheidix.de/uploads/Piraten/bpt112-org010.jpg&quot; class=&quot;serendipity_image_link&quot;&gt;&lt;!-- s9ymdb:26 --&gt;&lt;img width=&quot;110&quot; height=&quot;83&quot; src=&quot;https://gnuheidix.de/uploads/Piraten/bpt112-org010.serendipityThumb.jpg&quot; class=&quot;serendipity_image_center&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p&gt;Auch Oliver Welke von der heute-show ist da und interviewt ein Mitglied.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://gnuheidix.de/uploads/Piraten/bpt112-org011.jpg&quot; class=&quot;serendipity_image_link&quot;&gt;&lt;!-- s9ymdb:27 --&gt;&lt;img width=&quot;110&quot; height=&quot;83&quot; src=&quot;https://gnuheidix.de/uploads/Piraten/bpt112-org011.serendipityThumb.jpg&quot; class=&quot;serendipity_image_center&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p&gt;Besonders die politische Geschäftsführerin 
Maria Weisband und der Bundesvorsitzende Sebastian Nerz durften heute 
unzählige Interviews der Presse geben.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://gnuheidix.de/uploads/Piraten/bpt112-org012.jpg&quot; class=&quot;serendipity_image_link&quot;&gt;&lt;!-- s9ymdb:28 --&gt;&lt;img width=&quot;110&quot; height=&quot;83&quot; src=&quot;https://gnuheidix.de/uploads/Piraten/bpt112-org012.serendipityThumb.jpg&quot; class=&quot;serendipity_image_center&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p&gt;Während der Diskussion von Anträgen sind stets 
Nummer und Titel der aktuell abzustimmenden Anträge auf der 
Großleinwand. Weiter war oben rechts die verbleibende Zeit für den 
aktuellen Redner eingeblendet. Redezeitbegrenzungen zwischen 60 und 90 
Sekunden haben endlose Monologe wirkungsvoll reduziert.&lt;/p&gt; 
&lt;h3&gt;Abends in der Stadt&lt;/h3&gt; 
&lt;p&gt;Gegen Ende des ersten Tages sind wir mit Shuttlebussen wieder zu 
den umliegenden Hotels gebracht worden. Meins lag zwar nicht auf deren 
Route, aber was solls. Es war eine schöne Fahrt durch Offenbach und zum 
inneren Rand von Frankfurt am Main. Imposante Gebäude waren in jeder 
Himmelsrichtung zu sehen. Meist waren sie an ihrem oberen Ende mit 
beleuchteten Logos von Banken versehen. Nachdem ich im Bus ein paar 
interessante Gespräche über so manche verrückt anmutende Themen hatte, 
hielt der Bus an seiner Endstation.&lt;/p&gt; &lt;a href=&quot;https://gnuheidix.de/uploads/Piraten/frankfurt-am-main.jpg&quot; class=&quot;serendipity_image_link&quot;&gt;&lt;!-- s9ymdb:29 --&gt;&lt;img width=&quot;110&quot; height=&quot;83&quot; src=&quot;https://gnuheidix.de/uploads/Piraten/frankfurt-am-main.serendipityThumb.jpg&quot; class=&quot;serendipity_image_right&quot; /&gt;&lt;/a&gt; 
&lt;p&gt;Die Jugendherberge Frankfurt liegt im Stadtteil Sachsenhausen und 
war ca. 10km von meinem Hotel entfernt. Mit dem GPS-Handy, Piratenflagge
 und Rucksack bewaffnet war mein Hauptziel eine große Mainbrücke. Die 
Deutschherrnbrücke war meines Erachtens mit den hellsten Scheinwerfern 
ausgestattet. Sie musste wohl besonders cool sein. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; class=&quot;emoticon&quot; /&gt; Auf ihr stehend 
war es echt atemberaubend. Der Main fließt unter einem entlang, es ist 
ruhig und in der Ferne spürt man das Zentrum der Großstadt vibrieren. 
Weiter erzeugt die Stadt einen erheblichen Lichtkegel in den 
Nachthimmel.&lt;/p&gt; 
&lt;p&gt;Nachdem ich auf dem Marktplatz keinen Bus in Richtung meines 
Hotels in der nächsten Zeit zu erwarten hatte, nahm ich einfach ein 
Taxi. Dem Taxifahrer war unser Event wohlbekannt. Er wünscht uns 
weiterhin viel Erfolg. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
&lt;h3&gt;Der zweite Tag&lt;/h3&gt; 
&lt;p&gt;&lt;a href=&quot;https://gnuheidix.de/uploads/Piraten/bpt112-org013.jpg&quot; class=&quot;serendipity_image_link&quot;&gt;&lt;!-- s9ymdb:30 --&gt;&lt;img width=&quot;110&quot; height=&quot;83&quot; src=&quot;https://gnuheidix.de/uploads/Piraten/bpt112-org013.serendipityThumb.jpg&quot; class=&quot;serendipity_image_center&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p&gt;Kurz vor 9 Uhr hat es geregnet. Dem 
entsprechend dicht gedrängt stehen wir unter dem überdachten Eingang der
 Stadthalle. Glücklicherweise können wir heute schneller in die Halle, 
da die meisten bereits akkreditiert sind und ein Vorzeigen des Armbandes
 ausreichte.&lt;/p&gt; 
&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/Piraten/bpt112-org014.jpg&quot;&gt;&lt;!-- s9ymdb:31 --&gt;&lt;img width=&quot;83&quot; height=&quot;110&quot; class=&quot;serendipity_image_center&quot; src=&quot;https://gnuheidix.de/uploads/Piraten/bpt112-org014.serendipityThumb.jpg&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p&gt;Die Tische sind wie gewohnt mit Laptops und 
Netzwerktechnik gespickt. Selbstmitgebrachte Switches und 
Mehrfachsteckdosen sind äußerst hilfreich und sollten in keinem 
Parteitagsgepäck fehlen.&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/Piraten/bpt112-org015.jpg&quot;&gt;&lt;!-- s9ymdb:32 --&gt;&lt;img width=&quot;110&quot; height=&quot;83&quot; class=&quot;serendipity_image_center&quot; src=&quot;https://gnuheidix.de/uploads/Piraten/bpt112-org015.serendipityThumb.jpg&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p&gt;Beim Verlassen des Saals muss man aufpassen, dass man nicht versehentlich durch ein laufendes Interview läuft.&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt;Ich fand diesen Parteitag äußerst gut organisiert und möchte mich 
an dieser Stelle nochmals für das unermüdliche Engagement aller 
Beteiligten bedanken. Nur die Arbeit dieser vielen Helfenden hat es 
ermöglicht, dass wir unser Programm wieder ein gutes Stück erweitern 
konnten. Die Anzahl der Piraten in einem Saal wird jedoch meines 
Erachtens bei anhaltendem Wachstum ein Problem werden. Die bereits 
bekannte Idee eines über das Bundesgebiet verteilten Parteitages mit 
Liveübertragungen wird wohl auf kurz oder lang in irgendeiner Form 
kommen. &lt;/p&gt; 
&lt;p&gt;Hoffentlich hat Euch dieser Beitrag einen kleinen Einblick ermöglicht. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>24C3: Tracker fahrn</title>
    <link>https://gnuheidix.de/archives/9-24C3-Tracker-fahrn.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:14 --&gt;&lt;img class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/tango-movie.serendipityThumb.png&quot; style=&quot;width:100px&quot; /&gt;Im Blogbeitrag BCS4: Ressourcensparen bei Websites - Ladezeit habe ich &lt;a href=&quot;http://erdgeist.org/arts/software/opentracker/&quot;&gt;opentracker&lt;/a&gt; bereits als spezialisierten Webserver vorgestellt. In den Aufzeichnungen vom 24. Chaos Communication Congress habe ich einen Talk zu diesem Projekt gefunden.&lt;/p&gt;

&lt;p&gt;Ich habe die folgende Aufzeichnung des Talks &lt;a href=&quot;http://events.ccc.de/congress/2007/Fahrplan/events/2355.de.html&quot;&gt;24C3_2355 &quot;Tracker fahrn - We Track Harder - We Track More! Take the pain out of running a Bittorrent-Tracker!&quot;&lt;/a&gt; vom 27.12.2007 hier &lt;a href=&quot;https://www.youtube.com/embed/Vzh8F408CJg&quot;&gt;verlinkt&lt;/a&gt;. Die Entwickler Erdgeist, Denis und Cristian erläutern anschaulich und in einer erfrischenden Art und Weise, welche Erfahrungen sie bei diesem Softwareprojekt sammeln konnten.&lt;/p&gt;

&lt;p&gt;Das Video stammt vom &lt;a href=&quot;http://www.ccc.de/&quot;&gt;Chaos Computer Club&lt;/a&gt; und steht unter der Lizenz &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/de/&quot;&gt;CC-BY-NC-ND-2.0&lt;/a&gt;. Viel Spaß beim Anschauen. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

&lt;h3&gt;Nachtrag&lt;/h3&gt;

&lt;p&gt;24.03.2018 - Die habe die Iframe-Einbindung aus datenschutzgründen durch einen Hyperlink ersetzt.&lt;/p&gt;
 
    </description>
</item>
<item>
    <title>gatling: Bauen und Installieren</title>
    <link>https://gnuheidix.de/archives/8-gatling-Bauen-und-Installieren.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:13 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; src=&quot;https://gnuheidix.de/uploads/tango-internet.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;Auch wenn das Medium Internet bei manchen Personen noch nicht angekommen
 ist, wird es bereits von sehr vielen Menschen zur 
Informationsbeschaffung, Kommunikation und spätestens seit facebook auch
 zur exzessiven Selbstdarstellung verwendet. In diesem Blogbeitrag 
erkläre ich kurz die ersten Schritte mit dem bei meiner Site 
eingesetzten Webserver &lt;a href=&quot;http://www.fefe.de/gatling/&quot;&gt;gatling&lt;/a&gt;.&lt;/p&gt; 

&lt;p&gt;Webserver sind aus dem heutigen Internet nicht mehr wegzudenken, da 
für die meisten Menschen das Internet nur im Webbrowser existiert. Ich 
habe mich beim Aufsetzen meiner Site für &lt;a href=&quot;http://www.fefe.de/gatling/&quot;&gt;gatling&lt;/a&gt; entschieden, da mich die Ladegeschwindigkeit von &lt;a href=&quot;http://blog.fefe.de/&quot;&gt;Fefes Blog&lt;/a&gt; einfach fasziniert. Fefe ist der Entwickler von gatling und ich finde seine &lt;a href=&quot;http://blog.fefe.de/?ts=ba7cf6d2&quot;&gt;Meinung zu langsamer Software&lt;/a&gt;
 klasse. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt; Rechner von vor 10 Jahren waren gefühlsmäßig genauso 
schnell, wie die von heute, obwohl die heutige Hardware erheblich 
leistungsfähiger ist. gut, zurück zum Thema; &lt;/p&gt; 
&lt;h3&gt;Installationsablauf&lt;/h3&gt; 
&lt;p&gt;Als erstes muss sichergestellt werden, dass die für das Bauen 
erforderliche Software installiert ist. Unter einer zu diesem Zeitpunkt 
aktuellen Ubuntuinstallation 11.10 geht das mit folgendem Befehl. Er 
installiert sämtliche notwendigen Pakete, insofern sie noch nicht 
installiert sind.&lt;/p&gt; 
&lt;pre&gt;sudo apt-get install cvs build-essential zlib1g-dev libssl-dev&lt;/pre&gt; 
&lt;p&gt;Da gatling von den zwei, ebenfalls von Fefe entwickelten, Libs 
dietlibc und libowfat abhängt, müssen wir diese im folgenden mit 
installieren. Die Abhängigkeiten lassen sich mit der 
Abarbeitungsreihenfolge dietlibc, libowfat, gatling auflösen. Das 
folgende kleine Skript beachtet diese Reihenfolge. Es holt die 
Quellcodes aus Fefes CVS, übersetzt sie und installiert nach /opt/diet. 
Zumindest zum Zeitpunkt der Erstellung dieses Blogbeitrags, wurden bei 
diesem Vorgang einige Warnings ausgegeben. Bitte beachtet, dass das 
Skript auch auf schnellen Rechnern ca. eine Minute benötigt.&lt;/p&gt; 
&lt;pre&gt;#!/bin/bash
cd ~
for i in dietlibc libowfat gatling
do
    cvs -d :pserver:cvs@cvs.fefe.de:/cvs -z9 co $i
    cd $i
    make &amp;gt; /dev/null
    sudo make install
    cd ..
done
&lt;/pre&gt; 
&lt;h3&gt;Einrichtung&lt;/h3&gt; 
&lt;p&gt;Abschließend müssen wir noch den Programmpfad /opt/diet/bin 
bekanntmachen, um den soeben installierten gatling komfortabel nutzen zu
 können. Hierzu fügen wir in die Datei /etc/environment das Verzeichnis 
/opt/diet/bin hinzu und laden diese Einstellungen.&lt;/p&gt; 
&lt;pre&gt;#!/bin/bash
k=$(grep /opt/diet/bin /etc/environment)
if [ $? -eq 0 ]
then
    echo &quot;/opt/diet/bin bereits im PATH&quot;
else
    sudo sed -i &#039;s/\(PATH=&quot;[^&quot;]*\)&quot;$/\1:\/opt\/diet\/bin&quot;/&#039; /etc/environment
fi

source /etc/environment
&lt;/pre&gt; 
&lt;p&gt;Nun dürfte gatling korrekt installiert sein. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
&lt;h3&gt;Erste Schritte&lt;/h3&gt; 
&lt;p&gt;Als erstes sollte probiert werden, ob die Manpage aufrufbar ist.&lt;/p&gt; 
&lt;pre&gt;man gatling&lt;/pre&gt; 
&lt;p&gt;Dort findet ihr erste Bedienungshinweise. Weitere sind im vorhin 
ausgecheckten gatling-Quellcodeverzeichnis in den README*-Dateien zu 
finden. Außerdem gibt es noch die &lt;a href=&quot;http://blog.gmane.org/gmane.comp.web.gatling&quot;&gt;gatling-Mailingliste&lt;/a&gt;, auf der Fefe mitliest.&lt;/p&gt; 
&lt;p&gt;Prinzipiell reicht es aus, in einem Verzeichnis, in welchem dem 
aktuellen Nutzer Leserechte eingeräumt sind, gatling ohne Parameter 
aufzurufen, um die Verzeichnisinhalte per HTTP und FTP zugreifbar zu 
machen. Die Log wird von gatling direkt auf die Standardausgabe 
geschrieben.&lt;/p&gt; &lt;a href=&quot;https://gnuheidix.de/uploads/dir-listing.png&quot; class=&quot;serendipity_image_link&quot;&gt;&lt;!-- s9ymdb:12 --&gt;&lt;img width=&quot;95&quot; height=&quot;110&quot; src=&quot;https://gnuheidix.de/uploads/dir-listing.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;&lt;/a&gt; 
&lt;pre&gt;heidi@anna:~/gnuheidix.de$ gatling
warning: could not bind to SMB port; SMB will be unavailable.
starting_up 0 :: 8000
start_ftp 0 :: 2121
accept 7 127.0.0.1 35101 1 http
GET 7 / 282 Mozilla/5.0_(X11;_Linux_x86_64;_rv:7.0.1)_Gecko/20100101_Firefox/7.0.1 [no_referrer] localhost:8000
request_done 7 325 426
&lt;/pre&gt; 
&lt;h3&gt;Abschließendes&lt;/h3&gt; 
&lt;p&gt;Zu gatling gibt es noch ein paar eindrucksvolle &lt;a href=&quot;http://bulk.fefe.de/scalability/&quot;&gt;Benchmarks&lt;/a&gt;.
 Seid vorgewarnt, wenn ihr ApacheBench einsetzt. Es kann passieren, dass
 dieses Benchmarktool mehr Ressourcen als gatling verheizt. Letztendlich
 kann es den Prozessor zu 100% auslasten, wohingegen gatling zwischen 0 
und 1% bleibt. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; class=&quot;emoticon&quot; /&gt; Beim Quellcode von gatling sind auch ein paar 
Benchmarkskripte dabei, mit denen Ihr selbst ein paar Tests fahren 
könnt, oder ich lest Euch &lt;a href=&quot;http://www.ferdianto.com/2009/08/webserver-benchmark-gatling-vs-nginx/&quot;&gt;gatling vs. nginx&lt;/a&gt; durch. Ich wünsch Euch viel Spaß beim Experimentieren.&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Barcamp Stuttgart 4: Ressourcensparen bei Websites - Ladezeit</title>
    <link>https://gnuheidix.de/archives/7-Barcamp-Stuttgart-4-Ressourcensparen-bei-Websites-Ladezeit.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:11 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/tango-appointment.serendipityThumb.png&quot; /&gt;Jeder kennt das Problem einer sich gemütlich aufbauenden Website. Die 
Ursachen für dieses Verhalten können vielfältig sein. Zum einen kann die
 Verbindung zum Webserver teilweise gestört sein und zum anderen können 
auf der  Server- und/oder Clientseite &amp;quot;teure&amp;quot; Prozesse im Gange sein, 
welche die Inhaltsdarstellung verzögern.&lt;/p&gt;
&lt;p&gt;Am zweiten Tag vom Barcamp Stuttgart 4 habe ich mich dazu 
entschlossen, eine Session zum Thema Ressourcenverbrauch und deren 
Auswirkungen auf die Ladezeit von Websites zu halten. Der Phrase &amp;quot;Besser
 spät als nie&amp;quot; folgend, ist hier nun endlich meine Zusammenfassung 
dieser Session.&lt;/p&gt; 
&lt;h3&gt;Ablauf eines Webseitenabrufs&lt;/h3&gt; 
&lt;p&gt;Der Abruf einer Webseite von einem Webserver erfolgt in einer 
Vielzahl von Einzelschritten auf Client- und Serverseite. Stark 
vereinfacht betrachtet geschieht dieser Vorgang in drei Schritten.&lt;/p&gt; 
&lt;h4&gt;Anfrage&lt;/h4&gt; 
&lt;p&gt;Ungefragt liefert kein Webserver etwas aus, da laut &lt;a href=&quot;http://de.wikipedia.org/wiki/Hypertext_Transfer_Protocol&quot;&gt;HTTP&lt;/a&gt;
 stets der Client die Initiative beim Abruf ergreifen muss. Weiter ist 
der Client dem Webserver nur während der Anfragenbearbeitung bekannt. 
Ist eine Anfrage einmal beantwortet, muss der Client bei einer 
Folgeanfrage unter Umständen gewisse Zustandsinformationen mitliefern, 
um identifiziert und korrekt behandelt werden zu können. Beispielsweise 
wird nach einem Loginvorgang an einer Webapplikation vom Client ein 
Cookie bei jeder Folgeanfrage mitgeliefert, um jede einzelne 
Benutzersitzung von der Applikation verfolgbar zu machen. &lt;/p&gt; 
&lt;h4&gt;Antwort&lt;/h4&gt; 
&lt;p&gt;Der Webserver nimmt die Anfrage entgegen, berechnet die Antwort 
und liefert sie zurück an den Client. Dabei können je nach Webserver und
 evtl. vorliegender Webapplikation mehrere Bearbeitungsschritte zur 
Beantwortung der Anfrage erforderlich sein. Hier sind ein paar 
Varianten, wie sowas aussehen kann.&lt;/p&gt; 
&lt;h4&gt;Spezialisierung&lt;/h4&gt; 
&lt;p&gt;Ein Webserver, welcher sämtliche auslieferbaren Inhalte bereits im
 Hauptspeicher vorhält und direkt versenden kann. Bei steigender 
Komplexität der Inhalte, steigt der Haupspeicherverbrauch ebenfalls an. 
Dieser Ansatz wird meist nur bei spezialisierten Webservern eingesetzt, 
welche auf einige wenige Anwendungsfälle optimiert wurden. Als bestes 
Beispiel sehe ich dabei &lt;a href=&quot;http://erdgeist.org/arts/software/opentracker/&quot;&gt;opentracker&lt;/a&gt;.&lt;/p&gt; 
&lt;h4&gt;Dateiauslieferung&lt;/h4&gt; 
&lt;p&gt;Ein Webserver, welcher Inhalte von Dateien aus einem relativ zügig
 zugreifbaren Dateisystem direkt ausliefert. Der Hauptspeicherverbrauch 
für den Webserver selbst kann dabei minimal ausfallen. Bei jeder Anfrage
 eines Clients, bestellt sich der Webserver vom Betriebssystem, in dem 
es läuft, die jeweilig angefragte Datei und liefert deren Inhalte aus. 
Nicht jeder Zugriff auf das Dateisystem muss dabei zwangsläufig in einem
 Festplattenzugriff münden. Geschickte Betriebssysteme sind in der Lage,
 die Dateizugriffe zu cachen. Finden lediglich lesende Zugriffe statt, 
ist der Cache nach dem Start des Webserver und einigen Clientanfragen 
warmgelaufen und lässt den Webserver fast so geschwind reagieren, wie 
die spezialisierte Variante mit reiner Hauptspeicherdatenhaltung. Die 
Größe des Caches hängt von der Größe des verfügbaren Hauptspeichers und 
der Konfiguration des Betriebssystems ab. Meine Website wird 
beispielsweise exakt nach diesem Prinzip von &lt;a href=&quot;http://www.fefe.de/gatling/&quot;&gt;gatling&lt;/a&gt; ausgeliefert.&lt;/p&gt; 
&lt;h4&gt;Rendern&lt;/h4&gt; 
&lt;p&gt;Besonders bei äußerst dynamischen Inhalten wird meist auf einen 
Webserver zurückgegriffen, welcher nach dem Empfang einer Anfrage 
beginnt, die Antwort erst zusammenzustellen und sie danach auszuliefern.
 In der Regel erfolgt dieser Zusammenstellungsprozess über ein Programm,
 welches verschiedene Inhaltselemente von einem Datenbankserver bezieht.
 Der Vorteil bei diesem Ansatz ist das geordnete Ablegen der Inhalte und
 derer Beziehungen zueinander in der Datenbank. Der Nachteil ist die 
Programmausführungszeit, welche mit steigender Komplexität der Inhalte 
ebenfalls ansteigen kann.&lt;/p&gt; 
&lt;h4&gt;Darstellung&lt;/h4&gt; 
&lt;p&gt;Der Client empfängt die Antwort, stellt die Webseiteninhalte dar 
und lädt bei Bedarf weitere ihm fehlende eingebundene Inhalte mittels 
weiterer Abfragen nach. Je nach Art des Clients ist dies sehr 
unterschiedlich. Programme wie &lt;a href=&quot;http://www.gnu.org/s/wget/&quot;&gt;wget&lt;/a&gt; oder &lt;a href=&quot;http://www.httrack.com/&quot;&gt;httrack&lt;/a&gt; speichern die empfangenen Daten im Dateisystem. Browser stellen die Inhalte hingegen direkt auf dem Bildschirm dar.&lt;/p&gt; 
&lt;h3&gt;Zeit sparen und Ressourcen kürzen&lt;/h3&gt; 
&lt;p&gt;In allen drei Schritten wird Zeit für die Durchführung der Abfrage
 verbraucht. Besonders wenn Webseiten mit einem Browser abgerufen 
werden, ist die benötigte Zeit erheblich, da in der Regel ein Benutzer 
aktiv darauf wartet. Ein gewisser Teil an Ressourcen wird bei jeder 
einzelnen Abfrage verbraucht, da HTTP ziemlich gesprächig ist und 
obenrein noch auf dem relativ schwerlastigen &lt;a href=&quot;http://de.wikipedia.org/wiki/Transmission_Control_Protocol&quot;&gt;TCP&lt;/a&gt;
 aufbaut. Dieser Verbrauch lässt sich nicht vermeiden. Je weniger jedoch
 für eine Abfrage neu berechnet werden muss, desto mehr Ressourcen 
werden eingespart.&lt;/p&gt; 
&lt;h4&gt;Vorberechnung von Inhalten&lt;/h4&gt; 
&lt;p&gt;Besonders bei lesendem Zugriff auf Inhalte, die nicht zwangsweise 
hochaktuell sein müssen, bietet es sich an, bereits vorgerenderte 
Inhalte auszuliefern. Beispielsweise reicht es bei den meisten 
Statistikausgaben aus, diese höchstens alle n Zeiteinheiten 
neuzuerstellen. Ein weiteres Beispiel ist die Einbindung externer 
Inhalte. Während der Benutzer auf die Abfrage wartet, ist es 
unvorteilhaft, erst einen externen Rechner einer anderen 
(administrativen, lokalen, …) Domäne nach Inhalten zu befragen. So kann 
z.B. die Einbindung von Mikrobloginhalten sonst zu erheblichen 
Wartezeiten führen, wenn dieser externe Dienst einmal nur langsam oder 
garnicht erreichbar ist.&lt;/p&gt; 
&lt;h4&gt;Arbeit verteilen&lt;/h4&gt; 
&lt;p&gt;Aus performancetechnischer Sicht ist es nicht zweckmäßig, 
Webserver mit etwas anderem als dem direkten Ausliefern von Inhalten zu 
beauftragen. Dies merkt man besonders, wenn während hunderten 
Benutzeranfragen jeweils, x-tausend Datensätze verarbeitet werden 
müssen. Besser ist es, diese Arbeit an andere Programme oder Rechner zu 
verteilen, die darauf spezialisiert sind, diese Verarbeitung 
durchzuführen. Verteilung selbstzubauen ist nicht trivial, da es dabei 
eine sehr große Menge Fehlerfälle gibt, die gefangen gehören. Man kann 
aber die Verteilung auch mit einem Framework wie &lt;a href=&quot;http://gearman.org/&quot;&gt;Gearman&lt;/a&gt;
 lösen. Der Vorteil dabei ist, dass man die eigene Anwendungslogik von 
der Gearman-Verteilungslogik klar trennen kann. Geschenkt erhält man 
dabei unter anderem Skalierbarkeit und Fehlertoleranz. Man kann also 
einfach bei Bedarf &amp;quot;Lastesel&amp;quot; hinzufügen oder entfernen, um mehr 
Rechenkapazität für den verteilten Code zu erhalten. Weiter fällt es 
kaum ins Gewicht, wenn einmal einer der &amp;quot;Lastesel&amp;quot; stirbt, da ja noch 
genügend andere seine Arbeit übernehmen können. Der Nachteil ist der 
erhöhte Verwaltungsaufwand der &amp;quot;Lastesel&amp;quot;.&lt;/p&gt; 
&lt;p&gt;Eine weitere Möglichkeit ist die Verteilung von unterschiedlichen 
Inhalten auf physikalisch getrennte Rechner. Beispielsweise könnte man 
einen oder mehrere Bilder-, Javascript-, Videoserver betreiben. Deren 
Integration kann dann im eigentlichen HTML erfolgen. Das bedeutet, dass 
z.B. drei Bilderserver per Round Robin-DNS die gleiche Arbeit verrichten
 und über bilder.DOMAIN.TLD angesprochen werden. Fällt einen von denen 
aus, ist es nicht schlimm. Fallen alle aus, sieht die Applikation etwas 
spartanischer aus, aber sie läuft weiter. Der HTML-Webserver kann sich 
so entspannt dem Ausliefern von reinen HTML-Inhalten widmen.&lt;/p&gt; 
&lt;h4&gt;Lastabhängig arbeiten&lt;/h4&gt; 
&lt;p&gt;Es ist zwar schön, wenn man eine funktionsträchtige, bunte, … 
Webapplikation gebaut hat, aber zu Spitzenlastzeiten, kann jedes noch so
 effiziente System einmal gemütlich werden. Ein Ansatz ist es, von 
Anfang an verschiedene &amp;quot;Featurestufen&amp;quot; in der Applikation zu 
realisieren. Die Last sämtlicher kritischer Systeme wird permanent 
überwacht und bei einem Engpass wird automatisch eine Featurestufe 
heruntergeschaltet, um die Last zu reduzieren und notwendige Ressourcen 
freizugeben. Mögliche Featurestufen sehen z.B. wie folgt aus.&lt;/p&gt; 
&lt;ol&gt; 
&lt;li&gt;HTML ohne weitere externe evtl. nachzuladende Einbindungen und ReadOnly-Zugriff (minimale Features)&lt;/li&gt; 
&lt;li&gt;HTML und CSS ohne Bilder und ReadOnly-Zugriff&lt;/li&gt; 
&lt;li&gt;HTML, CSS, Bilder&lt;/li&gt; 
&lt;li&gt;HTML, CSS, JavaScript, Bilder&lt;/li&gt; 
&lt;li&gt;HTML, CSS, JavaScript, Bilder, Videos, … (maximale Features)&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;Klar ist, dass je tiefer die Featurestufe ist, desto potentiell 
unschöner fühlt sich alles an. Fakt ist jedoch, dass die Verfügbarkeit 
über einen verhältnismäßig breiten Lastbereich hinweg gewährleistet ist.&lt;/p&gt; 
&lt;h4&gt;Cachingstufen&lt;/h4&gt; 
&lt;p&gt;Besonders bei zahlreichen ReadOnly-Zugriffen, kann man 
Cachinghierarchien einführen. Stark belastete Teilsysteme wie Webserver 
und Datenbanken können so vor der Beantwortung von Lesezugriffen 
geschützt werden und sich komplexeren Aufgaben wie schreibenden oder 
zustandsabhängigen Zugriffen widmen. So können Proxies wie &lt;a href=&quot;http://www.squid-cache.org/&quot;&gt;Squid&lt;/a&gt; vor potentiell langsame Webserver geschalten werden. Das perfekte Beispiel ist für mich der Webserver eines &lt;a href=&quot;http://de.wikipedia.org/wiki/Wiki&quot;&gt;Wikis&lt;/a&gt;,
 welcher sich nur noch kaum um profane Seitenaufrufe kümmern muss, wenn 
eine solche Cachingstrategie gefahren wird. Der Nachteil bei diesem 
Ansatz kann die verzögerte Auslieferung von neuen Inhalten sein. Dies 
tritt immer dann auf, wenn der Proxy die Änderung eines Datensegements 
nicht mitbekommen hat und so lange &amp;quot;alte&amp;quot; Daten ausliefert, bis das 
Maximalalter des jeweiligen Datensegments erreicht und ein Neuladen 
erzwungen wurde.&lt;/p&gt; 
&lt;h4&gt;Abfragen sparen und Inhalte komprimieren&lt;/h4&gt; 
&lt;p&gt;Wenn man eine HTML-Seite z.B. so aufbaut, dass zehn verschiedene 
CSS-, fünf JavaScript-Dateien, ein Favicon und 25 Bilder vom Client 
potentiell nachgeladen werden müssen, so wird der Seitenaufbau 
unweigerlich gemütlich werden. Fakt ist, dass jede Abfrage einen 
gewissen Overhead mit sich bringt, der in großer Menge erheblich sein 
kann.&lt;/p&gt;
&lt;p&gt;Eine Verringerung erreicht man, indem Inhalte zusammengefasst 
werden. CSS und JavaScript kann man theoretisch in jeweils eine große 
Datei packen, welche in jeweils einer Abfrage übertragen werden kann.&lt;/p&gt;
&lt;p&gt;Auch Bilder lassen sich z.B. mit &lt;a href=&quot;http://de.wikipedia.org/wiki/CSS-Sprites&quot;&gt;CSS-Sprites&lt;/a&gt; zusammenfassen. Ein Favicon kann man wunderbar Base64-kodiert ins HTML verfrachten,
 da die meist nur wenigen Bytes eines solchen Minibildes nach der 
Komprimierung den unkomprimierten HTML-Header unverhältnismäßig aussehen
 lassen. Auch diese Technik setze auf allen Seiten dieser Site ein.&lt;/p&gt; 
&lt;p&gt;Sicherstellen sollte man, dass für sämtliche textbasierten Inhalte
 die gzip-Komprimierung des Webservers aktiviert ist. Die meisten 
Clients unterstützen diese Betriebsart und es wäre eine Verschwendung an
 teurem Trafficvolumen und Bandbreite, dies nicht einzusetzen.&lt;/p&gt; 
&lt;h3&gt;Fazit&lt;/h3&gt; 
&lt;p&gt;In jeder Website und Webapplikation steckt ein gewisses 
Optimierungspotential und bei Bedarf kann man mit wenigen Handgriffen 
schon viel erreichen, um den Nutzern und den eigenen Systemen das Leben 
angenehmer zu machen. Welche Strategien man anwendet, ist sehr stark 
situationsabhängig und deren wohlüberlegte Wahl ist entscheidend. Ich 
hoffe, dass ich keine wichtigen Aspekte der Session vergessen habe und 
bedanke mich nochmal bei den Teilnehmern für die konstruktive Stunde in 
diesem Themenbereich. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
&lt;h3&gt;Anmerkung&lt;/h3&gt; 
&lt;p&gt;In diesem Blogbeitrag habe ich Systemressourcen der Wichtigkeit 
geordnet nach Netzwerk, Prozessor, Hauptspeicher und Massenspeicher 
betrachtet. Ob dies für jeden anderen Fall angemessen ist, muss 
individuell entschieden werden.&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Barcamp Stuttgart 4: Android Malware</title>
    <link>https://gnuheidix.de/archives/6-Barcamp-Stuttgart-4-Android-Malware.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:10 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; src=&quot;https://gnuheidix.de/uploads/tango-devil.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;Malware begegnet uns seit ein paar Jahren an jeder Ecke im Internet. 
Vollmundig werden auf vielen Websites gar so tolle Softwareapplikationen
 beworben, welche diese oder jene Funktionen dreimal besser erfüllen, 
als altes im Einsatz befindliches. Erst einmal installiert verbirgt 
diese Software ihre, dem Nutzer meist verborgene, Schattenseiten.&lt;/p&gt; 

&lt;p&gt;Am ersten Oktober habe ich an vielen äußerst informativen Sessions beim &lt;a href=&quot;http://bcs4.mixxt.de/&quot;&gt;Barcamp Stuttgart 4&lt;/a&gt; teilgenommen. Falls jemand nicht weiß, was ein Barcamp ist, gibt es einen kurzen und guten &lt;a href=&quot;http://de.wikipedia.org/wiki/Barcamp&quot;&gt;Wikipediaartikel&lt;/a&gt;. Auf Anfrage von &lt;a href=&quot;http://identi.ca/pawelf&quot;&gt;@pawelf&lt;/a&gt; erkläre ich nun ein wenig, was ich aus der Session &amp;quot;Android Malware&amp;quot;, welche von &lt;a href=&quot;http://twitter.com/rarspace01&quot;&gt;Denis&lt;/a&gt;
 gehalten wurde, mitgenommen habe. Ich muss übrigens klarstellen, dass 
ich weder ein Android noch ein ichPhone besitze und somit absolut nicht 
aus Erfahrungen spreche. Bitte verzeiht sämtliche eingebaute 
Ungenauigkeiten. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
&lt;h3&gt;Situation&lt;/h3&gt; 
&lt;p&gt;Zumindest auf heutigen Mobilgeräten gibt es die meiste &lt;a title=&quot;externer Link zum Wikipediaartikel&quot; href=&quot;http://de.wikipedia.org/wiki/Malware&quot;&gt;Malware&lt;/a&gt; für die &lt;a title=&quot;externer Link zum Wikipediaartikel&quot; href=&quot;http://de.wikipedia.org/wiki/Android_%28Betriebssystem%29&quot;&gt;Android-Plattform&lt;/a&gt;.
 Auch wenn diese vorgebrachte Untersuchung von einem 
Antiviren-Softwarehersteller stammt, welcher sein Geld mit in Umlauf 
befindlicher Schadsoftware verdient, kann da etwas wahres dran sein. Im 
Gegensatz zur Softwarevertriebsplattform für ichPhones, wo grundsätzlich
 und ausschließlich der Hersteller bestimmt, was Nutzer angeboten 
bekommen und somit installieren dürfen, gibt es beim Einstellen von 
Applikationen für Androidgeräte weniger Hürden. Zum einen ist der zu 
bezahlende Geldbetrag pro eingestellter Applikation niedriger und zum 
anderen wird nicht sämtliche Software vor der Freigabe in großem Umfang 
geprüft. Kurz gesagt, bekommt man relativ problemlos beliebige Software 
in die Androidsoftwareangebots- und -verteilungsinfrastruktur.&lt;/p&gt; 
&lt;h3&gt;Konkret Böse&lt;/h3&gt; 
&lt;p&gt;Beispielsweise ist ein Stück Software, welche sich dafür ausgibt, 
von einer seriösen und bekannten Firma zu stammen, dies aber in der Tat 
nicht ist, gefährlich. Normale Menschen merken es einfach nicht, wenn 
z.B. der für viele bekannte Opera-Browser auf einmal als Opara-Browser 
bezeichnet wird. Hoffend, einen guten schnellen und vertrauenswürdigen 
Browser zu installieren, haben sie auf einmal einen Browser, der 
sämtliche Passwörter und sonstige privaten Angelegenheiten an den &amp;quot;bösen
 Malwareentwickler&amp;quot; schickt, welcher diese dann potentiell Missbrauchen 
kann.&lt;/p&gt; 
&lt;h3&gt;Gegenmaßnahmen&lt;/h3&gt; 
&lt;p&gt;Android weist einen Nutzer bei der Installation einer Anwendung 
auf Gerätefunktionen hin, welche sich von der Anwendung im Zugriff 
befinden werden. Diese muss der Softwareentwickler in einer bestimmten 
Datei zur Entwicklungszeit in seiner Anwendung deklarieren. Wenn er dies
 nicht vollständig macht, gehen die in dieser Datei nicht 
bekanntgemachten Aufrufe ins leere.&lt;/p&gt; 
&lt;h3&gt;Problem&lt;/h3&gt; 
&lt;p&gt;Nutzer ignorieren solche sicherheitsrelevanten Informationen 
meistens, um schnellstmöglich die von ihnen erhoffte Funktionalität 
bereitgestellt zu haben. Dies mündet auch darin, dass Aufforderungen, 
einen bestimmten kritischen Vorgang gesondert zu autorisieren, praktisch
 im Unterbewusstsein übersprungen werden. Meist mangelt es den Nutzer 
auch einfach an ausreichendem Fachwissen, um entscheiden zu können, ob 
es gut ist, einer Anwendung, die nur Verdauungsgeräusche von sich gibt, 
Netzzugang zu erlauben.&lt;/p&gt; 
&lt;h3&gt;Lösung&lt;/h3&gt; 
&lt;p&gt;Als Lösung wurde in der Session demonstriert, wie einfach man als 
geübter Nutzer eine beliebige Androidapplikation entpackt, decompiliert 
und kritische API-Aufrufe, wie das Versenden von SMS identifiziert. 
Dieser Ansatz mag für eine sehr kleine Nutzerschicht funktionieren, aber
 der &amp;quot;Fußgänger&amp;quot; kommt damit nicht zurecht. Fakt ist, dass Quellcode 
beliebig kryptisch geschrieben sein kann und eigentliche ablaufende 
Prozesse so sehr verschleiert werden, dass es in endlicher Zeit nicht 
möglich ist, zu bestimmen, ob ein Stück Software &amp;quot;gut&amp;quot; oder &amp;quot;böse&amp;quot; ist.&lt;/p&gt; 
&lt;p&gt;Ein Vorschlag war es, einfach Reviews durchzuführen und einen 
Expertenmodus für die Verteilungsplattform, welcher standardmäßig bei 
der Geräteauslieferung deaktiviert ist, einzuführen. Ist dieser 
deaktiviert, werden nur von möglichst verschiedenen Stellen positiv 
gereviewte Softwareapplikationen zur Installation angeboten.&lt;/p&gt; 
&lt;p&gt;Auf eine einfache und allumfassende Lösung sind auch wir in der 
Session nicht gekommen. Alles in allem habe ich einen sehr guten 
Einblick bekommen, was zur Zeit in diesem Bereich alles für Gefahren und
 suboptimal gelöste Probleme existieren.&lt;/p&gt; 
&lt;p&gt;Ich bedanke mich nochmals für die tolle Session und hoffe, dass 
ich die Inhalte und Resultate nicht allzu oberflächlich wiedergegeben 
habe. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;span class=&quot;fett&quot;&gt;Update:&lt;/span&gt; &lt;a href=&quot;http://www.slideshare.net/trest/android-malware-erkennen-und-verstehen-9520124&quot;&gt;Slides der Session&lt;/a&gt; &lt;/p&gt; 
    </description>
</item>
<item>
    <title>Passwörter: Länge ist nicht alles (2)</title>
    <link>https://gnuheidix.de/archives/5-Passwoerter-Laenge-ist-nicht-alles-2.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:8 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/tango-executable.serendipityThumb.png&quot; /&gt;Ein &lt;a href=&quot;http://de.wikipedia.org/wiki/Brute-Force-Methode&quot; title=&quot;Externer Link zum Wikipediaartikel&quot;&gt;Brute-Force-Angriff&lt;/a&gt;
 - ein Durchprobieren sämtlicher Kombinationen - kann sich ziemlich in 
die Länge ziehen und sich ab einer bestimmten Passwortkomplexität nicht 
mehr rentieren. Dies habe ich im letzten Blogbeitrag
 gezeigt. In diesem erkläre ich, in welcher Form Passwörter in 
Computersystemen heutzutage gespeichert werden und demonstriere kurz, 
was ein Brute-Force-Angriff auf dem Prozessor einer Grafikkarte leisten 
kann.&lt;/p&gt; 


&lt;p&gt;Früher wurden Passwörter so abgespeichert, wie sie der Nutzer in das 
System eingegeben hat. Diese Klartextspeicherung hat allerdings einen 
riesigen Nachteil. Wenn sich ein Angreifer einmal Zugang zum System 
verschafft hat, kann er im schlimmsten Fall sämtliche Passwörter aller 
Nutzer einsehen und potentiell Missbrauchen.&lt;/p&gt; 
&lt;h3&gt;Passwortspeicherung in heutigen Systemen&lt;/h3&gt; 
&lt;p&gt;In heutigen Systemen werden Passwörter unter Verwendung von &lt;a href=&quot;http://de.wikipedia.org/wiki/Hashfunktion&quot; title=&quot;Externer Link zum Wikipediaartikel&quot;&gt;Hashfunktionen&lt;/a&gt;
 bei der Passwortspeicherung in Hashwerte umgerechnet. Hashfunktionen 
arbeiten prinzipbedingt nur in eine Richtung. Immer wenn ein Passwort 
von einem Nutzer eingegeben wird, findet diese Berechnung statt. Am Ende
 wird lediglich der gespeicherte Hashwert mit dem vom eingegebenen 
Passwort verglichen. Stimmen beide überein, hat der Nutzer das korrekte 
Passwort eingegeben. Hier ein Beispiel mit dem Passwort &amp;quot;26.09.2011&amp;quot;, 
welches in die Hashfunktion &lt;a href=&quot;http://de.wikipedia.org/wiki/Secure_Hash_Algorithm&quot; title=&quot;Externer Link zum Wikipediaartikel&quot;&gt;SHA1&lt;/a&gt; eingegeben wird.&lt;/p&gt; 
&lt;pre&gt;heidi@julia:~$ echo -n &quot;26.09.2011&quot; | sha1sum
c29e802c6ccef536e588caf8f8a782d9aea06f80  -
&lt;/pre&gt; 
&lt;p&gt;Passwörter, die in dieser &amp;quot;geschredderten&amp;quot; Form gespeichert sind,
 können wegen des Einwegcharakters der Hashfunktion nur schwer 
missbraucht werden.&lt;/p&gt; 
&lt;h3&gt;Schwach bleibt schwach&lt;/h3&gt; 
&lt;p&gt;Bei einem bekannten Hashwert eines in Verwendung befindlichen Passworts, kann ebenfalls der &lt;a href=&quot;http://de.wikipedia.org/wiki/Brute-Force-Methode&quot; title=&quot;Externer Link zum Wikipediaartikel&quot;&gt;Brute-Force-Angriff&lt;/a&gt;
 eingesetzt werden. Am besten sind diese Angriffe mithilfe von 
Streamprozessoren aus heutigen Grafikkarten durchzuführen. Wer 
beispielsweise eine aktuelle der Firma Nvidia besitzt, kann &lt;a href=&quot;http://www.cryptohaze.com/multiforcer.php&quot;&gt;Cryptohaze Multiforcer&lt;/a&gt;
 einsetzen. Dieses Programm ist darauf spezialisiert, für einen 
gegebenen Hashwert den zugehörigen Eingabewert zu finden. Auf das 
aktuelle Beispiel angewendet, sieht die Bedienung wie folgt aus. Ich 
speichere den zu brechenden Hashwert und den einzusetzenden Zeichensatz 
in jeweils eine Datei. Im Anschluss starte ich das Programm und gebe ihm
 noch mit, dass es sich um einen Hashwert der SHA1-Hashfunktion handelt.&lt;/p&gt; 
&lt;pre&gt;heidi@julia:~$ echo c29e802c6ccef536e588caf8f8a782d9aea06f80 &amp;gt; hash
heidi@julia:~$ echo &quot;0123456789.&quot; &amp;gt; charset
heidi@julia:~$ ./Cryptohaze-Multiforcer -f hash -c charset -h SHA1&lt;/pre&gt; &lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/multiforcer.png&quot;&gt;&lt;!-- s9ymdb:9 --&gt;&lt;img width=&quot;110&quot; height=&quot;77&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/multiforcer.serendipityThumb.png&quot; /&gt;&lt;/a&gt; 
&lt;p&gt;Während das Programm läuft merkt man sofort, dass der Lüfter der 
Grafikkarte seine Drehzahl hochfährt und ein Blick in das 
Nvidia-Steuerungsprogramm zeigt, dass die Temperaturen ein hohes Niveau 
erreicht haben. Weiter steigt der Energieverbrauch der Grafikkarte 
massiv an. Ich vermute, dass selbst bei heutigen 3D-Spielen nur selten 
eine so hohe Dauerbelastung vorkommt. Im Bildschirmfoto ist zu sehen, 
dass rund 150&amp;#160;Mio. Kombinationen pro Sekunde vom System bearbeitet 
werden. Verglichen mit den 30.000 aus dem letzten Blogbeitrag,
 ist das ein gewaltiger Unterschied und zeigt einmal mehr, dass 
Passwörter wohlüberlegt gewählt werden sollten. Nach weniger als einer 
Minute beendet sich das Programm und gibt die Lösung aus.&lt;/p&gt; 
&lt;pre&gt;C29E802C6CCEF536E588CAF8F8A782D9AEA06F80:26.09.2011&lt;/pre&gt; 
&lt;h3&gt;Grenzen&lt;/h3&gt; 
&lt;p&gt;Auch wenn das Finden der Lösung innerhalb einer Minute sehr 
eindrucksvoll erscheinen mag, muss eines bei der Bewertung dieses 
Ergebnisses beachtet werden. Der Zeichensatz war mit &amp;quot;0123456789.&amp;quot; nur 
elf Stellen breit. Je breiter dieser wäre, um so länger hätte mein 
Rechner benötigt, um auf die Lösung zu kommen, da so erheblich mehr 
Kombinationen probiert werden müssten. Bei einem echten Angriff gegen 
Hashwerte von Passwörtern ist ein solch gearteter Angriff nicht 
sonderlich effizient, da prinzipiell von einem breiten Zeichensatz 
ausgegangen werden muss. Allerdings reicht er völlig aus, um z.B. alle 
Hashwerte, die aus einem Datum bestehen, zu brechen.&lt;/p&gt; 
&lt;p&gt;Diesen vertiefenden Beitrag rund um Brute-Force-Angriffe habe ich 
wegen der durchweg positiven Rückmeldungen zum letzten Artikel erstellt.
 Ich hoffe er hat durch das praktische Beispiel verdeutlicht, was mit 
geschickter Verwendung vorhandener Technologien trotz eines naiven 
Durchprobieransatzes alles erreicht werden kann. &lt;/p&gt; 
    </description>
</item>
<item>
    <title>Passwörter: Länge ist nicht alles</title>
    <link>https://gnuheidix.de/archives/4-Passwoerter-Laenge-ist-nicht-alles.html</link>

    <description>
        &lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/tango-unlocked.png&quot;&gt;&lt;!-- s9ymdb:6 --&gt;&lt;/a&gt;&lt;!-- s9ymdb:6 --&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; src=&quot;https://gnuheidix.de/uploads/tango-unlocked.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;Passwörter sind Teil unseres Lebens geworden. Nichts geht mehr ohne sie.
 Wo früher noch ein &amp;quot;Guten Tag&amp;quot; und eine Unterschrift auf einem Stück 
Papier beim wohlbekannten Pförtner genügte, muss heute die Identität für
 die Autorisierung von schützenswerten Vorgängen über Passwörter geprüft
 werden. &lt;/p&gt; 

&lt;p&gt;Der Grund für die exzessive Nutzung von Passwörtern in der heutigen 
Zeit liegt auf der Hand. Computer können mit einem Krakel auf einem 
Stück Papier nur bedingt etwas anfangen. Zu fehleranfällig ist die 
optische Auswertung einer menschlichen Unterschrift. Dies ist darin 
begründet, dass Menschen zu viele Fehler machen. Jede menschliche 
Unterschrift ist ein Unikat und Computerprogramme können diese 
zwangsläufig entstehenden Abweichungen zum gespeicherten Original nicht 
genau genug herausrechnen. Entweder der Erkennungsalgorithmus wäre zu 
streng und würde nur jeden tausendsten Versuch von ein und demselben 
Menschen akzeptieren oder er wäre zu lax und würde jede Unterschrift 
akzeptieren, die ein wenig nach dem gespeicherten Krakel &amp;quot;riecht&amp;quot;.&lt;/p&gt; 
&lt;h3&gt;Computer lieben Passwörter&lt;/h3&gt; 
&lt;p&gt;Passwörter sind anders. Sie sind klar definiert, Computer können 
sie problemlos abspeichern und solange keine hundertprozentige 
Übereinstimmung nach einer Eingabe vorliegt, wird der Vorgang nicht als 
autorisiert betrachtet. Das Problem dabei ist aber, dass sich Menschen 
lange Zeichenkolonnen nur schwer merken können. Je mental 
unzusammenhängender die Zeichen eines Passworts gewählt sind, desto 
kürzer muss es für einen Menschen sein, damit es einigermaßen sicher im 
Gedächtnis gehalten werden kann.&lt;/p&gt; 
&lt;h3&gt;Schon wieder ein neues Passwort&lt;/h3&gt; 
&lt;p&gt;Jeder war schon in dieser Situation. Man wird von einem System 
gefragt, welches Passwort man doch gerne benutzen möchte. Der meines 
Erachtens einfachste Weg ist es, die vierstellige PIN der EC-Karte zu 
verwenden. Diese Nummer braucht man im täglichen Leben verhältnismäßig 
häufig und das Vergessen ist durch diesen Umstand und die geringe 
Komplexität der vierstelligen Ziffernfolge unwahrscheinlich. Dieser 
Ansatz klappt in den meisten Fällen allerdings nicht, da heutige Systeme
 eine Mindestpasswortlänge vorschreiben. Erst neulich hat mich das 
Kundenportal eines Online-Shops aufgefordert, für die Registrierung ein 
mindestens achtstelliges Passwort einzugeben.&lt;/p&gt; 
&lt;h3&gt;Menschen können langsam sein&lt;/h3&gt; 
&lt;p&gt;Kurze Passwörter haben den Nachteil, dass sie durch einfaches 
Ausprobieren der möglichen Zeichenkombinationen herauszufinden sind. 
Beispielsweise hat ein dreistelliges aus Dezimalziffern bestehendes 
Passwort 1000 mögliche Kombinationen. Beginnend bei 000 hat ein Mensch 
bei einem primitiven Kofferschloss verhältnismäßig lange zu tun, bis er 
alle Kombinationen zur 999 ausprobiert hat. Angenommen er benötigt für 
das Einstellen einer neuen Kombination und dem Probieren, ob der Koffer 
nun geöffnet ist, drei Sekunden, so erfordert das Knacken im 
schlechtesten Fall 50 Minuten. Ungeduldige Menschen kann dies von 
unbefugtem Öffnen abhalten. &lt;/p&gt; 
&lt;h3&gt;Computer sind manchmal schneller&lt;/h3&gt; 
&lt;p&gt;Computer sind bei repetitiven Aufgabenstellungen meist erheblich 
schneller als Menschen. Beispielsweise hat mir mein Internetprovider bis
 vor ein paar Monaten die Monatsabrechnung per E-Mail zugesandt. An der 
E-Mail hing stets ein verschlüsseltes PDF, welches mit einem 
neunstelligen Zifferncode geschützt war. Dieser Zifferncode war meine 
Kundennummer und als sich diese beim Wohnungsumzug geändert hat, war ich
 nicht mehr in der Lage, die Rechnung zu lesen. Die Kundennummer steht 
in der Rechnung und ich komme nicht ran, da sie verschlüsselt ist. Eine 
verzwickte Situation möchte man meinen.&lt;/p&gt; 
&lt;h3&gt;&lt;a href=&quot;http://pdfcrack.sourceforge.net/&quot;&gt;pdfcrack&lt;/a&gt;&lt;/h3&gt; 
&lt;p&gt;Glücklicherweise habe ich das Werkzeug &lt;a href=&quot;http://pdfcrack.sourceforge.net/&quot;&gt;pdfcrack&lt;/a&gt; in den Paketquellen meines Betriebssystems entdeckt.&lt;/p&gt; 
&lt;pre&gt;heidi@julia:~$ apt-cache search pdf knack
pdfcrack - Passwörter von PDF-Dateien knacken&lt;/pre&gt; &lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/pdfcrack.png&quot;&gt;&lt;!-- s9ymdb:5 --&gt;&lt;img width=&quot;110&quot; height=&quot;78&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/pdfcrack.serendipityThumb.png&quot; /&gt;&lt;/a&gt; 
&lt;p&gt;Nach erfolgter Installation und habe ich es auf die verschlüsselte
 Rechnung &amp;quot;gehetzt&amp;quot;, um endlich meine neue Kundennummer zu erfahren. 
Eingestellt habe ich dabei, dass die Passwortlänge exakt neun Stellen 
hat und dass der zu verwendende Zeichenvorrat die zehn möglichen Ziffen 
unseres Dezimalsystems umfassen soll.&lt;/p&gt; 
&lt;pre&gt;heidi@julia:~$ pdfcrack -f rechnung.pdf -n 9 -m 9 -c 0123456789&lt;/pre&gt; 
&lt;p&gt;Mit den ca. 30.000 Versuchen pro Sekunde hätte mein ca. zwei Jahre
 alter Computer im schlechtesten Fall etwa 9,5 Stunden gebraucht. Dies 
ist kurz im Vergleich zu menschlichem Ausprobieren, aber wenn man 
bedenkt, dass pdfcrack lediglich auf den Hauptprozessor meines Computers
 zurückgegriffen hat, ist die Situation noch viel brisanter. Der 
Hauptprozessor heutiger Standardcomputer ist für diese Art von 
Berechnungen verhältnismäßig ungeeignet, da er für das Probieren einer 
Kombination eine Vielzahl verschiedener Lade-, Vergleichs- und 
Speicheroperationen immer wieder nacheinander durchführen muss. Viel 
besser geeignet sind stattdessen &lt;a href=&quot;http://de.wikipedia.org/wiki/Streamprozessor&quot; title=&quot;Externer Link zum Wikipediaartikel&quot;&gt;Streamprozessoren&lt;/a&gt;,
 die in heutigen Grafikkarten zu finden sind. Sie sind darauf 
spezialisiert, gleiche Operationen auf eine riesige Menge an Daten 
anzuwenden. Man kann es sich so vorstellen, dass der Streamprozessor 
einmal auf die durchzuführenden Operationen eingestellt wird und im 
Anschluss die Datenmengen &amp;quot;nur noch&amp;quot; nacheinander durchgeschoben werden.
 Im Passwortbeispiel wären das die vielen möglichen Passwörter. Mit 
leistungsfähigen Streamprozessoren heutiger Generation sind Raten von 
weit über einer Million Versuchen pro Sekunde möglich.&lt;/p&gt; 
&lt;h3&gt;Die Mischung machts&lt;/h3&gt; 
&lt;p&gt;Nicht nur die Länge eines gewählten Passworts ist wichtig. Auch 
die Breite des eingesetzten Zeichensatzes ist erheblich. Auch noch so 
schnelle Prozessoren können es momentan nicht mit endlichem Zeitaufwand 
schaffen, ein z.B. achtstelliges Passwort bestehend aus Ziffern, 
Buchstaben und Zeichen wie z.B. S$1äö§fG über den Ansatz des naiven 
Ausprobierens zu knacken. Auch wenn diese Passwörter relativ komplex 
sind, ist es durchaus möglich, gut merkbare Passwörter zu wählen. 
Welches am besten merkbar und trotzdem sicher ist, muss jeder selbst 
entscheiden.&lt;/p&gt; 
&lt;p&gt;Ich hoffe, dass dieser Beitrag ausreichend veranschaulicht hat, wie ein sogenannter &lt;a href=&quot;http://de.wikipedia.org/wiki/Brute-Force-Methode&quot; title=&quot;Externer Link zum Wikipediaartikel&quot;&gt;Brute-Force-Angriff&lt;/a&gt;
 gegen einen verschlüsselten Container funktioniert. Weitere Arten von 
möglichen Angriffen gibt es in einem der nächsten Blogbeiträge. 
Hoffentlich war dieser nicht zu lang(weilig). &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Lubuntu: Mein Lieblings*buntu</title>
    <link>https://gnuheidix.de/archives/3-Lubuntu-Mein-Lieblingsbuntu.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:104 --&gt;&lt;img height=&quot;100&quot; width=&quot;100&quot; src=&quot;https://gnuheidix.de/uploads/lubuntu100.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;Ich habe bereits einige &lt;a href=&quot;http://de.wikipedia.org/wiki/Linux-Distribution&quot;&gt;Linuxdistributionen&lt;/a&gt; ausprobiert, aber bisher erfüllt keine andere meine Ansprüche für den täglichen Einsatz so gut, wie das Ubuntuderivat &lt;a href=&quot;http://lubuntu.net&quot;&gt;Lubuntu&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Ich mag &lt;a href=&quot;http://ubuntu.com&quot;&gt;Ubuntu&lt;/a&gt;. Dies liegt mit hoher 
Wahrscheinlichkeit daran, dass ich bisher die meiste Zeit mit dieser 
Distribution verbracht habe. Besonders gefällt mir dabei, dass die 
Standardeinstellungen vieler Softwarepakete, wenn überhaupt nur noch 
wenig Nacharbeit erfordern. Falls ich beispielsweise VirtualBox 
installieren möchte, schaffe ich das mit einem einzigen &lt;span title=&quot;sudo apt-get install virtualbox-ose&quot;&gt;Befehl°&lt;/span&gt;. Ich muss mir keinerlei Gedanken über eventuell notwendige Kernelmodule, Menüverknüpfungen usw. machen. &lt;/p&gt; 
&lt;p&gt;Seitdem sich nun die Ubuntuentwickler in 2010 für den Einsatz von &lt;a href=&quot;http://unity.ubuntu.com/&quot;&gt;Unity&lt;/a&gt;
 entschieden haben, komme ich mit der standardmäßig installierten 
Benutzeroberfläche nicht mehr zurecht. Für mich und meine Gewohnheiten 
war und ist der Unterschied im Bedienkonzept einfach zu groß, um mich in
 endlicher Zeit so umorientiert zu haben, dass ich die gleiche 
Arbeitsgeschwindigkeit wie vor der Umstellung erreiche. &lt;a href=&quot;http://gnome.org/&quot;&gt;Gnome&lt;/a&gt;&amp;#160;2
 anstelle von Unity einfach weiterzuverwenden, war leider nicht möglich,
 da die Gnomeentwickler in der neuen Version Gnome&amp;#160;3 ebenfalls einige 
Änderungen im Bedienkonzept vornahmen, mit denen ich nicht direkt 
zurechtkam. In meiner täglichen Arbeit habe ich die folgenden 
Anforderungen an ein &lt;a href=&quot;http://en.wikipedia.org/wiki/Desktop_environment&quot; title=&quot;Externer Link zur englischen Wikipedia&quot;&gt;Desktop Environment&lt;/a&gt;:&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;schonender Umgang mit Systemressourcen - Die eigentlichen 
Anwendungen wie Firefox, Eclipse, VirtualBox, LibreOffice, Evolution, 
Nautilus usw. haben schließlich einen enormen Ressourcenbedarf.&lt;/li&gt; 
&lt;li&gt;mehrere Desktops&lt;/li&gt; 
&lt;li&gt;mehrere frei verschiebbare Fenster auf jedem Desktop möglich&lt;/li&gt; 
&lt;li&gt;eine permanent sichtbare und auswählbare Liste an Fenstern des aktiven Desktops&lt;/li&gt; 
&lt;li&gt;eine falls vorhanden permanent sichtbare Titel- und Menüleiste an jedem Fenster&lt;/li&gt; 
&lt;li&gt;ein permanent erreichbares Menü mit installierten Anwendungen&lt;/li&gt; 
&lt;li&gt;frei konfigurierbares Maus- und Tastaturverhalten&lt;/li&gt; 
&lt;li&gt;Fensteroptionen
     





&lt;ul&gt; 
&lt;li&gt;Schließen&lt;/li&gt; 
&lt;li&gt;Minimieren&lt;/li&gt; 
&lt;li&gt;Größe ändern&lt;/li&gt; 
&lt;li&gt;Maximieren&lt;/li&gt; 
&lt;li&gt;immer im Vordergrund&lt;/li&gt; 
&lt;li&gt;auf anderen Desktop verschieben&lt;/li&gt; 
&lt;li&gt;Vollbildmodus&lt;/li&gt; 
&lt;/ul&gt; 
&lt;/li&gt; 
&lt;li&gt;permanent sichtbare Basisinformationen
     





&lt;ul&gt; 
&lt;li&gt;Datum und Uhrzeit&lt;/li&gt; 
&lt;li&gt;Netzwerkstatus&lt;/li&gt; 
&lt;li&gt;Prozessorlast&lt;/li&gt; 
&lt;li&gt;Speicherlast&lt;/li&gt; 
&lt;li&gt;Akkufüllstand (bei Mobilgeräten)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;/li&gt; 
&lt;li&gt;keine Bewegungen oder Animationen&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Da all diese Punkte meines Erachtens nicht bzw. nicht ausreichend 
von Unity oder Gnome&amp;#160;3 erfüllt wurden, musste ich also einen Ersatz für 
das in Ubuntu bald nicht mehr unterstützte Desktop Environment Gnome&amp;#160;2 
finden, das ich im Laufe der Jahre so schätzen gelernt habe. Das 
Ubuntuderivat &lt;a href=&quot;http://kubuntu.org/&quot;&gt;Kubuntu&lt;/a&gt; habe ich bereits bei Kollegen öfters benutzen dürfen. Das dort eingesetzte &lt;a href=&quot;http://kde.org/&quot;&gt;KDE&lt;/a&gt;
 erfüllt nahezu all meine Anforderungen, allerdings sind viele der 
angebotenen Funktionen teilweise instabil. Dies in Kombination mit dem 
relativ hohen Ressourcenbedarf, hat dazu geführt, dass ich KDE als 
Alternative im Auge behalte, aber zumindest momentan als für mich nicht 
passend betrachte.&lt;/p&gt; &lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://gnuheidix.de/uploads/lubuntu-menu.png&quot;&gt;&lt;!-- s9ymdb:4 --&gt;&lt;img height=&quot;86&quot; width=&quot;110&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/lubuntu-menu.serendipityThumb.png&quot; /&gt;&lt;/a&gt; 
&lt;p&gt;Als ich eines Abends auf Lubuntu stieß, war ich von der 
Einfachheit sämtlicher Komponenten überrascht. Ein so minimalistisches 
Anwendungsmenü hatte ich zuletzt bei Windows&amp;#160;95 gesehen. Es gibt keine 
Möglichkeit, dort per Maus Einträge zu verschieben oder zu löschen. Die 
Einträge müssen in einem &lt;span title=&quot;/usr/share/applications&quot;&gt;Systemverzeichnis°&lt;/span&gt;
 per Hand verwaltet werden. Ähnlich funktioniert es mit der 
Konfiguration der Tastenkombinationen und des Mausverhaltens. Ein 
Programm suchte ich vergeblich bis ich auf eine große &lt;span title=&quot;~/.config/openbox/lubuntu-rc.xml&quot;&gt;XML-Datei°&lt;/span&gt;
 im Benutzerprofil stieß. Mit ein wenig Übung konnte ich die 
Konfiguration sehr gut überschauen und im Nachhinein finde ich es schön,
 dass die Einstellungen nur an diesen Stellen gesetzt werden. So muss 
ich nicht in verschiedenen Konfigurationstools nach etwas suchen. Im 
Zweifel brauche ich nur eine Suche innerhalb von Dateien oder 
Verzeichnissen absetzen und schon finde ich, was ich will. Auch wenn die
 Konfiguration nicht direkt auf Anhieb von der Hand geht, erfüllt 
Lubuntu und dessen &lt;a href=&quot;http://lxde.org&quot;&gt;LXDE&lt;/a&gt; praktisch meine sämtlichen Anforderungen. Lediglich eine Speicherlastanzeige musste ich selbstprogrammieren.&lt;/p&gt; 
&lt;p&gt;Über meine Erfahrungen mit Lubuntu werde ich in ein paar 
Blogbeiträgen demnächst etwas detaillierter eingehen. Verweisen möchte 
ich an dieser Stelle auch nocheinmal auf die Lubuntu Screencasts, die 
man auf der &lt;a href=&quot;http://lubuntu.net&quot;&gt;Lubuntu-Website&lt;/a&gt; anschauen kann.&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Blog-Stöckchen: Darum mag ich Foobar! - Evolution</title>
    <link>https://gnuheidix.de/archives/2-Blog-Stoeckchen-Darum-mag-ich-Foobar!-Evolution.html</link>

    <description>
        &lt;p&gt;&lt;!-- s9ymdb:103 --&gt;&lt;img height=&quot;100&quot; width=&quot;100&quot; src=&quot;https://gnuheidix.de/uploads/Mail-closed.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;Auch wenn ich meiner Webseite und damit besonders dieser Blogfunktion
 noch einige Funktionalitäten schuldig bin, fange ich nun einfach einmal
 an. Mein eigentliches Ziel ist es schließlich Inhalte zu produzieren 
und nicht ewig und drei Tage an der Technik zu feilen. Der Grund für 
diesen Sinneswandel war der Beitrag von &lt;a href=&quot;http://www.miradlo.net/bloggt/tipps/blog-stoeckchen-darum-mag-ich-foobar-gimp-batch&quot;&gt;Ute über GIMP&lt;/a&gt;, in welchem sie die &lt;a href=&quot;http://linuxundich.de/de/allgemein/blog-stockchen-darum-mag-ich-foobar/&quot;&gt;Idee von Christoph&lt;/a&gt; aufgreift.&lt;/p&gt;
&lt;p&gt;Mailprogramme sind wie Religionen. Jeder hat seine besonderen 
Gründe, einige legen sich nicht fest und manche kommen auch ohne prima 
zurecht. Im Bezug auf Religionen traf für mich bisher stets letzteres 
zu, aber im Bezug auf Mailprogramme kommt für mich seit meines 
Linuxumstiegs in 2007 nur &lt;a href=&quot;http://projects.gnome.org/evolution/features.shtml&quot;&gt;Evolution&lt;/a&gt; in Frage. &lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;Seit meines Betriebssystemumstiegs in 2007 bin ich zumindest privat stets von Linuxmaschinen umgeben. Die &lt;a href=&quot;http://de.wikipedia.org/wiki/Linux-Distribution&quot;&gt;Distribution&lt;/a&gt; &lt;a href=&quot;http://de.wikipedia.org/wiki/Ubuntu&quot;&gt;Ubuntu&lt;/a&gt; bzw. &lt;a href=&quot;http://de.wikipedia.org/wiki/Lubuntu&quot;&gt;Lubuntu&lt;/a&gt;
 ist für mich seitdem mein Mittel der Wahl. Da ich damals als Einsteiger
 die erdrückend anmutende Auswahl an verschiedenen Mailprogrammen nicht 
überblicken konnte, fing ich einfach an, das standardmäßig installierte 
Mailprogramm &lt;a href=&quot;http://projects.gnome.org/evolution/features.shtml&quot;&gt;Evolution&lt;/a&gt; zu nutzen und habe es im Laufe der Zeit sehr schätzen gelernt.&lt;/p&gt; 
&lt;p&gt;In der täglichen Arbeit mit E-Mails bevorzuge ich grundsätzlich 
Mailprogramme, da diese speziell für den Zweck der Mailverwaltung gebaut
 sind. Sie sind in der Lage E-Mails in geordneter Form auf dem eigenen 
Rechner vorzuhalten. Weiter bieten sie einen schnelleren Zugang als 
Browser, da sie exakt wissen, welche Daten sie wo abholen müssen, ohne 
sich dabei groß Gedanken über die Darstellung machen zu müssen.&lt;/p&gt; 
&lt;h3&gt;Evolution&lt;/h3&gt; 
&lt;p&gt;Die &lt;a href=&quot;http://de.wikipedia.org/wiki/Arbeitsumgebung#Desktop-Umgebung&quot;&gt;Desktopumgebung&lt;/a&gt; &lt;a href=&quot;http://de.wikipedia.org/wiki/GNOME&quot;&gt;GNOME&lt;/a&gt;,
 welche bis vor kurzem in Ubuntu zum Einsatz kam, bietet Nutzern 
standardmäßig Evolution als Mailprogramm an. In diesem Beitrag möchte 
ich zwei Funktionen von Evolution hervorheben, die ich beim Ausprobieren
 anderer Mailprogramme dort oft nicht vorfand.&lt;/p&gt; 
&lt;h4&gt;Einstellungen sichern und wiederherstellen&lt;/h4&gt; &lt;!-- s9ymdb:3 --&gt; 
&lt;h3&gt;&lt;a href=&quot;https://gnuheidix.de/uploads/evolution-menu-einstellungen-sichern.png&quot; class=&quot;serendipity_image_link&quot;&gt;&lt;!-- s9ymdb:2 --&gt;&lt;img height=&quot;68&quot; width=&quot;110&quot; src=&quot;https://gnuheidix.de/uploads/evolution-menu-einstellungen-sichern.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;&lt;/a&gt;&lt;/h3&gt; 
&lt;p&gt;Ist Evolution einmal eingerichtet, kann man sämtliche E-Mails und
 Einstellungen im Handumdrehen auf beliebig viele andere Rechner, VMs 
oder Installationen übertragen. Beim ersten Start von Evolution in einem
 neuen Benutzerkonto bietet es komfortablerweiser an, eine solche 
Sicherung zu importieren. Wenn man dies macht, ist die gesamte 
Einrichtung im selben Augenblick abgeschlossen. Lediglich die Passwörter
 zu den Mailkonten werden - vermutlich aus Sicherheitsgründen - nicht 
mit übertragen. Diese Funktion habe ich bisher eingesetzt, um vor einem 
Upgrade der Distribution eine Sicherung zu erstellen und um den 
Datenstand von meinem Laptop auf meine anderen Rechner zu übertragen.&lt;/p&gt; 
&lt;h4&gt;Lokalen Postfix einbinden&lt;/h4&gt; &lt;!-- s9ymdb:2 --&gt;&lt;a href=&quot;https://gnuheidix.de/uploads/evolution-mbox.png&quot; class=&quot;serendipity_image_link&quot;&gt;&lt;!-- s9ymdb:3 --&gt;&lt;img height=&quot;110&quot; width=&quot;107&quot; src=&quot;https://gnuheidix.de/uploads/evolution-mbox.serendipityThumb.png&quot; class=&quot;serendipity_image_right&quot; /&gt;&lt;/a&gt; 
&lt;p&gt;Da ich momentan als Webentwickler arbeite, habe ich oft die 
Aufgabe, aus Anwendungen heraus E-Mails zu versenden. Auf meiner 
Entwicklermaschine habe ich aus diesem Grund stets Postfix laufen, 
welcher auf die E-Mailadresse heidi@&amp;lt;rechnername&amp;gt;.info lauscht. 
Sobald beispielsweise ein PHP-Skript nun eine E-Mail an diese Adresse 
sendet, stellt sie der lokale Postfix in eine mbox-Datei. Zur Kontrolle,
 ob die E-Mail ein korrektes Format hat, könnte ich zwar einfach diese 
Datei in einem Editor öffnen, komfortabler ist es jedoch mit der 
mbox-Postfacheinstellung in Evolution. Mit deren Hilfe wird die von 
Postfix erzeugte mbox-Datei als &amp;quot;richtiges&amp;quot; Postfach dargestellt und ich
 kann exakt prüfen, ob der Text- bzw. HTML-Inhalt korrekt übertragen 
wurde.&lt;/p&gt; 
&lt;p&gt;Ich hoffe, dass dieser Beitrag den allgemeinen Anforderungen an 
einen Blogeintrag genügt und dass ich bald Zeit finde dieses Blog mit 
noch ein paar mehr Features zu versehen. &lt;img src=&quot;https://gnuheidix.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Blogartikelfunktion</title>
    <link>https://gnuheidix.de/archives/1-Blogartikelfunktion.html</link>

    <description>
        &lt;p&gt;&lt;img width=&quot;100&quot; height=&quot;100&quot; class=&quot;serendipity_image_right&quot; src=&quot;https://gnuheidix.de/uploads/tango-blog.serendipityThumb.png&quot; /&gt;An dieser Stelle kann in naher Zukunft ein richtiger Blogartikel bestaunt werden.&lt;/p&gt; 
&lt;p&gt;Die Kurzmeldungen werden geschlossen unter diesem 
Aufreißerblogartikel dargestellt. Diese sind bereits mit einer eigenen 
Archiv- und Tagfunktion ausgestattet und können dadurch meines Erachtens
 bequem durchsucht werden. Mir ist klar, dass noch eine große Menge an Funktionalitäten fehlen. Beispielsweise habe ich noch vor,&lt;!-- s9ymdb:1 --&gt;&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;eine Kommentarfunktion&lt;/li&gt; 
&lt;li&gt;ein Teaserbild&lt;/li&gt; 
&lt;li&gt;Artikelbilder&lt;/li&gt; 
&lt;li&gt;Artikeltags&lt;/li&gt; 
&lt;li&gt;eine Artikelarchivübersichtsfunktion&lt;/li&gt; 
&lt;li&gt;...&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;zu implementieren.&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt;
 
    </description>
</item>

</channel>
</rss>

