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.

Re: Jammer-Thread

Beitragvon Jonathan » 05.06.2018, 10:02

mrz hat geschrieben:
Jonathan hat geschrieben:Qt Deployment. Ich hab was programmiert, per Dependency-Walker alle Qt Dlls rausgesucht und verschickt. Prompt bekomme ich die Nachricht, dass es nicht startet. Qt ist nämlich neuerdings (d.h. seit weniger als 5 Jahren)) so nett, beim Initialisieren dynamisch ein paar Plugins nachzuladen. Bei mir gings natürlich trotzdem, weil ich das ganze SDK installiert habe. Also durfte ich erstmal recherchieren und ein paar extra dlls verschicken. Die erste hat nicht geholfen, bei der zweiten tats dann aber. Mittlerweile weiß ich, dass es für Qt auch ein Deployment-Tool gibt, dass dir alles automatisch raussucht. Aber nervig war das schon, insbesondere da ich dachte, mit dem Dependency-Walker eigentlich meine Hausaufgaben erledigt zu haben. Naja, 20 Minuten verschwendet, aber zumindest lies es sich leicht beheben. Aber es bestätigt mich mal wieder in meiner Meinung, dass dll's die Pest sind.

Nur so als Hinweis, im Process Explorer (von SysInternals) kann man einfach "Show DLLs" machen und hat den Vorteil das man sieht welche geladen wurden.
Wiederhole mich hier, da ich es vor kurzem schonmal erwähnt habe:
Zum Testen ob man wirklich alles drin hat gibts von Microsoft fertige VMs zum Download:
https://developer.microsoft.com/en-us/m ... tools/vms/

Finde ich effektiver als einer anderen Person was zu senden und dann hin und her und bla.

Sehr gut, das schau ich mir mal an. Vielen Dank :)
Lieber dumm fragen, als dumm bleiben!
Benutzeravatar
Jonathan
Establishment
 
Beiträge: 1198
Registriert: 04.08.2004, 20:06

Re: Jammer-Thread

Beitragvon Tiles » 05.06.2018, 10:31

ES GAB KEIN ERDBEEREIS MEHR :cry:
Free Gamegraphics, Freeware Games http://www.reinerstilesets.de
Die deutsche 3D Community: http://www.3d-ring.de
Benutzeravatar
Tiles
Establishment
 
Beiträge: 1181
Registriert: 11.01.2003, 14:21

Re: Jammer-Thread

Beitragvon joggel » 05.06.2018, 10:32

WUUUUAAAAASS?!?!?!? :x
bald mit neuem Avatar
Benutzeravatar
joggel
Establishment
 
Beiträge: 1324
Registriert: 06.11.2007, 19:06
Wohnort: Dresden

Re: Jammer-Thread

Beitragvon Krishty » 15.06.2018, 18:25

