You are currently viewing Gedanken einer Praktikantin, Part 2 plus WKO Webgrabber

Gedanken einer Praktikantin, Part 2 plus WKO Webgrabber

Das Punch-in Punch-out Problem

Endlich! Ein Problem in welchem ich dem Unternehmen helfen darf! Kein großes, oder gar ernst zu nehmendes, aber ein nervendes. Die Uhrzeit wenn man sich einloggt wird falsch angezeigt im Browser! Um ganze zwei Stunden! Aber in der Datenbank wird die Uhrzeit richtig angezeigt.

„Ein Python Problem“ wurde mir gesagt. Natürlich, haben die meisten Leute wichtigere Sachen zu tun, als ein Problem, das keine Probleme verursacht, auszubessern. Die Zeiterfassung stimmt, nur wird beim einloggen und ausloggen die Uhrzeit falsch angezeigt. Ein Nicht-Problem eigentlich.

Trotzdem freue ich mich! Endlich darf ich mir mal Code anschauen, den ich nicht selbst geschrieben habe!

Und kaum habe ich das Verzeichnis offen, wo das Problem liegt, sehe ich mein erstes Problem.

Wo genau ist die Datei mit dem Problem, das ich beheben soll, bei 50 verschiedenen Ordnern, in welchen Unterordner und Code-Dateien drinnen liegen?

Nachdem ich dann 3-4 Stunden in den Python Dateien herumprobiert habe, konnte ich festgestellt, dass es KEIN Python Problem ist. Immerhin habe ich schlussendlich aus Frust alles was Uhrzeiten hergestellt hat gelöscht. Und es hat sich noch immer nichts geändert!

Nach 1-2 weiteren Stunden herumsuchen habe ich es schließlich gefunden. Es war Javascript. Merkwürdiges Javascript. Viel zu kompliziertes Javascript. Ich seufze. Ich verstehe nicht, wieso man eine Uhrzeit so herstellt in Javascript. Ein Datum wird erstellt, indem ein Datum mit einem anderem Datum subtrahiert wird. Warum nicht einfach ein normales Datum erstellen? Das hat das Problem gelöst! Nachdem ich also den anderen Leuten das Problem gesagt habe, lehne ich mich zurück und fühle mich wie eine Senior Developerin. Wer zur Hölle schreibt so einen blöden Code?

Python WebScraper

Achja, Python. In meinem Kurs haben wir leider einen Trainer, welcher an sich super sympathisch ist, aber leider ist er viel zu schnell im Stoff und wir kommen nicht wirklich nach mit dem was er erklärt. Ich denke, dass das der Hauptgrund ist, weswegen ich Python nicht wirklich mag. Das und keine Klammern.

Aber ja, jetzt soll ich mit Python einen Webscraper basteln. Informationen aus einer Webseite auslesen und diese in einer Datei speichern. Bei statischen Webseiten sollte das ziemlich einfach sein.

Ein Webscraper sucht nämlich einfach nur die html Struktur ab. Zum Beispiel sind Links immer in einem <a></a> tag. Sucht man also jeden Link auf einer Webseite, sucht man einfach nach diesen a tags.

Blöd nur, dass ich eine dynamische Webseite bekommen habe, welche erst alles lädt, wenn der User etwas eingegeben hat. Somit gestaltet sich die Sache um einiges schwieriger und zeitaufwändiger als anfangs gedacht.

Nachdem ich mich also etwas erkundigt habe, beschloss ich, Selenium für meine Zwecke zu verwenden. Gesagt getan, Selenium ist importiert. Super! Zeit eine Webseite für Testzwecke zu öffnen!

2 Tage später habe ich dann endlich das Problem gefunden, aufgrund dessen ich noch nicht einmal Google mit Selenium öffnen konnte. Die PATH Variable muss zu dem Driver führen, welcher den Browser bedient. Firefox benutzt übrigens den sogenannten Geckodriver. Sehr sympathischer Name!

Nachdem also das PATH Problem gelöst wurde, ging alles super schnell! Innerhalb kürzester Zeit hatte ich einen funktionierenden Webscraper, welcher zuerst alle popups wegklickt und schließlich alle Daten holt die ich will!

Nachdem ich zwei Tage lang kein bisschen weitergekommen bin, komme ich mir nun abermals wie eine Senior Developerin vor!

Hier ein Code Ausschnitt

Lizenzen

Jetzt wo ich also mein erstes eigenes Programm fertig geschrieben und auch auf GitHub hochgeladen habe, wurde mir die Aufgabe zuteil, diesem Programm auch eine Lizenz zu geben.

Natürlich hat sich gleich einmal die erste Frage gestellt… warum eine Lizenz?

Also habe ich mich da gleich einmal etwas reingelesen und bin da auf etwas lustiges draufgekommen.

Ein öffentliches Repository auf github hat eine etwas eigene rechtliche Lage.

Da ich dieses Repository auf github öffentlich hochgeladen habe, gilt nun folgendes:

Offensichtlich will ich ja, dass dieser Code verwendet wird. Sonst wäre er nicht in einem öffentlichen Repository.
Da es aber nun keine Lizenz gibt, die dem Nutzer sagt, wie er diesen Code benutzen darf, hat das Recht beschlossen, dass niemand den Code benutzen darf, bis eine Lizenz da ist.

