Domain- und Pfad-Abhängigkeiten vermeiden
Manchmal frage ich mich schon, warum manche Webentwickler es sich (und anderen) so schwer machen...
Wenn man eine Webapplikation erstellt, dann macht man das ja (hoffentlich!) auf einer Testplattform, also meist unter einer Test-Subdomain. Wenn auf der Testplattform dann alles funktioniert, fertig und getestet ist, geht der ganze Kram unter der richtigen Domain live. Alles ganz einfach, sollte man denken... ABER: Immer wieder wird an diversen (meist völlig unnötigen!) Stellen die Domain unter der die Applikation gerade läuft, hart rein kodiert, was dazu führt, daß man an genau diesen Stellen noch mal hinfassen muss damit die tolle Applikation auch unter einer anderen Domain läuft. Meist muss es dann aber irgendwann ganz schnell gehen, der Mensch der sich damit auskennt ist krank, hat Urlaub oder ist vom Bus überfahren worden, was dazu führt, dass es beim Switch auf eine andere Domain kracht, weil eben "irgendwo" noch die Test-Domain drin steht. Beliebte Stellen für so was sind: - include Pfade - <base> Tags in HTML-Headern - Configs für dynamisch erzeugte URLs Hatte hier eben wieder mal ein schönes Beispiel dafür wie man es nicht machen sollte. Kunde hat sich von einer Webagentur seine Seiten neu machen lassen. Es gibt 4 Domains die auf die Seiten zeigen sollen, .de als Hauptdomain, .com für die englischen Inhalte und 2 weitere Domains mit Varianten der Schreibweise. Für die Entwicklung der neuen Seiten haben wir einen weiteren virt. Server unter einer dev. Subdomain eingerichtet. Wenn die neuen Seiten fertig sind, soll nur noch der DNS umgestellt werden, die Apache-Config im dev. virt. Server war schon für die 4 "richtigen" www. Domains vorbereitet. Jetzt sind die neuen Seiten fertig und es soll umgestellt werden. Weil heute ein "SuperWichtigEvent" ist, bei dem die neuen Seiten vorgestellt werden sollen, muss es natürlich wieder mal ganz schnell gehen. Kein Problem denkt man sich, DNS umstellen und gut ist... Falsch, gar nix ist gut. Da die App bisher nur unter der dev. Subdomain funktioniert, bekommt man unter allen 4 Domains nur das (eh schon fragwürdige) FlashIntro zu sehen. Dann ist Schluss, kein "skip" oder "weiter" Link, einfach nichts. Also kurzerhand für die 4 www. Domains Redirects auf die dev. Subdomain eingerichtet. Ist zwar nicht schön, funktioniert aber erst mal, wir erinnern uns: Heute ist der "SuperWichtigEvent", es muss also auf jeden Fall "irgendwie" laufen. Mail an die Webagentur, sie mögen das doch bitte fixen und uns dann Bescheid geben, wann und wie wir welche Domain auf die Seiten zeigen lassen sollen (ServerAlias, Redirect,...) Prompte Antwort: "Jetzt tut es, wir mussten nur noch $wasauchimmer umstellen. Bitte Redirects rausnehmen und alle 4 Domains als Alias einrichten. Die App entscheidet dann intern was für welche Domain angezeigt wird" Kein Problem, also wieder umgestellt. Ergebnis: Die .de Hauptdomain funktioniert jetzt immerhin, bei der .com gibt es immer noch nur das FlashIntro, das jetzt aber schon mal mit "weiter" Link. Wenn man auf den klickt wird aber nur noch mal das Intro abgespielt. Bei den beiden anderen Domains bekommt man jetzt nur noch eine Fehlerseite angezeigt, die einem sagt, dass die App mit den Domains mal so gar nix anfangen kann... Mail an die Agentur da sei wohl immer noch was nicht ganz korrekt... Wieder die schnelle Antwort: " Jetzt aber, wir mussten noch....." Nunja, ich weiss ja nicht was die getestet haben, bei mir funktioniert es immer noch nicht unter allen 4 Domains, aber wer bin ich schon. Und solange man mir nicht sagt was genau gewünscht ist, kann ich auch nicht mehr weiter helfen... Liebe Webentwickler: Das muss nicht sein! Es gibt ENV-Vars in denen aktuelle Pfade, ServerName, usw. stehen. Diese muss man aber eben auch (sinnvoll) verwenden damit die tolle Webapplikation auf verschiedenen Systemen unter verschiedenen Domains läuft OHNE dass man irgendwo hinfassen muss. Wenn man Redirects haben will, dann kann man die ganz einfach in der Websever-Config einrichten, daß muss man nicht mit wilden if/else Konstrukten hart kodiert in der App machen. Für verschiedene Sprachen bieten sich z.B. Prefixe in der URL an (/de/, /en/,...). Auf die kann man dann ganz einfache Redirects einrichten. Und wenn die App anhand der Domain verschiedene Inhalte anzeigen soll, sollte man zumindest immer einen Fallback drin haben, damit wenigstens "irgendwas" angezeigt wird. Den Grundsatz "Abhängigkeiten vermeiden" sollte man eben immer, nicht nur bei super-cooler OOP (Stichwort Dependency Injection) im Kopf haben...
Autor: Jens Giessmann
in Webdev
am
Mittwoch, 17. Februar 2010
um
10:33
Kommentare (0) | Trackbacks (0) Aperture 3 - erster Eindruck
200+ neue Features werden angepriesen. Neben dem Schnickschnack den sie aus iPhoto übernommen haben (faces, places,...) ist da ja schon nettes Zeug dabei. Aber...
Vielleicht hätte Apple lieber mehr Zeit investieren sollen das Ding stabil zu bekommen als "200+ neue Features" rein zu basteln. Zumindest die verfügbare Trail-Version geht ja wohl maximal als BETA durch.
Oh, sehe grade, es gibt ja schon ein Update... Aber ob ein "Aperture SlideShow Support, 1.0" Update wirklich hilft die scheinbar noch vorhandenen grundlegenden Bugs zu beheben? Kleiner Auszug aus dem Log (Zeilen gekürzt): mac.handcode.de Aperture[11308] Ach ja, ich hab nix wildes gemacht, ein paar Bilder importieren und lustig durch die GUI klicken (sind trail versionen nicht genau dazu da..?) reicht um das Ding aus dem Gleichgewicht zubringen. Und warum die Trackpad Gesten zum zoomen und drehen nur in der Browser-Ansicht, nicht aber beim Bild selber funktionieren würde mich ja schon auch interessieren... Aperture3 ist da!
Nach dem es die letzten Monate immer mal wieder Gerüchte um das baldige Release-Datum einer neuen Aperture Version gab, ist es jetzt endlich da. -> Aperture3
HipHop For PHP
Nach dem es in letzter Zeit Gerüchte gab, Facebook hätte die PHP-Runtime neu geschrieben, ist es seit gestern raus:
Das Ding heisst HipHop For PHP und ist ein PHP zu C++ "Übersetzer". ...HipHop programmatically transforms your PHP source code into highly optimized C++ and then uses g++ to compile it... Wozu das Ganze? Das Ziel ist natürlich Optimierung, klar. Facebook selber kommt dank HipHop laut eigener Aussage mit bis zu 50% weniger CPU-Zeit aus. Wow! Aber was bringt der Spaß dem "normalen" PHP-Programmierer? Marco Tabini und Ilia Alshanetsky haben das in ihren Blog-Artikeln zu HipHop sehr schön zusammengefasst. Also bitte dort weiterlesen. Das Facebook HipHop als OpenSource veröffentlicht hat, rechne ich ihnen auf jeden Fall hoch an! Tags für diesen Artikel: open-source, optimierung, performance, php, php-intern, planet-ug, programming, release, tuning
(Seite 1 von 1, insgesamt 4 Einträge)
|
blog powered by Serendipity