Jammer-Thread

Hier kann über allgemeine Themen diskutiert werden, die sonst in kein Forum passen.
Insbesondere über Szene, Games, Kultur, Weltgeschehen, Persönliches, Recht, Hard- und Software.
Benutzeravatar
xq
Establishment
Beiträge: 1589
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: Jammer-Thread

Beitrag von xq »

Microsofts Mitarbeiter haben anscheinend keinen blassen Schimmer wie UEFI eigentlich funktioniert (siehe u.a. http://www.heise.de/newsticker/meldung/ ... 91946.html ) Was für ein Haufen von Vollidioten.
KEINER hat eine ahnung, wie EFI eigentlich funktioniert. Die Leute verstehen doch BIOS noch nicht mal komplett und versuchen dann schon, was neues einzuführen... :P
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Programmiert viel in ⚡️Zig⚡️ und nervt Leute damit.
PiIstGenauDrei
Beiträge: 87
Registriert: 23.09.2010, 17:18

Re: Jammer-Thread

Beitrag von PiIstGenauDrei »

Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Biolunar hat geschrieben:Jeder meiner Mausklicks und Tastaturklicks wird standardmäßig an Microsoft gesendet.
Ich arbeite hier seit einigen Tagen an der Auswertung unserer Kunden-Logins. Wir empfangen die ID eines Users, sobald er sich bei uns einloggt – wir werten nicht einmal IP-Adressen, Geräteinformationen, oder andere Nutzungsdetails als das Login selber und etwaige Fehlermeldungen aus. Und was ich aus den Daten alles ablesen kann, von technischen Problemen bis zu Lebensgewohnheiten, ist echt krass. Am schlimmsten ist, wenn User ihre Passwörter (als solche offensichtlich) ins falsche Fenster tippen und die dann im Klartext im Log auftauchen. Was man dann erst mit den Informationen anfangen kann, die Windows 10 (oder Chrome) nach Hause funken, will ich mir eigentlich garnicht mehr ausmalen.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
kaiserludi
Establishment
Beiträge: 467
Registriert: 18.04.2002, 15:31

Re: Jammer-Thread

Beitrag von kaiserludi »

Aber wenn jemand sein PW beim Login versehentlich im Usernamefeld angibt, dann fehlt ja im Log der zugehörige Username. das heißt, was ablesen kannst du darauf eigentlich nur, wenn er sich mit der gleichen IP dann noch mal regulär einloggt.

Ganz übel sind übrigens die Firmen, bei denen die Hotlinemitarbeiterin zur Identifikation dein PW von dir buchstabiert haben will. Da dachte ich mir auch nur "WTF?"
"Mir ist auch klar, dass der Tag, an dem ZFX und Developia zusammengehen werden der selbe Tag sein wird, an dem DirectGL rauskommt."
DirectGL, endlich ist es da
:)

"According to the C++ standard, it's "undefined". That's a technical term that means, in theory, anything can happen: the program can crash, or keep running but generate garbage results, or send Bjarne Stroustrup an e-mail saying how ugly you are and how funny your mother dresses you." :shock:[/size]
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4273
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Jammer-Thread

Beitrag von Chromanoid »

kaiserludi hat geschrieben:Aber wenn jemand sein PW beim Login versehentlich im Usernamefeld angibt, dann fehlt ja im Log der zugehörige Username. das heißt, was ablesen kannst du darauf eigentlich nur, wenn er sich mit der gleichen IP dann noch mal regulär einloggt.
Genau, zwei Einträge später steht dann "XYZ" hat sich mit IP so und so eingeloggt.
kaiserludi hat geschrieben:Ganz übel sind übrigens die Firmen, bei denen die Hotlinemitarbeiterin zur Identifikation dein PW von dir buchstabiert haben will. Da dachte ich mir auch nur "WTF?"
Sicher, dass das kein Kundenpasswort gegen Social Engineering war?
Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Oh, solche Firmen gibt es. Meine Lieblingsgeschichte: Tomtom.

Ich habe meiner Mutter da einen Account angelegt, denn ohne konnte man keine Updates herunterladen (Fehler 1). Aber irgendwie kam ich dann nicht rein. Ich wollte das Passwort zurücksetzen, aber das ging auch nicht (Fehler 2). Also habe ich den Support angerufen, und der hat versucht, sich einzuloggen, und es klappte. Hm. Also haben sie mir das Passwort buchstabiert (Fehler 3, denn dann sind die da im Klartext gespeichert). Und es klappte nicht.

Ich hielt den Kundenservice für bescheuert, mir die paar Zeichen nicht richtig buchstabieren zu können. Und die hielten mich für bescheuert, die paar buchstabierten Zeichen nicht richtig eintippen zu können. Bis mal wieder die Krishty’sche Genialität durchkam:

Das Passwort hatte 17 Zeichen. Löschen wir doch einfach mal das Letzte, damit wir auf eine schöne glatte Zweierpotenz kommen, wie Computer das lieben. Und tatsächlich: Login klappte. Mir fehlten die Worte, also habe ich einfach aufgelegt.

