wildlife

Archive for Tutorials

Django gehostete Webseite über iFrame einbinden

// April 5th, 2014 // No Comments » // IT, Python, Tutorials

Ich habe mir in den letzten Tagen vermehrt Django angeschaut, da ich gerne über Python Webseiten bzw. Webapplikationen  bereitstellen möchte. Nicht nur, dass ich der Meinung bin, dass Django Anfragen schneller bearbeitet und ressourcenschonender ist als Apache (inbesondere hinter Nginx), sondern auch, dass die Performance und Sicherheit PHP überlegen ist. Darüber hinaus bietet Python weitreichendere Funktionalität, wenn es z.B. um Websockets oder NoSQL-Datenbanken geht.

Auf Django selbst bin ich über das Buch "Test-Driven Web Development with Python" von Harry Percival aufmerksam geworden. Eigentlich wollte ich mich nur in das Thema "Test-Driven Development" einarbeiten, konnte dann aber dem Angebot von O'Reilly nicht widerstehen.

Nachdem ich mich ein wenig eingearbeitet habe und die nächsten Webseiten mit Ausrichtung auf Statistiken und Monitoring in der Planung habe, fiel mir ein, wie schön es doch wäre diese bzw. einen Teil dieser Seiten per iFrame auf andere Webseiten, wie z.B. Blog einzubinden. Damit ich es nicht vergesse und vielleicht auch jemand anderes hiervon profitiert, schreibe ich einfach einen kleinen Blogartikel hierzu: (more…)

Überprüfung der Performance von Funktionen in Python mit timeit

// January 6th, 2014 // No Comments » // IT, Python, Tutorials

In einem meiner letzten Blogartikel wurde ich von Alex in den Kommentaren auf eine mögliche Verbesserung hingewiesen.

Und zwar ging es um den folgenden Codeschnipsel, mit welchem ich den Unix-Timestamp der vollen Stunde, bei Angabe eines beliebigen Timestamps, berechnet habe: (more…)

Reload einer Konfigurationsdatei bei Änderung in Python mit watchdog Modul

// January 5th, 2014 // No Comments » // IT, Python, Tutorials

Um Werte in einem Python-Script einfach ändern zu können, lege ich meist im Scriptverzeichnis eine config.py ab, welche die benötigten Werte und Einstellungen enthält. Ab und an, ist es jedoch notwendig, diese Werte anzupassen. Besonders schön wäre es, wenn das Python-Script diese Änderungen übernimmt, ohne neu gestartet werden zu müssen.

Für ein aktuelles Projekt, sieht die config.py aktuell wie folgt aus: (more…)

Python – Timestamp der letzten vollen Stunde

// December 25th, 2013 // 5 Comments » // IT, Python, Tutorials

Ich erhalte innerhalb eines Scripts aus verschiedenen Datenquellen Informationen, in welchen ein Unix-Timestamp hinterlegt sind. Diese Daten möchte ich, jeweils für die volle Stunde, in eine Datenbank speichern. Die Aufgabe war daher, einen neuen Timestamp zu erzeugen, in welchem die Minuten und Sekunden des originalen Timestamps nicht berücksichtigt sind. Hier das Script mit der Lösung: (more…)

Unable to find vcvarsall.bat bei Installation von Python-Paketen unter Windows

// December 6th, 2013 // No Comments » // IT, Python, Tutorials

Ich arbeite derzeit an einem Projekt in Python, und benötige hierzu Twisted für TCP- und FTP-Verbindungen zwischen den Clients und Servern. Da Twisted jedoch auch C-Code im Bauch hat, muss bei der Installation des Moduls, der Quellcode kompiliert werden. Im Gegensatz zu unixoiden Betriebssystemen, welche gcc als Compiler oft mit an Bord haben, ist dies bei Windows nicht der Fall.

Aus diesem Grund erscheint bei der Installation bzw. dem Buildprozess folgender Fehler (Auszug): (more…)

Apache access.log mit node.js in Realtime parsen und zur Weiterverabeitung in RabbitMQ queuen

// May 17th, 2013 // 3 Comments » // IT, Node.js, Tutorials

Für ein firmeninternes Projekt (nein, hier werden keine 'Internals' preisgegeben ;) ) werte ich Apache access.log Dateien aus. Dies geschieht aktuell mittels eines Cronjobs, welcher ein PHP Script startet und das Log Zeile für Zeile ausliest, die Daten via Regular Expressions und StringSplit parsed und anschließend in eine MySQL-Datenbank schreibt. Das Problem hierbei ist, dass sowohl die Dateien (Logrotation ist auf 15 Minuten eingestellt) als auch die Zeilen seriell bearbeitet werden und dies natürlich sehr lange dauert. Zwischenzeitlich habe ich mir bereits gearman angeschaut, um trotz der Verwendung mit PHP diese Prozesse zu parallelisieren, jedoch habe ich hierbei bereits nach kurzer Zeit die Flinte ins Korn geworfen.

Nachdem ich mich nun mittlerweile seit einiger Zeit mit Node.js beschäftigt habe und nach einer knappen Woche auch gut mit RabbitMQ und dem Node.js-Modul node-amqp zurechtkomme, kam mir eine neue Idee. Warum nicht das access.log in Echtzeit auslesen, neu hinzugekommene Zeilen in eine RabbitMQ Queue zu schreiben und dann mit mehreren Worker-Prozessen parallel zu parsen und in eine Datenbank zu schreiben. Somit müsste nicht mehr auf die nächste Log-Rotation (15 min) und die Fertigstellung des Parsing-Scripts gewartet werden und es stünden die Daten nahezu in Echtzeit zur Verfügung.

Hier also die ersten Schritte, um das neue Konzept umzusetzen: (more…)