Kategorie ‘Code’

Gerade gefunden: Ein Link für alle, die wissen, was eine Turingmaschine ist.

Kommentare deaktiviert für Maschine

Ja, da war ich wohl ein wenig voreilig, das Verständnis des Buildsystems anzunehmen. Das stellte sich heraus, als ich den erfolgreich kompilierten gcc unter einem Debugger1 betreiben wollte. Wer schon einmal versucht hat, ein Kompilat mit eingeschalteter Optimierung zu debuggen, weiß, was ich meine: Variablen lassen sich nicht mehr auslesen, das Programm scheint im Code wirr vor und zurück zu springen -- selbst ein sehr einfaches, selbst geschriebenes Programm ist kaum noch nachvollziehbar. Nicht so schlimm, dachte ich mir, und habe mit CFLAGS='-g -O0' configure gleich den nächsten Build angestoßen. Die Ernüchterung folgte allerdings auf dem Fuße:2 die Flags waren irgendwo unterwegs verlorengegangen, und das Resultat kein bißchen brauchbarer als beim ersten Versuch.

Dabei bin ich eigentlich froh und dankbar, daß der gcc als Buildsystem die GNU Autotools verwendet. Sie werden zwar manchmal als veraltet und zu kompliziert abgetan, aber ich komme mit ihnen immer noch weit besser klar als mit CMake, Python Distutils und allem anderen, das ich bislang gesehen habe. Die Probleme beim gcc rühren allein daher, daß es mit dem bloßen Kompilieren nicht getan ist; stattdessen wird der dabei erzeugte Compiler dazu verwendet, aus dem Sourcecode noch einen Compiler (Stage2) zu erzeugen, und dieser wiederum erzeugt dann das fertige Kompilat (Stage3).3 Of will man in verschiedenen Stadien verschiedene Optionen verwenden, und deshalb gibt es auch einen ganzen Zoo von Umgebungsvariablen, deren Zweck nicht immer ohne weiteres klar ist.

Ach so, die Lösung: nach dem Konfigurieren einfach make BOOT_CFLAGS='-g -O0' bootstrap eingeben, und schon klappt es.

  1. Für den Fall, daß noch nicht alle des Programmierens nicht mächtigen Leser aufgegeben haben, sei gesagt: Ein Debugger ist ein Programm, mit dem man den Ablauf und den Zustand eines anderen -- möglicherweise fehlerhaften -- Programmen schrittweise verfolgen kann. []
  2. Jedenfalls halbwegs -- so ein Notebook ist nicht gerade die schnellste aller Entwicklungsmaschinen []
  3. Dieser Bootstrap genannte Zauber dient dazu, den fertigen Compiler mit sich selbst zu kompilieren, was ein guter Test für seine Zuverlässigkeit ist. []
Kommentare deaktiviert für Suboptimal

Eine kurze Statusmeldung: Inzwischen läuft der Build durch, und ein passendes Problemchen zur Analyse habe ich auch schon gefunden. Am Anfang ist es immer ratsam, sich einen weniger drängenden Bug zu suchen, weil es sonst leicht passiert, daß jemand mit mehr Erfahrung und Überblick schneller ist...

1 Kommentar

Es war vor ein paar Tagen, da saß ich in meinem Lieblingssessel, es war etwas früher als üblich, und es sollte ein schöner Abend werden. Endlich die Gelegenheit, etwas zu tun, zu dem mir sonst die Zeit fehlt -- doch was nur? Lesen mochte ich aus irgendeinem Grund nicht, und der Vokabelkasten neben mir wirkte auch nicht gerade verlockend. Ein Computerspiel vielleicht, dachte ich mir, wenn die Monster zur Tür hereinkommen und du die Taschenlampen und Bumerangs strategisch ums Bett herum verteilst ist das sehr befriedigend, weil die Kiste dir mit jeder Monsterwelle eine neue Herausforderung vorwirft aber du löst sie jedesmal und die Lösung ist so einfach und so elegant wenn du nur die Taschenlampen hinten in die Kurven und die Shuriken vorne an die Geraden stellst, aber nein irgendwie ist das ja auch alles repetitiv und ein bißchen langeweilig, und dann wußte ich du brauchst Code code CODE und es ist völlig egal daß du jeden Tag acht Stunden am Rechner verbringst du mußt jetzt und gerade den Compiler anwerfen und ein programmieren und jedes Problem ist eine Herausforderung aber das Programm löst sie und der Code ist so elegant nur ist es gar nicht repetitiv wenn du nur das richtige Problem hast und hinterher können tatsächlich Leute dein Programm benutzen und...

