Wo fährt eigentlich gerade ein öffentliches Verkehrsmittel ab?

nurnberg-transport-map

Ich taste mich gerade weiter vor. Alles so kleine Projekte um das Programmieren zu lernen. Wenn mir eine Idee kommt versuche ich es umzusetzen. Ein Freund von mir hat ein Python-Modul gebaut um Daten der öffentlichen Verkehrsmittel in Nürnberg abzugreifen. Man kann auf die Schnittstellen zugreifen die wohl auch die Anzeigen an den Haltestellen benutzen. Zum Beispiel welche Linien in wieviel Minuten ankommen. Dazu braucht man die ID der Haltestelle. Eswird auch übermittelt ob das Verkehrsmittel sich verspätet. Wie kann ich also schauen wo sich ungefähr ein Verkehrsmittel befindet? So genau geht es nicht (zumindestens soweit ich gerade denke). Ich schaue also ob die Ankunftszeit an der Haltestelle bei null Minuten ist. Es werden alle Stations-IDs abgearbeitet und ein GeoJSON gebaut. Dieses wird dann per socket.io auf eine leaflet.js Karte projiziert. Alles nicht so elegant wie ich es mir gewünscht habe. Hier geht es zum Code. Aber erstmal läuft es...

MusicCodes

musiccodes

Ich war mal davor eine kleine Plattenfirma zu gründen. Eine Plattenfirma die nur Vinyl heraus bringt. Man könnte mich sogar als Record-Collector bezeichnen. Es gab eine Zeit in der ich im Laden doch eher zur CD gegriffen habe. Grund war die digitalisierung der Stücke um sie überall hören zu können. Dies änderte sich dramatisch nachdem vielen neuen Platten ein kleiner Zettel mit einem Downloadcode beilagen. Meist wird sowas von Drittfirmen angeboten. Es war einfach mal an der Zeit zu schauen wie man das gleiche mit ein paar Zeilen Code selber bauen könnte. Zutaten: flask-Zeugs, sqlite und LaTeX. Entstanden ist MusicCodes. Man kann eine Datenbank anlegen in der die erzeugten Codes liegen und ein Feld in dem festgehalten wird wie oft das File schon runtergeladen wurde. Es gibt eine Option um neue Codes zu erzeugen und der Datenbank hinzuzuügen. Man hat auch die Möglichkeit den Download-Counter zurück zusetzen. Für Testzwecke kann man per run die Webapp starten. Natürlich geht das ganze auch per gunicorn. Nun kommen wir zu den ausdruckbaren Gutscheincodes. Ich habe noch nie etwas mit LaTeX gemacht bzw. machen müssen. Die Anzahl der Dokumente die ich so anlege, hält sich in Grenzen. Aber für diesen Zweck wäre es perfekt. Es ist sogar möglich per Jinja2 Templates für LaTeX anzulegen und zu benutzen. Dies macht alles schön einfach und man kann per for-loop in dem Template rum machen. Man muss nur die Start-, und Endstrings anpassen damit LaTeX kompatibler Code erzeugt wird. Die Coupons sollten nicht größer als A8 sein damit ich besonders viele auf ein A4-Papier drucken kann. Das war dann die nächste Hürde. Aber dank includepdf kann man mehrere PDFs auf ein größeres platzieren. Was mich an LaTeX so abschreckt ist die unüberschaubarkeit von Erweiterungen und Distributionen. Vor allem der Stand der Distributionen in den Linux Distributionen. Irgendwie scheint immer was zu fehlen. Der Befehl tlmgr failed immer. Ich konnte ihn noch nicht zum laufen bekommen. Wenn ich Zugriff zu richten Internetz habe, werde ich mir mal eine ganze LaTeX-Distribution anschauen.

Alles zusammen knuppern und fertich...

pyhashwall

pyhashwall

Ich hänge ganz schön hinter her. Nebenbei sind ein paar kleinere Projekte entstanden und ich hatte kaum Zeit darüber zu bloggen. Die wilde Fahrt geht weiter um ein wenig das Programmieren zu lernen. Da ich nun schon ein paar Sachen mit Flask gemacht habe, wollte ich sehen wie ich "Echtzeit"-Stuff damit realisieren kann. Mal gegoogelt und auf Flask-SocketIO gestossen. Eine Socket.IO Integration für Flask. Noch nie etwas zuvor damit gemacht. Nur ab und zu gelesen. Vor JavaScript habe ich erstmal einiges an Respekt. Immer wenn ich was einbauen musste, war ich froh das es lief. Erklären oder verstehen konnte ich es nicht wirklich. Mittlerweile komme ich Schritt für Schritt dahinter (also die einfachen Sachen). Also brauchte ich ein Projekt. Wo sind eigentlich die ganzen Tweetwalls hin? Wenn man mit seinem Freunden eine Runde "Tatort" schaut und lustige Tweets lesen will. Und es wurde geboren: die pyhashwall. Dank dem Python-Modul tweepy kann man auf den Twitter-Stream zugreifen und so nach Hashtags ausschau halten, Bilder zwischenspeichern und das ganze per socketio auf die Seite "pushen". Gestern habe ich das ganze mal mit #tatort getestet. Lief...

Flask Bootstrap Local

Ich arbeite gerade an einem Quiz-"Framework". Es ist primär für den Kunst-Unterricht meiner Frau. Und was man an den meisten Schulen ja immer noch nicht hat: Internetz. Deswegen war es wichtig das solche Sachen wie JavaScript und CSS lokal ausgeliefert werden und nicht online. Um das ganze schnell und ansehnlich zu gestalten, wollte ich Bootstrap nutzen. Noch kompfortabler geht das unter Flask mit Flask-Bootstrap. Einfach installieren und einknuppern. Schon gibt es eine Template-Base die man verwenden kann. Einziger offensichtlicher Nachteil war: JS und CSS kommen aus dem Netz. Aber ich lag falsch. Die Docs deuteten an das er auch Lokal ausliefern kann. Wie man das macht... muss man sich natürlich aus dem Code und Google zusammen suchen. Der Code verriet das es eine Config-Variabel mit dem Namen "BOOTSTRAP_SERVE_LOCAL" gibt. Noch ein wenig Suche und ich wusste dann wie ich sie vom Standard "False" auf "True" setzen konnte.

app = Flask(__name__)
app.config['BOOTSTRAP_SERVE_LOCAL'] = True
Bootstrap(app)

Wäre ja zu einfach das so in die Docs zu schreiben ;-).