ILTB 2018 – Basteln mit sozialen Netzwerken

So mag ich meine überregionalen Fortbildungen: Einmal ohne Umsteigen mit der U-Bahn von zu Hause aus, mit der Jahreskarte vom Münchner Verkehrsnetz. Diesmal war es der Informatiklehrertag Bayern 2018, der letztes Jahr in Passau war und nächstes Jahr Bayreuth stattfinden wird.

Dieses Jahr fiel der ILTB auf die Osterferien. Denn gleichzeitig fand die – größere – Tagung des MNU statt, eines Verbandes aller mathematisch-naturwissenschaftlichen Fächer, und in die wurde der ILTB integriert. Manche Lehrer und Lehrerinnen mag der Termin abgeschreckt haben, und ich hätte auch meine Urlaubspläne nicht geändert – aber diese Ostern bleibe ich in München, und so passte mir das gut, und viele andere Informatiklehrer und -lehrerinnen waren auch da. Aber klar, wer Kinder hat und mit denen in den Ferien Urlaub macht, der kann zu den Ferienterminen nicht kommen.

Tasche mit MNU-Logo, Kressesamen als Verlagswerbung

Vortrag

Der Tag begann mit einem Vortrag von Prof. Daniel Cremers vom Lehrstuhl für Computer Vision & Artificial Intelligence an der TUM. Das Thema: Wie 3D-Modelle der realen Umwelt für den Computer entstehen. Da gibt es wohl zwei Möglichkeiten: Man scannt die Umwelt mit einem Laser ein. Das ist wohl genau, aber teuer, und eignet sich nur für eine unbewegte Umwelt. Die andere Möglichkeit, die von Cremers verfolgt wird, besteht darin, aus Foto- und Videoaufnahmen ein 3D-Modell zu erstellen. Das ist erst einmal gar nicht so einfach, weil diese Bilder ja nur ein 2D-Abbild darstellen. Aber wie schon bei der Kinect zu sehen, kann man aus mehreren zweidimensionalen Bildern schon rekonstruieren, wie weit ein Bildpunklt von der Kamera entfernt war.

Und so kann man jetzt mit ein oder zwei Kameras zu Fuß oder mit dem Auto oder mit einem Quadcopter eine Strecke entlanggehen, -fahren oder fliegen, und hat danach ein brauchbares 3D-Modell. Wenn man eine Szene filmt, etwa für einen Film, hat man danach ein animiertes 3D-Modell der Szene, farbig, und kann dann eine virtuelle, auch bewegte, Kamera an Stellen platzieren, an denen nie eine echte Kamera war.

Workshop: Socialbotnet

Mit den beiden Workshops, die ich besuchte, hatte ich Glück; sie waren gut und behandelten Themen, die mich interessierten. Im ersten stellte Benjamin Knorr seine Zulassungsarbeit vor, an der er gerade arbeitet: Socialbotnet. Das ist eine Art Twitter im Kleinformat, das man als Lehrer als Server laufen lässt. Man kann sich über den Browser registrieren, an- und abmelden, sein Profil bearbeiten und vor allem Mininachrichten veröffentlichen und die Nachrichten anderer Nutzer liken.

Screenshot Webseite socialbotnet

Das ist aber eigentlich nur die Bedingung für das eigentliche Projekt: Die Schüler und Schülerinnen schreiben Programme (zum Beispiel in Java, unter BlueJ), die sich die aktuellen Mininachrichten vom Server geben lassen, sie eventuell auswerten und auf sie mit eigenen Kommentaren oder Likes reagieren. So etwas nennt man gerne Bot. Man kann zum Beispiel einen Bot schreiben, der sich regelmäßig alle neuen Nachrichten geben lässt und auf diejenigen, die mit „Ich bin ja kein“ beginnen, eine Antwort schreibt: „Bist du doch!“

So etwas Ähnliches habe ich auch mal für Twitter programmiert, denn die echten sozialen Netzwerke bieten genau die gleiche Möglichkeit, programmgesteuert Nachrichten zu lesen und zu verfassen und mit anderen Nachrichten zu interagieren. Das kann gut gemacht sein; ich folge bei Twitter etwa dem MythologyBot, der regelmäßig die Kategorisierung verschiedener mythologischer Motive aus dem Thompson-Index twittert. Noch surrealer ist der MagicRealismBot, der bedachtsam generierte, oft fesselnd abstruse Kurznachrichten – oder Geschichtenvorschläge? – präsentiert.

