
VaNaTiC
Mitglieder-
Gesamte Inhalte
582 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Alle Inhalte von VaNaTiC
-
Hmm, Hibernate zuviel Config?! Das ist bei anderen komplexeren Mappern ähnlich. Fakt ist, dass ich bisher immer selber entwickelte, dafür speziell optimierte OR-Mapper eingesetzt habe. Wichtig bei der Entscheidungsfindung sollte für Dich sein, wie und wann gemappt wird. Mit welchen Abhängigkeiten, wie tief, nach festem Schema (deshalb mehr Config) oder per RTTI (wenig config, dafür mehr Laufzeit), ... Es gibt auch direkte ODBs. Mein Favorit zum Beispiel ist db4o :: Native Java & .NET Open Source Object Database Als freier Entwickler von Dawn of Light kenne ich den dort eingesetzten OR-Mapper auch ganz gut: SourceForge.net Repository - [dolserver] Index of /DOLSharp/trunk/DOLDatabase
-
unter cygwin (linux-umgebung für windows) gabs da die ps-Tools mit diversen Parametern und Umleitungen in Dateien, etc. Aber eine bessere Alternative sind die PsTools von SysInternals. Da gibts das cmdline-tool pslist > ausgabe.txt was genau das tut
-
Delphi: Formular pausieren bis zu einer Aktion
VaNaTiC antwortete auf Zakum's Thema in Delphi/RPG+CL/Sonstige
Kein Problem: procedure Form1.OnButton1Click(Sender blablub); begin ... if Form2.ShowModal = mrOK then begin ... end; end; Form.Show öffnet nur das Fenster in den Vordergrund und kehrt sofort zurück. Bei Form.ShowModal dagegen bleibt die Ausführung dort stehen und öffnet das Fenster als modal (wie einen Dialog) und kehrt erst zurück, wenn ein Button, der einen gesetzten ModalResult hat gedrückt wurde, oder das Form mittels einer der diversen Methoden zum Closen ausgeführt wurde. Hinweise: 1) Wichtig ist einerseits genau zu wissen, wann Du einen Close und wann Du einen Hide im Form2 machen musst! Sonst knallts evtl beim zweiten Aufruf 2) Andererseits ist auch wichtig zu wissen, dass es einen Unterschied macht, ob das Formular2 bereits instanziiert wurde, ansonsten musst Du es vorher noch mittels Application.CreateForm(TForm2, Form2); erstellen. Siehe dazu in der Project.dpr: in der Quellcodeverwaltung -> Rechtsklick -> Quellcode anzeigen Wenn was nicht klappt einfach nochmal fragen -
Zu 1) Hinweisfrage: Was muss man installieren oder installiert sich, wenn man neue Geräte an den Rechner anschliesst? Zu 2) Als Einstieg sollte Dir das helfen: Parallele Schnittstelle ? Wikipedia Serielle Schnittstelle ? Wikipedia
-
UI, um Dir da konkreter weiterhelfen zu können, wäre es gut zu wissen, ob Du als Ergebnis eine theoretische Beschreibung des Algorithmus (zbsp. Struktugramm) oder einen Quellcode liefern sollst. kingofbrain hats schon gefragt und ich glaube Klotzkopp meinte das mit seiner Frage was ein Algorithmus ist, aber ich frags nochmal anders denn vielleicht hab ich's auch nicht verstanden
-
hmm, also ich dachte mit dem Link hätte ich alles gesagt, aber es ist eben nicht nur "einfach" und "mehrfach". Denn diese beiden Begriffe sagen wie ich schon sagte nur aus, von wievielen, aber nicht wie und nicht was. Es gibt eben den noch viel größeren Unterschied der Frage wie "vererbt" wird. Wobei man den Begriff "vererben" bitte eher umgangssprachlich sehen sollte. Fakt ist es gibt zum Beispiel noch sowas wie Schnittstellenvererbung (Interfaces, abstract) und Implementationsvererbung (überschreiben... , wenn reimplementiert). Das hat zum Beispiel überhaupt nix mit einfach oder mehrfach zu tun. Dann gibts grade bei Mehrfachvererbung zwei Sonderfälle zu beachten. class A { foo() } class B { foo() } class C: A,B; jetzt gibts ein nettes Feature, gerade wenn man das unter dem Stichwort der Polymorphie betrachtet Daraus ergeben sich schon alleine vielfältige Kombinationen. Und wie Klotzkopp völlig korrekt sagte natürlich noch solche Sachen, wie private, protected, public, wo wir dann beim Was wird vererbt ankommen. Auf die Akquisition wollte ich garnicht hinaus.
-
naja, ich glaube Dir fehlt der Bezug was eine 4x4 Matrix im Rechner ist Wenn man sich ganz pragmatisch vorstellt, dass das ein zweidimensionales Array ist, sollte es Dir jetzt einfacher fallen, eine Lösung zu implementieren.
-
http://de.wikipedia.org/wiki/Vererbung_(Programmierung) einfache und mehrfache sagt nur aus von wievielen "Eltern", aber nicht, was und wie.
-
@Klotzkopp: Klasse Sache, ich habe den pair-operator einfach nach std verschoben. Und siehe da funktioniert prima und wie gewünscht mit Variante 1. namespace std { ostream& operator<< (ostream& out, const SimpleMap::value_type & p) { return out << "[" << p.first << "=>" << p.second << "]"; } } @AndiE: Kein Problem, das passiert. Ich gebe auch zu, dass das Beispiel map<int,string> und dann map[0]=text" unglücklich gewählt ist. Die map<string,int> mit map["text] = 0 wäre auf den ersten Blick wohl die bessere Wahl.
-
TSockerServer mit ftThreadBlocking
VaNaTiC antwortete auf aLeXanDer..'s Thema in C++: Compiler, IDEs, APIs
Hmm, das ist nicht so einfach zu beantworten, was man wann machen muss. Das hängt in allererster Linie davon ab ob blocking oder non-blocking. Danach kommt es darauf an, ob Du den Client und/oder Server machen willst. Im Prinzip läuft es aber immer auf dasselbe raus: Server S bindet sich an IP:Port, meist 0.0.0.0:Port S wartet (listen) auf Connects der Clients, hier bereits Unterschied zwischen blocking und non-blocking. Blocking wartet in einem Thread. Non-Blocking returnt intern immer und liefert einfach kein Eregnis Client C connectet sich an IP:Port (aber nicht 0.0.0.0, sondern eine echte ). blocking C wartet auf Timeout oder Erfolg. non-blocking C returnt nach Verbindungsversuch sofort und läuft einfach weiter. D.h. asynchroner C registriert eine Callback OnConnected() oder so und dort wird gehandelt, dass Connect ok ist. Leider kann ich Dir ohne konkrete Aufgabenstellung, was Du am non-blocking Beispielprogramm verändern willst, nicht genauer helfen. Unter "Accept" versteht man genau das Handling, wenn der Server dem Client den vom Client initiierten Verbindungsversuch statt gibt. D.h. zum Zeitpunkt, wenn der Server noch kein Accept gemacht hat, kann der Server auch die halb-offene Verbindung schliessen und der Client geht leer aus (Stichwort: Accept-Floodings). -
TSockerServer mit ftThreadBlocking
VaNaTiC antwortete auf aLeXanDer..'s Thema in C++: Compiler, IDEs, APIs
hmm, so einfach ist das aber nun nicht umzuschalten zwischen synchroner (blocked) und asynchronen (non-blocking) Implementierung. Grob gesagt wird bei asynchroner Socket-Programmierung eine Funktion wie connect() aufgerufen und dieser Aufruf kehrt nach dem eigentlichen Handling sofort an den aufrufenden Kontext zurück. Deshalb wird bei asynchronen Sockets immer in Ereignissen reagiert, wie OnError(), OnRead() und wie sie alle heißen mögen. Bei synchronen Sockets ist das anders, da wartet der Aufruf von connect() bis alles erledigt ist, also bis Std-Timeout oder bis Server geantwortet hat. Wenn dann aber nach connect() kein Code mehr folgt, wird logischerweise der Code im OnConnected() nicht ausgeführt, also gehts nicht weiter. -
Hmm, ist doch logisch. Du hast ja auch ein Space im zweiten Parameter drin. Versuch mal: StringTokenizer strTk = new StringTokenizer(str,"\n");
-
@AndiE: Ich habe keine Ahnung wovon Du sprichst. Meine Map-Zuweisung ist sehr wohl korrekt @Klotzkopp: Danke, darauf wäre ich nie gekommen! Kann man das irgendwie umgehen, oder doch nur mit Variante 2? Wenn ich das richtig verstanden habe, ist also der operator<< den copy() benutzen will im namespace std. Könnte ich den nicht in meinem namensraum überschreiben?
-
Hallo, habe anscheinend ein Verständnisproblem mit der Templates-Fehlermeldung. Habe das Problem auf ein kleines Sample reduziert. Gegeben sei der Typ und die Variable typedef map<int,string> SimpleMap; SimpleMap simple; simple[0] = "null"; simple[1] = "eins"; simple[2] = "zwei"; simple[3] = "drei"; simple[4] = "vier"; simple[5] = "fünf"; Für die Ausgabe eines Iterators als Test nutze ich: ostream& operator<< (ostream& out, const SimpleMap::value_type & p) { return out << "[" << p.first << "=>" << p.second << "]"; } cout << *simple.begin() << endl; // Beispielausgabe Wenn ich jetzt die gesamte Map ausgeben will wollte ich nutzen: ostream& operator<< (ostream& out, const SimpleMap & m) { // Variante 1 ostream_iterator< SimpleMap::value_type >output( out, "\n" ); copy( m.begin(), m.end(), output); return out; } Das liefert mir jedoch einen cryptischen STL-Fehler: Wenn ich statt einer Map, nur eine Vector<int> nutze, geht das prima. Ich hab mir jetzt mit folgendem Code geholfen: ostream& operator<< (ostream& out, const SimpleMap & m) { // Variante 2 for ( SimpleMap::const_iterator I = m.begin(), E = m.end(); I != E; ++I ) out << *I << endl; return out; } Aber das kanns doch nicht sein oder? Wo liegt denn der Unterschied zwischen den beiden Konstrukten? vector<int> liste; ostream_iterator< int >output( cout, "\n" ); copy(liste.begin(),liste.end(),output); map<int,string> MyMap; ostream_iterator< MyMap::value_type >output2( cout, "\n" ); copy(liste.begin(),liste.end(),output2); Oder wird bei copy(...) nicht der operator<< verwendet?
-
Mal von dem ursprünglichen Missverständnis zwischen Internetzugang über Stromeinspeisung des örtlichen Anbieters und hausinternen Netzwerk über Steckdose abgesehen, kenne ich keinen Anbieter der zur Zeit ernsthaft erwägt die Technik für den Internetzugang über Stromeinspeisung weiter voranzutreiben. Es gab während der Pilotphase harte Regularien der EU bezüglich der Leistung, die eine flächendeckende Installation ziemlich unrentabel bzw. kalkulatorisch unsicher machten. Diese Grenzwerte sind Ende letztens Jahres mal im Gespräche gewesen, etwas aufzuweichen. Aber danach hab ich nix mehr davon gehört.
-
Wenn der Explorer-Prozess abstürzt hat das i.d.R. mit der Explorer.exe garnix zu tun, sondern meistens mit einem der vielen Plugins, die im Explorer integriert sind, installiert wurden oder mitgeliefert sind. Letztens irgendetwas de- oder installiert mit Explorer-Integration (z.Bsp. im Kontextmenu, SysTray)? Kann geprüft werden mit Autoruns (Tab "Explorer") von SysInternals. Wie: Endlosschleife vom Explorer ignorieren und Ctrl+Alt+Del -> TaskManager -> Datei/Neuer Task ausführen -> Autoruns (Vorschlag: vom USB-Stick)
-
Änderungen an Datei via FileSystemWatcher mittels EventLog festhalten
VaNaTiC antwortete auf Amstelchen's Thema in .NET
Du solltest über den Watcher an das WRITE-Ereignis rankommen und dort an die Infos Offset und Length. D.h. jetzt weisst Du genau, dass was neues geschrieben wurde. Wenn allerdings der schreibende Prozess das File aber mit ECLUSIVE geöffnet/erstellt hat, dann kommst Du soweit ich weiss nur ran, wenn Du nen Hook auf WriteFile() in den Prozess injectest. -
Laut RFC für FTP, gibt es außer LIST keinen Hinweis auf das Dateidatum. Ich kenne InDy (Delphi), FileZilla Server und in JAVA hab ich selbst einen FTPd entwickelt. Alle geben das Dateidatum nur innerhalb des LIST zurück. Daraus ergeben sich zwei Probleme: 1. du musst das LIST-Ergebnis pro Zeile parsen (unterschiedliche Systeme, mögen sich da nicht unbedingt an die allgemein gültige Formatierung halten) 2. für einen Vergleich taugt das nur sehr bedingt, denn der FTPd setzt das Dateidatum nach einem Upload neu. D.h. für Dich Du musst das Dateidatum nach einem Upload auslesen und Deine lokale Datei damit setzen. 2.1. Daraus ergibt sich aber ein weiteres Problem. Das Server-Dateidatum ist auch in der Zeitzone des Servers und in LIST gibt es keinen Verweis auf die Server-Zeitzone!
-
Hmm, meine Frau arbeitet auch mit ArchiCAD 12. Persönlich würde ich zur Zeit einen INTEL nehmen. Mindestens E8400 aufwärts. QuadCore würde ich nicht nehmen. Ein namhaftes Mainboard und niemals VIA-Chipsatz! Mein Vorschlag nForce. Eine NVIDIA Quattro FX ... solltest schon anbieten. Aber ganz ehrlich die teuerste muss es definitiv nicht sein. Ich glaube kaum, dass das Standardprojekt zum Zeichnen/Präsentieren Hochhausniveau oder Stadiongröße hat. Solche Rechner bekommt man um die 1500 EUR ohne Probleme mit erweitertem Support (exkl. ArchiCAD-Lizenz)
-
Crash hats schon angedeutet, Du möchtest anscheinend zwei Sachen machen: 1) Kontrollieren/Überwachen 2) (Fern-)Bedienen zu 1) muss man für eine Antwort wissen, was überwacht werden soll. (Systemveränderungen, Programminstallationen, Usereingaben, Netzwerkverkehr => besuchte WWW, ...???) Und ehrlich gesagt sind einige Dinge davon moralisch fragwürdig! zu 2) gibts diverse Remote-Control-Software, eine freie und wie ich finde ziemlich gute Variante ist UltraVNC, aber bitte lade Dir Version 1.0.2 runter, die 1.0.5 hat Fehler beim MultiMonitor-Support im Mirrortreiber.
-
Hmm, bei mir hat das funktioniert. Habe noch mehrere XP-Systeme (Arbeit, Laptop, ...). Speziell wollte ich TrueCrypt automatisch starten und Passwort eingeben und mounten lassen. Hab damals bissl bei google mit "truecrypt und autorun.inf" gesucht. War nicht schwer. Wenn Du willst poste ich meine autorun.inf. Aber da gibts einen Unterschied. Ich WOLLTE, dass erst auf Klick was passiert
-
Der Grund ist der normale Nutzungsfall: Man will i.d.R. einfach nur die Daten sortieren. Dabei spielt dann die unsortierte Orginalmenge keine Rolle. Daraus folgt ich benötige diese nicht im Speicher, also tue ich das auch nicht. Ausnahme ist wie gesagt nur, wenn ich das Orginal behalten muss. Denn der Mehrspeicherverbrauch kann extreme Folgen bei größeren Datenmengen haben, d.h. gerade auch auf "kleinen" Systemen ist man froh, wenn die Daten in den Speicher passen, da will man keine doppelten Daten unnützerweise im Speicher. Im Prinzip ist das der Hauptgrund, denn In-Place-Sortierungen tauschen nach unterschiedlichen Verfahren einzelne Elemente aus, was bedeutet, dass ich einen Speicherverbrauch = Liste + 1 Element habe, was sich sehr gut skalieren lässt. Außerdem kostet das Allozieren/Freigeben zusätzlichen Speichers natürlich auch Zeit. Das ist zwar beim Sortieren das geringere Übel, aber u.U. eben nicht vernachlässigbar.
-
Hmm, kenne kein Zitat. Im Prinzip ist Out-Place einfach höherer Speicherbedarf, dafür Orginaldaten unberührt. Das wird halt seltener genutzt, ist aber meiner Meinung weder veraltet noch ein Grund darauf nicht näher einzugehen
-
int difftime (time_t stoppuhr1, time_t stoppuhr2); ist eine Funktionsdeklaration, kein Aufruf. Versuchs mal mit: double d = difftime (stoppuhr1, stoppuhr2);
-
hmm, also meine bisherigen Erfahrungen mit WLAN waren inbezug auf größere ernstzunehmende Projekte eher ernüchternd. Aber Drucken und Terminalservices mit 80 Clients? Sind das etwa noch in etwa gleichzeitig angemeldete Clients? Vergiss es! Auch mit Draft-n-WLAN und mehreren Geräten in Kanälen 1,6,11 und mit 2er und 5er GHz-Bereich ist das etwas mau, wenn da ein paar Leute drucken wollen und gleichzeitig Labern. Ich vermute, dann geht das WLAN von der Brandbreite total in die Knie. Ich hoffe, das soll kein CallCenter werden, denn dann kannst Drucken oder VoIP gleich vergessen. Über TerminalServices läuft zwar nicht enorm viel Bandbreite, aber dafür ist die Latenz mit GigaBit-Kabelgebundenen Switches besser. 80 clients + 3 server + 8 drucker = in einer kollisionsdomain ist ok, aber das in einem WLAN = pfui