Portierbare GAE Webapp - (g)bottle-wiki

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Antworten
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Möchte hier noch mal auf meine Wiki WSGI-App, die ich im Laufe eines Projekts erstelle (s. http://www.python-forum.de/topic-22387.html ), verweisen.

Die aktuelle Version verwendet den DAL von web2py, das DB-Model sollte damit mit dem GAE Datastore und auch mit allen gängigen SQL Datenbanken laufen. Bisher sind GAE und wsgiref+sqlite erfolgreich getestet.

Das Wiki selbst ist bisher noch im Prototyp-Stadium, Seiten anlegen und bearbeiten funktioniert allerdings schon. "Markdown" wird als Syntax verwendet (aktivierte Extensions: 'codehilite', 'toc', 'wikilinks'). Wie der Namen schon sagt, ist das Rahmenwerk im Hintergrund bottle.

App: http://gbottle-wiki.appspot.com/
Repo: http://bitbucket.org/ms4py/gbottle-wiki/

@defnull: Ich habe vorerst deine "pygments.css" für das Highlighting genommen. Geht das in Ordnung? Soll ich einen Verweis in der CSS hinterlassen?
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Hattest du nicht gemeint, dein Wiki-Modell wäre komplexer als einfach nur eine Tabelle mit zwei Attributen Titel und Text? Mehr erkenne ich aber in dem Quelltext nicht. Außerdem vermisse ich Transaktionen, die doch bei der GAE zwingend notwendig sind, um Daten sicher zu ändern. Was passiert, wenn `create_page` nicht klappt, weil ein anderer es mit dem selben Titel zur selben Zeit macht? Was passiert, wenn `save_content` für eine nicht-existierende Seite aufgerufen wird (es passiert eine Exception)? IMHO müsste das Anlegen oder Ändern einer Seite die üblichen atomare test-and-set-Semantik haben bzw. das, was mysql/sqlite mit "insert or replace into" erreicht. Die Seite übrigens schon in der DB anzulegen, wenn man nur den Editor für eine nicht-existende Seite aufruft, finde ich kein gutes Design. Das würde ich (siehe oben) erst beim Speichern machen.

Ich sehe auch keine Behandlung von den üblichen Encoding-Problemen, wenn man URLs bzw. Seitennamen mit Sonderzeichen hat. Nicht wichtig für die DB, aber IMHO ein wichtiger Aspekt bei der Beurteilung eines Web-Rahmenwerks, denn darum möchte ich mich nicht "zu Fuß" kümmern müssen. Das dein Beispiel außerdem noch XSS-anfällig ist, muss ich nicht weiter erwähnen, oder? :)

Wenn das Beispiel für einen Vortrag geschrieben ist, würde ich empfehlen, noch mal einen Schritt zurückzutreten und zu überlegen, was es eigentlich demonstrieren soll. Meine Anmerkungen sind in diesem Fall total irrelevant. Und das es prinzipiell geht, wird wohl auch niemand anzweifeln. Spannend wäre IMHO doch eher die Frage, was muss ich tun, wo hilft mir das Rahmenwerk, was ist doof.

Ein guter Indikator ist, ob man jeweils ein Konzept auf eine (Powerpoint-)Folie bekommt, ohne die Schrift sagen wir mal kleiner als 24pt zu machen. Wenn das nicht geht, ist das Rahmenwerk nicht gut genug...

Stefan
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

sma hat geschrieben:Hattest du nicht gemeint, dein Wiki-Modell wäre komplexer als einfach nur eine Tabelle mit zwei Attributen Titel und Text? Mehr erkenne ich aber in dem Quelltext nicht.
Deshalb ist es ja noch ein Prototyp ;)
sma hat geschrieben:Außerdem vermisse ich Transaktionen, die doch bei der GAE zwingend notwendig sind, um Daten sicher zu ändern. Was passiert, wenn `create_page` nicht klappt, weil ein anderer es mit dem selben Titel zur selben Zeit macht? Was passiert, wenn `save_content` für eine nicht-existierende Seite aufgerufen wird (es passiert eine Exception)? IMHO müsste das Anlegen oder Ändern einer Seite die üblichen atomare test-and-set-Semantik haben bzw. das, was mysql/sqlite mit "insert or replace into" erreicht.
Mhh, ich bin eigentlich davon ausgegangen, dass der DAL automatisch Transaktionen verwaltet. Aber das ist leider nicht so. Vielleicht ist das mit der Portabilität doch keine so gute Idee?!
sma hat geschrieben:Die Seite übrigens schon in der DB anzulegen, wenn man nur den Editor für eine nicht-existende Seite aufruft, finde ich kein gutes Design. Das würde ich (siehe oben) erst beim Speichern machen.
Das ist mir auch schon aufgefallen :)
sma hat geschrieben:Ich sehe auch keine Behandlung von den üblichen Encoding-Problemen, wenn man URLs bzw. Seitennamen mit Sonderzeichen hat. Nicht wichtig für die DB, aber IMHO ein wichtiger Aspekt bei der Beurteilung eines Web-Rahmenwerks, denn darum möchte ich mich nicht "zu Fuß" kümmern müssen. Das dein Beispiel außerdem noch XSS-anfällig ist, muss ich nicht weiter erwähnen, oder? :)
"Prototyp" ;)
sma hat geschrieben:Wenn das Beispiel für einen Vortrag geschrieben ist, würde ich empfehlen, noch mal einen Schritt zurückzutreten und zu überlegen, was es eigentlich demonstrieren soll. Meine Anmerkungen sind in diesem Fall total irrelevant. Und das es prinzipiell geht, wird wohl auch niemand anzweifeln. Spannend wäre IMHO doch eher die Frage, was muss ich tun, wo hilft mir das Rahmenwerk, was ist doof.
Das Problem ist, es handelt sich nicht nur um einen Vortrag, ich muss zum einen eine kurze Abhandlung (25-35 Seiten) schreiben und einen Vortrag dazu halten. Es sollte also schon in die Tiefe gehen und einen wissenschaftlichen Charakter haben.
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
Benutzeravatar
Defnull
User
Beiträge: 778
Registriert: Donnerstag 18. Juni 2009, 22:09
Wohnort: Göttingen
Kontaktdaten:

ms4py hat geschrieben:@defnull: Ich habe vorerst deine "pygments.css" für das Highlighting genommen. Geht das in Ordnung? Soll ich einen Verweis in der CSS hinterlassen?
Diese .css Dateien werden von pygments automatisch generiert. Ich erhebe daher keine Copyright-Ansprüche ;) Ganz abgesehen davon ist die MIT Lizenz, unter der alles von Bottle (außer das logo) steht, ehe eine Do-What-The-Fuck-You-Want-But-Don't-Touch-The-Licence-Text Lizenz.
Bottle: Micro Web Framework + Development Blog
Antworten