schwobeseggl.de ein Neigschmecktr in Baden

24Okt/08Off

Relay, ein Verzeichnis-Manager

Online im Verzeichnis rumbrowsen wollte ich schon immer. Nun bin ich beim Lesen über Dependency Injection irgendwie auf relay gestossen. Nunja, leider scheitert das an einer Eigenart von MySQL:

CREATE TABLE IF NOT EXISTS `relay_clients` (
`id` int( 11 ) NOT NULL AUTO_INCREMENT ,
`name` text NOT NULL ,
`display` text,
`path` text NOT NULL ,
PRIMARY KEY ( `id` ) ,
UNIQUE KEY `pn` ( `path` ( 250 ) , `name` ( 250 ) )
);

scheitert mit der Fehlermeldung:

Specified key was too long; max key length is 1000 bytes.
Could not create the table relay_clients

Nun, warum? 250+250 sollten doch weniger als 1000 sein? Jein :)

15Okt/08Off

empty vs. isset vs. array_key_exists

Ich zitier hier einfach mal. Hab ich nämlich nicht gewusst.

The problem is that there are situations where isset() and empty() are
not appropriate checks. For instance, try this:

$test = array('foo' => null);
echo ((isset($test['foo'])) ? 'true' : 'false'); // echoes 'false'!

What about empty()?

$test = array('foo' => null);
echo ((empty($test['foo'])) ? 'true' : 'false'); // echoes 'true'
echo ((empty($test['bar'])) ? 'true' : 'false'); // also echoes 'true'!

What does that mean? It means that if you want to test for the presence
of a key, you can't rely on isset() *or* empty()! array_key_exists() is
the only way to reliably verify that the key is present in the array.

$test = array('foo' => null);
echo (array_key_exists('foo', $test) ? 'true' : 'false'); // echoes 'true'
echo (array_key_exists('bar', $test) ? 'true' : 'false'); // echoes 'false'

Quote von Matthew Weier O'Phinney, Zend Framework Developer

7Aug/08Off

__FUNCTION__ in Java

Unter PHP gibt es sogenannte Magische Konstanten. Die sind prima, wenn man z.B. eine Debugfunktion schreiben will, die an bestimmten Stellen sagt wo sie aufgerufen wurde. In Java sieht das dann so aus:

class Debug
{
  public static void print(String msg)
  {
    java.lang.Exception e = new java.lang.Exception();
    StackTraceElement ste[] = e.getStackTrace();
    System.out.println(
        new Date().getTime() + " " +
        ste[1].getClassName() + " " +
        ste[1].getMethodName() + " " +
        msg);
  }
}

Wird aufgerufen mit:

import mein.tolles.package.Debug;
Debug.print("lalala");

Was hiermit nicht geht ist: getFileName() und getLineNumber(), da diese Information nicht zur Verfuegung steht.

7Aug/08Off

SPL – die Standard PHP Library

Kevin Waterson hat einen laengeren Artikel ueber die SPL geschrieben, inkl. so schoener Sachen wie Iterator und ArrayObjects und (endlich) ein OOP-Zugriff aus Dateisystem via SplFileObject.

Link: http://www.phpro.org/tutorials/Introduction-to-SPL.html

4Aug/08Off

GnuPG mit PHP

Also, ich mag RoundCube Webmail. Allerdings fehlt mir (wie eigentlich in jedem Webmailer) eine Moeglichkeit E-Mails zu verschluesseln. Kurz zur Erklaerung: GnuPG ist ein Programm zur Verschluesselung und/oder Signierung von Daten. Dies koennen prinzipiell E-Mails, Dateien oder sonst irgendwas sein, wir befassen uns aber mal nur mit den E-Mails. GnuPG nutzt ein sogenanntes 'Asymmetrisches Kryptosystem', d.h. jeder Benutzer dieser Systeme hat eine privaten und einen oeffentlichen Schluessel. Asymmetrisch bedeutet hier also, das wir nicht denselben Schluessel verwenden um etwas zu verschluesseln und es danach wieder zu entschluesseln.

31Jul/08Off

PHP

Nun, ich werde eine neue Kategorie einfuegen, diese heisst PHP. Gut, erstmal nix Besonderes, sowas gibts wie Sand am Meer, aber ich will auch dran teilhaben. Deshalb erstmal alle meine Links die mit PHP zu tun haben UND gleich noch was zum Lesen