Du bist nicht eingeloggt! Möglicherweise kannst du deswegen nicht alles sehen.
  (Noch kein mods.de-Account? / Passwort vergessen?)
Zur Übersichtsseite
Hallo anonymer User.
Bitte logge dich ein
oder registriere dich!
 Moderiert von: Che Guevara


 Thema: Gehirnsalat ( wir unter uns )
« erste « vorherige 1 ... 3803 3804 3805 3806 [3807] 3808 3809 3810 3811 ... 6582 nächste » letzte »
erste ungelesene Seite | letzter Beitrag 
Smoking

AUP Smoking 09.09.2023
 
Zitat von Teufel

....




Ja, das ist richtig. Deswegen hole ich mir auch den DOM-Knoten mit "callingNode.get(0)" um darauf dann die Methoden auszuführen. Das ganze trallala ist jetzt aber auch nur testweise drin gewesen, da empty() und co. nicht funktioniert haben und ich den scheiß halt manuell da rauslöschen wollte...
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Smoking am 04.11.2009 17:20]
04.11.2009 17:19:33  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Achsel-des-Bösen

AUP Achsel-des-Bösen 06.10.2009
Python is much luve <3

Meine Situation: Ich möchte gerne bei einer Google AppEngine Anwendung ein ODF-Dokument vervollständigen und es dann per Anhang als Mail verschicken. Außerdem würde ich es gerne zwischenspeichern
Problem hierbei: Auf AppEngine kann man nicht auf die Disk schreiben, lediglich in den Datastore. Also habe ich mir als aller erstes ein entsprechendes Model gebaut, dass als meine Fileobjekt arbeiten soll. Die Daten kommen in ein "Blob" Feld, außerdem hat es noch einen Dateinamen sowie Erstelle- und Änderungszeitpunkt.

Nun ist das Problem: Die ODF-Libary die ich habe, kann nur aus eine "File" Objekt lesen. Ich könnte jetzt hingehen und meiner Model-Klasse alle nötigen Methoden verpassen, so dass sie wie eine "richtige" Datei arbeitet. Das wird aber schnell umständlich, denn weil ODF-Dateien nunmal nur ZIP-Archive sind, muss die Libary da drin rum-seeken können. Das wird alles schnell kompliziert und fehleranfällig.

Meine Lösung:
 
Code:
class DatastoreFile(db.Model):

  name = db.StringProperty()
  created = db.DateTimeProperty(auto_now_add=True)
  modified = db.DateTimeProperty(auto_now=True)
  data = db.BlobProperty()

  def __getattr__(self, name):
    # falls ein "file-like" attribute gesucht wird, reichen wir das
    # das entsprechende attribut vom _buffer objekt zurück
    if name in ('open','close','read','write','seek','tell'):
      if not self._buffer:
        # sollte _buffer noch nicht existieren laden wir es mit den
        # daten aus dem datastore
        self._buffer = StringIO(self.data)
      return getattr(self._buffer, name)


Ich habe meinem Model einfach eine __getattr__ Methode verpasst. Die wird von Python immer dann aufgerufen, wenn das Objekt kein Attribut (merke: Auch Funktionen eines Objekts sind in Python Attribute) mit dem entsprechenden Namen enthält.
Wenn immer ein Attribut gesucht wird, von dem ich weiß, dass ein "File" sie haben müsste, gebe ich einfach das Attribut von "buffer" zurück. Und "buffer" ist wiederum ein StringIO Objekt, dass es praktischerweise in Pythons Standardbibliothek gibt. StringIO ist einfach ein in-memory File mit allen nötigen Methoden.

Magic \o/
04.11.2009 17:47:55  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
igor]2

Phoenix
So cool Python ja eigentlich ist, für diesen ersten "self"-Parameter bei Methodenaufrufen sollte jemand geschlagen werden.
04.11.2009 18:57:49  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
[DK]Peacemaker

[dk]peacemaker
Aber jetzt verstehe ich auch, wieso es IronPython gibt. Die meisten Dinge lassen sich gut nach .NET "portieren", erfordern dar aber eine Menge Mehrarbeit.

Angenommen ich für zum Beispiel ein Scaffolding durch und schaue, welche Eigenschaften eines Objekts ich als Model-Eigenschaften betrachten kann, dann würde man mittels Reflection beim Objekt-Typen nachfragen, welche Eigenschaften er hat. An dieser Stelle kann man dann einen "CustomTypeDescriptor" einbinden, der dann weitere Pseudo-Eigenschaften zur Verfügung stellt.

