Technologie

O_NOATIME + NFS = EPERM

  • Posted on June 28, 2010 at 12:26 am

I met a surprise today. I am writing code that accesses a lot of files via NFSv4, stat()s  them, possibly extracts content and writes stuff into a couple of databases. Somewhen in the debug/development cycle a stat() call returned Resource temporarily unavailable (a.k.a. EAGAIN and EWOULDBLOCK). I tried replacing stat() by lstat() and finally by fstat() in order to assert more control over the flags provided to open(). The combination O_RDONLY | O_SYNC | O_NOATIME changed EAGAIN into EPERM (Operation not permitted). Why is that? Well, here’s a hint.

The O_NOATIME flag was specified, but the effective user ID of the caller did not match the owner of the file and the caller was not privileged (CAP_FOWNER).

Correct. I changed the machine the test ran on. This turned the effective UID into something different (the NFS share showed the numerical 4294967294 which is not the UID of the development account). I’d never have expected this behaviour from the description in the man pages…despite the quoted sentence above…which is really part of man 2 open

RTFM. Again.

Internetprovider und deren Kompetenz

  • Posted on June 12, 2010 at 12:48 am

Man soll ja Gedanken, die einen beschäftigen, aufschreiben, damit man besser schlafen kann. Da der unsägliche Wiener Sommer mit seinen 3000°C endlich begonnen hat, mache ich das auch. Man visualisiere eine Firma, die vom Anbieter Qacgi eine Business Internetanbindung hat. Da der Anbieter Qacgi neulich vom Anbieter CCQ aufgekauft wurde, verwendet Qacgi nun auch für Leitungen mit höherer Geschwindigkeit die Technologie von CCQ. Ist soweit auch in Ordnung. Um 1742 meldet das Monitoringsystem einen Host Down Status. Da das Büro nicht mehr besetzt ist, kann ein Sysadmin erst um ca. Mitternacht vor Ort sein. An der Bürotür findet sich ein Hinweis, ausgestellt vom Techniker Prfeizg Ahriesn (angestellt von CCQ Witrydfmy Kliv TaeL). Der Text auf diesem Zettel besagt:

Der Brzhoioso XD Anschluß mußte stillgelegt werden! Anmeldung unter 01/NUMMER

Passend dazu hingen noch zwei Werbewaschzettel mit Preisen und besagter Telefonnummer des bemühten Betreuers Prfeizg Ahriesn für Neukunden bereit. Es ist wohl überflüssig zu sagen, daß das Rebooten des Modems (was ein Watchdog ohnehin seit Ausfall periodisch versucht hat) nichts bewirkt hat. Bei Anruf Sprachbox, und das Handy konnte die gebührenpflichtige 0900 Nummer für den Rundum-Sorglos-Support um schlappe 2,16€/Minute mangels 0900 Sperrung nicht erreichen. Es folgte eine E-Mail an den Support nach Busfahrt zum nächsten Internet Outlet. Mittlerweile ist Samstag. Ich bin gespannt, ob Herr Prfeizg Ahriesn sich am Wochenende Zeit nimmt, um den Fuck Up zu beseitigen.

Absurd, aber das passiert bei Mergern und fehlgeleiteten Wirren.

Die verschlüsselten Namen lassen sich mit Vignère und dem Namen eines österreichischen Internetanbieters entschlüsseln – falls der Algorithmus nicht zwischenzeitlich aus unerfindlichen Gründen stillgelegt werden mußte…

Die Zukunft ist „fingerbedienbar”!

  • Posted on June 6, 2010 at 9:06 pm

Mir wird jetzt endgültig schlecht. Es ist schlimm genug, daß gelegentlich sinnlose Hypes durchs Internet fegen. Wenn der Schrott sich dann bei der Journaille verbreitet, nervt es. Aber der Rummel um die Tablets ist einfach nur zum Kotzen. Tablet-PCs gibt es seit 2001, und sie wurden nicht von Apple gefunden. Wenn man es genau nimmt hat sich die Technologie Elisha Gray im Jahre 1888 patentieren lassen. Star Trek hat es dann aufgegriffen. Vor den PCs haben es die PDAs versucht. Vor dem dämlichen iPad war es eine Randerscheinung. Jetzt ist es plötzlich die Zukunft. Mir wird wirklich schlecht.

