Ich mag schnoddrig-nerdige Blogposts mit (s/f)uck im Titel, daher heute mal der hier: 10 Tips For Optimizing MySQL Queries That Don’t Suck. Sicher nicht brandaktuell, doch Leiderprobte (“Warum dauert der §()!”% das so lange?”) möchten sicher hin und wieder daran erinnert werden.
jQuery hover – Schluss mit Geflimmer
meine Entdeckung des Tages:
jQuery hover Intent Plugin.
Mit der WebCam wird die Absicht des Users erkannt und nur ein Event getriggert wenn der MouseOver wirklich gewollt ist.
Möglicherweise ist es technisch etwas anders gelöst. Aber der Effekt ist gut!
Silverstripe lokalisierte Dates
… und wieder Silverstripe.
Lokalisierte Dates macht Silverstripe nicht out-of-the-box, man muss da ein bißchen was umbauen:
In der _config.php
i18n::set_locale('de_DE'); setlocale (LC_ALL, 'de_DE@euro', 'de_DE.UTF-8', 'de_DE', 'de', 'ge');
Die Silverstripe (2.3.6) Lokalisierung alleine reicht da nicht.
Ich nehme an das wird in 2.4 sich ändern.
Um im Frontend dann sowas zu bekommen : 12 März 2010
Continue reading “Silverstripe lokalisierte Dates”
Next Level Javascript Error Tracking
Exceptionhub protokolliert clientseitig auftretende Javascript Fehler.
* Logs all JavaScript errors (local or remote)
* Provides a stack trace to find the cause in all browsers
* Groups errors by cause
* Development and Production modes
* RSS feeds for errors
Einfach einbinden via Javascript im Seitenheader. Dann kriegt man schöne Statistiken über Javascript Fehler mit Browser und OS Infos, Mail-Notifications usw.
Continue reading “Next Level Javascript Error Tracking”
Fail! Zend Db: Ausgabe eines Update Query
Heute gibt es mal einen Fail!
Vorneweg: das Zend Framework (Version 1.10) wird hier “lose” benutzt, d.h. ohne Bootstrap. (Evtl. kann man da den Query loggen, aber kA)
Die simple Ausgabe eines Update Query zu Debug Zwecken ist mit dem Zend Db Packet anscheinend nicht möglich.
Man konstruiert den Query:
$this->db->update($this->table, $data, 'id = '.(int)$this->data['id']);
Continue reading “Fail! Zend Db: Ausgabe eines Update Query”
Googlemap Zoom-Faktor automatisch berechnen
pushing the boundaries
um den ZoomFaktor auf GoogleMaps dynamisch zu setzen,
je nachdem wie viele Marker man wo hat, kann man GLatLngBounds benutzen.
Continue reading “Googlemap Zoom-Faktor automatisch berechnen”
X-Sendfile + Apache 2 (Ubuntu)
Ein recht verstecktes Feature, das neuere Server, bspw. Lighthttpd + FCGI-Modul bereits “out of the box” unterstützen, ist das anwendungsgesteuerte “Durchschleifen” von großen Dateien via X-Sendfile Header.
Wozu es gut ist und wie man es benutzt,will ich im Folgenden kurz erläutern:
Silverstripe und GeoIp
Silverstripe bzw. das drunterliegende Framework Sapphire hat ja eine GeoIp Komponente, die in dem CMS und auch in einigen Modulen benutzt wird, zB um Länder in Formularen direkt einzustellen.
Was allerdings nirgendwo steht ist, dass dafür das Programm geoiplookup benötigt wird.
Continue reading “Silverstripe und GeoIp”
Die YQL Geo Library
dieses erwähnenswerte Tool ist ein Javascript-Wrapper für die Geocoding Services:
Yahoo Placemaker, Yahoo GeoPlanet, jsonip.appspot.com, IP location tools, W3C Geo location und Flickr.places.findByLatLon.
Die Syntax ist mal denkbar einfach, denn das ganze beschränkt sich auf eine einzige Methode, nämlich:
yqlgeo.get(what,callback)
PHP und Sqlite Transaktionen
Ich bin ja Fan von sqlite, besonders für kleinere Projekte, wo kein hohes paralelles Schreiben zu erwarten ist, also für fast alle kleineren Seiten.
Keine Datenbank Administration, einfach loslegen und schnell ist es auch noch.
Ein paar Krücken gibts aber schon, zB bei Transaktionen (die MySql im Regelfall gar nicht kann ;)).
Ich benutze die in diesem Fall für multiple Inserts, um da Performance rauszuschlagen.
Über diese bin ich letztens noch gestolpert:
1. Es ist keine gute Idee Transaktionen zu stückeln und sequentiell abzuarbeiten.(warum auch immer man auf diese Idee kommt ;))
besser ist: alle Queries zu buffern und dann in einer Transaktion auszuführen.
Denn Transaktionen locken die DB und nach meiner Erfahrung kann das PHP SQLiteDatabase Object den Datenbank Cursor nicht richtig schließen.
Das führt dann zu sowas: “cannot start a transaction within a transaction”
Continue reading “PHP und Sqlite Transaktionen”