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
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".