Es macht aber Sinn. Die Unterhaltungsindustrie möchte ihren Kunden ja schon lange die Tastatur wegnehmen. Tastaturen machen nur Ärger. Darauf schreibt man kritische Texte, kritischen Code oder verletzt Patente sowie Urheberrechte. Aus dieser Perspektive sind Tablets tatsächlich eine Revolution. Das ideale Tablet bietet auf der rechtlich geschützten Oberfläche, die nicht verändert werden darf, nur die Funktionen Kaufen und Anschauen. Mehr braucht der zukünftige Untertan nicht mehr. Das paßt dazu auch völlig in die Rezession, denn gearbeitet wird auch nicht mehr. Ist ja kein Geld da, und auf den handelsüblichen Tastaturen sind zuviele Tasten. Was macht ein Mensch mit dem Wunsch-IQ der Unterhaltungsindustrie mit einer 105-Tasten-Tastatur? Nicht viel. Für die typischen Forenpostings braucht man nicht einmal das ganze Alphabet.

Dann schauen wir uns die Zukunft doch mal an. Ich würde den verlinkten Artikel ja „Wie Bilderrahmen den PC-Markt umkrempeln” nennen, denn fingerbedienbar sind meine Computer schon seit über 20 Jahren.

Textabenteuer

  • Posted on May 18, 2010 at 1:31 pm

Der Mai ist dichter gepackt als ich dachte. Vorletzte Woche habe ich bei den Wiener Linuxwochen im Alten Rathaus verbracht. GNU/Linux gepaart mit barocker Architektur sieht man nicht alle Tage. Aus Denkmalschutzgründen gab es daher nur ein Funknetzwerk. Jetzt widme ich mich wieder anderen Problemen und viel Text – in Form von Code und eigentlichem Text. Ich teste CLucene und den PostgreSQL Textindizierer an Dokumenten aus dem „echten” Leben. Die Fragen, die sich dabei aufwerfen, sind schwieriger zu beantworten als es die Dokumentation erahnen läßt.

Zuerst muß man mal auf den eigentlich Text kommen. Es gibt einen Haufen von Dokumentformaten – .doc, .pdf, .odt, .html, .xml, .rtf, .odp, .xls, .txt, .ps, … . Diese muß man zuerst normalisieren bevor man sie indizieren kann. Man benötigt den puren Text, die einzelnen Worte, und sonst nichts. Obendrein sollte die Kodierung der Zeichen einheitlich sein. Es bietet sich UTF-8 an, also muß man ausreichend Konverter haben. Da einige der Dokumentenformate proprietär oder einfach nur schlecht entworfen sind, ist das keine triviale Aufgabe. Ich habe genug Konverter gefunden, aber einige sind besser als andere. Die Tests an den Dokumentensammlungen werden zeigen wie gut sie wirklich sind.

Dann kommt die Sprache. Das Indizieren von Text reduziert die darin vorkommenden Worte auf ihre Stammform und entfernt Stopworte. Beides hängt von der Sprache des Dokuments ab. Nun wird die Sprache leider nicht in allen Formaten als Metainformation mitgegeben. Man muß sie also ermitteln. Dazu kann man sich der Publikation N-Gram-Based Text Categorization bedienen bzw. eine ihrer Implementationen bemühen. Was passiert mit Texten gemischter Sprache?

Die Liste ist lang. Der Code ist C++, und mir fehlt eine schöne, erweiterbare Klasse, die Dokumente einliest, sie in UTF-8 und puren Text normalisiert sowie einige Metainformationen ausliest. Bisher habe ich nichts gefunden, was ich verwenden möchte. Ich werde es selbst mal versuchen. HTML und XML kann ich schon normalisieren. Für PDF empfehle ich die exzellente PoDoFo Bibliothek (die Spenden von mir bekommen wird). Für den Rest suche ich noch.

