Fryboyter

I'll be back

Bestimmt kennen die meisten den Spruch “i’ll be back” den Arnold Schwarzenegger im Film Terminator zum Besten gibt. Und er hatte recht.

Jahrelang hatte ich den Terminal Emulator Terminator genutzt, da ich zum Beispiel dessen Tiling-Funktion geschätzt habe. Leider ist die Entwicklung im Jahre 2017 eingeschlafen. Zudem basiert die letzte veröffentlichte Version auf Python 2, was seit diesem Jahr offiziell “end of life” erreicht hat. Daher bin ich schon vor Längerem zu Tilix gewechselt. Dieses Projekt hat allerdings das gleiche Schicksal ereilt, so das es aktuell keine Weiterentwicklung gibt.

Aber manchmal kommen sie wieder. Anfang April haben einige Entwickler beschlossen das Projekt “Terminator” weiterzuführen. Das Projekt auf Launchpad konnte laut deren Aussage nicht übernommen werden, so dass es bei Github eine neue Heimat gefunden hat. Worüber ich sehr froh bin, da ich die grafische Oberfläche von Launchpad einfach nur schrecklich finde.

Mitte April wurde dann die Version 1.92 veröffentlicht. Die wohl wichtigste Änderung ist, dass Terminator nun Python 3 nutzt. Daher bin ich heute von Tilix wieder zu Terminator gewechselt und hoffe das ein weiterer Wechsel des Terminal Emulators nun in weiter Ferne liegt.

Bestimmt werden sich jetzt einige Fragen, warum nicht st? Oder warum nicht urxvt? Oder kitty? Die Antwort lautet wie so oft Geschmackssache. Und mir schmeckt eben Terminator.

OSBN | Linux

Python-Kurs ab dem 27.06.18 im Arch Classroom

Morgen findet im Arch Classroom um 7 UTC (in Deutschland dürfte das 9 Uhr sein) ein Python-Kurs für Anfänger statt. Unter https://github.com/archclassroom/python-beginners findet man die nötigen Unterlagen, sowie weitere Informationen und Links. “Dozent” ist Pulecz (Tomáš Mikulec). Der erste Teil dürfte ca. 2 Stunden dauern.

OSBN | Allgemein

Humble Software Bundle: Python Dev Kit

Humble Bundle bietet man aktuell einige Sachen zum Thema Python an. Da Python unter Linux ja dann doch ab und zu zum Einsatz kommt, habe ich gedacht ich weise einfach mal kurz darauf hin. Interessant ist hier für den einen oder anderen vielleicht auch der Gutschein über 50 US-Dollar bei DigitalOcean oder die Jahreslizenz von Gitkraken Pro.

Das ganze läuft noch 13 Tage und ein paar Stunden und ist unter https://www.humblebundle.com/software/python-dev-kit-bundle zu finden.

OSBN | Allgemein

E-Mail-Adressen mit Python aus Datenbanksicherung auslesen

Ab und zu werde ich bei schwierigen Fällen um Hilfe gebeten. Wie zum Beispiel vor ein paar Tagen. Aufgabenstellung war, die E-Mail-Adressen in einer MySQL-Datenbank zu finden und die Treffer in eine Textdatei zu schreiben. Das Problem ist aber, dass die Datenbank nur als Datensicherung in Form einer SQL-Datei vorliegt und diese nicht eingespielt werden soll oder kann. Wäre auch zu einfach gewesen.

Da ich gerade als Fachliteratur das eBook von “Automate the Boring Stuff with Python” lese habe ich mich für Python als Lösung entschieden. Herausgekommen ist folgendes “Kunstwerk”.

#!/usr/bin/env python
""" Emails in einer Datei finden und Treffer in eine neue Datei schreiben """

import os
import re

QUELLDATEI = input("Quelldatei angeben: ")
ZIELDATEI = input("Zieldatei angeben: ")

if os.path.exists(QUELLDATEI):
    DATEN = open(QUELLDATEI, 'r')
    EMAILDATEI = DATEN.read()
else:
    print("Datei nicht gefunden")
    raise SystemExit


# Regex und Suche ohne doppelte Treffer
EMAILREGEX = re.compile(
    r'[a-z0-9!#$%&*+=?^_`{|}~-]+(?:\.[a-z0-9!#$%&*+=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?', re.IGNORECASE)
TREFFERDOPPELT = EMAILREGEX.findall(EMAILDATEI)
TREFFEREINFACH = set(TREFFERDOPPELT)

# Treffer ausgeben und in Datei schreiben
with open(ZIELDATEI, 'w') as f:
    for row in TREFFEREINFACH:
        print(row)
        f.write("%s\n" % str(row))

Habe ich schon erwähnt, dass ich so gut wie gar nicht programmieren kann? Nein? Gut ich kann es so gut wie nicht. Aber erstaunlicherweise funktioniert es. Auf eine Prüfung ob die jeweilige E-Mail-Adresse gültig ist, habe ich bewusst verzichtet. Das wird mit RegEx sonst ein Fass ohne Boden. Vor allem weil ich RegEx noch weniger beherrsche als z. B. Python. Von daher wie immer… Benutzung auf eigene Gefahr.

Nachtrag: Nach einem Testlauf ist mir aufgefallen, dass einige Adressen mehrfach vorhanden sind. Ich habe das Script daher noch einmal angepasst, so dass nun keine doppelten Adressen ausgegeben werden.

Nachtrag 2 Ich habe das Script noch einmal angepasst. Zum einen wird nun die Quelldatei sowie die Zieldatei abgefragt und ist nicht mehr fest hinterlegt und zum anderen habe ich mich an den PEP8-Richtlinien (außer der Zeilenlänge) orientert.

Linux | OSBN