Aber natürlich kann man auch Bots erstellen, die so tun, als wären sie echte Menschen, und die gezielt auf ausgewählte Nachrichten reagieren – ob sie Falschnachrichten verbreiten oder nur Stimmung machen, sie können zur Manipulation eingesetzt werden, indem sie eine große Zahl an Menschen vorgaukeln, wo keine sind, und gezielt auf bestimmte Nutzergruppen zugeschnitten sind. Wie groß die Gefahr durch diese Bots wirklich sind und ob die Falschnachrichten eher durch tatsächliche Menschen verbreitet werden: anderes Thema.

Technischer Einschub

Ein Programm kommuniziert mit so einem Server im Internet folgendermaßen: Der Server muss erst einmal so eine Möglichkeit zur Verfügung stellen, das heißt dann API (Application Programming Interface). Wenn man zum Beispiel den Server über folgende http(s)-Anfrage aufruft, eine sogenannte GET-Anfrage, manuell oder über ein Programm:

http://localhost:30003/api/posts?limit=5 bzw. auf Benjamins Beispielserver
https://social-bot-net.herokuapp.com/api/posts?limit=5

dann erhält man eine Antwort, nämlich die letzten 5 Beiträge, die im Browser etwas unübersichtlich dargestellt werden, für den Computer aber gut lesbar sind. Häufig sind GET-Anfragen, um Informationen zu erfragen, und POST-Anfragen, um Informationen zu senden. Die genaue Form dieser API variiert von Server zu Server, und auch die Art der zurückgegebenen Daten, beliebte Formate dazu heißen XML oder JSON. Diese maschinenfreundlich formatierte Server-Antwort kann man dann mit dem Programm auswerten.

Habe ich das Programm zum Laufen gekriegt? Ja. Aber wenn man, wie ich, nicht genau weiß, was man tut, ist das gar nicht so einfach. Man muss die Software Git und die Software Maven auf dem Rechner installiert haben. Dann kann man das von der Kommandozeile aus mit zwei Zeilen Code machen. Oder man hat die Entwicklungsumgebung Eclipse installiert, die Git und Maven bereits enthält. Mit Git kopiert man das Projekt aus dem Internet auf den eigenen Rechner (das geht, weil Benjamin wie viele andere auch ihren Code auf diese Weise zu Verfügung stellt). Aber lauffähig ist das Programm dann noch nicht.

Denn ein größeres oder auch kleineres Softwareprojekt entsteht heutzutage nicht mehr dadurch, dass sich ein Team oder auch nur einer hinsetzt und von vorne bis hinten alles programmiert. Vielmehr greift man auf Teilprojekte zurückt, die bereits von anderen erstellt wurden, und baut auf diesen auf. Es muss ja nicht jeder das Rad neu erfinden. Also besteht ein Projekt aus 90% Code von anderen, fremden, Leuten, zu denen 10% eigener Code kommen. Wenn ich den Code meines Projekts jetzt online stelle (und nicht nur das fertige, ausführbare Progamm), damit andere damit arbeiten können, gibt es zwei Möglichkeiten:

  • Ich stelle meine 10% online, und die 90% Fremdcode ebenso. Das macht Arbeit.
  • Ich stelle meine 10% Code online, und vermerke, welche 90% fremde Packackes nötig sind, damit mein Projekt funktioniert. Wer mein Projekt nutzen will, besorgt sich einfach diese 90% von anderswo her. Vielleicht hat er oder sie ja eh schon Teile davon.
  • Es wäre ziemlich umständlich, sich von Hand diese fehlenden Programmteile herunterzuladen. Also gibt es wieder Software, die das für einen tut, so dass ich zu den 10% heruntergeladenem Code sagen kann: Besorge mir bitte die 90% fehlenden Code. Ein solches System, das natürlich noch viel mehr kann, heißt Maven, und das wurde bei diesem Projekt benutzt.

Fazit für den Einsatz in der Schule:

  • Tolle Idee, gutes Design. Inhaltlich sehr interessant für die Schule, zur Zeit 10. oder 12. Klasse.
  • Wenn das Produkt ganz und gar fertig ist, hätte ich gerne das vollständige Programm als Download, nicht unbedingt den Code selber, sondern vor allem die ausführbaren Dateien. Das gibt es noch nicht.
  • Ich habe das Projekt auch nur unter Eclipse zum Laufen gekriegt und nicht von der Kommandozeile aus, das macht den Einsatz in der Schule einen Tick schwerer, aber geht schon. Irgendwann kriege ich das auch mit der Kommandozeile hin.
  • Die Änderungen an der Datenbank noch nicht gespeichert, sondern bei jedem Neustart wird der – allerdings veränderbare – Ausgangszustand wiederhergestellt. Wäre anders schöner, ist aber kein großes Problem.
  • Lieber wäre mir Software in PHP, die ich auch auf meinem gemieteten Server und damit im Internet laufen lassen könnte (auf dem ich keine Java-Programme installieren kann), aber für den Computerraum geht es auch so – vorausgesetzt die Windows-Firewall blockiert das nicht, wie an meiner Schule.

