code-host.de

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Antworten
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo
Und wer jetzt denkt:
jaja der schon wieder, der hat recht! Der schon wieder.

Ich habe in letzter Zeit daran gearbeitet eine einfache Möglichkeit zu erstellen wie ich meine Programme online zu Präsentieren.
Mit der Zeit dachte ich warum nur für mich?

Daraus und aus 0.99€ pro Monat (für die Domain) habe ich http://www.code-host.de gemacht. Die Idee ist die das man nicht mal den Internet-Explorer (kann man das eigentlich so schreiben ohne das jeder an den IE denkt?) starten muss um seine Programme online zu bringen, deswegen wird code-host über ein Programm bedient.

Was mir auch klar ist das jemand der sich auf github oder bitbucket wohl füllt von code-host.de nicht viel halten wird.

Auf der Internetseite von code-host steht "Beta", wolte ich mal betonen :-)
Es gibt nämlich noch ältliches zu machen.

Wer mehr wissen will ich habe ein paar Gedanken in meinem Entwickler Blog ( http://www.code-host.de/user_blog/andyh ) geschrieben.


Achso:
Und wenns einfach nicht wird dann:
-habe ich eine Plattform für meine Programme(Was ich eigentlich wollte)
-etliches gelernt(auch nicht schlecht)
(meine gute Laune bekommt ihr also nicht weg)

Gruß
Andyh
(Warte aufs zerfleischen)
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Andyh hat geschrieben:(meine gute Laune bekommt ihr also nicht weg)

Gruß
Andyh
(Warte aufs zerfleischen)
Nunja, also dann:
  • Die Rechtschreibung ist, ahem, gewöhnungsbedürftig. "vollgenden", "Schauhen" "klicks" "Online", "verfüg", "projekt", "Persönliche", "Persönlichen", "gestalltung"
  • HTML hat für Auflistungen ein eigenes Element, nein, sogar zwei.
  • Das DEB-Paket ist unüblich benannt, normalerweise ist es ``programmname-version-debianversion_architektur.deb``. Selbiges gilt für den Tarball.
  • Hast du lintian über dem Deb laufen lassen?
  • Das Webdesign sieht irgendie schräg aus. Viel zu große Icons, viel zu bunt. IMHO.
Den Code habe ich mir nicht angeschaut, dafür habe ich momentan keine Zeit.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Andyh hat geschrieben:Die Idee ist die das man nicht mal den Internet-Explorer (kann man das eigentlich so schreiben ohne das jeder an den IE denkt?) starten muss um seine Programme online zu bringen, deswegen wird code-host über ein Programm bedient.
Nein, kann man nicht schreiben, da "Internet Explorer" ein Produktname ist. Du suchst den Begriff "Browser". (oder für Computerbildleser: Internetseiten-Anschau-Programm ^^).

Ich habe mal durch zwei Dateien gescrollt: grausam ist an einigen Stellen die richtige Beschreibung. Überall doppelter Code und unnötig kompliziert Dinge. Mal abgesehen davon, dass Kennwörter speichern an sich schon eine suboptimale Angelegenheit ist: sehe ich es richtig, dass du sie im Klartext ablegst?

Wie Leonidas ist es mir aber auch zu viel Code, um ihn genauer anzuschauen.
Das Leben ist wie ein Tennisball.
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Und btw setup.py existiert, dein install Skript ist gelinde gesagt schrecklich ;)
lunar

Das Design ist nicht mein Fall. Die Farbgebung ist nicht sehr augenfreundlich, die Ausrichtung und die Abstände des Texts und der Icons vom umgebenden Rahmen und zueinander passen oft nicht. Außerdem kann man es mit Javascript auch übertreiben, insbesondere wenn wichtige Dinge gar nicht ohne Javascript funktionieren ohne das die Seite immer darauf aufmerksam macht.

Anstatt einer eigenen Installationsroutine solltest du distutils/setuptools nutzen. Wenn du schon eine eigene Installationsroutine schreiben willst, solltest du wenigstens die Wahl des Installationsverzeichnisses ermöglichen. Und warum zum Teufel hast du "copytree()" aus dem Quelltext von "shutil" in diese Datei kopiert?

Das "code-host"-Skript ist völlig überflüssig, eine symbolische Verknüpfung hätte es auch getan. Die Einschränkung auf ein Argument ist künstlich, da unnötig, außerdem kann man auch eleganter und kürzer auf die Existenz eines Arguments prüfen, ohne umständlich try … catch … finally zu bemühen.

In "main.py" zeigen sich Fehler, die du in allen Dateien machst: Klassen sind keine new-style-Klassen, außerdem verwendest du ein Sprachengemisch für Namen und Kommentare. Entscheide dich für eine Sprache (vorzugsweise Englisch)! Außerdem solltest du nicht "sys.exit()" nutzen, wenn ein Import fehlschlägt. Python bricht bei einer unbehandelten Ausnahme eh ab, also kannst du dem Nutzer auch erlauben, den Traceback zu sehen, damit er wenigstens weiß, warum das Programm nicht funktioniert. Apropos Ausnahmen: Ein "except" ohne konkreten Ausnahmetyp ist kein guter Stil.

In "browser.py" fällt auf, dass du GUI-Widgets in Threads erstellst. Ich habe mich nicht durch die Struktur deines Codes gewühlt, um zu beurteilen, ob das in diesem Fall ok ist. Im Allgemeinen jedenfalls verträgt kein GUI-Toolkit Zugriff auf Widgets außerhalb des erstellenden Threads.