Apropos Worte: Kennt wer die Sprache Yup’ik? Sie wird von sehr wenigen Inuit in Alaska und dergleichen gesprochen. Dort gibt es Worte, die andere Sprachen in Sätze fassen würden. Beispielsweise heißt Kaipiallrulliniuk soviel wie: „The two of them were apparently really hungry.” Faszinierend.

Internetbauarbeiten

  • Posted on April 19, 2010 at 12:29 am

Manchmal ist ja das Internet kaputt. So etwas kann passieren. Mir ist es gerade eben wieder passiert. Dabei war es doch das mt dem Kabel, also das Stabilere. Es war jedenfalls auch weg. Und dann war es kurz wieder da. Und weg, und da, und weg, und so. Das macht nervös. Frei nach der Episode Eins:

A communications disruption could mean only one thing: invasion.

Kurzum habe ich eine E-Mail geschrieben, um das Problem zu melden. Ich bin ja freundlich. Siehe da, kurz nach dem Abschicken (der E-Mail) ging alles wieder. So weit, so gut. Nur warum? Nebenbei ist das schon einige Male passiert (Probleme hören nach dem Abschicken einer E-Mail an den Support auf). Wer hört denn da mit?

Aber lassen wir das. Port Mirroring wird schon für etwas gut sein. Grüße an die uniformierten Oompa-Loompas auf dem Weg.

Google StreetView und der Business Impact

  • Posted on March 31, 2010 at 12:00 pm

Privatpersonen kann man notfalls das „ich habe eh nichts zu verbergen” Mantra nachsehen (aber nur wenn diese Menschen nackt im Alltag unterwegs sind, wird sonst unglaubwürdig). Bei Firmen wird das manchmal schwieriger, denn es heißt „wir stehen doch eh im Telefonbuch” oder „wir haben doch auch einen Briefkasten”. AsiaPac Capital Services company.Natürlich trifft das zu. Die Firma AsiaPac Capital Services illustriert nun sehr schön wie sehr Informationssicherheit das eigene Geschäft vernichten kann, speziell wenn weder das eine noch das andere vorhanden ist. Investoren können Google StreetView bedienen und Adressen nachschlagen. Wenn das dort vorgefundene Bild nicht zum Eindruck paßt, dann kann schon mal das Vetrauen verschwinden. So geschehen mit AsiaPac. Finanzmärkte reagieren sehr empfindlich auf Gerüchte. Wenn man das mit „handfesten” JPEGs paart, dann kann alles Mögliche passieren. Der Aktienkurs illustriert das sehr schön.

Also, liebe Briefkastenfirmen und nackte Mitmenschen, paßt doch etwas besser auf Informationen auf, die ihr von euch gebt. Die Welt hört mit.

Thoughts about fsync() and caching

  • Posted on March 19, 2010 at 10:54 pm

I am currently reading stuff about a talk about caching and how developers (or sysadmins) reliably get data from memory to disk. I found this gem I want to share with you.

fsync on Mac OS X: Since on Mac OS X the fsync command does not make the guarantee that bytes are written, SQLite sends a F_FULLFSYNC request to the kernel to ensures that the bytes are actually written through to the drive platter. This causes the kernel to flush all buffers to the drives and causes the drives to flush their track caches. Without this, there is a significantly large window of time within which data will reside in volatile memory — and in the event of system failure you risk data corruption.

It’s from the old Firefox-hangs-for-30-seconds-on-some-systems-problem, described in the fsyncers and curveballs posting. Did you catch the first sentence? „Since on Mac OS X the fsync command does not make the guarantee that bytes are written”. This is a nice one, especially if programmers think that fsync() really flushes some buffers. It doesn’t always do that. And in case you want to be deprived of sleep, go and read the wonderful presentation titled Eat my data. It’s worth it.

Seriously Debugging the Text Indexer Code

  • Posted on February 28, 2010 at 4:55 pm

