Schockt mich doch nicht!

Ihr erinnert euch vielleicht: Irgendwann zu Beginn der Semesterferien habe ich die Klausur in „Betriebssysteme, Rechnernetze und verteilte Strukturen 2“ geschrieben. Und später habe ich dann festgestellt, die Klausur mit einer 2,3 bestanden zu haben. Nun, was mich damals schon geärgert hatte, war die Tatsache, dass die Klausurergebnisse ausschließlich an der Uni ausgehängt wurden. Sie wurden nicht online gestellt – was ich bei einem Lehrstuhl im Fachbereich Informatik irgendwie nicht nachvollziehen konnte…

Nun, ich hatte damals auf einen Aushang am Campus Süd geschaut, um meine Note in Erfahrung zu bringen. Gestern beim Aufräumen nach dem Karaoke-Abend fiel mir dann auf, dass ein ebensolcher Aushang auch im Informatik-Neubau zu finden ist. Das coole an der Sache ist jedoch, dass auf *diesem* Aushang meine Matrikelnummer mit einem „n.b.“ für „nicht bestanden“ geschrieben steht…

Ein Blick in meinen Online-Notenspiegel beim ZfS hat mich dann insofern beruhigt, als dass dort auch eine 2,3 eingetragen steht. Aber wie kann soetwas denn bitteschön passieren? Zwischen einer 2,3 und einem „nicht bestanden“ (also schlechter als 4,0) liegt dann ja doch ein kleiner Unterschied… Ich glaube, ich werde morgen mal bei dem Lehrstuhl anrufen und nachfragen (auch wenn dabei die Gefahr besteht, dass denen auffällt, dass ich die Klausur doch nicht bestanden habe).

Serendipity geupdated

Eigentlich war es ja schon lange an der Zeit für ein Update – jetzt bin ich endlich mal dazu gekommen. 😉

Soeben habe ich Serendipity (das ist die Software, die dieses Blog antreibt) von der Version 1.0 auf die Version 1.1.2 geupdated. Soweit scheint schonmal alles wieder so zu laufen, wie es soll… das Einzige, was mir momentan nicht so gut gefällt ist die Tatsache, dass ich anscheinend keine Plugins updaten kann. Aber da werde ich mich morgen mal drum kümmern.

[Update] Argh, was sind das denn für Smilies? Das schuat ja aus wieder der Serendipity-Standard. Na gut, muss ich wohl doch nochmal kurz basteln.

H-Bahn-Türen

Der gestrige Tag fing übrigens auch gut an: Ich kam morgens mit der S-Bahn an der Uni an und wollte dann mit der H-Bahn zum Campus Süd fahren. Die Fahrt selber war schon ungewohnt rumpelig, aber solange die H-Bahn sich noch vorwärtsbewegte, war ja kein Grund zum Meckern da.

Dann hielt die H-Bahn aber am Campus Süd an – und öffnete die Türen einfach nicht. Also, die Türen gingen schon auf – aber erst nach etwa 40 Sekunden blöden Herumstehens. Dann fingen die Studenten auch an, auszusteigen – wobei die H-Bahn aber nach etwa 5 Sekunden schon wieder der Meinung war, die Türen schließen zu müssen, um weiterzufahren… 😐

Okay, war jetzt kein großes Problem, aber es ist dennoch erstaunlich, dass bei einem vollautomatischen System solche interessanten „Pannen“ geschehen können…

Umzug fertig

Hui, das ging ja wieder flott: Das, was ihr hier seht, ist fabianonline auf dem neuen (schnelleren, besseren, schöneren etc.) Server. 😉

Und das erste Problem ist auch schon umschifft: Dank eines von mir vergessenen Symlinks war das Blog die letzte halbe Stunde überhaupt nicht erreichbar. 😐
Aber egal, jetzt sollte es wieder funzen… wenn euch noch irgendwelche Fehler auffallen: Bitte meldet euch!

Film: 300

Vorgestern waren wir im Kino: In 300. Ihr wisst schon, dieser Film, der von der Schlacht um Sparta bei den Thermopylen handelt…

Zum Inhalt des Filmes selber: Gemetzel. Fast nur. Nebenbei gibt es auch noch ein paar Dialoge, ansonsten wird eigentlich nur gemetzelt. (Merkt man, dass ich den Film nicht soo toll fand?) Allerdings wird auf einem recht hohen Niveau mit ziemlich guten Special Effects gemetzelt…

