Das mit der Seife wusste ich nicht. ![]()
Beiträge von The User
-
-
@jojo is_numeric prüft doch den tatsächlichen internen Typ, und wenn ich per Post verschicke ist es doch immer string und is_numeric schlägt fehl?
-
Und egal, welche Tricks du mit Javascript versucht: Zumindest die DOM-Struktur siehst du auf jeden Fall.
-
Was soll das denn für ne Mischung genau sein?
Ich kannte bis jetzt eben einfach Spülmittel mit Wasser und habe mal gehört, das Glycerin gut sein soll... -
Es geht vor allem alles intuitiver.
Man erstellt den Datensatz und wendet die passende Operation an.
Im übrigen hat auch MVC im DB-Bereich große Vorteile: Einmal sorgst du für das Handling der Daten und einmal für die Darstellung im Template. => Flexibilität.Aber man sollte sich nicht so fixieren. Man kann Prozeduren, OOP und MVC gemischt gut verwenden.
SinnlosS
Für den Namensraum wird es ja bald etwas semantisch besseres geben, das auch Klassen enthalten kann: Namensräume.^^
Man sollte den Vorteil mehrerer Objekte eines Typs nicht vergessen. Eine Interaktion zwischen Objekten ist viel einfacher als zwischen Arrays. Seit clone haben Arrays auch keine Vorteile mehr. -
Hilfe, die Kanickel kommen!
-
Weshalb möchtest du andere davon abhalten, von deinem Quellcode zu lernen?
-
Objektorientierung ist einfach effektiver und flexibler.
Willst du z.B. flexibel Formulare erstellen kannst du z.B. für jeden Input-Typ eine Funktion machen. Da du vielleicht mehrere Formulare erlauben willst, übergibst du dem ein Daten-Array. Dann muss eine andere Funktion zur Registrierung im Array aufgerufen werden. Erster Vorteil von OOP: Die Übergabe ist nicht in dieser Form nötig.
Ins Array musst du dann Informationen zur Validierung packen. Möglichkeit 1: Zentral die Validierungs-Optionen abarbeiten => unflexibel. Möglichkeit 2: Callbacks übergeben. Die Callbacks zu handhaben ist wiederum kompliziert.
Zweiter Vorteil von OOP: Einfach eine Member-Funktion definieren, die das übernimmt. Keine separate Eintragung von Callbacks nötig.
Jetzt brauchst du vielleicht einen neuen Typ: Passwort-Eingabe, was sehr ähnlich zur normalen Eingabe ist. Mit Funktionen hast du nun zwei Möglichkeiten: Komplett neu schreiben oder andere Funktion aufrufen und Änderungen revidieren.
Dritter Vorteil von OOP: Du kannst ableiten, einfach einzelne Element-Funktionen ändern und den Rest beibehalten.
Mit einer Aufteilung der Funktionen wäre das natürlich auch mit prozeduraler Programmierung möglich, doch du bräuchtest eine noch komplexere Callback-Struktur, um diese Form des Polymorphismus zu simulieren.
Anschließend muss die eigentliche Verarbeitung stattfinden. Du hast eine Funktion, die das Array mit den Formulardaten übernimmt und einige Callbacks handlen muss. Nun übergibst du ihr aus Versehen ein anderes Array, das vielleicht bloß ein fetch-Ergebnis war. Ergebnis: Fehler treten tief in der Funktion auf. Wegen der Callbacks noch problematischer. Du weißt nicht, von wo genau ein Callback aufgerufen wurde und es verursacht dann Fehler auf Grund falscher Werte im Array.
Vierter Vorteil von OOP: Du kannst die korrekte Struktur der Daten über Typehinting oder Element-Funktionen garantieren. Bei einer falsch verwendeten Variable schlägt der Interpreter an Ort und Stelle Alarm.
Hier siehst du meine Implementierung. Bitte beachte, dass sie unter AGPL steht.Außerdem sehr praktisch: Automatische Code-Erzeugung. Du kannst dir problemlos MySQL o.ä. mit OOP erzeugen lassen - und das einmalig und nicht jedes Mal neu.
Viele liebe Grüße
The User -
Modernes C++ Design von Andrei Alexandrescu
Das Buch beschreibt folgende Dinge:
- Policy-Based-Design
- Typlisten
- Simulation partieller Template-Spezialisierung
- Visitor-Pattern
- Smart-Pointer
- Multi-Methoden
- Funktoren (generalisiert)
- Multi-Thread-Erwägungen für die Komponenten
Die Ideen sind enorm interessant und spannend. Trotz der sehr abstrakten Herangehensweise der Template-Meta-Programmierung bekommt man stets Ideen für den praktischen Einsatz. Selten genutzte C++-Sprach-Eigenschaften werden kurz erklärt. Da das Buch komplett neue Herangehensweisen erfindet, ist es auf keinen Fall leicht ersetzbar. Die deutsche Übersetzung enthält jedoch leider häufiger Fehler im Code. Das Ergebnis des Buches ist eine interessante Bibliothek namens Loki. Viele Prinzipien finden sich auch in Boost und C++0x wieder, so sind "variadic templates" auch schon mit Typlisten erreichbar. Die 400 Seiten hat man beim hohen Spannungsgrad schnell gelesen! -
K-Files ist einfach extrem simpel aufgebaut, sodass es sich überall gut integrieren lässt. Außerdem bekommt man hier im Forum guten Support dafür.^^
-
Kannst ja als Archiv hochladen.
Such mal nach "EasyArchives". Sollte bei einer normalen PHP-Installation klappen.
Mit readfile kannst du die Datei downloaden.
Die K-Gallery ist recht komfortabel, da müsstest du aber eben das mit dem Login hinzufügen. -
Also Safari, Chrome und Opera haben einige. (zusammen vielleicht 10-15%?)
Und um meinetwillen soll man den Konqueror nicht vergessen!
Lynx und Dillo sind ziemlich egal, die ignorieren größere Formatierung einfach und haben dadurch keine Kompatiblitätsprobleme.
-
Ansonsten musst du Hardcore-Geek werden.

