Posts tagged Linux

So I just spent an hour a little too deep inside my linker.

I wanted to compile a little C++ program using libavcodec, libavformat et al. (the ffmpeg stuff), but it just failed.

Solution: the evil C fundamentalists behind the libraries didn’t include the usual declaration of the calling convention that C++ needs when calling C libraries.

So one has to add them manually by surrounding the include declaration with extern "C".

extern "C" {
#include <libavformat/avformat.h>
#include <libswscale/swscale.h>
}

Now it compiles and links. It does segfault though, but that should be a problem on my part.

Songbird ist mir schon früher untergekommen, damals allerdings nach bereits 20 Minuten von der Platte geflogen weil es völlig unbedienbar war. Also heute ein neuer Versuch.

Die Website meint Play Music. Play the Web. Songbird is a highly customizable alternative to traditional desktop media players., was in der Theorie nett klingt, allerdings in der Praxis nicht bestehen kann. Es gibt zwar eine stattliche Menge an Extensions (einige davon von Firefox bekannt, immerhin verwenden beide die Gecko-Plattform), allerdings sind die meisten, die ich ausprobiert habe entweder wertlos, unbenutzbar langsam, oder verschwenden deutlich zu viel Platz auf den Bildschirm. Leider fehlen ohne die Extensions einige Features, die jede andere Library/Player-Anwendung unter Linux eigentlich von Haus aus mitbringt, etwa: nennenswerte Unterstützung für Albumcover (ja, braucht kein Mensch) und Audioscrobbler, eine einfache Queue-Funktion, Freigabe via UPnP oder DAAP, etc…

Und während sich Firefox mittlerweile gut in die restliche GTK+-Landschaft einpasst, kommt Songbird mit einem tiefschwarzen Skin daher, Alternativen gibt es leider keine, die anderen Skins sind, wie man es von Firefox schon kennt, nicht immer kompatibel mit den Extensions und sehen im allgemeinen noch hässlicher aus.

Und der Knaller kommt zum Schluss — top meint:

VIRT RES SHR %CPU %MEM TIME COMMAND
766m 544m 32m 39.9 26.9 9:05.22 songbird
608m 66m 13m 23.6 3.3 16:58.42 Xorg
219m 75m 22m 5.7 3.7 0:39.30 rhythmbox
42k 10m 7k 1.0 0.5 0:02.44 rhythmbox-metad
423m 207m 32m 5.0 10.3 32:45.66 firefox

Und dabei hat songbird nichtmal etwas getan! Scheinbar kommt die hohe Belastung des X-Servers durch irgendwelche sinnlosen Animationen. Zum Vergleich mein alter-neuer Player rhythmbox (hat viele Schwächen, ist aber immernoch der Beste. Amarok kommt nicht ins Haus, ist Qt.) und eine firefox-Instanz mit 20 offenen Tabs.

Fazit: Das wars, mal wieder, Songbird. Vielleicht sollten die Entwickler etwas mehr Zeit mit der eigentlichen Entwicklung, weniger mit dem Design der Oberfläche und pupsender Vögel verbringen… Wir sehen uns dann in einem halben Jahr wieder.

Thanks to FUSE it’s unbelievably easy to implement new and awesome filesystems for Linux, such as for example MetaweblogFS, which allows me to write this post using cat > $title && touch $title (hopefully).

Ok, so the touch part did not work, but at least it posted a draft. Tags were missing, anyway. Looks like I won’t be a user of this particular filesystem in the future, but it was fun to try.

This seems like great fun, SSHfs looks even remotely useful and maybe TagsFS, which presents your mp3 and ogg files in a virtual tree based on the tags of the files might even solve my music-library woes.

Be prepared for xml-flatfileFS, implemented in OCaml!

Christoph wies mich gerade darauf hin, dass der Artikel über das Multitouch-Projekt nicht nur online, sondern sogar auf toten Bäumen erschienen ist:

ca. 60% von Seite 6 des Linux Magazins

