mecker. mecker. mecker.

Linkschleuder #16

03.02.2012, 10:34
  • Zen Codinga new way of writing HTML and CSS code, Sublime Text 2 Plugin
  • sshuttle – trans­pa­ren­ter Proxy trifft VPN, ohne viel basteln und ärgern. Einfach SSH.
  • Ziproxy – ein zippender Proxy, der allerdings nicht alle externen Quellen in eine Datei packt. Dann wäre es für’s Handy praktisch gewesen.
  • gitfinger – Stalking auf GitHub.
  • python for humans – ein sehr witziger Rant über Python und was die Community besser machen kann.
  • How to read Haskell like Python
  • crate.io – ein PyPi-Mirror, der quelloffen ist und mehr Features bietet als PyPi.
  • mer – eine offene, optimiert für Mo­bil­ge­rä­te, Dis­tri­bu­ti­on á la MeeGo mit Fokus auf Qt und HTML5.
  • plasma active – ein KDE Projekt für Tablets und Mo­bil­ge­rä­te, der doch schon etwas besser als Android aussieht. Ein weiterer Beweis, dass KDE verdammt modular ist.
  • goaccess – ein (Apache) Common Logfile Reader. Mit ncurses (!) und für große Bild­schir­me optimiert! wei­ter­le­sen.

Linkschleuder #13

12.01.2012, 13:27

As a result of my last per­for­mance im­prove­ments to acrylamid I was not able anymore to measure the memory used via Activity Monitor. I can measure cpu time in many different ways using time or python’s neat -m cProfile -s cumulative argument in front of my real program call, but I don’t know any way to measure memory of fast ending ap­pli­ca­tions.

Memory Profiling

The first fact I found is that python has no ca­pa­bil­i­ties of profiling and BSD’s version of time had no memory statistics support (seems, linux version can do this). But there’s an App… erm tool for that: valgrind. Using it with OS X’ 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 Massif: a heap profiler (or re-compile --without-pymalloc):

$> valgrind --tool=massif --suppressions=Misc/valgrind-python.supp \
   python ../acrylamid/bin/acrylamid gen
$> ms_print massif.out.1928 > out.txt

The latter produces a heap profile written to out.txt. KDE/Linux seems to have a visualizer, KCacheGrind, weit­er­lesen.

TextMate

18.12.2011, 18:02

Bevor ich so langsam zum Sublime Text Editor wechseln werde (es sei denn, Version 2 bringt es), noch einmal kurz meine Lieblings-Bundles, sprich Macros, Themes und Snippets.

Bundles

In­stal­liert wird das alles nach ~/Library/Application Support/TextMate/.

The first time I tried to get a custom Firefox Sync server running, I used server-full and even though I know python (the server is written in python), the con­fig­u­ra­tion was highly difficult. There’s no click & 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’t know how to au­then­ti­cate unless you have already a LDAP server running.

There are some al­ter­na­tives: ffpyweave, django sync server and formerly weave-minimal too, written in PHP but not supported anymore. But I’ve forked the official server-full (well I completely rewrote) to a more easier in­stal­la­tion without multiple backends but completely relying on a simple sqlite database.

Re­quire­ments

  • a web server with proxy or FastCGI/WSGI support
  • python runtime (>= 2.5)
  • shell access

In­stal­la­tion

$ easy_install -U werkzeug
 
$ wget https://github.com/posativ/weave-minimal/tarball/master -O weave-minimal.tar.gz
$ tar xfz weave-minimal.tar.gz
$ cd posativ-weave-minimal

Usage

Currently, Firefox does not you create a user account on your own server. I filed a bug weit­er­lesen.

Vor gut zwei Wochen habe ich fest­ge­stellt, dass es irgendwie unmöglich ist, einen eigenen Server für Firefox Sync zu nehmen. Aber so unmöglich ist es dann gar nicht. Wenn man weiß, wie behindert das Setup ist, dann ist das kin­der­leicht.

Was nicht geht: ein neues Konto auf dem eigenen Server anlegen. Warum? Weil Mozilla diese Service-URL auth.services.mozilla.com fest in den Firefox kodiert hat. Die API, um sich zu re­gis­trie­ren, hängt aber an obiger URL + /user, genauer gesagt PUT /user/1.0/mein_username. Da sich die URL für den Re­gis­trie­rungs­ser­ver (der Server ist in zwei Teil­pro­jek­te unterteilt, server-reg und server-full) nicht einmal in der about:config einstellen lässt, wird dieser Workaround genutzt. Wir wissen ja, 89 people have this problem. I have this problem, too!

Workaround in Firefox

Anstatt sich ein neues Nut­zer­kon­to zu klicken, wählt man statt­des­sen aus, dass man bereits ein Konto hat. Dafür wird allerdings wirklich ein Konto benötigt, was zu einem unschönen Weg in die Kom­man­do­zei­le führt (oder ins Web­in­ter­face, sofern der Server derartiges anbietet). Nachdem man sich auf seinem Server einen Nutzer re­gis­triert hat, geht’s weiter. Anstatt das Gerät mit dem drei-stelligen Code zu aktivieren wei­ter­le­sen.

So habe ich heute Firefox Weave Sync ken­nen­ge­lernt. Ich dacht mir, hey ich hab’ ‘nen Server, oh und hey, der Sync-Server ist in Python ge­schrie­ben, das wird bestimmt kin­der­leicht!1 Aber die Community Policy, die Mozilla da seit geraumer Zeit fährt, macht jegliche Offenheit des Source Codes sinnlos, weil es einfach nicht für den kleinen Mann do­ku­men­tiert ist. Das ist so miserabel do­ku­men­tiert, dass ich ohne Studieren des Source Codes nicht weiß, ob der server-full überhaupt dafür konzipiert ist, ge­schlos­sen für einen, oder maximal auch zwei Nutzer zu laufen. Denn ganz sicher werde ich für einen Single-User-Betrieb keine LDAP-Au­then­ti­fi­zie­rung aufsetzen.

Früher™ gab es ja mal diesen diesem Minimal Server. Der scheint aufgrund von API-Änderungen nicht mehr ganz zu funk­tio­nie­ren bzw. ist sowieso deprecated (ist ja logisch, warum sowas kleines wei­ter­füh­ren, wenn man mit LDAP gleich die ganze Welt verwalten kann). Von einem Server in PHP hab’ auch ich gehört. Ein (älteres) single-file CGI-Skript in python gibt’s ebenfalls. Ob das funk­tio­niert, weiß ich nicht. Einen Django-Klon gibt’s auch, das ist aber die erste genannte Variante mit denselben Zielen, Millionen von Nutzern zu verwalten, nur mit Django. Nicht wei­ter­le­sen.

Linkschleuder #9

20.11.2011, 13:37

Linkschleuder #8

22.10.2011, 20:19

Linkschleuder #7

30.09.2011, 11:57

sqlite dump mit python

24.09.2011, 13:28

Shell:

sqlite3 my.db
>> SELECT * FROM sqlite_master;

python:

import sqlite3, os

con = sqlite3.connect("my.db")
with open("dump.sql", "w") as f:
    for line in con.iterdump():
        f.write("%s\n" % line)

via stack­over­flow. Denn ich stehe auf Kriegsfuß mit dieser dämlichen SQL-Logik. CouchDB und MongoDB ftw.

Linkschleuder #6

11.09.2011, 16:19

So, mehr hab’ ich an diesem Trauertag leider nicht. Reicht ja auch.

ältere Beiträge →

written by posativImpressum

by-nc-sa