Archive for the ‘Technik’ Category

GNOME braucht Dich!

Wednesday, July 26th, 2006

GNOME In rund sechs Wochen wird GNOME 2.16 veröffentlicht, und bis dahin gibt es für das Deutsche Übersetzungsteam noch einiges zu tun. Vielleicht hat ja trotz der Hitzewelle jemand von euch Zeit, Lust und Motivation, mal etwas für GNOME zu tun und beim Übersetzen zu helfen.

Ich habe eine Liste aller noch zu übersetzenden Pakete erstellt, in die sich Freiwillige eintragen können. Für Jungfrauen in Sachen Übersetzung existiert eine Hilfe, für weitergehende Fragen steht die dort verlinkte Mailingliste zur Verfügung, an die auch fertige Übersetzungen geschickt werden sollten.

Es wäre schön, mal wieder junges Blut bei den Übersetzern zu finden, da unser jetziges Team nur aus wenigen Mannen besteht die weitere Unterstützung gut gebrauchen können.

now playing  Fahr X hin – Äquatorrr

Auslassungspunkte in der kompletten Übersetzung *richtig* gesetzt

Thursday, June 15th, 2006

Heute kam ich endlich dazu, mich um Bug #343268 zu kümmern. In sämtlichen GNOME-Modulen mussten die Auslassungspunkte angepasst werden. Anstatt drei einzelnen Punkten wird nun das korrekte Unicode-Zeichen für Ellipsen verwendet, außerdem befindet sich davor nun gemäß den Deutschen Regeln ein Leerzeichen.

Um nicht alle 1824 notwendigen Änderungen von Hand durchzuführen habe ich ein kleines Bash/Perl-Script geschrieben, dass auch gleich etwaige "Standart"s korrigiert. Leider gelang es mir nicht, auch automatisch \ldot durch ein Leerzeichen zu ersetzen. Anschließend wird noch überprüft, ob auch tatsächlich nur msgstr-Zeilen verändert wurden um sicher zu stellen, dass die ursprünglichen msgid-Zeilen unberührt bleiben. Abschließend wird mit msgfmt überprüft, ob die po-Datei noch valide ist.

Da ich aber nur ungern Änderungen ohne mein Zutun durch ein Script durchführen und dann ins CVS stellen lasse, habe ich die 139 diff-Dateien vorher noch einmal selber durchgesehen. Bis auf in neun Modulen konnte ich alle Änderungen ohne Anpassungen einchecken, händische Anpassung war nur bei zuvor fehlerhaften Dateien möglich oder einigen "# DO NOT TRANSLATE"-Strings nötig. Wobei ich mich frage, wieso diese dann als zu übersetzend markiert werden?!

Meine Änderungen habe ich vorerst auf HEAD beschränkt, aber ich denke 148 CVS-Commits an einem Tag reichen für’s erste :)

Boah!

Friday, June 9th, 2006

Tabellenfrei, CSS-basiert, valides HTML 4.01 Strict und ein moderneres Aussehen:

http://slashdot.org

Wenn sie jetzt nur noch das neue GNOME-Logo verwenden würden… 

MS Office 2007

Friday, May 26th, 2006

Ich teste gerade das neue Microsoft Office 2007 (Office 12). Beim ersten Start vom neuen Word verwirrte mich das Fehlen des Datei-Menüs. Dieses ist nun einem vergrößerten Symbol in der Ecke oberen linken Ecke gewichen, von dem aus man auch Zugriff auf die Einstellungen hat. Ende 2003 wurde auf einer GNOME-Mailingliste zwar diskutiert, die Datei- und Hilfe-Menüs neu zu organisieren, umgesetzt wurde dies aber nicht, wohl um bestehende Anwender nicht mit einer völlig neuen Struktur vor den Kopf zu stoßen und konsistent zu anderen Betriebssystemen und Arbeitsumgebungen zu bleiben.

