11-Jähriger hackt die Schule, weil ihm langweilig ist

Ich bin immer wieder überrascht, wie sicher manche IT Dinge abgesichert sind. Das Schulen generell kein Geld haben und die Lehrer als Nebenadmins das Netzwerk betreuen ist keine neue Sache. Dass aber ausgerechnet ein 11-Jähriger einfach mal das Schulnetzwerk "hackt" und damit die komplette Kommunikationsinfrastruktur der Schule lahmlegt um schulfrei zu bekommen ist neu. Aber eigentlich auch naheliegend. Nur war ich selbst als 11-Jähriger noch lange nicht so computeraffin. Gut, wir hatten auch erst sehr spät einen Computer im Haushalt.
Das ging soweit mit dem 11-Jährigen Schüler, dass seine Mutter in die Schule gebeten wurde. Dabei wurde sie neben der Schulleitung und einigen Lehrern auch von der Staatsanwaltschaft empfangen. Die Staatsanwaltschaft hatte aber ein Einsehen mit dem 11-Jährigen und wollte nicht gleich sein Leben vorbelasten.
Deshalb haben sie ihm einfach Programmierunterricht verordnet.
Ich finde das sehr löblich. Aus diesem Mensch kann noch was Gutes werden. Und wenn man ihn jetzt schon gut fördert, dürfte er auch nicht auf die dunkle Seite der Macht abrutschen!

Vom sich selbständig machen und es erfolgreich bleiben

Auf der diesjährigen Froscon wurde schon mal ein guter Vortrag zum Freelancertum bzw. Selbstständigkeit von Henning Rohde gehalten. Da hier auch allgemeine Tipps für beispielsweise Versicherungen dabei sind, ist es doch recht interessant. Wer gründen will sollte sich das unbedingt mal anschauen. Es sind auf jeden Fall sinnvolle Tipps dabei.
Auch mit Erfahrungen während Corona.

Rückblick zum Chaos Communication Camp 2019

Nachdem ich 2019 vom Camp leider keinen wirklichen schönen Blogpost gemacht habe, aber ich dann doch einige tolle Bilder gemacht. Ich war genau am Sonntag nach der Rückfahrt vom Camp noch auf einem Metallica Konzert und war irgendwie wieder total angepisst. Erstens waren auf dem Konzert wieder sehr viele Assis da und zweitens war es leider so groß, dass es keinen Pogo oder Moshpit Bereich gab. Metallica ist halt einfach eine Volksmusik Band geworden. Die alten Alben waren schon geil, aber live sind sie langweilig. :)
Zum Camp: Man muss dabei gewesen sein und es sich einfach auch mal geben. Die Leute sind total entspannt und besonders nachts ist es dort ewig genial. Ein damaliger Kommillitone von Monkel hatte sicher extra eine Antenne und Holz mitgenommen um den Funk der ISS abzuhören. Also einfach mal in der letzten Nacht da gesessen und hat den Funk mitgeschnitten. Andere wie ich sind einfach herumgelaufen und haben sich an der Musik (manchmal echt geile Musik) erfreut oder an den vielen bunten Lichtern und den Lichtshows. Die Leute haben einfach mit der Technik die Party ihres Lebens gefeiert. Aber schaut selbst die Bilder dazu an.
Jetzt wo der Herbst kommt und seit 2019 kein Congress mehr stattgefunden hat (wegen diesem FUCKING Corona!) tut es gut mal wieder in schönen Erinnerungen zu schwelgen. Wenn 2023 immer noch Corona und deshalb kein weiteres Camp stattfinden kann, bin ich richtig angepisst! Congress und Camp sind nicht nur Vorträge und Computer und Technik Krams, sondern mittlerweile auch sehr viel Party und Zeugs. Einfach herrlich!

rC3 Sticker Exchange 2021