Das ist aber ne Heidenarbeit, aber ich hab sie trotzdem schon mal gemacht. Für ein Dictionary, bei dem die einzelnen Schlüssel nach außen als "Eigenschaft" reflektiert werden. Das brauche ich für verschiedene Data-Binding Szenarien.

Aber da ich ein sehr "verbos"iger (mit den Augen rollend) Mensch bin, ist Python trotzdem nichts für mich.
04.11.2009 19:05:45  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
TriggerTG

TriggerTG
Irgendwie verunsichert mich das immer, wenn ich bei Post von denen ich halbwegs Ahnung haben sollte, jedes zweite Wort nicht verstehe fröhlich
04.11.2009 19:10:29  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
TriggerTG

TriggerTG
Nemi führt einen knappen kampf gegen Baqll

http://forum.mods.de/bb/thread.php?TID=198532

Solidarität. Jetzt! fröhlich
04.11.2009 19:12:06  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
GarlandGreene

Mod GIGN
jetzt führt sie
04.11.2009 19:15:00  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
cms

AUP cms 14.11.2012
 
Zitat von TriggerTG

Nemi führt einen knappen kampf gegen Baqll

http://forum.mods.de/bb/thread.php?TID=198532

Solidarität. Jetzt! fröhlich


Zu spät, meine Soldi Sloi Sorida Stimme hat sie bereits.
04.11.2009 19:16:17  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Floder

Floder
Breites Grinsen

*votier*
04.11.2009 19:29:17  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
TriggerTG

TriggerTG
Es geht doch nichts über einen dezenten GS-Push

So, nu muss ich mich endlich mal überwinden und wieder Tales of Monkey Island Episode 4starten. Hänge da an ner fiesen Stelle fest.
04.11.2009 19:31:41  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
igor]2

Phoenix
When your hammer is C++, everything begins to look like a thumb.
04.11.2009 19:47:19  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Achsel-des-Bösen

AUP Achsel-des-Bösen 06.10.2009
 
Zitat von igor]2

So cool Python ja eigentlich ist, für diesen ersten "self"-Parameter bei Methodenaufrufen sollte jemand geschlagen werden.


Schlag Guido Augenzwinkern
Er hat das ganze über die Jahre immer wieder mit eigentlich ganz guten Argumenten verteidigt. Z.b. hier.

Das ganze geht im Prinzip auf zwei Ursachen zurück:
- "explicit is better than implicit"
- Die Sprache soll möglich klein gehalten worden. Würde man es streichen müsste man "self" oder "this" als Keyword einführen.
Außerdem erlaubt es z.B. so merkwürdige Dinge wie "nachträglich eine Methode an eine Instanz zu hängen, die trotzdem Zugriff auf die Instanz hat" (wie in die Beispiel im Link).

Das es "unlogisch" o.ä. ist, kann ich so nicht bestätigen. Wenn man es weiß, dann weiß man es eben. Das Methoden in Java über ein magisches "this", das offenbar vom Himmel fällt, Zugriff auf das aktuellen Objekt haben ist für dich vielleicht gewohnter, aber neutral betrachtet auch nicht logischer, oder?

Betrachte es halt als eigenart...schlecht isses auf jeden Fall nicht.
04.11.2009 19:56:51  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
igor]2

Phoenix
Ich komm halt ursprünglich von der C++-Seite, da wird das auch als erster Parameter übergeben, nur wirds da aus der Sprache herausgehalten. "this" ist da eigentlich auch nicht viel mehr als eine Kurzform für "gib mir den ersten Parameter vom Stack -- ja, genau den, den ich nicht ausgeschrieben habe, von dem wir aber alle wissen, dass er da liegt". Jeder, der mal was länger C++ gemacht hat, wird sich notgedrungen irgendwann doch mit den Feinheiten der Sprache auseinandersetzen müssen, wie breit ein char sein darf, was "meistens, aber nicht immer" funktioniert, usw. -- einem durchschnittlichen C++-Programmierer ist auch das mit dem "this"-Pointer auf dem Stack klar. Von daher wundert es mich einfach, dass sogar das ultratechnische, aufgeblähte C++ den versteckt, aber Python den explizit macht.