I swear I'm not making that up: Die speichern die Passwörter im Klartext (nochmal Fehler 3). Die hatten im System 16 Zeichen dafür reserviert (Fehler 4). Keine Meldung, wenn beim Anlegen eines Users die Länge überschritten wurde (Fehler 5). Beim Kundenservice wurde jedes zusätzliche Zeichen einfach weggeschmissen (Fehler 6). Aber das Online-Portal hat das 17. Zeichen mitgeliefert und damit das Login ruiniert.
Chromanoid hat geschrieben:
kaiserludi hat geschrieben:Aber wenn jemand sein PW beim Login versehentlich im Usernamefeld angibt, dann fehlt ja im Log der zugehörige Username. das heißt, was ablesen kannst du darauf eigentlich nur, wenn er sich mit der gleichen IP dann noch mal regulär einloggt.
Genau, zwei Einträge später steht dann "XYZ" hat sich mit IP so und so eingeloggt.
Einmal das, ja. Vor allem aber: Wir testen unsere Software, legen also auch selber Accounts an, lassen uns die Passwörter geben, und loggen uns ein. Wenn man das ein paar Mal gemacht hat, weiß man, dass alle Passwörter eine Kombination aus Groß-Kleinbuchstaben sind, mindestens ein Bindestrich oder eine Tilde drin vorkommt, usw. und erkennt die in den Logs. Ich kann natürlich nicht garantieren, dass es wirklich das des Kunden war, aber es sah stark danach aus.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4273
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Jammer-Thread

Beitrag von Chromanoid »

Krishty hat geschrieben:Das Passwort hatte 17 Zeichen. Löschen wir doch einfach mal das Letzte, damit wir auf eine schöne glatte Zweierpotenz kommen, wie Computer das lieben. Und tatsächlich: Login klappte. Mir fehlten die Worte, also habe ich einfach aufgelegt.
Das ist für mich ein Klassiker. Ich benutze einen Passwortmanager, den ich standardmäßig 32 Zeichen lange Passwörter generieren lasse. Das Problem haben echt überraschend viele Systeme. Meistens liegt das an einer HTML-basierten Begrenzung der Zeichen beim Setzen des Passworts (die Zeichen werden dann i.d.R. beim Eingeben/Kopieren einfach nicht mehr geschrieben) und eine fehlende Begrenzung beim Login.
kaiserludi
Establishment
Beiträge: 467
Registriert: 18.04.2002, 15:31

Re: Jammer-Thread

Beitrag von kaiserludi »

Chromanoid hat geschrieben:
kaiserludi hat geschrieben:Aber wenn jemand sein PW beim Login versehentlich im Usernamefeld angibt, dann fehlt ja im Log der zugehörige Username. das heißt, was ablesen kannst du darauf eigentlich nur, wenn er sich mit der gleichen IP dann noch mal regulär einloggt.
Genau, zwei Einträge später steht dann "XYZ" hat sich mit IP so und so eingeloggt.
kaiserludi hat geschrieben:Ganz übel sind übrigens die Firmen, bei denen die Hotlinemitarbeiterin zur Identifikation dein PW von dir buchstabiert haben will. Da dachte ich mir auch nur "WTF?"
Sicher, dass das kein Kundenpasswort gegen Social Engineering war?
Ne, das war mein reguläres Account-PW, um mich auf der Seite anzumelden und auch das einzige, was ich dort hatte. Bei der Registrierung gabs auch keinen Hinweis darauf, wozu die das noch nutzen.
"Mir ist auch klar, dass der Tag, an dem ZFX und Developia zusammengehen werden der selbe Tag sein wird, an dem DirectGL rauskommt."
DirectGL, endlich ist es da
:)

"According to the C++ standard, it's "undefined". That's a technical term that means, in theory, anything can happen: the program can crash, or keep running but generate garbage results, or send Bjarne Stroustrup an e-mail saying how ugly you are and how funny your mother dresses you." :shock:[/size]
Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Win32 und Flackern bei Resize – Fuck, Fuck, Doppelfuck.

Hier aber der Trick um die Diagnose zu erleichtern:
  1. in die Nachrichtenschleifen aller Parents und Owners unter WM_ERASEBKGND und WM_PAINT je ein Sleep(2000); einbauen
  2. falls man keinen Zugriff auf die Nachrichtenschleife hat, irgendwie in die Handler reinkommen und dort schlafen
  3. in Paint eine Leinwand von Bildschirmgröße machen und mit Rosa, Grün, oder einer anderen markanten Farbe füllen
  4. die Anwendung vor dieser Leinwand platzieren
  5. per Alt-Tab zur Anwendung schalten
  6. beobachten, wie jedes Paint einzeln vonstatten geht; dabei kontrollieren, ob WM_CLIPCHILDREN etc. richtig funktionieren
  7. mit Klick auf Maximieren wiederholen
  8. 2000 Millisekunden sind beliebig; ich brauche aber mindestens so viel Zeit um beim Beobachten zu verstehen, was da passiert
Bei mir war’s am Ende ein Child, das beim Vergrößern des Programmfensters erst neu gezeichnet wurde und dann vergrößert und sich dann erneut zeichnete, und nach dem Korrigieren dieser zwei Zeilen ist quasi kein Flackern mehr übrig (obwohl die Zeitlupe verrät, dass noch einige kritische Stellen drin sind.)

