Archiv für März 2010

Photoshop CS4 V 11.0.1

Sonntag, 21. März 2010

Wenn man per Javascript Photoshop Stapel progremmieren möchten, stellt man schnell fest, dass es hier in jeder Photoshop Version eklatante Unterschiede gibt.  Daher empfiehlt sich hier das Update auf die aktuellste Photoshop Version – 11.0.1, Photoshop CS4. Denn englischsprachige Photoshop Scripting Foren reden nur noch über Scripting in CS4.

Photoshop bietet das CS4 als kostenlose Testversion an, für 30 Tage, danach ist Schluss und man muss Photoshop freischalten per Kauflizenz. Das ist auch in Ordnung, denn keiner lebt von Luft & Liebe und die Zeiten, in denen Programmierer für Essen programmiert haben, sind vorbei. (Ich glaube ja, dass das eh nur html kiddies waren, die Hr. Schambach auf seiner Talfahrt in Amiland rauswerfen musste).

Eine Schülerversion kostet aktuell bei Ebay etwa 190 EUR brutto.  Wer aber das CS4 einfach nur einmal daraufhin testen möchte, ob mit Scripting ein bestimmtes Problem zu lösen wäre, der kann sich – aber bitte auf eigene Gefahr hin – hier das Photoshop CS4 inkl. aller Updates auf Deutsch runterladen. In der ISO ist dann eine Textdatei, welche die komplette Installation dieser Key abfragefreien Version erklärt.

Technische Lösung
BGH Urteil Preissuchmaschinen ab 12.03.2010

Donnerstag, 18. März 2010

Am 12.03.2010 veröffentlichte der BGH das Urteil, dass Shopbetreiber Ihren Preis im Shop erst dann hoch setzen dürfen, wenn dieser auch in den Preissuchmaschinen, bei welchem der Shopbetreiber seine Artikel gelistet hat, angezeigt werden. Technisch ist das theoretisch erstmal nicht umsetzbar, da 95% aller Onlinehändler Ihre Artikeldaten aus dem Shop heraus an die Preissuchmaschinen übermitteln. Also entsteht hier ein Zeitfenster von mehreren Stunden, in welchem die Preise differieren.

Da wir als Programmierer auch vor dieser Problematik stehen, haben wir uns (trotz Krankheit, Grippe und hohes Fieber) auch unsere Gedanken gemacht und eine Lösung gefunden, welche abmahnsicher und wettbewerbskonform für den Shopbetreiber ist.

Der Link zum Artikel, welcher der Preissuchmaschine vom Shopbetreiber übermittelt wird, sieht aktuell etwa so aus:

http://www.shopname.de/html/product/details.html?artno=12345

Der Shop weiß also, dass er von der PSM auf das Produkt 12345 verweisen soll. Dieser Link wird, genauso wie alle anderen Links für eine PSM automatisch generiert. Wenn man nun dem Link die Zusatzinformation des Preises mitgibt, dann weiß der Shop auch, zu welchem Preis der Kunde das Produkt bei der PSM gefunden hat:

http://www.shopname.de/html/product/details.html?artno=12345&bruttopreis=199,00

Ruft nun der Kunde aus der PSM heraus diesen Link auf, dann weiß der Shop, dass dieses Produkt, auch wenn es aktuell im Shop bereits 210,00 EUR brutto kostet, diesem Kunden mit 199,00 EUR brutto angezeigt werden muss und der Shopbetreiber muss dieses Produkt dann laut Wettbewerbsrecht auch zu diesem Preis liefern, ist aber rechtlich auf der sicheren Seite – und – verärgert den Kunden nicht. Denn auch wenn ein Kunden einen Artikel in einer PSM zum Preis von 199,00 € findet und dieses Produkt im Shop mehr kostet, ist der Shopbetreiber verpflichtet, dieses Produkt zum niedrigeren Preis zu liefern – auch ohne Wettbewerbsrecht – hier greifen dann Verbraucherrechte.

Nun zu den Fragen für:

Irgendwie_herauswinden#> Kann ich den Kunden auf eine Seite weiterleiten, welche Ihn informiert, dass der Artikel nun teurer ist und nur zu dem neuen Preis bestellt werden kann? Nein, wettbewerbswidrig.

