Mittwoch, 13. Juli 2011
Also nun ist ja MySQL schon durchaus eine Weile in amerikanischer Hand und trotzdem stolpert man immer wieder mal über diesen lästigen Latin-1 Zeichensatz.
Aktuelles Problem war, dass ein eingespielter MySQL Dump einfach unverschämterweise die Umlaute nicht korrekt darstellen wollte, obwohl eigentlich alles in UTF8 war.
Aber halt nur eigentlich, denn des Rätsels Lösung offenbarte sich nach einem Blick auf die MySQL-Systemvariablen.
SHOW VARIABLES WHERE Variable_name LIKE '%character%' OR Variable_name LIKE '%collation%'

Da stand doch unglaublicherweise immer noch latin1
Um dem endgültig ein Ende zu bereiten, muss in die my.cnf folgende Konfiguration eingetragen werden und der MySQL Server neugestartet werden.
[mysqld]
character-set-server=utf8

Sonntag, 19. Dezember 2010
Seit PHP 5 hat man mittels fgetcsv bzw. fputcsv die Möglichkeit komfortabel Array Daten in eine CSV Datei zu schreiben bzw. zu lesen. Kommen die Daten aus einer einer MySQL Datenbank und müssen nicht mehr aufbereitet werden kann man das auch auf Datenbankebene mit einem SELECT erledigen.
SELECT * FROM `foo` INTO OUTFILE '/path/to/dump/foo.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';
Existiert die Datei schon, kommt eine Fehler, da sie aus Sicherheitsgründen nicht überschrieben wird.
Soll der Dateiname dynamisch sein, zum Beispiel mit Timestamp, kann man das, wie hier beschrieben, mit einem Prepared Statement machen.
SELECT @export := concat("SELECT * into OUTFILE '/path/to/dump/foo", DATE_FORMAT(now(),'%Y%m%d-%H%i%s'), ".csv' FROM foo");
PREPARE stmt FROM @export;
EXECUTE stmt;
Sonntag, 10. Oktober 2010
Oh wie schön ist Open Source! Nachdem es in letzter Zeit immer öfter den Fall gab, dass man anstehende, sich wiederholende Aufgaben schön in einem Shell Skript unterbringen konnte… der Programmierer an sich ist ja ein faules Tier
…
War ich es langsam echt leid, Skripte die lokal entwickelt werden, in Zeiten von schmucken Editoren mit syntax highlighting und function lists, nur im VI runterzuhakeln…
ShellEd (Link zum Wiki) scheint für diesen Zweck unter den Eclipse Plugins die erste (einzige?!) Wahl zu sein! Die Installation aus der Paketquelle scheiterte, lokal aus dem ZIP (Download von Sourceforge) installiert, verichtet es seinen Dienst bisher fehlerfrei. Man muss vor der Installation beachten, dass Abhängigkeiten zu DLTK 2.0 und dem Man Page Viewer aus den Linux Tools bestehen. Diese sollten vor dem Plugin zu Eclipse hinzugefügt werden.

Freitag, 8. Oktober 2010
So nachdem es immer noch kein Update gibt und dieser
Bug 326194 – Compare completely broken
wirklich nervig ist. Hab ich nun wieder PHP Development Tools (PDT) 2.2.0 installiert. Der Bug tritt betriebssystemübergreifend auf, sowohl unter Ubuntu als auch beim Kollegen aufm MAC. Ob das Fenster davon auch betroffen ist, weiß ich nicht, gehe aber mal schwer davon aus.
Vorher Version 2.2.1 deinstallieren und net vergessen, denn Haken “Show only latest…” wegzumachen… sonst findet man die Version 2.2.0 nimmer.

