
VaNaTiC
Mitglieder-
Gesamte Inhalte
582 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Alle Inhalte von VaNaTiC
-
Auch mit einem std::set kommst Du nicht drum herum zu prüfen, dass wenn random(x) eine Zahl liefert, die bereits im set enthalten ist, nochmal auszurühren. Wenn man LOTTO nachspielen wöllte, müsste man konsequenter weise ein SET mit allen "Zahlkugeln" abbilden und dann ein random(Anzahl-Runde) machen, so dass nach jeder Runde eine Kugel weniger per Zufall entschieden wird.
-
Das Problem gabs schon paarmal: Den Reboot-Modus ausschalten, damit man einen vernünftigen BlueScreen bekommt. Dort steht dann meist ein Verweis auf die Ursache. Wie: Arbeitsplatz->Rechtsklick->Eigenschaften->Register "Erweitert" Button "Starten und Wiederherstellen": [x] Ereignis in Sys-Protokoll eintragen (ganz gut, wenn ja) [ ] Admin-meldung senden (eh egal) [ ] Autom. Neustart durchführen ( !!! wichtig nein) Kernelabbild ( KEIN "Minidump" und nicht unbedingt ein "Vollständiges Speicherabbild") [ ] Vorhandene Dateien überschreiben ! (nicht überschreiben ist dann gut, wenn es mehrere Probleme geben söllte) Jetzt muss Dein Rechner nur nochmal mit nem Bluescreen abstürzen und dann gibts ein paar Tools mit denen Du genau herausfindest, welcher Treiber/Problem im System hängt. Eines der Tools ist WinDbg von Microsoft. Analyse eines Bluescreens Nickles.de - Stories: Fehlerhafte Treiber auffinden und entfernen
-
Soweit ich weiss unterstützt Windows Server maximal ein Software-RAID 0 (StripeSet) und 1 (Spiegelung), aber das halt auch per Software. Mein Vorschlag für unter 100,- EUR einen 2 oder 4-Kanal IDE-RAID-Controler. Und dann beim Installieren von Windows die ominöse Taste F2 drücken und die Treiberdiskette bereithalten
-
Ich empfehle Code::Blocks. Vorallem die Integration der diversen Bibliotheken find ich gut. Mit den Visual xxx Express Dingern kann ich mich persönlich nicht anfreunden, aber das ist ausdrücklich meine persönliche Einstellung. Kann gut sein, dass Du mit anderen Produkten aus dieser Reihe schon Erfahrungen hast. Dann wäre das natürlich Deine erste Wahl.
-
OK, stimmt. Das hab ich dann falsch verstanden. Bin gespannt, wie das Ergebnis wird.
-
Das würde freilich funktionieren. Ich würde das als "ungewöhnlichen" Zeilenumbruch bezeichnen Aber nichtsdestotrotz hast Du jetzt etwas Arbeit im TableModel, denn Du musst jetzt automatisiert in der Zeile x+1 einen SubString setzen, wenn in Zeile x ein Wert reingeschrieben wird, der länger als Dein MaxWert ist. Ich geb Dir einen Tipp: das stinkt nach einer Rekursion, wenn Du nicht aufpasst
-
Das erinnert mich ein wenig an ASM oder AWL Aber mal was anders, wenn Du bereits Erfahrungen hast, wie schaut es dann aus mit erweiterten Datentypen, zum Beispiel struct (C/C++) oder record (Pascal/Modula)? Wenn Du das kennst, würde ich Dir empfehlen darauf aufzubauen und Dir dann anzuschauen, was der Unterschied zu einer Klasse ist. Dabei wirst Du erkennen, dass eine Klasse einfach noch höherer Datentyp ist. Zum Beispiel unterscheiden sich Klassen dadurch, dass diese neben eigenen Membervariablen auch eigene Methoden besitzen und dies gezielt durch Sichtbarkeitsdeklarationen und Vererbung spezialisieren und/oder verwenden können. Daraus ergeben sich dann vielfältige Möglichkeiten sich Klassenstrukturen auszudenken um Code zu abstrahieren und wiederzuverwenden oder besser voneinander zu trennen, ... Alles in allem solltest Du trotzdem nicht zuviele verschiedene Dinge zusammen anpacken, sondern differenzieren und zum Beispiel zuerst einmal mit einem Buch/Tutorial Klassen Objekte und deren Vererbung üben. Danach kann ich nur empfehlen sich mal mit Design Patterns auseinanderzusetzen, allen voran, sowas wie Factory-, Singleton-, Model-View-Controler-, Observer-Pattern, ... Das hilft um später selber komplexere Klassenstrukturen nützlich zu erstellen Danach würd ich mich mit Netzwerkprogrammierung oder einer der Bibliotheken auseinander setzen. Und danach erst mit dem konkreten Spiel. Vom Prinzip her ist Dein Spiel auch nur eine kleine Testanwendung, die Du gern OOP-mäßig implementieren willst, aber ich finde, das wäre einfach zuviel auf einmal.
-
Ich verstehe den Zusammenhang zum Topic nicht. Würdest Du etwas anderes vorschlagen? Wenn ja, dann raus damit.
-
Soweit mir bekannt, ist Checksumme (Prüfsumme) ein Anwendungsgebiet der Hashfunktionen. Ja, ich sagte bereits grob wie eine Quersumme Ist schwer einzuschätzen, wie grob. Sollte nur als Gedankenstütze dienen und ich denke das hat es Simples Kreuzprodukt? Hmm, mit quadratisch wachsendem Aufwand? Na toll. 1000x1000x~4MB Dateien, viel Spass, wenn man das wirklich "vergleicht" ohne Hashing Und da er ja eingangs schon erwähnte, dass er den "Vergleich" ohne die ganzen IDx-Tags machen will, musst auch wirklich den Track extrahieren und vergleichen oder hashen.
-
PFUI. Das hab ich einmal als Software-Redundanz versucht und das taugt nix. Global Script ist absolut nicht belastbar für solche Sachen. Finger Weg! Ich hab irgendwann mit dem ODK so gut wie alles selber gehandelt. Nicht umsonst machen alle Steuerungsaufgaben die SPSen und nicht WinCC. DOPPELPFUI! 1. GetTagBit() ist eine asynchrone Methode aus der dmclient.dll, die mit dem halben Intervall der benötigen Zeit die Daten ausm Prozess holt (egal ob nun OPC oder SPS) 2. Schau zu, dass es keine Bit-Variablen gibt, d.h. Du liest 32bit Doppelworte, aber mindestens 16bit Worte, wo sozusagen 16 Meldungen auf einmal bearbeitet/kopiert/verglichen werden. 3. Wenn ich Dich richtig verstanden habe, werden nur die Änderungen bearbeitet?! Ist doch aber quatsch, ich hab doch ohnehin den Orginalwert geholt und nun wird noch der alte Wert geholt und dann nloch verglichen? Dann kann ich doch gleich den Orginalwert in mein Prozessabbild schreiben. Fakt ist, das sollte doch eine belastbare Anwendung sein. Oder handelt es sich hier um das "Licht im *******haus" (tunneldeutsch für unwichtig ) Alles in allem frag ich mich echt, was das für ne Anlage ist, sowas würd ich nicht akzeptieren! In welchem Auftragsverhältnis steht ihr mit ABB. Ist der Vertrag nach VOB? Ist ICMP vielleicht deaktiviert? Oder stimmen die Revisionsunterlagen nicht? Beide ist ******e und kenn ich eigentlich nicht. Schon wieder ein Grund sich mit ABB ins Benehmen zu setzen! ARP ? Wikipedia Context switch - Wikipedia, the free encyclopedia Ich meinte damit, dass das komisch ist, weil bei 3 Steuerungen nach 4 Minuten prozessorzeit keine 1.9 Milliarden Context-Switches ausgeführt werden söllten. Aber ich kann Eure Anlagenprobleme nicht ohne genaue Kontrolle lösen. Langsam muss ich auch Geld verlangen Ihr müsst Euch definitiv mit ABB zusammensetzen. Meine Anmerkungen sollten Euch allerdings enorm viel Futter für die 120mm Kanone geben Auf den Process Explorer Screen, wenn System tot ist, bin ich gespannt, aber dann wirds Zeit dass ihr das Problem mit ABB angeht.
-
Falsch ein Hash ist kein eindeutiger Vergleich auf die Orginaldaten!!! Bitte aufpassen, nur weil man in der Computertechnik Hashing benutzt um Keys oder IDs herzustellen, heisst das nicht, dass die nicht doppelt vorkommen könnten bei unterschiedlichen Eingangsdaten. Die Wahrscheinlichkeit ist nur sehr sehr gering! Ein Hash ist grob gesagt nix weiter als eine bessere Quersumme! Bitweises vergleichen ist außerdem meiner Meinung nach absolut nicht notwendig. Wenn dann liest Du die Datei in einen Puffer oder extrahierst Dir in ein Array/Puffer (je nachdem wie toll Du das machen willst) und vergleichst byteweise oder besser sogar gleich 4 bytes in einem Integer auf einem 32bit System solange es eben 4 Bytes sind und nur den Rest byteweise. Aber das wird nicht lustig, dauert lang und ist glaube auch nicht die Lösung für Deine Aufgabenstellung, denn Du müsstest sozusagen, jede Datei aus Verzeichnis 1 mit jeder Datei aus Verzeichnis 2 vergleichen. Die Vermutung liegt nahe, wie TDM bereits sagte ein Hash-Verfahren zum Vergleichen herangezogen werden soll. Ich würde Dir ein Hashverfahren empfehlen, welches geradeso groß ist, dass es in eine minimale MP3-Datei "passt". Beispiel: minimale MP3-Datei Track 0 Sekunden, keine ID3Tags, ein paar MP3-Header, ...) wären vielleicht 150 Byte. Dann würde ich die Hashgröße auf 128 Byte (1024 bit) festlegen.
-
hmm, mittels FontMetrics "errechnet" man anhand des Fonts und des Strings die tatsächlichen Pixel auf einer Zeichenfläche eines Textes. Was verstehst Du da nicht? Die API-Hilfen sind doch selbsterklärend? Wenn FontMetrics schon ein Problem darstellt, dann lass das automatisierte Setzen der Spaltenbreite einer JTable nochmal sein. Du verrennst Dich sonst.
-
ich dachte man muss im Client das HelloWorldRemote und nicht Local nehmen
-
hmm, im Unterverzeichnis Crypto sind alle implementierten Verschlüsselungsverfahren aufgeführt. Aber ich würde mir auf Anhieb schwer tun, den Code von Blowfish zum Beispiel zu erläutern.
-
Hmm, das nützt so leider nix, wenn dann solltest Du den Zustand der Maschine festhalten, wenn die wieder perma 100% hat. Zu diesem Zeitpunkt dann auch netstat -a und -s. Mal ein paar Dinge am Rande: - WinCC5 brachte den SQLanywhere Server mit dbsrv7.exe! Wieso läuft der bei Euch noch drauf? Habt ihr von einem WinCC5-Projekt hochmigriert? - Die Scripts.exe hat 25h Prozessorzeit??? Gesamtlaufzeit prüfen, Idle hat im Vergleich dazu 263h. Da kann was nicht passen. Scripts.exe sind die Global Scripts. Was machen die denn damit alles? - Ich hab schon in mehreren Projekten wirklich auch intensiv Global Scripts selber genutzt und das brachte nur Probleme! Das liegt am internen Handling des WinCC, dass die sequentiell ausgeführt werden. Dazu aber hier nix weiter, das wäre einfach zuviel. Der Prozess AC800MC_OpcServ hat nur 4min Prozessorzeit und mit seinen 23 Threads (wozu eigentlich? habt ihr 11 oder 23 SPSen? ) bereits 1.919.511.871 Context-Switches zwischen den Threads! Das ist nie gut. Ansonsten ist nix zu erkennen, auch im netstat -a nix, das schaut normal aus. Die vielen PageFaults und ContextSwichtes vom WinCC sind normal, SIEMENS kanns nich besser
-
Nein, wahrscheinlich fällt mir auf einen schnellen Blick mit Wireshark nix auf, sonst wäre irgendwas Grundlegendes falsch. Ich hoffe wirklich, dass uns der Process Explorer weiter hilft. Bin nur die nächsten 2 Tage unterwegs, vielleicht kann ich morgen früh nochmal reingucken.
-
Hmm, soweit ich weiss, löst die Funktion MIN(A1:C1) doch schon soweit auf, dass leere Zellen nicht berücksichtigt werden?!
-
Korrekt, das Ausrechnen der tatsächlichen Pixel eines Textes in einer Zelle macht man zum Glück nur einmal und zwar genau dann, wenn der Text in das TableModel gesetzt wird. setValueAt() war das glaube ich. Das lässt sich dann prima mit dem Maximum ausm TableColumnModel vergleichen und ggf setzen und JTable updaten per fireXXX(). Fakt ist, dass ich leider noch keine JTable in einem Container wie JScrollPane oder so gesehen habe, die das beim Resizen trotzdem noch ordentlich gemacht hat. Machbar ist das sehr wohl, aber man muss mit ganz kleinen Einschränkungen rechnen und leben.
-
OK, also S7 mit Industrial Ethernet CP. Wie meinst Du das ABB OPC-Server? Direkt von ABB? Hmm, dann schau Dir mal die Verzeichnisse des OPC-Servers an, da wirst 100%ig eine EXE oder DLL finden, die sich in der Prozessliste unter Services wiederfindet. Die solltest Du mal konkret überwachen. Ich vermute hier liegt der Hund begraben. ABB hmm, ein Kollege hat mal mit denen was in ZPW Lichtenberg zu tun gehabt. Mal ne ganz dumme Frage: Warum projektiert ihr nicht die S7-Variablen direkt im WinCC? Ob die nun als OPC- oder Ind.Eth.-Variablen drin sind, spielt für die Lizenz keine Rolle. Sind alles externe Variablen. Oder wäre das doppelte Abgreifen der Daten aus den Steuerungen zu heftig? Doppelt wäre es aber auch nur dann, wenn eine weitere Software als zweiter OPC-Client die Daten auch abgreift und damit was anderes macht. Ansonsten ist der OPC-Server sowieso umsonst da drin und kostet nur Ressourcen und wahrscheinlich Lizenz. netstat -a da muss man (je nach dem wieviele Sockets offen sind) schon ne Weile warten! Was mir am summary-File pauschal auffällt ist, dass immens viele Passiv geöffneten Verbindungen gezählt wurden?!
-
Genau, wie Crash2001 sagte. 1) Fakt ist, Du solltest definitiv als erstes herausfinden, welcher Prozess das System nach einer gewissen Zeit belastet. Zum Beispiel bevor das System neu gestartet wird mittels Process Explorer von SysInternals prüfen. Wichtig sind, solche Sachen, wie CPU-Zeit, Context-Switches, Handles, Threads, Page-Faults, Virtual-Size, Private Bytes. Das sind zusätzliche Spalten zum Anzeigen. 2) wie oben beschrieben netstat -a und -s ausführen. Am besten per pipe in eine Datei netstat -a > alles.txt und netstat -s > summary.txt 2) Dann solltest Du konkret analysieren, wie schnell und eventuell wodurch der Wert ansteigt. Bitte vergleichen, ob Netzwerk/Socket-Probleme eventuell im Zusammenhang mit Speicherzuwachs einher gehen. 3) Und wichtig wäre zu wissen, von welchen Fabrikaten und Typen wir hier reden. 4) Du solltest bedenken, dass die meisten OPC-Implementierungen die unterlagerten Steuerungen nur abpollen!!! D.h. alle x-Zeiteinheiten wird der komplette Datenhaushalt abgeholt und im OPC-Server auf Änderungen geprüft und dann die Änderungen als Event getriggert. Das machen beispielsweise auch alle großen großen SCADA-Lösungen, wie WinCC oder PVSS2 so. Das kann dann schon dauern, je nach Größe des Datenhaushalt und der Verbindung. Meine persönliche Meinung ist leider, dass OPC nur durch die Qualität der Treiber- bzw. Protokollimplementierungen funktioniert. Und die ist leider nicht immer gut, kompatibel zu verschiedenen OS oder fremder Software.
-
Performance von INNER JOIN Abfrage erhöhen - Vorschläge?
VaNaTiC antwortete auf Testbernd's Thema in Datenbanken
hmm, CONCAT von Strings als ON-Vergleich für den inner join und davor aber noch nen Sub-Select. Das is schon heftig Bist Du sicher, dass Du den ORDER BY im Sub-Select brauchst? Wenn die Felder im Where-Statement als Sekundär-Index vorhanden sind, sollte er den nehmen. -
Programm zum feststellen von Ressourcenfresser
VaNaTiC antwortete auf Patrick.Karre's Thema in Windows
Was meinst Du denn mit "schlechter"? Ist das Datei-Handling langsamer? SATA-Treiber vielleicht? Oder evtl HDD im PIO-Modus? Sind diverse Programme langsamer? CPU-Auslastung? Spiele nicht flüssig? Korrekte Treiber? Grafikkarte vergleichbar? -
Also ich hab vor paar Jahren ziemlich heftig nach einer optimalen Lösung dazu gesucht und rumprogrammiert. Bin aber zu keinem wirklich befriedigendem Ergebnis gekommen, außer das eine fixe Angabe die wirklich einzig wahre ist. Leider kam das für mich nicht in Frage, da ich einen CSV-DB-Editor programmieren wollte, bzw. eine allgemeingültige JTable ausm SWING-Toolkit, die als Basis für eigene Zwecke dient. Ich kann nur soviel sagen, dass Du ein eigenes TableColumnModel brauchst und Deine eigene JTable sollte die Verbindung zum eigenen TableModel und TableColumnModel herstellen. Anhand der Daten im TableModel kannst mittels des gesetzten Font's der Spalte errechnen, wieviel Pixel der maximale, der minimale und der prefered Breite ist. Aber mach Dich darauf gefasst, dass das nicht lustig wird, denn ich denke, dass gerade das Feuern der diversen Ereignisse zum Feststellen, der Größen-, Spalten- und Zellenänderung nicht wirklich mit dem Container zum beispiel ScollPane zusammenpasst! Viel Erfolg.
-
Hmm, das klingt nach einem anderen Problem. Der IP-Stack heute ist relativ intelligent. Geprüft werden muss auf alle Fälle, welche Dienste nach einer Zeit die gesamte CPU belasten. Was ist das genau für ein Ethernet-Protokoll, ich glaube nicht, dass ihr direkt auf OSI 1 geht Ich hab beispielsweise Ether-S-Bus (UDP über Port 5050) direkt native implementiert, weil alle SAIA-Treiber und OPC, alles zu langsam und nicht flexibel ist. Wenn dem OSI-7 Protokoll der per Ethernet angebundenen SPS das TCP/IP zu grunde liegt, können diverse Fehlerchen in der Implementierung selber Ursache sein. Auch mit UDP kann man Fehler machen, aber zum Glück nur einen Teil Schonmal an ein Memory-Leak gedacht? Halb-Offene oder Halb-Geschlossene Verbindungen gecheckt? Zum Beispiel mal ein netstat -a (alles anzeigen) und/oder netstat -s (summary). Der PC hat aber definitiv garnix mit dem Ring-Protokollen am Hut, außer wie ich erwähnt hatte, bei uns einmal mit EKS-Switchen, dass die Rechner erst neue ARP-Requests ausführen mussten. Aber dann bekommt man garkeine Verbindung nach Rekonfiguration. Also wie gesagt, meine Vermutung: Speicherüberwachung, CPU-Überwachung und die Wurzel des Übel auf dem PC prüfen.
-
Um ehrlich zu sein, würde ich erstmal mit einer "alten" prozeduralen Programmiersprache anfangen. Darin kann man prima erlernen, was ein Programm ausmacht, wie Blöcke, Variablen, Funktionen, deren Deklarationen, Definition, ... Daraus lassen sich dann mit unterschiedlichen reservierten Wörtern und den diversen Datentypen, kleine Algorithmen zum Lernen programmieren. Das sollte rein textuell passieren. Wenn man dann was von Zeigerarithmetik, doppelt-verketteten Listen, Suchbäumen, Bitpopelei, Turm von Hanoi, Parsen und viele viele Access Violations bekommen hat, spätestens dann würde ich objektorientiertes Programmieren anschauen. Und das gern mit Java. Aber nicht viel eher, denn die Fehler die man vorher gesucht, gefunden und gefixt oder garnicht erst gemacht, weil gelernt hat, helfen extrem zu verstehen, was Java von anderen Sprachen/Techniken unterscheidet.