Samstag, Februar 20, 2010

webkit2png installieren und benutzen

Diese Woche wollte ich mir von einem guten Dutzend Web-Sites Screenshots erstellen. Unter Mac OS X ist das dank dem nützlichen Tool Paparazzi! absolut kein Problem. Die Applikation greift auf WebKit, Apples quelloffene Rendering-Engine zurück, um die Web-Seiten zu laden und fertigt danach ein Bildschirmfoto an. Leider lässt sich diese Applikation aber nicht automatisieren — für ein Foto einer bestimmten Seite mag sie sich durchaus eignen, doch ein dutzend Fötelis verlangt tüchtig Handarbeit.

Deshalb gibt es das pythonbasierte Kommandozeilen-Tool webkit2png. Um es unter Mac OS X 10.4 zum Laufen zu bringen, sind aber noch einige Vorbereitungen nötig. Namentlich muss pyObjC heruntergeladen, kompiliert und installiert werden, um auf Cocoa zurückgreifen zu können (Vorausbedingung: svn ist auf dem System bereits installiert — die neueste Version von Python schadet garantiert auch nicht):

# cd /tmp
# svn co http://svn.red-bean.com/pyobjc/branches/pyobjc-1.4-branch/
# cd pyobjc-1.4-branch
# python setup.py bdist_mpkg --open

Nachdem der Installer kompiliert wurde, öffnet sich automatisch ein von Apple-Installern gewohntes Fenster im GUI, das durch die Installation führt.

Sobald die "Python-Objective C-Brücke" installiert wurde, kann man sich webkit2png herunterladen:

$ cd ~
$ wget "http://www.paulhammond.org/2009/03/webkit2png-0.5/webkit2png-0.5.txt"
$ mv webkit2png-0.5.txt webkit2png
$ chmod 755 webkit2png

Anschliessend fügt man die URLs der zu photographierenden Web-Sites zeilenweise in eine Textdatei ein und kickt die Foto-Session an:

$ cat urls.txt | xargs python ~/webkit2png -F

Nach wenigen Sekunden/Minuten ist das Verzeichnis mit Bildschirmfotos gefüllt.

Labels: , , , , , ,

0 Kommentare | neuen Kommentar verfassen

Samstag, Februar 20, 2010

Zugriff auf SVN-Verzeichnisse im Web-Root verhindern

Vor einigen Monaten standen auf unzähligen Web-Sites von professionellen Web-Entwicklern die Tore sperrangelweit offen: Auf Grund der Nachlässigkeit der Entwickler waren deren mit SVN versionierten Projekte statt mit svn export mit svn checkout auf das Produktivsystem ausgecheckt worden — und so gelangten automatisch die .svn-Verzeichnisse mit ins Web-Root.

Da Apache nachlässig konfiguriert war, hatte anschliessend jedermann mit einer klitzekleinen spielerischen Ader Zugriff auf die Struktur und den Source-Code einer jeden so Web-Site. Versuchen wir es gleich mal: Man hänge an die Domain versuchsweise ".svn" an, wie beispielsweise bei www.stromzukunft.ch/.svn. In diesem Fall ist ein .svn-Ordner vorhanden, weil nicht ein 404er, sondern ein 403er angezeigt wird. Der Server wurde aber glücklicherweise längst gegen solche "Schnupperattacken" gesichert ...

Auch ich gehöre zu jenen Entwicklern, die sich bis zu diesem Zeitpunkt kaum über die "Best Practices" der Entwicklergemeinde geschert hatten — tatsächlich bin ich auch heute immer noch so faul und verwende oftmals das verpönte svn checkout auf Produktivsystemen.

Um sich dennoch nicht gleich mit heruntergelassenen Hosen im Netz zu präsentieren, sollten solche unbelehrbaren Entwickler immerhin ihre /etc/apache2/apache2.conf anpassen und in dieser den Zugriff auf jedes .svn-Verzeichnis grundsätzlich verwehren:

...
<DirectoryMatch \.svn>
   Order allow,deny
   Deny from all
</DirectoryMatch>
...

Labels: , , , ,

2 Kommentare | neuen Kommentar verfassen

Mittwoch, Februar 03, 2010

Offline-Manuals für Web-Entwickler

Da ich morgen 10 Stunden in einer Boeing 767-300 eingepfercht sein werde, nehme ich mein MacBook (mit brandneuem Akku, da der alte die 300 Ladezyklen überschritten hat) mit an Bord und werde an Web-Projekten programmieren. Wie es aber so ist, hat man im Flugzeug immer noch keinen Internet-Zugang, weshalb es von sehr, sehr grossem Wert ist, wenn man sich die gängigsten Handbücher auf den lokalen Laptop lädt.

Nachfolgend die Links, die sich mit einem

wget -i <datei>

herunterladen kann:

# 2010-02-03
# by Mario Aeby

# Apache 2.2
http://mirror.switch.ch/mirror/apache/dist/httpd/docs/httpd-docs-2.2.14.en.zip
http://mirror.switch.ch/mirror/apache/dist/httpd/docs/httpd-docs-2.2.14.en.pdf

# MySQL 5.0
http://downloads.mysql.com/docs/refman-5.0-en.html-chapter.zip
http://downloads.mysql.com/docs/refman-5.0-en.a4.pdf

# PHP
http://ch.php.net/get/php_manual_en.tar.gz/from/this/mirror

# jQuery 1.4
http://download881.mediafire.com/gidquw4y1u1g/mgmrt0ehzyz/jquery-1.4.chm.7z

# SelfHTML 8.1.2
http://ftp.uni-ulm.de/mirrors/selfhtml/selfhtml812.zip

Labels: , ,

0 Kommentare | neuen Kommentar verfassen

Dienstag, Januar 26, 2010

Ein Feature in 30 Minuten oder 24 Stunden?

For every 1 day estimates of a task, there’s a simpler version of that you can do in 3 hours, and an even simpler still you can do in 30 minutes. Back yourself into a corner and these versions will vividly appear before your eye. You can always do less.

Quelle: You can always do less - (37signals)

Labels: ,

0 Kommentare | neuen Kommentar verfassen

Samstag, Dezember 19, 2009

Brauchen Softwareentwickler wirklich Höllenmaschinen?

I have endless battles with overzealous developers who swear up and down that they use their desktops like servers. Sure you do! And you're building the space shuttle with it, right? Of course you are. Yeah.

Quelle: Building a PC, Part VI: Rebuilding

Labels: , ,

0 Kommentare | neuen Kommentar verfassen

Mittwoch, November 18, 2009

ARP mit neuem Web-Shop

Es spricht zu Ihnen: Der Marketing-Depp mit BWL-Ausbildung, der mit mindestens vier marketingtechnisch wichtigen (und vor allem: englischen!) Begriffen pro Satz seinen Job rechtfertigen will:

Die Zeit ist reif für einen weiteren grossen Schritt. Ihre Anforderungen an Benutzerfreundlichkeit, Prozesseffizienz und Verwaltungsfunktionen stehen im Mittelpunkt des neuen Shops. Was sich bewährt hat, bleibt bestehen. Neue Technologien zur Optimierung von Handling und Navigation erhöhen die Benutzerfreundlichkeit.

Quelle: Mail von newsletter@arp.com vom 18.11.2009, 15:44 Uhr

Nur Schade, dass die sauteure SAP/J2EE-Plattform offensichtlich einfach nicht skaliert:


ARP Datacon: Proxy Error
Originally uploaded by emeidi

Labels: , , ,

0 Kommentare | neuen Kommentar verfassen

Montag, November 16, 2009

Du sollst HTML nicht mit Regex parsen!

or many novice programmers, there's something unusually seductive about parsing HTML the Cthulhu way instead of, y'know, using a library like a sane person. Which means this discussion gets reopened almost every single day on Stack Overflow. The above post from five years ago could be a discussion from yesterday.

Quelle: Coding Horror: Parsing Html The Cthulhu Way

Auch für mich waren Reguläre Ausdrücke während Jahren das Allheiltmittel, um Informationen im HTML-Format aus dem Web auf den lokalen Server zu ziehen und danach gewisse Informationsstücke daraus zu extrahieren.

Meine (mittlerweile verflossene) Anstellung bei Liip öffnete mir aber die Augen. Das erste Mal, als ich mit Marc Ammann, dem Entwickler von GottaGo, über die Abfrage von Fahrplänen über das Web-Interface der SBB fachsimpelte (die Informatikbeamten des Transportunternehmens stehen nicht so auf frei zugängliche APIs). Ich war völlig naiv der Auffassung, dass auch er den HTML-Output des SBB Online-Fahrplans mit Regex durchparsen würde. Stimmte aber nicht, für etwas gibt es ja DOM! Ich machte mir aber keine weiteren Gedanken dazu, weil ich mir nicht vorstellen konnte, dass es etwas besseres als Regex gäbe, um HTML zu zähmen (dabei arbeitete ich doch für eine XML-Bude).

Das zweite, nun definitiv den Ausschlag gebende Aha-Erlebnis ereignete sich im Frühjahr 2009: Bei den Arbeiten zu energiezukunft.ch setzten wir ein Glossary-Plugin für Wordpress ein. Als ich einen Blick auf den Sourcecode dieses Plugins warf, entdeckte ich es — die wohl aus PHP-Sicht heilsbringendste Zeile der letzten Monate:

DOMDocument::loadHTML();

Quelle: DOMDocument::loadHTML();

Weiter ausführen möche ich diesen Fingerzeig nicht weiter. Ich darf aber mit gutem Gewissen sagen, dass ich dank dieser Erleuchtung mittlerweile eine kleine, private Applikation in Version 2 realisiert habe. Während die erste Version munter Reguläre Ausdrücke einsetzt (und dabei immer wieder grandios scheitert), benutzt Version 2 ebendiese Klassen, um die Aufgabe mit schönem, einfachen und leicht wartbaren Code auszuführen. Und plötzlich gehört das Gefrickel der Vergangenheit an.

(Aber ja, HTML kann man weiterhin mit Regulären Ausdrücken parsen — und sollte es auch, wenn es nur darum geht, ein kleines Informationsstückchen aus HTML-Code zu extrahieren, ohne dass man gleich einen ganzen Tag daran rumprogrammieren möchte. Wie beispielsweise ubs.mad4you.homeip.net — wobei ich hier auch eher einen JSON-Parser als Reguläre Ausdrücke verwendet hätte. Was solls, der Kern des Scripts war dank Regulären Ausdrücken innert Minuten geschrieben.)

Labels: , , ,