Workshop: InstaHub

Im zweiten Workshop stellte Julian Dorn sein Projekt InstaHub.org vor. (Für das ähnliche Vorgängerprojekt hat Julian 2017 den Preis der GI – Gesellschaft für Informatik – erhalten.) InstaHub ist ebenfalls ein soziales Netzwerk, angelehnt an Instagram. Man arbeitet aber nur im Browser damit, es gibt keine API, um von außen darauf zuzugreifen. Auf der Webseite kann man sich registrieren, an- und abmelden, ein Profil ausfüllen, und Bilder veröffentlichen und verschlagworten – und die Bilder der anderen Benutzer anschauen und mit einem Like-Sternchen versehen. Es geht aber gar nicht darum, dass man das macht; das Netzwerk ist von Anfang an bereits mit 200 Nutzern gefüllt und mit hunderten von Bildern.

Screenshot InstaHub

Vielmehr ist jede Schülerin der (alleinige) Administrator des eigenen InstaHub-Systems. Jeder Schüler kriegt also sein eigenes Netzwerk, das unabhängig von den anderen funktioniert. Als ein solcher Administrator hat man Zugang zur Rückseite des Netzwerks, sozusagen, und zwar insbesondere auf die Datenbank, in der (fast) alle Daten von InstaHub verwaltet werden. Die Datenbank ist vom im Web verbreiteten Typ MySQL, und man kann in der Datenbanksprache SQL – Stoff der 9. Jahrgangsstufe Informatik in Bayern – Anfragen stellen, also etwa:

select name from users where city = 'München' and gender = 'male'

Nach und nach können die Schüler und Schülerinnen weitere vorgegebene Tabellen anlegen (mit Bildern, Kommentaren) und automatisch befüllen und damit komplexere Anfragen über mehrere Tabellen durchzuführen. Außerdem können sie als Administratoren die Inhalte der Datenbank bearbeiten – Nutzer löschen, ihr Passwort ändern oder einsehen (allerdings in gehashter Form, also nicht im Klartext gespeichert), Beiträge der Nutzer ändern, was man als Admin halt so kann, aber nicht sollte.

Habe ich das Programm zum Laufen gekriegt? Ja und nein, wie oben. Mit Git das Projekt aus dem Repository geklont, dann die 90% fehlenden Programmteile hinzugeladen – diesmal nicht mit Maven, sondern mit dem PHP-Äquivalent Composer. Nach Beseitigung meiner Tippfehler problemlos – im Nachhinein ist das alles leicht, wenn man erst einmal weiß, was das ist, was man gerade tut. Allerdings ist das Programm für den Einsatz auf einem echten Webserver gedacht, mit vollem Zugriff auf das benutzte MySQL-Datenbanksystem. Das schließt leider aus, dass das Programm auf meinem billigen gehosteten Server läuft, denn auf die MySQL-Datenbank dort habe ich keinen vollen Zugriff, sondern habe nur 1 Benutzer auf 1 Datenbank, und kann nicht automatisiert weitere Benutzer und weitere Datenbanken erstellen.

Also lasse ich das Programm nicht auf einem echten Server im Web laufen, sondern lokal auf dem Windows-Rechner zu Hause. Dazu muss man einen MySQL-Server installieren, und einen Webserver, und die Sprache PHP, in der viele Programme fürs Web geschrieben sind. So etwas gibt es glücklicherweise vorkonfiguriert unter dem Stichwort XAMPP. Nur gibt es dann immer noch zwei Probleme: Erstens habe ich mit XAMPP vorerst keine Domain oder Subdomain; die Webseite ist vielmehr unter der Adresse http://localhost oder http://127.0.0.1 erreichbar. Aber damit sind keine Subdomains möglich, und die verlangt InstaHub – jeder Schüler kriegt sein eigenes kleines Netzwerk unter einer eigenen Subdomain, also etwa fuhse15.instahub.grg. Aber auch das ist unter Windows möglich, dazu muss man in einer kleinen Textdatei im Windows-Ordner ergänzen, dass Browseranfragen an instahub.grg („GRG“ ist der Name meiner Schule) umgeleitet werden sollen nach 127.0.0.1. Dann kann ich auch tatsächlich einfach http://instahub.grg in den Browser eingeben, obwohl es diese Adresse im Web gar nicht gibt, und lande bei 127.0.0.1, also letztlich dem Webserver unter XAMPP. Leider bringt mir das für die Schule nichts: Zum einen kann ich da nicht in die Windows-Systemdateien eingreifen, zum anderen müsste ich jede mögliche Subdomain von Hand in diese Textdatei eintragen.

