Lenix.de

taking notes

Lektüre

2005-12-19 21:00 CET

Für all diejenigen unter euch die gerade am Überlegen sind was sie sich als nächstes an umfassenden Lesestoff zuführen sollten, hier eine kleine Übersicht der Publikationen welche ich momentan konsumiere:

  • Professionelle Softwareentwicklung mit PHP 5 von Sebastian Bergmann ist ein sehr empfehlenswertes Buch um sich einen Überblick zu verschaffen über die neuen Möglichkeiten, welche PHP5 zum Beispiel in Sachen Objektorientierung und Fehlerbehandlung bietet. Das Buch kommt schnell und verhältnissmässig praxisnah zur Sache, streift auch Themen wie XML-Verarbeitung und ist zu alledem auch noch kostenlos zum Download verfügbar.
  • Ebenfalls für Web-Entwickler bzw. -Administratoren höchst interessant sind meiner Meinung nach diese Folien zur Hard- und Software Architektur von LiveJournal (heute Sixapart), einem internationalen Blog-Hosting Service. Es wird auf die Entwicklung von System- und Datenbank- und Codestruktur unter den Aspekten Ausfallsicherheit und Skalierbarkeit eingegangen, insbesondere beachten Sie bitte Seite 28 ;-)
  • Für die ruhigeren Momente hält bei mir zu guter Letzt momentan The Art of Unix Programming von Eric S. Raymond her. Enthält einiges an historischem BlahBlah, aber auch viele Sachen über die man tatsächlich einmal nachgedacht haben sollte. Bisheriges Fazit: viel abstraktes Konzept, dieses aber gut verpackt. Vielleicht wirds ja noch konkreter, ich update dann an dieser Stelle. Für alle die es selbst herausfinden wollen: auch dieses Buch ist auf der Webseite frei verfügbar.

Serverausfall

2005-12-12 21:30 CET

Wie einige wahrscheinlich bemerkt haben war mein Server "unixuni.org", auf dem unter anderem auch "lenix.de" läuft, die letzten 23 Stunden nicht zu erreichen.

Der ursprüngliche Grund dafür waren Arbeiten am Stromnetz meines Providers. Nach Beendigung dieser fuhr der Rechner zwar wie geplant wieder hoch, hatte aber keine Netzverbindung mehr.

Die Netzwerkkarte war erfolgreich von FreeBSD erkannt und initialisiert worden, und obwohl die LED an der Karte wie wild blinkte übertrug sie kein einziges Paket, nichtmal ARP. Weder ein Wechsel des Switchports, noch weitere Neustarts brachten sichtbare Erfolge.

Zum entscheidenden Durchbruch verhalf schliesslich folgender Einfall: Rechner einmal komplett auszuschalten, Stromkabel ein paar Sekunden trennen und erneut starten. Anschliessend funktionierte dann tatsächlich alles wieder wie beabsichtigt; so einfach kann Hardware sein ;-)

Devil's Pie - Angelegenheiten

2005-11-22 05:30 CET

UPDATE 2005-12-19 20:00 CET

Ich habe gesehen dass foosel eine viel umfassendere Dokumentation des "Devil's Pie" Konfigurations Formats verfasst hat. Sie hat sogar farbige Syntax-Hervorhebung, also geht Ihr besser dorthin :-)

