Copying sources and texts (also in parts) for publishing without our permission is NOT ALLOWED. We are fed up with finding our work on other sites (like stackoverflow).
Das Kopieren von Quellcode und Texten (auch in Auszügen) ist nicht erlaubt. Wir haben es gründlich satt, unsere Arbeit auf anderen Webseiten zu finden.

Copying for non-public usage is allowed.           Das private Kopieren und Benutzen ist natürlich erlaubt und erwünscht.
30. Jan 2009
Teaser

cakePHP: Datenverkehr / Datenschnittstelle debuggen

In der folgenden Datei muss die protokollierung eingefügt werden:

/cake/libs/model/datasources/dbo_source.php

Dort finden Sie die Funktion “execute($sql)”.

Diese müssen Sie (wie im folgenden Beispiel gezeigt) erweitern:

function execute($sql) {

  $handle = fopen(@"C:\log.txt", "a");
  fwrite($handle, $sql);
  fwrite($handle, "\n-----\n");
  fclose($handle);
  $t = getMicrotime();

  [...]

In diesem Beispiel werden alle Datenbankzugriffe der cakePHP Anwendung in der Datei “C:\log.txt” protokolliert.

Hinweis:

Diese Ergänzung sollte nur zu Debuggingzwecken und nur temporär eingesetzt werden, denn Sie kann die Performance einer Anwendung verschlechtern. Das liegt dan den Schreibzugriffen auf die Festplatte – diese Zugriffe benötigen (im Vergleich zu anderen Speichermedien) viel Zeit.

Natürlich können Sie die Logeinträge noch um weitere Informationen (z.Bsp. Zeitstempel o.ä.) ergänzen.

30. Jan 2009
Teaser

PHP: Array kürzen & bearbeiten

Mit dem Befehl “array_slice()” können Arrays verkürzt werden. Dabei kann durch die Parameter festgelegt werden, ob das Array am Anfang oder am Ende oder am Anfang und Ende gekürzt wird:

Die Beispiele arbeiten alle mit dem folgenden Grundarray:

$alt = array("A","B","C","D","E","F","G","H","I");

Array am Anfang kürzen

Befehl:

$neu = array_slice($alt, 2);

Ergebnis:

$alt : "A","B","C","D","E","F","G","H","I"
$neu :         "C","D","E","F","G","H","I"

Array am Ende kürzen

Befehl:

$neu = array_slice($alt, 0, count($alt) - 3);

Ergebnis:

$alt : "A","B","C","D","E","F","G","H","I"
$neu : "A","B","C","D","E","F"

Anfang und Ende kürzen

Befehl:

$neu = array_slice($alt, 4, count($alt) - 3 - 4);

Ergebnis:

$alt : "A","B","C","D","E","F","G","H","I"
$neu :                 "E","F"

Info:

Der Befehl kopiert ab Array-Position 4 die folgenden 2 Elemente:

Die Länge von $alt ist: count($alt) = 9
Dadurch ergibt sich: 9 – 3 – 4 = 2

28. Jan 2009
Teaser

PHP: Vergleichen von ähnlich klingenden (phonetisch gleichen) Wörtern

Die Namen “Maier”, “Mayer”, “Meier”, “Mayr” und “Meyer” klingen gleich bzw. sehr ähnlich.

Um solche Wörter zu vergleichen und Ähnlichkeiten feststellen zu können, nutzen Sie die Funktion “soundex()”:

echo soundex("Maier");

Für jede der Schreibweisen erhalten Sie den Wert “M600” – und dadurch können Sie zur Laufzeit die phonetische Ähnlichkeit von Wörtern berechnen.

Zur Kontrolle können Sie meinen Vornamen (“Malte”) testen:

echo soundex("Malte");

Das Ergebnis: “M430” – also nicht sehr weit weg von “Meier”, aber eben doch deutlich zu unterscheiden.

23. Jan 2009
Teaser

cakePHP: Timeout setzen / Zeitlimit erhöhen

Um in cakePHP (PHP) die maximal verfügbare Ausführungszeit eines Scripts zu verändern, nutzen Sie

set_time_limit(600);

Dieser Befehl setzt die max. Laufzeit des Scriptes auf 10 Minuten (= 600 Sekunden).
Diesen Befehl können Sie z.Bsp. zur Behebung der folgenden Meldung nutzen:

Fatal error: Maximum execution time of 60 seconds exceeded in /test.php on line 5
23. Jan 2009
Teaser

cakePHP: Keinen View nutzen

Wenn nur eine Funktion ausgeführt werden soll, ohne dass anschließend ein View angezeigt wird setzen Sie in der entsprechenden Funktion einfach die folgenden beiden Variablen:

$autoLayout = false;
$autoRender = false;

Damit können Sie natürlich auch die Fehlermeldung “Missing View …” unterdrücken.

23. Jan 2009
Teaser

Text mit Tags (Platzhaltern) formatieren

Sie möchten in einem Text definierte Bereiche (Tags) durch HTML Code oder andere Formatierungen ersetzen lassen und dabei selbst die Sequenzen (Namen, Format, …) bestimmen ?

Der folgende Codeschnipsel kann Ihnen die Lösung oder eine Vorlage bieten:

function FormatText($text) {

    // Definition der eigenen Tags (Formatierungsbefehle)
    $tags = array(
        'bold' => '/\[b\](.+)\[\/b\]/is',
        'center' => '/\[center\](.+)\[\/center\]/is',
        'quote' => '/\[quote\](.+)\[\/quote\]/is',
        'url' => '/\[url](.+)\[\/url\]/isU',
        'urltext' => '/\[url=(.+)\](.+)\[\/url\]/isU',
        'email' => '/\[email\](.+)\[\/email\]/isU',
        'img' => '/\[img\](.+)\[\/img\]/isU'
    );

    // Definition der HTML Tags
    $replace = array(
        'bold' => '<span style="font-weight: bold">$1</span>',
        'center' => '<center>$1</center>',
        'quote' => '<blockquote>$1</blockquote>',
        'url' => '<a href="$1" border="0">$1</a>',
        'urltext' => '<a href="$1" border="0">$2</a>',
        'email' => '<a href="mailto:$1">$1</a>',
        'img' => '<img src="$1">'
    );

    // Ersetzen der entsprechenden Passagen durch die HTML Tags
    return preg_replace($tags, $replace, $text);
}

Der Beispielcode in der Praxis:

Ihr Text mit den Formatierungstags:

$text = "Meine bevorzugte [b]Hilfeseite[/b] heißt [url]http://www.YourHelpCenter.de[/url]";

Wird mit dem folgenden PHP Befehl umgewandelt:

$html = FormatText($text);

Und so sieht das Ergebnis (der String in $html) aus:

Meine bevorzugte Hilfeseite heißt http://www.YourHelpCenter.de

Eine Übersicht der o.a. Formatierungen gibt Ihnen der folgende Beispielcode.
natürlich lassen sich die Tags auch verschachteln oder kombinieren.

$demo = "[b]Fett[/b]
         [center]Zentriert[/center]
         [quote]Zitat[/quote]
         [url]http://www.yourhelpcenter.de/category/cakephp/[/url]
         [url=http://www.yourhelpcenter.de]Hier finden Sie kostenlose Hilfe und Tipps[/url]
         [email]info@yourhelpcenter.de[/email]
         [img]http://www.google.de/intl/de_de/images/logo.gif[/img]";

echo FormatText($demo);
07. Jan 2009
Teaser

Eclipse: Java Heap Error beheben (lösen)

Wenn Sie unter Eclipse größere Dateneien in ein Projekt laden (z.Bsp. via SVN), dann kennen Sie ggf. den “Java Heap Error”.

Um das Problem zu beheben, erhöhen Sie die Werte in Ihrer “eclipse.ini” wie im folgenden Beispiel angegeben:

-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
512m
-vmargs
-Xms40m
-Xmx512m
07. Jan 2009
Teaser

Excel Spaltenname aus Nummer berechnen (A, B, .., AA, AB, … ZZ)

Wenn Sie aus einer Nummer den entsprechenden Spaltencode (wie aus der Tabellenkalkulation bekannt) zu berechnen, hilft Ihnen meine folgende PHP-Funktion weiter.

A, B C, D, …, Z, AA, AB, AC, …, AZ, BA, BB, BC, … ZZ

Sie ist sehr einfach auch auf andere Programmiersprachen anzuwenden.

function getExcelColCode($col) {
  return ((int)(($col-1)/26) > 0 ? 
             chr((int)(($col-1)/26) + 64) : "") . 
             chr($col - ((int)(($col-1)/26) * 26) + 64);
}

Oder ein wenig ausführlicher zum Nachvollziehen:

private function getExcelColCode($col) {
   $factor = (int)(($col-1)/26);

   $chr2 = chr($col - ($factor * 26) + 64);
   $chr1 = ($factor > 0 ? chr($factor + 64) : "");

   return $chr1 . $chr2;
}