Ein GIF für euch, weil ich außer ZFX keine Freunde habe, die ich FR abend mit meiner Pedanterie beehren könnte:
Bild

Seht ihr, wie der Bereich innerhalb des Tabs zweimal gezeichnet wird (erst mit Grau übermalt, wenn auch die Liste unten weiß wird; dann im letzten Schritt werden die Häkchen & der Text draufgemalt)? Ist auch genau die Stelle, die beim Vergrößern wie Sau flackert. Diagnose: Dem Fenster im Tab fehlt WS_CLIPCHILDREN.

Wer genau aufpasst erkennt übrigens, dass auch die Tabauswahl und die Überschriften der Liste doppelt gezeichnet werden. Flackert ebenfalls, scheint aber den Standard-Controls inhärent zu sein (ich sehe keine triviale Möglichkeit, das zu korrigieren).
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Auf der Arbeit ist die WPF-Anwendung lahm wie Sau – 20 Sekunden, wenn ich sie hier auf meiner alten Kiste starte; zehn Sekunden auf durchschnittlichen Systemen.

Also schmeiße ich den Profiler an. Ergebnis: Keine Ahnung. 60 % (also zwölf Sekunden) in loadBaml(). BAML ist die kompilierte Version von XAML, dem XML-Dialekt, in dem WPF seine Controls beschreibt. Ich habe keinen Plan, was vorgeht. Wir haben zwar viele Controls, aber … nicht astronomisch viele.

Also google ich. Microsoft hat einen Artikel Improving WPF applications startup time.
  1. Verarscht! 1. ist gar kein Tipp. Es erklärt nur den Unterschied zwischen Cold Start und Warm Start.
  2. Der wichtigste Tipp ist, einen Splash Screen einzubauen. Damit der User sofort Feedback sieht.

    WTF. Da fällt mir alles aus dem Gesicht.

    WTF WTF WTF.
Ich habe meinen Vermieter mal dabei beobachten dürfen, wie er einen viertel Liter Farbe auf einen riesigen Schimmelfleck geklatscht hat (also wirklich so viel, dass man auf der erstarrten Farbe die Tropfen fühlen konnte), und das Schimmelproblem damit für erledigt erklärt hat. Solche Leute schreiben also die WPF-Performance-Tipps.

Ich sollte eigentlich garnichts damit zu tun haben; ich scheiße auf Managed. (Habe mir für das Produkt eine eigene Win32-API geschrieben, die in weniger als einer Sekunde startet. Designer kriegen halt die Krätze, dafür bin ich jetzt doppelt so produktiv.) Aber die UI-Entwickler haben null Wissen über Optimierung oder überhaupt über halbwegs vernünftige Programmierung, und denen will ich keinesfalls den Floh ins Ohr setzen dass das zu langsam wäre, sonst speichern sie demnächst Base64 statt XML oder so ein Scheiß. Warum kann ich solche scheiß Probleme nicht einfach mal sein lassen?!
  • 7. Avoid Rebasing and DLL address collisions
Wirklich?! WIRKLICH?!

Ich erinnere mich da an einen großartigen Artikel von Matt Pietrek, in dem er das testet. (Leider nur noch als China-Kopie verfügbar.)

Auf Windows 2000 mit FAT16. Und selbst auf diesen archaisch alten Systemen (kein Superfetch!) brachten alle DLL-Optimierungen eine Leistungsverbesserung von 0.016 auf 0.013 Sekunden … beim Laden von zehn DLLs mit 1000 Funktionen. Ihr wollt mir erzählen, dass ihr C# derart verkackt habt, dass sowas jetzt wieder eine Rolle spielt?! Hat Microsoft es geschafft, dass die DLLs seitdem um den Faktor 1000 größer geworden sind und 1000 Mal so viele Funktionen exportieren?!

Achso, wir sprechen über .NET. Klar haben sie das geschafft.
  • 9. Windows Vista vs. Windows XP

    SuperFetch is the memory manager in Windows Vista. It is not built-in to Windows XP. SuperFetch analyzes memory usage patterns over time to determine the optimal memory content for a given user and works continuously to maintain that content at any given date or time of day. This differs from the pre-fetch technique used in Microsoft Windows XP, which preloads data into memory without analyzing usage patterns. Overtime, if end-user uses the WPF application frequently, the coldstart time of a WPF app could improve.
Äh … also die Empfehlung „Lass es den User einfach öfter nutzen, dann wird es ab Vista schon irgendwie schneller“? Das … das … ach es berührt mich eh nicht, weil ich Warmstart messe.
  • 9.
WTF?! Waren wir nicht gerade schon bei 9.?! Ist heute Murmeltiertag?! Erwache ich jeden Morgen wieder in den selben bekackten Tag und muss mir bescheuerte .NET-Tipps anhören?!
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Aaaargh, Farben bei Win32-Oberflächen sind absolut fubar. Man hat keine Chance, das Erscheinungsbild seiner Anwendung mit moderatem Aufwand anzupassen.

Mit jeder halbwegs vernünftigen API kann man die Farben für Buttons, Text, usw setzen und gut ist. Nicht mit Win32. Hier ist das eine globale, also wirklich systemweite Einstellung – SetSysColors() beeinflusst alle Fenster, die es im System gibt. So viele globale Dinge wurden prozesslokal, als Win16 zu Win32 wurde – aber das halt nicht.

