Seite 168 von 252

Re: Jammer-Thread

Verfasst: 05.05.2017, 11:08
von Krishty
„Dadrunter?” Ist da nicht bloß der Grafiktreiber?

————

Bild

Re: Jammer-Thread

Verfasst: 09.05.2017, 19:26
von Jonathan
Es gibt in C++ keine Möglichkeit, eine formatierte Uhrzeit anzuzeigen. WTF???

Was ich damit meine ist modernes, funktionierendes, threadsicheres C++. Sollte ja keine überzogene Forderung sein. Denkt man.

Mit std::chrono::system_clock::now() bekommt man einen Zeitstempel. Damit kann man schön Differenzen ausrechnen und von Millisekunden nach Minuten konvertieren und alles. Aber man kann es nicht als Uhrzeit (z.B. 17:45:13) anzeigen. Was man relativ schnell findet, wenn man danach sucht, ist eine Lösung wie die hier:

Code: Alles auswählen

auto now_c = std::chrono::system_clock::to_time_t(now);
std::cout << std::put_time(std::localtime(&now_c), "%c") << '\n';
Oh, und ja, man muss das in zwei Zeilen schreiben, wegen tollen Pointer Interfaces und so. Nun habe ich das auch so implementiert und es hat nicht funktioniert. Es wurde für verschiedene Zeitstempel die selbe Ausgabe generiert. Lange Zeit später fand ich dann heraus, dass localtime nicht threadsafe ist (interne Buffer). Und es gibt in C++ auch keine threadsichere Variante davon, sondern nur Compilererweiterungen die vielleicht funktionieren, vielleicht auch nicht. In C11 hingegen gibt es eine threadsichere Variante, die man benutzen kann. Quelle.
Die dort verlinkte Zusatzbibliothek sieht zwar nett aus, compiliert aber leider unter meinem VS2013 nicht. Und boost wollte ich nicht unbedingt einbinden. Letztendlich habe ich also folgenden Code selber geschrieben:

Code: Alles auswählen

std::string FormatTime(std::chrono::system_clock::time_point time)
{
	auto ctime = std::chrono::system_clock::to_time_t(time);
	tm b;
	localtime_s(&b, &ctime);
	std::stringstream ss;
	ss  << std::setfill('0') << 1900+b.tm_year << "-" << std::setw(2) << b.tm_mon+1 << "-" << std::setw(2) << b.tm_mday << " " << b.tm_hour << ":" << std::setw(2) << b.tm_min << ":" << std::setw(2) << b.tm_sec;
	return ss.str();
}
Vielleicht hätte man an dieser Stelle auch std::put_time benutzen können, aber ich hatte keinen Bock mehr auf Funktionen von denen ich nicht weiß, ob sie zufällig funktionieren oder nicht (threadsafe und so), also hab ich gleich alles selber gemacht. Dabei kam ich nicht umhin zu bewundern wie sau dämlich die tm-Struktur doch ist. Man schaue sich einmal die Intervalle an. Jup, ich muss bei den Jahren 1900 addieren (sonst steht da 117, ugh) und bei den Monaten 1 (wtf? Ernsthaft? Gehts noch inkonsistenter?). Sprich, ich muss dämlichen alten C-Mist benutzen, weil C++ Grundlegende Dinge wie die aktuelle Zeit anzuzeigen immer noch nicht kann. Ganz ganz toll.

Re: Jammer-Thread

Verfasst: 09.05.2017, 21:43
von Krishty
Ja, da bin ich auch schon reingetreten.

Ach, die STL. Man braucht ja unbedingt wieder einen komplett undurchsichtigen Datentyp, der zehntausend verschiedene Zwecke abdecken muss.

Warum nicht fünf bis zehn Typen für Windows-Zeit, Unix-Zeit, Julianisches Datum, etc. mit bloß einem int64_t als einzigem öffentlichen Member? Plus 20, 30 Funktionen zum Konvertieren untereinander? Plus ein Dutzend Formatierungsfunktionen? Das würde 99 % aller Use Cases abdecken! Weil … das könnte ja ohne Templates auskommen! Nichts da! Denkt an das fehlende Prozent! Lieber fünf vollkommen abstrakt-absurde Typen ohne praktischen Nutzen für unsere Architecture Astronauts. Das abstrakte time_point mit einen von fünf abstrakten Zeitsystemen als Template-Parameter.

Mein Beileid.