Dieses Problem hat Microsoft nicht, sind auf Windows-System doch seit jeher viele unterschiedliche Design-Entscheidungen vertreten, die sich auch visuell stark voneinander unterscheiden. Man vergleiche nur mal den Windows Media Player 8 mit Encarta, Word 2003, Internet Explorer 7 und Paint. So verwundert es nicht, dass Microsoft auch für Office 12 eine weitere Darstellungsart bemüht, die vielen unter dem Namen Ribbon bekannt ist.

Auf den ersten Blick ein wenig verwirrend, da ungewohnt, lernt man aber schon nach wenigen Augenblicken, damit umzugehen. Die Fenster- und Symbolleisten nehmen bei 1024×768 ungefähr ein Fünftel des Arbeitsplatzes ein, zeigen jedoch nicht mehr alle Optionen, sondern abhängig vom gewählten Kontext nur die nach Meinung von Office nötigen. Momentan schreibe ich einen Text, daher werden mir ausschließlich Optionen zur Formatierung von Schriftart, -schnitt etc. angeboten. Erst nach einem Klick auf Einfügen werden die Symbole für Tabellen, Grafiken, Formeln etc. angezeigt, die nach einem weiteren Klick ihre Optionen preisgeben. Die großen, kontextuell hierarchisch geordneten Symbole im Ribbon haben somit die gewohnten, weit verschachtelten Menüleisten vertrieben.

Auch sonst bietet Word 2007 einige nette Funktionen, die das Leben erleichtern. Markiert man ein Wort, so blendet sich wie eine Art Tooltip langsam eine Palette an Formatierungsmöglichkeiten ein, sodass man zum nachträglichen formatieren von Wörtern nicht den Mauszeiger an den oberen Bildschirmrand bemühen muss. Das ganze ist natürlich nur sinnvoll, wenn man die Wörter auch per Maus markiert, und tatsächlich: Microsoft hat mitgedacht!

Die Rechtschreibprüfung kennt übrigens „Linux“, weiß allerdings nichts über die neue Deutsche Rechtschreibung Bescheid. Liegt vielleicht auch an irgendeiner Einstellung, da ich allerdings seit einigen Jahren kein Word mehr angefasst habe, bin ich da nicht so bewandert.

Zusammenfassend kann ich sagen, dass mir das neue Office zusagt. Mir gefällt, dass Microsoft endlich mal Mut zu Neuem zeigt und mit bisherigen Bedienerkonzepten bricht und nicht mehr sämtliche Altlasten aus der Win16-Zeit mitschleppt. Ich bin gespannt, wie sich Windows Vista in diesem Punkt gibt, auch wenn ich bezweifle dass es in meiner VMWare so rund läuft wie Office.

Diesen Eintrag habe ich übrigens mit der Blog-Funktion von Word 2007 geschrieben, mal sehen, ob und wie er im Netz landet.

Wörterbuch in Ruby

Wednesday, May 24th, 2006

Wenn ich mich zur Zeit im Netz etwas rar mache, dann liegt das daran, dass ich diesen Monat bei IDS-Design in Beckum arbeite und mich um die kommenden Versionen von easyLink und portal to date kümmere. Sie stellen mir ein Hotel(doppel)zimmer und ein warmes Büro, da kann man einfach nicht "nein" sagen. Nach dem täglichen, neunstündigen Programmiereinsatz zieht es mich dann aber eher selten an den PC, sodass ich dann doch lieber eine Runde joggen gehe.

Doch gestern war es kalt und am regnen, und was macht man dann? Genau, man flitzt zur Tanke, kauft sich eine große Packung Fertigmilchreis sowie ein Sixpack Bier und macht es sich im Trockenen gemütlich.

Ich entschied für die Lektüre von why’s (poignant) guide to ruby, und nach einer Stunde und der Lektüre der ersten drei Kapitel überlegte ich mir, was denn nun mein erstes Ruby-Programm werden sollte…