Ich wollte nicht glauben, dass das eine wirkliche Architekturbeschränkung ist, also habe ich mich mal wieder reingesteigert.

1. WM_CTLCOLORSTATIC und Konsorten

Diese Nachricht schicken Controls an ihren Dialog, bevor sie sich zeichnen. Der Dialog kann dann die Hintergrundfarbe, die Schriftart, die Schriftfarbe, und das Hintergrundbild einstellen. Geil, oder? Neee. Was man nämlich nicht einstellen kann, sind die Farben der Ränder oder die Farben der Hintergrundflächen (z.B. in Listenauswahlflächen oder Tabhintergründen). Damit die Farbe der Anwendung ändert geht mal garnicht, weil man nur eine Handvoll Flächen erreicht, und der Rest bleibt in Standardfarben.

2. GetSysColor() überschreiben

… beeinflusst natürlich nur die eigenen Zeichenvorgänge, weil der Fenster-Renderer weiter seine eigene Version der Funktion sieht.

3. GetSysColor() hooken

… geht in wenigen Zeilen. Tatsächlich erreicht man jetzt viel mehr Flächen als vorher. Allerdings … immernoch bloß einen Bruchteil des Bildschirms. Windows holt sich die Farben noch von wo anders her …

4. GetSysColor() und GetSysColorBrush() hooken

… erreicht mehr Flächen. Aber Scroll Bars, Frames, Titelleisten usw. werden noch immer mit Standardfarben gezeichnet. Grund: Beim Kompilieren von User32 hat der Optimizer Aufrufe an GetSysColor() mit Inlining optimiert, also geht nicht jede Farbabfrage durch den Funktionsaufruf, den wir abfangen.

5. Die Datenquelle von GetSysColor() anzapfen

Es gibt einen Zeiger gpsi in User32.dll, der an einer festen Adresse vorliegt. Er zeigt auf eine Instanz von PERUSERSERVERINFO (ReactOS-Analyse hier) mit quasi allen klassischen User-spezifischen Windows-Einstellungen. Darin befindet sich ein Array mit Farben, aus dem sich GetSysColor() und SetSysColors() bedienen (ebenso die Brushes). Da wir darauf zugreifen können, liegt es im Adressraum des Prozesses, und wir können es prozesslokal verändern, oder? Nein.

6. gpsi beschreibbar machen

Der Speicher ist Read-only. Klassisch ruft man VirtualProtect() auf, um ihn beschreibbar zu machen. Geht hier nicht („falscher Parameter“). VirtualQuery() verrät, dass es sich um ein Mapping handelt. Man kann das nicht deallokieren (weil es nicht aus VirtualAlloc() stammt). Tatsächlich ist hier ein Block von 1,5 MiB Kernel-Daten in den Adressbereich des Prozesses eingeblendet. Einzelne Pages sind entweder Read-only, Read-Write, oder garnicht zugreifbar. Einzelne Pages eines Mappings kann man nicht entfernen; man kann höchstens das Mapping als Ganzes aus dem Adressraum schmeißen. (1,5 MiB Kernel-Daten aus dem Prozess löschen – was soll schiefgehen?). Eine Kopie machen, löschen, Speicher neu allokieren (diesmal beschreibbar), Kopie aufspielen – die Farben sind jetzt tatsächlich beschreibbar. Dafür funktioniert kaum eine API-Funktion mehr, und der nächste User32-Aufruf crasht mit gewisser Wahrscheinlichkeit das System. Copy-on-Write wäre die Musterlösung gewesen, aber man kann auch das vergessen – es kommt immer nur STATUS_INVALID_PAGE_PROTECTION zurück. Nach meiner Recherche ist das eine Hardware-Limitierung, weil die selben Pages mit unterschiedlichen Flags gemappt wären (einmal als Read-Write auf Kernel-Seite und als Copy-on-Write auf Prozess-Seite), und keine CPU mit sowas klarkommt.

Es ist eine tief im Kernel verwurzelte Limitierung. Man kommt nicht drum herum. Man kann unter Windows die Systemfarben nicht auf Prozessebene ändern.
zfx2.png
zfx2.png (6.21 KiB) 3297 mal betrachtet
mehr als sowas kann man nicht erreichen
mehr als sowas kann man nicht erreichen
zfx.png (3.15 KiB) 3297 mal betrachtet
7. Subclassing und User Draw

Bleibt also nur eine einzige beschissene Möglichkeit übrig: das etablierte, wohlbekannte Subclassing. Anstatt bloß Farben zu ändern, muss man den Rendering-Code für alle Arten von Controls, die es in Windows gibt neu schreiben. Wenn man das geschafft hat, muss man ihn mit jedem neuen Windows-Release an den neuen Look anpassen. Dann hat man aber zumindest volle Kontrolle über die Darstellung.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
joggel

Re: Jammer-Thread

Beitrag von joggel »

Krishty hat geschrieben:Auf der Arbeit ist die WPF-Anwendung lahm wie Sau[...]
[...]
WTF. Da fällt mir alles aus dem Gesicht.

