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 Krishty » 07.09.2017, 20:22

Von C&C Alarmstufe Rot gibt es ein hervorragend gutes C#-Remake. Das unterstützt HD-Auflösung und hat einen Haufen Bugfixes gegenüber der Originalversion, aber AFAIK fehlen die Missionen (nur Geplänkel/Online-Multiplayer).
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
 
Beiträge: 6007
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy

Re: Jammer-Thread

Beitragvon joggel » 07.09.2017, 20:36

Multiplayer ist sehr gut.
Gerade gegoogelt. OpenRA nennt sich das, auf GitHub zu finden. lade es mir gerade mal.
Danke Dir :)
...
Benutzeravatar
joggel
 
Beiträge: 1172
Registriert: 06.11.2007, 19:06
Wohnort: Dresden

Re: Jammer-Thread

Beitragvon Krishty » 10.09.2017, 02:37

Krishty hat geschrieben:Scheinbar ist es unmöglich, einen Icon zu bauen, der unter Vista und höher PNG ist (hochauflösend und transparent) und unter XP trotzdem funktioniert (XP unterstützt keine PNG-Icons).

Ich dachte, ich könnte einfach zwei Versionen der 32x32-Auflösung reinpacken, einmal als PNG und einmal traditionell, und die richtige würde rausgesucht. Aber kommt die traditionelle Version zuerst, nutzen auch Vista/7/8/10 sie (anstelle der edlen). Kommt die edle Version zuerst, kann XP die Datei nicht mehr lesen.

Also letzter Versuch: Die 16x16-Version traditionell als erstes Icon speichern. In Vista/7/8/10 sieht man die ja sowieso nie, weil die Icons da nie so klein werden. Und in XP ist es dann zwar niedrig aufgelöst, aber besser als nichts. Und was passiert? XP kann den Icon nicht lesen, wenn kein lesbares 32x32 drin vorkommt; ignoriert das 16x16 und zeigt einen Platzhalter an. WTF WTF WTF

Nagut, also mache ich zwei Icons draus. Ich packe das High-Res-Icon zuerst in die EXE. Danach das XP-Icon. XP wird jawohl merken, dass das erste unlesbar ist, und dann vorspulen zum zweiten, oder? NEIN ES IGNORIERT DAS ZWEITE EINFACH. Boah fuck it


Nachtrag: Ich hab’s. Nach nur 60 Versuchen:
  • Weder XP noch neuere Windows-Versionen geben dem Icon eine zweite Chance. Wird der erste Treffer nicht erfolgreich geladen, gibt’s nen Platzhalter.
  • Man muss also bei der Auswahl der Auflösung ansetzen.
  • Im Icon-Verzeichnis gibt es einen Eintrag für die Farbtiefe. Bei PNG ist der gewöhnlich ungenutzt, weil sich die Farbtiefe aus der PNG-Datei ergibt, die eingebettet ist.
  • XP unterstützt dort kein "32", Vista und neuere Windows-Versionen schon.
  • Man legt also vier Bilder im Icon an:
    1. 32², 256 Farben, Farbtiefe "8". Dieses Symbol wird XP aussuchen. Vista und höher werden es verwerfen weil die Farbtiefe von 2. näher an der Bildschirmfarbtiefe liegt.
    2. 32², PNG, Farbtiefe "32". Dieses Symbol wird Vista/höher aussuchen. XP wird es verwerfen weil es solche Farbtiefen nicht kennt.
    3. 48² und weitere Auflösungen als PNG für Vista/höher.
  • Die Reihenfolge darf nicht verändert werden, weil XP abbricht, sobald es einem PNG begegnet.
  • warum ist der Scheiß nirgends dokumentiert
Ich habe das irgendwie falsch zusammengefasst … und nun weiß ich nicht mehr, wie es richtig ging, und muss bei Null anfangen. NEEEEEEEIIIIIIIIIN

Nachtrag: Der Gedankengang „XP kennt keine 32-Bit-Farbtiefen“ ist falsch. 32-Bit-ARGB-Icons funktionieren unter XP, so lange sie als BMPs vorliegen statt als PNGs.