Mit der Erscheinen von Devil's Pie 0.13 hat sich die Konfigurations-Syntax dieses Programmes massiv geändert und viele Probleme tauchten auf. Ich fasse an dieser Stelle kurz einige Fragen auf welche diesbezüglich an mich gerichtet wurden bzw. welche sich mir selbst stellten.

  • Alle Beispiele von S-Expr im Zusammenhang mit der Devilspie-Konfiguration welche ich bisher gesehen habe waren Einzeiler. Ich möchte darauf hinweisen, daß es ohne weiteres möglich ist einen Ausdruck über mehrere Zeilen zu verteilen. Selbiges kommt der Lesbarkeit unmittelbar und massiv zugute; im Vergleich z.B.:
    (if (or (matches (window_name) "Skype") (matches (window_name) "formMain")) (begin (geometry "230x500+1046+44") (set_workspace 1)))
    im Gegensatz zu:
    (if
       (or
          (matches (window_name) "Skype")
          (matches (window_name) "formMain")
       )
       (begin
          (geometry "230x500+1046+44")
          (set_workspace 1)
       )
    )
  • Ausserdem ist es anfänglich sehr unersichtlich, an welcher Stelle Klammern gesetzt werden müssen/dürfen und wo nicht. Dazu eine einfach Regel:
    Ein Funktionsaufruf sowie seine Parameter werden von einem Satz Klammern umschlossen.
    Es gibt in der Devilspie-Konfiguration keine Variablen, weshalb (window_name) im obigen Beispiel eine Funktion darstellt, welche den Namen des aktuell inspizierten Fensters zurückgibt.
    (if ..) ist ebenfalls eine Funktion die Ihren ersten Parameter nach wahr / falsch evaluiert, und im Wahrheitsfalle den zweiten Parameter ausführt.
    (geometry "...") ist eine Funktion welche einen Parameter akzeptiert und eine Aktion mit dem aktuell betroffenen Fenster durchführt, genauso wie (set_workspace..), usw.
  • Nachdem man das nun also weiss, wäre es gut eine Referenz der Funktionen zur Hand zu haben. Hier eine grob sortierte Liste extrahiert aus parser.c und e-sexp.c:
    • Expandos (Variablen-"Ersatz")
      (window_name), (window_role), (application_name)
    • Evaluierungen
      (if bedingung aktion),
      (and bedingung [bedingung ..]), (or bedingung [bedingung ..]),
      (not bedingung),
      (= wert wert), (< wert wert), (> wert wert),
      (is wert muster), (contains wert muster), (matches wert muster)
    • Aktionen
      (+ wert wert), (- wert wert),
      (begin aktion [aktion ..]),
      (debug),
      (geometry wert),
      (fullscreen wert),
      (maximize wert), (maximize_vertically wert), (maximize_horizontally wert),
      (minimize),
      (shade), (unshade),
      (pin), (unpin),
      (set_workspace wert),
      (skip_pager wert), (skip_tasklist wert),
      (above), (below),
      (undecorate), (wintype)
    Achtung: Diese Liste ist unvollständig und kann mittlerweile auch überholt und/oder falsch sein.
  • Eine Bemerkung am Rande: Die (debug) Funktion gibt zur Zeit (window_role) nicht mehr mit aus, gibt es dafür einen speziellen Grund?
    Ich würde dafür stimmen eine Ausgabe zu generieren welche direkt wiederverwendbar ist, wie beispielsweise:
    (and (is (window_title) "fenstertitel") (is (application_name) "applikations-name") (is (window_role) "roleStr"))
    Man könnte auch (debug...) n Argumente akzeptieren lassen um zu entscheiden wie die Ausgabe formatiert wird, daß würde die Interaktion mit einer Konfigurations-Oberfläche erheblich vereinfachen.

Eigentlich hätte ich diesen Text direkt auf der Devilspie-Seite in den Release-Kommentare geschrieben, aber ich befürchte das hätte meine Versuche einer lesbaren Formatierung effektiv vereitelt. Da es leider auch keine Preview-Funktion gab habe ich beschlossen das ganze vorerst hier zu veröffentlichen.

Mommy, i'm getting hits!

2005-11-07 13:30 CET

Hey, ich fühle mich dazu genötigt hier mal schnell etwas hinzuschreiben, denn ich bemerkte soeben die Schar von Besuchern die derzeit von Ross Burtonini aus über mich herfällt.

Es tut mir leid dass ich momentan noch nicht mit grandiosen Inhalten glänzen kann, eigentlich habe ich Ross nur gefragt ob es Ihm etwas ausmachen würde meinen Namen in seinem Devil's Pie Bereich zu verlinken, denn sucht man zur Zeit mit Google nach "Guido Boehm", so erscheint Devil's Pie als der erste Treffer.

Hiermit noch einmal Entschuldigung für den abwesenden Inhalt, aktuell arbeite ich an dem Bereich "über mich".