Was mir ansonsten aufgefallen ist: Das Bild war zur Abwechslung in unserem Stamm-Kino (Cinepl** Paderborn) mal so richtig schön scharf. Wow. Warum ist das eigentlich nicht immer so?

Film: Mr. Bean macht Ferien

Und gestern waren wir dann nochmal im Kino: Diesmal in „Mr. Bean macht Ferien“. Zur Story selber: Mr. Bean gewinnt eine Reise nach Cannes ans Meer. Dass auf dem Weg dorthin so ziemlich alles schiefgeht, was überhaupt schiefgehen kann, ist dann ja wohl klar…
Mir gefiel dieser Bean auf jeden Fall besser als „Mr. Bean – Der Katastrophenfilm“. Vor allem war Mr. Bean in diesem Film auch wirklich der bekannt-trottelige Mr. Bean und nicht ein „Kunstexperte / Wachmann, der so aussieht wie Mr. Bean“.
Der Film hat einige recht nette Gags, wenngleich ich auch die Gag-Dichte als etwas niedrig empfand – allerdings war ich mit dieser Einschätzung der einzige meiner Gruppe…

Zum Kino: Nachdem ich am Vortag über die Schärfe des Bildes auf der Kinoleinwand so erfreut war, war das Bild dieses Mal (gleiches Kino, nur ein anderer Saal) sehr mies – noch viel unschärfer hätte man es kaum einstellen kann. Ist es denn so schwer, die Schärfe regelmäßig nachzustellen? Da frage ich mich dann doch immer wieder, wofür man da überhaupt bezahlt – man sitzt in meist unbequemen, engen Sitzen und schaut sich unscharfe Filme an… Dazu: Warum müssen in der Tonspur eigentlich immer wieder so komische „Piep“-Töne sein? Die sind mir sowohl in „Mr. Bean“ als auch in „300“ aufgefallen…

Ostern

Ja ja, die letzten zwei Tage waren ohne Blogeintrag. Tut mir ja auch leid. Es gab schon bloggenswerte Ereignisse, ich war (erschreckenderweise) einfach nur zu faul, sie zu bloggen… Aber das hole ich jetzt direkt mal nach. 🙂

Und, bevor ich’s noch vergesse: Frohe Ostern. 😉

Schon wieder H-Bahn-Kontrolleure

Überraschenderweise waren heute morgen schon wieder Kontrolleure in der H-Bahn. Diesmal waren sie nicht an den Fischerwesten erkennbar – aber sie notierten sich gerade die Daten einer potentiellen Schwarzfahrerin, als ich einstieg. Zudem hatten sie diese nicht allzugut tarnbaren Daten-Eingabe-Geräte umhängen (keine Ahnung, wie die Dinger wirklich heißen, die Kontrolleure bei der Bahn haben aber ähnliche Geräte).

Allerdings stiegen außer mir auch noch so viele andere Studenten in die H-Bahn ein, dass die beiden anscheinend spontan keine Luste mehr hatten, sich durch das Gedränge zu wühlen und Studentenausweise zu kontrollieren – sie setzten sich einfach hin und warteten ab, bis die H-Bahn schlagartig wieder leer war. 😉

Was mich aber sehr verwundert: Man hört so selten von Kontrolleuren in der H-Bahn, warum waren sie dann ausgerechnet heute (direkt nach Semesterbeginn) dort anzutreffen? Man könnte ja fast vermuten, dass man damit rechnet, noch viele Studenten finden zu können, die ihren Studentenausweis (und damit das Semesterticket) noch nicht ausgewechselt haben… Soweit ich weiß, muss man in dieser Situation wohl nur einen gewissen Strafbetrag (10 Euro oder so) zahlen, wenn man später noch seinen Semesterausweis vorlegt – aber trotzdem könnte man auf diese Weise bestimmt den einen oder anderen Euro einnehmen…

Sopra, Tag 1

Heute fand das erste Gruppentreffen im Sopra statt (es gibt 7 Gruppen mit je 8 Teilnehmern). Ziel des Sopras ist, uns praktisch näherzubringen, wie Teamarbeit in der Softwareentwicklung ablaufen sollte. Dazu gab es heute eine kleine praktische Demonstration:

Wir bekamen 4 Blätter Schreibmaschinenpapier, 2 Blätter stärkeres Papier und als Werkzeug eine Schere. Aufgabe: Innerhalb von 45 Minuten einen möglichst hohen Turm bauen. Nebenbedingungen: Der Turm muss aus mindestens zwei Teilen bestehen, die in zwei unabhängigen Gruppen gebaut werden und zusammengesetzt und wieder getrennt werden können.
Das Prinzip sowohl beim Turm als auch in der Softwareentwicklung sollte übriegens so aussehen, dass man zunächst Entwürfe bespricht (soll der Turm rund oder viereckig werden usw.), dann eine Schnittstelle vereinbart (die Turmteile müssen am Ende ja irgendwie zusammengesetzt werden) und dann erst den Entwürfen folgend beginnt, den Turm zu bauen. Wenn sich dann alle an die vereinbarten Spezifikationen halten, sollte der Turm am Ende problemlos zusammensetzbar sein (und dann auch noch stehen bleiben 😉 ).
Wobei in unserem heutigen Fall als Besonderheit noch zwei Studenten als „Beobachter“ bestimmt wurden, die nicht mitbauen dürfen, sondern stattdessen die spontane Teamarbeit beobachten und später den anderen davon berichten sollen. Einer dieser beiden Beobachter war ich.

Um die Basteleien kurz zu beschreiben: Chaos ohne Ende, und der Turm wollte am Ende auch nicht wirklich stehen bleiben… wäre er stehen geblieben, hätten wir etwa 2,50 Meter erreicht. Gar nicht mal so schlecht für 6 Blätter Papier…

Gehashte Fragebögen

So, jetzt wird zum ersten Mal hier im Blog (?) ein „informatisches“ Thema angesprochen. Doch dafür müssen wir zunächst mit einer kleinen Lehrstunde anfangen:

Was bedeutet Hashing / was ist eine Hashing-Funktion?
Eine Hash-Funktion ist eine Vorschrift, die befolgt werden muss, um aus einer großen Eingabemenge Werte kleinerer Größe (den sog. Hash) zu erzeugen. Wenn ihr jetzt nur noch „Hääääh?“ denkt, kann ich das durchaus verstehen. Deswegen gleich mal ein Beispiel: Eine Hashing-Funktion könnte z.B. sein: „Verwende nur die letzte Ziffer einer Zahl“. Diese Hashing-Funktion kann ich auf alle möglichen Zahlen anwenden (von denen es ja bekanntermaßen unendlich viele gibt), und erhalte nur einen von zehn möglichen Werten zurück (eine der Zahlen von 0 bis 9).
Daraus folgt natürlich, dass ich aus einem Hashwert normalerweise nicht den Originalwert wiederherstellen kann. Wenn ich eine Zahl suche, von der ich nur weiß, dass ihr Hashwert mit der obigen Vorschrift 7 ist, bringt mir das gar nichts, da sehr viele Zahlen den Hashwert 7 ergeben können (z.B. 7, 17, 167 oder auch 2136504640654684013168463107).
Andere Beispiele wären z.B. die Bildung der Quersumme einer Zahl oder bei Texten z.B. die Anzahl der im Text vorhandenen Wörter.
Wahrscheinlich wundert ihr euch jetzt, warum man solche Hash-Funktionen überhaupt verwendet. Ein Beispiel wäre beispielsweise die Speicherung von langen Texten: Nehmen wir mal an, ich verwalte ein Archiv mit tausenden von Texten. Dann will ich evtl. keine Texte doppelt haben. Das würde für mich bedeuten, dass ich immer, wenn ich einen neuen Text in die Datenbank eintragen möchte, zunächst nachschauen muss, ob dieser exakte Text schon vorhanden ist. Eine Möglichkeit wäre natürlich, den ersten Text aus der Datenbank auszulesen und diesen dann Buchstabe für Buchstabe mit dem neuen Text zu vergleichen. Stimmen alle Buchstaben überein, sind die Texte gleich. Ansonsten lese ich den zweiten Text aus der Datenbank aus und fange hier wieder mit dem Vergleich an. Das ist natürlich ziemlich aufwändig – ich (mein PC) müsste bei einer großen Datenbank tausende von Buchstaben vergleichen, eine Aufgabe, die auch moderne PCs durchaus eine gewisse Zeit beschäftigen kann.
Aber zum Glück gibt es ja Hashing-Funktionen: Einige von ihnen (mit so tollen Namen wie MD5, SHA1 oder CRC32) erzeugen zu beliebig langen Texten Hashwerte von fester Länge, im Fall von MD5 z.B. 32 Zeichen lang. Also könnte ich als Datenbankverwalter einen Trick anwenden: Da ich weiß, dass ein Hashwert eines bestimmten Textes immer gleich bleibt, speichere ich zu einem Text einfach noch den dazugehörigen MD5-Hash mit ab. Wenn ich dann einen neuen Text speichern möchte, berechne ich den zu diesem Text gehörenden MD5-Hash und schaue in der Datenbank nur noch nach, ob dieser Hash-Wert dort schon gespeichert ist. Dieses Vorgehen ist natürlich viel schneller, als die ganzen Texte einzeln zu vergleichen.
Eine Hashing-Funktion wie die oben von mir erdachte „Anzahl aller Wörter“-Funktion würde prinzipiell natürlich auch klappen – allerdings ist die Wahrscheinlichkeit recht hoch, dass irgendwann einmal zwei Texte die genau gleiche Anzahl an Wörtern haben werden und daher durch den reinen Vergleich dieser Hash-Werte als „gleich“ angesehen werden, was natürlich unerwünscht ist. Dabei spricht der Informatiker dann von einer Kollision. Die „richtigen“ Hashing-Verfahren sind natürlich extra für diesen Fall optimiert, möglichst wenige Kollisionen zu erzeugen.