Mir fällt daher keine Möglichkeit ein, XP und Vista+ irgendwie unterschiedliche Icons nehmen zu lassen. Es gibt keinen unter Vista gültigen Wert, der nicht auch unter XP gültig wäre. Nur sind die Bilddaten dann unlesbar.

Ich geb’s auf. Wenn Icons auf XP wie auch auf Vista+ Transparenz nutzen, müssen sie als 32-Bit-Bitmap vorliegen. PNG geht nicht. Basta.
Zuletzt geändert von Krishty am 12.09.2017, 23:45, insgesamt 1-mal geändert.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
 
Beiträge: 6007
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy

Re: Jammer-Thread

Beitragvon DerAlbi » 11.09.2017, 16:38

Ich mache etwas prinzipiell falsch.
Irgendwie implementiere ich alles nur noch in Headern. Also direkt in der Klasse und gut. Da vieles auf Templates basiert ist das meistens auch ein Zwang.
Das führt nun effektiv dazu, dass ich quasi nur 2 .cpp habe und der rest sind header. Das Dumme ist, dass beide cpps quasi alle Header einbinden, sodass ich bei Code-Änderung keine Compile-Rechenleistungsverminderung erlebe.
Andererseits programmiere ich noch die unterste Schicht der Abstrahierung.. aber es macht sich dennoch das Gefühl breit, dass ich was grob falsch mache :-(
DerAlbi
 
Beiträge: 172
Registriert: 20.05.2011, 05:37

Re: Jammer-Thread

Beitragvon Krishty » 11.09.2017, 17:22

Bald gibt’s Module …

… da fällt mir ein, dass ich Visual C++’ Unterstützung mal wieder testen muss.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
 
Beiträge: 6007
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy

Re: Jammer-Thread

Beitragvon DerAlbi » 11.09.2017, 18:09

..bis das aufm GCC für ARM angekommen ist....

btw: kann jemand sagen, warum der die static constexpr nicht vererbt? Die Fehlermeldung ist, dass alles, was ich denke, das von der Basisklasse bereitgestellt werden sollte, nicht bereit gestellt wird. (Konkret: GPIO wird nicht gefunden)
Ich hab schon den compiler-explorer angeschmissen: mit trivialen Minimalbeispielen hinsichtlich static constexpr-Vererbung klappt das alles. Auch innerhalb des ARM-GCCs. (7.1)
Warum der hier versagt, verstehe ich nicht.
Dateianhänge
Fuck.png
DerAlbi
 
Beiträge: 172
Registriert: 20.05.2011, 05:37

Re: Jammer-Thread

Beitragvon dot » 11.09.2017, 18:34

Das Problem ist dass SGPIO eine dependent base class ist und
N4659 §17.6.2/3 hat geschrieben:In the definition of a class or class template, the scope of a dependent base class (17.6.2.1) is not examined during unqualified name lookup either at the point of definition of the class template or member or during an instantiation of the class template or member.

(http://eel.is/c++draft/temp.res#temp.dep-3)

Lösung: z.B. per using SGPIO<qpio, Pin>::GPIO; explizit den name aus der base class importieren.

;)
Benutzeravatar
dot
Michael Kenzel
 
Beiträge: 1587
Registriert: 06.03.2004, 19:10

Re: Jammer-Thread

Beitragvon DerAlbi » 11.09.2017, 18:50

Wow, was auch immer deine dependent base class ist, aber dass es dafür eine Erklärung gibt, ist schonmal hübsch.
Aber jedes mal per using alles reinzuholen, ist genauso bekloppt, wie die static constexpr per Copty&Paste überall direkt einzufügen.
Fail :-(
DerAlbi
 
Beiträge: 172
Registriert: 20.05.2011, 05:37

Re: Jammer-Thread

Beitragvon dot » 13.09.2017, 22:38

Nachdem ich heute gerade wieder mal genau das selbe Problem hatte (scheint mir in letzter Zeit ständig in die Quere zu kommen, daher wusste ich auch gleich sofort was das Problem bei dir war ;) ), hab ich ein wenig über Lösungen nachgedacht. Effektiv ein weiterer Punkt für die Liste wieso free Functions rocken und Member sucken:

Code: Ansicht erweitern :: Alles auswählen
template <eGPIO gpio>
struct SGPIOInfo
{
private:
  static GPIO_WRAPPER<gpio> wrapper;

public:
  friend constexpr const GPIO_WRAPPER<gpio>& GPIO(const SGPIOInfo*) { return wrapper; }
  friend constexpr GPIO_WRAPPER<gpio>& GPIO(SGPIOInfo*) { return wrapper; }
  ...
};

template <eGPIO gpio>
class CSpecificGPIO
{
  struct COutput : SGPIOInfo<gpio>
  {
    void toggle() /*const*/ { GPIO(this).ODR = 42; }
    ...
  };
};



Btw: Soll "Toggle()" wirklich const sein? Das scheint verdächtig. Methoden die in der Class-Definition definiert sind, sind implizit inline, brauchst also nicht extra inline vorne hinschreiben...
Benutzeravatar
dot
Michael Kenzel
 
Beiträge: 1587
Registriert: 06.03.2004, 19:10

Re: Jammer-Thread

Beitragvon DerAlbi » 14.09.2017, 04:08

Ja, die const-ness darf sein. Die Klasse abstrahiert Hardware-Pins eines Mikrocontrollers und hat keinen eigenen State. Da es keine Member-Variablen gibt, gibts nichts zu ändern. Daher habe ich es const gemacht. [weil ich es kann]. Theoretisch kann man auch einfach static Memberfunctions draus machen, aber das wäre zum Schluss alles das gleiche. Der Grund, warum das in einer Klasse ist, ist die Ableitung von GPIOPortUsage, was kaum auf dem screenshot zu sehen ist. Das managed im Konstruktor eine Menge. Generell nutze ich das RAII-Prinzip zur Initialisierung der Hardware und fahre damit zur Zeit extrem gut.
Deine Lösung mit der Funktion ist interessant, aber solch ein Syntax stinkt doch. Ich würde mich "herablassen" den -> operator zu implementieren und darin wiederum den -> operator von GPIO_WRAPPER zurückzugeben [was das einzige ist, was die Klasse effektiv bietet], aber irgendwie ist das doch nicht Sinn der Sache :-( Ich will doch nur Vererben und gut :-(
DerAlbi
 
Beiträge: 172
Registriert: 20.05.2011, 05:37

Re: Jammer-Thread

Beitragvon Tiles » 14.09.2017, 18:27

Meine User bekommen unter Windows eine Warnung vor die Fresse dass mein Bforartists Installer gefährlich ist weil er nicht signiert ist.

Umgehen könnte ich das wohl indem ich mir eine SSL2 Digital Signature von Verisoft oder einem anderen Signaturanbieter kaufe. Kost ja nur 500 Euro im Jahr. Oder eben damit leben dass meine User die Software nicht installieren weil sie meinen das ist Schadsoftware.

Spassig an der Geschichte ist: die Vorgängerversion des Installers, auch unsigniert, installiert sauber und ohne Mecker ...

Ich kann grade gar nicht so viel saufen wie ich eigentlich kotzen will :/
Free Gamegraphics, Freeware Games http://www.reinerstilesets.de
Die deutsche 3D Community: http://www.3d-ring.de
Benutzeravatar
Tiles
 
Beiträge: 1057
Registriert: 11.01.2003, 14:21

Re: Jammer-Thread

Beitragvon Jonathan » 16.09.2017, 20:17

Was ist eigentlich der konkrete Mehrwert dieser Signaturen? Ich meine, was hindert dich als bösen Menschen daran, deine schädliche Software zu signieren? (Oder auch: Wieso kann man sich für seine gefälschte Webseite kein SSL-Zertifikat ausstellen lassen? Meines Wissens nach werden die doch z.B. von Let's Encrypt vollautomatisch vergeben...)
Lieber dumm fragen, als dumm bleiben!
Benutzeravatar
Jonathan
 
Beiträge: 1153
Registriert: 04.08.2004, 20:06

Re: Jammer-Thread

Beitragvon Krishty » 16.09.2017, 20:37

Jonathan hat geschrieben:Ich meine, was hindert dich als bösen Menschen daran, deine schädliche Software zu signieren?
Nichts. Aber
  1. lässt sich die Schadsoftware dann zu deinem Handelsregistereintrag/deiner Domain zurückverfolgen und erleichtert es dadurch, dich haftbar zu machen; und
  2. lässt sich die Signatur zurückziehen, hoffentlich bevor sich deine Schadsoftware ausgebreitet hat.
Natürlich kannst du durch die Prüfung der CA rutschen, aber zwielichtige CAs haben es heute nicht mehr leicht (Chrome hatte doch letztens ganze CAs wegen solcher Geschichten auf die Rote Liste gesetzt, Links hatten wir hier).
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
 
Beiträge: 6007
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy

Re: Jammer-Thread

Beitragvon Krishty » 18.09.2017, 14:35

Weil’s so gut zum vorherigen Beitrag passt: CCleaner 5.33.6162 und CCleaner Cloud 1.07.3191 waren schon in der Entwicklung virenverseucht, und wurden dann signiert, aber verseucht, ausgeliefert.

Weil fefe jemand ins Hirn geschissen hat: Das Problem hatte nichts mit Auto-Updates zu tun. Die komplette Version war verseucht, auch bei manuellem Runterladen.

Und CCleaner ist keins „von diesen überflüssigen Beschäftigungstherapie-Produkten für hyperaktive Windows-User, die glauben, sie müssten periodisch ihre Registry aufräumen oder so“, sondern räumt auf, was Windows nicht von alleine schafft. Ein Beispiel sind die Log-Dateien für Installationen,
  • die Windows niemals von allein löscht
  • die man nach Jahren auch nicht mehr für Debugging braucht
  • die sich nur über Umwege durch die Security-Rights-Hölle löschen lassen
  • die auf meinem frisch installierten Windows 500 MiB belegt haben, auf einem gut gepflegten vierjährigen Entwicklungssystem 7 GiB, und auf einem verzottelten Bürorechner 30(!) – die SSD dankt herzlich
… und CCleaner automatisiert das eben, und bündelt es in UI.

Nachtrag:
https://www.piriform.com/news/blog/2017/9/18/security-notification-for-ccleaner-v5336162-and-ccleaner-cloud-v1073191-for-32-bit-windows-users hat geschrieben:The suspicious code was hidden in the application’s initialization code called CRT (Common Runtime) that is normally inserted during compilation by the compiler. This code modification was executed by the following function calls (functions marked by red represent the CRT modifications):

_scrt_common_main_seh() → __scrt_get_dyn_tls_init_callback() → __get_tls_callback() → blobcrt()
Wie geil! Dass ich die CRT aus meinen Projekten geschmissen habe spart nicht nur Platz, sondern reduziert ganz realistisch die Angriffsfläche für Viren!

Nachtrag 2: Nach dem, was sie schreiben, war das keine versehentliche Infektion, sondern das Virus war für CCleaner maßgeschneidert. Klingt fast nach einem Geheimdienstangriff.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
 
Beiträge: 6007
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy

Re: Jammer-Thread

Beitragvon Krishty » 19.09.2017, 12:54

Windows 2000 im Browser: https://bellard.org/jslinux/vm.html?url ... 1024&h=768

Wäre eigentlich ein Anti-Jammer-Grund, aber es läuft geschätzte 100 Mal langsamer als das Original. 10 Mal hätte man noch verkraften können, ist halt Emulation. Aber der Rest ist JavaScript. Fucking JavaScript.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
 
Beiträge: 6007
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy

VorherigeNächste

Zurück zu Allgemeines Talk-Brett

Wer ist online?

Mitglieder in diesem Forum: Linkdex [Bot] und 5 Gäste