Subscribe to RSS Subscribe to Comments

Mitja Schmakeit

Bereits 0.01% des Tages sind vergangen. Jetzt aber schnell!

WTFJS? WTFPHP?

Es gibt eine nette kleine Seite, die sämtliche Unlogik von Javascript sammelt und auflistet.. nennt sich wtfjs.com.
Das gleiche sollte es unbedingt auch für PHP geben.. in welcher anderen Sprache ist so etwas möglich:

<?php
define(KONSTANTE, 'NOCH_EINE');
define(KONSTANTE, 'hallo');
echo NOCH_EINE;
?>

Die Ausgabe:
hallo

Warum das so ist? Wenn man ein nicht-Schlüsselwort (also fast jede beliebige Zeichenkette) ohne Anführungszeichen schreibt, prüft PHP, ob es eine Konstante mit diesem Namen gibt. Wenn ja, wird der Wert dieser Konstante dafür eingesetzt. Wenn nicht, wird es aus einem unverständlichen Grund wie ein String behandelt. Und da KONSTANTE im Beispiel zuerst noch keinen Wert enthielt, wurde also eine Konstante mit dem Namen ‘KONSTANTE’ angelegt. Beim zweiten mal existierte sie dann, also wurde ihr Wert, ‘NOCH_EINE’, für sie eingesetzt. Schon öhm.. cool.

Bday!

Ich suche ein paar Leute, die schon immer mal ein Online-Adressbuch und Geburtstagskalender haben wollten… oder zumindest einsehen, dass es Sinn macht, solche Daten Online zu lagern, damit man von überall auf der Welt an sie heran kommt, auch wenn das Handy versagt o.Ä.

Ich habe momentan ein Miniprojekt namens “Bday”, welches am Ende genau diese Dinge – und zwar möglichst sicher – können soll. Momentan gibt es noch keine Verschlüsselung, dies wird aber unter den Dingen sein, die demnächst hinzukommen (und zwar symmetrisch per JavaScript, sodass niemand außer einem selbst die Daten lesen kann. Wenn ich _niemand_ schreibe, meine ich damit auch die Router und den Server. Nur man selbst soll diese Daten wieder entschlüsseln können).

Auf jeden Fall suche ich dafür ein paar Alphatester (Die Daten, die gespeichert werden, bleiben natürlich auch erhalten, wenn das Miniprojekt Beta geht, d.h. es ist jetzt schon voll benutzbar und ausfallsicher). Einfach mal hier in die Kommentare schreiben oder mich ansprechen..

Not available

Bin krank. Btw, wie würde es gefallen, das Aussehen des Blogs generell auf sowas umzustellen? Habe ja vor, WordPress ein wenig besser in Joomla einzubinden.

Was ganz anderes: Ich wurde von Peter auf die Möglichkeit hingewiesen, in vip durch diverse Zeichen in der Suche aus dem RegEx auszubrechen und somit Parser-Fehler zu erzeugen. Ich sollte alle Zeichen erwischt haben, die diese Fehler verursachten. Die Suche läuft jetzt auch mit diesen Zeichen. Des weiteren wird “Aufgaben” als Vertretungslehrer in der zensierten Version nun wieder als “Aufgaben.” angezeigt. Außerdem leitet http://mitja.cc/vip (ohne .php) jetzt auf den Vertretungsplan weiter.

Vertretungsplan, die nächste

emte wies mich darauf hin, dass der Vertretungsplan nicht Anonym genug sei und die Namen darauf für Außenstehende zu viele Informationen preisgeben. Ich hatte da bisher nicht drüber nachgedacht, bin aber zu dem Schluss gekommen, dass Datenschutz in dem Fall durchaus sinn macht. Ich habe den VertretungsPlan Improved (vip) ein wenig abgeändert. Folgende Änderungen gab es:

  1. In der normalen Ausgabe werden die Namen der Lehrkräfte bis auf einen Buchstaben nicht mehr angezeigt.
  2. Schülern der BBS-BL darf persönlich die Adresse genannt werden, unter der der vip unzensiert erscheint, d.h. alle Namen vollständig sind. Diese Version ist ohnehin nur dann nötig, wenn man unbedingt wissen will, wen man nun als Vertretungslehrer hat.
  3. Der vip sieht jetzt um einiges besser aus.
  4. Die offizielle Adresse lautet nun http://mitja.cc/vip.php.

Vertretungsplan läuft wieder

Meine XHTML-valide Version des Vertretungsplans unserer Schule läuft wieder.
Zu finden ist er weiterhin unter
http://mitja-schmakeit.de/vip.php
und jetzt auch unter dem noch leichter zu merkenden
http://mitja.cc/vip.php

Danke an Alex (der “<3-Alex” ist gemeint) für das Melden des Fehlers.

Rekursives Array…

Igitt: Die Supervariable $GLOBALS in PHP, die bekanntlich alle definierten Variablen als Arrayelemente enthält, enthält auch sich selbst… >.<
<?php
$i = "Test<br>\n";
echo $GLOBALS["i"];
echo $GLOBALS["GLOBALS"]["i"];
echo $GLOBALS["GLOBALS"]["GLOBALS"]["GLOBALS"]["GLOBALS"]["GLOBALS"]["GLOBALS"]["i"];
?>

Gibt aus:

Test
Test
Test

Was für einen Sinn macht das.. hätte man die Variable nicht als “alle Variablen außer sich selbst” definieren können?

So far, sinnlose Gedanken zum Sonntagabend.

Vertretungsplan