Re: Jammer-Thread

Verfasst: 09.05.2017, 23:00
von dot
Es ist dann halt doch wesentlich komplexer als das. Das Problem ist ja nicht dass man die Zeit nicht abfragen kann. Die Frage ist viel eher: Wie soll sie denn formatiert werden? Und wieso genau sollte Schema ABC der Default sein und nicht Schema XYZ? Lokalisierung ist alles andere als trivial und ich nehme mal an, dass std::chrono das einfach noch nicht supported, weil noch kein Konsens für eine ausreichend allgemeine Lösung dieses Problems gefunden wurde...

Re: Jammer-Thread

Verfasst: 09.05.2017, 23:08
von Krishty
Dienstag, 9. Mai 2017, 23:06 würde ich auch nicht implementieren wollen, da hast du recht. Wäre ein ähnliches Geraffel wie Währungen und Längen (hat die STL dafür eigentlich mittlerweile was?). Die ohne-Wörter-Version ist aber standardisiert und für den überwältigend großen Teil ausreichend – nur nicht einmal die geht!

Bild

Re: Jammer-Thread

Verfasst: 10.05.2017, 10:56
von dot
Naja, das ist die ISO 8601 Notation für ein Datum. Für die Uhrzeit gibts aber selbst in ISO 8601 zig Varianten... ;)

Re: Jammer-Thread

Verfasst: 11.05.2017, 03:25
von Krishty
Warum muss man /Gw von Hand in die Linker-Kommandozeile eintippen? Warum gibt es noch keine Option dafür? Warum machen die sowas für nichts?

https://blogs.msdn.microsoft.com/vcblog ... er-switch/

Re: Jammer-Thread

Verfasst: 12.05.2017, 23:49
von Krishty
Tabs. Vor allem Tabs mit Quelltext. Oooooooh em eff geh.

Die IDE markiert das aktuelle Tab irgendwie. Meistens ist es hell und die anderen Tabs sind dunkel. Oder es hat besonders dicke Schrift oder so.

Wie wäre es denn mit einem Fade-Out? Wenn ich ein Tab besuche, kriegt der Titel volle Helligkeit. Jedes Mal, wenn ich auf ein anderes Tab klicke, nimmt die Helligkeit ALLER ANDEREN 30 % ab oder so.

Wenn ich also ständig zwischen fünf Tabs hin- und herwechsle, ist mein aktuelles Tab am hellsten, die vier anderen Tabs relativ hell, und alle anderen Tabs dunkel. Ich muss NICHT mehr ein Dutzend Dateinamen lesen um zu wissen, wie ich zu der Quelldatei komme, in der ich zuletzt gearbeitet habe. Ich kann auch die 20 dunklen einfach so schließen, weil ich ja sofort sehe, dass ich die ewig nicht gebraucht habe.

Wir kennen doch schon Dateivorschau in Scrollbalken. Warum keine Heat Map drüberlegen, mit langsamem Fade-Out bei jeder Änderung? Dann muss ich noch nicht einmal mehr auf die Vorschau glotzen um die anderen beiden Funktionen wiederzufinden, an denen ich gerade gearbeitet habe. Vielleicht lenkt das aber auch nur irre ab, weil sich beim Tippen ständig was am Bildschirmrand bewegt.

Ich würd’s ja so gern ausprobieren, aber ich habe noch keine eigene IDE, in die ich das testweise einbauen kann. Auch keinen Hex-Editor oder Text-Editor oder wo das sonst nützlich wäre. Wer sowas hat: Probiert’s mal aus. Vielleicht ist es Schmarrn, dann eben wieder raus damit. Vielleicht nützt es aber auch.

Re: Jammer-Thread

Verfasst: 13.05.2017, 20:22
von Oprah Noodlemantra
Nutzt du Intellij?


Aufbauend auf https://github.com/tobszarny/ActiveTabHighlighterPlugin hab ich das mal zusammengehackt.

Leider kann ich keine Bilder als Anhang hinzufügen, wegen "Fehlerhafter Grafikdateityp: Dateiendung bmp erwartet, aber Endung png erhalten." und "Die Dateierweiterung bmp ist nicht erlaubt.".

Re: Jammer-Thread