0 Kommentare | neuen Kommentar verfassen

Sonntag, November 01, 2009

Drupal im Weissen Haus

O'Reilly lobt Drupals "riesige" Bibliothek an Modulen, mit denen whitehouse.gov zum Beispiel skalierbare Livechats anbieten und seine Inhalte in mehrere Sprachen übersetzen könne. Außerdem werde die Webseite durch Drupal sicherer.

Quelle: heise open - Open Source zieht ins Weiße Haus ein

Dass das Weisse Haus unter der Fuchtel von Obama langsam mit der Adaption von Opensource-Software beginnt, ist äusserst lobenswert. Ich frage mich aber, ob man diesen Einstellungswechsel ausgerechnet mit Drupal gehörig feiern sollte.

Meine Kritikpunkte:

  • "riesige" Bibliothek an Modulen Für Microsoft Windows gibt es auch zig-Millionen Applikationen. Dass Mac OS X heute unter Computerspezialisten klar das Betriebssystem der Wahl ist, zeigt, dass man wohl eher die Qualität statt die Quantität von Applikationen, Modulen oder Erweiterungen beurteilen sollte, die für ein Betriebssystem (oder CMS) existiert. Abgesehen davon muss man sich bewusst sein, dass viele dieser "riesigen Bibliothek" an Erweiterungen für Drupal durch deren raschen Versionssprünge gar nicht mit der aktuellen Version kompatibel sind.
  • Skalierbare Livechats Mal ehrlich ... das Weisse Haus stellt auf ein neues CMS um — und ausgerechnet Live-Chats müssen als das Killerfeature herhalten? Abgesehen davon, dass ich mich frage, wie viele Beamte eingestellt werden müssen, um chatwilligen Antwort zu geben, frage ich mich schon ein wenig, ob Livechats angesichts der Situation des Landes wirklich lebenswichtig sind.
  • Inhalte in mehrere Sprachen übersetzen Viel Spass — und mein Beileid an die Entwickler. Um Drupal wirklich bis in die letzte Ritze (bspw. Taxonomy) multilingual zu machen, wird es den einen oder anderen Death March geben.
  • werde die Webseite durch Drupal sicherer. Ja klar. So sicher wie Wordpress in den letzten Jahren? Viel Spass in der Drupal/Modul-Upgrade-Hölle.

Labels: , , , , , ,

2 Kommentare | neuen Kommentar verfassen

Mittwoch, September 30, 2009

Aus dem Entwicklerleben gegriffen

3. About a week of development time is lost whenever someone from marketing makes a fuss about adding "a trivial feature that'll only take 1 hour" so he can close a sale

4. Most clients will not provide the most important requirement until a project is two-thirds developed. They will not even realize it was a requirement until they begin to see proofs

Quelle: N Examples of Why Time Estimates are Always Wrong (Software Engineering Tips)

Labels: , ,

0 Kommentare | neuen Kommentar verfassen

Sonntag, August 23, 2009

XML sucks!

Then reality struck. The pipeline was slow: Oracle loaded XML at a crawl. And it was a memory hog, since XSLT required putting full document trees in RAM.

Quelle: How XML Threatens Big Data : Dataspora Blog

Selbstverständlich bin ich voreingenommen und lese vorzugsweise Artikel, die Kritik an XML (und XSLT) üben. Aber ein Körnchen Wahrheit wird sicherlich darin sein ...

Aus diesem Grund lasse ich auch heute (2009) noch die Finger von dieser Technologie.

Labels: , , , ,

0 Kommentare | neuen Kommentar verfassen

Freitag, Juli 10, 2009

Firefox 3.5 sucks

Instead of using the randomization functionality of the underlying operating system (which has this feature build-in as every TCP stack for example needs it), they did what Mozilla in general always does: they re-invented the wheel.

To solve the problem of the randomization, the NSS team came up with something clever, something so great, that no-one else had ever thought of that before: they decided to read the files in all possible temp folders on disk with multiple threads so these files can be used as seeds for the randomization. Brilliant. Temp folders! Why hasn't anyone else thought of using a disk-based resource for random number generation! I mean, these folders change every couple of milliseconds, have immediate access, no latency to read their contents and are never filled to the brim with useless cruft!

Quelle: The Firefox 3.5 fiasco - Frans Bouma's blog

Wieder ein Grund mehr, weiterhin glücklich mit Safari um die Welt zu surfen ... Wer braucht schon Extensions?

Labels: , , , ,

0 Kommentare | neuen Kommentar verfassen

Samstag, Juni 06, 2009

Dateien von der Versionierung durch SVN ausschliessen

Obwohl ich mich ja generell zu den Apple-Fanboys zähle, warte ich auf den Judgement Day für denjenigen Idioten, der a) anno dazumal die Resource Forks erfunden und denjenigen (wahrscheinlich anderen) Idioten, der b) die Resource Forks auch nach Mac OS X portiert hat.

Dieser Entscheid hat leider schwerwiegende Auswirkungen bis heute, ins Jahre des Herrn 2009. Wenn ich nämlich Verzeichnisse mit SVN versioniere, kämpfe ich regelmässig mit versteckten Dateien, die entweder .DS_Store oder ._<dateiname-einer-im-selben-ordner-liegenden-datei> zu kämpfen habe. Vor allem dann, wenn ich auf Samba-Shares arbeite.

Glücklicherweise hat SVN einen Mechanismus eingebaut, mit welchem solche Fragmente von der Versionierung ausgeschlossen werden können:

$ cd dir/
$ svn propset svn:ignore ".DS_Store" .

Quelle: Preparing a Rails Application for SVN

Verzeichnisse

Selbstverständlich funktioniert die Chose auch mit ganzen Ordnern. Wenn ich in einem unter Versionskontrolle stehenden Projekt ein Verzeichnis habe, dessen Inhalt nicht versioniert werden soll, hilft folgender, ähnlicher Befehl:

$ cd dir/
$ svn propset svn:ignore '*' nicht-zu-versionierendes-verzeichnis/

Quelle: How to … Make Subversion ignore files and folders

Labels: , ,

0 Kommentare | neuen Kommentar verfassen

Samstag, Juni 06, 2009

Vergesst 20-seitige Offerten

I remember the tail end of our time as a web design company. When we started we did 20 page proposals. I remember pulling all nighters getting a proposal ready. Pages and pages of stuff. What a waste of time.

Towards the end we were doing one page proposals. It didn’t seem to matter. We were going to get the job or we weren’t. Over six years I never saw a connection between length and detail of proposal and winning a job.

Quelle: A reminder of how simple business can be when you don't make it complicated - (37signals)

Labels:

0 Kommentare | neuen Kommentar verfassen

Dienstag, Juni 02, 2009

Wie man als Programmierer seinen Arbeitsplatz auf Lebzeiten sichert

Köstlich - der ganze Artikel muss gelesen werden!

If you call your variables a, b, c, then it will be impossible to search for instances of them using a simple text editor. Further, nobody will be able to guess what they are for.

Quelle: How To Write Unmaintainable Code

Labels: , , , , ,

0 Kommentare | neuen Kommentar verfassen

Dienstag, Juni 02, 2009

Wie man sich bei Web-Buden anständig bewirbt

Was ich in einem früheren Artikel bereits auf meine Art ausgedrückt habe, schildert David von 37Signals auf Englisch und aus aktuellem Anlass (Suche nach einem "Junior Support Programmer"):

This advice is probably exactly the opposite of what you’ll if you’re aiming to get into a big shop with a formal HR department. In that scenario, it’s often last man standing in the numbers game and checklist requirements. Personality doesn’t matter to make it through the first cut.

But when you’re looking to get hired by managers who actually have to work with you, personality is almost all that matters to get to the interview. So beef up your cover letter and let your personality shine [...]

Quelle: Forget the resume, kill on the cover letter - (37signals)

Mit ein Grund, wieso ich die ersehnte Anstellung bei Liip gekriegt habe, war genau ein solcher nicht standardkonformer Begleitbrief zum Bewerbungsschreiben - das wurde mir von einem der neuen Chefs nach einige Arbeitswochen explizit so mit auf den Weg gegeben. Inwiefern darin meine tatsächliche "Personality" durchschien, könnte das Liip-Management mittlerweile sicherlich sehr gut beurteilen ... Auf jeden Fall hatte der Brief die Aufmerksamkeit der Rekrutierenden geweckt.

Labels: , , , , , ,

1 Kommentare | neuen Kommentar verfassen

Samstag, Mai 02, 2009

Marketing wie Fahnen im Wind

Not too long ago, SEO and usability experts were on the same side and recommended readable URLs. Now that Twitter is the new internet marketing (I think they call it social media now) battlefield, the rules changed.

Quelle: Short URLs, WebKit’s CSS animations & scrollbars, DiggBars: everything old is new (and hip?) again | Wisdump

Labels: ,

0 Kommentare | neuen Kommentar verfassen

Montag, April 27, 2009

Welche Drupal-Version läuft auf meinem Server?

If CHANGELOG.txt is missing, you can also check in system.module for a line at the top like:

define('VERSION', '5.5');

If this is present, it will tell you which version you are running. If not, you have a version earlier than 4.7.2.

Quelle: Drupal version numbering | drupal.org

Labels: , , ,

0 Kommentare | neuen Kommentar verfassen

Samstag, April 11, 2009

Definiere Ramen profitable

The term ramen profitable was coined by Paul Graham, a Silicon Valley start-up investor, essayist and muse to LILO entrepreneurs. It means that your start-up is self-sustaining and can eke out enough profit to keep you alive on instant noodles while your business gains traction.

Quelle: Get Rich Slow

Labels: , , , , ,

0 Kommentare | neuen Kommentar verfassen

Donnerstag, April 02, 2009

Übt sich Hajo Bakker als Script-Kiddie?

In meinen Server-Logs fand ich heute folgendes:

[01-Apr-2009 22:25:02] Unexpected array Array
(
    [DOCUMENT_ROOT] => http://www.hajobakker.com/portfolio/id1v4.txt??
)
 given in function page__get_query_string

Die Text-Datei auf seinem Server beinhaltete folgende PHP-Anweisungen:

<?php /* Fx29ID */ echo("FeeL"."CoMz"); die("FeeL"."CoMz"); /* Fx29ID */ ?>

Wieso macht man sowas von seinem eigenen Server aus (notabene mit einem Domainnamen, der den Vor- und Nachnamen des "Hackers" enthält), wenn man angeblich seit 1991 in der IT arbeitet?!