Nun ja, ich habe dann ein bißchen nach einem passenden Projekt gesucht. Vielleicht ein schönes buntes Mac-Programm? Aber bald fiel mir wieder ein, daß ich vor fünf oder sechs Jahren schonmal ein bißchen im gcc herumgefuhrwerkt hatte, und das hat mir eigentlich von allen Projekten immer noch am meisten Spaß gemacht: einerseits ist der Compilerbau schon soetwas wie die Königsdisziplin der angewandten Informatik, und andererseits gibt es beim gcc unglaublich viele kleine Nischen und Unterprojekte, in denen man sich nicht gegenseitig auf die Füße tritt, man aber auch Chancen hat, daß der eigene Code hinterher im fertigen Produkt Verwendung findet. Naja, und dann hat der gcc natürlich eine sehr zentrale Rolle im GNU-Projekt und eine unglaublich breite Nutzerschaft, und das schmeichelt dem Ego dann auch irgendwie.

Für's erste ist aber statt Blood, Sweat & Code noch der Kampf mit dem Buildsystem angesagt, damit ich den ersten Bootstrap hinbekomme.

3 Kommentare

Heute habe ich mal wieder eine Notiz, die für die meisten Leser wohl weniger interessant sein dürfte.

Wer Jim Rogers' Pipe Commands für Ada verwendet und über den Linkerfehler
undefined reference to `c_constant_eof'
stolpert, der möge es einmal mit
pragma Import (C, c_constant_EOF, "__gnat_constant_eof");
anstelle von
pragma Import (C, c_constant_EOF);
probieren.

[via Usenet]

Kommentare deaktiviert für End Of Fileenglish

Tags:

Wenn der Rechner plötzlich komische Sachen macht, dann könnten Cosmic Rays -- also Höhenstrahlung -- die Ursache sein; das findet jedenfalls Nelson Elhage vom Ksplice-Blog. Ich persönlich halte ja defektes RAM für wahrscheinlicher, aber Nelsons Fehlersuche ist erstklassig. Lesenwert!

Kommentare deaktiviert für Kosmischenglish

Dumme Gedanken

Immer, wenn ich in den letzten Tagen auf unser Betriebsgelände gekommen bin, mußte ich an Eis denken1: die festgefahrene Schneedecke sieht mit dem dunklen Splitt wie Stracciatella aus, und die dünne Schicht leicht dreckigen Schnees darüber hat fast genau die Farbe von Nußeis.

Musikalisch

Aber eigentlich wollte ich ja etwas ganz anderes erzählen, etwas über iTunes nämlich. Ich benutze dieses Programm zum Musikhören und zum Verwalten meiner Sammlung, außerdem für den einen oder anderen Podcast. Den Store habe ich bislang noch gar nicht benutzt, und meinen iPod verwende ich auch nur noch sehr selten -- im Grunde könnte ich also auch auf andere Software ausweichen. Allerdings funktioniert iTunes klaglos, ist gut ins System integriert (jedenfalls auf dem Mac), und eine echte Alternative kenne ich auch nicht2

Mißtöne

Trotzdem gibt es gelegentlich Punkte, die mich stören. Da ist zum einen einiges an Kleinkram, über den man aber ganz gut hinwegsehen kann. So läßt sich beispielsweise bei jedem futzeligen kleinen Tool die, äh, Toolbar3 nach Lust und Laune den eigenen Vorstellungen anpassen; diese Funktion bringt das System mit, so daß der Anwendungsprogrammierer nur noch wenig Arbeit damit hat. Trotzdem geht es by iTunes nicht. Oder die Smart Playlists4: Mehrere Kriterien lassen sich logisch per und oder oder verknüpfen, aber nicht mit beiden5. Allerdings läßt sich dieses Problem (das ganz ähnlich auch bei Apple Mail besteht) durch Verschachteln von Smart Playlists ganz gut umgehen.

Bewertet

Zwei Sachen sind aber sozusagen etwas größer: der Umgang mit Alben, und das Bewertungssystem.
Letzteres ist sehr einfach -- und genau deshalb macht es auf mich den Eindruck, etwas lieblos an das Programm angeklatscht zu sein: man kann jeden Titel mit einem bis fünf Sternen bewerten. Die Sterne erscheinen dann in den Titellisten, und man kann sie von Smart Playlists auswerten lassen6. Das war es auch schon. Halt, eine Kleinigkeit gibt es doch noch: wenn man komplette Alben bewertet, dann wird diese Bewertung auf alle enthaltenen (unbewerteten) Titel übertragen, aber bei diesen erscheinen die Sterne nur als Umrisse. Umgekehrt wird die Bewertung eines Albums aus den Bewertungen der Einzeltitel berechnet7.

So weit, so gut (oder auch nicht). Solch eine simple Bewertungsfunktion ist irgendwie auf dem Stand der neunziger Jahre8 stehengeblieben. Meine Durchschnittsbewertung liegt knapp über vier9 -- Noteninflation halt. Hier wäre Platz für ein grundlegend neues Konzept. Wie das genau aussehen soll, weiß ich auch nicht; aber die Grundidee ist, daß der Hörer keine absoluten Bewertungen mehr vergeben muß; stattdessen könnte man zum Beispiel verschiedene Titel gegeneinander bewerten, und das Programm berechnet daraus eine Gesamtbewertung. Oder die Titelbewertung baut sich langsam auf, und man gibt nach jedem Hören nur an, ob man den Titel gerade besser oder schlechter als seine Bewertung findet; diese wird dann in kleinen Schritten angepaßt10. Oder noch eine ganz andere Idee -- irgendeinem Programmdesigner wird schon etwas Schlaues einfallen.11

Albus, -a, -um

Jetzt muß ich mich, glaube ich, mal wieder als furchtbar altmodisch outen. Mit dem Durchbruch von mp3 und ähnlichen Formaten hat sich der Musikkonsum12 wohl ziemlich auf Einzeltitel konzentriert. Das Album hat sich einigermaßen überlebt.

Naja, bei mir halt nicht. Ich bevorzuge es immer noch, ganze Alben zu hören -- für mich sind das Gesamtkunstwerke, da gibt es einen Spannungsbogen ganz ähnlich wie bei einem guten Buch, und manchmal wird sogar eine richtige Geschichte erzählt13.

Nun ja, so ganz tot ist es auch wieder nicht: iTunes gruppiert Titel zusammen, die dem gleichen Album entstammen, und stellt das Coverbild neben der Titelliste dar. Außerdem kann man den Zufallsgenerator ("Shuffle") so einstellen, daß statt einzelner Stücke ganze Alben abgespielt werden. Schließlich gibt es noch die Bewertungsübertragung, von der ich oben schon geschrieben habe.

Trotzdem finde ich, daß man da noch einiges tun könnte: so benutze ich gerne Smart Playlists, um gut bewertete Titel zu suchen, oder solche, die ich länger nicht gehört habe. Oft finden sich dann aber wirklich nur einzelne Titel statt ganzer Alben: vielleicht habe ich letzte Woche mitten in einem Album aufgehört, und die letzten Titel sind jetzt zwei Wochen älter als die ersten; oder ich habe nicht alle Titel gleich bewertet, so daß ich jetzt nur einen Teil in der Fünf-Sterne-Liste wiederfinde.

Schön wäre es, wenn Smart Playlists besser mit Alben umgehen könnten; ich fände es zum Beispiel praktisch, eine Liste länger nicht gehörter Alben zu haben statt immer nur einzelne Titel.

[Edit: English]

  1. Will sagen, an Speiseeis; von der anderen Sorte gibt's derzeit eh genug. []
  2. Wieder: auf dem Mac. Unter anderen Systemen mag das anders aussehen. []
  3. Also der obere Bereich des Fensters, in dem gerne diverse Icons erscheinen, um häufige Befehle schnell ausführen zu können. []
  4. Das sind automatische Zusammenstellungen von Musiktiteln anhand von Regeln. []
  5. Also: ich kann nicht alle Titel auswählen, die ich besonders gut bewertet habe und die entweder aus den 70ern stammen oder Folk sind. []
  6. Man könnte etwa eine Liste mit allen Titeln, die mindestens vier Sterne haben, erstellen. []
  7. Wieder vorausgesetzt, daß man das Album nicht explizit selbst bewertet hat. []
  8. Man könnte auch sagen: des vorigen Jahrhunderts. []
  9. Bei Lovelybooks liege ich sogar bei 4,3 ... []
  10. Falls das unklar war: ein neuer Titel hat meinetwegen eine Bewertung von 3. Nach dem ersten Hören sage ich der ist aber besser, und das Programm erhöht die Bewertung meinetwegen auf 3,5. Beim zweiten Mal finde ich ihn immer noch besser, und er rutscht auf 3,8 -- und so weiter in immer kleineren Schritten. []
  11. Ich habe mich gleich mal in die Wunschliste eingetragen:

    What I would like to see in a future iTunes version is a truly innovative rating system. Instead of assigning a fixed number of stars per title, something that evolves as I build up my library and listen to music would be great.

    For example, once I have assigned preliminary stars to a new title, iTunes might allow me to compare it to other titles with a similar rating (say, while listening to the track). iTunes could then adjust its rating accordingly. Globally adjusting ratings in order to use the full spectrum of one to five stars might also be useful. Currently, the average rating in my library is slightly above four stars, however it is hard to correct this manually.

    []

  12. Von Konzerten mal abgesehen. []
  13. Und Vinyl finde ich toll. Nur das Laufwerk paßt nicht in meinen Rechner. Schnüff. []
Kommentare deaktiviert für Einmal Stracciatella und Nuß, bitteenglish

Unter Macintoshjüngern-Anwendern gibt es seit Wochen nur ein Thema: die neue Version des Betriebssystems, 10.6, offizieller Codename Snow Leopard, sollte diesen Herbst erscheinen.

Es ist dann doch etwas schneller gegangen als gedacht (ja, das kommt auch in der EDV manchmal vor) -- seit dem 28. August kann man das System käuflich erwerben.

Spätestens jetzt können Nichtmacianer aufhören zu lesen; alle anderen mag vielleicht interessieren, daß Apple die neue Version ganz freimütig mit 0 new features vorgestellt hat -- um dann einzuschränken, eines gebe es doch: die Unterstützung von Microsoft Exchange nämlich. Wer in einem größeren Unternehmen arbeitet, mag sich darob dankbar gen Cupertino verneigen; den Privatanwender dürfte das aber weniger interessieren.

Was ist also neu am neuen System? Alles soll irgendwie etwas schneller, schlanker, flüssiger geworden sein, liest man allerorten. Wer etwas fundierterer Informationen bedarf, dem sei der sehr ausführliche Artikel von Ars Technica ans Herz gelegt. Zugegeben, das war jetzt sehr viel Vorrede, nur um einen Link unterzubringen. Darum bringe ich jetzt noch den letzten Tip an, sich von den ersten zweieinhalb Seiten des Artikels (im ganzen sind es dreiundzwanzig!) nicht täuschen zu lassen -- sie sind bei weitem der Teil mit dem wenigsten Inhalt.

Und nun bin ich still, damit ihr in Ruhe lesen könnt.

Kommentare deaktiviert für Zero New Features

Heute habe ich mal wieder etwas neues über CSS gelernt: Man kann :before nicht inline benutzen. Naja, eigentlich ist das ja auch logisch. Immerhin wirken Inline-Styles auf genau ein Element -- dasjenige, an dem die Option style hängt. Und weil :before ein Pseudo-Element ist, für das überhaupt kein HTML-Tag existiert, kann man auch keinen Inline-Style dafür definieren.

Ich hatte es so versucht:

<div style=":before {content: url(xyz.png)}" >Text</div>

Das ist natürlich Quark, Inline-Styles verwenden weder Elemente noch die geschweiften Klammern. Ich habe das jetzt etwas anders gelöst, und ab sofort funktionieren auch die Kategorie-Icons.

Kommentare deaktiviert für Trouble Inlineenglish

Mit iTunes kann man Musik hören. Ob das Programm nun gut oder schlecht ist, darüber kann man sicher streiten; ich finde es jedenfalls ganz praktisch.

Weil heute alles irgendwie vernetzt sein muß, erlaubt auch iTunes es, auf die Musiksammlungen anderer Rechner zuzugreifen. Dummerweise kann man Titel nur hören, aber nicht herunterladen -- technisch ist das ziemlicher Quark, aber da haben wohl die Rechteinhaber gedrängelt. Und noch etwas geht nicht: wenn andere Leute auf meine Bibliothek zugreifen, kann ich zwar sehen, wie viele; aber nicht, wer.

Ein kurzer Besuch bei der Suchmaschine meines Vertrauens[1] läßt mich jedoch wissen: wo die Applikation sich sperrt, hilft das Betriebssystem weiter. Bei Juretta finde ich einen netten Aufruf des Tools lsof, der meine Neugier befriedigt:

lsof -r 2 -n -P -F n -c iTunes -a -i TCP@`hostname`:3689

Leider bin ich noch nicht zum Testen gekommen, und der Eintrag von Stefan ist immerhin fast vier Jahre alt. Außerdem geht das so natürlich nur auf dem Mac, weil Windows lsof nicht kennt. Wer mag, kann sich ja eines der Windows-Tools daraufhin ansehen. Ein mögliches Problem: unter Unix ist fast alles eine Datei, auch Netzwerkverbindungen. Unter Windows mag das anders aussehen.

[1] Aus Prinzip ist das nicht Google -- die haben mir ein bißchen zu viel Marktmacht.

[Edit: Artikel vergessen]

4 Kommentare