Category: Arbeit

Sprache bei Firefox 3.6 unter Ubuntu wechseln

Februar 23rd, 2010

Heute morgen über Ubuntu-Tweak die 3.6er Version des Firefox installiert und plötzlich war alles auf englisch. Mist.

Über Synaptic lässt sich Deutsch leider nicht nachinstallieren. Nach einigem Suchen habe ich leider nicht im Netz gefunden wie ich Sprachen nachinstallieren kann. Die Language-Packs von Firefox sind für Deutsch leider nicht über die Webseite erhältlich.

Durch Zufall habe ich dann die Extension “Quick Locale Switcher” gefunden. Die ließ sich installieren und siehe da… weiterhin alles Englisch.

In den Einstellungen zum Plugin dann der rettende Hinweis. Man findet auf dem Mozilla-FTP-Server auch die Sprach-XPI-Dateien einzeln. Und siehe da, kaum macht man’s richtig – schon gehts.

Online Quell-Code Editor für PHP, CSS, Javascript

Dezember 16th, 2009

Syntaxhighlighting for the PeopleGerade habe ich ein intressantes Tool gefunden. Mit CodeMirror ist es möglich online, direkt im Browser PHP-Quellcode zu bearbeiten. Das funktioniert im Prinzip ähnlich wie bekannte WYSIWYG-Editoren für HTML, nur dass die Textarea um Syntax-Highlighting ergänzt wird.

Es gibt eine klasse Demo in der man die unterschiedlichen Möglichkeiten direkt testen kann.

Schlechter Kundenservice bei Kabel BW bei Aktionsgutschriften

November 27th, 2009

kabelBW_logoWir haben in unserem neuen Büro eine Kabel BW Leitung mit Clever Kabel 25 liegen. Spitzen Sache, leider mit nur 1 MBit Upload und dafür für ständige parallele RDP over VPN-Verbindungen etwas zu langsam.

Also dachte ich mir – nimmst du die Kabel BW – Speed-Option. 32MBit Downstream und 2.5 Up sollten dann hoffentlich den erwünschten Geschwindigkeitsschub liefern.

Also einfach angerufen, den Automaten mit einer 4 abgewürgt und dann mit einer Call-Center-Agentin alles besprochen. Kein Problem, sagt sie, in 3-4h ist das aktiviert.

5 Minuten später. Rückruf von der Call-Center-Agentin. Sie wollte mir nur sicherheitshalber mitteilen, dass unsere Gutschrift (120 EUR bei Abschluss des Vertrages) mit Zubuchung der Speed-Option verfällt!

Hä????

Selbst mit gutem Zureden konnte der Frau keine sinnvolle kundenfreundliche Lösung entlockt werden. Schade, dass das Restguthaben, welches verfallen würde, nur so gering ist, sonst hätte ich doch tatsächlich ein bisschen mehr Aufwand in die Sache gesteckt, denn Kabel BW kann ja wohl nicht einfach eine Gutschrift annulieren weil man eine zusätzliche Option dazu bucht!

Lieber Kabel-BWler, der du diesen Blogbeitrag liest: Bitte mal mit der Rechtsabteilung sprechen. Ich glaube nicht, dass es legal ist eine bei Vertragsschluss zugesicherte Gutschrift nachträglich zu widerrufen. Abgesehen von der bodenlosen Frechheit einen Kunden absichtlich zu vergraulen, der eine Erhöhung des Vertrages wünscht!

WordPress Memory Usage gesunken mit PHP 5.2.11

November 20th, 2009

Blog Memory UsageSeit ein paar Stunden sitzt mein Blog auf einem neuen Server. Nach einem Blick in das Admin-Interface, habe ich mich erstmal tierisch gefreut. Vorher hatte ich eine Speicher-Auslastung von ca. 30MB, jetzt sind es im Schnitt nur noch 22MB.

Der neue Server ist natürlich schneller, toller, besser, … aber vor allem nutzt er PHP 5.2.11 unter Debian 5 und nicht mehr 5.2.0 unter Debian 4. Da sonst die technische Basis gleich geblieben ist, gehe ich mal davon aus, dass WordPress unter PHP 5.2.11 weniger Speicher verbraucht als unter 5.2.0.