Since 1991 I've held a variety of ICT related positions

Quelle: HajoBakker.com small-boat photography, motorcycle technique and more.

Labels: , , , ,

1 Kommentare | neuen Kommentar verfassen

Mittwoch, April 01, 2009

parlament.ch läuft mit Microsoft-Müll

die flex-applikation mit diversen flash-basierten komponenten liess sich problemlos in die site parlament.ch integrieren. in diesem fall handelte es sich um eine sharepoint-basierte website,

Quelle: nothing blog from outer space : Neue Sitzordnung im National- und Ständerat

Es wurde ja bereits seit längerem von den Dächern gezwitschert, dass dieser Server unter handgefrickelter, äusserst performanter Software aus Redmond lief. Eh ja, logisch! Schliesslich mussten dutzende zwischengeschaltete Consultants ihre 200 Franken pro Stunde absahnen ...

Ansonsten fände ich den "Pultlinachbar"-Browser von nothing durchaus angebracht - leider wird aber sowohl unter Nationalrat wie auch unter Ständerat nur das Get Flash-Icon angezeigt.

Mega-Fail! (Mac OS X 10.4.11, Safari 3.2, Shockwave Flash 9.0 r124)

Nachtrag: Mich stört übrigens das auf den Screenshots ersichtliche Checkbox-Label "Alle/Keine Fraktion/en". Aus Usability-Sicht sollte hätte dieser Knopf (meiner Meinung nach) auf zwei Radio-Buttons aufgeteilt werden müssen: "Alle Fraktionen" und "Keine Fraktionen" ...

Labels: , , , ,

1 Kommentare | neuen Kommentar verfassen

Montag, März 30, 2009

Kostenloses WeatherCal (Wetterprognosen für den Kalender) für die Schweiz

"Was BareBonesSoftware kann, kann ich schon lange!" Gesagt, getan. Der Sinn und Unsinn von Wetterprognosen in der Kalendersoftware auf dem Computer und dem Smartphone sei dahingestellt.

Wer es mit Apples iCal, Microsofts Outlook oder Google Calendar ausprobieren möchte, abonniert einen oder mehrere der folgenden Links, die (hoffentlich) standardkonforme .ics-Daten liefern:

Einige weitere Städte sind auch verfügbar. Man abonniere diese à la http://weather2ics.mad4you.homeip.net/stadt/. Es sind keine Sonderzeichen erlaubt.

Wie immer gilt: BETA! Kein Gewähr auf ordnungsgemässes funktionieren und 100-prozentige Verfügbarkeit des Servers.

Labels: ,

1 Kommentare | neuen Kommentar verfassen

Samstag, März 14, 2009

Microsoft im Browser-Krieg am Scheideweg?

Some are still claiming that Microsoft will go with WebKit, which, thanks to the popularity of Apple's Safari browser and also Google's Chrome, is rapidly becoming a de facto standard for all non-IE and non-Firefox implementations.

Quelle: Is IE8 the end of the line for Internet Explorer? | InfoWorld | Weblog | March 10, 2009 | By Randall C. Kennedy

Das wäre die eine Möglichkeit, den verschissenen Microsoft Internet Explorer in die Wüste zu schicken (wobei es immer noch einige Leute da draussen gibt, die voll und ganz auf das Geschwür setzen - Torquie?). Die andere Option wäre, die Rendering-Engine durch den Prototypen Gazelle zu ersetzen, der derzeit in Microsoftschen Laboratorien entwickelt wird (siehe Artikel).

So oder so - die Kompatibilität wird kaputt gehen. Schlägt man sich auf Seiten WebKits, verwendet man a) eine quelloffene Engine (bis Microsoft in berühmter Manier rumzufrickeln beginnt, fremde Körperteile anbaut und so die Standardkonformität in die Wüste schickt), deren Entwicklung b) zu alledem noch massgeblich von Apple beeinflusst wurde. Ist Microsoft wirklich bereit zu diesem Schritt, der Web-Entwickler aus der ganzen Welt in Freudestränen ausbrechen lassen würde?

Mit Gazelle wiederum geht ebenso die Kompatibilität verloren, ohne Gewähr, dass Web-Entwickler jemals die zweite Rendering-Engine aus dem Hause Microsoft unterstützen werden: Man stelle sich vor, standardkonforme Web-Sites, die unter Safari, Firefox und Opera bereits sauber funktionieren, sowohl unter MSIE als neu auch noch unter Gazelle, sozusagen dem zweiten Browser-Versuch aus der Frickelbude, zum Laufen zu bringen - der blanke Horror!

Labels: , , ,

0 Kommentare | neuen Kommentar verfassen

Mittwoch, März 04, 2009

Gegen Architecture Astronauts und für rasche Umsetzung

This is one reason why I'm so down on architecture astronauts. I find that the amount of discussion on a software feature is inversely proportional to its value. Sure, have some initial discussion to figure out your direction, but the sooner you can get away from airy abstractions, and down to the nuts and bolts of building the damn thing, the better off you -- and your project -- will be.

Quelle: Coding Horror: Procrastination and the Bikeshed Effect

Ich habe leider auch die Tendenz, mich mit abstrakten Fragen zu prokrastinieren. Gerade erst habe ich so wohl ein Software-Projekt unnötig verzögert ...

Labels: , ,

0 Kommentare | neuen Kommentar verfassen

Samstag, Januar 03, 2009

Chargeable Hours

Da sich in meinem Kollegenkreis zunehmend Leute beruflich zu den von mir so heiss geliebten Beratern weiterentwicklen, habe ich über Sylvester wieder ein neues Wort gehört: "chargeable hours" (Ernst & Young) - Kollege Zwei, der bei einer eher deutschstämmig orientierten Bude auf Consultant macht, nennt diese Eigenschaft von Arbeit "(weiter)verrechenbare Stunden".

Wenn man genau überlegt, gibt es diese Maxime eigentlich bei den meisten Dienstleistungs-Buden - und somit auch bei mindestens einer meiner Anstellungen.

Joel weist in seinem jüngsten Artikel auf ein verwandtes Problem hin:

for startups, everything about your resume has to scream getting your own hands dirty. Otherwise your resume makes you look like you’re looking for the kind of job where you can call meetings that take people away from coding all day long, which, to a startup, is about as useful as a one-legged man in a butt-kicking contest.

Quelle: Another resume tip - Joel on Software

Labels: , ,

0 Kommentare | neuen Kommentar verfassen

Freitag, Januar 02, 2009

Fremde SVN-Repositories in Projekt integrieren (svn:externals)

Heute war es das erste Mal soweit: svn externals musste her, um eine Web-Applikation aus mehreren eigenständigen Repositories zusammenzusetzen. Glücklicherweise ist das Prozedere nicht wirklich kompliziert.

Ziel ist es in diesem Beispiel unter <svn-root>/inc/classes/ Klassendateien aus einem fremden Repository einzufügen (Das Verzeichnis classes muss dabei nicht bestehen):

  1. $ cd <svn-root>
  2. $ svn propedit svn:externals inc
  3. Es öffnet sich der Editor der Wahl, in welchen man folgende Zeile eingibt:
    classes http://my.repository.com/classes
    Anschliessend speichert man die Änderungen (:w in vim, Ctrl+O in nano) und schliesst den Editor (:q in vim, Ctrl+X in nano)
  4. $ svn update
  5. $ svn ci -m "Added external repository"

Via: svn:externals

Labels: , ,

0 Kommentare | neuen Kommentar verfassen

Donnerstag, Januar 01, 2009

Wordpress 2.7 nach blanker Installation extrem langsam

Gerade habe ich auf einem Entwicklungsserver Wordpress 2.7 installiert. Die Installation verlief wie gewohnt in einigen wenigen Schritten - doch das böse Erwachen folgte kurz darauf: Obwohl die Installation noch über keinen einzigen Blog-Artikel verfügte, betrug die Ladezeit pro Seite 60 bis 90 Sekunden!

Dank Google stiess ich rasch auf einige Hinweise (von Endanwendern) und fand schlussendlich einen dazugehörigen Bug-Report mit Informationen, die im Gegensatz zum vorangehenden Link auch für Sysadmins und Entwickler nützlich waren.

Die Lösung des Problems lautete in meinem Fall:

# apt-get install php5-curl

Jetzt laden die Seiten (des Frontends!) nur noch mit etwa 5 Sekunden Verzögerung ...

Nachtrag: Administrationsoberfläche ("Dashboard")

Seit ich das LDAP-Plugin aktiviert habe, lädt die Web-Site wieder unterträglich langsam. Ein Grund könnte sein, dass der Testserver im Intranet steht und nur über einen Proxy-Server Kontakt ins Internet aufnehmen kann. Leider spinnt der Proxy-Server derzeit und kann auf keine URL verbinden ...

Nach dem ich http.php gemäss Anleitung gepatcht habe, sieht man die Wurzel allen Übels:

[Thu Jan 01 23:06:02 2009] [error] [client 0.0.0.0] Requesting http://api.wordpress.org/plugins/update-check/1.0/
[Thu Jan 01 23:07:03 2009] [error] [client 0.0.0.0] Requesting http://api.wordpress.org/plugins/update-check/1.0/, referer: http://www.ma.hist-web.unibe.ch/wp-admin/

Die 60 Sekunden Ladezeit deuten auf ein - man verzeihe es mir - bescheuert hohes Timeout für HTTP-Requests hin. Ich versuche deshalb nun, Disable WordPress Core Update sowie Disable WordPress Plugin Updates zu installieren, um HTTP-Anfragen an jedwelche Server zu verhindern.

Weitere Informationen bietet beispielsweise WordPress 2.7 Core Update.

Labels: , , ,

1 Kommentare | neuen Kommentar verfassen

Dienstag, Dezember 30, 2008

Programmierer und die Firmenpolitik

Joels Archiv ist eine wahre Fundgrube:

When a programmer complains about “politics,” they mean—very precisely—any situation in which personal considerations outweigh technical considerations. Nothing is more infuriating than when a developer is told to use a certain programming language, not the best one for the task at hand, because the boss likes it. [...] Nothing is more aggravating to a developer than being forced to do something that is technically inferior because someone higher than them in the organization, or someone better-connected, insists on it.

Quelle: A Field Guide to Developers - Joel on Software

Labels: ,

1 Kommentare | neuen Kommentar verfassen

Dienstag, Dezember 30, 2008

Der perfekte Büro-Arbeitsplatz für Programmierer

One of the most important, and most controversial, topics in that book is that you have to give programmers lots of quiet space, probably private offices, if you want them to be productive.

