(jelöscht)
Verfasst: Freitag 31. August 2012, 20:35
(jelöscht)
Seit 2002 Diskussionen rund um die Programmiersprache Python
https://www.python-forum.de/
Sich in einem Tutorial gegen einen etablierten Standard zu stellen ist schon ein wenig eigenartig. Diesen dann nebenher als "schwachsinnig" zu bezeichnen bedarf wohl keinem Kommentar. Eine Äußerung in dieser Art gehört in keinen vernünftigen Text.Vor über einem Jahrzehnt hat man sich jedoch darauf geeinigt vier Leerzeichen zum Einrücken zu verwenden.
Ich für meinen Teil finde es jedoch schwachsinnig mit Leerzeichen einzurücken und nehme deswegen Tabs, weil da jeder selbst entscheiden kann, wie breit die Einrückungen wirklich sind.
+1, hatte das in meiner Liste auch drin, ist aber wohl irgendwo entschwunden.EyDu hat geschrieben:Sich in einem Tutorial gegen einen etablierten Standard zu stellen ist schon ein wenig eigenartig. Diesen dann nebenher als "schwachsinnig" zu bezeichnen bedarf wohl keinem Kommentar. Eine Äußerung in dieser Art gehört in keinen vernünftigen Text.
Auch +1, ich würde sogar noch weiter gehen und sagen, dass jemand der absolut keine Ahnung von Python hat die Finger von Django lassen soll (oder zumindest sehr viel Eigeninteresse mitbringen sollte und nicht wegen jedem falschen Tag oder Beistrich in tuples in #django nachfragen soll -_-)An deiner Stelle würde ich das Tutorial über Python ganz rauslassen, mit so einer kurzen Einführung, welche auch noch beliebige Teile der Sprache behandelt, kannst du eigentlich nur einen Griff inst Klo landenVersteh das nicht falsch, aber die Einführung ist für eine sinnvolle Darstellung zu ungenau, an anderen Stellen im Netz findet man einfach schon fertige und bessere Tutorials. Ich würde einfach darauf verweisen.
Ich hatte auch kein Problem mit deiner Meinung, ich hatte ein Problem mit dem Begriff "schwachsinning". Da kannst du vorher noch so gute Argumente bringen, die Ausdruck reißt es dann ins Unsachliche.enkore hat geschrieben:"*Ich* für *meinen Teil* *finde* ..." ist so eindeutig eigene, nicht-normative Meinung, dass ich das so nicht gelten lasse. Im Tutorial halte ich mich auch an PEP 8, manchmal kommen noch Tabs vor, aber das ist ein Fehler und keine Absicht
Die Klammern gehören nicht zum Funktionsnamen, korrekt. Diese Konvention habe ich mir bei einigen Fachbüchern abgeschaut um den Leser besser zwischen Funktionen und Objekten unterscheiden zu lassen.EyDu hat geschrieben:Vielleicht ein wenig spitzfindig: ich würde nicht von der Funktion "Closure()" schreiben, sondern von der Funktion "Closure". Die Klammern gehören nicht mit zum Funktionsnamen.
Ehrlich gesagt kann ich mir kaum vorstellen, dass das irgendwo notwenig sein sollte. Mal abgesehen davon, dass der Wert eines enums als Ergebnis eines Funktionsaufrufs geliefert wird, welcher explizit getestet werden muss. Ich arbeite mittlerweile Seit mehr als drei Jahren jeden Tag mit C++, mis ist bisher noch keine einzige Bibliothek untergekommen, in der ein Test auf Wahrheitswerte notwenig gewesen ist. Aber wie gesagt, ich will nichts an einer Zeile Code aufhängen, jeder baut sich mal irgendwo einen ärgerlichen Schnitzer ein, über den er sich dann ärgert.enkore hat geschrieben:Ist ne blöde Angewohnheit; manchmal schreibe ich noch die Wahrheitskonstante dahinter, kommt vom Arbeiten mit C/C++ und Libs, die da komischen Kram definieren.
Ok, wenn du nur grundlegende Kenntnisse in Python voraussetzt, dann kann man das durchaus so machen. Ich würde es dann allerdings dort einbringen, wo es benötigt wird. So arbeitet man auch gleich an einem konkreten Beispiel und der Leser kann sich etwas darunter vorstellen. Etwas am Anfang zu erkären, was dann erst in den späteren Kapiteln irgendwo genutz wird, finde ich etwas ungeschickt. Wahrscheinlich wird man dann die Einführung an entsprechender Stelle nur noch einmal lesen müssen.enkore hat geschrieben:Kann ich machen, allerdings finde ich es sehr sinnvoll kurz zu erklären, was Dekoratoren, Closures und Generatoren sind, weil nicht jeder die kennt oder die Funktionsweise ganz durchschaut, aber sie wichtige Konzepte sind.
Das ist auch gut so, denn IDR sollte man dort auch nichts hinschreiben, es gibt --user für eine Installation nach ~/.local oder man verwendet ein virtualenv (was alles in allem die beste Idee ist)enkore hat geschrieben:@3: IDR ist das (Standard-)Installationsverzeichnis nicht von normalen Nutzern beschreibbar.
Relevant oder nicht, ein Tutorial sollte imo aktuelle best practices erklären.@2: Halte ich für nich so relevant, kann ich ändern
FastCGI ist nur eine Option für Nginx, die aber keiner verwendet. Grundsätzlich will man von https://docs.djangoproject.com/en/1.4/howto/deployment/ nur die erste Option verwenden und FastCGI/SCGI/AJP komplett vergessen.@8: Eh ich glaube du verwechselst FastCGI und CGI. Jeder, der z.B. nginx nutzt, nutzt FastCGI als Schnittstelle zwischen Appserver und Webserver.
Imo tunnel auf Gunicorn oder UWSGI (Bzw das ist das was ich mitbekomme dass die Leute verwenden). FastCGI mit flup verursacht erfahrungsgemäß die meisten Probleme und darum rate ich davon ab. Wer FastCGI verwenden will kann es natürlich gerne tun, aber ich würde es in einem Tutorial nicht erwähnen (bzw erst hinter den moderneren Optionen).BlackJack hat geschrieben:@apollo13: Was benutzt man denn dann für nginx als „best practice”? Die verlinkte Django-Doku sagt da irgendwie nichts zu. Und wenn man im Netz sucht findet man Anbindungen per FastCGI und diverse Proxy-Lösungen mit nginx diversen WSGI-Servern. Ich hatte nicht den Eindruck das explizit von FastCGI abgeraten oder eine der anderen Lösungen als *die* Lösung hervor sticht.
auch FastCGI via flup ist WSGIenkore hat geschrieben:Nach meinem gegenwärtigen Kenntnissstand wären das FastCGI via flup und WSGI (via uwsgi, gunicorn oder mod_wsgi) in Verbindung mit nginx oder Apache 2.
Was ziemlich egal ist, die meisten großen Deployments müssen so oder so irgendwas händisch kompilieren, ist zwar suboptimal geht aber oft nicht anders. (Klar, für nen Tutorial ist das blöd, aber wer Debian stable verwendet kann dann ruhig auch apache + mod_wsgi verwendenenkore hat geschrieben:Sehe ich ähnlich, in Debian Stable ist eh noch nginx 0.7.x drin, den man selber kompilieren müsste, um uwsgi-Support zu bekommen.
Hmm, als langjähriger Supporter im #django Channel würde ich nicht behaupten, dass FastCGI einfach ist, ymmv. Klar wenns rennt rennts nicht so schlecht, aber bis es mal rennt ists nen PITA (ich sag nur FORCE_SCRIPT_NAME und Freunde…)Mit FCGI habe weder ich noch sehr viele andere Leute je Probleme gehabt, es ist schnell und einfach und überall verfügbar. Natürlich gehe ich im Deployment-Kapitel auch auf die moderneren Techniken ein, aber für viele Anwendungen wird der Appserver per FCGI angebunden werden...