Kategorien
PHP Webdeveloper Tools

Online Tool: Regex Generator RegExr – reguläre Ausdrücke finden

Mit dem wirklich gutem online Tool RegExr lassen sich kinderleicht passende Reguläre Ausdrücke finden, die von anderen Usern erstellt worden sind sowie eigene reguläre Ausdrücke entwickeln.

Mit dem PHP Regular Expression Tester lassen sich die Ergebnisse sehr gut online testen:

Bsp: regulären Ausdruck testen auf 3-stellige Zahlen (nicht perfekt, führende Nullen werden nicht ignoriert).

Kategorien
Android Mobil Phonegap/Cordova

Huawei Ideos X3 USB Debugging Tutorial

A product could not be loaded.
A product could not be loaded.


Das Huawei Ideos X3 (U8510 Blaze) ist das sehr günstige Einsteiger Handy für Android Programmierer und Studenten (< 100€).

Zu Beginn müssen die USB-Treiber installiert werden werden. Diese sind auf dem Handy gespeichert. Eine sehr gute Anleitung findet man hier. Alternativ kann man die Treiber auch sehr einfach downloaden und installieren: Download.

Um das USB Debugging beim Huwaei Ideos X3 zu aktivieren, muss folgende Nummer gewählt werden um in das versteckte Menü zu kommen:

*#*#2846579#*#*

20120430-220205.jpgDanach ins ProjectMenu->3. Background setting->2. Log setting

->Log level setting, verbose auswählen.

->Log switch, Log on auswählen

Danach ins ProjectMenu->3. Background setting->6. Dump & Log auswählen

  • Open Dump & Log
  • Changing log switch
  • Open Sleep Log

Ihr Huawei Ideos X3 ist jetzt bereit Debug-Informationen und detailierte Fehlermeldungen an ihre IDE (Eclipse) zu senden.

Zum Testen auf High-End Android Geräten: Lesen Sie: Samsung Galayx S2 Debugging.

Entwickler Handy Empfehlung: Samsung Galaxy Nexus mit Android 4.0

Entwickler Tablet Empfehlung: Samsung Galaxy Tab 2 mit Android 4.0

Kategorien
Android C C++ CodeIgniter Framework iPhone/iOS Java JavaScript Mobil MySQL PHP Webdeveloper Tools Zend Framework

Teil 1: Clean Code – Regeln für guten, sauberen Code

Sauberen und leicht verständlichen Code zu schreiben ist das höchste Ziel in einem guten IT-Projet. Vieles hängt davon ab:

  • Wartbarkeit
  • Einarbeitungszeit für andere Programmierer, versteht man schnell, was einzelne Funktionen erledigen
  • Robustheit bei Änderungen
  • Testbarkeit, fällt alles zusammen, bei kleinen Änderungen, können schnell stabile Updates bereitgestellt werden
  • Popularität bei anderen Programmierern z.B: bei Open Source Projekten, als negative Beispiel sei XT-Commerce genannt

Das sehr zu empfehlende Standardwerk zu dem Thema ist „Clean Code – Refactoring, Patterns, Testen und Techniken für sauberen Code“ von Robert C. Martin. In diesem Artikel werden Kapitel 1 bis 3 behandelt.

Aussagekräftige Namen

Der Namen einer Variable, Funktion oder Klasse sollte sofort erklären, warum Sie existiert, was sie tut und wie sie benutzt wird. Wenn eine Variable einen Kommentar benötigt, drückt Sie ihren Zweck nicht aus.

Bsp:

int d //Anzahl vergangener Tage
besser ist:
int daysSinceCreation;

Aussprechbare Namen verwenden

Keine Konstrukte mit unklaren Abkürzungen wie: int daSiCre anstatt von daysSinceCreation.

Suchbare Namen verwenden

Moderne IDEs machen das Suchen einfach, aber es nützt nichts, wenn man nach dem Buchstaben e einer Laufvariable suchen muss und von Ergebnissen überschwemmt wird.

