Für dumm verkauft – EC-Karten

Hier ein­mal eine für mich zen­tra­le Aus­sa­ge in dem gan­zen Desaster:

Der der­zei­ti­ge Work­around, damit die Händ­ler-Ter­mi­nals die betrof­fe­nen Kar­ten wie­der akzep­tie­ren, ist nur ein Down­gra­de vom siche­ren EMV-Ver­fah­ren auf die alten, unsi­che­ren Ver­fah­ren. Dazu wer­den alle „TA‑7.0“-Terminals von den jewei­li­gen Netz­be­trei­bern umkon­fi­gu­riert, damit die­se die Kar­ten nicht mehr per EMV-Anwen­dung anspre­chen, son­dern über die Anwen­dun­gen „elec­tro­nic cash ecc“ oder die magnet­strei­fen­ba­sier­ten Anwen­dung „elec­tro­nic cash Spur 2“ authen­ti­sie­ren. Gera­de den Magnet­strei­fen woll­te man aber mit­tel­fris­tig ablö­sen, um bei­spiels­wei­se Skim­ming-Angrif­fe abzu­weh­ren.(http://www.heise.de/security/meldung/Desaster-mit-EC-Karten-kann-teuer-werden-896988.html)

Eine gro­ße deut­sche Bank schreibt dazu in ihrer Kun­den­in­for­ma­ti­on:

Es besteht kei­ner­lei Sicher­heits­pro­blem für Ihr Kon­to und Ihre Karte.“

So so.Vielleicht bin ich ja doof – Ich lese aus der ers­ten Pres­se­mit­tei­lung über­setzt etwa fol­gen­des her­aus: Ihre Kar­te hat ein Schloss mit einem Sicher­heits­schlüs­sel und eines mit einem Schlüs­sel­bart. Das Schloss mit dem Sicher­heits­schlüs­sel passt nicht mehr zu gän­gi­gen Schlüs­seln, die es öff­nen sol­len, des­we­gen wird nur noch das Schloss für die Bart­schlüs­sel verwendet.

Das ist für die zitier­te Bank kein Sicher­heits­pro­blem. Spannend.

Feh­ler kön­nen über­all vor­kom­men – wobei man sich schon dar­über strei­ten kann, wie ein der­ar­ti­ger Pro­gram­mier­lap­sus sämt­li­che Kon­troll­gre­mi­en und Prüf­ver­fah­ren der deut­schen Kre­dit­wirt­schaft pas­sie­ren konn­te. Wenn ich im Unter­richt oder bei einer Klau­sur­kor­rek­tur einen sol­chen Feh­ler mache, rude­re ich zurück und bie­ge das u.U. auf Kos­ten mei­ner Auto­ri­tät wie­der hin. Auf jeden Fall klä­re ich die Lern­grup­pe aber über die Fol­gen des Feh­lers auf. Sich hin­zu­stel­len und qua­si zu behaup­ten, alles sei wie­der abso­lut in Ord­nung emp­fin­de ich als einen Angriff auf mei­ne Intelligenz.

Wir brau­chen kein Wis­sen mehr. Das stört nur beim Pro­gram­mie­ren. Es ist viel­leicht wirk­lich bes­ser, wenn wir SuS mit den Kom­pe­ten­zen aus­stat­ten, sich die Lösun­gen für künf­ti­ge Pro­ble­me zusam­men­zu­goog­len und zusam­men­zu­netz­wer­ken. Das hilft vor allen Din­gen immer dann, wenn man etwas Neu­es ent­wi­ckelt. Unglaublich.

MoodleMU: Die Zweite (nun geht es definitiv)

War­um es in die­sem Arti­kel geht, erfahrt ihr hier. Die­ser Code läuft, u.a. weil er von Mar­tin Lang­hoff ist. Den Ori­gi­nal­th­read fin­det man hier – hät­te ich man erst auf moodle.org gesucht… Ich habe die dort gepos­te­ten Datei­en noch ein­mal tüch­tig ein­ge­dampft.  Der Aus­gangs­punkt sind wie­der zwei Subdomains:

http://heim.domain.tld

http://schu­le.domain.tld

Der Unter­schied zu mei­ner ers­ten Lösung besteht dar­in, dass im Prin­zip nun  jede Mood­le­instal­la­ti­on ihre eige­ne config.php erhält – über eine dyna­mi­sche scheint es nicht zu lau­fen. Dazu braucht es wie­der­um eine modi­fi­zier­te config.php:

<?php
# Hier gewin­nen wir den ers­ten Domain­teil der Subdomain
$domain_parts=explode(„.“, $_SERVER[‚HTTP_HOST‘]);
$instance=$domain_parts[0];
$ins­tance = preg_replace(„/\W/“, „“, $ins­tance);

unset ($CFG);
$CFG->dirroot=‘/pfad/zum/moodleverzeichnis‘;

// Allow file over­ri­des for our domain

if (file_exists(„$CFG->dirroot/config_“.$instance.“.php“))  {      // Do not edit

include_once(„$CFG->dirroot/config_“.$instance.“.php“);
$CFG->directorypermissions =00777;

} else {

die(‚Ungültige Sub­do­main‘);

}

if (file_exists(„$CFG->dirroot/lib/setup.php“))  {      // Do not edit

include_once(„$CFG->dirroot/lib/setup.php“);

} else {

if ($CFG->dirroot == dirname(__FILE__)) {

echo „<p>Could not find this file: $CFG->dirroot/lib/setup.php</p>“;
echo „<p>Are you sure all your files have been uploaded?</p>“;

} else {

echo „<p>Error detec­ted in config.php</p>“;
echo „<p>Error in: \$CFG->dirroot = ‚$CFG->dirroot‘;</p>“;
echo „<p>Try this: \$CFG->dirroot = ‘ “.dirname(__FILE__).„ ‚;</p>“;

}

die;

}

?>

Neu ist jetzt, dass im glei­chen Ver­zeich­nis wie die config.php jetzt für jedes Mood­le­sys­tem eine Extra­da­tei liegt, in unse­rem Bei­spiel mit den Namen:

config_heim.php

config_schu­le.php

Der Inhalt von config_heim.php lau­tet dann z.B.:

<?php

unset($CFG);

$CFG->dbtype    = ‚mys­ql‘;
$CFG->dbhost    = ‚local­host‘;
$CFG->dbname    = ‚dbna­me‘;
$CFG->dbuser    = ‚dbu­ser‘;
$CFG->dbpass    = ‚dbpasswd;
$CFG->dbpersist = false;
$CFG->prefix    = ‚mdl_‘;
$CFG->wwwroot   = ‚http://heim.domain.tld‘;
$CFG->dirroot   = ‚/pfad/zu/moodle‘;
$CFG->dataroot  = ‚/pfad/zum/datenverzeichnis‘;
$CFG->admin     = ‚admin‘;

?>

Also ein­fach die obe­re config.php ein­set­zen und für jede Instal­la­ti­on eine eige­ne config_name.php-Datei anle­gen. Das läuft hin­ter einem Rever­se Pro­xy, auf nor­ma­lem Web­space, auf einem mana­ged Ser­ver – wirklich.Eine Bei­spiel­in­stal­la­ti­on (pro­of of con­cept) gibt es unter den Links:

http://moodle.riecken.de

http://testmoodle.riecken.de

Bei­de Sys­te­me lau­fen unter der glei­chen Code­ba­sis hin­ter einem Rever­se Pro­xy auf einem lighttpd-Web­ser­ver mit PHP als fastCGI.

Dort konn­te ich die Code­ba­sis unter /pfad/zu/moodle tat­säch­lich für belie­big vie­le Mood­les nut­zen und hat­te völ­lig freie Wahl bei  z.B.  dem Pfad zum /mood­le­da­ta-Ver­zeich­nis oder beim Daten­bank­na­men – was zusätz­lich einen klei­nen Sicher­heits­ge­winn bedeu­tet. Mei­ne voll­stän­dig dyna­mi­sche Lösung aus dem vor­he­ri­gen Arti­kel fand ich zwar ele­gan­ter, aber wenn Mood­le das nicht will…

Viel Spaß damit!

MoodleMU: Die Erste…

Ein ganz simp­le Metho­de, um meh­re­re Mood­le­sys­te­me mit einer ein­zi­gen Code­ba­sis auf dem glei­chen Web­space zu betrei­ben, führt über eine dyna­mi­sche config.php. Vor­aus­set­zung ist, dass die Mood­le­da­tei­en in einem Ver­zeich­nis auf dem Ser­ver lie­gen, das ich ein­fach ein­mal „foo“ nen­ne. Auf die­ses Ver­zeich­nis müs­sen meh­re­re Sub­do­mains zei­gen, wie sie in fast jedem Web­space­pa­ket inklu­diert sind z.B.

http://heim.domain.tld

http://schu­le.domain.tld

Jetzt wird die config.php so modi­fi­ziert, dass sie in Abhän­gig­keit von der auf­ge­ru­fe­nen Sub­do­main die für Mood­le essen­ti­el­len Varia­blen anders setzt. Hier ist das voll­stän­di­ge Code­bei­spiel, was bit­te als Denk­an­stoß ver­stan­den wer­den soll, auch wenn es viel­leicht sogar so läuft:

Wei­ter­le­sen

Tabellenkalkulation: Klassenarbeiten (fast) komplett in OpenOffice korrigieren

Nach­dem es sehr vie­le ver­schie­de­ne Ansät­ze dazu im Netz gibt, noch ein­mal mein Senf dazu. Ich kom­me auf die­se Art und Wei­se sehr schnell durch mei­ne Che­mie­ar­bei­ten und auf­wän­di­ge Nach­kor­rek­tu­ren durch for­ma­le Feh­ler ent­fal­len dadurch fast voll­stän­dig, da die Tabel­len­kal­ku­la­ti­on die Erb­sen zählt.  Mir ist es immer sehr wich­tig, weit­ge­hend dyna­misch kor­ri­gie­ren zu kön­nen, d.h. ich möch­te mir auch Wege offen­hal­ten, beson­de­re Lösungs­an­sät­ze auch im Rah­men mei­nes Erwar­tungs­ho­ri­zonts zu wür­di­gen. Außer­dem möch­te ich auf Schluss ein­fach nur noch dru­cken und unter­schrei­ben. Mein Tabel­len­blatt weist fol­gen­de Struk­tur auf:

Wei­ter­le­sen

Tabellenkalkulation: Aus Prozentwerten direkt Noten berechnen

Dabei hilft die Funk­ti­on SVERWEIS(). Dazu braucht es erst­mal eine Matrix (also einen Teil einer Tabel­le in einer belie­bi­gen Tabel­len­kal­ku­la­ti­on), die wie folgt aus­se­hen könnte:

A B C
1 Pro­zent­wert Note nume­risch Note ver­bal
2 0 6 unge­nü­gend
3 20 5 man­gel­haft
4 50 4 aus­rei­chend
5 64 3 befrie­di­gend
6 77 2 gut
7 90 1 sehr gut

Über die Zuord­nung von Pro­zent­be­rei­chen zu Noten spre­chen wir jetzt nicht – das ist von Fach zu Fach / Stu­fe zu Stu­fe  eh indi­vi­du­ell unter­schied­lich. Wich­tig ist, dass die Noten auf­stei­gend ange­ord­net sind. Fer­ner sei ange­nom­men, dass das Feld D42 (Per Anhal­ter durch die Gala­xis) den Pro­zent­wert der vom Schü­ler erreich­ten Punkt­zahl ent­hält.  Die Syn­tax von SVERWEIS() sieht erst­mal so aus:

SVERWEIS(Such­kri­te­ri­um; Matrix; Index; Sor­tier­rei­hen­fol­ge)

Unser Such­kri­te­ri­um ist der Pro­zent­wert der erreich­ten Punkt­zahl, also D42. Die Funk­ti­on sucht nun inner­halb eines Daten­be­reichs (einer Matrix), nach einem Wert, der mit unse­rem Such­kri­te­ri­um in der glei­chen Zei­le (Index) steht.  Die Matrix ist hier der Bereich A2 bis C7, oder bes­ser gesperrt $A$2 bis $C$7, da die Funk­ti­on ja an ver­schie­de­nen Stel­len der Tabel­le zum Ein­satz kommt und hin­ein­ko­piert wer­den wird – es gibt ja nicht nur eine Schü­ler­ar­beit zu beno­ten. Index gibt die Spal­te an, in der der Wert steht, der der Pro­zent­zahl zuge­ord­net wer­den soll. Die Sor­tier­rei­hen­fol­ge  1 bzw. wahr gibt an, dass die Wer­te auf­stei­gend sor­tiert sind.

Will ich den Pro­zent­wert in eine Note umrech­nen, gilt für unser Beispiel:

SVERWEIS(D42;$A$2:$C$7; 2; 1)

Über­setzt:

Suche im Daten­be­reich A2 bis C7 in der zwei­ten Spal­te (Index) nach einem Wert („mache einen Ver­weis“), der zum Wert von D42 passt und schrei­be ihn in Zel­le. Er passt so lan­ge, wie er den nächst­fol­gen­den Wert nicht über­schrei­tet (auf­stei­gen­de Sor­tie­rung).

Will ich den Pro­zent­wert in eine ver­ba­le Note „umrech­nen“, gilt für unser Bei­spiel entsprechend:

SVERWEIS(D42;$A$2:$C$7; 3; 1)

Nicht dass das nötig wäre: Man kann so nach­träg­lich in der Matrix Pro­zent­gren­zen ändern und im gan­zen Tabel­len­blatt pas­sen sich dann die Noten von Geis­ter­hand an.

Wie so ein Tabel­len­blatt bei mir aus­sieht (das bekom­men die SuS als unter­schrie­be­nen Aus­druck), zei­ge ich noch­mal bei Gele­gen­heit. Auf die­se Wei­se kann ich mich nicht mehr ver­zäh­len und bei den Noten ver­tun – prak­tisch und zeit­spa­rend, denn die Tabel­len­kal­ku­la­ti­on arbei­tet für mich und ich muss  nur den jewei­li­gen Ein­zel­aspekt im Auge haben. Ich fin­de es fas­zi­nie­rend, dass ab einer gewis­sen Punkt­zahl ein­fach ein Wort „umspringt“ – das hat etwas von Levels in einem Jump&Run-Spiel und mit­fie­bern tue ich dabei auch gele­gent­lich. Man muss übri­gens kei­ne Pro­zent­wer­te neh­men – das klappt auch bei Punk­te­gren­zen und natür­lich im Punk­te­sys­tem der Ober­stu­fe bei ent­spre­chen­der Erwei­te­rung der Matrix.

Und ja – ich ste­he auf far­bi­ge Kreide…

1 93 94 95 96 97 150