Ich habe die ersten drei Monate Linux-Entwicklung hinter mir.


  • Die Philosophie, kleine Programme zu verketten, ist ganz nett. Aber WTF, warum mit Text?! Das ist die bescheuertste Möglichkeit von allen. Anstelle ordentlicher austauschbarer binärer Schnittstellen hat man einen Wulst von Regex- und Whitespace-Problemen und einen unwartbaren Berg von Write-Only-Code mit unüberschaubaren Implementierungsdetails. Wenn mal ein String nicht escapet wurde und sich eine Tilde oder ein vertikaler Strich oder wasauchimmer einschleicht, bricht eine Lawine los und am besten schmeißt man alles weg und schreibt alles neu. Wenn ich nochmal irgendwo grep in awk und zurück pipen muss und ein Ergebnis zu wenig ankommt, kotze ich.

  • bash ist besser als batch, aber beide sind im Vergleich mit ordentlichen Skriptsprachen völlig unbrauchbar – sie sollen einfache Aufgaben automatisieren, aber die Lernkurve ist höher als bei den meisten komplexen Python-Programmen. Man sollte den 80er-Müll wegschmeißen und nur noch Python erlauben. Aber ohne Bash würde wohl alles in Linux aufhören zu funktionieren. Windows ist wesentlich schwächer abhängig von Batch und PowerShell, zum Glück.

  • Apropos Programmiersprachen, auf denen alles fußt – der ständige Kontakt mit make-Systemen, C und gcc wird dafür sorgen, dass sich Linux niemals über Smartphone-Gefängnis-OSe hinaus verbreiten wird.

  • Das I/O-Modell von Linux ist eine Katastrophe. Eine reine, pure, Katastrophe. Wenn man einen Webserver betreiben will, war bis 2012 synchrones, nicht-blockierendes I/O mit O(n²)-Laufzeit über Anzahl der Verbindungen der bevorzugte Weg. Bei uns glühten die CPUs und es kam trotzdem kaum was raus. Man kann kaum in Worte fassen, wie sehr das alles verkackt wurde, aber wer sich dafür interessiert: dieser Vortrag versucht es trotzdem. Irgendwann in den letzten Jahren haben sie eine vernünftige epoll()-Implementierung etabliert, aber der Scheiß ist immernoch readiness-based und nicht thread-agnostisch und noch nicht in POSIX. Eine Umstellung der ganzen Architektur auf die 25 Jahre verspäteten I/O Completion Ports kriege ich beim Chef nicht mehr durch. WTF.

  • QtCreator ist eine richtig geile IDE. Und am meisten nervt mich an ihr der selbe blöde Bug, der mich auch an Visual C++ nervt: Wenn ich Parameter nur in Definitionen const deklariere, kann ich nicht mehr ordentlich browsen, weil es für den Parser wie eine separate Funktion aussieht.

  • Apropos „ganz genau die gleiche Scheiße wie unter Windows“: Die Dateisuche vom Dolphin auf unserem SUSE. Das ist der ultimative Beweis, dass mich das Universum hasst; egal, auf welchem Betriebssystem ich mich verstecke.

  • Eclipse ist auf Linux ein noch traurigerer Haufen einer Karikatur einer IDE als auf Windows. Aber ich bin teils drauf angewiesen weil Qt Creator keine Befehlszeilenparameter an mein Programm übergeben kann (kein Scherz und nur bei mir).
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
 
Beiträge: 6459
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy

Re: Jammer-Thread

Beitragvon Krishty » 16.06.2018, 16:53

MINPS und MAXPS geben bei NaN immer den zweiten Operand zurück. Dadurch sind sie nah am Verhalten von l < r ? l : r, aber IMHO sollten sie sich an alle anderen arithmetischen Operationen halten, die bei NaN-Operanden NaN zurückliefern.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
 
Beiträge: 6459
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy

Re: Jammer-Thread

Beitragvon Jonathan » 17.06.2018, 22:09

[edit: Es folgt teilweise unsachliches Gemeckere, aber aus Gründen der Nicht-Zensur lasse ich das mal so stehen - siehe unten.]


Weil Python halt scheiße ist...:

Python ist ein Haufen Affenscheiße. Einfach total kaputt. Gerade wurde zum tausendstenmal eine halbe Stunde meiner Zeit verschwendet, weil es irgendjemand nicht für nötig hielt, aus Python eine vernünftige Sprache zu machen.
Folgendes passierte: Ich habe eine kleine Funktion geschrieben, mit der ein Framework dann Daten abfragt. Die Funktion ist gerade lang genug um sie nicht als lambda implementieren zu wollen, aber weil ich sie nur einmal benutze wollte ich sie nicht im globalen Scope haben, also wurde sie funktionslokal. Soweit, sogut. Nun sind leider die Daten die ich weiterreichen wollte lokale Variablen dieser Funktion. Und hier trat jetzt ein beispielloser Synergieeffekt zweier dummer Entscheidungen auf: Da man in Python keine Variablen deklariert, sondern einfach benutzt können nicht explizit Werte aus äußeren Scopen verwendet werden (dass das implizit in C++ funktioniert mag man auch durchaus schlecht finden, was mich stört, ist dass Variablen nicht deklariert werden. Das ist vernachlässigbarer Mehraufwand (ein auto, letoder vargenügt, man muss sich ja nichtmal über den Typen Gedanken machen), aber macht Programme leichter zu lesen und vor allen Dingen viel viel robuster!). Also binde ich die Variable explizit per global Keyword ein (oh, plötzlich müssen wir sie ja doch 'deklarieren'!), was natürlich falsch ist, an dieser Stelle hätte man natürlich (!) das nonlocal Keyword verwenden müssen. Wusst ich aber nicht, und wurde mir auch nicht gesagt, denn statt einer Exception bekam ich nur die Meldung 'Kernel died'. Wohl, weil meine Funktion von dem Framework aufgerufen wurde, und die Exception nie an meiner Konsole ankam. Jetzt hatte ich also eine Situation, in der weder die statische Code-Analyse (die in Python ja nicht existiert, und das ist das zweite riesengroße Problem) noch die 'dynamische Code-Analyse' (weil die Exception nicht ankam) funktionierte. Ich war also in der Situation, dass ein trivialer Fehler (Variable die nicht existiert wird benutzt) unauffindbar war und per trial-and-error behoben werden musste. Ein Fehler, den mir eine vernünftige IDE in einer vernünftigen Programmiersprache direkt unterkringelt hätte, weil er so offensichtlich ist. Der mich so aber eine halbe Stunde gekostet hat, weil Python ja unbedingt grundlos scheiße sein muss.