-
Habe die Bücher hinzugefügt.
Da ich allerdings weder "Die C++ Programmiersprache" noch "Effective C++" gelesen habe, wäre ich für Hinweise sehr dankbar. Ihr kennt auch sicherlich noch weitere Bücher... -
Zweite Sache:
Links zu: Metaprogrammierung - Interessantes im Forum
]cout << cin
Original freakycpp, Allgemeines zu Typlisten und Policies ähnlich zu "Modernes C++ Design"
Interessantes über Meta-Programmierung, Host-Sprachen und effizientes Rechnen -
Erste Sache:
Man kann SIGSEGV (Null-Dereferenzierung) und ähnliches (Division durch 0...) abfangen:
Folgender Code:C
Alles anzeigen#include <iostream> #include <csignal> #include <stdexcept> using namespace std; struct seg_error : public runtime_error { int key; seg_error(string message = "", int _key = 0) : runtime_error(message), key(_key) {} }; void segmentationFault(int key) throw(seg_error) { throw seg_error("Segmentation Fault! Error key is: ", key); } int main() { signal(SIGSEGV, segmentationFault); try { int *x = 0; cout << *x; } catch(seg_error e) { cout << "Hi!" << endl; cout << e.what() << e.key << endl; } cout << "still alive..." << endl; return 0; }
Bei Empfang des entsprechenden Signals wird die Funktion aufgerufen und eine Ausnahme ausgelöst.
Beim Kompilieren muss die Aufrechterhaltung der korrekten Stack-Abwicklung berücksichtigt werden:Codeg++ -o catchsigsegv ./catchsigsegv.cpp -fnon-call-exceptions -fasynchronous-unwind-tables -funwind-tables ./catchsigsegvObwohl das Standard-C++ ist, funktioniert es unter Windows nicht, da dort keine Signale versendet werden.
Viele liebe Grüße
The User -
Hi C++-Freunde!
Da C++ immer wieder für Überraschungen gut ist, mache ich hier einmal einen Sammelthread für die erstaunlichsten Dinge in C++ auf. Ob hardwarenaher Kram oder Template-Meta-Programmierung, Hauptsache lustig.
Da das keine FAQ o.ä. ist, kann ruhig alles in einzelne Posts getan werden.
Viele liebe Grüße
The User -
Hi!
Erstmal: Ein Header-Guard sieht so aus:
Beim #include brauchst du kein #if, brauchst du z.B. bei <iostream> ja auch nicht.
Du kannst mit dem GNU Compiler (MinGW unter Windoof) recht einfach auf der Konsole den Präprozessor überprüfen:
Falls du GNU/Linux, Mac, BSD oder unter Windoof eine installierte Bash hast geht es so:Dann: Was soll das für ein Config-File sein? Für mich ist das ein normaler Header-File.
Das extern entbindet dich nicht deiner Pflicht, die Definition der Klasse/der Funktion zu linken. Du musst dem Linker mitteilen, dass die entsprechende Objektdatei berücksichtigt werden soll. Sonst läuft die Verwendung ins Leere und er meckert zu Recht.Viele liebe Grüße
The User -
Welcome Back Sejuma!!!!!
-
Das war auch nicht so ernst gemeint mit den Verträgen.
Bloß gibts solche Vorkehrungen eher selten bei Bildern.
Mit dem header muss ich nachschauen:
http://www.php-resource.de/forum/showthre…?threadid=11040Viele liebe Grüße
The User