Ich habe ein dickes, fettes, sauteures und schweres Wörterbuch mit weit über 2000 Seiten, das so ziemlich alle japanischen Kanj enthält, die es gibt. Das sind deutlich mehr als 100000 Stück!

Kleine Wörterbücher, die nur die Joyokanji enthalten, bekommst du aber in jeder Fachbuchhandlung, oder eben bei Amazon.

...zur Antwort

Also die vorgegebene API ist unschön, weil man dabei zwangsläufig entweder auf globale Variablen angewiesen ist, oder bei jedem einzelnen Funktionsaufruf immer wieder neue Objekte erzeugen und oder zerstören muss.

Ich habe mich jetzt mal für einen globalen Zufallszahlengenerator und eine globale Ganzzahlverteilung entschieden:

#include <iostream> // cout, endl
#include <random> // random_device, uniform_int_distribution

#include <cstdlib> // size_t

using namespace ::std;

random_device generator {};
uniform_int_distribution<int> distribution { 1, 6 };

int wuerfel() {
    return distribution(generator);
}

void wuerfel(int & zahl) {
    zahl = distribution(generator);
}

int main (void) {
    for (size_t i { 1 }; i <= 9; ++i) {
        cout << "Runde #" << i << ": ";

        cout << wuerfel() << " und ";

        int zahl {};
        wuerfel(zahl);

        cout << zahl << endl;
    }
}

Die Ausgabe sieht ungefähr so aus:

Runde #1: 3 und 5
Runde #2: 4 und 4
Runde #3: 5 und 3
Runde #4: 2 und 4
Runde #5: 5 und 6
Runde #6: 1 und 1
Runde #7: 1 und 3
Runde #8: 4 und 6
Runde #9: 5 und 5

Bei dieser typischen Übungsaufgabe wirst du meistens auf Lösungen mit der ollen alten "rand()" Funktion aus C-Zeiten stoßen, aber da es hier um C++ geht, nutze ich natürlich auch die entsprechende Funktionalität aus dem <random> Header der Standardbibliothek.

Bei C++ gibt es eine ganze Reihe Pseudozufallszahlengeneratoren und einen echten Zufallszahlengenerator, der intern auf echten Hardwarezufall zugreift.

Naja, für Details guck dir die Dokumentation der Standardbibliothek an!

Und noch ein weiterer Tipp: Um besser oder gar wirklich gut werden zu können, löse so viele "Hausaufgaben" anderer Leute hier auf GF! Das ist eine prima Übung, vor allem für dich selbst!

Deshalb ist meine Antwort auch nicht ganz uneigennützig. :)

Trotzdem viel Spaß noch beim Lernen! :)

...zur Antwort

Anstatt "islower()" bzw. "isupper()", kannst du lieber "lower()" und "upper()" nutzen:

for pw in ('foo', 'BAR', 'bAz'):
    print(pw, end=': ')

    if pw != pw.lower() and pw != pw.upper():
        print('OK!')
    else:
        print('Aahhh!')

Die Ausgabe sieht dann so aus:

foo: Aahhh!!!
BAR: Aahhh!!!
bAz: OK!

Ich denke, das dürfte die kürzeste und eleganteste Lösung sein, ohne unnötige Schleifen.

...zur Antwort

Das muss Absicht sein!

Ich erinnere mich bei Interstellar an leichtes Clipping an lauten Stellen und einige Sounds, die klingen, als wären es 8-Bit Samples.

Das fällt mir bei allen Interstellar-Medien auf, lag also nicht am Kino.

ABER: Dieses Lo-Fi Gefühl passte perfekt zum Film und der Szenerie.

Deshalb bin ich mir absolut sicher, dass es Absicht, und kein besoffener Mixing-Assistent war! :)

...zur Antwort

Die meisten Daten werden nicht über MITM-Angriffe abgegriffen, sondern direkt von Servern, zu denen eine Verbindung aufgebaut wird.

Es ist also fast immer unerheblich, ob deine Verbindung TLS-gesichert ist, es sei denn, du arbeitest mit wirklich geheimen Daten und nutzt dabei öffenliche Zugangspunkte.

Im Übrigen gibt GF so ziemlich alle deine Daten und dein Verhalten, hier auf dieser Plattform, an weit über 300 Werbe-, Tracking- und Analysefirmen weltweit weiter. Und das trotz HTTPS ... Also gib da lieber nicht zu viel drauf!