Variablen Namen mit einem Buchstaben sind nur als lokale Variablen in kurzen Methoden zu verwenden.

Kategorien
PHP XT-Commerce

XT-Commerce addiert keine Mehrwertsteuer Schweiz

Bei Bestellungen aus dem EU-Ausland berechnet XT-Commerce korrekter Weise keine Mehrwersteuer von 19% auf die Preise im Shop. Die Einstufung, ob ein Kunde aus dem Ausland kommt richtet sich nach der Rechnungsadresse, nicht der Lieferadresse. Man könnte also auf de Idee kommen, als Deutscher Kunde einfach eine Schweizer Rechnungsadresse anzugeben und sich das Produkt nach Deutschland liefern zu lassen.

Wer will ,dass Nicht-EU Kunden auch die Mehrwertsteuer zahlen sollen, der muss in der Datenbank folgenden Zellen ändern:

Tabelle: tax_rates

Die passenden Einträge der Spalte tax_rate auf 19 setzen, damit gilt für alle Artikel, die mehrwertsteuerpflichtig sind, dieser Steuersatz und nicht teilweise 0%.

Kategorien
MySQL PHP Webdeveloper Tools

Installation Eclipse PHP PDT Plugin unter Windows7 Tutorial

Zur professionellen Entwicklung gehört auch eine gute IDE. Ich verwende dafür PHP Storm und davor Netbeans, aber viele Entwickler empfehlen das kostenpflichtige Zend Studio bzw. das ähnliche aber kostenlose Plugin für Eclipse von Zend: das PDT-Plugin.

Die Installation von Eclipse incl. Plugin kann sehr einfach im „All-in-one-Package“ durchgeführt werden.

Kategorien
PHP

PHP POP3 Mails aus Postfach auslesen

Um mit PHP an die E-Mails eines Postfaches zu gelangen über POP3, habe ich diese nützliche Testscript geschrieben. Damit lassen sich alle ungelesen E-Mails anzeigen mit Absender, Betreff, Datum und E-Mail-Body.

$mailserver="pop.foo.de";
$port="110/pop3";
$user="name@foode";
$pass="foo";
getEmailsImap($mailserver, $port, $user, $pass);

//open connection to mailbox, read all unread mails
function getEmailsImap($mailserver, $port, $user, $pass)
{
    $imap = imap_open( "{" . $mailserver . ":" . $port . "}INBOX", $user, $pass );
    if ($imap)
     {
        echo "Connected\n";
        $check = imap_mailboxmsginfo($imap);
        echo "Date: "     . $check->Date    . "<br />\n" ;
        echo "Driver: "   . $check->Driver  . "<br />\n" ;
        echo "Unread: "   . $check->Unread  . "<br />\n" ;
        echo "Size: "     . $check->Size    . "<br />\n" ;

        $totalrows = imap_num_msg($imap);
        //iterate through all unread mails
        for ($index = 0; $index < $totalrows; $index++)
        {
            $header = imap_header($imap, $index + 1);
             //get mail subject
            dump("<h1>".$header->subject."</h1>");
             //get mail sent date
            $prettydate = date(DateTime::ISO8601 , $header->udate);
            dump( $prettydate );
            //get email author
            $email = "{$header->from[0]->mailbox}@{$header->from[0]->host}";
            dump( $email );
            //get mail body
            dump( imap_body($imap, $index + 1));
        }
        //close connection to mailbox
        imap_close($imap);
        return true;
     }
     else
     {
         dump("Can't connect: " . imap_last_error());
         return false;
     }
}
function dump($var)
{
    echo "<pre><div align='left'>";
    print_r($var);
    echo "</div></pre>";
}
Kategorien
SEO

Google SERP Description nicht nachvollziehbar

Bei einem Kunden hatte ich das Problem, dass es unpassenden Text in der Google Suche angezeigt wird, der nicht von der Seite stammt, die ich optimieren wollte:

Verleih, An- und Verkauf von gebrauchten CDs sowie Vermietung des dazugehörigen Equipments.

Wie ich herausgefunden habe, kam dieser Text von dem dmoz.org Eintrag.

Um zu verhindern, dass der Text angezeigt  wird, muss man den folgenden Header setzen (für alle Bots):

<meta name="robots" content="NOODP" />

 

Kategorien
Amazon MWS PHP

Amazon MWS Products API Request Limit

Amazon hat ein nicht ganz einfaches Request Limit eingebaut für die ganze MWS API. Allgemein gilt, dass nicht mehr als 10000 Requests pro Stunde getätigt werden können.

Amazon hat den so genannten Leaky Bucket-Algorithmus gewählt, um den Webservice zu entlasten.

Für die MWS Products API, mit der Artikel Informationen von Amazon bezogen werden können gelten die folgenden Limits aus der MWS Products API Referenz (Stand 6.9.2012).

Operation / Maximum Request Quota / Restore Rate
ListMatchingProducts / 20 / 1 per 5 seconds

GetMatchingProduct  / 20 / 2 Items per second

GetMatchingProductForId/ 20 / 1 Item per second (neu)

GetCompetitivePricingForSKU and  GetCompetitivePricingForASIN / 20  / 10 Items per second

GetLowestOfferListingsForSKU and GetLowestOfferListingsForASIN / 20 / 10 Items per second

GetMyPriceForSKU and GetMyPriceForASIN / 20 / 10 Items per second (neu)

GetProductCategoriesForSKU and GetProductCategoriesForASIN / 20 / 1  per 5 seconds

 maximale Requests für ListMatchingProducts proStunde

Es können 20 Requests am Anfang der Stunde gemacht werden, danach müssen die Punkte wieder aufgefüllt werden. Danach muss über die Restore Rate wieder Punkte aufgefüllt werden. Wenn sich jede Sekunde ein Request wieder auffüllt, ergibt das 3600 pro Stunde, im besten Fall, wenn sich die Requests nicht am Anfang der Stunde anfallen, sondern gleichmäßig verteilt über die ganze Stunde.

Insgesamt ergeben sich für  den ListMatchingProducts Request bei einer Restore Rate von 5 Sekunden maximal 6 * 60 = 360 Requests pro Stunde damit. Pro Request können 20 Items mitgeschickt werden, was bedeutet, dass 7200 Artikel abgefragt werden können im Optimalfall.

Kategorien
Webdeveloper Tools

HTML Image Maps Online generieren

Um Image Maps sind Bilder, die in Zonen aufgeteilt werden können und mit Links oder Javascript auf Clicks von Usern reagieren können.

Es ist sehr aufwendig, die klickbaren Bereiche per Hand zu erstellen, deswegen bin ich auf das kostenlose Online Tool Online Image Map Editor gestoßen.

Damit lassen sich Image Maps, wie die folgende erstellen:.

Der generierte Code muss dann nur noch über die map id mit dem usemap-Tag des Bilder verbunden werden und fertig.

Bsp.

<map id="imgmap2012415151851">
    <area shape="rect" alt="" title="" coords="42,580,700,644" href="" target="_blank" />
    <area shape="rect" alt="" title="" coords="48,686,700,748" href="" target="_blank" />
</map>
<img usemap="#imgmap2012415151851">

zend buch, phonegap buch

Kategorien
PHP WordPress

WordPress eigene Farben und CSS Klassen in den Editor einbauen

Wenn man das Backend customizen und dem TinyMCE Editor eigene Farben und Klassen hinzufügen will, sollte man auf das WordPress Plugin Custom Class Selector zurückgreifen.

Das Plugin ist vom Ansatz her gleich mit der Lösung von WDMAC, welche aber nicht als Plugin verfügbar ist, aber genauso funktioniert und genauso aufwendig zu implementieren ist. Der Vorteil des Plugins ist, dass man auf Updates und Anpassungen  hoffen kann und es deswegen bevorzugen sollte.