Auch wenn ich im Sommer noch etwas hoffnungsvoller war: Es war so klar, dass der Winter kommt und die Corona Infektionen wieder steigen werden. Gewisse Leute unterstellen mir ja, dass ich genau deshalb nach der Rennstrecke im August auch auf der Landstraße zu schnell gefahren bin um im Winter 2 Monate Sprit sparen zu können. :)
Aber ganz ehrlich: Ich hätte schon mal wieder Bock auf eine Chaos Veranstaltung. Besonders das Camp 2019 war einfach gigantisch gut. Einige tausend Leute auf einer alten Ziegelei. Alle irgendwie computeraffin oder zumindest mit einem Nerd Hintergrund und alles friedlich. Jeder Organisation hatte ihren Spaß. Selbst die Feuerwehr, die dort war war total gechillt drauf und hat auch Fragen beantwortet. Aber auch ein ganz normaler Congress wäre mal wieder geil gewesen. Nachts wenn alles dunkel ist die vielen bunten Lichter und der Lärm. Oder die gute Punk Beschallung vom Späti. Einfach mal spannende Leute treffen und sprechen. "Endlich normale Leute!"
Natürlich gibt es auch immer Vorträge, aber die kann man später nachsehen. Manchmal auch spannende Theatervorstellungen zu netzpolitischen Themen oder auch recht bedrückende Themen wie dem NSU Komplex. Wenn man vorher gute Laune hatte, will man hinterher einfach irgendwas anzünden weil man nicht versteht dass die Menschen solche Arschlöcher sein können. Aber der Chef hat ja gesagt: "Zünde nicht alles an, sondern liebe auch diese Menschen wie dich selbst!"
So wird es dieses Jahr halt wieder einen Remote Chaos Communication Congress geben. Auch ganz nett, aber am Ende halt doch was anderes.
Da Sticker auch immer ein Thema sind und ich über die Jahre doch einige gesammelt habe (ab und zu auch wieder welche beigetragen habe) gibt es auch dieses Jahr wieder den Remote Sticker Exchange. Genaueres findet ihr hier. Kurz gesagt: Schickt einen Rückumschlag bis zum 8.12.2021 an das Postfach, tut noch ein paar Sticker rein und im Gegenzug bekommt ihr ein paar neue Sticker zugeschickt.

Ihr fragt euch, warum ihr Sticker haben wollt? Wenn ihr diesen Blogpost hier lest, seid ihr aller Wahrscheinlichkeit eh ein bisschen IT affin und habt sicherlich einen Laptop. So sieht mein aktueller und erster Arbeitslaptop aus.
So schwarze Laptops sind doch langweilig, also muss man es schon auch etwas individualisieren. Dein Laptop oder anderes Arbeitsgerät ist noch so farblos? Dann brauchst Du Sticker.

SQL Grundlagen - Teil 1

Da ich nie studiert habe, fehlen mir manchmal noch die Grundlagen um manchmal die Theorie dahinter zu verstehen. Ich hab allerdings vor vielen Jahren mal eine Ausbildung zum FISI (Fachinformatiker für Systemintegration) abgeschlossen. Da gab es auch mal Datenbanken mit den 3 Normalformen. Letztendlich um Primärschlüssel und Fremdschlüssel zu verwenden und die Tabellen konsistent zu halten und um Daten nicht mehrfach abzuspeichern. Manchmal ist die Normalisierung nervig, wenn man beispielsweise eine Tabelle Auftrag hat und dort nur ein Verweis auf die Adresse besteht. Um beispielsweise dann die Auftragskopfdaten und die Firmenbezeichnung anzuzeigen müssen Auftrag und Adresse verknüpft werden. Andererseits hat dies auch wieder den Vorteil, dass man später die neuen Firmendaten nur an einer Stelle (nämlich in der Adresse) ändern muss.

In meinen Beispielen beziehe ich mich nun ausschließlich auf den MS SQL Dialekt. Bei anderen Datenbanksystemen gibt es definitiv Unterschiede.

Bisher verband ich mit SQL immer nur SELECT * FROM ADRESSE. Damit gebe ich beispielsweise alle Datensätze der Tabelle mit dem Namen ADRESSE aus. Das kann für einen Überblick schon mal sinnvoll sein. Ist es allerdings eine sehr große Tabelle mit mehreren Tausend oder gar Millionen Datensätze ist das eher unpraktisch, da damit sehr viel Last erzeugt wird. Deshalb ist hier schon mal folgendes besser: SELECT TOP(100) * FROM ADRESSE Damit werden die obersten 100 Datensätze ausgegeben. So sieht man immer noch alle Spalten und kann sich ein Bild von der Tabelle machen ohne gleich eine enorme Last zu erzeugen.

Kennt man die Tabelle schon etwas genauer und möchte nur einen bestimmten Datensatz aufrufen kommt der WHERE Befehle ins Spiel. Beispielsweise um den Datensatz mit der Id 42 aufzurufen könnte ich folgenden Befehl abfeuern:
SELECT *
FROM ADRESSE
WHERE Id = 42