Ich möchte an dieser Stelle nochmal auf den Vertretungsplan unserer BBS Burgdorf-Lehrte hinweisen. Dieser ist unter http://mitja-schmakeit.de/vip.php zu finden. Vorteile meines Scripts:

  • Aufgeräumtes, valides XHTML :-) (Ok, ich weiß, solang ne Seite in _eurem_ Browser funktioniert, wen stört da html? Im vergleich zig Errors bei der Originalseite)
  • Keine nervige auswahl welcher Standort oder ob Rolltext oder nicht
  • Zusätzlich eine Suchbox oben links, mit der ihr beliebige Einträge markieren lassen könnt.. die Sucht nach jedem Text auf der Seite.. also einfach eure klasse eingeben, oder einen lehrer.. und schon wirds markiert.

Wenn jemand ne eigene Homepage hat und auf den Vertretungsplan verlinken möchte, mit einem Voreingestellten Suchwert:
einfach http://mitja-schmakeit.de/vip.php?suche=euresuche benutzen.

Viel Spaß in den Ausfallstunden.

Exec-PHP Test

Dies ist ein Exec-PHP Test.
Ich bin ein Held, ich kann die Zahlen von 1 bis 100 ausgeben..: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
btw: Hab mal ne Archiv-Seite eingebaut. Zu finden im Menü links unter “Pages”.

mcrypt

Ihr, die ihr irgendwann einmal die mcrypt-Funktionen von php nutzen möchtet, merkt euch folgendes: mcrypt_decrypt() bei PHP gibt den String mit einem bis unendlich vielen (warum überhaupt oO?!) terminierenden Null-Char \0 zurück, damit es dem ausgangsstring entspricht muss es also getrim()mt werden. (Und zwar nur mit dem NUL-Zeichen)

<pre><?php
$instr = “Wer das liest ist toll “;
echo “instr: $instr\n”;
$pw = “ganzsicherespasswort”;
$algo = MCRYPT_BLOWFISH;
$mode = MCRYPT_MODE_ECB;
$iv_size = mcrypt_get_iv_size($algo, $mode);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
echo “iv: $iv\n”;
$enc = mcrypt_encrypt($algo, $pw, $instr, $mode, $iv);
echo “enc: $enc\n”;
$outstr = mcrypt_decrypt($algo, $pw, $enc, $mode, $iv);
$outstr = trim($outstr, “\0″);
echo “outstr: $outstr\n”;
echo “instr is “;
if ($instr != $outstr) { echo “NOT “; }
echo “equal to outstr\n”;
echo “instrlen: “.strlen($instr).”\n”;
echo “outstrlen: “.strlen($outstr).”\n”;
?></pre>

(hier steht keine Überschrift)

Der auf http://german-bash.org/29073 beschriebene Regex

(?:^|”)(http|ftp|mailto)*:*(//)*(\w+(?:[\.:@]\w+)*?)(?:/|@)?([^"\?]*?)(?:\?([^\?"]*?))?(?:$|”)

ist Müll und fast keiner der outputs ist zu verwenden (zum überprüfen auf eine richtige URL geht es wohl gerade noch..).

Meiner ist viel toller und gibt noch dazu nur sinnvolle sachen aus :) :

([a-zA-Z]{3,})://([^/]+)(?:.(=?[^\?]*/))*([^\?]*)(?:\?(.*))?

Aber das schreiben des Ausdrucks war für mich leider ein reiner Lerneffekt (soll heißen es war absolut SINNLOS den Mist da zu schreiben), da PHPs parse_url() viel Effektiver und besser arbeitet und ich eigentlich nur nach so einer Funktion gesucht habe :(

Zu viele Kategorien!

Ich finde, dass hier deutlich zu viele Kategorien vorhanden sind. Ich leide zwar nicht unter dem Zwang, wie manch andere Blogs, alles in “Audio”, “Video” und “Texte” zu ordnen, aber die Liste in der linken Sidebar ist ziemlich lang. Da ich mich aber nur schwer von den Kategorien trennen kann, da sie alle ihren Grund hatten, weiß ich nicht, welche überflüssig sind :P

Mit anderen Worten: Sagt mir, welche Kategorien ihr überflüssig findet, bzw. welche eigentlich noch Fehlen (z.B. habe ich heute die Kategorie “Windows” nachgereicht, nachdem es ja schon eine Zeit lang “Linux” gibt.

Apache ab 1.6.5

Wenn ihr irgendwann mal das Problem haben solltet, dass Apache ab Version 1.6.5 einfach nicht Starten will, mit der Begründung

“apache.exe – Fehler in der Anwendung.
Die Anwendung konnte nicht richtig initialisiert werden (0×0150002). Klicken Sie auf “OK”, um die Anwendung zu beenden.”

Dann zieht euch dieses Microsoft Update, und der Indianer tuts wieder. Klappt selbstverständlich auch, wenn Apache als Teil von XAMPP installiert ist.

echo und print unter php

Dieser Artikel hat mir ja sooo weitergeholfen :P (ich habe print() noch nie verwendet und habe auch nicht vor es je zu tun, aber bisher dachte ich immer, es wäre eine Funktion (“function print($s) { echo $s; return 1; }” oder so…)…)

Jaja.. die Gedanken die man halt so hat, während man mal wieder ein wenig im php manual rumstöbert (und darin viel zu viel liest, anstatt sich aufs wesentliche zu konzentrieren), weil man gerade mal wieder auf irgendein Problem bei “SoA Rebirth” gestoßen ist.. ;)

Based on FluidityTheme Redesigned by Kaushal Sheth Sponsored by Web Hosting Bluebook