Ob der enorme Traffic-Peak auf der Projektwebsite (Februar: 204.8 MByte; März: 1.5 GByte!) daher rührt, kann ich nicht sagen, aber unabhängig davon: Danke, Herr Huber!

Kein Wunder, ist ja auch von Apple.

Es folgt der geringfügig sachlichere Teil:

Nachdem ich einen Epson Stylus Color 3000 bekommen habe, wollte ich ihn unter Linux verwenden, nachdem er sich als Staubfänger schon einige Monate exzellent geschlagen hat. Allerdings besitzt er eine Centronics-Schnittstelle, mein nachsintflutlicher Rechner allerdings nicht. Folglich wird das Gerät über einen USB-Parallel-Adapter betrieben und dort vermute ich auch den Grund für so einiges.

Es fing ja so gut an: Einfach das Gerät anstöpseln, HAL erkennt es, CUPS-Drucker einrichten, Testseite auf A4 ausgeben…

Dann offenbarten sich allerdings bald enorme Abgründe: Man kann den Drucker mit Endlospapier (auch von der Rolle) betreiben, und so in A3-Breite Plakate drucken, zumindest in der Theorie. In der Praxis ist es nicht möglich das Papier in den Drucker zu fädeln ohne es so zu zerknicken, dass es noch eingezogen wird. Wird es irgendwann doch eingezogen, glaubt das Gerät einem Papierstau aufgesessen zu sein, in der Anleitung steht, man solle den Stau beheben und dann Pause drücken. Tut man dies, schaltet man den Drucker allerdings scheinbar in eine Art RAW-Modus, in dem er einfach jeden ASCII-Character ausdruckt, der über die Schnittstelle kommt. Und das sind, wenn man versucht ein recht detailliertes PDF zu drucken einigermaßen viele, was nicht so schlimm wäre, wenn das Gerät nicht so freundlich wäre, während der Arbeit den Ausknopf zu ignorieren (who would possibly want to switch it off while it’s working?!).

Hat man schließlich nach mehrmaligem Crash & Burn und harten Resets durch Steckerziehen eine Situation hergestellt, in der das Papier erkannt und gerade eingezogen wird (denn der Epson hat kein Problem damit, literweise teure Farbe im Gehäuse zu verspritzen, nachdem er zuvor das Papier aus versehen falschrum eingezogen hat und es verknittert hinten herausschoss), kommt die Software-Hölle zum Einsatz:

Evince,
der PDF-Viewer, bietet keine Möglichkeit, ein Dokument beim Druck in der Größe zu ändern, es ist sogar freundlich genug, das A2-PDF auf A4 zu schrumpfen.
Acrobat Reader
verwendet nicht den Standard-Druckerdialog, sondern lässt lediglich die Papiergröße wählen (immerhin) und die an lpr übergebenen Optionen einstellen. Nachdem man sich auch Adobes Bevormundung zur Wehr gesetzt hat und theoretisch nicht mehr A4 sondern das gewünschte A2 (Hochformat) ausgegeben werden sollte, crasht der Drucker ersteinmal, indem er das Dokument zwar A2-lang, allerdings A4-breit ausdruckt. Nach einem Abbruch druckt er auch den schon erwähnten ASCII-Salat ebenso verzerrt, erst nach einem weiteren Hartreset beruhigt er sich wieder.
GIMP
muss das PDF natürlich in ein Pixelbild umwandeln, wenn es allerdings 8000px breit ist, tut der Drucker nichts, skaliert man es auf 2000px, ist es plötzlich in Graustufen. Und natürlich A4. Auch interessant, dass man ernsthaft das Pixelbild in GIMP drehen muss, um es verdreht im Drucker ausgeben zu können.
Inkscape
kann ja neuerdings auch PDF lesen (funktioniert bislang perfekt, um mal etwas positives zu erwähnen), nur erklärt es, den Druckvorgang nach zu vielen Fehlversuchen abgebrochen zu haben. Genauere Prüfung zeigt, dass die Maximalanzahl der Versuche scheinbar bei 0 liegt, zumindest gab es keinen einzigen.
cupsdoprint,
ein Kommandozeilentool aus KDE, das grundlos installiert war, schließlich schafft die unmöglich geglaubte Aufgabe schließlich: es druckt das Dokument in A2, sogar richtigherum, unverzerrt, in der eingestellten Qualität. Darüber bin ich mittlerweile derart froh, dass ich darüber hinwegsehe, dass es danach die restlichen 20m Papier von der Rolle komplett ausspucken wollte (der Drucker war mal wieder mit blinder Zerstörung zu beschäftigt um den Ausknopf zu erhören, mittlerweile sitzt der Stromstecker schon lockerer). Und dass der Cyan-Anteil einfach gar nicht gedruckt wurde, obwohl die Patrone brandneu ist und keine Stelle irgendein Problem gemeldet hätte, dieses ist wohl das kleinste Problem und außerdem bin ich viel zu glücklich überhaupt irgendein Ergebnis bekommen zu haben (und zu müde) um mich darüber jetzt noch aufzuregen.

