Programming is hard
Veröffentlicht am 16.1.2010, 19:10 Uhr
http://writing.bryanwoods4e.com/
MySQL: Delete a subset in a table quickly
Veröffentlicht am 21.6.2009, 14:04 Uhr
Heute mal wieder über einen netten MySQL-Hack gestolpert:
The trick is, that INNER JOIN will ’shrink’ the LargeTable down to the size of the TemporarySmallTable and the delete will operate on that smaller set only, since USING will reference to the joined table.
http://blog.mkoebele.de/2008/07/mysql-delete-subset-in-table-quickly.html
http://dev.mysql.com/doc/refman/5.0/en/delete.html#c9536
Mehr davon bitte…
Elastische Tabstopps
Veröffentlicht am 16.10.2008, 11:26 Uhr
Verdammt interessant, aber gerade keine Zeit hier nochmal komplett separat etwas darüber zu schreiben, deshalb der Verweis auf mein Privat-Blog:
http://blog.janpiotrowski.de/elastische-tabstopps/
PHP: UTF-16 zu UTF-8 konvertieren
Veröffentlicht am 8.9.2008, 11:18 Uhr
Und die zweite Heldentat gleich hinterher:
Eine kleine PHP-Funktion (evtl. unvollständig, bei meinem Anwendungsfall hat es ausgereicht) zum konvertieren von UTF-16-Daten zu UTF-8:
function utf16_to_utf8($str) {Quelle: http://www.moddular.org/log/utf16-to-utf8
$c0 = ord($str[0]);
$c1 = ord($str[1]);
if ($c0 == 0xFE && $c1 == 0xFF) {
$be = true;
} else if ($c0 == 0xFF && $c1 == 0xFE) {
$be = false;
} else {
return $str;
}
$str = substr($str, 2);
$len = strlen($str);
$dec = '';
for ($i = 0; $i < $len; $i += 2) {
$c = ($be) ? ord($str[$i]) << 8 | ord($str[$i + 1]) :
ord($str[$i + 1]) << 8 | ord($str[$i]);
if ($c >= 0×0001 && $c <= 0x007F) {
$dec .= chr($c);
} else if ($c > 0×07FF) {
$dec .= chr(0xE0 | (($c >> 12) & 0×0F));
$dec .= chr(0×80 | (($c >> 6) & 0×3F));
$dec .= chr(0×80 | (($c >> 0) & 0×3F));
} else {
$dec .= chr(0xC0 | (($c >> 6) & 0×1F));
$dec .= chr(0×80 | (($c >> 0) & 0×3F));
}
}
return $dec;
}
Update:
Manchmal sollte ich erst nachdenken, und dann nach Code googlen. Das hier reicht natürlich auch vollkommen aus und ist sicher besser getestet:
$utf8 = mb_convert_encoding($utf16, 'UTF-8', 'UTF-16LE');
File-Encoding erkennen
Veröffentlicht am 7.9.2008, 20:00 Uhr
Mein Held für heute: Mindprod mit seinem Encoding Recogniser. Applet kurz laden lassen, Datei auswählen und einfach Encodings durchprobieren. Funktioniert wunderbar.
Lösung: Maus zu langsam in Adobe Photoshop/Fireworks/… CS3
Veröffentlicht am 12.8.2008, 11:08 Uhr
Systemsteuerung -> Maus -> Registerkarte “Bewegung” -> Haken bei “Beschleunigung in Spielen deaktivieren” entfernen
Und schon hat man die normale Mausgeschwindigkeit auch in CS3-Programmen.
Quelle: http://www.psd-tutorials.de/modules/Forum/11_photoshop/25234-photoshop-cs3-maus-zu-langsam.html
MySQL: The table ‘foo’ is full
Veröffentlicht am 31.3.2008, 14:14 Uhr
Ich muss zugeben, ich war erstmal ziemlich platt. Aber, es gibt ja zum Glück Erklärungen und (mutmaßliche) Lösungen:
http://dev.mysql.com/doc/refman/5.0/en/full-table.html
http://dev.mysql.com/doc/refman/5.1/de/full-table.html
http://jeremy.zawodny.com/blog/archives/000796.html
Das von Jeremy Zawodny vorgeschlagene
alter table foo max_rows = 200000000000 avg_row_length = 50;
funktioniert auch wunderbar. Nun passen nochmal ein paar Gigabyte rein.
IE7 em + float Bug
Veröffentlicht am 4.3.2008, 00:47 Uhr
Immer wieder schön was einem bei der täglichen Arbeit so über den Weg läuft. Stark vereinfacht:
<div style="float:left"><img src=...></div>
<div id="text">Erste Zeile Text. <em>Zweite Zeile Text</em></div>
Das führte im konkreten Fall im IE7 dazu, daß ab der zweiten Zeile der Hintergrund des text-Div vor das floatende Div links gelegt wurde. Natürlich war der verursachende Code lange nicht so einfach, und so habe ich dann doch locker 30 Minuten gesucht und probiert bis ich auf die Idee kam, dass das em der Auslöser sein könnte.
Glücklicherweise hatte schon 2006 jemand dieses Problem:
The other (are you ready for this?) is to remove the <em> element.
I am perplexed. Does anyone have a clue as to what is going on?
Und ein weiterer Leidensgenosse konnte eine passende Lösung liefern:
Yeah. It’s an em bug :-) IE6 has em bugs, too. Try this:
em {zoom: 100%; overflow: hidden;}
http://archivist.incutio.com/viewlist/css-discuss/81647
Google-Refererspam auch bei Adwords-Kunden
Veröffentlicht am 17.2.2008, 21:24 Uhr
Sistrix alias Johannes Beus hat schon vor einigen Tagen in seinem Blog einige Beobachtungen aufgeschrieben:
[…] sowohl Microsoft als auch Google überprüfen mittlerweile Seiten auf Cloaking auf Referrerbasis. Dazu rufen sie die Seiten mit einem Referrer, der so aussieht, als komme der Nutzer über ihre Suchmaschine auf.
Quelle: Referrer-Spam von Google und Microsoft
Ich habe ähnliche Referer entdeckt, allerdings bei Seiten, die nur über Google Adwords beworben werden und eigentlich keinerlei Seiten im Google-Index haben. Eine klassische Cloakinganalyse macht hier also wenig Sinn.
Erstmals tauchten diese Referer am 14.1 auf:
- http://www.google.com/search?hl=en&q=motor+large+ode+be
- http://www.google.com/search?hl=en&q=bedding+map+expenses+custom
- http://www.google.com/search?hl=en&q=car+medal+roads+stromberg
- http://www.google.com/search?hl=en&q=pregnant+wa+registery+website
- http://www.google.com/search?hl=en&q=sound+wolf
- http://www.google.com/search?hl=en&q=seto+Have
- http://www.google.com/search?hl=en&q=shower+leopard+lube
- …
Urpsrung waren die üblichen 72.14.- und 66.249.-IP-Blöcke von Google, als Useragent wurde das harmlose Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) übermittelt. Eigentlich eine Frechheit, denn das Verzeichnis auf das die Adwords-Besucher geleitet werden ist in der robots.txt explizit für Robots verboten. Dass Googles Adbot sich nicht daran hält ist verständlich, aber bei diesem Cloaking-Überprüfungsbot wundere ich mich doch ein wenig.
Ab 1. Februar kam noch eine weitere Variante dazu, über die ich bislang online noch gar nichts gelesen habe. Der Referer besteht nicht mehr aus zufällig zusammengewürfelten englischen Begriffen, sondern setzt sich aus einem wirklich in Adwords gebuchten Keyword und der Domain mit site-Operator zusammen:
- http://www.google.com/search?hl=en&q=site%3Aexample.org+keyword
Die IPs und der Useragent sind die selben.
Mich als Adwords-Kunden ärgert dieses Vorgehen von Google eher weniger, auch die bisherigen Adsbot-Aufrufe haben die Logfiles übermäßig zugemüllt. Für das wirkliche Erfolgstracking mussten diese schon immer herausgefiltert und explizit behandelt werden. Nun habe ich eben einige weitere Regeln hinzugefügt, die auch diesen Anti-Cloaking-Bot erfassen.
Die Hintergründe wären jedoch trotzdem interessant.
Objektiv Sigma 55-200mm / 4-5,6 DC Canon Telezoom zu verkaufen
Veröffentlicht am 17.2.2008, 19:05 Uhr
Meine Freundin hat sich ein neues Objektiv mit mehr Brennweite geleistet und möchte deshalb ihr bisheriges Sigma-Objektiv verkaufen:
http://cgi.ebay.de/ws/eBayISAPI.dll?ViewItem&item=180216630221
