C / C++ / C#

Wenn du mit E-Technik zu tun hast, ist C sicherlich die Sprache, mt der du am ehesten in Kontakt kommen dürftest.

...zur Antwort

Deine Methode mit dem ProcessBuilder sollte auch unter nahezu jeder unixoiden Shell funktionieren, naürlich mit anderem Kommando:

new ProcessBuilder("sh", "-c", "clear") ...

Allerdings ist das ein absoluter Overkill und auch der Ansatz mit den Escapesequenzen genau genommen totaler Pfusch.

Am besten, du liest dich in die Java-Bindings von ncurses ein. Da gibts diverse Bibliotheken und google wird dir dabei weiter helfen!

Aber für den Anfang, kannst du es ja mit dem ProcessBuilder versuchen. :)

...zur Antwort

Silbentrennung ist Sprachspezifisch und ein Software (z. B. ein Editor oder DTP-Programm) hat für jede Sprache ein Modul, welches bestimmte Grundregeln enthält, und eine Liste von Ausnahmen.

Zum Beispiel wird im Deutschen zwischen zwei gleichen Konsonanten getrennt:

Tit-
ten

Pim-
mel

Meistens ist genau definiert, was eine "Silbe" ist und dazwischen wird auch getrennt.

Aber weil das von Sprache zu Sprache extrem unterschiedlich ist, gibt es - wie gesagt - für jede Sprache ein eigenes Modul. :)

...zur Antwort

Du nimmst eine beliebige Malware-Datei (zum Beispiel irgendeine *.exe oder *.docx aus dem Anhang einer Spammail), zippst diese zum Beispiel als foo.zip und hängst diese an eine *.gif Datei ran.

Alle anderen Bildformate funktionieren auch, aber laut GIF-Spezifikation ist ein Anhängen von Mülldaten sogar legitim.

ZIP-Dateien haben den "Vorteil", dass sie nicht mit Headern, sondern mit Trailern arbeiten, und ebenfalls Mülldaten davor angefügt werden dürfen.

Das heißt, eine Datei die mit einem GIF-Bild anfängt, und mit einer ZIP-Datei endet, ist immernoch sowohl ein gültiges Bild, als auch ein gültiges Archiv.

Da Windows dumm ist, und sich an Dateiendungen orientiert, wird das Bild im Browser, dem Bildbetrachter, oder jeder beliebigen Anwendung einfach so angezeigt, aber ein Antivirenprogramm wird die Datei prüfen und den ZIP-Anhang finden, in dem eine Malware enthalten ist, und dem Benutzer melden, dass die Datei in Quarantäne verschoben und gerade sein Leben gerettet wurde.

Eine andere Möglichkeit besteht darin, in eine beliebige Datei (vorzugsweise eine unformatierte Textdatei) folgenden Inhalt zu schreiben:

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Wenn du wissen willst, wie das funktioniert, google mal nach "EICAR".

Das funktioniert aber nur mäßig, weil die meisten Antivirenprogramme so etwas wie "Not a Virus" oder "Testvirus" ausgeben.

Naja, egal ... viel Spaß beim rumblödeln! ;)

...zur Antwort

Ich bin mir sehr sicher, dass du C++ nicht "kannst", sondern höchstens an der Oberfläche gekratzt hast. :)

Also lerne doch einfach C++ richtig ordentlich weiter! Diese Sprache hat sicher noch viele Features, von denen du noch nie gehört hast, welche dir aber verdammt interessante Dinge erlauben, von denen du noch nicht mal geträumt hast.

Meiner Erfahrung nach, können gerade die Leute, die meinen sie "könnten" C++, nicht mal richtig Ausnahmen fangen.

Von daher: Lerne C++ doch lieber erstmal etwas ausführlicher. Ich glaube, da hast du am Ende mehr von. :)

...zur Antwort

Dieser Petition liegen falsche Annahmen zu Grunde, die unwissenschaftlich und widerlegt sind.

Desweiteren ist diese Art der Fragestellung absolut unseriös, aka: Sind sie gegen Atomwaffen und für das shreddern von Katzenbabies?

Fazit: Äußerst manipulativ geschrieben, und basiert schlicht auf Unwahrheiten. Kann man also unter Ulk verbuchen.

...zur Antwort

Was für eine bescheuerte Aufgabenstellung. So lernen die Schüler, wie man es bei dieser Art von Problemen genau NICHT machen sollte. Zumal der korrekte Lösungsansatz auch nicht komplizierter ist.

Und ich wundere mich, warum es hier jede Woche die gleichen Fragen zur zufälligen Auswahl von n Objekten aus einem Pool der Größe m gibt.

