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:
Beiträge von duracell
-
-
dem woddy scheint die sonne aus dem arsch :D. machst du capoeira?
-
versuch mal, per stylesheet die weite und höhe der elemente body, embed, p auf 100% zu setzen, sprich:
BODY, EMBED, P {
width: 100%;
height: 100%;
}ausserdem solltest du die angaben width und height aus dem embed-tag nehmen, da das noch HTML4-standard ist. hth.
-
na dann will ich auch meinen beitrag leisten! ich bin der rechte im bild und der kerl links ist ein guter freund.
EDIT: mir ist noch ein nettes foto mit zwei lieben freundinnen unter die finger gekommen, das wollt ich euch nicht vorenthalten.
-
Das war vielleicht ein Spiel! Hab sicher ein halbes Jahr davor verbracht. Bin zufällig auf den (damals wie heute) genialen Soundtrack gestossen. Erinnert sich noch wer daran?
-
vanilla von lussumo is spitze: http://getvanilla.com/
-
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. -
gut gemacht. arbeite ab jänner auch mit soap. bin schon gespannt, womit ich zu kämpfen haben werde.
-
hatte auch mal ein ähnliches problem mit XMLRPC. das lag meines wissens damals an einem character, das nicht dem angegebenen Content-Type entsprach - also check mal die message auf sonderzeichen, und ob du die richtige codierung gewählt hast.
-
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:
Code
Alles anzeigentemplate <class K, class V, int heapType> ostream& operator<<(ostream &os, const Heap<K, V, heapType> &heap) { if (!heap.nodes.empty()) // nodes ist vom Typ std::map { // Ausgabe der heapnodes. } /* (1) */ }
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
-
generell kann ich als template engine die ZPT (Zope Page Templates) wärmstens empfehlen. einige leute haben sich die arbeit gemacht, das ganze für verschiedene sprachen zu implementieren, darunter: PHP, Perl, Python und auch Java:
Zope Page Templates Reference:
http://www.zope.org/Documentation/…n/AppendixC.stxZPT (Non Zope Implementations zeigt verschiedene Implementierungen)
http://www.zope.org/DevHome/Wikis/…s/ZPT/FrontPage -
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:
Ctemplate <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:
C
Alles anzeigentemplate <class K, class D> class Heap { public: Heap(map<K, HeapNode<K, D>> nodes); protected: map<K, HeapNode<K, D>> nodes; }; #include heap.c
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 -
hab mit at.debian.org eher schlechte erfahrungen, was die performance angeht.. dafür mit gd.tuwien.ac.at bis jetzt nur gute.
-
danke, läuft wie geschmiert!
-
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 -