Jetzt kommen wir aber mal wieder zurück zum Bezug zur Uni. Es ist an einer Uni bekannte Tatsache, dass die Anzahl der Hörer einer Vorlesung nach der ersten Woche rapide abnimmt – viele Studenten kommen zur ersten Vorlesung, hören sich den organisatorischen Schnick-Schnack an und kommen dann erst zur Klausur wieder. Der Fachbereich möchte nun gerne die Gründe für dieses Verhalten ergründen. Also wurden Fragebögen verteilt. Da man jedoch die Verändeurng über eine gewisse Zeit beobachten möchte, werden in ein paar Wochen wohl nochmal Fragebögen verteilt (die dann natürlich nur von den noch anwesenden Studenten ausgefüllt werden können). Um jetzt jedoch aus den Bögen ablesen zu können, *welche* Studenten denn noch da sind (und welche halt nicht mehr), muss es da ein Feld geben, welches jeder Student mit einem einzigartigen und bei jedem Fragebogen gleichen Wert füllen soll. Da die Umfrage jedoch anonym stattfinden soll, kann man die Studenten schlecht bitten, ihren Namen oder die Matrikelnummer in dieses Feld einzutragen. Das ist die Stelle, an der eine Hashing-Funktion ins Spiel kam: Auf dem Zettel stand in etwas folgende Anweisung:

1.: Zweiter Buchstabe im Namen des Haustieres
2.: Dritte Ziffer des Geburtsdatums
3.: Fünfte Ziffer der Handynummer
4.: Zweiter Buchstabe des Mädchennamens der Mutter

In meinem Fall und mit dieser Hashing-Funktion würde ich z.B. A02E in dieses Feld schreiben – und beim nächsten Fragebogen, der die gleiche Anweisung enthalten wird, auf genau den gleichen Wert kommen. Dennoch kann man lediglich aus A02E absolut keine Infos über mich gewinnen – oder wer könnte mir jetzt den Mädchennamen meiner Mutter nennen? Um herauszufinden, welcher Fragebogen meiner ist, bräuchte man den Namen meines Haustieres, mein Geburtsdatum, meine Handynummer und den Geburtsnamen meiner Mutter, müsste daraus meinen Hash-Wert bestimmen und den Stapel danach durchsuchen. Und all diesen Aufwand fabrizieren, nur um festzustellen, dass ich meinen Zettel nicht abgegeben habe? 😉
========
Falls es euch noch interessiert: Der MD5-Hash des Textes oberhalb der „Linie“ ist übrigens: 547c5c6a7d8be7b786d7ea29f59e8f6e

Update: Ich habe mal kurz mein Blog als „Testdatenbank“ genommen und die Anzahl der Wörter pro Artikel gemessen (um genau zu sein habe ich es mir einfacher gemacht und die Leerzeichen pro Artikel gezählt). Ergebnis: Es gäbe sehr viele Kollisionen – 15 verschiedene Artikel haben z.B. genau 55 Wörter, je 14 Artikel haben 49 und 53 Wörter usw. Meine spontan erdachte Hashing-Funktion wäre also in diesem Fall nicht allzu sinnvoll anwendbar. 😉