Zwei Projekte geplant - "Werkzeuge" für Python?
Verfasst: Donnerstag 25. Februar 2010, 17:09
Hallo,
ich möchte demnächst zwei Projekte angehen. Ein kleineres zum Einstieg, ein großes danach und bräuchte Eure Hilfe:
Zum Umstieg von PHP auf Python habe ich mir die Aufgabe gestellt, eine Software zur Entscheidungsfindung mit Hilfe eines decision trees zu programmieren.
A byte of python habe ich gelesen und einige Codestücke ausprobiert.
Die Frage die sich mir stellt ist die nach den richtigen Werkzeugen, wobei ich mir schon gewisse Gedanken gemacht habe. Erst aber besser eine Beschreibung der Projekte:
Zum 1. Projekt:
Dazu benötige ich einen Baum, der mit jeder Entscheidung an einem Knoten um die möglichen Handlungsalternativen wächst. Dabei kann ein Knoten mehr als zwei Kinder haben - also kein binary tree.
Ich analysiere gerade den Quellcode von http://treeline.bellz.org und habe mir http://articles.sitepoint.com/article/h ... database/3 angesehen.
Dort wird die Nummerierung des Baumes anhand der Tree Traversale beschrieben, die ich gerne in Python nachprorammieren möchte. Dabei soll der Baum auf ein Liste abgebildet werden, die die Knotenobjekte enthält. Ein Knotenobjekt soll dabei die zwei "Identifikationsnummern", den Knotennamen etc. aufnehmen.
Auch einen XML Baum mittels element-tree habe ich in Erwägung gezogen - bin mir aber nicht schlüssig, ob mich das weiter bringt bzw. wie ich die Bäume später abspeichern möchte (in einer DB oder als XML).
Gibt es hier schon eine Klasse für Python die ich nicht gefunden habe und solche Bäume erzeugen kann?
Zum 2. Projekt:
Ich würde gerne eine Open Source Software für Anwaltskanzleien entwickeln. Ich bin mir im Klaren darüber, dass dies nicht innerhalb von zwei Wochen geht, aber in diesem Segment gibt es nichts wirklich brauchbares. Nun möchte ich das Projekt von Anfang an auf eine solide Basis stellen. Das heißt für mich in erster Linie Python. Meine Rahmenbedingungen die ich mir schon überlegt habe:
* Client - Server Architektur, da mehrere Nutzer im System arbeiten sollen. Client = Browser, d.h. der Anwender soll über einen Browser arbeiten.
* Client hat in jedem Fall OpenOffice installiert, wobei ich hier http://www.lucid-desktop.org/ im Auge behalten möchte, die für 2.0 auf Python umsteigen. Vielleicht gibt es ja dann OO im Browser. http://www.ulteo.com/home/en/home habe ich auch gesehen.
* Client läuft auf Linux. Kompatibilität mit Windows also zweitrangig. Nutzerzahl <= 50.
* Server läuft auf Linux in einem Netzwerk - abgesichert durch IPcop oder ähnliche OpenSource Produkte
* Speicherung der Daten in MySQL und Dateien (Schriftsätze, PDFs etc.) in Ordnerstruktur auf Server.
* Die Features der Software sind im Einzelnen erst einmal nicht wirklich wichtig. Beispielhaft seien Akten- und Mandantenverwaltung, gemeinsames Adressbuch, gemeinsamer Kalender etc. genannt. Wichtig wären mir folgende Dinge:
- Serverseitig soll später auf OCR (Tesseract/Ocropus) zugegriffen werden können, so das gescannte Dokumente in die Anwendung eingelesen und etwa durch Indizierung weiterverarbeitet werden. Weiterhin wäre in Zukunft eine Interaktion mit Asterisk und Faxserver denkbar. Auch eine Spracherkennung von http://cmusphinx.sourceforge.net sollte später vielleicht integrierbar sein.
- Interaktion des Serverprogramms mit den einzelnen OO Installationen auf den Clientrechnern (Beispiel: Client teilt Server mit, er möchte einen neuen Schriftsatz erstellen. Server weist OO auf Client an zu starten, ein Dokument zu öffnen und nach Bearbeitung wird es an den Server übermittelt, der es in einer zentralen Ordnerstruktur ablegt und die Dokumentendaten in die Datenbank übernimmt).
Welche Python Werkzeuge nehm' ich denn da am Besten dafür?
Serverseite:
-Zope (dann würde ich mir die dortige DB ansehen) - kann Zope mit System (OCR etc.) interagieren?
-Django (gefällt mir sehr) - ist zwar ein Webframework, aber spricht was dagegen das als "serverseitige" Basis-Lösung zu benutzen?
Würde gerne ein Ajax Framework für den Client verwenden, kann aber so gut wie kein JS. Pyjama http://pyjs.org/ würde mir - meine ich zumindest - sehr entgegenkommen.
Wie würdet Ihr das anstellen? Wäre ja gut, wenn ich in Projekt 1 lernen würde mit den Werkzeugen die ich im Projekt 2 verwende umzugehen - auch wenn diese dann vielleicht etwas überdimensioniert sind.
Grüße
Descartes
PS: Danke fürs Durchhalten bis hierher!
ich möchte demnächst zwei Projekte angehen. Ein kleineres zum Einstieg, ein großes danach und bräuchte Eure Hilfe:
Zum Umstieg von PHP auf Python habe ich mir die Aufgabe gestellt, eine Software zur Entscheidungsfindung mit Hilfe eines decision trees zu programmieren.
A byte of python habe ich gelesen und einige Codestücke ausprobiert.
Die Frage die sich mir stellt ist die nach den richtigen Werkzeugen, wobei ich mir schon gewisse Gedanken gemacht habe. Erst aber besser eine Beschreibung der Projekte:
Zum 1. Projekt:
Dazu benötige ich einen Baum, der mit jeder Entscheidung an einem Knoten um die möglichen Handlungsalternativen wächst. Dabei kann ein Knoten mehr als zwei Kinder haben - also kein binary tree.
Ich analysiere gerade den Quellcode von http://treeline.bellz.org und habe mir http://articles.sitepoint.com/article/h ... database/3 angesehen.
Dort wird die Nummerierung des Baumes anhand der Tree Traversale beschrieben, die ich gerne in Python nachprorammieren möchte. Dabei soll der Baum auf ein Liste abgebildet werden, die die Knotenobjekte enthält. Ein Knotenobjekt soll dabei die zwei "Identifikationsnummern", den Knotennamen etc. aufnehmen.
Auch einen XML Baum mittels element-tree habe ich in Erwägung gezogen - bin mir aber nicht schlüssig, ob mich das weiter bringt bzw. wie ich die Bäume später abspeichern möchte (in einer DB oder als XML).
Gibt es hier schon eine Klasse für Python die ich nicht gefunden habe und solche Bäume erzeugen kann?
Zum 2. Projekt:
Ich würde gerne eine Open Source Software für Anwaltskanzleien entwickeln. Ich bin mir im Klaren darüber, dass dies nicht innerhalb von zwei Wochen geht, aber in diesem Segment gibt es nichts wirklich brauchbares. Nun möchte ich das Projekt von Anfang an auf eine solide Basis stellen. Das heißt für mich in erster Linie Python. Meine Rahmenbedingungen die ich mir schon überlegt habe:
* Client - Server Architektur, da mehrere Nutzer im System arbeiten sollen. Client = Browser, d.h. der Anwender soll über einen Browser arbeiten.
* Client hat in jedem Fall OpenOffice installiert, wobei ich hier http://www.lucid-desktop.org/ im Auge behalten möchte, die für 2.0 auf Python umsteigen. Vielleicht gibt es ja dann OO im Browser. http://www.ulteo.com/home/en/home habe ich auch gesehen.
* Client läuft auf Linux. Kompatibilität mit Windows also zweitrangig. Nutzerzahl <= 50.
* Server läuft auf Linux in einem Netzwerk - abgesichert durch IPcop oder ähnliche OpenSource Produkte
* Speicherung der Daten in MySQL und Dateien (Schriftsätze, PDFs etc.) in Ordnerstruktur auf Server.
* Die Features der Software sind im Einzelnen erst einmal nicht wirklich wichtig. Beispielhaft seien Akten- und Mandantenverwaltung, gemeinsames Adressbuch, gemeinsamer Kalender etc. genannt. Wichtig wären mir folgende Dinge:
- Serverseitig soll später auf OCR (Tesseract/Ocropus) zugegriffen werden können, so das gescannte Dokumente in die Anwendung eingelesen und etwa durch Indizierung weiterverarbeitet werden. Weiterhin wäre in Zukunft eine Interaktion mit Asterisk und Faxserver denkbar. Auch eine Spracherkennung von http://cmusphinx.sourceforge.net sollte später vielleicht integrierbar sein.
- Interaktion des Serverprogramms mit den einzelnen OO Installationen auf den Clientrechnern (Beispiel: Client teilt Server mit, er möchte einen neuen Schriftsatz erstellen. Server weist OO auf Client an zu starten, ein Dokument zu öffnen und nach Bearbeitung wird es an den Server übermittelt, der es in einer zentralen Ordnerstruktur ablegt und die Dokumentendaten in die Datenbank übernimmt).
Welche Python Werkzeuge nehm' ich denn da am Besten dafür?
Serverseite:
-Zope (dann würde ich mir die dortige DB ansehen) - kann Zope mit System (OCR etc.) interagieren?
-Django (gefällt mir sehr) - ist zwar ein Webframework, aber spricht was dagegen das als "serverseitige" Basis-Lösung zu benutzen?
Würde gerne ein Ajax Framework für den Client verwenden, kann aber so gut wie kein JS. Pyjama http://pyjs.org/ würde mir - meine ich zumindest - sehr entgegenkommen.
Wie würdet Ihr das anstellen? Wäre ja gut, wenn ich in Projekt 1 lernen würde mit den Werkzeugen die ich im Projekt 2 verwende umzugehen - auch wenn diese dann vielleicht etwas überdimensioniert sind.
Grüße
Descartes
PS: Danke fürs Durchhalten bis hierher!