After feeling like wading in honey during the past weeks I finally get around to squash some bugs in my text indexer code. The first one was the obligatory use of a null pointer in rare cases. I know, this should never happen. Found it, squashed it. Won’t happen again (I am pretty confident about this).

The next problem was a wrong string comparison when dealing with file extensions. Ignoring the “.” leads to match of “ps” and “props”. The latter is no PostScript® file and cannot be indexed (well, it can be, but it shouldn’t). “.” are from now on never ignored.

The test data consists of 3755 files. After filtering 648 documents remain (file extensions .doc, .htm, .html, .odp, .ods, .odt, .ps, .pdf, .php, .rtf, .txt, .xml, .xls). The results are indexed by means of the PostgreSQL text index function. The resulting database has a table size of 488 kiB (23 MiB documents, 19 MiB text index). Indexing works fairly well so far. The database should be more than sufficient for testing the front end. I’ll probably have a go at the content of the two Cryptome.org DVDs I ordered a couple of weeks ago. Both DVDs contain 42914 files in 1106 directories. The total size is over 8 GiB. Maybe I publish the front end URL to the indexed Cryptome data. Let’s see.

Tweet me alone!

  • Posted on February 9, 2010 at 11:17 am
How to use Twitter to watch over idiots.

How to use Twitter to watch over idiots.

Well, why do people leave their insides on the  doormat of every stranger that give them cookies? Please explain.

Pressing questions about the iPad

  • Posted on January 28, 2010 at 2:33 pm

Apple has done it. It released another product free of imperfections and by doing this got another license to print money. Congratulations! Here are my most pressing questions about the new iPad.

  • Will it run GNU/Linux?
  • How can I get root access?
  • Where are the tools to unlock it and install decent software on it?
  • Does it support PDF, TXT, OGG, Theora and other open formats?

Tell me whenever all of these questions are answered. Until then please do not bother me with religious bullshit. Thanks!

Remote Administration is Fun!

  • Posted on January 26, 2010 at 3:50 pm

In theory we all live next to the cloud and system administration could not be happier. You use the Net all of the time. You never need to go anywhere any more. All system are connected and you just need to log on and get started. Right. No.

  • First of all the remote management ILO interface disappears when being connected to by TCP ECN. The TCP/IP stack of the management module is simply broken. Deactivating TCP ECN.
  • After trying different ways to connect to the console, we settle for Internet Explorer 8 (we had to install Java, of course). Two other machines with Debian, Firefox and Java failed (despite ILO’s generous offer). The ActiveX plugin version of the KVM console failed, too.
  • The oybbql shpxvat UC server features Broadcom NetXtreme II BCM5709 Gigabit Ethernet cards with a proprietary firmware (bnx2-09-4.0.5.fw). This means that the Debian net-install CD is next to useless unless networking gets working.
  • The Debian installer likes to have its USB media with the firmware on the first prompt. If you fail to supply the media (mounted via ILO) at the first prompt, /dev/sda1 won’t be mounted (it only tries to mount /dev/sda instead).
  • Finally, the installer is working and has network. Unfortunately the ISP forgot to tell us the IP address, netmask and which one of the two NICs is patched (actually both are patch, but only one gets routed).
  • Meanwhile the ILO module kicked our session (the browser window closed). The session is still active, but the window is closed and can’t be reopened. You have to reset the ILO module in order to clear the session (rebooting the server does not help).
  • Rebooting.
  • Hoping for the best.

It’s fun, you should try it, too.

Well…

  • Since we mounted an USB device for the firmware GRUB got confused and a reboot showed “error 15” (file not found).
  • The Debian installer nicely ejected the CD, so it’s impossible to reinstall without asking for remote hands putting the bloody CD back into the drive.
  • Reinstalling…

Done. It worked. The system is able to reboot all by itself. Now let’s sync a few GBs of data from one server to another.

SugarCRM-, Apache- und Browserschmerzen

  • Posted on December 30, 2009 at 10:58 pm