Hat noch irgendwer diese Erfahrung gemacht?

VMware Player Mouse Grab Input Focus Bug in Ubuntu Karmic Koala

November 6th, 2009

Kaum ist Ubuntu Karmic Koala installiert, schon gehen die Probleme los.

Der VMware-Player (und wohl auch die VMware Workstation) lösen den Input Fokus immer wenn die Maus auf die rechte Seite des virtuellen Bildschirms geht. Kein Klicken mehr möglich.

Wer auch mit dem Problem zu kämpfen hat, findet jetzt hier eine einfache Lösung:

In die Datei /usr/bin/vmplayer die Zeile

export VMWARE_USE_SHIPPED_GTK=yes

einfügen und schon klappt es wieder.

thx to Peter Velichkov’s Blog.

Webdesign Kunden Im Alltäglichen Leben (Video)

Oktober 28th, 2009

Achja, sehr schön das mal auf diese Weise aus der externen Perspektive zu sehen :-)

via Frontalaufprall

PHP-Quellcode-Analyse mit nWire for PHP

Oktober 14th, 2009

nWire LogoGestern habe ich über Twitter und die Zend Devzone zufällig von nWire erfahren – und bin begeistert. Was genau nWire ist und wofür man das unbedingt braucht will ich euch hier kurz erklären.

Ich habe häufig das Problem, vorhanden PHP-Quälcode anzupassen, zu optimieren und, ganz wichtig, zu entschlacken. Das ist ne echt mühsame Arbeit. Man geht die Bibliotheken durch und schaut nach ob bestimmte Klassen und Funktionen auch tatsächlich im Projekt verwendet werden, ob Deklarationen doppelt vorhanden sind, und so weiter. nWire nimmt mir dabei ab sofort wahrsinnig viel Arbeit ab, denn es Analysiert den Quellcode im Vorhinein und zeigt mir all die Infos die ich sonst immer zu Fuß erkundet habe direkt unter der bearbeiteten Datei im Eclipse an.

Codeanalyse mit nWire

Schaubild der Arbeitsweise von nWire

nWire hat mehrere Module, die perfekt Hand in Hand arbeiten. Im ersten Schritt untersucht der nWire Analyzer den kompletten Quellcode. Das ist ein Prozess der immer wieder im Hintergrund abläuft, auch bei größeren Projekten die Entwicklung also nicht stört. Diese dabei ermittelten Daten werden im nWire Repository gespeichert.

Jetzt gibt es zwei Komponenten mit denen man als Entwickler zu tun hat. Das wichtigste ist der nWire Navigator. Mit ihm kann man Dateien, Funktionen und Variablen untersuchen. Man findet heraus wo sie deklariert wurden, wo sie überall verwendet werden und welche Abhängigkeiten sie haben. Mit nWire Navigator Search kann man gezielt nach Elementen des Projektes suchen.

Mit dem nWire Visualizer sieht man in einem Netzdiagramm die vom Navigator dargestellten Abhängigkeiten und kann sich über das Netz das ganze Projekt anschauen. Hab ich jetzt noch nicht so benutzt und sehe auch nicht den größeren Sinn dahinter, aber der Navigator ist richtig super.

Ich werde nWire auf jeden Fall die 30 Tage, die man die Trialversion laufen lassen darf ausgiebig testen und dann eventuell ein paar Lizenzen für uns holen.

Marienkäfer Invasion bei uns im Büro

Oktober 7th, 2009

Bei uns im Büro herrscht momentan eine Marienkäfer-Plage…

Gif-Animationen unter Linux erstellen und optimieren

September 30th, 2009

gifsicle-Logo

Um unseren Demobereich-Banner für Google AdWords zu optimieren, musste ich die Größe unter 50kb bringen. Unser Designer hatte es schon auf 59kb geschafft, aber ein bisschen Arbeit musste ich mir noch machen.

Nach kurzer Suche fand ich dafür das optimale Tool für Linux: Gifsicle.

Mit diesem Kommandozeilentool kann man zum einen verschiedene Bilder zu einem animierten GIF zusammensetzen und zum anderen auch bestehende Anigifs optimieren.

