Das Quiz-Script Framework

Müs­sen alle Online-Tests über­wacht wer­den? (Nein) (!Ja) (!man­che)

Fin­dest du das Test-Inter­face von Mood­le gut? (!Ja) (Nein)

Inter­es­siert dich das Frame­work? (Ja) (!Nein)

Ein­lei­tung

Wenn ihr den obe­ren, natür­lich per Quiz-Script erstell­ten Test bestan­den habt oder auch nicht, dann ist viel­leicht die­se noch recht wenig bekann­te Ent­wick­lung von Felix Ries­te­rer etwas für euch. Die Leu­te von zum.de haben die Mög­lich­kei­ten erkannt und das Quiz-Script mit in ihre Wiki-Platt­for­men inte­griert. Hier gibt es auch Anlei­tun­gen für den Ein­satz. Die Anlei­tung zur Ein­bin­dung in Media­wi­ki ist in der dort skiz­zier­ten Form in mei­nen Augen aller­dings unbrauch­bar – daher unten mei­ne Vari­an­te. Trotz­dem bin ich dar­über über­haupt erst auf die Idee gekommen.

Was ist das Quiz-Script-Framework?

Die Demo­sei­te des Autors zeigt schon­mal, was das Quiz-Script-Frame­work kann. Ich sehe den Ein­satz vor in sprach­li­chen Fächern – end­lich mal etwas für uns… Wer schon ein­mal mit Mono­li­then wie Mood­le Tests erstellt und sich dabei tot­ge­klickt hat, wird das Kon­zept begrü­ßen: Nicht der Web­ser­ver macht die Haupt­ar­beit, son­dern der Brow­ser, indem ein­fach im HEAD jeder belie­bi­gen HTML-Datei drei ein­fa­che Java­Script-Auf­ru­fe dekla­riert wer­den. Des­we­gen ist das Script prin­zi­pi­ell auch in jeder Anwen­dung ein­setz­bar (z.B. in Word­Press, s.o.), die euch ermög­licht, das Tem­p­la­te (meist header.php) zu gestal­ten. Nicht geeig­net ist es für den TinyMCE-Edi­tor, da des­sen Sicher­heits­me­cha­nis­men auch im HTML-Modus die Tags zer­ha­seln, die das Script zum Erken­nen einer Test­sek­ti­on benötigt.

Bei­spiel – Ein­bin­dung in Mediawiki

Schritt 1:

Zunächst braucht ihr die Exten­si­on „Java­script“. Die­se besteht nur aus einer ein­zi­gen Datei namens Javascript.php. Die legt ihr in einen neu erstell­ten Ord­ner mit dem Namen „Java­script“. Das muss ein Unter­ord­ner des Media­wi­ki-Ord­ners „exten­si­ons“ sein. Ihr könnt natür­lich den Datei- und Ord­ner­na­men klein schrei­ben. 

Schritt 2:

In der Datei „LocalSettings.php“ im Stamm­ver­zeich­nis der Media­wi­ki­in­stal­la­ti­on ergänzt ihr ganz unten die Zeile:

include("$IP/extensions/Javascript/Javascript.php");

Schritt 3:

Das Quiz-Script-Frame­work könnt ihr hier gezippt her­un­ter­la­den. Nach dem Ent­pa­cken ent­steht ein Ord­ner „quiz“. Den Inhalt des Ord­ners ladet ihr nun in das Ver­zeich­nis /extensions/Javascript. Da war es schon.

Bei­spiel – Ein­bin­dung in ande­re Scripten:

Alle ande­ren sor­gen ein­fach dafür, dass im HEAD-Bereich fol­gen­de Zei­len auftauchen:

<script src="pfad_zu/quiz/quiz.js" type="text/javascript"></script>
<script src="pfad_zu/quiz/multilingual.js" type="text/javascript"></script>
<script src="pfad_zu/quiz/utf8-normalizer.js" type="text/javascript"></script>

… und schon steht auch dort die Funk­tio­na­li­tät des Quiz-Script Frame­works zur Verfügung.Natürlich klappt das auch auf jeder simp­len HTML-Seite.

Aus­bli­cke

  1. Ich expe­ri­men­tie­re gera­de damit her­um, SuS selbst Online-Recht­schreib­übun­gen inner­halb eines Wikis erstel­len zu las­sen. Das klappt auch mit der 6. Klas­se – Drag&Drop – so kom­plex ist der Code nicht.
  2. Man kann das Script natür­lich ent­spre­chend den eige­nen Vor­stel­lun­gen edi­tie­ren, da es im Quell­text vorliegt.
  3. Per Java­script las­sen sich auch Input-Fel­der eines For­mu­lars vor­be­le­gen – und dann in eine Daten­bank schrei­ben (z.B.) – dann rech­net der Cli­ent und nicht wie bei Mood­le ein PHP-Mons­ter. Baut wer mal ein Modul?
  4. In der vor­lie­gen­den Form ist das Script zum Üben her­vor­ra­gend – für Leh­rer mit chro­ni­scher Kon­trol­li­tis uns Sta­tis­ti­tis abso­lut unge­eig­net (so ste­hen z.B. die Lösun­gen im Sei­ten­quell­text – kann man aber aus­blen­den – wei­ter unten auf der Sei­te)… Die müs­sen doch wie­der z.B. Mood­le nehmen…

