Also der Senf in diesen kleinen Tütchen in Nattoverpackungen ist durchweg DEUTLICH schärfer, als die "scharfen" Sorten aus dem Glas / Becher in Deutschland. Aber natürlich kannst eu den auch essen.

Und Dashi ist was völlig anderes als Sojasoße. Dann doch lieber gänzlich ohne.

Wenn rohe Wachteleier hast, kannst du das auch drüber kippen. Schmeckt super zum Natto auf Reis zum Frühstück.

...zur Antwort

Ändere die Compilereinstellungen!

Releasebuild, Optimiert, Stripping ist das wichtigste, usw.

Dann bist du bei 2 bis 5 Megabyte.

Weiter kannst du mit einm Laufzeitpacker wie UPX kommen, auf unter 1 MB bei kleineren Programmen.

Aber wie gesagt: Strippe erstmal alle unnötigen Symbole von der EXE-Datei!

...zur Antwort

Python ist kein Framework, sondern eine Programmiersprache mitsamt üppiger Standardbibliothek.

Ja, Python läuft sehr stabil und zuverlässig, und man kann viele Dinge out-of-the-box mit der Standardbibliothek erschlagen.

Es gibt m. M. n. nur zwei riesige Probleme:

  • Sobald man Spezialfälle hat, reicht die Standardbibliothek nicht mehr aus und man muss Drittmodule nutzen, oder selbst etwas schreiben. (z. B. der HTML-Parser von Python ist zwar "nett", aber früher oder später braucht man etwas "richtiges")
  • Und was noch viel schlimmer ist, dass Python für Dinge mit vielen Rechenoperationen leider völlig ungeeignet ist. Kann man beim Prototyping zwar verschmerzen, aber ein Faktor von 100 bis 1000 im Vergleich zu C/C++ ist dann doch schon etwas zu happig, für den Produktiveinsatz.

Von diesen beiden Punkten abgesehen mag ich Python sehr gern, und nutze es schon seit den 90ern.

Die Qualität des Interpreters, bzw. Compilers ist sehr hoch und die Sprache an sich ist wirklich mächtig und bietet viele Features in einer Summe, die man sonst vergeblich sucht.

Trotzdem muss man immer im Hinterkopf haben, was Python kann, und noch wichtiger, was es eben NICHT kann.

Wenn man das bedenkt, kommt man mit Python durchaus sehr weit!

...zur Antwort

Ein Eingabe-Echo ist KEINE Ausgabe! Das ist dein Denkfehler.

PS: Das ist übrigens kein C++, sondern gutes altes C. In C++ sähe dein Code grundlegend anders aus.

...zur Antwort
Programmieren: Ist es sinnvoll Teilaufgaben in Funktion zu unterteilen?

Hallo,

wenn ich z.B. eine große Funktion habe (hier die main) und dort Teilaufgaben wie z.B. irgendwas komplex zu sortieren in weitere Funktionen unterteile (sort funktion) die aber wirklich nur 1x aufgerufen werden, stellt sich mir die Frage, ob das sinnvoll ist, oder bad practice.

Ich tue das ganze nur aus dem Grund, um den Funktionsablauf übersichtlich zu halten. Letztendlich geht es um die Frage, wie "teuer" (inperformant) ein Funktionsaufruf ist.

Hier BEISPIELCODE kein Sinn dahinter, nur zur Verdeutlichung:

function sort(image, arr) { // Subfunktion
  const min = min_val;
  const max = max_val;
  for (let i = 0; i < arr.length; i++) {
    for (let k = 0; k <= arr[0].length; k++) {
      if (arr[i][k] < min) arr[i][k] = min;
      if (arr[i][k] > max) arr[i][k] = max;
    }
  }
  for (let i = 0; i < image.length; i++) {
    for (let k = 0; k < image[0].length; k++) {
      image[i][k] = arr[parseInt(image[i][k])];
    }
  }
  return image;
}

function main() {
  const array = new Uint8Array(20);
  crypto.getRandomValues(array);
  const arrayEncoded =  btoa(String.fromCharCode(...array)).split('');
  const arrayFiltered = arrayEncoded.filter(value => {
    switch (value){
    case "+" :
        return false;
    case "/" :
        return false;
    case "=" :
        return false;
    default :
      return true;
    }
  });
  const sortedArray = sort(arrayFiltered, arrayEncoded) // Hier wird unterfunktion aufgerufen
  var arr = new Uint8Array((sortedArray || 40) / 2)
  window.crypto.getRandomValues(arr)
  return Array.from(arr, dec2hex).join('')
}  