Eigentlich fühle ich auch nur so eine dumpfe Unzufriedenheit mit der Skriptsprachen-/Rapid Prototyping-Welt. Ich warte noch darauf, dass Python und Ruby ein Kind zeugen, das ich dann adoptieren kann. Beide sind irgendwie toll, aber nicht perfekt. :/
04.11.2009 20:06:14  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
[DK]Peacemaker

[dk]peacemaker
Ich fühlte mich auch direkt an meine Anfangszeiten mit C++ erinnert, wo man dann wie blöd versucht hat, eine Instanz-Methode als Callback für WINAPI-Aufrufe zu verwenden.

Das ging natürlich nicht, weil die Signatur, dank des this-Pointers nicht stimmte. Keine Ahnung, wie man das eigentlich elegant gelöst hat, ist mir mittlerweile auch egal.

Was ich nicht verstehe: "explicit is better than implicit"; mir kam es immer so vor, dass bei Python einfach verdammt viel implizit gemacht wird, oder wirkt das nur so, weil ich noch nicht viel damit gemacht habe?
04.11.2009 20:13:11  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
TriggerTG

TriggerTG
Ah cool, ne neue Staffel Crimnal Intent auf Vox.

Aber auch ne neue Titelmelodie bäh
04.11.2009 20:19:25  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Achsel-des-Bösen

AUP Achsel-des-Bösen 06.10.2009
 
Zitat von [DK]Peacemaker

Was ich nicht verstehe: "explicit is better than implicit"; mir kam es immer so vor, dass bei Python einfach verdammt viel implizit gemacht wird, oder wirkt das nur so, weil ich noch nicht viel damit gemacht habe?


Ich weiß nicht. Ich könnte jetzt auf nix mit dem Finger zeigen was total implizit wäre. Allerdings könnte ih andersrum auf nix zeigen, was irgendwie explizit wäre. Vielleicht das man Funktionsparameter Grundsätzlich als Keyword (also
function(param1=bla, param2=foo)
) übergeben kann...aber sonst...ich hab mir da nie viel Gedanken drüber gemacht.
04.11.2009 20:22:29  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Iceman3000

Iceman3000
Morgen.
04.11.2009 20:33:07  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
igor]2

Phoenix
 
Zitat von [DK]Peacemaker

Ich fühlte mich auch direkt an meine Anfangszeiten mit C++ erinnert, wo man dann wie blöd versucht hat, eine Instanz-Methode als Callback für WINAPI-Aufrufe zu verwenden.

Das ging natürlich nicht, weil die Signatur, dank des this-Pointers nicht stimmte. Keine Ahnung, wie man das eigentlich elegant gelöst hat, ist mir mittlerweile auch egal.

[...]


(Theoretisch über mem_fun, oder sonst über einen Wrapper der Boost-Library. Wo du allerdings, je nachdem, wieder in Probleme läufst, wenn die Signatur nicht exakt der WINAPI-Signatur entspricht, und da wieder irgendwo ein stdcall im falschen Hals sitzt. Zum Kotzen.)
04.11.2009 20:39:56  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Achsel-des-Bösen

AUP Achsel-des-Bösen 06.10.2009
Wir haben in der Wuala Gruppe unseres Informatik Fachbereichs mitlerweile knapp 3GB verteilt auf ~1500 E-Books. Bald machen wir Google Books konkurrenz Augenzwinkern
04.11.2009 20:56:17  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
TriggerTG

TriggerTG
In meinem Informatikstudium hab ich maximal 3 themenbezogene Bücher gelesen fröhlich

e\ wobei, wo ich grad nachdenke: war doch einiges mehr
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von TriggerTG am 04.11.2009 20:59]
04.11.2009 20:58:37  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Achsel-des-Bösen

AUP Achsel-des-Bösen 06.10.2009
verschmitzt lachen
Könnte der Grund sein warum du von vielen Posts in denen du eigentlich alles verstehen müsstest jedes zweiten Wort nicht kapierst.
04.11.2009 20:59:40  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
TriggerTG

TriggerTG
Das ist unfair! Das bezieht sich nur auf Peacemakers komisch kranken sachen!
04.11.2009 21:00:26  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Achsel-des-Bösen

AUP Achsel-des-Bösen 06.10.2009
betruebt gucken
Ich versteh ihn.




