Mal was positives heute: es gibt einen neuen Blogger. BenBE teilt uns jetzt auch seine bescheidenen Gedanken mit 😉
Und beim gegenseitigen verlinken ist uns dann folgendes aufgefallen: sowohl BenBE’s humble thoughts als auch Martok’s Place enthalten…. na? Genau, einen Apostroph.
Die große Frage: ist das da eigentlich ein Deppenapostroph oder nicht? Also mal googeln. Und was sagt uns der 5. Treffer? Es gibt eine Wikipedia-Artikel zu Englischen Grammatik, in Länge und Breite 😯
Wozu braucht man denn sowas?
Horden von Englischlehren zittern in Angst um ihre Jobs!
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;
}
@@ -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.
Den aktuellen Querelen um SA:MP kann man immerhin ein positives abgewinnen: Ich habe mich dazu entschieden, eine Kategorie dafür zu erstellen.
Und bitteschön, da ist sie: SA:MP San Andreas Multiplayer
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…
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… 🙄
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!
Mal davon abgesehen, dass ein Anti-Virenprogramm meistens eher hilft…
User:
Ehm nachdem ich heute meinen PC das zehnte mal wegen Viren formartiert habe hab ich die Schnauze richtig voll ^^
Ich habs nämlich schon mit Norton Internet Security versucht und mit Avira Antivir Clasic.
Kann mir einer ein Virenprogramm sagen was kostenlos ist aber gut ? :wacko:
Ich:
BRAIN 1.0 …
User:
Hmmm wo kann man das downloaden ? weil wenn ich das google dann komm ich auf ne seite wo der download link is aber da steht du hast die seite net gelesen oder nicht verstanden oder dir fehlt ein elementarer teil oder so -.- für mich is das eher ein witz weil da stand über 6 milliarden downloads wenn die welt nur 6 milliarden menschen hat und net jder hat ein pc für das downloaden -.-
Marcus dazu, als ich es ihm gezeigt hab: „kein Kommentar“.
Eigentlich hab ich den ja schon länger in meiner ICQ-Liste… aber nachdem ich mich fast weg geschmissen hab grade bei einigen Dialogen, sag ich euch jetzt auch mal was über diesen Chatbot. Zuerst aber der Link: Das Brain – Chatbot
Brain ist ein deutschsprachiger selbstlernender Chatbot. Brain besitzt künstliche Intelligenz: Während du mit ihm chattest, lernt er ständig hinzu – er merkt sich dabei jedes von dir geschriebene Wort!
Dadurch gibt Brain zum Teil verblüffend passende Antworten, manchmal aber auch völlig abwegiges, oder einfach nur bizarres, amüsantes und witziges.
In einer Nacht-und-Nebel-Aktion hab ich uns ein Forum beschafft. Es ist über den Link „Forum“ (oh Wunder) oben rechst zu erreichen.
Ich hoffe ja, dass da irgendwann mal ne Community draus wird. Ich scheine ja nicht wenige Leser zu haben, aber kaum einen von denen kenne ich. Das soll sich jetzt mal ändern 😉