Seite 1 von 1

einfaches, experimenelles "web framework"

Verfasst: Dienstag 30. Januar 2007, 23:21
von Costi
eien web page als klasse wird in einen dict aenlichen obkekt gespeichert (zb shelve oder zodb). mit Threading: hier

eien mehr oder wenige nuetzliche classen-homepage die dies nuetzt: hier

etwas code das beides zum zusammenspiel bringt: hier


gruesse
costi

Verfasst: Mittwoch 31. Januar 2007, 11:43
von Leonidas
Wow, du hast in allen drei Dateien fast keine Kommentare und die einzigen Kommentare sind zudem noch inline.. :shock:
Und um ehrlich zu sein verstehe ich nicht, was dein Post aussagt.

Du hast also ein "Webframework" geschafften, das webentwicklung so weit wie möglich verkompliziert?
Costi hat geschrieben:eien web page als klasse wird in einen dict aenlichen obkekt gespeichert (zb shelve oder zodb)
Darunter stelle ich mir eher sowas vor wie Nevow Stan oder Brevé. Ist auch wesentlich simpler und eleganter.

Achja, und "for_ever" schreibt man als "forever", also zusammen - das ist ein Wort.

Verfasst: Mittwoch 31. Januar 2007, 15:01
von Costi
also ich finds gut


es ging dabei ja nur um einen experiment und nicht um ein XY-famous-monster-framework clone

Verfasst: Mittwoch 31. Januar 2007, 15:13
von Leonidas
Costi hat geschrieben:es ging dabei ja nur um einen experiment und nicht um ein XY-famous-monster-framework clone
Oder darum den grausamsten möglichen Code zu produzieren. Einrückung mit Tabs zum Beispiel. Oder die Signatur von Server.__init__(): dasmeinst du doch nicht ernst, oder? Von PEP8 hast du aber sicherlich schon mal gehört, oder? Auch while 1: nutzt man schon längst nichtmehr, seitdem mit Python 2.2.x die Namen True und False dazugekommen sind, die viel aussagekräftiger sind. Fürslogginggibt esübrigens das loggin-Modul, auch schon lange.

Oder noch so ein Highlight:

Code: Alles auswählen

method, req, proto = resp.split(" ", 2)#vileicht auch 2
Vielleicht sinds aber auch 5, 10, oder 65356? Wer braucht denn bitte solche nichtssagenden Kommentare?

Mal weitergucken:

Code: Alles auswählen

self.logger("got request from " + ip + ":\n " + repr(resp) + "\nparsed it to: " + str(param))
Für solche zwecke gibt es eben Formatstrings, sie machen solche seltsamen Strukturen lesbarer.

webPage (seltsamer Name, welche Konvention ist denn das?) hat auch noch eine Funktion WebPage._formatHTML() die ja richtig gruselig ist. Davon abgesehen gibt es kein HTML 4.1, sondern nur HTML 4.01. Und jedes Leerzeichen durch   zu erstetzen ist ebenso unrichtig. Ich kann mir absolut nicht vorstellen, dass irgendwer nachvollziehen kann, wie dort HTML generiert wird.. obfuscation schlechthin.

Verfasst: Mittwoch 31. Januar 2007, 15:28
von sape
Leo nicht soviel nörgeln ;)

Ich möchte nochmal PEP8 in den Raum werfen. Sollte man sich IMHO daran halten. Daher kann ich das nicht genug wiederholen.


Zu deinem Code ansich kann ich nichts sagen (außer das es gegen etliche wichtigste Regeln von PEP8 verstößt) da ich mich in dem Gebiet nicht auskenne.

lg

Verfasst: Mittwoch 31. Januar 2007, 15:37
von sape
Leonidas hat geschrieben: webPage (seltsamer Name, welche Konvention ist denn das?) hat auch noch eine Funktion WebPage._formatHTML() die ja richtig gruselig ist.
Ja, IMHO solte man HTML-Code von Python-Code trennen (Es sei es ist ein Wegwerfscript).

Auch da

Code: Alles auswählen

self.logger("got request from " + ip + ":\n " + repr(resp) + "\nparsed it to: " + str(param))
gebe ich dir recht.

Sieht so

Code: Alles auswählen

self.logger("got request from %s:\n%s\nparsed it to: " % (ip, repr(resp), str(param)))
besser aus (Wobei ich mir jetzt nicht die Mühe gemacht habe Typen zu überprüfen. Müsste aber so grob hinhauen.).

Wobei ich würde es gleich so machen:

Code: Alles auswählen

self.logger(
    "got request from %s:\n"
    "%s\n"
    "parsed it to: " % (
        ip, repr(resp), str(param)
    ))
Ist so offensichtlicher.

lg

Verfasst: Freitag 2. Februar 2007, 07:27
von mitsuhiko
sape hat geschrieben:

Code: Alles auswählen

self.logger("got request from %s:\n%s\nparsed it to: " % (ip, repr(resp), str(param)))
besser aus (Wobei ich mir jetzt nicht die Mühe gemacht habe Typen zu überprüfen. Müsste aber so grob hinhauen.).
Ich würde es so machen:

Code: Alles auswählen

self.logger("got request from %s:\n%r\nparsed it to: %s" % (ip, resp, param))
Und ansonsten schließe ich mich Leonidas an.