Versucht nicht, den Code zu verstehen, es sind einfach nur zusammengewürfelte Zeilen von irgendwo.

...zur Frage

Funktionen sollten grundsätzlich so kurz wie möglich sein, so wenig Parameter wie nötig entgegen nehmen, und exakt eine einzige Aufgabe erledigen.

Also ja, du solltest den Codeblob innerhalb deiner main()-Funktion aufräumen und in einzelne Funktionen auslagern.

Im Moment ist der Code eine Katastrophe und nicht verständlich, ohne a) die API zu kennen und b) den gesamten Code innerhalb von main() zu lesen.

Ein Refactoring ist also durchaus angebracht.

Ich empfehle dir die Bücher "Clean Code", "The Art of Beautiful Code" und evtl. noch "Weniger schlecht Programmieren". Die ersten beiden sind deutlich besser, aber auch das zuletztgenannte enthält für Einsteiger viele wertvolle Infos.

Es gibt noch weitere sehr gute Bücher von Herb Sutter uvm. zum Thema Refactoring und allgemein Codequalität, aber die oben genannten Drei decken erst mal das ab, was jeder entwickler "eigentlich" wissen sollte.

Viel Erfolg! :)

...zur Antwort

Meine ersten Viren habe ich als Schüler geschrieben, um zu verstehen, wie so etwas funktioniert.

Im Studium war es sogar Teil des offiziellen Lehrplans.

Heute schreibe ich Schadsoftware, um neue Angriffsvektoren oder das Ausnutzen von Schwachstellen zu demonstrieren.

Nichts davon war oder ist illegal, im Gegenteil! Ohne Leute wie mich, die z. B. Rootkits aus Speicherdumps von Hardwarefirewalls rauspopeln und genauer untersuchen, wären viele Firmen aufgeschmissen.

Um eine Krankheit bekämpfen zu können, muss man sie verstehen. Und um sie verstehen zu können, muss man sie untersuchen. Und zur Untersuchung gehört zwangsläufig auch, eigene Experimente zu schreiben.

Nur mit Trockenübungen und theoretischem Wissen, hat man keine Chance!

Fazit: Ich schreibe Malware, um die Welt sicherer zu machen. Dass ich die dann aber natürlich NICHT verbreite, erklärt sich von selbst.

...zur Antwort
MacBook Air Intel

Der M1 ist technisch zwar überlegen, aber in deinem speziellen Fall wirst du Windows in einer VM laufen lassen wollen, und da kommst du de facto um Intel nicht herum, es sei denn, du willst für en Rest deines Studiums frickeln und Zeit mit dem Lösen unnötiger Probleme ferbraten.

Fazit: M1 ist deutlich gesser, aber für deine Anwendungsfälle leider total ungeeignet. Wenn du ne Win VM nutzen willst, MUSST du auf Intel setzen.

...zur Antwort
Ja

Python ist ideal für Prototyping oder als komfortabler Wrapper für Drittbibliotheken.

Wenn du aber wirklich selbst ML-Projekte umsetzen willst, die unvergleichbar schneller und effizienter als in Python laufen, dann ist C++ die Sprache der Wahl.

Fazit: Ein glasklares Ja! Wenn du auf dem Gebiet weiter kommen willst, kommst du zwangsweise um C++ gar nicht herum!

...zur Antwort

Bücher sind immer umfangreicher, vorausgesetzt du nimmst keinen 200-Seiten-Lappen.

Online-Kurse und Video-Tutorials sind für Einsteiger sicherlich angenehmer, aber vermitteln sicherlich nur einen Bruchteil eines guten Lehrbuches.

Deshalb musst du dich entscheiden: Relativ schnell Mittelmaß mit Online-Kursen, oder langfristig Profi mit Fachbüchern.

...zur Antwort

Das ist ganz allgemein ein Problem mit allen In-Ear-Kopfhörern.

Leute, die die zu viel nutzen, bekommen Pilzbefall im Ohr. Frag mal deinen Ohrenarzt.

Etwas unhygienischeres als In-Ear-Kopfhörer gibt es kaum.

...zur Antwort

Das ist Quatsch.

Man kann zwar grob den ungefähren Standort ermitteln, aber der liegt gerne mal einige hundert Kilometer daneben.

...zur Antwort
Ja

Mach ich seit 25 Jahren so, vor allem zur Pollensaison.

In DE wird man dabei seit jeher schief angeguckt. Ist mir aber egal.

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