WTF WTF WTF.Ich habe meinen Vermieter mal dabei beobachten dürfen, wie er einen viertel Liter Farbe auf einen riesigen Schimmelfleck geklatscht hat (also wirklich so viel, dass man auf der erstarrten Farbe die Tropfen fühlen konnte), und das Schimmelproblem damit für erledigt erklärt hat. Solche Leute schreiben also die WPF-Performance-Tipps.

[...]ich scheiße auf Managed.

[...]Ihr wollt mir erzählen, dass ihr C# derart verkackt habt[...]
Achso, wir sprechen über .NET. Klar haben sie das geschafft.
[...]
Ich fange jetzt auch irgendwie an C# und Co zu hassen....nur wegen Kristhy :'(
Benutzeravatar
Schrompf
Moderator
Beiträge: 5047
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas
Wohnort: Dresden
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Schrompf »

Och naja, C# ist ja trotzdem ne feine Sprache. Nur dass das hyperabstrakte Late-Binding-Aus-XML-Gedöns sich halt unvermeidlich irgendwo niederschlägt. Und gleich im nächsten Beitrag lernst Du ja auch die WinAPI zu hassen :)

Don't hate the player, hate your BerufszweigImGanzen.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Alexander Kornrumpf
Moderator
Beiträge: 2138
Registriert: 25.02.2009, 13:37

Re: Jammer-Thread

Beitrag von Alexander Kornrumpf »

Krishty hat geschrieben:also habe ich mich mal wieder reingesteigert.
Apropos reinsteigern:

Ich habe mir die Tage https://github.com/Mindwerks/worldengine heruntergeladen. Natürlich funktioniert weiterhin nichts auf dieser Welt auf Anhieb unter Windows. Bei Python ist es so, dass du zwar ein vorkompiliertes Python runterladen kannst, aber dann brauchst du die Version von MSVC mit der diese spezielle Python Binary kompiliert wurde. Dann gibt es so Dinge wie "Miniconda", die das Problem lösen sollen. Aber halt nicht komplett lösen. Also musste ich erst Visual Studio 2015 installieren. Dauerte jetzt schon alles länger als es sollte.

Dann habe ich es gestartet und es passierte ... augenscheinlich nichts. Also ein Kern voll ausgelastet aber kein sichtbares Ergebnis. Jetzt muss ich zugeben, dass ich erst nicht gerafft hatte wieviel langsamer Python im Debug-Modus ist. Aber es ist echt so langsam, dass ich es auch im Release Modus bis jetzt nicht über mich gebracht habe, zu warten, bis eine 512*512 Karte (das ist der default!) erstellt ist. Ich kann "langsam" an der Stelle nichtmal quantifizieren. Ich meine wie haben die das bei der Entwicklung gemacht? Man will sowas ja vielleicht auch mal testen oder so? Warten die dann jedes Mal >>10 Minuten auf Ergebnisse? Das muss einen doch wahnsinnig nerven. Haben die irgendwelche Uber-Hardware zur Verfügung?

Ich hab mich dann ein Wochenende mit nem Profiler hingesetzt und mich von 32*32 hochgehangelt, bis ich 512*512 in unter 1 Minute erzeugen konnte, wenn ich mich recht erinnere. Und wir reden hier immer noch von Python. Ich habe nichts anderes gemacht, als die maximal langsam implementierten Teile naja, nichtmal trickreich, einfach, ähm, normal, neuzuschreiben. Keine Intrinsics, keine Mikrooptimierungen kein Bitgefrickel oder so. Gut einmal hat es geholfen zu wissen, was eine Faltung ist. Vielleicht hatte ich auch im Hinterkopf, was ein cache ist. Aber das ist ja keine Raketentechnik.

Wo ich dann aber schon tief im Code war, habe ich gemerkt, dass sie zwei wechselseitig inkompatible Hydrologiemodelle haben. Und eins davon (das für Erosion) ist wahrscheinlich ad-hoc zusammengezimmert. Also habe ich mir in den Kopf gesetzt das hier zu implementieren: http://www-ljk.imag.fr/Publications/Bas ... n_PG07.pdf Nur das die es halt auf der GPU machen, und ich auf der CPU ... auf einem Kern ... in Python ... was ungefähr so gut funktioniert wie man es sich vorstellen würde.

Aber, jetzt die Pointe: Ich habe auf jedem Schritt des Weges gedacht: "Verdammt noch eins, du wirst immer mehr wie Krishty."

Krishty hat geschrieben: PERUSERSERVERINFO
Ich las irgendwas mit PERVERS und dachte noch so: "das ist ja mal auffallend ehrlich benannt".
Zuletzt geändert von Alexander Kornrumpf am 01.10.2017, 09:55, insgesamt 1-mal geändert.
Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Alexander Kornrumpf hat geschrieben:Also habe ich mir in den Kopf gesetzt das hier zu implementieren: http://www-ljk.imag.fr/Publications/Bas ... n_PG07.pdf Nur das die es halt auf der GPU machen, und ich auf der CPU ...
Ich wollte das auch schon ewig mal machen (aber auf der GPU) :) DU WIRST WIRKLICH WIE ICH
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Alexander Kornrumpf
Moderator
Beiträge: 2138
Registriert: 25.02.2009, 13:37