Meistens.
04.11.2009 21:02:33  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
TriggerTG

TriggerTG
Kranke Sau!
04.11.2009 21:03:27  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
igor]2

Phoenix
 
Zitat von Achsel-des-Bösen

Ich versteh ihn.




Meistens.


Freak.
04.11.2009 21:11:47  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
[C.I.] Reman

Arctic
missmutig gucken
Einberufung bekommen. Danke Bundeswehr. Führungsunterstützungsbataillon. Was soll das überhaupt sein? Teeverein? Argh.
04.11.2009 21:44:47  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
TriggerTG

TriggerTG
Sind doch nur noch 6 Monate? Oder bei dir noch 9 Breites Grinsen
04.11.2009 21:45:55  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
igor]2

Phoenix
Fix Einspruch einlegen, sagen, dass die Begründung noch kommt, Begründung schreiben, Anwalt nehmen, falls du zur Verhandlung vorgeladen wirst?
04.11.2009 21:46:35  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
[C.I.] Reman

Arctic
Erst ab 2011 werden es 6 Monate. Ich werd mal mit unserer Personalabteilung/Chef reden, ob die mir eine Unabkömmlichkeitserklärung schreiben können, weil ich in einem super wichtigen Projekt bin.

Und das ist noch nicht mal gelogen. Ich erschreck meinen Projektleiter damit, dass das System erst zur Cebit 2011 zu sehen sein wird, weil leider die Bundeswehr meint mich gebrauchen zu können Breites Grinsen
04.11.2009 21:53:46  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
TriggerTG

TriggerTG
Ich bin ganz ohne Gegenwehr zum Wehrdienst angetreten.

Wenn ich mir so einige Spacken von damals in Erinnerung rufe, hat das den Leuten auch echt gut bekommen mal von zuhause wegzukommen.

Da gabs welche die jeden Tag Post von Mutti& Verwandschaft bekommen haben.

Ich hab nie Post bekommen traurig

Ich denke gerade in diesen Zeiten würde es vielen Jugendlichen gut tun, mal eine straffe AGA zu durchlaufen und zu lernen was Verantwortung und Authorität bedeutet.
04.11.2009 21:53:56  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
 Thema: Gehirnsalat ( wir unter uns )
« erste « vorherige 1 ... 3803 3804 3805 3806 [3807] 3808 3809 3810 3811 ... 6582 nächste » letzte »

mods.de - Forum » Webdesign & Coding » 

Hop to:  

Thread-Tags:
Mod-Aktionen:
23.08.2018 12:40:15 TriggerTG hat den Thread-Titel geändert (davor: "Wiederbelebungssalat")
09.03.2017 08:55:19 TriggerTG hat den Thread-Titel geändert (davor: "Gehirnsalat")
21.05.2014 16:08:26 Redh3ad hat den Thread-Titel geändert (davor: "Hochzeitssalat")
10.05.2014 09:43:28 Redh3ad hat den Thread-Titel geändert (davor: "Gehirnsalat")
19.10.2013 21:43:03 [DK]Peacemaker hat diesen Thread repariert.
04.10.2013 20:11:45 TriggerTG hat den Thread-Titel geändert (davor: "Damiferkel-Salat")
29.08.2013 19:59:27 [DK]Peacemaker hat den Thread-Titel geändert (davor: "HerpDerpSalat")
19.08.2013 10:04:19 TriggerTG hat den Thread-Titel geändert (davor: "SirSiggiSalat")
13.08.2013 18:43:13 TriggerTG hat den Thread-Titel geändert (davor: "Kamelwochensalat")
05.08.2013 09:47:37 TriggerTG hat den Thread-Titel geändert (davor: "Gehirnsalat")
24.06.2013 16:30:39 TriggerTG hat den Thread-Titel geändert (davor: "cmssalat")
20.06.2013 12:58:35 TriggerTG hat den Thread-Titel geändert (davor: "Krissalat")
13.06.2013 10:59:25 TriggerTG hat den Thread-Titel geändert (davor: "Gehirnsalat")
08.06.2013 11:28:06 TriggerTG hat den Thread-Titel geändert (davor: "rABBIntensalat")
03.06.2013 09:56:52 TriggerTG hat den Thread-Titel geändert (davor: "Gehirnsalat")

| tech | impressum