Fazit: Arrrrrr.

Die Realitätsumdefinierer von linuxprinting.org behaupten er würde perfect funktionieren. Ja, natürlich. Die Testseite kam wunderbar raus, offensichtlich liegt das Problem weniger an CUPS selbst, als an den dämlichen Programmen die auf A4 festgefahren sind, bzw. an der Druckerdefinitionsdatei, die das flexible Papierformat nicht ausreichend abbildet… Aber ich bin zu faul die Überschrift zu ändern und Apple hat es auf jeden Fall verdient, etc.

Just updated to Ubuntu Hardy Beta and — deleting a 0 Byte file takes 3 minutes! This will make switching so much easier, no more users dying of thirst because they don’t have the time to brew, drink and wash a cup of coffee during such operations…

Maybe they rewrote nautilus in Python, but I’m too scared they did, so I won’t check.

On the plus side: metacity now acts as a composite manager, being much more resource-friendly than compiz, so those can be wasted otherwise. On pulseaudio for instance.

My frequently cursed but nonetheless constantly used rhythmbox segfaults because of some stupid — yeah — Python-plugin. And liferea just segfaults, but that’s nothing new, after the last three updates, the developers changed the name of the settings path (including the current version number. Don’t know what for, maybe it would be nice and usable otherwise…), thus it couldn’t find the old settings any more and of course crashed and burned.

Die CeBIT war beeindruckend, vor zwei Wochen. Ein nie abreißender Besucherstrom nahm 240 Visitenkarten, 2 LED-Leisten, sowie meinen Rucksack mit Laptop und Kamera mit. Die meisten waren relativ interessiert, zumindest empfand man es wohl als recht angenehm, vollkommen sinnlose Spielchen anfassen zu dürfen, ohne pausenlos von Verkäufern beschallt zu werden (obwohl ich irgendwie trotzdem durchgehend redete…).

Presseecho gab es auch in bescheidenen aber ausreichenden Dosen, namentlich vom Linux Magazin, die ich scheinbar mit meinen größenwahnsinnigen Multitouch-Compiz+MPX+Input-Redirection-Vereinigungsplänen beeindruckt habe (Fenster frei drehen!). Die A-List-Blogger vom offiziellen CeBIT-Blog, also eigentlich nur einer, und eigentlich auch kein A-Lister, zumindest kannte ich ihn zuvor noch nicht, was allerdings nichts heißen mag, waren zumindest in zwei Posts recht positiv gestimmt: Unter den wirklich massenhaft vorhandenen Multi-Touchscreens sei meines das sympathischste Modell. Und mein 24C3-Souvenir haben sie auch noch dokumentiert…
Außerdem gibt es eine recht ausführliche und meisterhaft pointierte Reportage auf jetzt.de.