Verfasst: 14.05.2017, 13:30
von mrz
Sehe ich den Sinn davon nicht. Evtl für Hobbyprogrammierer.
Wer täglich programmiert nutzt nicht mehr die Maus für Navigation und klickt auf Tabs.
CTRL+ALT+LEFT/CTRL+ALT+RIGHT, CTRL+E und Booksmarks reichen mir völlig in Intellij für die Navigation
zwischen den "zuletzt besuchten und oder editierten Codestellen".

Re: Jammer-Thread

Verfasst: 14.05.2017, 14:10
von xq
Also ich bin im Visual Studio hauptsächlich mit F12, Ctrl+- sowie Ctrl++ unterwegs, also jump to definition, navigate back und navigate forward. Damit kann man relativ bequem zwischen den aktuell bearbeiteten codestellen hin und her navigieren.

Re: Jammer-Thread

Verfasst: 14.05.2017, 17:18
von hagbard
Klingt interessant, was allerdings auch schon weiterhilft ist eine Übersichtsseite über alle aktiven Tabs wie sie Nodepad++ hat. Damit kann man dann seine Tabs einfach sortieren und sich wieder auf die beschränken die gerade wichtig sind.

Re: Jammer-Thread

Verfasst: 15.05.2017, 11:41
von smurfer
Also zumindest unter KDE gibt es bei Kate etwas Derartiges: http://www.sysads.co.uk/wp-content/uplo ... kde-01.png (Die bearbeiteten Dateien blenden in dem Bild über Lilatöne je nach Bearbeitungsalter aus).
Würde mich nicht wundern, wenn zumindest KDevelop das auch kann.

Re: Jammer-Thread

Verfasst: 16.05.2017, 11:25
von Jonathan
Jedesmal wenn ich mal wieder eine Kleinigkeit in C++ programmiere, nervt es mich, dass sich dieses dämliche Konsolenfenster immer direkt schließt. Und dann stößt man im Netz wieder auf fundamentalistische Diskussionen, ob jetzt std::cing.get() oder system("pause") die bessere Lösung sei. Oder dass man einfach Strg+F5 statt nur F5 benutzen soll (was bei mir auch nicht immer hilft). Aber all das ist eigentlich Quatsch, eigentlich will man doch gar nicht das Konsolenfenster offen halten, weil man eigentlich nicht einmal ein Konsolenfenster haben will. Wieso kann VS nicht einfach ein integriertes Shell-Fenster haben. Jede andere dumme IDE für Python oder Java oder absolut jede Sprache kann das doch auch. Aber nein, scheinbar geht es nicht.
Nicht, dass VS dadurch jetzt fundamental unbenutzbar würde. Aber nervig ist es schon und es kann eigentlich gar nicht so schwer sein, so ein Feature einzubauen. Schade schade...

Re: Jammer-Thread

Verfasst: 16.05.2017, 11:32
von Krishty
Man kann sich immerhin mit sowas selber helfen: http://stackoverflow.com/questions/5248 ... 2#28900432

————

Wo wir gerade dabei sind: Eine Drittkomponente bindet bei uns eine Viertkomponente ein, die globale Variablen anlegt, deren Konstruktoren fseek(stdout, 0, SEEK_BEGIN) aufrufen. Warum auch immer. Weder die Dritt- noch die Viertkomponente geben jeweils was nach stdout aus; in unserem Programm existiert sowas auch garnicht … und darum muss ich bei jedem Start X Assertions (Seek mit ungültigem Handle) wegklicken.

Ich kann keinen Code aufrufen, bevor das passiert (weil es in der Initialisierung einer statisch gelinkten DLL passiert, läuft meine EXE da noch garnicht); darum habe ich im Debug-Modus unser Programm auf Konsole umgestellt. Eine leere Konsole rumschwirren zu haben ist weniger nervig als ständig Assertions wegklicken zu müssen.

Re: Jammer-Thread

Verfasst: 16.05.2017, 11:49
von Jonathan
Und nur um nochmal eins nachzulegen: Es ist eh schon eine Schande wie unglaublich schlecht die Standard-Konsole ist, wenn man bedenkt, dass man nicht einmal vernünftig Text markieren kann (bin gerade noch auf Win7, aber auch damals hätte es schon viel besser sein müssen...).

Re: Jammer-Thread

Verfasst: 16.05.2017, 12:00
von kaiserludi
Jonathan hat geschrieben:Und nur um nochmal eins nachzulegen: Es ist eh schon eine Schande wie unglaublich schlecht die Standard-Konsole ist, wenn man bedenkt, dass man nicht einmal vernünftig Text markieren kann (bin gerade noch auf Win7, aber auch damals hätte es schon viel besser sein müssen...).
http://mridgers.github.io/clink/ hilft.