Es gibt natürlich einen Grund, warum ich das ganze in Python mache. Weil halt viele Sachen an der Sprache auch echt toll sind. Aber meine Güte, wieso muss ich mich immer zwischen Sprachen entscheiden, die alle schlecht sind? Wieso können wir nicht wenigstens mal eine Programmiersprache haben, die benutzbar ist? Wir leben in einer schäbigen Welt...
Zuletzt geändert von Jonathan am 19.06.2018, 13:35, insgesamt 2-mal geändert.
Lieber dumm fragen, als dumm bleiben!
Benutzeravatar
Jonathan
Establishment
 
Beiträge: 1198
Registriert: 04.08.2004, 20:06

Re: Jammer-Thread

Beitragvon Alexander Kornrumpf » 18.06.2018, 19:15

Ich bin nicht 100% sicher ob ich zwischen den Flüchen richtig herauslesen kann, was du eigentlich gemacht hast, aber diese Version der Geschichte scheint denselben Sachverhalt zu beschreiben:

Weil ich unbedingt besonders clever sein wollte (globalen scope nicht mit einer Funktion "zumüllen", was in der realen Welt niemals zu einem Problem geworden wäre), habe ich ein Sprachfeature benutzt, das ich nicht 100% verstehe. Obwohl ich meine Funktion aus Gründen nicht als lambda implementiert habe, wollte ich gerne, dass sie sich wie ein lambda verhält (den äußeren Scope bindet). Leider hat das Framework, das ich verwende, die Fehlermeldung geschluckt und durch eine nichtssagende ersetzt. Ich habe dann daraus geschlossen, dass die Sprache ein "Haufen Affenscheiße" sein muss.


Auf "beispielloser Synergieeffekt zweier dummer Entscheidungen" können wir uns sofort einigen :)
Alexander Kornrumpf
Moderator
 
Beiträge: 1626
Registriert: 25.02.2009, 14:37

Re: Jammer-Thread

Beitragvon Jonathan » 19.06.2018, 13:33

meh, ja. Ich war alleine im Büro und tierisch genervt, da passiert sowas halt.

Natürlich habe ich Fehler gemacht, aber so ist das nunmal, wenn man programmiert - ich mach das ja nicht zum Selbstzweck sondern um Probleme zu lösen, und da hat man einfach nicht die Zeit alle Tools bis ins letzte Detail zu lernen, bevor man sie benutzt. Es geht also eigentlich nicht darum, auf welche Art Python welche Variablen bindet, sondern dass die Sprache in dieser Hinsicht einfach nicht robust ist. Wegen dem dynamischen Typsystem (siehe neulich) und der Fehlerhaften Exception-Implementierung von dem Framework / der IDE / oder vielleicht auch Python - ich bin mir nicht ganz sicher wo sie geschluckt wurde, aber wenn nützliche Fehlermeldungen nicht beim Benutzer ankommen, nenne ich das einen Implementierungsfehler.

Natürlich mache ich dumme Fehler und realistisch gesehen wird das auch immer so bleiben (es werden nur halt andere Fehler sein). Deswegen bin ich ein großer Freund von Robustheit (wo ich Fehler schnell finden und beheben kann) und wenn ich sehe, dass sie an der einen Stelle existiert (statische Typsysteme :D), ich sie an der anderen aber nicht haben kann (Python^^), macht mich das traurig. Ich sollte wirklich aufhören, deswegen Leute zu beleidigen, aber meine Güte, daran arbeite ich halt auch noch :D
Lieber dumm fragen, als dumm bleiben!
Benutzeravatar
Jonathan
Establishment
 
Beiträge: 1198
Registriert: 04.08.2004, 20:06

Vorherige

Zurück zu Allgemeines Talk-Brett

Wer ist online?

Mitglieder in diesem Forum: Ahrefs [Bot], Yandex [Bot] und 3 Gäste