Und 3sat:neues war da! Es brauchte etwa sechs Anläufe, was, wie ich demnächst jedem erzählen werde, mein Fehler war, nachdem ich mit einem blöden Witz (hey, sie nannte mich Patrick), Yve Fehring aus der fassung gebracht habe. Mehr oder weniger. Zumindest funktionierte zu diesem Zeitpunkt (es war Abend, tagsüber schwerste Bearbeitung durch Die Horde) das Gerät nicht mehr wirklich gut, man musste relativ gewalttätig aufdrücken, aber irgendwie traute sie sich das nicht, jetzt scheint es also, als sei das Tracking mies…

We’re back online again, with an (in my opinion) most interesting setup: Since the ISP provided us only with a combined splitter/4-port-DSL-modem (no router or switch), we could no longer use our router and WLAN-access-point, as the router expected to be plugged into the DSL-splitter directly and use its builtin modem.

But, as we wanted WLAN and DSL and our old router/acces-point setup (the alternative model of the ISP only did WEP encryption, arrr), I just plugged the DSL-modem into one of the routers LAN-ports (not the WAN-port as usual), and connected the access-point to the router (as usual). The router happily gave out local IPs to the access-point and connected computers, local networking was a breeze.

The fun part is, that, although PPPoE (the common method of communication between DSL modem and splitter) is usually only used between the LAN-adapter of the PC and the DSL-modem, it also works with the router and access-point in between.
And it does so, even on Windows Vista! (Just connect to the WLAN, create a new PPPoE-connection, and it just works, most amazing… Of course there are some open questions about the firewall — we want to filter DSL-traffic that goes as PPPoE over the WLAN, but not the other WLAN-traffic thats local…)

Of course it works on Linux, using the pppoe-tools. I had to alter the default configuration created by pppoeconf just in one point: insert replacedefaultroute into the peers-configuration file in order to remove the default-route that exists because of the router between DSL-modem and the PC.

That setup may not be the best (well, it is stupid, to be honest, as every client has to connect by itself which takes way too much time, there is no NAT-”firewall”, it took me 3h to figure out), but it works.

The clutter-flowers example looked so nice that I just had to free it from the (still useless, in my opinion) clutter-library, add some basic physics and a nice bloom-effect. This is the result (looks better in reality!)


The bloom-effect applies a box-blur (with radius 60) to the part of the image with a higher brightness than 0.7 and adds this to the original image after it was put through the function:

f(x) = 1.155 x - 0.655 x2 + 0.184 x3 - 0.023 x4 + 0.001 x5

Plot of f(x) in green and x in yellow

Instead of using the common fake-bloom technique, this is demo renders to a GL_FLOAT_RGBA32_NV framebuffer that is not clamped to [0;1] as usual. For very bright areas, the [0;4]-range is also too small, but an even greater one would require real tone-mapping as used for HDR-imagery.

Some original-sized side-by-side comparsions of rendering with (right) and without (left) the bloom-effect:


The code will be released through my multitouch-project as soon as it runs properly on the screen (which requires the screen to run properly again itself)

Da will man mal schnell was löschen, und zack, fällt man vom Stuhl und voll auf die Enter-Taste während gerade

$ sudo rm -rf /

in der Zeile steht.

Oh und reiserfs ist ja auch noch so wunderbar schnell, bevor ich ^C drücken konnte war auch schon /dev/.static/ weg. Ging natürlich alphabetisch, also fehlt jetzt halt /bin (gut, ist besser als /home wobei ich nicht nachprüfen kann ob es überhaupt noch existiert denn ls gibts auch nicht mehr).

Und jetzt?

Aha, Foren empfehlen Live-CDs. Aber gibt es die denn mit LUKS und für mein PowerPC-iBook? Mir fällt zumindest keine ein.


Die Lösung: Die Platte im Externe-Firewire-Festplatten-Modus (T beim Start drücken) an einem anderen System mounten. Die moderne Distribution sorgt für die Entschlüsselung und die gewünschte LVM-Partition lässt sich mounten.

Dann nur noch die wichtigsten Pakete manuell herunterladen, entpacken und ‘rüberkopieren — und es geht!