...zur Antwort

Ja, die meisten VPN-Betreiber an Unis loggen solche Sachen um Missbrauch zurück verfolgen zu können, bzw. einfach als Teil der Firewall.

Allerdings sind Verbindungen zu Webseiten normalerweise verschlüsselt, sodass die Uni nur die Domainnamen sehen kann.

...zur Antwort

In Schleifen bitte niemals Gleitpunkttypen als Zählvariablen nutzen!

Es ist dann nämlich oft nicht genau definiert, wie oft die Schleife tatsächlch durchlaufen werden wird.

In Schleifen gilt: Grundsätzlich immer und ausschließlich nur Ganzzahltypen für Laufvariablen nutzen.

...zur Antwort

Aktuell sind AMD-CPUs die leistungsfähigeren und Intel hinkt AMD aus technischer Sicht um Jahre hinterher.

Das war früher anders herum, aber seit AMDs Ryzen und Epyc bekommt Intel außer großspuriger Ankündigungen nichts mehr gebacken.

Zudem ist AMD viiieeel günstiger bi besserer Leistung und geringerem Energieverbrauch, und Intel hat wesentlich mehr Bugs in ihrer ME als AMD, was zu enormem Performanceverlust durch Mitigations führt. (Nur noch 50% Leistung nach einem Firmwareupdate sind keine Seltenheit!)

Intel hat in den letzten Jahren enorm nachgelassen, und wurde in praktisch allen Bereichen von AMD technisch überholt. Bis Intel diesen Rückstand aufholen kann, werden noch viele Jahre vergehen.

Leute, die hier ernsthaft Intel empfehlen, lesen keine Fachpresse oder haben die letzten Jahre unter einem Stein verschlafen.

...zur Antwort

Natürlich, das bringt gerade bei Servern extrem viel, da die CPU so während IO-Operationen sinnvolles tun kann anstatt die Zeit mit Warten totzuschlagen.

Eine Effizienzsteigerung um einige hunderttausend bis mehrere zich millionen Mal, auch bei einem Singlecore, sind absolut realistisch, weil IO im Vergleich zum CPU-Takt, saulangsam ist.

Habe das auch schon oft bei Clients eingesetzt. Ergebnis: Sequentiell dauerte die Sache länger als zwei Tage, parallelisiert hingegen keine 3 Sekunden. Nur damit du mal ein Gefühl für die Größenordnung gekommst. :)

...zur Antwort

Vermutlich werden viele schreiben, dass es nicht sonderlich kompliziert ist, da es zu dem Thema ja massenhaft Bücher und Tutorials gibt, es an jeder Uni oder sogar im Informatikunterricht durchgenommen wird und jede Programmiersprache fette Bibliotheken ja eh schon alles vorgefertigt mitbringen.

Leider sieht die Realität anders aus: Bei vielen Entwicklern reicht das Wissen nicht über Maps, Sets, Deques, usw. hinaus, und man wird blöd angeguckt wenn man etwas von einem Bloomfilter erzählt.

Alleine trivialer Kram wie eine binäre Suche wird oft nicht mal genutzt, wenn so eine Funktionalität schon in der Standardbibliothek vorhanden ist.

Deshalb denke ich: Ja, in der Theorie ist alles ganz einfach und durchaus lernbar. In der Praxis hat das aber leider ein seeeehr großer Teil an Softwareeentwicklern noch nicht verstanden.

Natürlich nicht alle, aber jeder hatte schon mal den einen Kollegen in der Firma, bei dem man sich gefragt hat, wie der es schafft, den PC einzuschalten. :)

...zur Antwort

Damit soll Fingerprinting erschwert werden.

Der TOR-Browser zeigt deshalb auch eine Warnung im Vollbildmodus an.

Allerdings gibt es hunderte weitere Ansätze für Fingerprinting, sodass die Größe des Browserfensters heute nicht mehr so eine große Rolle spielt, wie vor einigen Jahren noch.

Übrigens: GF gibt deine Browserfenstergröße neben unzähligen weteren Daten an über 300 Tracking- und Analysefirmen weltweit weiter. Dem hast du beim Akzeptieren der Datenschutzerklärung zugestimmt, die du sicher nicht in Gänze gelesen hast. :)

...zur Antwort
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.