Menge_begrenzen#> Muss ich dem Kunden 100 Stück davon liefern? Vermutlich, aber wenn es der Shopprogrammierer schafft, bei “Preis_aus_der_PSM < Preis_im_Shop” eine Maximalmengenbegrenzung einzubauen, dann nicht mehr. Und wenn der Kunde im späteren Bestellablauf den Artikel aus dem Warenkorb löscht und neu bestellt – dann ist das nicht mehr Ihr Problem, denn Sie können ja (hoffentlich) in Ihren Statistiken & Logfiles einwandfrei nachweisen, dass der Kunde den Artikel gelöscht und neu bestellt hat. Hier greift kein Wettbewerbsrecht mehr, denn der Kunde befindet sich ja bereits auf Ihrer Seite, Sie haben also nicht versucht, Ihn mit falschen Preisangaben zu locken und teurer als angegeben zu liefern. Aber auch hier empfiehlt sich natürlich die Devise: “Natürlich liefern wir Ihnen gerne 2 Stück zu dem von Ihnen gefundenen Preis, Herr Müller, bitte verzeihen Sie vielmals, die Ware geht heute noch raus und wir berechnen Ihnen für Ihre Unannehmlichkeiten natürlich keine Versandkosten für die 12 Paletten Rasensteine.”

Sicherheitslücke patchen#> Da der Preis in der URL in Klartext unverschlüsselt übertragen wird, könnten sich hier ein paar kluge Kiddies für kleines, URL modifiziertes Geld und den Weiterverkauf über Ebay komfortabel ihr Taschengeld aufbessern:

http://www.shopname.de/html/product/details.html?artno=12345&bruttopreis=1,90

 Also sollte hier ein Verfahren angewendet werden, welches die Variable ”bruttopreis=xy” codiert und beim Aufruf wieder entschlüsselt. MD5 & deren Freunde fallen hier weg, verständlich, also ist eine eigene Lösung zu finden, sollte aber nicht schwer sein.

Uralt#> Der Verlauf eines Userbrwosers ist des Programmierers größter Feind. Ich verfluche diese postmodernen Browser, welch die im Verlauf gespeicherten Lieblingsseiten des Besitzers über Slide- & Opacity Effekte ungefragt zum Leben erwecken. Da erscheint es nicht verwunderlich, dass selbst tote Links nach Jahren wieder aufgerufen werden. Damit das hier nicht passiert und ein schwer wieder beschaffbares Produkt nach Monaten zu einem nicht tragbaren Preis automatisch per Warenwirtschaft verkauft werden muss, empfiehlt sich hier, an die URL noch einen Zeitstempel anzuhängen:

http://www.shopname.de/html/product/details.html?artno=12345&bruttopreis=irgendwiecodiert(1,90)&deadline=2010-05-05-05:55:55

D.h nach dem 5.5.2010 gegen 6 Uhr ist das Angebot nicht mehr gültig. Denn da PSM’s gewöhnlich nach spätestens 3 Tagen Ihren Daten gefressen haben sollten, ist hier ein Zeitfenster von +5 Tagen realistisch.

BGH Urteil – Preissuchmaschinen

Samstag, 13. März 2010

In Preissuchmaschinen müssen aktuelle Preisangaben stehen – MediaMarkt klagte

Der OnlineShop mediamarkt-online.de ist seit Jahre offline, über die Gründe zu diskutieren wäre verschwendete Lebenszeit, aber das Management geht nun andere Wege, um ihre überteuerten Artikel an den Mann zu bringen – Klage gegen OnlineShop Betreiber. Und da deren Management viel Geld von oben für solche brillianten Ideen bekommt, konnte MediaMarkt sein Anliegen auch irgendwann dem obersten Richter vortragen, und, welch Wunder, auch hier bekam MediaMarkt Recht zugesprochen.

Aber wieso auch nicht, denn wann hat der BGH jemals einem Mittelständler Recht anerkannt …