Dieses „Niemand“ schließt mich, die Urheberin mit ein. Kurios. Aber hey, es ist das Gesetz. Das gleiche Gesetz welches einen Hasen als unbewegliches Gut einstuft.

Glücklicherweise gibt es viele Lizenzen, die man als Kopierpastete in das eigene Repository geben kann. Aber natürlich stellen sich dabei einige Fragen.

Wer darf meinen Code benutzen? Darf man ihn kommerziell verwenden? Bei welchen Änderungen muss man mich noch als Urheber angeben? Und so weiter.

Ganz zu Beginn fand ich einmal die Unlicense. Die Idee ist, dass die Urheber_in ihren Code der Public Domain verfügbar macht und sich nicht weiter mit dem rechtlichen Sachen auseinandersetzen muss. Es hat auch den Vorteil, dass die Lizenz nicht License sondern Unlicense genannt wird und man somit um einiges schneller Projekte mit dieser Unlicense finden kann, ohne sich Sorgen zu machen, die Sachen falsch zu verwenden, da Unlicense Produkte wie man will verwendet werden können.

Dann wohl die bekannteste Lizenz. Die MIT Lizenz. Sie ist der Unlicense ziemlich ähnlich. Sie ist kurz und man kann fast alles mit dem Code machen! Das einzige, was man beachten sollte, ist die Tatsache, dass die Lizenz erhalten sein soll. Verwendet man den Code, muss die Lizenz dabei sein. Das wars. Der Code kann genau wie bei der Unlicense für sonst alles verwendet werden. Privat, kommerziell, etc.

Nun kommen wir zu den Copyleft Lizenzen. Ich schätze der Name kommt einmal davon, dass das Copyright Symbol gespiegelt wurde. Was genau ist aber nun Copyleft? Nun, die Idee davon war, dass freie Software auch frei bleibt. Es soll keine kommerzielle Nutzung möglich sein. Mozilla Firefox beispielsweise hat eine Copyleft Lizenz. Die Mozilla Public License.

Es gibt auch mehr als eine Copyleft Lizenz. Hier wird zwischen starken und schwachen Copylefts unterschieden. Ein schwaches Copyleft würde nur bei Änderungen am Code selbst verlangen, dass das Copyleft bleibt. Während ein starkes Copyleft verlangen würde, dass andere Teile des Programmes, welche gar nichts mit der Software selbst zu tun haben, unter das Copyleft fallen.

Alles im allem habe ich mich für mein Webscraper Projekt nun für die MIT Lizenz entschieden. Es kann somit von meiner Praktikumsfirma ohne Probleme verwendet werden, und trotz meiner guten Arbeit, code ich gerade erst seit etwas mehr als einem Jahr. Selbst wenn mein Code in einer Art und Weise verwendet wird, die ich nicht gutheiße, bin ich mir sicher, dass ich in einem Jahr das gleiche besser machen kann. Dann werde ich wahrscheinlich auch eine schwache Copyleft Lizenz verwenden.

Abschließende Worte

Wow, und das war auch schon mein Praktikum. Innerhalb von rund zwei Monaten habe ich unglaublich viel neues gelernt.

Ich hatte davor noch nie mit Linux gearbeitet und jetzt habe ich schon fast Angst vor dem Tag, an dem ich wieder an einem normalen Windows Betriebssystem sitzen werde, wo ich ein reines Ordnerchaos habe.

GitLab hat so viel mehr Möglichkeiten mit einer Pipeline als github. Und eine Pipeline komplett selbst zu erstellen, komplett mit Docker Image und eigenem Runner, ist doch schon eine echte Aufgabe gewesen, an der ich gehangen bin.

Dagegen war das bisschen Python, das ich eigentlich nicht wirklich mag, fast schon ein Zuckerschlecken!

Nach dem Praktikum habe ich dann zwei Wochen Ferien (Yay! Sommer!) und danach geht es wieder weiter mit dem normalen Kurs. Ironischerweise freue ich mich schon, meinen ganzen Kurskolleg_innen zu zeigen und zu erklären, was genau ich nun im Praktikum gemacht habe! Außer Error Messages zu googeln natürlich.

Nachtrag der Firma zum Webgrabber:

Webgrabber zur WKO Wien Neugründungliste

Bei dem Praktikumsprojekt ging es übringens darum, die monatlich von der WKO Wien veröffentliche Liste an Neugründungen [1] automatisch und handlich im CSV Format verfügbar zu machen.

Die Ergbebnisse des Praktikums wollen wir der Welt natürlich nicht vorenthalten 😉
Der folgende Link führt zum Projekt:

https://git.conesphere.cloud/csph.praktikum/webgrabber.wko.neugruendungen

Und die fertigen archivierten CSV-Dateien finden sie für jede erfolgreich gelaufene Pipeline auf der CI/CD Seite

https://git.conesphere.cloud/csph.praktikum/webgrabber.wko.neugruendungen/-/pipelines

Hier finden sie die Archivierten Ergebnisse zum Download

Tja, und damit bleibt uns nurnoch auf das erfolgreiche Praktikum anzustoßen und das Projekt gebührlich ausklingen zu lassen. 😀

Für Anfragen zu ähnlichen Projekten steht Sarah gerne unter sarah.e.git@gmail.com gerne zur Verfügung.

[1] https://www.wko.at/service/neuzugaenge.html

Leave a Reply