Wie kann man als Lehrpersonal solche unfassbar schlechten Aufgaben stellen? Die armen Schüler ...

...zur Antwort

Mir scheint, du hast das Konzept hinter Piping noch nicht so ganz erfasst. :)

Dein Programm abeitet soweit korrekt, bis auf die etwas knauserig gewählte Puffergröße. :)

...zur Antwort

Lies am besten erstmal ein Buch zum Compilerbau.

Danach könntest du einen für eine Forth-artige Sprache schreiben, weil Forth unvergleichbar leicht zu parsen ist. (Nur ca. drei Zeilen C-Code!)

...zur Antwort

Kein Mensch hat irgendeine Art von Abwehrkräften gegen radioaktive Strahlung.

Was einige Leute so glauben ist ja unfassbar.

...zur Antwort

Entweder du nimmst dir dafür eine Drittbibliothek, baust dir selber eine schön verpackte Klasse, oder nutzt folgende sehr einfache Implementierung:

#include <filesystem> // path
#include <fstream> // ifstream, ofstream
#include <iostream> // cout
#include <string> // string
#include <tuple> // apply, make_tuple

template <class ... ARGS>
[[nodiscard]] inline auto load(const ::std::filesystem::path & fnam, ARGS && ... args) {
    using namespace ::std;
    static_assert(sizeof...(ARGS), "no args supplied");

    auto result { make_tuple(args ...) };
    
    if (ifstream ifs { fnam }; ifs.good()) {
        ifs.exceptions(ifstream::failbit);
        ifs.setf(ifstream::boolalpha);

        apply([&ifs] (ARGS & ... refs) { (ifs >> ... >> refs); }, result);
    }

    return result;
}

template <class ... ARGS>
inline void store(const ::std::filesystem::path & fnam, ARGS && ... args) {
    using namespace ::std;
    static_assert(sizeof...(ARGS), "no args supplied");
    
    ofstream ofs { fnam };
    ofs.exceptions(ifstream::failbit | ifstream::badbit);
    ofs.setf(ofstream::boolalpha);

    auto printer { [&ofs] (const auto & ref) {
        ofs << ref << endl;
    } };

    (printer(args), ...);
}

int main() {
    using namespace ::std;
    cout.setf(ios_base::boolalpha);

    const string cfg_file { "./config.txt" };

    auto [my_int, my_float, my_bool, my_char] {
        load(cfg_file, 123, 456.789f, true, 'A')
    };

    cout << "[LOADED]" << endl;
    cout << my_int << endl;
    cout << my_float << endl;
    cout << my_bool << endl;
    cout << my_char << endl;
    cout << endl;

    my_int *= 2;
    my_float += 123.456f;
    my_bool = !my_bool;
    my_char = my_char == 'A' ? 'Z' : 'A';

    store(cfg_file, my_int, my_float, my_bool, my_char);

    cout << "[STORED]" << endl;
    cout << my_int << endl;
    cout << my_float << endl;
    cout << my_bool << endl;
    cout << my_char << endl;
    cout << endl;
}

Guck dir in der main()-Funktion an, wie es genutzt wird.

Der Typ wird automatisch von den Initialwerten genutzt, die an load() übergeben werden, sodass man ihn bei den einzelnen Variablen nicht angeben muss.

Beachte bitte, dass du einen C++17-fähigen Compiler nutzen musst, weil der obige Code exzessiv moderne Sprachfeatrues nutzt!

Alles in allem kannst du deine Werte dann beim Programmstart mit ...

auto [a, b] { load("datei.txt", 23, 42.42) };

... laden, und am Ende mit ...

store("datei.txt", a, b);

... speichern. Existiert am Anfang noch keine Datei (oder kann diese nicht geöffnet werden), werden die Variablen stillschweigend mit den angegebenen Werten initialisiert. Ansonsten wird bei Schreib- und Lesefehlern eine Ausnahme geworfen.

Das ist zwar nicht so sicher, wie eine hübsch gekapselte Klasse, weil evtl. Werte vertauscht werden könnten, aber es erfordert dafür nur ein paar Zeilen Code. :)

...zur Antwort

Es ist sogar noch viel schlimmer!

Die Regierung will mit den 5G-Strahlen unsere Gedanken kontrollieren!

Spätestens seit HAARP weiß man ja wie es läuft. Die, mit ihren Chemtrails ... Versuchen, von der flachen Erde abzulenken.

Alle von Reptiloiden unterwandert, sag ich dir!!!!

...zur Antwort

Egal, was man von Bill Gates halten mag, aber er ist sicher mehr Menschenfreund, als es Impfgegner jemals sein werden.

Und ich sage das als reiner Linuxnutzer! :)

...zur Antwort

Die des Ziels.

...zur Antwort