Die Installation läuft unter Ubuntu idealerweise über apt, aptitude oder synaptic. Es stehen aber auch fertige Pakete anderer Distributionen (sogar Windows-Binaries gibt es) und für die ganz harten Quellcodearchive zur Verfügung.

Auf der Man-Page von Gifsicle finden sich sehr gute Beispiele für alle Optionen. Ich habe mich zum einen mit der Standard-Optimierungsfunktion, als auch mit einer Farbreduzierung an die 50kb herangearbeitet. Bei der Optimierung werden alle Funktionen des GIF-Formates ausgenutzt. Beispielsweise wird automatisch ein Hintergrundbild angelegt und immer nur die Unterschiede zwischen den Frames gespeichert. Da die Ursprungsdateien in diesem Sinne schon sehr gut optimiert waren, brachte mich dies allein nicht ans Ziel.

Eine weitere Optimierungsmöglichkeit besteht in der Änderung der Farbpalette. Man kann entweder eine Standardpalette laden oder automatisch eine globale Farbpalette mit der gewünschten Anzahl Farben erstellen lassen. Damit es bei zu wenigen Farben noch ein bisschen nach was aussieht, kann man auch ein Differing machen lassen.

Ich habe die Anzahl Farben der Datei jetzt Schritt für Schritt von 128 aus nach unten hin angepasst und bin dann für meinen Banner bei 64 Farben und 49.6kb gelandet. Perfekt, fast eine Punktlandung.

Das Ergebnis sieht nun so aus:DeBe-teamwork1-336x280

Lücke in WordPress ermöglicht Aussperren des Admins

August 11th, 2009

Gerade eben gelesen (thx to Spreeblick): Lücke in WordPress ermöglicht Aussperren des Admins.

Also nichts wie los liebe WordPress-Admins, schnell die wp-login.php ändern.

Genaue Infos zum Bug gibt’s von Laurent Gaffié. Der Bug wird aber nicht als kritisch eingestuft, da es einem Angreifer keinen Vorteil verschafft, aber es führt zu ein bisschen Ärger beim Admin.

Der Bug ist übrigens ein sehr gutes Beispiel für unsaubere Programmierung. Ein Eingabeparameter wird lediglich mittels empty($key) überprüft. Sinnvoller als zu überprüfen wie ein Parameter nicht beschaffen sein soll, ist es immer zu überprüfen WIE genau der Inhalt der Variable aussehen muss.

Also zum Beispiel könnte man an dieser Stelle eine Stringconversion und nachträglich eine Überprüfung auf Mindestlänge und enthaltene Zeichen durchführen:

$key = (string) $key;
if (!preg_match("~[A-Za-z0-9]{20}~", $key) ) {
return new WP_Error('invalid_key', __('Invalid key'));
}

Das ganze jetzt so aus der Hand geschrieben, aber sollte so in etwa funktionieren. Unter der Bedingung, dass

$key

immer 20 Zeichen lang ist, was ich jetzt nicht weiß.

Eine Zeile weiter oben heißt es sogar schon:

$key = preg_replace('/[^a-z0-9]/i', '', $key);

Allerdings ohne vorher auf einen String oder die Länge zu überprüfen.

Achja, ist so ein ganz klarer “Mit Java wäre das nicht passiert”-Bug ;-)

Update:

Inzwischen ist das Problem gefixt. Und zwar so:

190 if ( empty( $key ) || !is_string( $key ) )
191 return new WP_Error(‘invalid_key’, __(‘Invalid key’));
192
193 if ( empty($login) || !is_string($login) )
194 return new WP_Error(‘invalid_key’, __(‘Invalid key’));
195
196 $user = $wpdb->get_row($wpdb->prepare(“SELECT * FROM $wpdb->users WHERE user_activation_key = %s AND user_login = %s”, $key, $login));
197 if ( empty( $user ) )
198 return new WP_Error(‘invalid_key’, __(‘Invalid key’));

Das ist auch ok. Überprüfung ob es ein String ist. Auf jeden Fall besser als zu überprüfen ob es kein Array ist.