Trotzdem bekomme ich hiermit vermutlich wieder zu viele Informationen zurück. Ich habe mit dem WHERE Id = 42 zwar den Datensatz auf die Id 42 eingegrenzt, aber bekomme trotzdem weiterhin alle Spalten angezeigt. Möchte ich beispielsweise nur den Namen, die Straße, die PLZ und den Ort bekommen, könnte folgendes Beispiel sinnvoll sein.
SELECT Name, Straße, PLZ, Ort
FROM ADRESSE
WHERE Id = 42

Das ist dann quasi schon ziemlich der einfache Standard, wenn es nur um Spalten innerhalb einer Tabelle geht.

Möchte man aber nun Daten ausgeben, die in verschiedenen Tabellen sind, ist eine Verknüpfung möglich. Dabei verknüpft man immer mit einer Spalte, die in den beiden Tabellen vorhanden ist und nach Möglichkeit auch eindeutig. Dabei gibt es INNER JOIN, LEFT JOIN und RIGHT JOIN. Der INNER JOIN verknüpft die Datensätze, die in beiden Tabellen vorhanden sind. LEFT JOIN dagegen gibt alle Datensätze von der linken Tabelle aus und ergänzt mit den Datensätze, die in der rechten vorhanden sind. RIGHT JOIN macht es entsprechend umgekehrt. So, dass bei LEFT und RIGHT eine Tabelle führend ist und nicht nur die gemeinsamen Datensätze aus beiden Tabellen ausgegeben werden.

Nehmen wir beispielsweise an, wir möchten nun einen Auftrag und seine Positionen ausgeben. Dann wird rein logisch betrachtet der Auftrag mit seinen Kopfdaten und die Auftragspositionen mit den Positionen jeweils eigene Positionen sein. Sicherlich gibt es dazu aber in beiden Tabellen eindeutige Schlüsselspalten. Beispielsweise die Auftragsnummer. Da hier aller Wahrscheinlichkeit in beiden Tabellen immer mindestens ein Auftragskopf und mindestens eine Position vorhanden ist, wird ein INNER JOIN ausreichen. Ein LEFT JOIN wäre dann interessant, wenn man alle Aufträge haben will und dabei auch Aufträge OHNE Positionen erwartet.
SELECT a.Auftragsnr, a.Kdnr, ap.PosNr, ap.Artikelnr, ap.Menge, ap.Preis
FROM AUFTRAG a (NOLOCK)
INNER JOIN AUFTRAGPOSITION ap (NOLOCK) ON ap.Auftragsnr = a.Auftragsnr
WHERE a.KdNr = 23

Ich habe im obigen Beispiel jeder Tabelle auch noch einen Alias verpasst. Für Auftrag hier die a und für Auftragsposition ap. Der Grund dafür ist relativ einfach. Da wir nun mehrere Tabellen verknüpft haben, sind die einzelnen Spaltennamen nicht mehr eindeutig. Beispielsweise kommt Auftragsnr in beiden Tabellen vor. Um uns und dem SQL Server die Angabe der Tabellen leichter zu machen, verwende ich hier kleine Aliase. Mit a.Auftragsnr drücke ich also aus, dass ich die Auftragsnummer aus der Tabelle AUFTRAG haben möchte.
Außerdem hab ich mit INNER JOIN AUFTRAGPOSITION ap (NOLOCK) ON ap.Auftragsnr = a.Auftragsnr klar gemacht, dass ich eine Verknüpfung der Auftragstabelle mit der Auftragspositionentabelle wünsche und nur die gleichen Datensätze verknüpft werden, wo jeweils die Auftragsnummer gleich ist.
Außerdem hab ich die Ausgabe auf die Datenzahlen vom Kunden mit der Kundennummer 23 eingegrenzt.

Das (NOLOCK) Statement macht klar, dass der Befehl ohne Schreibzugriff erfolgen soll. Das ist besonders interessant, wenn in der Datenbank immer wieder Abfragen erfolgen, die auch mal zeitintensiv sind. Ein gutes Beispiel zu den Auswirkungen von (NOLOCK) findet man hier. Generell macht ein (NOLOCK) also nur Sinn, wenn im Hintergrund noch viele Daten geändert werden und man trotzdem schon mal Daten erhalten möchte.

Im nächsten Teil geht es dann weiter mit GROUP BY und ORDER BY.