Die Frage für mich stellt sich jedoch, welche Berechtigung hat MM überhaupt, OnlineShops abzumahnen? Sucht der Benutzer bei Idealo, möchte er auch online kaufen – was er bei Mediamarkt leider nicht (mehr) kann.  Im Gegensatz dazu würde der BGH einen Shopbetreiber fragen, was er gegen die Printwerbung von MediaMarkt hätte, denn er wäre kein direkter Mitwettbewerber.

Das Hauptproblem sind aber die Preissuchmaschinen – jeder OnlineShop muss zuerst seine Preise im Shop ändern, bevor er die Artikeldaten an Idealo & Co übermitteln darf – siehe AGB – ansonsten wird der Shop und seine Artikel gesperrt. Und möchte man bei Idealo sein Produkte alle 3 Stunden aktualisieren, um Abmahnungen zu umgehen, zahlt man richtig Geld. Aber vielleicht hilft das Urteil, dass die PSM sich Gedanken machen, denn der Shopbetreiber hat eigentlich alles korrekt gemacht: Preis geändert & PSM informiert. Der BGH würde auch jemanden verurteilen, der “davon gewusst hat”, denn er hätte ja reagieren können …

 

SLES 11: online update

Dienstag, 02. März 2010

Die Standardinstallation von SLES 11 sollte auf der Kiste sein, ich installiere alle Server ausschließlich über Textkonsole, ich mag den grafischen Kram nicht. Geht schneller und teurer SCSI / SAS Plattenplatz wird gespart.

Heute soll auf einen Server für einen kleineren OnlineShop mit etwa 60.000 Artikeln und angebundener Statistikdatenbank das von Novell empfohlene KernelUpdate gemacht werden.

Die Kiste ist ein Dell Poweredge 1850 mit 2 Xeons, 8 GB Ram und recht flotten 15k SCSI Platten welche über einen nachgerüsteten DELL PERC4 Raid Controller gesteuert werden. Das System ist im Preis / Leistungsverhältnis einfach nicht zu schlagen.

Das System läuft bereits auf dem Standard-SLES-11-Kernel (SMP wegen den 2CPU’s, logo):

Server# cat /proc/version
Linux version 2.6.27.19-5-default (geeko@buildhost) (gcc version 4.3.2 [gcc-4_3-branch revision 141291] (SUSE Linux) ) #1 SMP 2009-02-28 04:40:21 +0100

Ein OnlineUpdate ist hier ein wenig trickreich wegen den Novell Lizenzen, daher hier mal eine Schritt für Schritt Anleitung …

1.) Einen neuen Account bei Novell.com einrichten (am besten eine Dödelmailadresse einrichten, die kann man dann wieder löschen … )

Account erstellen: http://www.novell.de -> Login -> Konto erstellen -> Mail abwarten …

Activation Code bekommen: http://www.novell.de -> “Service und Support” (oben)+Download Produkte-> unter Suche: “SUSE Linux Enterprise Server”+SUSE Linux Enterprise Server 11 + Alle Daten und “suchen” … dann wählte ich die Version “SUSE Linux Enterprise Server 11 for x86, AMD64, Intel64 e-Media Kit”, denn ich brauche  die 64bit Version für XEON Plattformen (AMD Benutzer sollten dann sicher die Itanium Version bevorzugen – aber wer bitte verbaut AMD im Serverbereich??? ), und dann rechts auf den Button “4 Dateien” klicken. Auf der nächsten Seite muss ich nur noch auf  “Get Activation Code” gehen und der Aktivierungscode wird mir per Mail gesendet. Der Aktivierungscode in der Email ist nur in Verbindung mit dem jeweiligen Novell-Account gültig, daher meinen aus Bequemlichkeit bitte nicht nutzen um diesen Schritt zu überspringen.

Zur Vollständigkeit empfehle ich, den Validierungslink in der Account-Anmeldeemail anzuklicken, sonst ist der Account nicht vollständig freigeschaltet und das Update geht dann möglicherweise nicht.

Erfolgreicher Versand des Novell Aktivierungscodes:

14-150x150 in SLES 11: online update

Email mit Aktivierungscode:

21-150x150 in SLES 11: online update

 

2.) Jetzt gehts an das SLES 11 Update – zuerst die Online Update Configuration:

31-150x150 in SLES 11: online update

Per Enter kommt man in die “Novell Custom Center Configuration”, jetzt alle Haken raus, außer bei Registration Code und NEXT ->

4-150x150 in SLES 11: online update

5-150x150 in SLES 11: online update

Im “Popup” Fenster auf Continue und dann kommt das Formular zum Eintragen des Activation Code, Achtung, bitte jegliche Firewall & iptables  vorher abschalten, da hier ein direkter Connect zum Novell Server erfolgt und eine Firewall das verhindern könnte.

6-150x150 in SLES 11: online update

Das Formular wird über den Textbrowser w3m gestartet. Die Felder per Pfeiltaste auswählen und per ENTER bekommt man die Möglichkeit, in die Felder etwas einzutragen und per ENTER schließt man die Texteingabe je Formularfelds ab. Zum Absenden mit den Pfeiltasten zum submit-button hüpfen und per Enter absenden, dann kommt das nächste Infofenster:

7-150x150 in SLES 11: online update

Hier bitte den unteren Anweisungen folgen, also erst “q”, dann “y” drücken und man wird mit Gratulationen seitens Novell überschüttet:

8-150x150 in SLES 11: online update

Damit wurden die Software Repositories aktualisiert und einem Online Update steht nichts mehr im Weg und somit kommen wir zum nächsten Schritt.

3.) Das eigentliche Update:

In Yast2 das eigentliche Online Update starten, hier sind bereits die YOU Update Paket ausgewählt und sollten um die 18,1 MB benötigen.

9-150x150 in SLES 11: online update

Per Accept startet das Update und man kommt dann direkt in das Online Update zurück und jetzt sind alle Updates für die bereits installierten Pakete ausgewählt. Am wichtigsten ist hier sicher der KERNEL Patch Version 1754, welche den Kernel auf die Version  2.6.27.42 auktualisiert. Bei mir waren es etwa 712 MB Updates, aber da die Kiste in einem Rechenzentrum steht und mit 100Mbit angebunden ist, sollte das schnell gehen …

101-150x150 in SLES 11: online update

11-150x150 in SLES 11: online update

So, nun sind starke Nerven gefragt. Denn nach einem Kernelpatch muss der Server neu gestartet werden und da ich etwa 1 Stunde im Auto verbringen müsste, sollte die Kiste nicht wieder hochkommen, ist selbst so ein einfaches YOU Update voller Spannung und da SCSI System Controllerbedingt immer sehr lange zum Booten brauchen, steigt die Spannung und steigt … und steigt …

12-150x150 in SLES 11: online update

Super, die Kiste ist wieder oben, der Kernel wurde gepatcht:

13-150x150 in SLES 11: online update

Das OnlineUpdate sollte nach nochmaligen Aufruf komplett leer sein, denn alle nötigen Pakete wurden eingespielt.

KEYWEB-AG: NS 84.19.188.171

Dienstag, 02. März 2010

Der DNS Server im RZ der KEYWEB AG-> 84.19.188.171 <- hatte bereits am 25.02.2010 gegen 15:00 mit DNS Anfragen mächtig zu kämpfen, sprich es kam zu erheblichen Verzögerungen. Da eine WebAnwendung bei uns Reverse Mapping erforderte (also die Namensauflösung der aufrufenden IP’s), kam es zu einem Anfragenstau und der vorgeschaltet Loadbalancer machte seine Aufgabe hervorragende – er bekam ein Timeout von allen betroffenen Servern und nahm die betroffenen BackEnd Server automatisch aus seiner Verteilerliste heraus Icon Smile in KEYWEB-AG: NS 84.19.188.171 … bis man auf die Idee mit dem DNS kommt, vergehen ein paar Minuten … aber nmap hat geholfen:

BetroffenerServer# nmap –dns-servers 84.19.188.171 -P0 einedomainimselbenadressbereich.de -p80