Datenschutz und Blog

Alles neu macht der Mai. Ich habe das zum Anlass genom­men, sämt­li­che Plug­ins zu deak­ti­vie­ren, die Daten von Besu­chern die­ser Web­sei­te an Drit­te über­tra­gen – und sei es auch nur anony­mi­siert. Nament­lich habe ich die Plug­ins Akis­met (Spam­schutz) und Word­Press Stats (Web­site­sta­tis­ti­ken) mit sofor­ti­ger Wir­kung deak­ti­viert und durch Pen­dants ersetzt, deren gesam­mel­te Daten hier auf dem Ser­ver ver­blei­ben. Für den Spam­schutz ver­wen­de ich nun­mehr  die Anti­s­pam-Bee und für die Sta­tis­ti­ken schon län­ger par­al­lel Piwik mit dem Plug­in Anony­mi­zeIP. Letz­te­res kann inner­halb von Piwik unter

Ein­stel­lun­gen => Plugins

akti­viert wer­den und sorgt dafür, dass IP-Adres­sen grund­sätz­lich gekürzt gespei­chert sind. Damit ist eine aus­sa­ge­kräf­ti­ge Sta­tis­tik immer noch mög­lich, ohne dass damit ein poten­ti­ell ver­kett­ba­res indi­vi­du­el­les Ele­ment ver­knüpft ist. Die­ses Ver­fah­ren sieht sogar das ULD als unbe­denk­lich an und es wur­de gemein­sam mit den Piwik-Ent­wick­lern erarbeitet.

Bei dem The­ma Daten­schutz wird mei­nes Erach­tens immer ger­ne ver­ges­sen, dass es zwei Arten von Daten gibt: Die­je­ni­gen, die ich von mir frei­wil­lig in das Netz ein­spei­se und die­je­ni­gen, die ich von Drit­ten absicht­lich und unab­sicht­lich durch z.B. tech­ni­sche Inkom­pe­tenz wei­ter­ge­be. Für die ers­te Art mag in mei­nen Augen die Post­pri­va­cy-Debat­te mit Berech­ti­gung geführt wer­den – für Leu­te, die unwis­sent­lich über z.B. Apps mei­ne per­sön­li­chen Daten an Face­book und Co. über­mit­teln, habe ich kein Ver­ständ­nis – noch schlim­mer, wenn das z.B. mit Schü­ler­da­ten pas­siert – schief­ge­hen kann immer etwas – aber so ganz regu­lär ohne vor­he­ri­ge Infor­ma­ti­on, am bes­ten noch unbewusst?

Des­we­gen erscheint mir die­ser nun voll­zo­ge­ne Schritt von mir für mein Blog nur kon­se­quent. Full SSL (https) könn­te auch noch irgend­wann fol­gen… Mal sehen. Dage­gen spre­chen zur Zeit noch die gan­zen ein­ge­bun­de­nen Objek­te exter­ner Sei­ten, die dann hüb­sche Warn­mel­dun­gen im Brow­ser erzeugen…

Apro­pros Post­pri­va­cy – die Sta­tis­tik­da­ten mei­nes Blog sind hier öffent­lich ein­seh­bar – alle IPs haben eine schö­ne 0 im letz­ten dezi­ma­len Triplett…

Videos online schneiden mit YouTube

Wer ein Kon­to bei You­Tube besitzt, kann sei­ne Vide­os auch rudi­men­tär online bear­bei­ten. Man fin­det die­se Funk­ti­on im ein­ge­logg­ten Zustand unter:

http://www.youtube.com/editor

Dort öff­net sich dann fol­gen­de Arbeitsoberfläche:

Oben links fin­det man die eige­nen Vide­os, die man unten in die Time­line zie­hen kann. Dort las­sen sie sich schnei­den (nur Key­frames!), indem man die Bal­ken links und rechts vom Video ver­schiebt, oder auch dre­hen. Vide­os, die sich hin­ter­ein­an­der in der Time­line befin­den, wer­den anein­an­der gereiht. Die Über­gän­ge las­sen sich mit Effek­ten ver­se­hen, die sich ganz oben links neben dem Noten­sym­bol zuwei­sen las­sen. Auch Hin­ter­grund­mu­sik ist mög­lich (mit dem Noten­sym­bol). Natür­lich gibt es kei­ne Echt­zeit­vor­schau und das Ein­rech­nen der Effek­te dau­ert je nach Video schon 30–40 Minu­ten. Dafür ist mir noch kein For­mat unter­ge­kom­men, wel­ches You­Tube nicht gefres­sen und in ein frei­es bzw. übli­ches kon­ver­tiert hät­te. Für die meis­ten Anfor­de­run­gen reicht es mit etwas Übung – gera­de auch für schu­li­sche Zwecke.

Übri­gens:

Sehr prak­tisch ist die Mög­lich­keit, bestimm­te Zei­ten­in­di­zes in You­Tube-Vide­os direkt anzu­sprin­gen. Das funk­tio­niert durch ein spe­zi­el­les Link­for­mat – so muss man nicht gan­ze Vide­os ver­lin­ken, bzw. kann direkt zu den Stel­le sprin­gen, über die man gera­de bloggt. Wie das funk­tio­niert, hat Gabri­el so gut erklärt, dass ich es nicht bes­ser könnte.

Etherpad, nochmal Etherpad

Lighttpd ver­mit­telt jetzt den Kon­takt zu unse­rem Ether­pad, das nur nur unter local­host zu errei­chen ist:

$HTTP[„host“] =~ „^(.+\.)?etherpad.schuldomain.tld“ {

auth.require = ( „“ => ( „method“ => „basic“,
„realm“ => „Ether­pad – Log­in mit Schulnetzwerkdaten“,
„requi­re“ => „valid-user“ )
)

proxy.server = (
„“ => (
„ether­pad“ => (
„host“ => „127.0.0.1“,
„port“ => 9000,
„fix-redi­rects“ => 1
)
)
)

}

Mit­tels HTTP_AUTH, dass gegen den LDAP läuft, ist das Sys­tem nur Netz­werk­nut­zern der Schu­le zugäng­lich (auth.require-Sektion). Das Pro­xy­mo­dul von lighttpd (proxy.server-Sektion) sorgt dann dafür, dass der Brow­ser ohne Port­an­ga­be direkt auf die Pads zugrei­fen kann und dafür, dass die Sub­do­mains für die Team­si­tes funktionieren.

Ich habe die Pads für ein Web­quest zur Regel­fin­dung zur Getrennt- und Zusam­men­schrei­bung in Klas­se 9 ein­ge­setzt. Im ers­ten Teil der Dop­pel­stun­de haben wir eine Regel für eine Zusam­men­set­zung (Adjek­tiv + Verb) anhand von Mate­ri­al selbst erar­bei­tet und for­ma­le Kri­te­ri­en fest­ge­legt. Im zwei­ten Teil der Dop­pel­stun­de habe ich je einer Grup­pe einen Aspekt (z.B. Schrei­bung von Tages­zei­ten) zuge­wie­sen, ein paar hilf­rei­che Sei­ten ver­linkt und kol­la­bo­ra­tiv eige­ne Regel­for­mu­lie­run­gen im Pad erar­bei­ten las­sen.  Die Auf­ga­ben­stel­lung und die Links befan­den sich in einem Moodlekurs.

Am Fol­ge­tag haben wir die Ergeb­nis­se – dies­mal auf Tot­holz aus­ge­druckt – bespro­chen und anhand der Regeln, die sicher for­mu­liert waren, klei­ne Übungs­sätz mit gehäuf­ten Schwie­rig­kei­ten zur Getrennt- und Zusam­men­schrei­bung erson­nen. Die­se Metho­dik war zumut­bar, weil das The­ma für die Klas­se ein „Wie­der­ho­lungs­fall“ ist, es also mehr um eine Reak­tua­li­sie­rung ging.

Ether­pad ver­brauch­te bei 15 akti­ven Cli­ents ca. 200MB RAM und etwa 9% CPU-Zeit – beschaulich…

Etherpad selbst hosten…

… ist mit Ubun­tu sehr, sehr ein­fach – zwei Lakritz­schne­cken lang:

1. Schritt

In die /etc/apt/sources.list muss das Part­ner­re­po­si­to­ry von Cano­ni­cal ein­ge­tra­gen werden:

deb http://archive.canonical.com/ lucid partner

Ein „apt-get update“ bringt die Daten­bank von APT auf den neu­es­ten Stand.

2. Schritt

Das JDK von Sun muss instal­liert wer­den – openjdk will mit Ether­pad nicht.

apt-get install sun-java6-jdk

3. Schritt

Das für die Archi­tek­tur pas­sen­de „*.deb“-Paket von Etherpad.org muss manu­ell her­un­ter­ge­la­den wer­den, da die bereit­ge­stell­te Quel­le für APT von sel­bi­gem nicht akzep­tiert wird. Bei mir ist das Paket für die amd64-Archi­tek­tur das Richtige.

4. Schritt

Die­ses Paket mit dpkg installieren:

dpkg ‑i etherpad_1.1_all.deb (genau­er Name kann varieren)

5. Schritt

Der Pfad im Init-Script on Ether­pad pass­te bei mir nicht. Ich musste

DAEMON_BASE=“/usr/share/etherpad“

set­zen, bevor ein

/etc/init.d/etherpad start

unter mei­ner Haupt­do­main auf Port 9000 Ether­pad präsentierte.

In sol­chen Momen­ten tun mir alle leid, die kei­ne (V)Server admi­nis­trie­ren kön­nen. Ether­pad bedient sich sehr intui­tiv und hin­ter einem HTTP_AUTH mit LDAP-Backend kann mei­ne gan­ze Schu­le jetzt bald kol­la­bo­ra­tiv mit Tex­ten arbei­ten – ohne Tan­te Goog­le. Cool, cool… Viel­leicht bekom­me ich das LDAP-Auth­plug­in noch eincompiliert…

1 12 13 14 15 16 24