Im Hotel lese ich hauptsächlich englische Literatur, und da das WLAN dort mit 8€ pro Stunde zu Buche schlägt, fällt dict.leo.org aus, um mal eben ein unbekanntes Wort nachzuschlagen. Im Büro installierte ich also ding auf meinem Laptop, stellte aber erst im Hotel fest, dass ich lediglich das Deutsch-Englisch-Wörterbuch nutzen kann.

Schnell wurde mir klar: ich schreibe mir ein eigenes kleines Wörterbuch.

115 Zeilen später war es dann soweit: mein erstes Ruby-Programm ist fertig! Doch es kommt noch besser: es ist gleichzeitig mein erstes Gtk+-Programm:

Schön simpel: Englisches Wort eingeben und auf "Nachschlagen" klicken.
 

Und kurz darauf bekommt man alle gefundenen Übersetzungen präsentiert.

 
Einfach Wörterbuch.ruby runterladen, mit chmod +x ausführbar machen und starten. Wörter können optional direkt über die Befehlszeile übergeben werden, ansonsten erscheint ein netter Dialog, der zur Eingabe auffordert. Der Code ist sicherlich nicht perfekt, er geht beispielsweise davon aus, dass /usr/share/trans/de-en existiert und blockiert beim Auslesen der Datei. Aber hey, bequemer als per Hand im Langenscheid nachzuschlagen!

Vielleicht hat ja jemand mit mehr Ahnung von Ruby und Gtk+ ein paar Tipps für mich? Bin über Anregungen sehr dankbar!

Nachtrag 03. April ’07: Aus aktuellem Anlass rate ich von der Verwendung der Software "easyLink" ab.

Wenn ~$bm nicht will…

Thursday, May 11th, 2006

…flucht man zuallerst und fragt sich, wie solch ein essenzieller Operator nicht funktionieren kann. Dann bastelt man sich eben einen Workaround:

function complement($bm) {
    return $bm ^ (pow(2, floor(log($bm, 2))+1)-1);
}

Und schon interessiert die Ursache des Problems (vorerst) nicht mehr. Ursachenforschung muss halt bis nach Feierabend warten.

1 : 887.503.681

Sunday, April 30th, 2006

Gallery 2 legt beim Erstellen von Zip-Archiven temporäre Dateien an, die nach dem Präfix "zip_" einen sechsstelligen, eindeutigen Alphanumerischen Namen erhalten. Und welchen Dateinamen finde ich gerade beim Durchsehen der rsync-Logdatei des Backups?

/var/www/fotos_hendi_name/g2data/tmp/zip_icEaGe.zip

lowfat – document viewing with a twist

Thursday, April 27th, 2006

Mirco Müller arbeitet an lowfat, einer in C++ mit Gtk+ und OpenGL entwickelten Dateiverwaltung der nächsten Generation:

Its goal is to bring that life-like and natural display to the desktop, alongside with a flat hierarchy of our files, when combined with todays search-engines. The aim of lowfat is to be an engine to view and handle your documents with life-alike behaviour allowing for example to seamless zoom, pan and rotate them.

Quellcode zum Ausprobieren gibt’s leider noch keinen, dafür aber weitere Screenshots (1, 3, 4) und eine Videodemonstration (Ogg Theora, Flash). Das Video sieht wirklich sehr vielversprechend aus; nur schade, dass er einer schnell fortschreitenden Weiterentwicklung einen Spendenaufruf voran gestellt hat.

GNOME 2.14 und Xgl/Compiz

Sunday, April 9th, 2006

