Programmieren

AssociateTag in Zendframework Amazon Anfragen

Posted by Michael Roth on Januar 06, 2012
PHP / No Comments

Wie bereits erwähnt hat Amazon die Product Advertising API geändert. Daher ist nun bei jeder Anfrage eine PartnerId (engl. AssociateTag) notwendig, sonst wird folgende Fehlermeldung ausgegeben:

Your request is missing required parameters.
Required parameters include AssociateTag.

Es gibt zwei Möglichkeit dieses AssociateTag im Zendframework zu setzen. Die PartnerID  kann an die beiden Anfrage itemLookup() und itemSearch() im Optionen-Array mit übergeben werden.

$aws = new RD_Amazon_Query($awsID,'DE',$awsKey);
$item=$aws->category('All')->itemLookup($asin,
                                    array('ResponseGroup' => 'OfferFull, BrowseNodes,Large',
                                          'MerchantId' => 'Amazon',
                                          'AssociateTag' => 'rothdigital-21');

Als Alternative kann die Methode AssociateTag(‚rothdigital-21‘)  benutzt werden um den Wert als Methodenaufruf zu setzten. Wichtig ist, dass die Category bei Anfragen als erstes gesetzt wird und dann erst AssociateTag.

$aws = new RD_Amazon_Query($awsID,'DE',$awsKey);
$item=$aws->category('All')->AssociateTag('rothdigital-21')
                           ->itemLookup($asin,
                                    array('ResponseGroup' => 'OfferFull, BrowseNodes,Large',
                                          'MerchantId' => 'Amazon');

Diese beiden Wege funktionieren mit Zendframework 1.11. Es gibt schon einen Bug-Report, der vorschlägt die PartnerId in den Konstruktor zu übernehmen. Daher kann sich das Verhalten im nächsten Release des Zendframework wieder ändern. Sollten Sie Änderungen feststellen, benutzen Sie einfach hier die Kommentarfunktion.

Tags: , ,

Änderung in der Amazon Product Advertising API

Posted by Michael Roth on November 03, 2011
PERL / No Comments

Seit dem 26. Oktober 2011 ist für das Abfragen von Produktinformationen über die Amazon Product Advertising API die Angabe eine Partner-ID, auch „associate tag“ genannt, notwendig. Alle Anfrage ohne diese Partner-ID liefert folgenden Fehler:

Your request is missing required parameters.
Required parameters include AssociateTag.

Eine Partner-ID kann auf der Seite https://partnernet.amazon.de einfach und kostenlos beantragt werden.

Unter Perl empfehle ich den Einsatz des CPAN Moduls Net::Amazon. Ab der Version 0.61, die am 28. Oktober 2011, erschienen ist, kann beim Konstruktor das Parameter associate_tag übergeben werden. Das Erzeugen des Objekts sieht dann wie folgt aus:

  my $ua = Net::Amazon->new(
      associate_tag => 'YOUR_AMZN_ASSOCIATE_TAG',
      token         => 'YOUR_AMZN_TOKEN',
      secret_key    => 'YOUR_AMZN_SECRET_KEY',
  );

Eine genaue Anleitung ist auf der CPAN-Seite zu finden.

Tags: ,

Deadlock-Erkennung mit Eclipse

Posted by Michael Roth on Januar 25, 2011
Java, Programmieren / No Comments

Bei großen Projekten mit vielen Threads müssen die Zugriffe auf gemeinsame Objekte geregelt werden. Hierfür werden Teile des Java Codes mit einem synchronized Block versehen. Damit kann garantiert werden, dass nur immer ein Thread diesen Block ausführt. Bei mehreren synchronized Blöcken kann die Übersicht verloren gehen. Es entstehen Deadlocks. Die Suche nach diesen ist nicht einfach.

Aber zum Glück bietet Eclipse hier Hilfe an. Falls ein Programm auf Grund von Deadlocks nicht beendet wird, so kann man in der Debug-Ansicht das Programm pausieren. Über die Optionen kann man zusätzliche Informationen über die Monitore und System Threads anzeigen.

Dead Lock Erkennung mit Eclipse
Dead Lock Erkennung mit Eclipse

Dadurch werden die Prozesse, die an einem Deadlock beteiligt sind in der List rot dargestellt und es ist erkennbar welche Locks der Thread erhalten hat und auf welche er noch wartet. Im unteren Bild ist gut erkennbar, dass der main Thread bereits drei Ressourcen hat, aber noch auf die Klasse EventDisptacherImpl wartet.

Dead Locks mit Eclipse erkennen
Am Deadlock beteiligte Prozesse werden rot dargestellt

Mit dieser Einstellung ist das Finden von Deadlocks in Eclipse sehr einfach.

Tags: ,