Re: Jammer-Thread

Beitrag von Alexander Kornrumpf »

Krishty hat geschrieben:
Alexander Kornrumpf hat geschrieben:Also habe ich mir in den Kopf gesetzt das hier zu implementieren: http://www-ljk.imag.fr/Publications/Bas ... n_PG07.pdf Nur das die es halt auf der GPU machen, und ich auf der CPU ...
Ich wollte das auch schon ewig mal machen (aber auf der GPU) :) DU WIRST WIRKLICH WIE ICH
Es ist trivial parallelisierbar, das ist nicht das Problem. Ich will nur nicht noch eine dependency. Aber auch das Argument hätte vor dir kommen können :)
Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Schrompf hat geschrieben:Nur dass das hyperabstrakte Late-Binding-Aus-XML-Gedöns sich halt unvermeidlich irgendwo niederschlägt. Und gleich im nächsten Beitrag lernst Du ja auch die WinAPI zu hassen :)
Ja; wobei BAML ja eben nicht XML ist, sondern bereits fertig übersetzte Binäranweisungen (und laut Microsofts Aussage ähnlich schnell wie JIT-kompilierter Code). Dann stelle ich mir die Dialog-Ressourcen von Win32 vor (die ja auch fertig übersetzte Anweisungen an den Dialog-Manager sind) und … irgendwie sind die eine Million Mal schneller.
Don't hate the player, hate your BerufszweigImGanzen.
So isset
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Kennt ihr diesen Dialog?
arschsistant.png
arschsistant.png (8.89 KiB) 3871 mal betrachtet
Er bedeutet, dass ihr tot seid. Was ist passiert?
  • mein Programm hat beim Verarbeiten von WM_LBUTTONDOWN durch Null dividiert
  • Während ich im Debugger war!
  • selbiger ist nicht angesprungen
  • stattdessen hat Windows entschieden, dass mein Programm besser läuft, wenn Windows ab jetzt alle unbehandelten Exceptions schluckt, die mein Programm beim Verarbeiten von Messages ausspuckt
  • der Dialog hat kein Nein oder Abbrechen und der Link ganz unten führt zu der DAU-Hilfedatei
  • mein Programm hat fröhlich Dinge kaputtgemacht
  • es wurde zum Kunden ausgeliefert
  • und da crasht es beim ersten Ausführen
  • beim zweiten Start hat Windows die selben Kompatibilitätseinstellungen angewendet und es crasht erstmal nicht mehr
  • bis die internen Datenstrukturen zerstört sind weil die ganze Zeit Exceptions verschwunden sind
Fuck fuck fuck wer kommt auf so eine Scheiße?! Wenn ich sowas eingebaut hätte, hätte ich doch zumindest Anwendungen ausgeschlossen, die
  • x64 sind (denn als das etabliert wurde, galt die no-Exceptions-in-Callbacks-Policy längst)
  • neuer als, sagen wir, 2007 sind (siehe oben)
  • PROGRAMME, DIE MIT EINEM FUCKING DEBUGGER GESTARTET WURDEN
Nööööööööööö, wir kaschieren einfach alle Exceptions bis die Datenstrukturen Schrott sind. Um dem User zu HELFEN.

Normalerweise soll man sich für so einen Fall das Application Compatibility Toolkit runterladen und kann dann die Fixes für individuelle EXEs einsehen. Bullshit. Da wird mir nichts angezeigt. Stattdessen muss ich unter HKCU\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Persisted meine Anwendungen raussuchen und manuell löschen. JEDEN TAG. Weil der verfickte Dialog ja kein Nein oder Abbrechen hat. WTF WTF WTF WTF³ Programmieren ist mittlerweile wie Elektroschocktherapie
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Bild

Erst dachte ich, es wär lustig, aber dann … Jammer-Thread.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

3D-Druck-Software … immer noch frustriert von Assimp, darum jetzt mit eigenem STL-Loader unterwegs.

Über 60 % aller STL-Dateien, die ich blind bei thingiverse rausgepickt habe, haben subnormale floats in den ersten zehn Normalen.

Scheiß Kreuzprodukt. Keins der ca. 40 Software-Pakete aus dem Satz hat mit flush-to-zero gearbeitet; will ich ihnen auch gar nicht vorwerfen.

Jedenfalls ist das nervig weil es keinen sicheren Weg gibt, binäre STL-Dateien von anderen Binärdateien zu unterscheiden ohne sie komplett zu parsen. (Keine Magic Number.) Ich prüfe jetzt die ersten zehn Dreiecke auf subnormale Zahlen und NaNs, das trennt die Spreu gut vom Weizen (Kuckucks-Anti-Jammern). Aber bloooß nicht die Normalen anpacken! Ob ich da einen extra-Flush-to-Zero-Durchlauf mache, der Leistung wegen?

Nachtrag:

Code: Alles auswählen

  facet normal NaN NaN NaN
    outer loop
      vertex -1.824646e+01 4.783851e+00 2.558263e+01
      vertex -1.211705e+01 4.640657e+00 3.289196e+01
      vertex -1.518175e+01 4.712254e+00 2.923730e+01
    endloop
  endfacet