Kaum ist der Zivildienst vorbei wird die erneut verdiente Freizeit genutzt und endlich auf Ubuntu Dapper mit GNOME 2.14 umgestellt, während man sich zwei Nächte hintereinander bis 5:00 respektive 4:00 Uhr um die Ohren schlägt. Von den versprochenen Performance-Steigerungen ist wirklich was zu spüren, gEdit startet nun beispielsweise so gut wie sofort anstatt sich eine Pause von 10 Sekunden zu können. Auch Nautilus ist bisher kein einziges mal abgeschmiert beim Zugriff auf FTP- und SSH-Server.

Bei der Gelegenheit habe ich auch gleich mal mit Xgl und Compiz herumgespielt und wurde positiv überrascht: selbst auf meiner Mobility Radeon 9600 lief es flüssig, die Exposé-ähnliche Funktion beim Druck auf F12 ist genial. Leider kommt Xgl im Gegensatz zu Xorg nicht mit meinen beiden Monitoren (:0.0 und :0.1) klar, sodass ich lediglich den ersten (:0.0) verwenden kann. Schade. Sobald AIGLX mit Radeon > 9500 funktioniert werde ich den mal ausprobieren, da er ein Xorg-Aufsatz ist sollte dieses Problem dann nicht auftreten.

str_replace für JavaScript

Saturday, April 8th, 2006

Als Web-Entwickler ist man es ja gewohnt, beim Programmieren mit JavaScript regelmäßig über Unzulänglichkeiten in den Implementierungen der einzelnen Browser zu stolpern. Da ich mich in der letzten Zeit jedoch näher mit JavaScript beschäftigen musste, stellte ich weitere Ungereimtheiten fest, je tiefer ich mich in die Materie einarbeitete und meine Erfahrungen mit dem “JavaScript way of programming” machte.

In diesem Beitrag beschreibe ich die für mich drei größten Überraschungen. Besonders interessant dürfte für die meisten Punkt 3 sein, indem ich meine effiziente Lösung für eine str_replace wie in php für JavaScript vorstelle.

Doch der Reihe nach — aber ihr dürft natürlich auch direkt weiter scrollen ;-)

1. Semikolons am Befehlsende sind optional. Und alles was optional ist, macht in der Regel Probleme. In C, php, Java usw. fliegt einem der Compiler bei einem vergessenem Semikolon um die Ohren; man merkt, dass etwas nicht stimmt, und kann den Fehler schnell beheben. Nicht so in JavaScript, denn hier ist das Semikolon am Befehlsende optional, man kann auch einfach eine neue Zeile einfügen. Dumm nur, dass dadurch ungewünschte Effekte auftreten können. Es gibt Situationen – und das leider öfter, als man denkt! – da vergisst man ein Semikolon, und das was JavaScript dann dort reininterpretiert unterscheidet sich von dem, was man sich vorgestellt hatte. Ups! Abhilfe schaffen hier Tools wie jsLint.

2. Variablen in Funktionen und Objekten sind global. Jedenfalls solange man nicht var vor sie schreibt. Das kann übel sein, wenn man beispielsweise in zwei Funktionen die selben Variablennamen – bspw. i für eine Zählvariable – verwendet, und diese abwechselnd aufruft.

3. str_replace für JavaScript. String-Objekte in JavaScript besitzen zwar eine replace-Methode, die jedoch mit regulären Ausdrücken arbeitet und das Objekt modifiziert. Da ich jedoch nur eine simple Suchen/Ersetzen-Funktion benötige und die Einfachheit der str_replace(search, replace, subject)-Funktion aus php gewöhnt bin, wollte ich mir so etwas für JavaScript basteln, nachdem ich dies auch schon für foreach und in_array getan hatte. Zuerst wollte ich einen Wrapper für String.replace bauen, dann kam mir jedoch eine viel simplere Idee:

function str_replace(search, replace, subject) {
return subject.split(search).join(replace);
}

Der String subject wird an allen Vorkommen von search zerteilt, es entsteht ein Array mit den resultierenden Teil-Strings. Dieses Array wird dann wieder zu einem String verkettet, und zwar mit replace an allen Verknüpfungspunkten.