Beiträge von duracell

    woddy: ja, capoeira seit etwa 6 jahren. habe jedoch letztens meine alte liebe für hockey wieder entdeckt und möchte das wieder etwas forcieren. mit uni und arbeit gestaltet sich das jedoch schwierig.
    hast du komplett mit dem radsport aufgehört? fahre selbst sehr gerne rad, meist mit dem mountainbike in der gegend von kahlen- und leopoldsberg. im sommer bin ich sowieso permanent mit dem rad unterwegs und in den ferien gönn ich mir dann die ein oder andere längere tour (jetzt vielleicht istrien?). gutes ventil. :verycool:

    das is bei php eben so. FALSE hat keinen festgelegten Wert. FALSE ist in PHP alles, was für datenstrukturen nicht !empty(), objekte != NULL, oder für integer values != 1 ist!

    nachtrag zu php:
    da php eine loosely-typed (typenlose) sprache ist, die mit skalaren und typenbestimmung zur laufzeit arbeitet, gibts auch keine boole'schen datentypen. TRUE/FALSE sind also möglicherweise als macros (#defines in C) implementiert.

    noch was:
    von php5 bin ich angenehm überrascht! wer die objektorientierten features und patterns in php4 vermisst hat, sollte definitiv switchen.

    Nöö.. von WebMacro hab ich noch nie gehört. ZPT kommt in der Praxis sehr gut an. Da ZPT für verschiedene Programmiersprachen implementiert ist, spart man sich auch das Erlernen und Pflegen verschiedener Engines (falls man mit mehreren Programmiersprachen arbeitet). Ausserdem voll XML kompatibel.

    Ein winziger Nachteil ist, dass die meisten Implementierungen nicht exakt nach dem ZPT Standard verlaufen - manche bieten mehr, andere etwas weniger als die eigentliche ZPT. Allerdings ist daran wieder der Vorteil, dass gute Features eventuell von Zope in den Standard aufgenommen werden. Falls man sich aber strict an die Standards halten will, muss man die proprietären Attribute ja nicht verwenden. Die meisten Implementierungen erlauben zudem Verwendung von Code direkt in den Templates, zb. den Aufruf von Methoden von Objekten, die man der Engine als Variable übergeben hat. Das hat zwar Vor- und Nachteile (Security, keine strikte Trennung von Code und Design), allerdings erspart man sich so das bedingte Zuweisen von Variablen an die Engine. In meinem jetzigen Projekt wird die abfrage der Permissions eines User in die Templates ausgelagert - dadurch entsteht eine codeersparnis von mehr als 90%, weil man keine conditions im Code mehr benötigt. Statt dessen werden die (XHTML-)Templates an die Permissions angepasst. Aus persönlicher Erfahrung kann ich dir zu ZPT nur raten!

    EDIT:
    Hab mir kurz WebMacro angesehen.. habe mir zwar noch keine prof. Meinung darüber gebildet, aber alleine die Tatsache, dass es eine eigene Scripting Language implementiert hat, verfehlt den Sinn und Zweck einer Template Language. Die Implementierung von Sprachkonstrukten geht bei ZPT perfekt über XML elemente/attribute/namespaces.
    Ausserdem finde ich folgenden Eintrag "I just upgraded to the latest WebMacro release, and now nothing works!" in der FAQ nicht besonders vertrauenserweckend, bzgl. Stabilität der API.
    Weiters werden Direktiven (if, else, for, etc..) der Scripting Languages mit einem # eingeleitet - Wenn du dann ein HTML-Template in einen Browser ladest, dann siehst du diese unschönen Codeteile. Bei ZPT hingegen werden attribute, die vom Browser nicht erkannt werden erst gar nicht angezeigt und außerdem kannst du für jedes HTML Element, dessen Inhalt variabel ist, einen Defaultwert definieren, der im Browser allerdings angezeigt wird. So kannst du dir bereits mit ZPT ein HTML-Template zusammenbasteln, im Browser überprüfen ob alles passt, und dann den Feed per Template Engine / Datenbank, etc. vornehmen.

    So.. genug gelabert :)

    ich würde sagen: wo der guest in deine struktur eingefügt wird, hängt sicher zum teil von der implementierung ab. hat der guest gemeinsamkeiten mit anderen klassen, die du generalisieren kannst? bei deinen spärlichen informationen kann ich dir auch keinen rat geben. ein guest könnte/muss aber nicht von person erben, da du ja personen in der datenbank speicherst, und ein guest evtl. auch anonym sein kann und daher gar nicht gespeichert werden muss. klassenhierarchien werden auch nicht immer 1:1 wie datenbanken modelliert. also.. her mit infos, vielleicht kann man dir dann helfen.

    zu deiner anderen frage: generell ist es keine gute praxis, abstrakte klassen von konkreten klassen abzuleiten (à la: abstract class User extends Person). besser wäre es, konkrete implementierungen erst in den "blättern" deiner klassenhierarchie zu tätigen. das würde die wiederverwendbarkeit (mehrere versionen) erleichtern - aber wenn das ein kleines system ist.. mein gott.

    In meiner generischen Klasse Heap überlade ich den Operator <<. Folgende Implementierung ist gegeben:


    Die Vorgehensweise sollte klar sein: ist der Heap nicht leer, so sollen seine Knoten ausgegeben werden - sonst soll nichts passieren.

    Das wirklich merkwürdige ist nun: wird an Stelle (1) nichts in den cout-Stream geschrieben (egal, ob heap.nodes.empty() == (true | false)), bekomme ich die Meldung "Speicherzugriffsfehler" auf stderr. EDIT: Meine vorherige Beschreibung des Fehlers war vielleicht nicht ganz eindeutig. Auf jeden Fall handelt es sich bei "Speicherzugriffsfehler" um einen Runtime-Error. Ich gebe diesen String natürlich nicht auf stderr aus.

    Kompiler: g++ 3.3

    Ich habe einige Zeit gebraucht um den Fehler zu reproduzieren, und konnte ihn auf diese Stelle einschränken. Weiss jemand, warum das so ist? Das kann doch wohl kaum ernst gemeint sein?

    Danke! Greets, Martin

    da würd ich mir an deiner stelle die Java Streams API anschauen. auf google findest da einiges. du könntest zB. einen FileStream in einen ZipFileStream umwandeln. ist sicher die sauberste variante.

    :)

    ich dank euch für die ratschläge! funktioniert bestens!

    @Plantschkuh:
    ich weiss, das inkludieren des c-files im header-file ist im allgemeinen eine üble sache. ich habe allerdings gelesen, dass templates nicht automatisch exportiert werden. export template<class T> wurde zwar in den standard aufgenommen, wird aber von den aktuellen compilern (informationsstand 2004) noch nicht unterstützt. ich habe auf g++ 3.3 (letzte stable von debian sarge) upgedated und da wirds ebenfalls noch nicht unterstützt.

    um den template-typ zu inkludieren, muss also sowohl jeweiliges .h- als auch .c-file inkludiert werden. ich wollte mir das auf diese weise ersparen (natürlich dabei das c-file gegen mehrfaches inkludieren geschützt). weiss jemand eine bessere praxis, bzw. weiss jemand, ob die verwendung von "export template" bereits unterstütz wird? mir gefällt die lösung auch nicht!

    greets, martin

    Hi!

    Ich versuche gerade, einen generischen BinaryTree (Heap) in C++ zu implementieren und stosse da auf einige Schwierigkeiten. Der Heap soll eine Menge von HeapNodes (wegen konstantem Zugriff) in einer Map verwalten.

    Der generische Typ "HeapNode" ist folgendermaßen definiert:

    C
    template <class K, class D>
    class HeapNode
    {
        public:
        HeapNode(K key, D data);
        ...
    };
    
    
    #include heapnode.c


    soweit so gut, der Typ HeapNode funktioniert wie erwartet. Bei der Implementierung des Heaps beginnen allerdings die Probleme:

    Ich würde den "Heap" gerne so implementieren, dass die ihm als Datenstruktur zu Grunde liegende Map die Schlüssel vom Typ K, sowie die dazugehörigen Werte als generischen Typen HeapNode<K, D> speichert:


    Hier schreit aber der Compiler (g++ 2.8). Scheinbar stört ihn der generische Typ innerhalb des Wertetyps von map. Das gleiche passiert übrigens auch bei Verwendung von vector, z.B: vector<HeapNode<K, D>>. Sind hier nur "konkrete" Datentypen innherhalb von STL Containern erlaubt?

    ...was ich also benötige ist eine Einschränkung des Wertetypen der map auf Objekte vom Typ HeapNode mit key K und value V.

    Hat jemand einen Plan? Danke!
    lg, martin

    Habe ein Problem mit der Installation der NVIDIA nForce Treiber. Verwende Debian Sarge "Testing" unter Kernel 2.6.8-1-386.

    Witzigerweise gibt es für den installierten Kernel weder auf der DVD noch auf debian.org ein kernel-source Paket, und der NVIDIA Installer verweigert genau aus diesem Grund seine Arbeit.

    Habe mittlerweile die sources von kernel.org downgeloadet, aber die akzeptiert der NVIDIA installert nicht. Ein Upgrade des Systems über das Netz kommt nicht in Frage, da ich den Treiber benötige, um meinen onboard Ethernet controller überhaupt erst ansteuern zu können..

    Weiss jemand Rat?
    lg, duracell