Posts Tagged ‘Web-Entwicklung’

Dienstag, 18. Mai 2010

Thing und Data Tables

Instead, they keep a Thing Table and a Data Table. Everything in Reddit is a Thing: users, links, comments, subreddits, awards, etc. Things keep common attribute like up/down votes, a type, and creation date. The Data table has three columns: thing id, key, value. There’s a row for every attribute. There’s a row for title, url, author, spam votes, etc. When they add new features they didn’t have to worry about the database anymore. They didn’t have to add new tables for new things or worry about upgrades. Easier for development, deployment, maintenance.  The price is you can’t use cool relational features. There are no joins in the database and you must manually enforce consistency. No joins means it’s really easy to distribute data to different machines. You don’t have to worry about foreign keys are doing joins or how to split the data up. Worked out really well. Worries of using a relational database are a thing of the past.

Quelle: High Scalability – High Scalability – 7 Lessons Learned While Building Reddit to 270 Million Page Views a Month

Tags: , ,
Labels: IT, Web

Keine Kommentare | neuen Kommentar verfassen

Samstag, 20. Februar 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.

Tags: , , , , ,
Labels: Web

Keine Kommentare | neuen Kommentar verfassen

Samstag, 20. Februar 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>
...

Tags: , , ,
Labels: Web

2 Kommentare | neuen Kommentar verfassen

Mittwoch, 3. Februar 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

Tags: ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Dienstag, 26. Januar 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)

Tags: ,
Labels: Allgemein

Keine Kommentare | neuen Kommentar verfassen

Samstag, 19. Dezember 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

Tags: ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 18. November 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


Tags: , ,
Labels: Web

Keine Kommentare | neuen Kommentar verfassen

Dienstag, 17. November 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.)

Tags: , ,
Labels: Web

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 1. November 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.

Tags: , , ,
Labels: Politik, USA, Web

2 Kommentare | neuen Kommentar verfassen

Mittwoch, 30. September 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)

Tags: ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen