Python

Organisation von Softwareprojekten mit Trac

trac logoSchon ziemlich lange her, dass ich hier etwas geschrieben habe, aber die letzten Monate hatte ich leider nicht viel Zeit für meinen Blog.

Was mich ohne jede Überleitung auch direkt zum Thema dieses Artikels bringt...

Wie organisiere ich mir allein und auch im Team die täglichen Aufgaben, die in der Softwareentwicklung anfallen.

Ich will dabei nicht auf Organisationsmethoden, wie Scrum, Kanban, etc. eingehen, sondern hier ein praktisches Tool vorstellen, mit dem ich mir meinen Alltag organisiere und versuche die täglichen Aufgaben zu strukturieren, und zu dokumentieren..

Das Tool, was bei mir jeden Tag im Einsatz ist, man erkennt es schon an der Grafik rechts, ist Trac.

Dieses Programm stelle ich hier kurz vor und erkläre, wofür ich es überhaupt benutze und warum.

Trac 

Dieses Tool bezeichne ich gerne als ticketbasiertes Projektmanagementsystem, welches besonders für Entwicklerteams sehr gut geeignet ist, da es eine Verbindung schafft zwischen den zu erledigenden Aufgaben und dem jeweils umgesetzten Quellcode. Dies wird erreicht durch eine Anbindung an verschiedene Versionierungssysteme, wie Subversion, CVS oder inzwischen auch Git.

 

Die python-basierte Software ist open-source und bietet die Möglichkeit Aufgaben, die in einem Projekt zu erledigen sind, in einzelne Teilaufgaben (Tickets) zu strukturieren. Diese können dann den jeweiligen Teammitgliedern zugewiesen werden.

Ist eine Aufgabe erledigt, so kann das Ticket auf den nächsten Status gesetzt werden, wobei man die einzelnen Statuus (Mehrzahl von Status, wie ich gerade gelernt habe :)) selbst definieren kann. Somit ist es möglich für jedes Projekt den passenden Workflow abzubilden.

In meinen bisherigen Webprojekten hat sich z.B. folgender Workflow bewährt:

Neues Ticket -> zugewiesen an Entwickler -> local implementiert -> auf Testserver deployed und getestet -> auf Produktionsserver deployed und getestet -> fixed

 

Wobei es auch durchaus möglich ist, einzelne Statuus zu überspringen, wenn z.B. im Falle eine Hotfixes, direkt auf die Produktion deployed wird, ohne Umweg über das Testsystem, oder wenn es sich um Aufgaben handelt, die nicht direkt etwas mit dem Schreiben von Code zu tun haben.

Der hier gezeigte Workflow ist in der Praxis natürlich noch erweitert um weitere Statuus (ich liebe dieses Wort :)), zB. muss es bei jedem Status möglich sein, auch wieder zurück zum Anfang zu kommen, usw.

Wie man Trac und Subversion auf einem Debian System installiert und konfiguriert, habe ich schon in einem früheren Posting erklärt, deshalb gehe ich hier nicht nochmal darauf ein.

Stattdessen hier noch ein Link zur Demoseite von Trac 0.12:

http://trac.edgewall.org/demo-0.12

Und weiter gehts mit der Vorstellung einiger Standard Plugins, die bei mir bei jeder Installation dabei sind.

 

Fail2ban - der bessere Weg IPs zu blocken

Nachdem ich vor kurzem von der SpamAttacke auf den MailServer eines Kumpels berichtet habe und davon wie ich letztendlich die IPs der versendenden Rechner per iptables geblockt habe, hat unser Hoster reagiert und das Tool Fail2ban installiert, dass ich hier mal kurz vorstelle.

Fail2ban ist, um es mit den Worten auf der Fail2ban Seite zu formulieren, ein Scanner, der die Logfiles, zB. des Apache oder auch eines Mailserver, wie postfix oder die auth.log für ssh Zugriffe, usw. durchsucht und mittels konfigurierbarer RegEx-Regeln entscheidet, ob eine IP geblockt werden soll, oder nicht. Damit kann zB. verhindert werden, dass von einer IP übermässig oft versucht wird, per ssh auf den Server zuzugreifen. Die Anzahl der möglichen Versuche ist einstellbar, default ist hier 3. Fail2ban nutzt zum Blocken der IPs die schon auf einem System vorhandenen Möglichkeiten, wie iptables oder shorewall und richtet, wenn eine Regel in den Logfiles anschlägt, einen entsprechenden neuen Eintrag mit der IP in der firewall (zB. iptables) ein.

Fail2ban ist in Python geschrieben und bringt einen eigenen Server daemon mit, der multithreaded ist und auf einem Unix socket auf Kommandos des zugehörigen fail2ban-clients lauscht.

Um die Arbeitsweise und die Konfiguration von Fail2ban zu zeigen, hier ein Beispiel:

Netzwerkprogrammierung mit Python

in

Im letzten Artikel habe ich über meinen Einstieg in Python geschrieben, und nun steig ich auch gleichmal etwas tiefer in die Thematik ein.

In diesem Beitrag stelle ich erstmal eine Linksammlung zum Thema "Netzwerkprogrammierung mit Python" vor.

Hintergrund ist der, dass ich gerade dabei bin, eine Art Datensammler mit Python zu entwickeln, und mich dabei natürlich auf schon vorhandene Bibliotheken bzw. Tools stütze. Noch bin ich mir nicht sicher, welches der vielen Frameworks und Bibliotheken zu meinem Projekt paßt, deshalb hier erstmal eine recht breite Auswahl an Infos zum Thema.

Grundlagen

http://diveintopython.org/http_web_services/index.html

http://openbook.galileocomputing.de/python/python_kapitel_20_001.htm#mj6a610f312e2abfe628f8f50a8629087d
 

SOAP Handling in Python

http://diveintopython.org/soap_web_services/index.html
 

ZSI

http://www.mutschler-net.de/htmlout/htmlout/node17.html

http://www.opensourcetutorials.com/tutorials/Server-Side-Coding/Python/python-soap-libraries-2/page1.html

http://www.mutschler-net.de/htmlout/htmlout/PythonSoapTut.html

http://plone.org/documentation/kb/import-soap-client-object
 

Twisted Framework

Python, die etwas andere Scriptsprache

in

Mein erster Artikel zu Python hier im Blog, was wohl daran liegt, dass ich erst seit kurzem mit Python arbeite.

Bisher habe ich neben einigen Ausflügen in die Javawelt und auch ein paar Gehversuchen im C++ Umfeld eigentlich die meiste Zeit in PHP programmiert.
 

Und nun also Python ... zuerst mal, warum dieser Titel, die andere Scriptsprache.

Im Gegensatz zu PHP läuft Python stateful in einem echten Applikationserver, erlaubt persistente HTTP-Verbindungen und auch echte parallele Verarbeitung und hat sicher auch noch sehr viel mehr Vorteile im Gegensatz zu PHP, die ich noch gar nicht alle kenne.
Ich will an dieser Stelle natürlich keine Grundsatzdiskussion starten über die Vor- und Nachteile von Python vs. PHP, ich möchte nur meine Entscheidung mit Python zu beginnen, begründen, da meine aktuellen Projekte mit Python einfach besser zu bewältigen sind, als mit PHP.

Worum geht es also genau:

Inhalt abgleichen