Starting Nmap 4.75 ( http://nmap.org ) at 2010-02-26 06:24 CET
Interesting ports on 84.19.191.91:
PORT STATE SERVICE
80/tcp open http

Nmap done: 1 IP address (1 host up) scanned in 13.10 seconds

Im Vergleich dazu ein anderer NS im RZ der KEyweb AG:
BetroffenerServer# nmap –dns-servers 87.118.124.124 -P0 einedomainimselbenadressbereich.de -p80

Starting Nmap 4.75 ( http://nmap.org ) at 2010-02-26 06:25 CET
Interesting ports on ns2.km33332.keymachine.de (84.19.191.91):
PORT STATE SERVICE
80/tcp open http

Nmap done: 1 IP address (1 host up) scanned in 0.11 seconds

Naja, 13.10 sec für eine dns Abfrage istein wenig langsam!

Diese Infos gab ich dann irgendwann gegen 06:00h an die Technik weiter, welche dann freundlicherweise den 84.19.188.171 mal neu gestartet hat und die Auflösung klappte dann wieder super. Mir wurde noch angeraten, auf den Servern jeweils einen eigenen Nameserver laufen zu lassen! Hallo? Wieso brauche ich dann noch ein Rechenzentrum, ich dachte, das wäre im Housingpreis mit drin?  Naja, dachte ich, kann ja mal vorkommen – Hauptsache die Ursache ist beseitigt, Nokia Telefone muss man auch nach 100 Telefonstunden neu starten und alle 3 Wochen mit neuer Firmware bestücken.

Also ersparte ich mir das Umstellen der DNS Einträge auf allen Servern in diesem RZ  für deren reibungslosen Betrieb wir jeden Tag den Kopf hinhalten. Sicherheitshalber informierte ich die Betreiber großer Anwendungen, welche wir programmiert haben. Am 01.03.2010 allerdings sollten auf einem anderen System nur wenige 10.000 Emails versendet werden und – nix ging, denn auch ein MTA benötigt halt einen funktionierenden primären Nameserver. Und wenn der 84.19.188.171 halt zum Montag wieder keine Lust hat aufzulösen, dann wird EMail halt zu Schneckenpost. Etwas gefrustet telefonierte ich dann einfach mit der Technik und bat wiederum um ein Reset der Kiste. Nachts habe ich dann ALLE betreffenden Server umgestellt und den 84.19.188.171 in der DNS Reihenfolge nach hinten verfrachtet.

SLES 11: phpize + php5-dev

Montag, 01. März 2010

Unter dem Standardsourcen des SuseLinux Enterprise Servers 11 von Novell 8DVD1 + DVD2) befindet sich nirgendwo das Paket php5-devel, mit welchem das Kompilerhilfsprogramm phpize mit installiert werden kann. Somit sind pecl Erweiterungen (irgendwas.so für die PHP Extensions) nicht ganz so einfach zu installieren !

Ich fragte beim Novell Support an und bekam die Lösung: einfach die SDK (Software Developer Kit) runterladen, bereits auf der DVD1 befindet sich das Paket php5-devel-5.2.6-50.17.x86_64.rpm.

Um nicht die ganze DVD auf den Server kopieren zu müssen, empfielt es sich hier, das Paket per Hand nachzuinstallieren. Ich lege immer einen Ordner “Quellen” an und kopiere die benötigten Paket dort rein. Da wir ausschließlich 64bit XEON Server verbauen, liegen die Pakete in /DVD-ROM/suse/x86_64/.

Beim installieren von php5-devel per “rpm -i  php5-devel-5.2.6-50.17.x86_64.rpm” fehlen natürlich einige dependencies. Bei mir waren es libxml2-devel und pcre-devel. Einfach alle benötigten Pakete von der DVD kopieren und per rpm nachinstallieren, es fehlen also noch zlib-devel+readline-devel für das libxml2-devel sowie libstdc++-devel um das pcre-devel installieren zu können. Danach können die libxlm2 und die pcre Entwicklerpakete eingespielt werden und dann endlich auch das php5-devel.

Damit steht unter /usr/bin/phpize endlich das benötigte Tool bereit, um das building environment zu generieren. PHPIZE = ”phpize is a shell script to prepare PHP extension for compiling” – nur so kann der gcc php extensions wie die APC.co für den APC-Cache korrekt compilieren.

Weitere Anleitung:

APC 4.0 Cache – Installation, Test und Serverbetrieb