Feuerfuchs 3

Hi!

Nach langem mal wieder was von mir… und dann auch noch eine Veränderung. Bei mir!

Firefox 3 hat mich ja beim ersten Versuch schwer enttäuscht: es ist mir auf Anhieb nicht gelungen einfach eine URL einzugeben. Schöne neue Location Bar 😉

Heute hab ich mal wieder einen Versuch unternommen, den ganzen Spaß zu installieren.

Nach wie vor funktioniert das Upgrade an sich problemlos, mittlerweil gibts aber auch ein paar nette Erweiterungen. Das wichtigste war für mich Oldbar, mindestens genauso toll ist aber Firefox 2 theme for Firefox 3 beta. Ob das bleibt, weiß ich aber noch nicht so genau.

Das praktische an Oldbar ist, dass es nicht das Suchverhalten abstellt, sondern die Darstellung. Man kann problemlos URLs eingeben und erhält „wie früher“ ähnliche URLs als Vorschläge. Zusätzlich aber auch URLs aus den Lesezeichen und wo der die noch so herzaubert. Richtig praktisch, erstrecht wenn man ein Gedächtnis wie ein Sieb hat 😉

Ach ja, und schneller und Speicherschonender ist der auch noch. Und noch nicht einmal abgestürzt 😛

Das wars erstmal wieder von mir… mehr war wirklich nicht los.

cu
Martok

UPDATE: noch was wichtiges: man sollte als W2k-User tunlichst extensions.blocklist.enabled auf false setzen. Ansonsten wird Quicktime durch die Blacklist abgewürgt.

WordPress: wpautop(), der einfachere Weg

Hallo!

Ich melde mich mal wieder, diesmal mit etwas relativ wichtigem. Vor kurzem wurde WordPress 2.6 freigegeben, im Zuge des Updates musste ich mal wieder den wpautop()-Fix einspielen.

Dabei sind mir einige Unzulänglichkeiten aufgefallen, unter anderem dass er sinnlos kompliziert ist 😉

Die neue Version kommt mit grade mal 7 neuen und einer geänderten Zeile aus.

Hier die Diff (wir sind wieder in wp-includes/formatting.php):

@@ -65,10 +65,15 @@
 }
 
 function wpautop($pee, $br = 1) {
+	$preserving = strpos($pee, '<preserve>') !== false;
+	if ($preserving) {
+		$pee = preg_replace_callback('!<preserve>(.*?)</preserve>!is', create_function('$matches', 'return "<revert>".base64_encode($matches[1])."</revert>";'), $pee);
+	}
+
 	$pee = $pee . "n"; // just to make things a little easier, pad the end
 	$pee = preg_replace('|<br />s*<br />|', "nn", $pee);
 	// Space things out a little
-	$allblocks = '(?:table|thead|tfoot|caption|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|map|area|blockquote|address|math|style|input|p|h[1-6]|hr)';
+	$allblocks = '(?:table|thead|tfoot|caption|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|map|area|blockquote|address|math|style|input|p|h[1-6]|hr|revert)';
 	$pee = preg_replace('!(<' . $allblocks . '[^>]*>)!', "n$1", $pee);
 	$pee = preg_replace('!(</' . $allblocks . '>)!', "$1nn", $pee);
 	$pee = str_replace(array("rn", "r"), "n", $pee); // cross-platform newlines
@@ -99,6 +104,9 @@
 	$pee = preg_replace( "|n</p>$|", '</p>', $pee );
 	$pee = preg_replace('/<p>s*?(' . get_shortcode_regex() . ')s*</p>/s', '$1', $pee); // don't auto-p wrap shortcodes that stand alone
 
+	if ($preserving) {
+		$pee = preg_replace_callback('!<revert>(.*?)</revert>!is', create_function('$matches', 'return base64_decode($matches[1]);'), $pee);
+	}
 	return $pee;
 }

Bei der Gelegenheit habe ich den Tag von <nowpautop> in <preserve> geändert, hier gegebenfalls betreffende Posts/Seiten anpassen.

Die angesprochenen anderen Unzulänglichkeiten hatten damit zu tun, dass nur p und br-Tags verhindert wurden. Alles andere wurde trotzdem munter verändert. Jetzt ist das Verhalten das erwartete: per php generierter HTML-Code wird genau so übernommen wie er aus dem Interpreter kommt. Technisch liegt das daran, dass ich jetzt nicht mehr einzelne Zeichen schütze, sondern alles, indem der Code base64-Codiert vor wpautop() versteckt wird.

Viel Spaß damit 😉
Martok

Gute Absicht?

Stross vs. Vinge, gefunden by Isotopp

Neben der (beim Anlesen) sehr guten Geschichte von Vernor Vinge geht es mir hier eigentlich um den letzten Satz, der dann auch den Link enthält.

Die für ihn persönlich furchterregendste Verschwörungstheorie sei jedoch die, dass unsere Politiker tatsächlich ihr Bestes tun, um uns vor etwas so Furchtbarem zu schützen, dass es alle Maßnahmen rechtfertigen würde.

Nun, mein erster Gedanke war „Chronoskop“. Mag daran liegen, dass ich grade vor kurzem mal wieder Asimov gelesen habe. Mag aber auch daran liegen, dass mir diese Vorstellung einfach besser gefällt als die des – hier bereits oft erwähnten – Mastercodes. Aber realistischer? Nicht wirklich.

Zumal man so viel geballte Machtgeilheit wohl kaum spielen kann, selbst wenn sie zur ‚Feindverwirrung‘ dient.

EDIT for the Future: Die Geschichte gibt es mittlerweile nicht mehr frei verfügbar, aber das Internet Archive rettet den Tag: http://replay.waybackmachine.org/20080713123250/http://vrinimi.org/rainbowsend.html

Schluss. Aus. Ende.

Jetzt fange ich doch tatsächlich an zu bloggen. Naja.

Das wars, gestern hatte ich meinen letzten Schultag. Damit hab ich jetzt 12 Jahre Schule hinter mir, kommen nur noch ein paar Wochen Prüfungen.

Irgendwie sollte man sich da freuen, oder?
Aber doof isses schon, schließlich sieht man die meisten Leute nie wieder (ok, zum Abiball, aber danach…) Und wenn einem dann auch noch alle sagen, dass man die Schulzeit vermissen wird… naja, ist klar was dabei raus kommt.

Könnte mir aber vorstellen, dass das grad so gar keinen interessiert, also…

cu
Martok

PS: ich hab übrigens doch mal ein Update gemacht, jetzt werkelt hier WordPress 2.5.

In eigener Sache…

„Der Tod gehört zum Leben“… leicht gesagt. Doch was ist, wenn er kommt?
Er kommt immer zu den falschen.

„Das Leben ist ungerecht, und dann muss man sterben“. Ungerecht ist, dass du sterben musstest.

„Show must go on!“ Ja, gerade für uns, gerade jetzt. Aber kann man einfach so weiter machen?
Ich weiß es nicht. Ich kann es nicht, nicht ohne dich.

Für Dich!

Egal was passiert, du wirst weiterleben, in uns. In den Erinnerungen an all die Jahre, die wir gemeinsam glücklich waren.

RIP, Tina.
Du bleibst unvergessen.

Dieter Bohlen: gebt die Musik im Netz frei!

Ich finde ihn ja normalerweise nicht so toll. Aber bei Kerner (den ich auch nicht mag; Minus mal Minus ergibt wohl doch Plus) hat er am 01.11.2007 etwas wirklich wahres gesagt.

Du kannst doch den Leuten nicht irgendwie sagen „Hier ist ein Hammer, aber jetzt hau den Nagel nicht in die Wand!“

Womit er völlig Recht hat. Denn wer verdient denn an den CD-Brenner-Preisen kräftig mit…

Aber seht selbst:

USB-Kernschmelze!?

USB-Stick

Wer kennt noch die gute alte Mission-Impossible-Serie? „Diese Nachricht zerstört sich in 5 Sekunden von selbst“, gefolgt von zischen und Rauchentwicklung.
Nun, offenbar gehören wir auch zur IMF…

Heute kam nämlich mit der Post neben einigen anderen bestellten Sachen auch ein USB-Stick der Firma CnMemory:

Den wollten wir nach Berichten bei Heise natürlich erstmal testen. Also ran damit an den USB-Port (sehr leichtsinnig, wie wir inzwischen wissen). Wird erst erkannt, dann gibts nen Fehler und er wird doch lieber nicht erkannt. Seltsam, kann ja aber passieren. Also wieder abziehen. Autsch, heiß. Heiß? Warum wird ein USB-Stick heiß?
Und vor allem: wie wird er bitte so heiß:
USB-Stick, geschmolzen. USB-Stick, nochmal geschmolzen.

Direkt über dem Controller ist die Plaste geschmolzen(!), sogar einige Luftbläschen haben sich rausgekocht. Offenbar hat der Controller einen Kurzschluss (UPDATE: den haben wir sogar gesehen… Inzwischen ist der Stick aber schon eine Retoure), der dazu führt dass die kompletten 5V*500mA=2,5W hier verheizt werden. Zum Glück hat die Strombegrenzung ganz gut funktioniert, sonst wäre vielleicht noch die Schnittstelle draufgegangen.

Dabei sahen die Features doch so toll aus. Wäre ziemlich sehr schnell gewesen.
Allerdings weiß ich jetzt auch, wozu die immer so einen Disclaimer drauf haben. Diesem hier fehlt aber ein entscheidender Punkt: Gefahr durch Verbrennungen 🙄

Man kann das ganze natürlich auch positiv sehen: schließlich kann man sich damit prima Kaffee kochen. Einfach ein paar solcher Sticks in den Kaffee gehängt, schon hat man prima Tauchsieder.
Na, wer hat noch kreative Ideen?

UDPATE: Heute ist der Umtausch-Stick angekommen. Interessant an dem ist nicht nur, dass er geht, sondern noch ewas anderes: wer sich die Bilder ganz genau angesehen hat, wird festgestellt haben, dass nur auf einer Seite ein Flash verlötet ist. Auf dem ersten Bild sieht man, dass auf der beschrifteten Seite keiner ist. Unter der „4GB“-Schrift sieht man die leere Lötstelle.
Der neue hat 2 Chips und schreibt – ganz nebenbei – mit beeindruckenden 7 MB/s, also schon mehr als versprochen. Und beim Lesen ist der Unterschied sogar noch größer: 17 statt versprochenen 7MB/s. Schon schick das Ding 😉

Demo1 – Release

Hallo!

Meine angekündigte Demo ist trotz ersten Problemen doch noch irgendwie fertig geworden. In Konkurrenz zu Farbrausch trete ich hier nicht gerade, aber immerhin zeigt sie, dass man mit Delphi auch recht kleine Demos schreiben kann, auch ohne wie blöd zu optimieren. Interessant finde ich ja, dass die ganzen Funktionen die ich in den letzten paar Tagen eingebaut habe sich kaum in der Dateigröße niederschlugen: immer noch 47KByte, nach UPX allerdings.

Musik hab ich allerdings keine drin, was aber nur da dran liegt, dass ich keine Lust hab noch was zu komponieren. Den Tracker gibt es ja in Form von BlitzTracker bereits.

Download hier (42 KByte ZIP)
Einfach auspacken und starten. Wer sie im Vollbild-Modus genießen will, kann treeD.exe mit dem Parameter -fullscreen aufrufen.
Ach ja, und die Wartezeit am Anfang ist kein Crash, sondern da werden die Texturen & das Terrain generiert.

Für die, die es interessiert: der ganze Spaß basiert auf einem Timeline-System, dass Kamerafahrten, Scene-Renderer und Overlay-Renderer entsprechend der aktuellen Zeit (angezeigt als DT im Window-Mode) auswählt und ggf. interpoliert.
Der Inhalt ist übrigens an keiner stelle statisch, jedes mal wenn man die Demo startet, sieht man eine komplett andere Welt 😉

Tja. Dann sagt mal was dazu. Aber bitte nicht nur die künstlerischen Aspekte bewerten, ich weiß dass das nicht sooo der Renner ist… 🙄

mfg
Martok

Prozedurale Texturen….

Mal wieder was von mir 😉

In der letzten Zeit habe ich mich mal wieder einem Projekt aus dem bereich der 3D-Grafik gewidmet. Und zwar bastle ich an einer Demo. Beziehungsweise an einem Testprojekt für ein Delphi-Demo-Framework, so wirklich Demo nennen kann man das heutzutage fast nicht mehr.

Sieht auch alles schon ganz nett aus, aber mit den Texturen hab ich noch so meine Probleme. Prozedurale Texturen sind ja eine ganz tolle Erfindung, aber so gut bin ich dann auch nicht…

Und zwar benutzt mein Framework Callback-Routinen à la

procedure _GroundTexGen(X,Y:single; var Value: TRGBA);

X und Y erstrecken sich von 0 bis 1, sind also gleichwertig den OpenGL-Texturkoordinaten. TRGBA ist ein array[0..3] of single, dessen Komponenten die einzelnen Farben Rot, Grün, Blau und Alpha (hier nicht benutzt) wieder im Bereich von 0 bis 1 enthalten.

Was ich bräuchte wären Texturen bzw. die Prozeduren für Himmel (Y>0.5 -> Oberirdisch), Holz/Baumrinde und „Boden“, also Gras, Erde usw. Wären alles prima Kandidaten für Perlin Noise, aber da blick ich nicht so ganz durch… 😕

Falls jemand Langeweile haben sollte und gern in die Credits möchte… sagt Bescheid!

mfg
Martok