"config.py" ist überflüssig, Python hat ein Modul für Konfigurationsdateien in der Standardbibliothek. Außerdem sollte eine Bibliotheksklasse nicht auf die Standardausgabe schreiben, sondern allenfalls logging verwenden.

"connection.py" ist ebenfalls nicht wirklich nötig. Wenn du schon die Internetverbindung künstlich überprüfen willst, dann doch nicht mit google, sondern mit deiner eigenen Seite. Im Allgemeinen sollte man sich derartige Scherze aber auch sparen. Hat der Nutzer einen Dialup-Tarif oder einen beschränkten Zeit- oder Volumentarif, verursachen solche Tests unnötige Kosten, andernfalls sind sie einfach überflüssig. Zudem fängst du Verbindungsfehler eh beim eigentlichen Aufbau der Verbindung ab, wozu also der Test? Im Übrigen ist es nicht sinnvoll, magische Zeichenkettenkonstanten zurückzugeben, um besondere Zustände wie den "Offline-Modus" (was immer das sein soll) anzuzeigen. Dafür gibt es Ausnahmen.

Das ist nur, was mir beim kurzen Durchsehen aufgefallen ist. Die Codequalität aber reicht, um mich davon abzuhalten, deine Seite zu verwenden. Alles viel zu kompliziert, oftmals dupliziert, und viel zu oft unnötigerweise selbst erfunden.

Ach ja, deine Rechtschreibung ist nicht gerade Duden-konform ...
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

lunar hat geschrieben:Ach ja, deine Rechtschreibung ist nicht gerade Duden-konform ...
Also ich fand es stellenweise amüsant.

@Andyh: Du solltest da dringen noch einmal jemanden drüber schauen lassen, so nimmt die Seite wirklich niemand ernst.
Das Leben ist wie ein Tennisball.
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

Grundsätzlich erst mal Respekt, daß Du versuchst eine Idee in die Praxis umzusetzen und zu veröffentlichen. Ich habe trotzdem Schwierigkeiten Dein Projekt zu verstehen. Sollte irgendwie klarer dargestellt werden.
Und ganz übel ist mir Deine Rechtschreibung aufgestoßen. Pisa läßt grüßen. So kann man sich nicht präsentieren.
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Code: Alles auswählen

Traceback (most recent call last):
  File "main.py", line 575, in on_ok
    antwort = self.p.connection.url_open(data, self.p.http)
AttributeError: HauptProgramm instance has no attribute 'http'
Oh und http://code-host.de/user/ ist auch nicht schön.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Wenn ich großzügig bin, dann kommen locker 31 Fehler zusammen :shock:

@Andyh: Falls es Dir nicht aufgefallen sein sollte: hast eine PM von mir.
Das Leben ist wie ein Tennisball.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Da die Kritik recht harsch ausgefallen ist, möchte ich trotz allem einwerfen dass die Betreffenden (mich eingeschlossen) das nur gut gemeint haben; ich hoffe dass du, Andyh das auch positiv auffasst und aus solchen Reviews und besser wirst (ich persönlich lerne hauptsächlich durch Reviews, weil sie einem sagen welches Sprachfeature man wo sinnvoll verwenden kann).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ich denke es ist besser erstmal eine reine Browser Lösung zu basteln, bevor man anfängt ein eigenes Client Programm zu coden. So können alle interessierten direkt mal rein schnüffeln.
Ich persönlich habe ehr weniger Lust ein Client Programm zum test zu "installieren".

Dennoch: Weiter so! Aller Anfang ist halt schwer.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

Hey also meine Laune könnt ihr niemals verderben, ich freue mich schon seit einem Monat auf die Präsentation hier und habe eigentlich mit noch viel schlimmeren gerechnet.

Nur eins möchte ich richtig stellen:

von lunar:
Und warum zum Teufel hast du "copytree()" aus dem Quelltext von "shutil" in diese Datei kopiert?
Weil copytree nicht so funktioniert wie ich das brauche. Man kann damit nicht in vorhandene Verzeichnisse kopieren weil es immer auch die Ordner erstellt und das nicht geht wenn sie schon da sind. Ich habe das so umgebaut das es funktioniert , also nicht zum Teufel.

Sonst möchte ich lunar sehr danke, weil du mir ja sehr viele Fehler aufgezeigt hast.

Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
lunar

Andyh hat geschrieben:Weil copytree nicht so funktioniert wie ich das brauche. Man kann damit nicht in vorhandene Verzeichnisse kopieren weil es immer auch die Ordner erstellt und das nicht geht wenn sie schon da sind.
Es wäre trotzdem nicht nötig gewesen, die komplette Funktion zu kopieren. Es reicht ja auch, mittels "os.listdir()", "shutil.copy2()" und "shutil.copytree()" die Inhalte des obersten Verzeichnisses zu kopieren (ungetestet):

Code: Alles auswählen

# copy directory contents (unlike shutil.copytree, which copies the directory itself)
for name in os.listdir(directory):
    src = os.path.join(directory, name)
    dest = os.path.join(target, name)
    if os.path.isdir(src):
        shutil.copytree(src, dest)
    else:
        shutil.copy2(src, dest)
Das ist kürzer und verständlicher als eine komplette Kopie der Funktion. Wenn du die Kopie behalten möchtest, dann solltest du zumindest in einem Kommentar erklären, warum du sie komplett kopiert hast und vielleicht auch den Namen dahingehend anpassen (z.B. als "copy_tree_contents()").

Btw, sind die Quellen der Website auch irgendwo zu finden?
Antworten