Re: Jammer-Thread

Verfasst: 16.05.2017, 21:48
von Krishty
Chrome kann kein einzelnes Tab zoomen, sondern immer nur eine ganze Domain. (https://superuser.com/questions/677967/ ... -in-domain)

Solche Sachen braucht auch keiner! Aber Backspace deaktivieren, das war UNBEDINGT nötig!!!!

Re: Jammer-Thread

Verfasst: 16.05.2017, 21:56
von xq
+1

Re: Jammer-Thread

Verfasst: 16.05.2017, 23:16
von Krishty
Ich bin mir ziemlich sicher, dass Nvidia bei ID3D11Device::ResolveSubresource() das Gamma nicht bedenkt, obwohl ich mit B8G8R8A8_UNORM_SRGB arbeite. Als Ergebnis ist das MSAA auf Nvidia-Hardware nur brauchbar, so lange die UI eine dunkle Hintergrundfarbe nutzt. Bei AMD sieht alles perfekt aus. Und jetzt? Fuck this shit …

Re: Jammer-Thread

Verfasst: 18.05.2017, 13:53
von Jonathan
Putty ist doof.

Es funktioniert ja schon irgendwie, aber halt nur wenn man es richtig bedient. Und es ist so unglaublich unintiutiv. Und es ist so leicht, etwas falsch zu machen. Nochmal zur Erklärung:
Bild
Links hat man ein langes Menü mit Kategorien, rechts kann man dann die dazugehörigen Einstellungen ändern. Soweit, sogut. Es ist ja auch eine komplizierte Angelegenheit, da braucht man eben viele Optionen, kein Problem. Nur will man die natürlich nicht jedesmal neu angeben, also will man seine Profile (bzw. Sessions) speichern können. Das geht auch, nur das Problem ist, wie es geschieht. Es gibt in der Session Kategorie eine Liste mit Profilen, die man über die entsprechenden Buttons laden oder speichern kann. Per Doppelklick auf ein Profil wird sich direkt mit diesen Optionen verbunden.
Alles was ich machen wollte, war jetzt die Standardfarben zu ändern. Man geht also in Window/Colors, und passt es entsprechend an. Aus meiner Vergangenheit hatte ich mir noch behalten, dass man jetzt bloß nicht vergessen sollte, die Änderungen zu speichern, sonst sind sie beim nächsten Start verloren (und es gibt keine RÜckfrage). Also gehe ich in das Session Menü, wähle mein Profil aus und klicke auf Speichern. Und seitdem kann ich mich nicht mehr verbinden und bekomme nur einen Fehlersound, statt einer Fehlermeldung.

Was war passiert? Ich war in einem leeren Profil (ohne Host-Name und so), habe aus versehen dort meine Einstellungen geändert und mein altes Profil überschrieben. Ich dachte, ich hätte es vorher geladen, weil ich Sekunden zuvor darüber schon eine Verbindung gestartet hatte, allerdings per Doppelklick auf den Eintrag und nicht indem ich es erst lade und dann auf Open klicke.
Wie hätte man es richtig machen sollen? Nun, man solle beim starten von Putty ein Profil auswählen müssen (oder ein neues anlegen), bevor man anfangen kann, etwas daran zu ändern. Jede andere dämliche Software hat das Konzept von 'geöffneten Dateien' verstanden und setzt es vernünftig um, außer Putty. Putty ermutigt einen geradezu dazu Fehler zu machen und Daten (Einstellungen) zu verlieren. Sehr enttäuschend. Dabei hätte man doch nur ein paar fundamentale Konzepte verstehen und umsetzen müssen. Hätte man es direkt richtig gemacht, wäre der Aufwand nichteinmal nennenswert größer gewesen. Und das ist umso ärgerlicher als das Putty in seinem Bereich quasi die Standardsoftware ist.

Re: Jammer-Thread

Verfasst: 18.05.2017, 14:00
von Krishty
Sollten Einstellungen für UI-Farben nicht sowieso getrennt sein von Einstellungen für Sessions & Verbindungen?

Re: Jammer-Thread

Verfasst: 19.05.2017, 12:23
von Oprah Noodlemantra
mrz hat geschrieben:Sehe ich den Sinn davon nicht. Evtl für Hobbyprogrammierer.
Wer täglich programmiert nutzt nicht mehr die Maus für Navigation und klickt auf Tabs.
Ich hab das jetzt ein wenig benutzt, es sorgt vor allem dafür, dass das UI ein wenig bunter ist. Aber sinnlos ist das bestimmt nicht für jeden, selbst wenn er täglich programmiert.

Falls jemand den source code haben will, kann er mich gerne anschreiben.

Re: Jammer-Thread

Verfasst: 19.05.2017, 13:41
von Krishty
Oprah Noodlemantra hat geschrieben:Nutzt du Intellij?
Nee; ich wollte letzte Woche damit anfangen, aber die Zeit :(

Re: Jammer-Thread

Verfasst: 22.05.2017, 13:58
von Krishty
Oh Gott, VRML. Alles ist bis ins Detail spezifiziert. Aber keine Sau hält sich dran.
  • 3DEdit Pro vertauscht Ambient & Emissive. (Wie zur Hölle kann das nicht auffallen?! Alles wird grau!)
  • Eine ganze Reihe Produkte schreibt mit der Z-Achse nach oben, obwohl der Standard gaaanz deutlich hervorhebt, dass Y nach oben zeigen muss.
  • 3D Studio MAX schreibt Namen in ANSI, obwohl schon die Dateisignatur lautet: #VRML V2.0 utf8
  • irgendeine Software, deren Namen ich noch nicht herausgefunden habe (Cinema 4D oder ZPrinter-Tools), schreibt Farben als Gleitkommazahlen mit dem Umfang [0…255] statt [0…1]. WAS ZUR HÖLLE?!

Re: Jammer-Thread

Verfasst: 22.05.2017, 17:39
von Jonathan
Ich habe gerade über eine Stunde damit verbrannt, herauszufinden, was der verfickte C++ Komma-Operator in dieser Zeile hier macht:

Code: Alles auswählen

Vector3f wo = -ray.d, wi;
Bis mir aufgegangen ist, dass es einfach nur zwei Deklarationen sind. Ich denke offensichtlich einmal wieder zu kompliziert. Aber ganz ehrlich, es ist nicht wirklich meine Schuld, wenn man bedenkt, dass C++ parsen im Allgemeinen unentscheidbar ist. Der Komma-Operator ist einfach keine schöne Syntax...

Re: Jammer-Thread

Verfasst: 22.05.2017, 17:49
von dot
Ich möchte an dieser Stelle nur anmerken, dass der verlinkte Blogpost Bullshit ist. Das Beispiel dort ist nicht korrektes C++, denn C++ verlangt genau um das dort beschriebene Problem eben entscheidbar zu machen nach dem Schlüßselwort typename. C++ parsing ist natürlich nicht unentscheidbar. Wundert mit aber auch nicht, dass in der C++ FQA Blödsinn steht, denn Sinnvolles hab ich dort noch nie gelesen... ;)

Re: Jammer-Thread

Verfasst: 22.05.2017, 18:41
von Alexander Kornrumpf
Wie sicher bist du, dass das "C++ FQA" nicht satirisch gemeint ist?

Re: Jammer-Thread

Verfasst: 22.05.2017, 18:42
von Helmut
@dot
Nene, das Beispiel ist schon korrekt. typename ist nur notwendig, wenn ein dependent name vorkommt. In dem Beispiel tut es das aber nicht, da alle Typen bekannt sind.
In der Praxis ist das Kompilieren aber natürlich trotzdem entscheidbar, wie im Blog am Ende auch steht:
In practice, compilers limit template instantiation depth, so this is more of a theoretical problem than a practical one.

Re: Jammer-Thread

Verfasst: 22.05.2017, 22:43
von Krishty
Wir wissen ja, dass Windows 10 die User pausenlos ausspioniert. Bisher hieß es aber immer: Dann kauft die Enterprise-Edition! Da kann man die Spyware zumindest via Group Policy abschalten!

Nun … bad news, everybody!
Yeah. Did this a while back and I *thought* I had turned off telemetry. But nope.

The only way to stop telemetry is to block it at the router...which breaks Windows.

i blocked a lot of this stuff as well at the switchport at home and surprise, windows broke

Very interesting... What specifically about windows breaks, what happens? Does one get a bluescreen?

certain processes get stuck waiting for replies for things they think have been sent, lots of unexplained pauses and freezes