Sonntag, 19. September 2010
Current version: 1.0
License: MIT/GPL
contentfader ist ein einfaches jQuery Plugin zum FadeIn/FadeOut von Aufzählungselementen. Die Elemente einer UL Liste werden in Gruppen zusammengefasst. Die Elementgruppen werden in jedem Durchlauf genau einmal eingeblendet, die Auswahl erfolgt zufällig aus den bisher nicht gezeigten Gruppen.
jQuery Plugin – contentfader Projektseite
Dienstag, 15. Juni 2010
Vor Kurzem bin ich über ein sehr nerviges Problem gestossen. Die DOM-Methode innerHTML() ist nicht in der Lage korrektes XHTML auszuwählen. D.h. wenn man Folgendes hat:
<p id="hook">Test<br/>Test</p>
und ein
document.getElementById("hook").innerHTML()
macht, bekommt man
Test<br>Test
und nicht wie erwartet
Test<br/>Test
Es ist auch egal welchen Typ das HTML-Dokument hat. Das Verhalten ist bei allen “selbstschließenden” Tags, wie z.B. br, hr, img usw. dasselbe. Man muss hier leider selbst Hand anlegen.
Mittwoch, 26. Mai 2010
Normalerweise erscheinen alle Meta Daten unter “Benutzerdefinierte Felder”. Möchte man das nicht, weil man eine eigene Meta Box angelegt hat, stellt man dem Paramter ein Unterstrich “_” voraus.
Siehe WordPress Beispiel Function Reference – Making a hidden custom field
<?php add_post_meta(68, '_color', 'red', true); ?>
Dienstag, 27. April 2010
Heute bin ich durch Zufall über einen zweiten Parameter der Callback Funktion von add_meta_box gestolpert, denn ich irgendwie so noch in keinem Manual oder Tutorial gesehen hab. Folgender Callback…
add_meta_box( 'box_name', 'My Meta Box', 'addMyMetaBoxCallback');
function addMyMetaBoxCallback ($post, $meta_box) {
print_r($metaBox);
}
…liefert als zweiten Parameter immer ein assoziatives Array mit den Schlüsseln
id (String), title (String), callback (Array), args (Array)
Array
(
[id] => box_name
[title] => My Meta Box
[callback] => Array
(
[0] => SitePress Object
([...])
)
[args] =>
)
Möchte man jetzt noch ein paar Parameter übergeben braucht man nur ein paar default Parameter ($context = ‘advanced’, $priority = ‘default’) hinzufügen, um als letztes ein Array mit den gewünschten Übergabeparameter setzen zu können.
add_meta_box('box_name', 'My Meta Box', 'addMyMetaBoxCallback', 'page', 'advanced','default', array('foo', 'bar'));
Sonntag, 11. April 2010
Nachdem ich grade die ehrenvolle Aufgabe habe eine Typo3 Version 3.8.1 (ja sowas gibt es wirklich noch im Netz mit PHP 4.4.8(!) ) zu Grabe zu tragen, indem das System auf die Version 4.3.2 angehoben wird, springen mir ab und an allerlei lustige Kuriositäten mitten ins Gesicht!
Send-A-Card
Da ist zB die lustige Extension Send-A-Card (sr_sendcard 2.2.0), die einen gleich mal mit einem herzhaftem “cannot access empty property in [...]/class.tx_srsendcard_pi1.php” begrüßt. Problem ist hier, dass in PHP4 aus unerfindlichen Gründen folgendes mit einer nicht initialisierten Variable funktioniert… in PHP5 (Gott sei Dank) nicht mehr
[..]$this->$subpart[..] #FALSCH
[..]$this->subpart[..] #RICHTIG
Ersetz man das geht auch die Extension wieder…
Indexed Search Engine
Hier waren gleich 2 Sachen schief. Weder die Anzahl der Suchergebnisse war korrekt, noch der Pagebrowser schaffte es die richtigen Links zu generieren. Die korrekten URLs konnten wir mit einem Patch und einem TS Parameter korrigieren, der in das TS Setup jedes Root Templates geschrieben wird
plugin.tx_indexedsearch.browseLinks_setUrl = 1
dann muss noch der Patch bug-1347_03.patch von http://bugs.typo3.org/view.php?id=1347 ins System einspielt werden.
$ patch -p1 -i bug-1347_03.patch // mit --dry-run vorher testen!
Die richtige Anzahl der Suchtreffer zeigte das System als im Root Template Setup folgender Parameter gesetzt wurde
plugin.tx_indexedsearch.search.exactCount = 1
Hallo? Also bei dem Parameternamen hab mich schon gefragt, was das Gschmarre soll… naja nicht ärgern nur wundern…. Typo3 halt…
…to be continued
Sonntag, 4. April 2010
Ich habe gerade versucht unter PHP 5.3 mal schnell xDebug zu installieren. Am einfachsten natürlich per PECL. Allerdings kam hier folgende Meldung bei PHP:
Failed loading /Applications/XAMPP/xamppfiles/lib/php/php-5.3.1/extensions/
no-debug-non-zts-20090626/xdebug.so: dlopen(/Applications/XAMPP/xamppfiles/
lib/php/php-5.3.1/extensions/no-debug-non-zts-20090626/xdebug.so, 9):
no suitable image found. Did find:
/Applications/XAMPP/xamppfiles/lib/php/php-5.3.1/extensions/
no-debug-non-zts-20090626/xdebug.so: mach-o, but wrong architecture
Um xDebug unter OS X 10.6 zu Laufen zu bekommen, muss man folgende Schritte durchführen:
- Sourcen herunterladen und enpacken (http://xdebug.org)
- In das entpackte Verzeichnis wechseln und folgenden configure-Befehl ausführen:
./configure MACOSX_DEPLOYMENT_TARGET=10.6 CFLAGS="-arch i386 -g -Os -pipe \\
-no-cpp-precomp" CCFLAGS="-arch i386 -g -Os -pipe" CXXFLAGS="-arch i386 -g \\
-Os -pipe" LDFLAGS="-arch i386 -bind_at_load"
- Dann noch ein make machen.
- Anschließend ddie .so-Datei unter modules an den gewünschten Platz kopieren.
- xDebug in der php.ini als zend_extension eintragen.
via Some notes on Zend Server CE for Mac OS X – Rob Allen’s DevNotes.