Leichter zu lösen ist das zweite Problem, dass der öffentlich zugängliche InstaHub-Ordner logisch auf der obersten Webserver-Ebene und nicht in einem Unnterverzeichnis liegen muss, wie es tatsächlich der Fall ist. Das lässt sich aber durch eine Konfigurierung des XAMPP-System anpassen. Und dieses XAMPP-System kann ich auch in der Schule laufen lassen.

Also werde ich in den sauren Apfel beißen und mir einen ordentlichen Webserver mieten müssen. Denn ausprobieren will ich InstaHub (das dann natürlich InstaMeineSchule heißen würde) schon.

Fazit für den Einsatz in der Schule:

  • Zur Didaktik wieder nichts, weil mir da viel einfällt.
  • Sehr schön: das Design. Mir selber würde es reichen, wenn es auf einer strukturellen Ebene Instagram und dergleichen entspricht, aber angenommen werden solche Projekte von vielen Schülern und Schülerinnen nur dann, wenn sie auch gut aussehen.
  • Lieber wäre mir, wenn eine einzelne Datenbank ausreichen würde. Aber das wäre sehr unpraktisch, umständlich, fehleranfällig und von der Leistung her ungünstig, okay, okay.
  • Installation: Auf einem echten Webserver sicher leichter zu installieren, aber unter Windows kann man – leider nicht für den Schulbetrieb – das ganze schon einmal ausprobieren. Julians Installationsanleitung ist verständlich und man kommt damit auch als verhältnismäßiger Laie zurecht.
  • Man kann auch Julians Server dazu benutzen, muss sich dazu nur bei ihm als Lehrer melden, dann gibt er einem Lehrerrechte auf seiner instahub-Installation, und als Lehrerin wiederum kann man die sich zugeordneten Schüler und Schülerinnen und deren Datenbanken verwalten.
  • Trotzdem erfordert das Eingewöhnungszeit, aber dann kann man schöne Sachen damit machen.

Wieder was gelernt, bei der Fortbildung, und vor allem danach, beim Ausprobieren. Fachliche Fehler sind nicht ausgeschlossen, ich habe viel zusammengefasst und möglicherweise falsch.

Tagged: Tags

3 Thoughts to “ILTB 2018 – Basteln mit sozialen Netzwerken

  1. Hallo Herr Rau,
    ich verfolge als Schüler/Web-/IT-Entwickler/Selbständigen ihren Blog schon eine Zeit lang und wollte Ihnen vielleicht mal uberspace.de nahelegen. Ein Uberspace account ist schnell angelegt, erster monat ist kostenlos, kostet normalerweise 5€, kann aber auch auf 1€ reduziert werden, bietet verschiedene Tools und Programmiersprachen Interpreter, Python, C, GO, PHP, FCGI, Perl, Ruby, NodeJS. Einzig was nicht lauffähig ist und ausgeschlossen wird ist Java. 10GB Gibt es als Speicher, RAM um die 700MB, WordPress läuft gut darauf, zusätzlich können subdomains einfach eingerichtet werden und bei der MySQL Datenbank gibt es nur ein Speicherlimit, ansonsten können unentliche Tabellen angelegt werden. Weiterhin gibt es MariaDB und MongoDB zur Auswahl. Einziger Punkt, an der Kommandozeile kommen sie nicht vorbei.
    Die verschiedenen Versionen von PHP, NodeJs, etc. können per hand manuell eingestellt werden.

    Ich hoffe ich konnte helfen :)

  2. Danke, ich habe von uberspace.de schon viel Gutes gehört, aber mich noch nie damit beschäftigt. Und auf die Kommandozeile freue ich mich, es wird Zeit, dass ich endlich mehr damit mache. (Wenn ich ab und zu zu Linux rüberhüpfe, freue ich mich immer sehr, wie einfach das Installieren und Ausführen dort auf der Kommandozeile geht, und will das mehr machen.)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.