lolfu
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
joggel

Re: Jammer-Thread

Beitrag von joggel »

Auch mal jammern ich will!!

Ich freue mich ja das ich eine Arbeit habe, das ist klar.
Aber es nervt mich hier langsam.
Programmieren? HA!! Vlt 30% meiner Zeit. Der Rest sind administrative Aufgaben (Rechner einrichten, Anlagen warten, irgendwelche Informationen einholen,.....)
Das nervige ist, dass ich garnicht so schnell lernen kann wie ich sollte um das hier alles mit den Anlagen und so zu verstehen....
Und das für so nen bissl Lohn?!?!?! No Way!!! Lange mache ich das nicht mehr mit....

Vielen Dank für eure Aufmerksamkeit. :)
Tiles

Re: Jammer-Thread

Beitrag von Tiles »

Windows fängt an Spielchen mit seinen Windows 7 Usern zu spielen. Jeden Monat ein Sammelpatch. Und keine Möglichkeit rauszufinden was denn damit nun wirklich installiert wird. Ich habe jetzt eine halbe Stunde im Kreis rumgesucht. Nichts zu machen. Ausser dass es angeblich ein paar Fehler behebt ist keine brauchbare Info zu finden. Vielleicht bin ich inzwischen auch einfach zu blöd zum suchen -.-

Wenn jemand sachdienliche Hinweise hat was denn nun wirklich mit dem Sammelpatch installiert wird, immer her damit! Ich installiere das Ding jedenfalls erst mal nicht.

http://support.microsoft.com/kb/3172605

Microsoft kotzt mich immer mehr an -.-
Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Da ist doch ein Link namens Improvements and Fixes, oder?
August 16, 2016 — KB3179573
This update includes quality improvements. No new operating system features are being introduced in this update. Key changes include:
  • Improved performance on specific networks that have a high-bandwidth and low latency.
  • Addressed issue with users encountering a bugcheck, when trying to access a domain DFS namespace (for example, \\contoso.com\SYSVOL) on a computer that is configured to require mutual authentication (by using the UNC Hardened Access feature).
    This problem may occur if the selected domain controller has security update KB3161561 installed, and if the SmbServerNameHardeningLevel registry entry is configured to a non-zero value on the domain controller.
For more info about how to get this update and a complete list of affected files, see KB3179573.

July 21, 2016 — KB3172605
This update includes quality improvements. No new operating system features are being introduced and no new security updates are included. Key changes include:
  • Improved support in Microsoft Cryptographic Application Programming Interface (CryptoAPI) to help identify websites that use Secure Hash Algorithm 1 (SHA-1).
  • Addressed issue in Microsoft Secure Channel (SChannel) that sometime causes Transport Layer Security (TLS) 1.2 connections to fail depending on whether the root certificate is configured as part of the certificate chain for server authentication.
For more info about how to get this update and a complete list of affect files, see KB3172605.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Tiles

Re: Jammer-Thread

Beitrag von Tiles »

Ja, und ab da wirst du im Kreis rumgelinkt, ohne Informationen welche Patches denn da nun wirklich installiert werden. "Key changes includes ... " ist nicht wirklich detailliert. Und es sind eben mehr als die zwei erwähnten Patches die da installiert werden ^^

Das Problem ist, was vorher transparent war, eben ein Patch für ein Problem, wird nun komplett intransparent. Und die Jungs werden dir mit Sicherheit wieder versuchen die Telemetriepatches unterzuschieben. Das ist imho einfach Mist -.-
Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

fefe hat zum ersten Mal in seinem Leben ins Disassembly geguckt und ist jetzt begeistert, dass Compiler Divisionen optimieren können.

Er hat auch mal in einem Vortrag gesagt, dass er immer sub reg, reg nutzen würde, um ein Register zu nullen. Erst wollte ich mich fazialpalmieren, weil die ganze Welt seit 30 Jahren xor reg, reg benutzt (kürzer und in Hardware beschleunigt) – aber dann habe ich ins Sandy Bridge-Datenblatt geschaut, und Intel hat in den 2010ern tatsächlich eingeführt, dass die CPU sub reg, reg erkennt und wegoptimiert. Er war nicht ahnungslos, sondern seiner Zeit Jahrzehnte voraus :)

[Möchte niemanden wegen seines Unwissens bashen – aber wenn ich einen Ruf als kompetenter Sicherheitsforscher wahren möchte, poste ich nicht für tausende Leute auf meinem Blog, dass Compiler Divisionen optimieren können oder dass sub reg, reg kürzer ist als mov reg, 0. Ich poste lieber GIFs.]
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Engine: 240 fps.

Chrome beenden.

Engine: 100 fps.

Chrome wieder starten.

Engine: 100 fps.

YouTube starten.

Engine: 240 fps.

YouTube schließen.

Engine: 240 fps.

timeBeginPeriod(1) bei Engine-Start: 300 fps.

Offensichtlich gilt Timer Resolution auch für Windows’ Thread Pool. Wie schön! Und ich habe meine Work Items immer extra klein gehalten!

Können wir bitte alle Computer wegschmeißen und nochmal neu anfangen?
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

FUCK FUCK FUCK