Ich habe gerade stundenlang Upgrades auf einem Webserver gemacht. Im Prinzip ist es ganz einfach, da es ein LAMP System ist. Wegen besonderen Richtlinien wird dort Apache, PHP und MySQL durch den Compiler gejagt. Macht ja nichts, ist recht straightforward. Nach etlichen Segmentation Faults mußte ich dann herausfinden, daß beim Build PHP die alte MySQL-Library bevorzugt. Im phpMyAdmin sieht man dann eine schöne Warnung. Führt tatsächlich zu Crashes. Nachdem dann alles funktionierte, habe ich mit SugarCRM angenommen.

Die SugarCRM Webseite ist grottenschlecht. Das ganze Machwerk muß ein Unfall gewesen sein. Man findet das passende ZIP Archiv mit den Upgrade-Versionen nur mit Google und viel sinnlosem Herumklicken. Wenn die Download-Seite eine URL nicht auflösen kann, dann wird man zu einem Download-Portal geleitet wo es natürlich keine Links zu den Upgrades gibt. Es gibt nur einen Upgrade-Wizard, der Golfbälle durch Gartenschläuche saugen kann (sprich nach wenigen Klicks ist man so ratlos wie zuvor; er reicht einem aber ein Handbuch). Nach Studium des Manuals kann man dann tatsächlich von 5.0.0 auf 5.2.0 und letztlich auf 5.5.0 gehen. Man muß dazu nur bestimmte Einstellungen in der php.ini verändern (20 MB Upload „Limit”, sehr hohe Execution Time, etc.).

Die Sahnehaube auf der Aktion war die Involvierung mehrere Browser, denn

  • mein Iceweasel (Firefox) auf meiner Workstation im Büro hat ein defektes Profil und zickt mit JavaScript und so herum,
  • der Konqueror anfangs die SugarCRM Seite (vor dem Upgrade) nicht laden wollte,
  • nur der Opera alles konnte (aber nur bis kurz vor Ende des Upgrades),
  • der Konqueror dann doch die SugarCRM Seite lud,
  • irgendwie aber trotzdem der Upgrade Wizard nicht ganz fertig war,
  • und ich schließlich auf den Iceweasel auf meinem Laptop ausweichen mußte.

Ist doch toll, oder? Wenn das Web die Zukunft ist, dann können wir bald den Laden dichtmachen. Browser sind scheiße – und zwar alle. Gilt ebenso für Betriebssysteme, also macht euch keine Illusionen von frischem Obst.

Ruby On Snails Rant

  • Posted on December 4, 2009 at 10:56 pm

Ganz toll. Ich habe gerade stundenlang schlechte Dokumentationen gelesen, um eine simple Webapplikation zu installieren. Der Code läuft auf Schienen, weil es Ruby on Rails ist. Soweit ist das ja noch ganz gut. Man kann nun die Applikation mit einem Standalone Web Server laufen lassen. Das wollte ich nicht, weil ich einen Apache brauche. Macht ja nichts, gibt ja den Passenger. Als Fan von Dexter mag ich zwar keinen Apache mit einem Passenger haben, Ruby läßt mir aber nur schlechtere Wahlen. Die Installation vom Passengermodul möchte gerne das Installationsskript mit root Rechten ausgeführt haben. Krank. Im Web setzt bei vielen sofort das Hirn aus.

Jedenfalls gab es dann den Passenger, einen Apache, SSL/TLS Support und eine Konfiguration, um die Applikation einzuhängen. Stundenlange 404 später gab mir ein Blog den entscheidenende Tip. Man lösche einfach das mitgelieferte .htaccess und schon geht alles. Tatsächlich, es stimmt. Ganz toll, dafür braucht man Stunden, weil es 1001 Anleitung gibt wo die Leute alles anders machen. Natürlich ist PHP auch die Hölle, aber da werfe ich zumindest alles in ein Verzeichnis und es geht halbwegs (will heißen es wirft keinen 404).

Ich freue mich schon auf die nächsten Upgrades on Rails.

Top