[...] There’s a strong culture in Silicon Valley that requires you to jam a lot of programmers into a big open space, [...]

Quelle: A Field Guide to Developers - Joel on Software

Wenn ich eines hasse, dann sind es Telefone, die im Grossraumbüro alle fünf Minuten mit einem fürchterlichen Geklimpere schellen. Klar kann man sich Kopfhörer auf den Kopf pappen - doch leider schirmt einem die Musik mehr schlecht als recht vom Lärm ab.

Wenn ich so überlege: Im Grunde höre ich auf der Arbeit nur Musik, um den anderen Lärm zu übertönen. Zu Hause programmiere ich am liebsten bei Totenstille, wenn höchstens das Surren der Lüfter meines PowerMacs G5 zu hören ist.

Mein Wunsch fürs neue Jahr lautet deshalb von JoS Artikel "The new Fog Creek office" (Neid: 30-Zoll-Schirme und qualitativ hochstehende Bürostühle) inspiriert: Die Anstellung einer Telefonistin, die den ganzen Tag nichts anderers macht, als Anrufe entgegenzunehmen und an die entsprechende Person weiterzuleiten. Und zwar so, dass das Telefon der Zielperson keinen Krach macht. Im Grunde müsste man die Anrufe gar nicht direkt weiterleiten. Der Programmierer sollte eine Liste sehen und darauf basierend selber entscheiden, wann (am selben Arbeitstag) er den Anrufenden zurückruft ...

Labels: , ,

0 Kommentare | neuen Kommentar verfassen

Freitag, Dezember 19, 2008

Medialer Abgesang auf Tilllate & Co.

Anfangs Oktober 2008 versuchte ich eine mögliche Zukunft (oder Nicht-Zukunft, je nach Betrachtungsweise) für die schweizerischen Party-Communities aufzuzeigen:

Dennoch bin ich gespannt, ob Party-Communities auch die nächsten Jahre ihre Daseinsberechtigung beibehalten können. Schlussendlich wären Party-Föttelis nur ein Facebook-Feature unter vielen.

So komisch es vor einigen Jahren klang: Doch heute scheint sich der Web-Benutzer daran gewöhnt zu haben, mit dem realen Namen im Web aufzutreten. Aus dieser Warte erscheint die Identifikation der Benutzer mit Nicknames und die Unmöglichkeit, Personen mit ihrem richtigen Namen zu suchen, als zunehmend grosses Manko von Tilllate & Co.

Quelle: think eMeidi: Tilllate enttäuscht mit Redesign

Heute nun schlägt der Tagi (deren Mutterhaus, die Tamedia, besitzt pikanterweise einen bedeutenden Anteil an Tilllate) in dieselbe Kerbe:

Laut Urs Gasser, Professor der Universität St.Gallen und Verfasser des Buches «Generation Internet», kommt der Einstieg der Verlage zur Unzeit: «Ich wage zu behaupten, dass die Medienhäuser aufs falsche Pferd gesetzt haben.» Gasser ist skeptisch, dass die Fotoplattformen in der heutigen Form überhaupt überleben werden: «Die Partyportale sind stark kommerzialisiert und werden kaum mehr von der Community betrieben. Das macht sie für die jungen Nutzer uninteressant.» Letztlich sei es interessanter auf Facebook oder StudiVZ Bilder auszutauschen, da dort mehr Interaktion in einem festen Beziehungsrahmen stattfinde.

Quelle: Tilllate & Co: Nach der Party folgt der Kater

Facebook hat erkannt, dass die Mehrheit der Benutzer primär den bestehenden Kollegenkreis im Netz abbilden möchte - und seine Plattform konsequent auf dieses Bedürfnis ausgerichtet. Kein Wunder, treibe ich mich in der Woche mehrmals auf Facebook rum, während meine Accounts auf Xing, Usgang.ch oder Tilllate vor sich hin vegetieren (über Tilllate erreichen mich höchstens noch "Hey, was machsch am Friti?"-Einladungen für Guestlists in unbekannten Clubs).

Ob die schier unüberblickbare Fotoflut pro Anlass (am Sonntag-Nachmittag 500 Fotos durchklicken?) den meisten unregelmässigen Nutzern den Rest gegeben hat?

Labels: , , , ,

0 Kommentare | neuen Kommentar verfassen

Donnerstag, Dezember 18, 2008

Pleite-Geeks in den USA

I could either sign on as a Microsoft employee or quit and go GitHub full time. At 29 years old, I was the oldest of the three GitHubbers, and had accumulated a proportionally larger amount of debt and monthly expenditure.

Quelle: How I Turned Down $300,000 from Microsoft to go Full-Time on GitHub

29-jährig und verschuldet- trotz 100%-Job in der IT-Branche? Das schafft man nur in Amerika ...

Labels: , , , , ,

1 Kommentare | neuen Kommentar verfassen

Dienstag, Dezember 16, 2008

Maxomedia frickelt


Maxomedia Speedfingerzzz:
Netzwerkverbindung unterbrochen

Originally uploaded by emeidi

Im Grunde handelt es sich beim Rabatt-Spiel des PostShops (aka "Speedfingerzzz" - der Name könnte von Mäschu erfunden worden sein) um eine der besten Spielideen der letzten Monate - wenn die Leute das Spiel denn auch spielen könnten. Seit gestern Abend erhalte ich im Flash-Game die Fehlermeldung "Fehler: Netzwerkverbindung unterbrochen" zu Gesicht und kann mich nicht einmal im ersten Level mit den anderen Spielern messen.

Dank der Aktivitäts-Anzeige von Safari wird schnell klar, wo es harzt: Gewisse URLs werden von Safari mit einer roten Fehlermeldung internal server error gekennzeichnet. Öffnet man die URL mit Doppelklick, kommt es noch besser: Microsoft wirft einem einen XML-Fehler an den Kopf:

error on line 2 at column 60: Space required after the Public Identifier

Schaut man sich den Quelltext des ausgelieferten Dokuments an, wird plötzlich alles klar: Microsoft am Werk!

ASP 500-100 Fehlermeldung auf post-speedfinger.mxm.ch

Fehlertyp:
Microsoft OLE DB Provider for SQL Server (0x80040E14)
The transaction log for database 'spi_wordmaster' is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases

/_core/functions/game.asp, line 99

Querystring:
random=1229460234988&op=start

Browsertyp:
Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; en) AppleWebKit/525.26.2 (KHTML, like Gecko) Version/3.2 Safari/525.26.12

Seite:
GET /_service/level.asp

Zeit:
Dienstag, 16. Dezember 2008, 21:49:59

SessionID:
1002476129

Referer:

Quelle: post-speedfinger.mxm.ch/_service/level.asp

Haaaaaalloooooo, ist bei Maxomedia jemand zu Hause? Was lernen wir daraus: Auch Klickibunti RDBMS aus Redmond sollten mit der gehörigen Sorgfalt unterhalten werden ...

Labels: , , , ,

0 Kommentare | neuen Kommentar verfassen

Samstag, Dezember 13, 2008

State of the PHP CMS

Gestern Freitag führte ich auf der Zugfahrt von Bern nach Zürich ein Gespräch mit einem Bekannten. Unser Thema: Content Management Systeme. Genauer: CMS, die mit PHP programmiert werden. Dabei stellte er folgende These in den Raum:

Es gibt heute keine brauchbaren CMS auf Basis von PHP/MySQL

Nach einigen Schrecksekunden löste ich meine Totenstarre - und musste ihm beipflichten. Auf Anhieb kamen mir drei auf PHP basierende CMS in den Sinn - und alle fand ich Müll:

  • Typo3. Überladen, unbrauchbare Oberfläche (Stand: ca. 2005). Und dann auch noch dieses unselige TypoScript!
  • Joomla! Besser als Typo3, aber trotzdem nicht über alle Zweifel erhaben.
  • Drupal. Bezüglich dem Gedanken dahinter ("alles ist ein Node") und den Features kein per se schlechtes Produkt. Professionelle PHP-Entwickler werden das Produkt aber aus zwei Gründen meiden: a) Konfiguration und Daten werden in der Datenbank heillos vermischt - es ist so kein sauberes Staging möglich (Konfiguration gehört gemäss dem Unix-Grundsatz "everything is a file" in das Filesystem, damit man es sauber versionieren kann). b) Die Dokumentation weisst erhebliche Mängel und Lücken auf.

Ein vielversprechendes, noch zu evaluierendes PHP-CMS ist mir vor einiger Zeit über den Weg gelaufen:

MODx - CMS and PHP Application Framework

Hoffen wir, dass deren Entwickler aus den gröbsten Fehlern gelernt haben.

Labels: , ,

4 Kommentare | neuen Kommentar verfassen

Samstag, November 22, 2008

SVN und transparente Proxies

Dank Beanstalk mache ich zur Zeit auch privat die ersten Schritte mit Versionierung von PHP. Falls ich dereinst mal mehr Zeit haben sollte, werde ich auf dem lokalen Server hier einen SVN-Server einrichten - bis dahin verwende ich Beanstalk, wenn auch in der kostenlosen Version nur ein Projekt versioniert werden kann.

Als ich das letzte Mal im Zug von Bern nach Zürich fuhr und den soeben programmierten Code über Sunrise Take Away committen wollte, erhielt ich immer wieder folgende Fehlermeldung zu Gesicht:

svn: PROPFIND request failed on /project
svn: PROPFIND of '/project': Could not read status line: Connection reset by peer (http://subdomain.svn.beanstalkapp.com)

Nach viel Googeln und unzähligen ausgerauften Haaren schwante mir plötzlich etwas böses: Sunrise wickelt seinen UMTS/EDGE/GPRS-Traffic doch nicht etwa über transparente Proxies ab, die Probleme mit dem erweiterten HTTP-Befehlssatz von SVN haben? Jedenfalls gibt es im Netz einige Seiten, die sich dem Thema SVN und Squid annehmen.

Kurzerhand wechselte ich also den SVN-Zugang von HTTP zu HTTPS - und schwupps, schon lag eine neue Revision im Repository.

Labels: , , , ,

0 Kommentare | neuen Kommentar verfassen

Dienstag, November 18, 2008

Wie man Safaris Web Inspector korrekt benutzt

Note: The error console must be open when website is loaded in order to display errors. If you open the error console after a page has loaded, the display is blank; reload the page to see any errors.

Quelle: Safari User Guide for Web Developers: The Develop Menu

Weitere Vorkehrungen: Die Console darf nicht aktiviert sein (am Besten auf Documents wechseln).

Labels: , , , ,

0 Kommentare | neuen Kommentar verfassen

Donnerstag, Oktober 30, 2008

Jungs, TWiki ist es nicht wert ...

From that minute on, all long-time contributors have lost access to their code. Counter-reaction: the community has left the building, leaving TWIKI.NET without a contributing community.

Quelle: Hostile takeover of Open Source Project TWiki - WikiRing Blog

Wer einmal versucht hat, ein eigenes TWiki-Theme zu erstellen, ist froh, wenn das Projekt so rasch als möglich stirbt ... Ich habe noch nie derart verschachtelten Perl-Code mit Dutzenden von Includes gesehen.

Labels: , ,

0 Kommentare | neuen Kommentar verfassen

Dienstag, Oktober 21, 2008

TypoScript, DTML und XSLT suck!

As a developer when you push a product out the door, you want to be fast at this.  Developers don’t want to learn two languages in order for their product to be pushed out the door and then go back to the database every time code needs to be changed.

Quelle: Whats up with Stored Procedures these days?

Aus diesem Grund bin ich überhaupt kein Freund von Content Management Systemen, die neben der eigentlichen Scripting-Sprache noch ein Pseudoformat benutzen wie TypoScript, DTML oder XML/XSLT ...

Labels:

0 Kommentare | neuen Kommentar verfassen

Montag, Oktober 20, 2008

Die katastrophale Newsnetz-Suche

Kleines Beispiel:

Ich finde es äusserst peinlich, wenn Google deutlich mehr Resultate findet als die CMS-interne Suchmaschine von Newsnetz - mit direktem Zugriff auf die Datenbank sollte es doch wirklich nicht derart schwierig sein, eine anständige Suchfunktion zu programmieren?

Labels: , , , ,

0 Kommentare | neuen Kommentar verfassen

Sonntag, Oktober 05, 2008

Tilllate enttäuscht mit Redesign

Nach Jahren im Uralt-Kleid aus der Zeit der Dotcom-Blase ging Tilllate.com am 1. Oktober 2008 mit einem kompletten Redesign online (Dank: Daniel).

Nachdem die meines Erachtens am professionellsten betriebene schweizerische Party-Community im Mai 2008 den Wechsel auf Zend Framework bekannt gab, wollte und musste man wohl die mit MVC neu hinzugewonnene Flexibilität zur Schau zeigen. Wohl kaum zufällig wurde nur wenige Monate nach dem erfolgreichen Relaunch der Codebasis ein Redesign präsentiert. Der umgekehrte Weg wäre aus Sicht eines Entwicklers unlogisch gewesen, jedenfalls dann, wenn man es mit Uralt-Code zu tun hat.

Mit Tech-Blog mit Entwickler-Community in Kontakt

Dank der vorbildlichen Öffentlichkeitsarbeit durch das Tilllate Techblog (auf Twitter halten sich die Entwickler um Silvan Mühlemann leider allzustark zurück) wissen Beobachter, welche und wie viele (mit Betonung auf viele) Personen für die Technik hinter der Web-Site verantwortlich sind, auf welche Probleme sie treffen und welche Tools diese einsetzen.

Der Wechsel von selbstprogrammierten Spaghetti-Code auf das PHP-Framework vom PHP-Entwickler Zend höchstpersönlich zeigt das Bestreben der Entwickler, dort auf Open-Source-Software zu setzen, wo dies angebracht ist und Ressourcen schont. Wieso das Rad hunderte Male neu erfinden oder wieso die Gefahr eingehen, mit selber geschriebenem und schlecht getestetem Code unnötige Sicherheitslücken in die Web-Applikation reinzuschmuggeln? Zend Framework bildet eine - zugegebenermassen voluminöse und teilweise einarbeitungsintensive - Basis, auf der man erfolgreich objektorientierte Web-Applikationen mit dem MVC-Konzept realisieren kann.

Andere Artikel auf dem Blog geben zudem Hinweise auf die Verwendung von SVN zur Versionierung von Applikations-Code sowie auf intensive automatisierte Tests. Tilllate kann selbstbewusst vorgeben, welche Mittel Mitbewerber zum Unterhalt der technischen Infrastruktur bereitstellen müssen, um konkurrenzfähig zu bleiben.

Löbliches ...

Eines muss man Tilllate lassen: Die Site bricht vollständig mit dem alten Design - angesichts deren Alters ein löbliche Entscheidung. Auch zeigt ein Blick auf den Quelltext der Homepage, dass kein einziger Tabellen-Tag gefunden wird. Ein Hinweis darauf, dass man mit den längst verpönten tabellenbasierten Layouts aus der Zeit der Jahrhundertwende in den wohlverdienten Ruhestand geschickt hat. Stattdessen setzt man intensiv auf CSS, was unter anderem auch die vielen Listen zeigen, die sich im Quellcode finden. Aus meiner Sicht die semantisch korrekte Anwendung von HTML-Elementen.

Endlich wurde auch einer meiner innigsten Wünsche erhört: Die Dimensionen der Bilder wurde gegen oben angepasst. Heute surft niemand mehr mit einer Auflösung von 800x600 Pixeln, die Internetleitungen sind äusserst schnell und Datenspeicher wie auch Traffic sollte auch für Tilllate nicht mehr aller Welt kosten, um Bilder mit brauchbaren Dimensionen und ansprechender Bildqualität abzulegen. Leider scheint es bei der Qualität immer noch Abstriche zu geben. Favorit ist und bleibt in dieser Hinsicht Usgang.ch.

Die Bedienung über die Tastatur war längst überfällig und ist tadellos gelöst. So macht das durchstöbern von Event-Gallerien Spass! (Falls es denn zuverlässig klappen würde - mit dem Blocken der Ad-Server wird anscheinend oftmals kein Foto angezeigt, sondern nur ein schwarzes Loch)

... negatives

Dennoch bin ich bezüglich des Gesamteindruckes enttäuscht: Vor drei, vier Jahren hätte ein solches Redesign die Benutzer vielleicht noch entzückt. Doch leider ist mittlerweile 2008 und es gibt längst einen grossen Platzhirsch, um den man auch hier in der Schweiz nicht mehr herumkommt: Facebook.

Diese Bude zeigt mit ihrem Produkt, wie Social Apps fürs Web 2.0 (Buzzword-Alarm!) heutzutage daherkommen müssen, damit diese eine breite Masse ansprechen und sogar von Mammi und Pappi benutzt werden können.

Vergleicht man das "neue" Facebook (auch kürzlich online gegangen) mit dem Vorschlag von Tilllate, gewinnt Facebook klar nach Punkten. Selbstverständlich muss man beifügen, dass Facebook über ein vielfach grösseres Budget verfügen konnte als Tilllate und deshalb dementsprechend eine Heerschar an Entwicklern anheuern konnte.

Man darf aber nicht vergessen, dass gerade das Frontend ebenfalls von (genügend) Profis (Usability-Gurus, Interaktions-Spezialisten, Psychologen und was es fürs GUI-Design alles für Experten gibt) bewirtschaftet werden sollte. Falls Tilllate hier wirklich prominente Unterstützung hatte (wer? wie viele?), müsste ich den UI-Designern bei Tilllate ein äusserst schlechtes Zeugnis ausstellen.

Spezifische Kritikpunkte

Was genau stört mich am Redesign?

  • Schwarzer Hintergrund. Ich kenne keine besucherstarke Web-Site, die über einen schwarzen Hintergrund verfügt (spontan: eBay, Amazon, aber auch das ebenfalls kürzlich redesignte Newsnetz mit BernerZeitung und Tagi). Die altbekannte Leier vom Kontrast - ich möchte keine fünf Minuten lang auf eine Web-Site mit solchen Farben schauen.
  • Serifen-Schrift Was bei Newsnetz durchaus Sinn macht - man liest dort im Normalfall Medienartikel - ist für eine Party-Community irrelevant. Hier zählt die einfache Bedienung - für Buttons und andere Bedienelemente ist Sans Serif - allen voran die für die Bildschirmanzeige optimierten Microsoft-Fonts - die bessere Wahl. Ganz hässlich: Tilllate mixt Serif- und Serifenlose Schriften ohne ein für mich klar erkennbares Konzept. Wenn wir gerade beim Schriften-Bashing sind: Wieso findet sich die in der Print-Werbung verwendete Schrift nirgends auf der Web-Site wieder? Und wieso nur ist das Logo weiterhin mit der Impact gesetzt?
  • Schrift-Grösse Auch wenn Jugendliche in der Regel über gutes Augenlicht verfügen - die Standardschriftgrösse ist einfach viel, viel zu klein!
  • Whitespace Die ganze Site macht den Eindruck, als sei sie förmlich mit der Müllpresse komprimiert worden. Motto: Möglichst viel auf einen Screen - und zwar (auch) möglichst viel Werbung. Web-Design im 2008 muss aber atmen können, und Whitespace ist der Schlüssel dazu (Ich gebe mich als Fan von Oli und seinen Information Architects zu erkennen, die für tamedia Newsnetz gestaltet haben - übrigens per Zufall auch die Mutterbude von Tilllate)
  • Asset-itis Beim Betrachten einer Photo-Gallery werden um die zwanzig Javascript-Dateien nachgeladen. Muss das sein? Was für den Entwickler angenehm ist, um die einzelnen Libraries abzukapseln, ist für den Browser mühsam. Auch verstehe ich nicht, wieso die Javascript-Dateien alle mit einem GET-Parameter geladen werden? Somit können diese (meines Wissens) vom Browser nicht gecachet werden.

It's the business model, stupid!

Zugegeben - einen frappanten Unterschied gibt es zu Facebook: Tilllate verfügt über einen deutlich besseren Business-Plan, was die nachhaltige Profitabilität anbelangt. Die Überflutung der Titelseite mit Werbung (ich blocke zu Hause Ad-Server auf DNS-Ebene, weshalb die Titelseite recht ruhig erscheint) zeigt deutlich, wie Tilllate die Löhne seiner Mitarbeiter bezahlt.

Zukunftsaussichten

Dennoch bin ich gespannt, ob Party-Communities auch die nächsten Jahre ihre Daseinsberechtigung beibehalten können. Schlussendlich wären Party-Föttelis nur ein Facebook-Feature unter vielen.

So komisch es vor einigen Jahren klang: Doch heute scheint sich der Web-Benutzer daran gewöhnt zu haben, mit dem realen Namen im Web aufzutreten. Aus dieser Warte erscheint die Identifikation der Benutzer mit Nicknames und die Unmöglichkeit, Personen mit ihrem richtigen Namen zu suchen, als zunehmend grosses Manko von Tilllate & Co.

Labels: , , , ,

4 Kommentare | neuen Kommentar verfassen

Freitag, August 22, 2008

Wenn MySQL unter Mac OS X nicht automatisch startet

Ich habe seit längerem das offizielle MySQL 5.0.45 auf meinem MacBook (Intel mit Mac OS X 10.4.11) installiert. Alles wunderbar - doch bis zum heutigen Tage wurde MySQL bei einem (Re-)Boot nicht automatisch gestartet. Ich musste mich dann immer mühsam zum Preference Pane durchhangeln und dort auf "Start MySQL Server" klicken (für einmal per GUI, nicht per CLI).

Heute habe ich mir nun zur Aufgabe gesetzt, dieses Problem zu beheben und kann folgenden Lösungsweg aufzeichnen:

  1. Download der neuesten MySQL-Version bei SWITCH: mysql-5.0.67-osx10.4-i686.dmg
  2. Mounten des Disk Images
  3. Doppelklick auf MySQLStartupItem.pkg
  4. # rm -rf /Library/PreferencePanes/MySQL.prefPane
  5. Download des Ersatzes von MySQL.prefPane-leopardfix.zip
  6. Installation des neuen Preference Panes mittels Doppelklick auf MySQL.prefPane

Seither läuft MySQL bei jedem (Neu-)Start.

Via: Bug-Report mit Erläuterungen zum Problem

Labels: , ,

0 Kommentare | neuen Kommentar verfassen

Mittwoch, August 20, 2008

1 Pixel hohe Rahmen mit DIVs realiseren - im Internet Explorer 6

Vor einigen Tagen arbeitete ich an der Umsetzung des Screendesigns für eine neues Web-Projekt. Unter anderem sollte das DIV mit den Inhalten am unteren Rand einen (speziellen) Rahmen erhalten. So speziell, das border-bottom:1px solid #AAAAAA; nicht möglich war. Denn der Rahmen sollte - um einen 3D-Effekt zu ermitteln - mit Versatz beginnen.

"Nichts leichter als das!", dachte ich mir, und machte mich an die Umsetzung. Unterhalb des Content-DIVs wollte ich ein DIV platzieren, das 1px hoch war und mittels margin-left:4px Links um 4px eingerückt war.

Unter Safari und Firefox gab es keine Darstellungsprobleme. Doch als ich mir das Design mit dem MSIE6 anschaute, fiel ich wieder einmal aus allen Wolken: Der graue Balken war nicht etwa ein, sondern etwa 20 Pixel hoch.

Die Lösung? Natürlich wusste Google rat:

If you need to have a div tag smaller than 20px, then you will find it a bit hard to get on IE. Just add “overflow: hidden” to it’s style and you’re good to go.

Quelle: DIV height issue on IE

Wie ich vor kurzem bereits einmal getwittert habe:

Ich hoffe mir nichts sehnlicher, als das Hostel 3 mit Microsoft Internet Explorer-Entwicklern als Backpacker verfilmt wird.

Guet Nacht!

Labels: , , , ,

0 Kommentare | neuen Kommentar verfassen

Mittwoch, August 13, 2008

Wie aufgekaufte Startups häufig enden

Whenever a large software company acquires a startup, the first order of business is often an attempt to move the startup's application onto the larger company's technology infrastructure so that it can get benefits of "economies of scale" or some other buzzword that is typically a euphemism for "we bought you so now you're our bitches" that is not grounded in business realities. This often requires application rewrites that have the unfortunate consequence of causing the shipped application to stagnate as all efforts are poured into recreating the same application using a different technology.

Quelle: Dare Obasanjo aka Carnage4Life - Application Rewrites after Acquisitions: How Large Software Companies Destroy Startup Value

Labels: , ,

0 Kommentare | neuen Kommentar verfassen

Freitag, August 08, 2008

Winkelrieds Fundamental-Kritik an Newsnetz.ch

Man fühlt sich an die Memoiren von Stalin erinnert - als diese kleiner ausgefallen sind als die von Lenin, hat man einfach die Buchstabengrösse vergrössert.

Quelle: Tagi mit neuer Webseite | WINKELRIED.INFO

Einspruch, Linkenjäger! Newsnetz verbreitet ... News. Das sind gemeinhin Texte (ab und zu auch Bilder und Videos). Texte müssen gelesen werden. Je grösser die Bildschirmschrift, desto einfacher sind Texte lesbar. Ich selbst (27-jährig, meistens mit Brille im Web unterwegs) lese Artikel in einer sehr, sehr grossen Schriftart (dank Safaris Apfel-+ fällt es äusserst leicht, die Schrift zu vergrössern. Mit Betätigung der Leertaste springt man einen ganzen Bildschirm nach unten).

Der Entscheid des Tagi (und der anderen Newsnetz-Seiten) ist somit gerechtfertigt. Im Internet surfen längst nicht mehr nur 18-jährige Jungspunde mit bester Sehkraft, die sich widerstandslos Texte in Schriftgrösse 12px antun ...

Die Wahl der Schrift ist zudem vollkommen falsch. Die haben das Ding an einem Mac entwickelt und erst dann geschaut, wie es auf Windows und anderen Betriebssystemen funktioniert.

So entwickle ich auch Web-Sites - mit Safari und Firefox unter Mac OS X (ich hoffe, dass dies heute sehr, sehr viele Web-Entwickler tun). An dem ist nichts auszusetzen.

In der Tat läuft unter Windows aber etwas mit dem Antialiasing (ClearType ahoi) der gewählten Schrift falsch (bei mir unter Parallels 3.0 und Windows XP getestet). Die Schrift wirkt gerade bei Strichen (f, l etc.) zu fein, das Bild "flackert" irgendwie.

Labels: , , , ,

5 Kommentare | neuen Kommentar verfassen

Montag, August 04, 2008

Benachrichtigung bei Neuveröffentlichungen der Lieblingsband

Heute trudelte folgende Anfrage ein:

Ich suche nach einer Möglichkeit, wie ich automatisch benachrichtigt werden kann, wenn von bestimmten Bands ein neues Album erscheint. ...

Gibt es ev. schon so einen Service oder hast du eine Idee, wie man selber so etwas sich einrichten/programmieren könnte? (Bin Informatiklehrling, also kein Laie).

Meine Antwort lautete:

Ein solcher Service ist mir nicht bekannt, könnte aber durchaus irgendwo da draussentm existieren.

Ich würde mit der Amazon API/den Amazon Web-Services versuchen - imgriff.com hat dazu einen erhellenden Artikel:

RSS-Tricks: Neue Bücher bei Amazon per Feed

Anscheinend kannst du dir so personalisierte RSS-Feeds zusammenstellen (bspw. mit Keyword "Rammstein") und danach mit deinem Feed-Reader abonnieren.

Wenn es unbedingt ein E-Mail sein soll (ich bevorzuge Feeds, da meine Arbeit so nicht unterbrochen wird), kannst du ja versuchen, mit den Yahoo! Pipes was zusammenzubasteln. Ob die E-Mail-Versand unterstützen, weiss ich nicht.

Alternativ: Wenn du einen Web-Server dein eigen nennst, kannst du den Feed auch mittels Cron-Job und MagpieRSS parsen lassen und dir mit einem PHP-Script ein Mail senden, sobald ein gesuchter Artikel dort erscheint.

Weiterführende Links

Labels: , , , , ,

0 Kommentare | neuen Kommentar verfassen

Mittwoch, Juli 30, 2008

Wenn Leute die URL in das Google-Suchfeld eintippen ...

... ernten diese von mir nur ein müdes lächeln. Wenn sie gar keine URLs mehr eintippen, sondern nur noch Begriffe der gesuchten Web-Site, sage ich diesen Leuten einen wegweisenden Charakter voraus:

With the icons and text that draw one’s attention toward the Google search bars, the address bar fades more and more into the background. And since non-techie people are usually afraid of “breaking the computer”, they stick to a method that works well, which is to keep using Google.

Quelle: Do you still use URLs? Normal people no longer do | Wisdump

Seit längerem überlege ich mir, Leuten, die sich die URL meiner Web-Site nicht merken können, einfach zu sagen: "Gehen Sie auf Google und suchen Sie nach Mario Aeby. Klicken Sie auf den ersten Link der Resultate. Voila!" Zwar gelangen Sie so "nur" auf mein Blog, aber immerhin sind sie dem Ziel schon einmal deutlich näher als wenn sie die URL falsch eingegeben hätten ...

Labels: , ,

1 Kommentare | neuen Kommentar verfassen

Donnerstag, Juli 10, 2008

Online Color-Picker

Wer möchte schon Bloatware wie Photoshop starten, um nur rasch einige RGB-Farbwerte für seine CSS-Styles auszuwählen? Das Web hat natürlich auch für diesen Anwendungsfall etwas parat:

Color Schemer Online 2.0

Labels: , , , ,

2 Kommentare | neuen Kommentar verfassen

Mittwoch, Juli 09, 2008

cURL versendet POST- als GET-Request

... und zwar genau dann, wenn man CURLOPT_NOBODY aktiviert.

Dieser Erkenntnis hatte ich nach ca. einer Stunde debuggen meines Twitter-Cron-Jobs. Eine Google-Suche führte dann auch schnurstracks zur Erläuterung des "Bugs", der eigentlich ein Feature ist/sein soll:

Setting CURLOPT_NOBODY to FALSE will now switch the HTTP request method to GET simply because previously when you set CURLOPT_NOBODY to TRUE first and then FALSE you'd end up in a broken state where a HTTP request would do a HEAD by still act a lot like for a GET and hang waiting for the content etc.

If you issue a POST request and then want to make a HEAD or GET using the same re-used handle, you must explicitly set the new request type using CURLOPT_NOBODY or CURLOPT_HTTPGET or similar.

Quelle: [ 2010735 ] setting a CURLOPT_NOBODY option forces GET request

Labels: , , ,

0 Kommentare | neuen Kommentar verfassen

Donnerstag, Juli 03, 2008

Bye, bye Microsoft Internet Explorer 6!

Hoffen wir, dass dieses Vorgehen endlich Schule macht:

As of August 15th, 2008, future features and any improvements made to existing features may not work with IE 6. If you are using IE 7, Firefox 2 or 3, or Safari, you don't have to do anything — everything will continue as is for you. However, if you are using IE 6, and you want to make sure everything works, you will need to upgrade your browser to either IE 7, Firefox, or Safari. All of these browsers are free and all of them will deliver a much better overall experience. The web will be a lot better for you.

Quelle: 37signals Product Blog: Phasing out support for IE 6 across all 37signals products on August 15, 2008

Labels: , , , ,

0 Kommentare | neuen Kommentar verfassen

Mittwoch, Juli 02, 2008

Hostpoint-Problem des Monats: Zeichensalat

Kein Monat vergeht, in dem Hostpoint nicht eine Überraschung parat hat. Während ich im Juni das erste Mal seit langem etwas Positives berichten durfte, war klar, dass im Juli garantiert wieder etwas kaputt gehen musste.

Und tatsächlich: Heute erhalte ich ein Mail eines Kunden, der über komische dargestellte Sonderzeichen flucht. Nach dem ich die Homepage angesurft habe, kann ich das Problem bestätigen: Irgendwie scheinen da UTF-8 und ISO-8859-1 durcheinander gekommen zu sein. Seit sechs Jahren hat die Web-Site keine Probleme mit Zeichensätzen aufgewiesen, doch nun ist über Nacht wohl etwas "kaputt" gegangen.

Soweit ich erkennen konnte, liegt das Problem darin begründet, dass mysql_query() neu nicht mehr ISO-8859-1-kodierte Zeichensätze zurückliefert, sondern UTF-8. Das HTML-Dokument sagt von sich aber, dass es in ISO-8859-1 kodiert ist - und htmlentities() erwartet auch ISO-8859-1. Ah, und die Tabellen-Spalten weisen ebenfalls latin1_german1_ci als Kodierung auf (jedenfalls sagt mir das phpMyAdmin so).

Temporärer Workaround

mysql_query("SET NAMES latin1");

... zuoberst in der index.php (natürlich nach dem Initialisieren der Datenbankverbindung!)

Jetzt klappt es wieder mit den Zeichensätzen.

Mal schauen, was sich Hostpoint für den kommenden Monat einfallen lässt.

Labels: , , , ,

1 Kommentare | neuen Kommentar verfassen

Donnerstag, Juni 26, 2008

PHP wartet auf RoR-Entwickler

The maintainers published the code for the security patches on the 18th, thus giving crackers almost a week head start in finding an exploit in older versions. They then shipped broken releases on the 20th, making it impossible for anyone to upgrade to an official version. And we haven't heard anything since. What's going on?

Quelle: Ruby 1.9.0/1.8.7/1.8.6/1.8.5 new releases (Security Fix) - Ruby Forum

Da ist die Eisenbahn wohl entgleist ... Macht nichts, alle Wege enden irgendwann bei PHP!

Labels: , ,

0 Kommentare | neuen Kommentar verfassen

Mittwoch, Juni 25, 2008

Tomcat - die perfekte Wahl für Web-Applikationen

Over the last few weeks my photo collection application has been struggling seriously with its performance. The Tomcat server would sometimes crash, which isn't so serious, as my monitoring script would restart it at most 30 minutes later.

Quelle: On robots, URL design, and bad optimization | Larsblog

Toll! Mein Apache-Server stürzt wegen PHP-Scripts auch hie und da ab, aber dank eines Scripts ist er nach spätestens 30 Minuten wieder im Netz. Hey, im Internet stört es niemanden, wenn Server für 30 Minuten offline gehen *höhö*

Nun mal im Ernst: Wieso Tomcat, wenn es AMP längst tun würde? Ich erschlage Fliegen hier im Haus ja auch nicht mit dem Sturmgewehr.

Labels: , ,

3 Kommentare | neuen Kommentar verfassen

Dienstag, Juni 24, 2008

Xdebug-Meldungen verfeinern

Wie man Xdebug installiert, habe ich hier bereits beschrieben. Doch mit der Installation alleine ist es noch nicht getan; das Teufelswerkzeug muss nun auch noch derart konfiguriert werden, dass es dem Entwickler alle wichtigen Informationen liefert.

Die Jungs drüben bei IBM haben sich die Mühe gegeben, die (bezüglich INI-Einstellungen schwer durchschaubare) Dokumentation zu lesen und ihre Konfigurationsparameter im Netz zu publizieren:

xdebug.dump_once = On
xdebug.dump_globals = On
xdebug.dump_undefined = On
xdebug.dump.SERVER = REQUEST_METHOD,REQUEST_URI,HTTP_USER_AGENT
xdebug.dump.REQUEST=*

xdebug.show_exception_trace = On
xdebug.show_local_vars = 1
xdebug.var_display_max_depth = 6

Quelle: Squash bugs in PHP applications with Xdebug

Tönt gut und produziert äusserst detaillierte Fehlermeldungen.

Wer nichts vom korrekten Initialisieren von Variablen hält, sollte xdebug.dump_undefined vielleicht lieber auf Off schalten ...

Wer auf Exceptions setzt und diese sauber abfängt, sollte vielleicht auch xdebug.show_exception_trace auf Off schalten ...

Labels: , , ,

0 Kommentare | neuen Kommentar verfassen

Freitag, Juni 20, 2008

Fertig lustig für den Microsoft Internet Explorer 6

IE 6 is definitely the most painful browser for us to support – it’s seven years old and doesn’t even fully support the CSS 1.0 standard created in 1996. Microsoft’s done an incredibly poor job of getting users to upgrade. It looks like it’s going to take pressure from big apps like MobileMe to seal the deal.

Quelle: Apple's MobileMe drops support for IE 6 - (37signals)

Labels: , , , , , ,

2 Kommentare | neuen Kommentar verfassen

Donnerstag, Juni 19, 2008

PHP schöner Debuggen mit Xdebug

Um unter Mac OS X 10.4 mit dem mitgelieferten Apache (1.3.x) und PHP 5.2.4 von Entropy PHP-Scripts "schön" (sprich effizient) zu debuggen, installiert man sich am Besten Xdebug.

Kurz-Kurzanleitung:

  1. Download von Komodo 4.4 • PHP Remote Debugging • Mac OS X / x86 unter Komodo Debugger Extensions
  2. Kopie von xdebug.so aus dem 5.2-Ordner (gemäss installierter PHP-Version!) in den Ordner /usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/
  3. Erstellen einer Datei /usr/local/php5/php.d/80-extension-xdebug.ini und Einfügen von
    [xdebug]
    zend_extension="/usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so"
  4. Apache neu starten

Via:

Tipp: vardump() produziert nun HTML-formatierte und ohne Blick auf den Quelltext der aufgerufenen Seite lesbare Dumps - so wie es schon längst sein sollte.

Dank: Pierre & Alain

Labels:

0 Kommentare | neuen Kommentar verfassen

Mittwoch, Juni 18, 2008

Reddit unter Windows Vista installieren

How to get reddit running on a clean Mac OSX Leopard install

Quelle: fixxit

Wieso nur findet sich nirgends eine Anleitung, wie man reddit unter Windows Vista, dem Betriebssystem der Wahl für alle Web-Entwickler da draussen, installiert? Skandal!

Labels: ,

2 Kommentare | neuen Kommentar verfassen

Dienstag, Juni 17, 2008

Wie Hostpoint PHP beschleunigt

... kann ich auch nicht so genau sagen. Nachfolgend sollen erste Hinweise auf die Technologie gegeben werden, die ich über einige dort gehostete Web-Präsenzen in Erfahrungen bringen konnte:

  • FastCGI: incomplete headers (0 bytes) received from server "/var/run/hcgi/4444" So lautete die Fehlermeldung, die sich bei einer meiner Präsenzen im Apache error.log wiederfand. hcgi scheint der Name des im Einsatz stehenden PHP-Beschleunigers zu sein. Ob es sich bei 4444 um die PID oder die Kundennummer handelt, weiss ich nicht.
  • Es scheint sich um eine Eigenentwicklung zu handeln:

    Das Hostpoint-Engineering-Team hat einen PHP-Website-Beschleuniger entwickelt. Websites, welche auf PHP-Script aufgebaut sind, laufen nun massiv schneller.

    Hostpoint mit PHP-Website-Beschleuniger
  • php.ini-Dateien im Web-Root werden nun nicht mehr interpretiert. Hierzu muss man im Hostpoint Control Panel auf Explorer/Web-Einstellungen wechseln, wo man einerseits sog. PHP-Profile (im Grunde nichts anderes als ein GUI für php.ini-Einstellungen) erstellen/anpassen, sowie diese Profile bestimmten Web-Verzeichnissen zuweisen kann. Leider führte eine von mir "from Scratch" erstellte Konfiguration zu einem HTTP 500er, weshalb ich schlussendlich eine Kopie des Profils typo3 anlegte und dort allow_url_fopen aktivierte. Für professionelle Web-Entwickler ist diese Oberfläche deutlich komplizierter zu bedienen, als eine gewöhnliche php.ini im Text-Editor anzupassen und dann via FTP auf den Server zu laden.
  • Das PHP-Profil wird über .htaccess-Dateien aufgerufen, die folgenden Inhalt erhalten:
    HcgiPhpProfileName php5 typo3
    
    #@__HCP_END__@#
    # Anything after the comment above is left alone
    ...

Für einmal darf ich Hostpoint gratulieren: Seit der Beschleuniger im Einsatz ist, sind auf PHP basierende Web-Applikationen (in meinem Fall: MediaWiki, so sehr man sich über die Code-Qualität und Performance-Eigenschaften des Produktes streiten kann) spürbar schneller geworden.

Labels: , , ,

0 Kommentare | neuen Kommentar verfassen

Mittwoch, Juni 11, 2008

Firebug für Microsoft Internet Explorer ...

... gibt es selbstverständlich nicht.

Wer aber JavaScript-Fehler in dem unangefochten besten und standardkonformsten aller je programmierten Browser debuggen muss, der eigentlich gar nie Fehler produzieren sollte, geht folgendermassen vor:

  1. Download des Microsoft Script Debuggers (via Scripting Debugging in Internet Explorer)
  2. Installation
  3. Konfiguration des Internet Explorers gemäss der Anleitung HOW-TO: Debug JavaScript in Internet Explorer

Nachtrag

Mittlerweile gibt es zusätzlich noch die Internet Explorer Developer Toolbar, die frappant an Firebug erinnert. Selbstverständlich niemals so brauchbar wie das quelloffene Original - Microsoft halt ...

Labels: , , , , ,

0 Kommentare | neuen Kommentar verfassen

Dienstag, Juni 10, 2008

jQuery-Update unter Drupal 5: Murks

Keine grosse Sache, die jQuery-Library aus dem 2006 mit der neuesten 1.2.6 zu ersetzen - wer will schon eine mehr als zwei Jahre alte JavaScript-Library benutzen? Doch ein klitzekleines Detail stört nach dem Upgrade: Nun fehlt plötzlich die "Check all"/"Select all"/"Alles auswählen"-Checkbox bei Tabellen (z.B. um alle Seiten auszuwählen, die man löschen möchte).

Glücklicherweise habe nicht nur ich mich durch die Drupal-Foren gekämpft, sondern auch andere Zeitgenossen. Und einer davon hat sich der darbenden Community angenommen und bietet folgende Lösung für die Datei ./misc/tableselect.js:73 an:

$('form table:has(th.select-all):not(.tableSelect-processed)').each(Drupal.tableSelect);

(Andere Drupal-Entwickler hingegen stehen eher darauf, jQuery zu patchen und veraltete APIs nachzubauen - verstehe ich nicht ganz. Henusode.)

Labels: , , , ,

0 Kommentare | neuen Kommentar verfassen

Dienstag, Juni 10, 2008

Apache 1.3, MySQL 5 und PHP 5 unter Mac OS X auf UTF-8 trimmen

Mittlerweile habe auch ich den AMP-Stack auf meinem MacBook installiert und entwickle damit Web-Applikationen. Damit es bezüglich den Zeichensätzen koscher zu und her geht, musste ich folgende zwei Anpassungen an der Konfiguration vornehmen:

Apache 1.3

(Ich verwende aus Faulheit den mit Tiger mitgelieferten Apache - leider halt noch nicht 2.x)

In der /etc/httpd/httpd.conf wird mit folgendem Befehl eingestellt, dass im Header der HTTP-Antwort UTF-8 als Zeichensatz angegeben wird:

AddDefaultCharset UTF-8

MySQL

In der /etc/my.cnf

init-connect='SET NAMES utf8'

Bei jeder Verbindungsaufnahme (bspw. mysql_connect() via PHP) wird der Zeichensatz der ausgelieferten Daten damit auf UTF-8 geschaltet.

Selbstverständlich muss man aber immer noch aufpassen, in welchem Zeichensatz man Datenbank-Dumps exportiert und wieder einspielt ...

Labels: , , , , , , ,

0 Kommentare | neuen Kommentar verfassen

Dienstag, Mai 27, 2008

Das ultimative Mantra der Software-Entwicklung

"How will this software get my users laid" should be on the minds of anyone writing social software (and these days, almost all software is social software). [...]

Quelle: It's Clay Shirky's Internet, We Just Live In It

Labels: , , , , ,

0 Kommentare | neuen Kommentar verfassen

Sonntag, Mai 11, 2008

MySQL INSERTs und UPDATEs mit Subselects

Kürzlich durfte ich nachträglich zwei Datenbanktabelle normalisieren. Obwohl ich längst von den Subselect-Fähigkeiten von MySQL wusste, hatte ich es bis dato noch nie ausprobiert. Wie es sich herausgestellt hat, ist das Prozedere deutlich einfacher, als ich es mir erträumt hatte.

Rubriken neu in separater Tabelle

Die Tabelle daten enthält bspw. Adressen, die jeweils einer bestimmten Rubrik zugewiesen sind. Selbstverständlich kann man die Rubrik in dieselbe Tabelle hardcoden - doch deutlich hübscher ist es, die Rubrik in eine eigene Tabelle auszulagern und diese mittels eines Foreign Keys zu verknüpfen. Einer der Vorteile: Muss der Name einer Rubrik angepasst werden, geschieht dies an einem einzigen Ort, die Änderung wird aber gleich für alle Adressen übernommen.

Folgender Befehl nahm die hardcodierten Rubriken und fügte diese (jeweils einmal!) in die Tabelle rubriken ein:

INSERT INTO daten_rubriken
(rubrik)
SELECT DISTINCT(rubrik) FROM daten

Wichtig ist die SELECT ... Klausel - bis dahin handelt es sich beim SQL-Query um einen ganz normalen INSERT. DISTINCT bewirkt, dass der Rubrikennamen nur einmal ausgelesen wird (es können ja dutzende oder tausende Einträge dieselbe Rubrik haben).

Rubriken-IDs in Ursprungstabelle

Nachdem wir also nun die Rubriken in eine eigene Tabelle ausgelagert haben, möchten wir diese wieder mit der Ursprungstabelle verknüpfen. Hierzu verknüpfen wir die Textfelder der Ursprungs- mit der Rubriken-Tabelle und fügen in die Ursprungstabelle in ein neu erstelltes Feld die ID der Rubrik ein:

UPDATE daten d
SET d.`daten_rubriken-id` = (SELECT r.id FROM daten_rubriken r WHERE r.rubrik = s.rubrik)

Labels: , ,

1 Kommentare | neuen Kommentar verfassen

Donnerstag, März 06, 2008

MSIE8 sucks!

Wie ich das schon jetzt wissen kann? Na, der Browser kommt von Microsoft. Noch Fragen?

Of course, there are those who might suggest it's only Microsoft that has problems hitting standards around interoperability and is trying to change the debate and buy time for IE 8 by putting the onus on the industry to revisit standards. [...]

Referring to IE 7, Hachamovitch said: "My kids would hear stories about how the web isn't working as it should, and they'd ask me: 'Daddy, did you break the web?' Developers would answer the question a little differently," which prompted one keynote audience member sitting behind Reg Dev to growl "much differently."

Quelle: Microsoft jump starts IE 8 with community push

Labels: , , ,

2 Kommentare | neuen Kommentar verfassen

Dienstag, Februar 19, 2008

Formulare mit CSS (und ohne Zeilenumbrüche) layouten

Wie man Formulare heutzutage layoutet (nämlich mit CSS und nicht etwa Tabellen), verzapfen unzählige Artikel im Netz. Einen sauberen Einstieg bietet beispielsweise Quirksmodes Tableless forms.

Auch hier wird wieder belohnt, wer die HTML-Spezifikationen kennt und spezifische Tags so einsetzt, für was sie eigentlich erdacht wurden. Bestes Beispiel in diesem Zusammenhang: Der <label>-Tag, welcher immer noch nicht allen professionellen Web-Entwicklern bekannt ist.

Eine Sache wird in vielen Artikeln hingegen nicht ausreichend erläutert: Wie kriege ich das Formular-Layout hin, ohne dabei <br>-Tags zu benutzen? (Zeilenumbrüche, für HTML-Unerfahrene - in der Regel <tt clear="all">, um mit dem Floats zurecht zu kommen ...)

Heute nun habe ich mich noch einmal mit der Umbruch-Thematik auseinandergesetzt und kann folgende Lösung präsentieren, die zumindest in Firefox 2.x und Safari 3.x zu funktionieren scheint (ich schliesse mich Conrast.ie an und hasse MSIE6 ab heute öffentlich):

label {
 display:block;
 float:left;
 width:200px;
 
 clear:left;
}
input {
 display:block;
 float:left;
 
 clear:right;
}

Wichtig sind die clear-Anweisungen, die das Umbrechen der Floats steuern.

Labels: , , ,

5 Kommentare | neuen Kommentar verfassen

Dienstag, November 20, 2007

Design vs. Web Design

[...] Google. Amazon. Facebook. eBay. Yahoo. Craigslist. YouTube.

Do they have “gravitas, praise, or memorability”? Yes, they certainly do in the minds of web designers.

Will they be praised by print designers and put into large coffee table books? No, of course not. You can’t appreciate a web site in the same way you appreciate a logo or a poster.

[...] Who do we credit for building Google? Larry and Sergei? How about Amazon? Jeff Bezos? People in the web development community know this is silly…thousands and thousands of people have worked on those sites, tweaking the user experience over many years. There is no single person we can point our accolades to.

Quelle: Do Canonical Web Designs Exist?

The less sophisticated lament on our behalf that we are stuck with ugly fonts. They wonder aloud how we can enjoy working in a medium that offers us less than absolute control over every atom of the visual experience. What they are secretly asking is whether or not we are real designers. (They suspect that we are not.) [...]

Web design is the creation of digital environments that facilitate and encourage human activity; reflect or adapt to individual voices and content; and change gracefully over time while always retaining their identity.

Quelle: Understanding Web Design

Labels: ,

0 Kommentare | neuen Kommentar verfassen

Dienstag, November 13, 2007

Microsoft Internet Explorer 3.0 bis 6.0

Wer als Web-Entwickler tätig ist, fürchtet sich täglich vor dem Zeitpunkt, wo sein Werk im Microsoft Internet Explorer getestet werden muss. Eins ist klar: Es wird wird sich immer irgendein Darstellungsfehler finden, der auf einen Bug in der Rendering-Engine des Krüppel-Browsers aus Redmond zurückzuführen ist.

Entweder, weil nicht standardkonform gecodet wurde (als Monopolanbieter hat man für Standards nur ein müdes Lächeln übrig, denn schliesslich setzt man durch seine Marktmacht diskussionslos "Standards"), oder weil eine Kombination von verschiedenen Seitenelementen zu ganz kuriosen Darstellungsresultaten führt (Stichwort: Peek-a-boo Bug, stand auch heute wieder auf dem Programm).

Egal - da wohl immer noch so gegen 80% der Interbenutzer das Browser-Scheusal von Kleinweich benutzen, muss man diese Tests zwangsweise über sich ergehen lassen.

Damit man Web-Sites auf einem einzigen Gerät gleichzeitig mit dem Microsoft Internet Explorer 6.0 und 7.0 testen kann, sei folgende Anleitung empfohlen:

IE 6 und IE 7 parallel installieren

Kurzzusammenfassung

  1. Internet Explorer 7 installieren
  2. Internet Explorer All Versions Installer herunterladen
  3. Installer ausführen und Browser selektieren, welche standalone installiert werden sollen

Der Anbieter des Installations-Päckchens lautet Tredosoft, die Hintergründe zum Paket werden auf einer eigenen Seite beschrieben.

Nachtrag

Nachfolgende Web-Dienstleistungen sind für einen Web-Entwickler kein guter Ersatz für eine lokale Installation des Internet Explorers - schliesslich arbeitet man oft auf einem über das Internet nicht zugänglichen Testsystem. Auch kann ich mir vorstellen, dass Reloads nach Anpassungen im Code äusserst träge - wenn nicht gar limitiert - sind:

Dennoch "Danke!" für die Hinweise!

Labels:

1 Kommentare | neuen Kommentar verfassen