Plays.tv crasht unsere Anwendung. Irgendein Stack Overflow in deren DLL, sobald wir den ersten Frame rendern.

Kein Einzelfall – das Internet ist geradezu gepflastert von Fällen, in denen es Spiele abstürzen lässt.

Wäre mir noch recht egal, wenn es eben nur so ein Gamer-Ding wäre. Allerdings liegt es den AMD-Treibern bei (zum Unmut Vieler).

Und jetzt? Gucken, ob Plays.tv installiert ist? Prüfen, ob der Prozess läuft? Dann den User bitten, es zu beenden, bevor unsere Anwendung startet? Weiter Support-Anrufe abarbeiten?

Einen Bug melde ich denen jedenfalls nicht. Erst anderer Leute Programme kaputtmachen und dann auch noch die Drecksarbeit (Logs sammeln, Call Stacks identifizieren) auf sie auslagern, LOL. Arschlöcher.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Jonathan
Establishment
Beiträge: 2545
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Jonathan »

Krishty hat geschrieben:Können wir bitte alle Computer wegschmeißen und nochmal neu anfangen?
Ja, bitte. Und dann definieren wir bloß 1 Zeichen für Zeilenumbrüche. Und lösen den Tabs-vs-Spaces War indem wir ein semantisches Zeichen für Einrückungstiefe definieren.


Anyway. Ich muss mich mal wieder über Windows aufregen.
Immer, wenn ich meinen Laptop eine Zeit lang idlen lasse, fängt auf einmal der Lüfter an hochzudrehen. Ein Blick in den Taskmanager sagt mir, dass irgendwelche Hintergrundprozesse irgendwelche Wartungsarbeiten durchführen. Nun, das ist ja auch gar nicht schlecht oder so, es ist ja gut, dass ich mich nicht mehr ans regelmäßige Defragmentieren meiner Festplatte (solange es keine SSDs sind, whatever) erinnern muss.
Aaaaber: Lüfter bedeutet Wärme und Wärme bedeutet Energieverbrauch. Meine Akkulaufzeit ist sowieso schon nicht so toll, und wenn ich auf Akku arbeite und extra versuche, wenig Strom zu verbrauchen, wieso muss Windows 8.1 dann erkennen, dass der Prozessor nicht ausgelastet ist und denken, jetzt wäre ein guter Zeitpunkt für Wartungsarbeiten? Kann man das irgendwie umstellen? Kann man irgendwie dafür sorgen, dass nicht die ganze Zeit irgend ein Quatsch im Hintergrund läuft?
Ich hatte neulich unterwegs ein sehr analoges Problem. Kein Internetzugang, also Handy als Hotspot eingerichtet. Und sobald der Laptop Zugang hatte, fing absolut jedes Programm an, irgendetwas upzudaten. Man kann zwar das Netzwerk auf "metered connection" stellen und somit Windows-Updates verhindern, aber absolut alle anderen Programme stören sich daran nicht. Das ist verdammt nochmal mein Laptop und ich will entscheiden, was darauf läuft und was nicht und nicht von irgendwelcher Frickelsoftware entmündigt werden! :twisted:
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Jonathan hat geschrieben:Ich hatte neulich unterwegs ein sehr analoges Problem. Kein Internetzugang, also Handy als Hotspot eingerichtet. Und sobald der Laptop Zugang hatte, fing absolut jedes Programm an, irgendetwas upzudaten. Man kann zwar das Netzwerk auf "metered connection" stellen und somit Windows-Updates verhindern, aber absolut alle anderen Programme stören sich daran nicht.
Danke für den Hinweis – bedenkt unser Updater auch noch nicht. Du weißt nicht zufällig, wie ich das von C++ aus feststellen kann? Ich finde nur NetworkInformation.GetInternetConnectionProfile().GetConnectionCost().NetworkCostType > 1, aber das ist limitert auf Windows-8-Tile-Apps oder C# … (für sich schon wieder ein Jammer-Grund)

Was Defrag etc. angeht: Früher (Windows 7) konnte man Energiesparpläne einstellen (volle CPU-Leistung oder Energiesparen? Was tun bei Zuklappen?) und für jede Situation (an Netzteil angeschlossen, auf Akku, Akku fast leer) einen Plan auswählen.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Tiles

Re: Jammer-Thread

Beitrag von Tiles »

Kann man das irgendwie umstellen? Kann man irgendwie dafür sorgen, dass nicht die ganze Zeit irgend ein Quatsch im Hintergrund läuft?
Ich tippe auf die Indexerstellung der Windows Suche. Das frisst dir Systemressourcen und verlangsamt dein System um dann bei einer eventuellen Suche die du einmal im Jahr startest 0.351 Sekunden Zeit einzusparen. Hier wird erklärt wie man es abschaltet: http://praxistipps.chip.de/windows-7-in ... ehts_28503

Ansonsten, gib mal im Startmenü Aufgabenplanung ein und schau was da so alles aktiv ist. Da stehen auch noch ein paar nette Sachen. Und uah, da stehn ja bei mir echt nen paar komische Dinger drin. WTF? Täglich Lenovo Customer Feedback Programm 64. Wann habe ich mir das denn eingefangen O_O

Danke fürs Erinnern :D
Antworten