Hagen Fritsch

Protein Design

Protein Design Cycle
In my efforts towards world domination, I discovered that the key technology to master is biology. In a recent seminar I had to dive quite deep into protein design trying to figure how it works and what the fundamental concepts of this bioinformatic technique are.

So here are:

which I hope provide some insight into this fantastic technique and its promises.

The slides were actually done in html5 using html5slides, but the project does not yet use all the power html5 has to offer, so the slides remain pretty basic and a lot of layout overhead was needed.

Hagen Fritsch

lxml-based BeautifulSoup loader

With ElementSoup there is already a tool, that allows you to create an etree Document using the more fault-tolerant BeautifulSoup-parser. However, looking for the oposite direction (i.e. creating a BeautifulSoup document using the lxml-parser was not yet possible).
In my experience, I discover BeautifulSoup’s API much more intuitive and useful, especially for quick scraping and data manipulation tasks. So the only reason to use lxml in the first place, is that its parser is much quicker and consumes less memory.
Recently I had a workflow made for BeautifulSoup based documents, but found, that BeautifulSoup was too slow to parse my several MB document. So here is lxmlsouper, a tool, that uses lxml to parse the document and creates the BeautifulSoup DOM from it, which is at least way quicker than the native way.

Notes: feel free to exchange the etree-Implementation with whatever you like best. Also this does not emulate the BeautifulSoup-API on top of etree, but uses the etree data to create a BeautifulSoup document from scratch, copying everything.

Files: lxmlsouper.py

Usage:
import lxmlsouper
data = unicode(open("bigfile.html").read(), "utf8")
soup = lxmlsouper.fastSoupLoader(data)


The forums tell you to run the adb-server as root. But you shouldn’t really do this. Instead create a udev-rule like the following one and put it in /etc/udev/rules.d/26-android.rules:

SUBSYSTEMS=="usb", ATTRS{idVendor}=="0bb4", ATTRS{idProduct} =="0c87", MODE="0660", GROUP="adm"

The vendor and product id here are for a HTC Desire, however yours may differ. You can use sudo lsusb -v| grep -B 13 -i android to get these ids. Also feel free to change mode and group settings of the device to your likings.

Hagen Fritsch

Goodbye studiVZ

Goodbye-studiVZ-LogoUnser allseits geliebtes studiVZ ist ja schon lange nicht viel mehr als ein großer Friedhof voller Datenleichen. Immer mehr Leute entscheiden sich zurecht, die eigene Datenleiche endlich zu beerdigen und löschen ihren Account. Das hat jedoch leider immer den Wermutstropfen, dass man die ganzen Sachen, die sich da so im Laufe der Zeit angesammelt haben, seien es Nachrichten, Pinnwand-Einträge, Foto-Alben oder die Gruppenliste der Freunde, hinter sich lassen muss.
Nun ja, nicht ganz: Es gibt ein studiVZ-Plugin für den generischen POP3-Wrapper freepops mit dem man mit seinem Lieblingsemailprogramm schonmal alle eigenen Nachrichten und die eigene Pinnwand herunterladen kann. Super Sache!
Nun wäre allerdings auch noch toll, wenn man sich irgendwie ein Archiv seiner Daten dort basteln könnte. Genau das habe ich nun gemacht, indem ich ein Skript geschrieben habe, dass einem seine dort gelagerten Daten herunterlädt und rudimentär parst. Das Ergebnis ist ein strukturiertes JSON-File mit allen wichtigen Informationen, die man dort so gelassen hat. Auf Wunsch lassen sich zusätzlich zu den Profilen der Freunde auch noch deren Pinnwandeinträge, Verlinkungen und Fotoalben herunterladen, was dann etwas länger dauert und einen beachtlich großen Datenberg generiert.

Um den Ausstieg komplett gefahrlos zu machen, bietet sich nun noch an allen Leuten in der Freundesliste, die man noch irgendwie kennt, eine Nachricht mit den neuen Kontaktoptionen zu schicken.

Wer das Skript selbst benutzen möchte kann dies sehr leicht tun:

$ git clone git://github.com/rumpeltux/vz-backup.git
$ cd vz-backup
$ ./studivz email password

Und dann hinsetzen und warten, falls Fehler auftreten, bin ich natürlich an einer möglichst genauen Diagnose interessiert :)
Am Ende entsteht ein zip-File mit allen gescrapten HTML-Seiten (das auch benutzt wird, falls man nach einem Fehler den Vorgang wiederholt um nicht nochmal alle Seiten herunterladen zu müssen), sowie eine .img-list Datei mit den urls aller Bilder. Diese müssen noch seperat, z.B. mit wget heruntergeladen werden:

$ mkdir images; cd images
$ sort -u ../*.img-list | wget -i -

Für alle denen das zu kompliziert ist, gibt es auch einen Webservice, der das für euch erledigt. Geht dazu einfach auf http://studivz.irgendwo.org/goodbye/. Der Vorgang kann je nach Auslastung des Servers mehr oder weniger lange dauern und ihr bekommt eine Email mit einem Link zu eurem Archiv.

Was ich mir nun noch wünsche:

  • Mit den Daten kann man momentan noch nicht viel anfangen. Sie sind zwar „da“, aber werden nicht schön repräsentiert. Wenn jemand etwas Elan aufbringt und eine idealerweise html-only Anzeigeseite für die JSON-Daten bastelt, wäre das großartig!
  • Wenn jemand ein Diaspora-import tool schreibt, wär das auch prima. Dann könnte man eine Art migrier-Service draus machen.

So ich hoffe, das Tool nützt euch was und könnt ihr nun auch endlich studiVZ „Goodbye“ sagen :)

Hagen Fritsch

performous und der Audio-Kampf

Linux auf dem Desktop funktioniert ja schon länger prima, aber hier und da hakts dann eben doch mal. Eindrucksvoll illustriert auf dem 27C3, aber praktisch gestern eben auch bei mir.
Performous ist eine richtig gute OpenSource-Version von Spielen von SingStar oder RockBand. Zum Spielen ist es aber sinnvoll mindestens zwei Mikros zu haben, bzw mind. zwei Soundkarten.
Nachdem die Defaults versagt haben, kann die Software über die Option --mic pulse überreden die Soundeingabe von Pulseaudio zu beziehen, bei dem man auch wundervoll alles einstellen kann und die einzelnen Devices tatsächlich zur Aufnahme zu bewegen. Der Flaw scheint lediglich zu sein, dass immer nur genau ein Device aufnimmt, man also nicht zwei Mikrophone benutzen kann.
Frustriert hab ich’s dann unter Windows 7 versucht, allerdings gibt’s für die Soundkarte seit XP keine Treiber mehr, also auch kein Erfolg.
performous --michelp gibt einem eine Liste der möglichen Aufnahmedevices:

ALSA capture devices:
  alsa:hw:Intel,0 HDA Intel (ALC888 Analog)
  alsa:hw:Intel,1 HDA Intel (ALC888 Digital)
  alsa:hw:Intel,2 HDA Intel (ALC888 Analog)
  alsa:hw:Solo1,0 ESS ES1938 (Solo-1) (ESS Solo-1)

Allerdings lässt sich nicht so feingranular bestimmen, welche Aufnahmesettings genutzt werden sollen. Es kommt jedenfalls kein Sound rein und das Solo1-Device kann er erst gar nicht öffnen.

Interessanterweise kann man bei alsa aber die Parameter noch genauer spezifizieren. So liefert arecord -L eine Liste mit weiteren Einträgen:

dmix:CARD=Solo1,DEV=0
  ESS ES1938 (Solo-1), ESS Solo-1
  Direct sample mixing device
dsnoop:CARD=Solo1,DEV=0
  ESS ES1938 (Solo-1), ESS Solo-1
  Direct sample snooping device
hw:CARD=Solo1,DEV=0
  ESS ES1938 (Solo-1), ESS Solo-1
  Direct hardware device without any conversions
plughw:CARD=Solo1,DEV=0
  ESS ES1938 (Solo-1), ESS Solo-1
  Hardware device with all software conversions

Und tatsächlich, wenn man performous mit der Option --mic channels=1@plughw:CARD=Solo1,DEV=0 startet läuft das Mikro über die alte Terratec-Karte. Mit dem plughw Parameter läuft nach kurzem Rumprobieren nun auch das zweite Mikro über die onboard-Soundkarte.
Sollte pulseaudio noch das Device belegen, hilft pasuspend, das pulseaudio überredet, die Devices kurz freizugeben, sodass performous sie hier für sich beanspruchen kann:

pasuspender -- performous --mics channels=1@alsa:plughw:CARD=Solo1,DEV=0 \
--mics channels=1@alsa:plughw:CARD=Intel,DEV=0

Ich hoffe, dass das für den ein oder anderen der auf ähnliche Probleme stößt hilfreich war. Und nun schau ich mal, wie aufwendig das ist sich so ein Gitarren-/Schlagzeugdevice zu basteln :)

« Vorherige Einträge - Nächste Einträge »