Ein Honeypot ist ein System (oder eine zur Verfügung gestellte Funktion), welche/s potenzielle Angreifer anziehen soll, ohne aber, dass dabei Schaden für das Produktivsystem entsteht. Es kann der Filterung von Angriffen sowie der Verhaltensanalyse dienen.

Insofern ist deine Frage zu ungenau. Honeypots können in vielerlei Art für verschiedene Schnittstellen implementiert werden. Es könnte ein vollwertig eingerichteter Server sein, auf den Nutzer zugreifen können (z.B. ein SQL-Server hinter einem Webformular, welches SQL-Injections zulässt) oder ein Endpunkt, der einen anderen Endpunkt (der üblicherweise nicht öffentlich zugänglich sein sollte, z.B. die Login-Seite eines CMS, die Schnittstelle eines SSH-Servers) emuliert.

Praxis-Beispiel: Eine PHP-Webanwendung, die Nutzereingaben beobachtet

Suche dir einen Webhoster, der Webspace mit PHP-Unterstützung bietet. Auf den lädst du dein Formular hoch:

<?php
  session_start();

  if (!empty($_POST['send'])) {
    error_log(date("[Y-m-d H:i:s]") . " - IP: " . $_SERVER['REMOTE_ADDR'] . " - username: '" . $_POST['username'] . "' password: '" . $_POST['password'] . "'\n", 3, "honeypot_log.txt");
    $error = true;
  }
?>
<!doctype html>
<head>
<meta charset="utf-8">
<title>Login</title>
<!-- embed some css here ... -->
</head>
<body>
  <main>
    <h1>Login</h1>
    <form autocomplete="on" class="form" method="post">
      <label for="username">Username:</label>
      <input id="username" name="username" required>
      <label for="password">Password:</label>
      <input id="password" name="password" required type="password">
      <input name="email" type="hidden">
      <input name="send" type="submit">
      <p class="error" role="alert"><?= $error ? "Your login data is not correct. Please try again." : "" ?></p>
    </form>
  </main>
</body>

Funktional passiert hier nichts anderes, als dass die verschickten Formulardaten beobachtet werden. Bei Versand werden sie also in eine Datei geschrieben (in meinem Fall via Error Logging, doch wenn das vom Serverprovider nicht aktiviert sein sollte oder kein Zugriff auf die Logdateien besteht, könntest du die Eingaben natürlich auch auf andere Weise protokollieren - z.B. via MySQL / Dateifunktionen von PHP / ...) und ansonsten bekommt jeder Nutzer immer die Rückmeldung, dass die Eingabe falsch wäre.

Die Seite bzw. das Formular sollten möglichst professionell / ernst gemeint aussehen. Das heißt, dem Ganzen sollte noch ein richtiges Styling mit CSS zugeordnet werden, sicherlich könnte man noch an der Feldvalidation (via JavaScript) arbeiten, ein Captcha ergänzen, Impressum und Cookie Banner hinzufügen, u.ä.. Zudem müsste die Seite selbst unter einem bestimmten Thema (+ URL) stehen, was es für einen Angreifer überhaupt attraktiv macht, sich daran zu versuchen. Zum Beispiel aufgrund der Aussicht auf Kundendaten eines Shops.

Für den Betreiber eines echten Shops mit Hilfe eines bekannten Shopsystems (z.B. Magento, OpenCart, WooCommerce, ...) wäre es keine abwegige Idee, diese falsche Seite auf die URL der Standard-Login-Seite zu setzen.

...zur Antwort

Die Timer-Implementation sollte sich an der Umsetzung deiner GUI ausrichten. D.h. wenn du z.B. mit Swing arbeitest, wäre ein Swing Timer die passende Wahl.

Wenn du hingegen schon eine Game-Loop-Struktur vorliegen hast, könntest du eine eigene einfache Timerimplemetation integrieren. Dafür brauchst du lediglich die Startzeit und Dauer, bis der Timer abgelaufen sein soll. Bei jedem draw holst du dir die aktuelle Zeit und berechnest die Differenz zur Startzeit.

long startTime = System.currentTimeMillis();
int durationInSeconds = // ...;

// in game loop:
long now = System.currentTimeMillis();
int elapsed = (int)((now - startTime) / 1000);
int timeLeft = durationInSeconds - elapsed;

if (timeLeft <= 0) {
  timeLeft = 0;
  // timer stop ...
}

// update status ...
...zur Antwort

Da gibt es unterschiedliche Wege, je nachdem, wie tief du tatsächlich eintauchen möchtest.

Ein sehr einfacher Weg wäre die Arbeit mit einer No-Code-Engine wie z.B. BuildBox, Construct 3, Gamefroot oder GDevelop. Du würdest schnell, ohne viel Vorkenntnisse aufbauen zu müssen, zu Ergebnissen kommen. Allerdings bedeutet das auch, Einschränkungen hinnehmen zu müssen, da solche Engines nicht jegliches Feature unterstützen, geschweige denn flexibel erweiterbar/anpassbar sind.

Wenn du dich wirklich auch für die (textuelle) Programmierung interessierst, solltest du dich erst einmal dem Erlernen einer Programmiersprache (sowie dem Bilden von Lösungsalgorithmen) widmen, bevor du mit komplexen Spieleprojekten und dazugehörigen Tools durchstartest. Das ist nicht in ein paar Tagen getan.

Ein paar gute Optionen wären GDScript (in der Godot Engine) oder Lua. Ansonsten gibt es zu etlichen anderen Programmiersprachen (C/C++, C#, Java, JavaScript, Swift, usw.) verschiedene Frameworks oder Engines, die die Entwicklung von Spielen ermöglichen. Die haben jedoch meist eine etwas steilere Lernkurve.

Neben der Programmierung gibt es allerdings noch andere Aspekte in der Spieleentwicklung, mit denen du dich beschäftigen müsstest. Zum Beispiel dem Erstellen sowie der Komposition von Assets (Grafiken, Sounds, ...) oder dem Leveldesign.

...zur Antwort

Ich denke nicht, dass man hierauf eine pauschale Antwort geben kann. Zum einen ist nicht einmal geklärt, welche Entwicklerrollen sich für einen Vergleichspool so alles heranziehen lassen könnten und zum anderen sind Umschreibungen wie stressig oder anspruchsvoll zu einem gewissen Teil subjektive Empfindungen mit verschiedenen Ursachen und kontextuell bedingt (z.B. durch die Beziehung zu Kollegen oder die verfügbare Ausstattung für die Entwicklung). Aufgaben können beispielsweise durch Komplexität oder Zeitdruck anspruchsvoll werden, Stress kann unter anderem durch finanzielle Unsicherheit (schlechte Bezahlung/Angst vor Kündigung), hohe Arbeitslast oder stark geschulteter Verantwortung entstehen. Es ist deswegen nicht an einen Beruf gebunden.

Man kann allerdings durchaus Faktoren finden, die die Arbeit als ERP-Entwickler als anspruchsvoll oder stressig erscheinen lassen.

Zum Beispiel ist es nicht unüblich, dass ERP-Systeme über Jahrzehnte hinweg stetig zu einem Moloch heranwachsen. Es stecken oftmals viel Legacy-Code und zahlreiche Schnittstellen darin, die sich nicht unbedingt einmal mehr von einer Person überblicken lassen. Proprietäre Sprachen oder Frameworks sollte man an der Stelle ebenfalls einmal erwähnen, weshalb es schwieriger als bei bekannteren Systemen (die z.B. auf Java, C#, ... aufbauen) wird, Support (außerhalb des Unternehmens) bei Problemen zu finden.

Solche Systeme greifen in der Regel tief in geschäftskritische Prozesse ein. Ein solches System könnte für einen großen Händler oder eine Fabrik unter anderem die Lagerverwaltung übernehmen oder bei der Verarbeitung von Rechnungen/Bilanzen/... helfen. Das heißt, wenn bei der Arbeit mit so einem System ein Fehler geschieht, kann das weitreichende Konsequenzen (z.B. Produktionsausfälle, Liquiditätsrisiken) haben. Deswegen verlangt es meist aufwendige, langwierige Abläufe, um Änderungen auf das tatsächliche Produktivsystem zu bringen (was, das möchte ich hierbei erwähnen, deswegen nichts völlig Einzigartiges in der Softwarebranche ist).

Ein dritter Faktor (bestimmt findet man noch Weitere) könnte der erforderliche Kundensupport sein, der mit einem ERP-System oft einhergeht. Gerade bei Kunden, die ein geringeres technisches Verständnis des Systems haben, kann es ein höheres Anspruchsdenken geben.

...zur Antwort

Vorweg der Hinweis: Meine Antwort bietet keine rechtsichere Beratung. Wenn du auf Nummer sicher gehen möchtest, solltest du dich an einen Anwalt wenden, der DSVGO zu seinem Kompetenzfeld zählt.

Was beinhaltet ein Cookiebanner alles (...)

Der Nutzer muss darüber informiert werden, welche Cookies deine Seite einsetzt. Dazu gehört eine Einordnung, welchem Zweck sie dienen und wie sie sich kategorisieren lassen (ist Cookie X ein technisch notwendiger Cookie oder dient der dem Marketing?). Bei Letzterem unterscheidet man in der Regel zwischen

  • technisch notwendigen Cookies (z.B. Session-Cookie)
  • funktionalen (z.B. optionale Features)
  • Analyse-/Performance-Cookies (z.B. von Trackingdienstleistern wie Google Analytics)
  • Marketing-Cookies

Für alle technisch nicht notwendigen Cookies braucht es eine Möglichkeit, deren Verwendung granular (mindestens nach Kategorie) aktiv zustimmen oder ablehnen zu können. Diese Entscheidung muss in irgendeiner Form dokumentiert werden (oft bspw. in Form eines Cookies, der beim Nutzer gespeichert wird, du könntest diese Information aber ebenso in einer Datenbank ablegen).

Zu guter Letzt sollte der Nutzer auf die Datenschutzbestimmungen hingewiesen werden. Da kannst du auch einen Link angeben, der auf eine extra Seite verweist, in dem alle Datenschutzbestimmungen aufgeführt werden.

(...) und muss der so gestaltet sein, dass er vor der Webseite aufploppt?

Der Hinweis muss beim Aufruf deiner Webseite gut sichtbar und bedienbar sein (berücksichtige daher verschiedene Endgeräte). So lange ein Nutzer noch keine aktive Entscheidung getroffen hat, dürfen noch keine zustimmungsbedürftigen Cookies angelegt werden.

Ob du nun einen Cookie Banner nutzt oder irgendeine andere Darstellungsform, ist dir überlassen. Ich würde dir empfehlen, ein Consent Manager Tool zu nutzen (Consent Manager, OneTrust, Usercentrics, o.a. ...), was die Implementation deutlich vereinfacht.

...zur Antwort
(Coding) Wie füge ich in Ren'py einen Text zu meiner Gallerie/Glossar hinzu?

Hallo zusammen,

bin relativ neu in der Coding-Welt und habe wie im Titel bereits gesagt, Probleme dabei einen Text zu meinem Bild hinzuzufügen.
Der Text sollte auftauchen, wenn ich auf das Bild klicke.

Das ist mein gallery_setup Code:

init python:

    class GalleryItem:

        def __init__(self, name, images, locked="locked"):

            self.name = name

            self.images = images

            self.locked = locked

            self.refresh_lock()

        def refresh_lock(self):

            self.num_unlocked = 0

            lockme = False

            for img in self.images:

                if not renpy.seen_image(img):

                    lockme = True

                else:

                    self.num_unlocked += 1

            self.is_locked = lockme

    gallery_items = []

    gallery_items.append(GalleryItem("Stacy - What if", ["img1"] ))

#gallery background

image gray = "#777"

#gallery images

image img1 = ("images/karten/tanz.png")
_____________________________________________________________________

Da ich wie gesagt, noch kaum Erfahrung beim Coding habe, hoffe ich, dass dies das richtige Script ist. Ich habe noch ein "Gallery" Script, dass ich nicht verstehe, und bei dem ich aber auch nicht glaube, dass ich dort was im Code ändern muss. Vielleicht im "Screen"Script dachte ich mir noch, wenn ja betroffene Stelle wäre das:

        textbutton _("Load") action ShowMenu("load")

        textbutton _("Gallery") action ShowMenu("gallery_B")

        textbutton _("Preferences") action ShowMenu("preferences")

_________________________________________________________

tut mir leid, falls das Mau ist, aber ich weiß nicht, was sonst noch nützlich sein könnte, abgesehen von den angehängten Bildern noch.

vielen dank im voraus

...zum Beitrag

Zuallererst müsstest du dein Model GalleryItem um ein Attribut erweitern, welches den Text aufnimmt.

class GalleryItem:
  def __init__(self, name, images, locked="locked", text=""):
    "" ... ""
    self.text = text

Ich gehe einfach einmal davon aus, dass nicht jedes Bild einen Text haben muss, deswegen habe ich dem Parameter einen Standardwert zugeordnet.

Wenn du dein Bild beim Anlegen nun einen Text zuordnen möchtest, dann sieht das so aus:

gallery_items.append(GalleryItem("Stacy - What if", ["img1"], text="Some text"))

Für deinen Screen müsstest du das Bild mit Hilfe eines imagebutton darstellen und für den Text kannst du eine text-Komponente nutzen:

"" ... ""

current_clicked_image = None

for gallery_item in gallery_items:
  "" ... ""
  imagebutton:
    idle gallery_item.images[0]
    action SetScreenVariable("current_clicked_image", gallery_item)

  if current_clicked_image == gallery_item:
    text gallery_item.text
    background "#00d"
    color "#fff"
    size 20
    xalign 0.5
    yalign 1.0

Mehr Details, wie du die Komponenten visuell für dich anpassen kannst, kannst du in der Dokumentation nachlesen. Ich habe hier nur sporadisch ein paar Eigenschaften gesetzt.

  • Text
  • Style Properties

Bei Klick auf das Bild wird eine Variable gesetzt, sodass sie auf das angeklickte Bild verweist. Die Abfrage im Screen-Skript prüft beim Rendern der Gallerie, ob das Bild, welches gerade gerendert wird, dem angeklickten Bild (also dem Bild, auf welches die Variable referenziert) entspricht. Wenn ja, wird der Text auch gerendert, andernfalls nicht.

Sollte dieser Zustand auch dann noch bestehen bleiben, wenn du den Screen einmal verlässt und erneut öffnest, müsstest du die Ich-wurde-angeklickt-Information anders speichern, bspw. in einer globalen Variable.

...zur Antwort

Das Skript, was du in deiner Fragestellung angefügt hast, läuft durch den Workspace und klont sich zweimal selbst. Die geklonten Skripte führen dieselbe Aktion wieder aus und führen somit zu einer exponentiellen Vermehrung. Mit einem Tower-Defense-Spiel hat das Ganze gar nichts zutun.

Beende Roblox Studio und lösche dein Projekt über den Dateiexplorer deines Betriebssystems. Solltest du die Dateien in der Roblox Cloud sichern, müsstest du wohl mittels des Roblox Studio Game Explorer aufräumen.

Im Anschluss kannst du ein neues Projekt erstellen. Dein Klonskript solltest du künftig aus deinen Projekten heraushalten.

...zur Antwort
Warum versucht meine Flutter-Webanwendung, auf den Pfad assets/assets/data/ zuzugreifen?

Guten Tag,

ich verzweifel an meinem Problem in Flutter.

Irgendwie denkt das System, dass es die Dateien von assets/assets/data abrufen will, da findest es aber logischerweise nichts. Ich habe auch schon assets/assets/data erstellt. Das klappt aber trotzdem nicht. Ich schaue die Daten von Kaufda und lasse sie dann durch einen Prompt gehen.

Ich würde mich über jegliche Hilfe sehr freuen.

PS C:\Users\Roman\Documents\grocify> flutter run

┌─────────────────────────────────────────────────────────┐
│ A new version of Flutter is available!         │
│                            │
│ To update to the latest version, run "flutter upgrade". │
└─────────────────────────────────────────────────────────┘
Connected devices:
Windows (desktop) • windows • windows-x64  • Microsoft Windows [Version 10.0.22631.5335]
Chrome (web)   • chrome • web-javascript • Google Chrome 137.0.7151.69
Edge (web)    • edge  • web-javascript • Microsoft Edge 137.0.3296.68
[1]: Windows (windows)
[2]: Chrome (chrome)
[3]: Edge (edge)
Please choose one (or "q" to quit): 3
Launching lib\main.dart on Edge in debug mode...
Waiting for connection from debug service on Edge...       33,7s
This app is linked to the debug service: ws://127.0.0.1:51604/0RlY6LXJOKQ=/ws
Debug service listening on ws://127.0.0.1:51604/0RlY6LXJOKQ=/ws
 To hot restart changes while running, press "r" or "R".
For a more detailed help message, press "h". To quit, press "q".
A Dart VM Service on Edge is available at: http://127.0.0.1:51604/0RlY6LXJOKQ=
🔑 OPENAI API Key geladen: true
The Flutter DevTools debugger and profiler on Edge is available at: http://127.0.0.1:9101?uri=http://127.0.0.1:51604/0RlY6LXJOKQ=
ERROR - 2025-06-22 14:01:37.181584
GET /assets/assets/data/file_index.json
Error thrown by handler.
Bad state: No element
dart:isolate _RawReceivePort._handleMessage
Error while trying to load an asset: Flutter Web engine failed to fetch "assets/assets/data/file_index.json". HTTP request succeeded, but the server
responded with HTTP status 500.
❌ Fehler beim Laden der Rezepte: Unable to load asset: "assets/data/file_index.json".
The asset does not exist or has empty data.
❌ Fehler beim Laden der Rezepte: Unable to load asset: "assets/data/file_index.json".
The asset does not exist or has empty data.
Application finished.
PS C:\Users\Roman\Documents\grocify> name: grocify
description: "Smartes Einkaufs- & Rezept-Tool"
publish_to: 'none'
version: 1.0.0+1
environment:
 sdk: ">=3.7.0 <4.0.0"
dependencies:
 flutter_dotenv: ^5.0.2
 flutter:
  sdk: flutter
  
 cupertino_icons: ^1.0.8
 google_fonts: ^6.1.0
  
dev_dependencies:
 flutter_test:
  sdk: flutter
 flutter_lints: ^3.0.1
flutter:
 uses-material-design: true
 assets:
  - assets/data/
  - assets/images/
  - assets/images/food.png.png
  - .env
...zum Beitrag

Prüfe deinen Dart-Code, ob der Pfad irgendwo eingebaut ist (und ob die JSON-Datei auch im richtigen Dateipfad liegt). Ansonsten wäre es gut, das Projekt einmal sauber neu zu starten:

flutter clean
flutter pub get
flutter run
...zur Antwort

Öffne die Eingabeaufforderung/das Terminal deines OS, wechsel mit cd in das Verzeichnis deiner .java-Datei und starte dann die Kompilierung:

cd "full\path\to\your\project\directory"
javac YourJavaFile.java

Wenn die Kompilierung erfolgreich war, wird eine .class-Datei erstellt. War sie nicht erfolgreich, wirst du in der Konsole eine Fehlermeldung erhalten, die dir mehr verrät.

Wenn der Prozess laut Konsole erfolgreich war und dennoch keine .class-Datei existiert, würde ich einmal prüfen, ob du irgendein Antivirenprogramm hast, welches die generierte Datei direkt wieder löscht.

Via Konsole kannst du dir ebenso alle Dateien anzeigen lassen, die im Verzeichnis liegen. Für Windows kannst du den Befehl dir /a nutzen, für Unix-Systeme gewöhnlicherweise ls -a.

...zur Antwort

Dein Gedanke ist schon einmal gut, die Regel auch dort zu schreiben, wo ähnliche Regeln für die Navigation stehen, immerhin findet man sich so immer schnell zurecht.

Die Reihenfolge der Selektoren ist nur entscheidend, wenn sie gleichwertig sind und sich deshalb gegenseitig überschreiben können. Dann wird die letzte Regel verwendet. Lies dazu hier, ebenso unter Spezifität. Falls es stärker gewichtete Selektoren gibt, musst du deinen Selektor womöglich nochmal modifizieren.

Im Webinspektor deines Browsers kannst du ebenso nachschauen, welche Regeln für welches Element gelten und sich gegenseitig überschreiben.

...zur Antwort
C# Bilder zu sehr großen PNGs zusammenfügen?

Ich habe Tiles von Karten und möchte diese zu einem einzelnen Bild zusammenfügen. Jedes Tile hat eine Auflösung von 256 x 256 Pixeln. Es soll ein PNG sein. Dazu habe ich Bitmaps genutzt, diese stoßen aber nun an ihre Grenzen. Bis zu einer gewissen Auflösung funktioniert das einwandfrei. Das ist der Code:

Bitmap merged = new Bitmap(width, height);

using (Graphics graphics = Graphics.FromImage(merged))
{
    for (int x = 0; x < this.Bounds[1] - this.Bounds[0] + 1; x++)
    {
        for (int y = 0; y < this.Bounds[3] - this.Bounds[2] + 1; y++)
        {
            Image image = Image.FromFile(string.Format("{0}{1}-{2}.png", tilePath, x, y));

            graphics.DrawImage(image, x * 256, y * 256);

            image.Dispose();
        }
    }

    merged.Save(string.Format("{0}\\map.png-merging", outputPath), System.Drawing.Imaging.ImageFormat.Png);
}

File.Move(string.Format("{0}\\map.png-merging", outputPath), string.Format("{0}\\map.png", outputPath));

Es geht bis zur Auflösung 10, bei der es 58 x 56 Tiles, also 14.848 x 14.336 Pixel gibt.

Danach sind es 97 x 110 Tiles, also 24.832 x 28.160 Pixel. Hier kommt es zu einem Fehler. Bei

Bitmap merged = new Bitmap(width, height);

gibt es eine ArgumentException. Ich habe gelesen, dass das Limit für Bitmaps gibt, das ich hier anscheinend überschreibe.

Wie kann ich die Tiles am besten zu einer sehr großen PNG zusammenfügen, außer damit, die PNG mit einem FileStream Byte für Byte selbst zu erstellen?

...zum Beitrag

Statt mit der Standard API von C# zu arbeiten, würde ich an deiner Stelle auf eine externe Bibliothek zurückgreifen, die besser mit großen Bildern umgehen kann: ImageSharp wäre da eine Option.

Dazu ein sehr einfaches Beispiel:

using (var image = new Image<Rgba32>(finalWidth, finalHeight))
{
  var tileFile = // get some image file ...

  using (var tile = Image.Load<Rgba32>(tileFile))
  {
    image.Mutate(context => context.DrawImage(tile, new Point(/* target coordinates ... */), 1f));
  }
}

image.Save("target/filepath/for/my/new/image.png");
...zur Antwort
Ist so ein Quereinstieg realistisch – oder komplett utopisch?

Ja, er ist definitiv realistisch. Es ist auch nicht völlig ungewöhnlich, dass Leute aus Bereichen wie Grafikdesign, Marketing und Contentmanagement im Webdesign eine neue Perspektive suchen.

Ich gehe einmal davon aus, dass du in deiner derzeitigen Rolle gelernt hast, wie man Inhalte/Ziele gut bzw. passend kommunizieren kann, welche Inhalte generell für das Medium Web am besten geeignet sind und wie man konsistente Strategien entwickelt. Das sind soweit schon Kompetenzen, dir dir (neben deinem generellen Interesse) nicht unnütz sein dürften.

Wie schwer ist es einen Job zu finden?

Das hängt etwas davon ab, inwiefern du dich positionieren möchtest. Als Freelancerin ist es schwerer und wenn du dich auf etwas speziell fokussieren möchtest (z.B. Webentwicklung statt nur Webdesign), wird es kompetitiver. Eine Stelle in einer Agentur / einem Startup zu finden, fällt sicherlich leichter. Vor allem, wenn du in Großstädten/Ballungsräumen (z.B. Berlin, Frankfurt/Main, Hamburg, München, Stuttgart) suchst.

Ein zweiter Faktor ist natürlich dein eigenes Portfolio. Du solltest ein technisches Grundverständnis zum Medium Web vorzeigen können, UX-/UI-Designkonzepte und Grafikbearbeitung bezogen auf dieses Medium dürfen kein Neuland sein. Kenntnisse in HTML und CSS sind von Vorteil.

Was würdet ihr raten, wie ich anfangen sollte?

Du solltest dich definitiv mit den Grundlagen / notwendigen Kernkompetenzen auseinandersetzen:

  • Grafikdesign/UI-Design (Gestaltungsprinzipien, Layout und Kompositon, Farbtheorie, Typographie, Bildsprache, Interaktionsdesign, Kreativitätstechniken)
  • Informationsarchitektur und -design
  • UX-Design (HCI, Human-Centered Design, Usability-Tests, User Research, Wireframing/Prototyping, Design Thinking + Iteration, Accessibility)
  • Inwiefern Psychologie im Design eine Rolle spielt, um Nutzerverhalten besser voraussehen und steuern zu können

Parallel dazu kannst du dich schon mit Figma auseinandersetzen. Wenn es um das Entwerfen grafischer Oberflächen geht, ist es das derzeit wohl meistgenutzte Tool. Alternative Software (bspw. Adobe XD, Canva, Framer, Penpot, Lunacy, Sketch, UXPin, ...) würde ich eher als Zusatz sehen, den man für den Anfang vernachlässigen kann.

Versuche dich mit dem von dir neu angelesenen Wissen an eigenen Projekten, bei denen du entweder neue Designs entwirfst oder alte Designs umgestaltest (z.B. Flyer, Poster, Logos, Webseiten). Dazu kannst du dann ja auch anfangen, dich mit Grafikbearbeitung (Arbeit mit Adobe-Produkten wie Photoshop, Illustrator) zu beschäftigen. Bei deinen Übungen wäre es gut, die einzelnen Schritte die du wählst, zu dokumentieren und zu bewerten: Wieso entscheidest du dich für dieses Raster / diese Schriftart / diese Farbe / ...? Du musst ein Verständnis zu dem aufbauen, was du tust.

Hole dir des Weiteren möglichst ehrliches, im besten Falle professionelles Feedback. Reddit (/r/design_critiques/) wäre eine mögliche Anlaufstelle, Tools wie ChatGPT oder Uizard bieten visuelle Analysen und Bewertungen an. Vielleicht findest du ebenso irgendwelche Gruppen auf Discord, LinkedIn oder Slack, die ihre ehrliche Meinung zu deinen Entwürfen teilen. Inwiefern es hier auf Gutefrage eine Subcommunity dazu gibt, weiß ich nicht. Probiere es einfach aus. Auf UX StackExchange kannst du konkrete Fragen zu UX Design stellen.

Die konkrete Webentwicklung mit HTML und CSS würde ich hintenanschieben. Lese dir die ersten Grundlagen an und richte dir eine Entwicklungsumgebung auf deinem Computer ein (z.B. Visual Studio Code / WebStorm / Nova). Du könntest einzelne Komponenten aus existierenden Webseiten herausgreifen, die du eins-zu-eins nachbaust (oder eben eine ganze Seite). Auch das Modifizieren fremder HTML-Templates (via Suchmaschine findet man schnell welche) oder die Umsetzung deiner zuvor erstellten Figma-Designs wäre denkbar. Plane am besten jedesmal erst dein Vorgehen: Welche Struktur brauchst du, welche Elemente eignen sich?

Feedback dazu kannst du beispielsweise auf Gutefrage, im HTML-Forum, im SelfHTML-Forum oder sicherlich in irgendwelchen Discord-Gruppen einholen.

Für das Web würden sich im Übrigen noch weitere interessante Themen auftun:

  • Verständnis und Handhabung von webfokussierten Medienformaten wie Videos, SVGs, Font-Types
  • Adaptive/Responsive Webdesign
  • Designsprachen (Ant, Material Design, Flat Remix)
  • (Nochmals konkret:) Barrierefreiheit im Web
  • Arbeit mit einem einfachen CMS (Webflow, WordPress)
  • Arbeit mit einem CSS-Framework (z.B. Bootstrap, Tailwind, UIKit)
  • Ein erster Einstieg in JavaScript und DOM-Manipulation

Die zwei letztgenannten Punkte sind schon sehr technisch. Ob dich das noch interessiert, müsstest du selbst entscheiden. Sie geben einen Einblick in die Webentwicklung, gehören allerdings (wie HTML und CSS) nicht mehr zu reinem Webdesign.

Für all das, was ich bisher erwähnt habe, gibt es zahlreiche Literatur:

  • Don't Make Me Think von Steve Krug (UX)
  • Grid Systems in Graphic Design von Josef Müller-Brockmann (Grafikdesign: Layouts)
  • The Non-Designer's Design Book von Robin Williams (Grafikdesign)
  • Laws of UX von Jon Yoblanski (Psychologie im Design)
  • About Face: The Essentials of Interaction Design von Alan Cooper, Robert Reimann, David Cronin (Interaktionsdesign)
  • The Design of Everyday Things von Don Norman (UX)
  • Bottlenecks: Aligning UX Design with User Psychology von David C. Evans
  • Thinking with Type von Ellen Lupton (Typographie)
  • 100 Things Every Designer Needs to Know About People von Susan Weinschenk

Und zu einigen Themen findest du auch online Material:

  • Adobe Learn (Lernkurse zu Adobe-Produkten)
  • CSS-Tricks (Blog über Webentwicklung, z.B. HTML, CSS, SVG)
  • Domestika (Lernkurse zu Design)
  • Figmas Resource Library (bietet mehrere Artikel zu einigen der oben genannten Stichworte für UX/Design)
  • FluxAcademy auf YouTube (Figma, z.T. Webdesignthemen)
  • ForeverDansky auf YouTube (Adobe-Tutorials)
  • Interaction Design Foundation (Lernkurse zu Design)
  • Laws of UX (UX)
  • LinkedIn Learning (Lernkurse)
  • MDN (Referenz und Tutorials zu Webtechnologien, wie HTML, CSS, JavaScript)
  • MediaEvent (Tutorials zu HTML, CSS, JavaScript)
  • Mizko auf YouTube (Figma)
  • PSD-Tutorials (Adobe-Tutorials)
  • Psychology for Designers
  • SelfHTML (Tutorials zu HTML, CSS, JavaScript)
  • Skillshare (Online-Kurse)
  • Smashing Magazine (Blogartikel rund um Webdesign und -entwicklung)
  • Udemy (Lernkurse)
  • UXPlanet (Blogartikel)
...zur Antwort
Warum kann man mit C++ keine GUI erstellen (...)?

Diese Aussage ist in der Form falsch. Es gibt so einige Toolkits/Bibliotheken/Frameworks, mit denen man mit C++ grafische Oberflächen zeichnen/erstellen kann.

Warum kann man mit C++ scheinbar keine grafischen Benutzeroberflächen (GUIs) direkt erstellen? (...) warum gibt es in C++ standardmäßig keine GUI-Funktionalität?

Bei C++ liegt der Fokus auf der Entwicklung komplexer, systemnaher und leistungskritischer Software, hat aber auch das Ziel, in dem Sinne portabel zu sein, sodass du den Code für verschiedene Systeme kompilieren und somit lauffähig machen kannst. Wenn dir C++ Mittel zur Abstraktion in die Hand legt, dann sollen sie zu keinen Leistungseinbußen oder Overhead führen.

Eine direkte Einbindung eines UI-Toolkits steht dem entgegen, denn GUI-Komponenten sind in ihrem Aussehen und Verhalten eher betriebsystemspezifisch. Wenn du eine GUI benötigst, solltst du dir die entsprechenden Tools selbst zusammenstellen. Bei C++ möchte man dir nicht die Entscheidung abnehmen, welches Werkzeug sich für deinen Anwendungsfall am besten eignet.

In den meisten Tutorials geht es nur um die Konsole.

Du beziehst dich sicherlich konkret auf Einsteigertutorials, deren Fokus es ist, dir die Sprache selbst näher zu bringen. GUI-Entwicklung ist da natürlich kein großes Thema. Es gehört bereits zur fortgeschrittenen Programmierung.

Wie machen das dann Microsoft, Apple oder andere Softwarefirmen? (...) Welche GUI-Frameworks kommen bei professioneller Software zum Einsatz?

Sie nutzen entweder bestehende Toolkits oder haben eigene Tools für sich entwickelt. Bei Microsoft könnte man an der Stelle die Windows API, WinUI, Windows Forms und WPF (in Kombination mit C++/CLI) oder MFC benennen. Apple hat seine Cocoa API und diverse Toolkits wie AppKit, UIKit, SwiftUI.

Generell kann man häufig auf Qt treffen, manchmal auch auf Dear ImGui, FLTK, wxWidgets oder JUCE (Audiosoftware). Proprietäre Lösungen lassen sich an dieser Stelle natürlich nicht konkret benennen.

...zur Antwort

Skaliere das Bild auf der y-Achse mit dem Faktor -1. Im Anschluss musst du das Bild noch einmal auf der x-Achse verschieben (aktuelle Position - Bildbreite), damit es sich wieder an der ursprünglichen Position befindet.

...zur Antwort

Je Programmiersprache gibt es unterschiedliche Tools, um die Sprache in ein Format umzuwandeln, mit dem ein anderes Programm / der Computer für eine Evaluation umgehen kann. Wenn du also Programmieren möchtest, brauchst du zum einen mindestens einen Texteditor, in dem du deinen Code schreiben kannst und zum anderen das angesprochene, passende Übersetzungsprogramm.

Zudem gibt es schon Programme, die dir eine gut ausgestattete Entwicklungsumgebung bieten (Stichwort: IDE). Das heißt, sie beinhalten Tools, mit denen der Code zum Beispiel direkt auf Fehler geprüft wird oder Formatierungsoptionen, die den Code einfacher lesbar gestalten. Wenn du dich für eine Programmiersprache entschieden hast, würde ich dir empfehlen, auch ein solches, passendes Programm herauszusuchen.

Wenn du bereits eine Vorstellung hast, welche Programmiersprache du dir genauer ansehen möchtest, kann man dir genauere Tipps geben.

Programmieren kannst du jedenfalls auch zu Hause / im Selbststudium lernen. Ob das grundsätzlich etwas für dich ist bzw. ob du dich in einem Kurs besser aufgehoben fühlen würdest, kann ich allerdings nicht sagen. Das ist eine individuelle Ansicht.

Solltest du noch nach einem einfachen/guten Einstiegspunkt suchen, würde ich dir Processing empfehlen. Die gleichnamige IDE beinhaltet alles, was du brauchst, um direkt starten zu können.

...zur Antwort

Wenn es um feste Literatur zu C# geht, kann ich dir das Rheinwerk-Exemplar von Andreas Kühnel empfehlen. Einen etwas lockeren/spielerischeren Ansatz verfolgt Schrödinger programmiert C# von Bernhard Wurm.

Allerdings würde ich dir definitiv davon abraten, mit Spieleprogrammierung/Unity einsteigen zu wollen. Zum einen verschiebt sich so ein Teil des Fokus auf die Bedienung von Unity und zum anderen baut man in Unity darauf, dass dir Grundkonzepte zu C# bereits bekannt sind. Das gilt m.E. ebenso für Alternativen wie MonoGame oder FlatRedBall.

Halte es einfach. Fange deine Übungen stattdessen erst einmal in Konsolenprojekten an. Mit ein paar Kenntnissen für Basisbausteine kann man auch in diesem Kontext beginnen, kleine Spiele (z.B. Hangman, Snake, Space Invaders, ein Text-Adventure, ein 2D-Auto-Hindernis-Ausweich-Endlessrunner, Sudoku, u.ä.) zu entwickeln.

...zur Antwort
1. Wie sollte man als kompletter Anfänger am besten lernen? (Online-Kurse, Bücher, YouTube, eigene Projekte?)

Für den Anfang brauchst du eine gute Quelle und eine Entwicklungsumgebung, in der du experimentieren/testen/üben kannst. Wie die eingerichtet werden kann, ist abhängig von der gewählten Programmiersprache.

Welches Medium (Video/Buch/Lernkurs) dir bezüglich des Lernens liegt, weißt du vielleicht schon selber oder musst du ansonsten einfach einmal ausprobieren. Ich würde dir an der Stelle erst einmal den Rat geben, keine Crashkurse zu wählen, die mit Versprechungen à la Programmieren lernen in X Minuten/Stunden/Tagen/... werben. Die sind in der Regel zu oberflächlich und es geht dir ja nun auch nicht darum, durch irgendwelche Lernstoffe zu hetzen.

  • Bezüglich fester Literatur sind Verlage wie Apress, Manning, Packt, O'Reilly, Rheinwerk oder Springer Vieweg oft gute Anlaufstellen.
  • Bezüglich Videos wäre mein Ratschlag, eher auf Plattformen wie PluralSight oder Udemy zu schauen. Bei YouTube-Videos ist das Risiko größer, auf nicht so gute Inhalte zu stoßen.
  • Für Kurse schau beispielsweise auf Codecademy oder Hyperskill.

Zu vielen Programmiersprachen gibt es zudem eine Onlinepräsenz. Wenn du die nicht direkt findest, schau in den zur Sprache zugehörigen Wikipedia-Artikel, dort gibt es in der Regel eine Verlinkung. Auf solchen Webseiten findest du meist eine Referenz, Guides, News und manchmal ebenso Literatur-/Tutorialempfehlungen.

Hinsichtlich des Lernprozesses würde ich dir Folgendes raten:

  • Nimm dir bewusst Zeit für die einzelnen Themen, auf die du so stößt. Es ist zu erwarten, dass du Programmieren nicht innerhalb von nur ein paar Tagen oder Wochen lernst und es ist ungewöhnlich, dass einiges vielleicht ein paar Mal wiederholt werden muss, bevor du es richtig verstehst.
  • Zwischen Lernphasen sollten nicht zu große Abstände liegen. Einmal alle zwei Wochen etwas tun wäre so ein extremes Negativbeispiel.
  • Probiere das, was du dir anliest, direkt in deiner Entwicklungsumgebung aus.
  • Beginne mit kleinen Übungen. Ganz am Anfang wird es natürlich noch schwierig sein, tatsächlich sinnvolle Anwendungen zu entwickeln und es ist mehr ein Herumexperimentieren, doch mit der Zeit kannst du mehr und mehr Gelerntes miteinander kombinieren. Übungsaufgaben findest du unter anderem auf Edabit, Exercism oder w3resource.
2. Was sind gute Einsteigerprojekte, die man schaffen kann, auch ohne viel Vorwissen?

Es gibt so einige Minispiele, an die du dich heranwagen könntest: Pong, Hangman, Snake, Breakout, Space Invaders, Conway's Game Of Life (Simulation). Voraussetzung für sie wären Kenntnisse zu Variablen, Operatoren, Arrays und Kontrollstrukturen.

Nimm dir dazu eine einfache Bibliothek, die dir Zeichenfunktionen stellt. Es gibt für die von dir genannten Sprachen einige Processing-Ableger:

  • C++: p8g
  • JavaScript: p5.js
  • Python: Processing.py
3. Wie bleibt ihr motiviert, wenn man etwas nicht versteht oder es schwer wird?
  • Mach eine Pause
  • Rekapituliere das Problem schriftlich / skizzenhaft, um zu ermitteln, was du verstanden hast und wo der Knoten sitzt
  • Versuche das Problem zu zerlegen
  • Schau, ob du eine visuelle Darstellung finden kannst
  • Suche dir noch andere Quellen, die das Thema andersartig erklären
  • Suche dir konkrete Beispiele (oder Übungen, die du selbst praktizieren kannst)
4. Gibt es gute deutschsprachige oder englische Ressourcen, die ihr mir empfehlen könnt?

Lege dich erst einmal auf eine Programmiersprache fest.

Wenn du noch keine feste Präferenz hast, würde ich dir Processing empfehlen.

...zur Antwort

Sobald das Prinzip dahinter verstanden wurde, ist das fast nur noch Tipparbeit (und natürlich musst du dir ein Bild ausdenken, aber da kann man ja ganz einfache Sachen wie ein Haus, ein Auto, ein Tannenbaum, o.ä. wählen).

  • Die erste Zeile gibt das PPM-Format an. Das kannst du immer bei P3 belassen.
  • Die zweite Zeile gibt die Rasterdimensionen an (das Bild selbst wird über ein rechteckiges Gitter/Raster beschrieben, jede Zelle hat einen Farbton). In deinem obigen Fall gibt es fünf Spalten und acht Zeilen. Je Zelle muss später ein Farbwert angegeben werden.
  • Die dritte Zeile gibt die Anzahl an Abstufungen je Farbton an.

Danach folgt die Umsetzung des eigentlichen Bilds. Jede Zelle besteht aus drei Werten: Einem für Rot, einem für Grün, einem für Blau. Jeder Wert muss zwischen 0 und 255 (Grenzen inklusiv) liegen (siehe oben). Umso höher der Wert, umso kräftiger die Farbe. Das heißt, eine Zelle mit diesen Werten:

255 0 0

wäre rot, denn die Farbanteile für Grün und Blau liegen bei 0, für Rot hingegen beim Maximalwert. Selbst bei diesen Werten:

93 0 0

hättest du noch eine rote Zelle, allerdings würde es sich bereits um einen ziemlich dunklen Rotton handeln.

Nun kannst du natürlich ebenso Mischfarben erstellen, indem du die Farbanteile für Grün/Blau änderst. Aus der Farbenlehre ist bekannt, dass Rot und Grün zusammen Gelb ergeben, demzufolge bekommst du mit

255 255 0

einen klaren Gelbton. Senkt man diese Werte wieder deutlich, z.B. auf

95 95 0

erhältst du einen Ockerton.

Es gibt heutzutage etliche Hilfstools, mit denen man sich solche RGB-Werte auch einfacher zusammenstellen kann (Beispiel), in Software zur Grafikbearbeitung gehört soetwas ebenfalls zum Standardrepertoire. Für deine Aufgabe würde ich dir allerdings empfehlen, zumindest für ein paar Werte selbst herumzuprobieren, um es nochmal praktisch besser zu verstehen.

Für die Umsetzung würde ich dir empfehlen, die Werte in einem einfachen Texteditor (nicht WordPad/Word/o.ä.) einzutragen. Um das Ergebnis zu testen, muss die Dateiendung in .ppm umbenannt werden. Online gibt es zum Testen einige Viewer wie den des Rhodes College.

...zur Antwort

Für einen Wald- und Wiesenwebdesigner würde es wohl ausreichen.

Auf professioneller Ebene würde ich von einem Webdesigner allerdings erwarten, dass er zunächst einmal die Kompetenzen vorweisen kann, die generell mit dem Bereich Design einhergehen (nur eben mit größerem Fokus auf das Web). Das heißt:

  • du weißt mit Farben, Schriften und Formen umzugehen, um gewünschte Stimmungen (und generell ästhetische Oberflächen) zu erzeugen.
  • du kennst dich mit der Bearbeitung von Mediendaten (Bilder, Videos, ...) aus, kannst entsprechende Hilfssoftware bedienen.
  • du weißt, wie du Layouts/Dummys in einem Designtool wie Figma, Adobe XD, o.ä. erstellen kannst.
  • du kannst Zielgruppenanalysen (Personas) durchführen.
  • du kannst konsistente Nutzeroberflächen konzipieren, die benutzerfreundlich und barrierefrei sind.
  • du weißt, wie du Nutzer führen und Inhalte dementsprechend sinnvoll strukturieren kannst.

Für eine zusätzliche technische Ausrichtung (Webentwicklung) solltest du:

  • dich mit HTML, CSS, SVG und zumindest ein wenig mit JavaScript auskennen.
  • Maßnahmen kennen, um eine Webseite für Suchmaschinen sinnvoll zu optimieren.
  • Basiswissen mitbringen, wie Browser funktionieren (Cookies, Sessions, Request-Methoden, TLS/Zertifikate, u.ä.).

Das sind soweit Aspekte, die nicht unbedingt mit dem Erlernen der Bedienung von WordPress einhergehen. Soziale bzw. organisatorische Kompetenzen sind hierbei auch noch nicht inkludiert.

Wenn du mit WordPress beruflich aktiv werden möchtest, würde ich dir empfehlen, ebenso PHP in den Lernplan aufzunehmen und dich zumindest grundlegend mit rechtlichen Themen (DSVGO, BFSG, Impressumspflicht, u.ä.) sowie Sicherheitsaspekten (Absicherung gegen Bruteforce, Injections, u.ä.) vertraut zu machen. Außerdem wäre es förderlich, sich mit dem Plugin-Ökosystem zu beschäftigen (welche Plugins gibt es so, welche sind besonders nützlich).

...zur Antwort
Ich weiß nicht, wie ich mich richtig darauf vorbereiten kann.

Nimm dir zunächst die Aufgaben vor, die du bereits im Unterricht gemacht hast. Vielleicht kommst du auch irgendwie an Aufgabenblätter alter Prüfungen.

Ansonsten fallen mir speziell zu Mathematikproblemen folgende Übungen ein:

  • Das Programm soll alle Ganzzahlen zwischen 0 und einer Zahl X ausgeben. Ein zuvor definierte Zahl Y gibt an, welche Zahlen ausgelassen werden sollen. Ist Y ungerade, werden alle geraden Zahlen ausgelassen, ist sie gerade, dann alle ungeraden.
  • Ermittlung der kleinsten und größten Zahl einer beliebigen Menge.
  • Ermitteln aller Primzahlen zwischen 0-100.
  • Berechnung des Durchschnitts einer beliebigen Menge.
  • Enferne aus einer gegebenen Menge alle Elemente, die eine Differenz von 1 zu ihrem Nachfolger haben. Die Menge soll anschließend nur noch so lang sein, wie es Elemente gibt (Bsp.: [ 1, 2, 4, 6, 7, 8 ] => [ 2, 4, 8 ], die Menge hat nur noch drei Elemente).
  • Gegeben seien zwei Mengen, die zu einer Menge ohne Duplikate kombiniert werden sollen (Beispiel: [ 1, 2, 3 ] und [ 2, 4, 6 ] => [ 1, 2, 3, 4, 6 ]).
  • Berechnung des Quotients von zwei Zahlen ohne Verwendung der Divisionsoperators.
  • Berechnung der Quersumme einer dreistelligen Zahl.
  • Umdrehen einer dreistelligen Zahl (aus 123 wird 321).
  • Prüfung, ob eine beliebige Ganzzahl einem Palindrom entspricht.
  • Zählen aller Ganzzahlen, die keine 3 enthalten, zwischen 0 und einer beliebigen Ganzzahl.
  • Prüfung, ob eine beliebige Ganzzahl Teil der Fibonacci-Folge ist.
  • Berechnung des kleinsten/größten gemeinsamen Teilers zweier Zahlen.
  • Zahlenraten (eine Zahl zwischen 0-100 soll in möglichst wenigen Schritten erraten werden).
  • Berechnung des Produkts zweier Zahlen ohne Verwendung des Multiplikationszeichens/Bitoperatoren oder einer Schleife.

Löse die Aufgaben zuerst einmal nur mit den einfachen Bausteinen, die dir ein Struktogramm zur Verfügung stellen würde: Variablen (ohne Berücksichtigung des Datentyps), Verzweigungen, Schleifen, Funktionen (ein Struktogramm entspricht einer einzelnen Funktion). Auf Wikipedia kannst du nachschauen, welche Form die Strukturblöcke haben.

Vielleicht hilft es zusätzlich zu den Aufgaben, sich einen konkreten Beispielfall auszudenken und zu berechnen, um zu ermitteln, welche Rechenschritte es braucht. Oftmals gibt es bei solchen Aufgaben eine Kernoperation / einen Kernablauf, der/die im Grunde nur (mit anderen/modifizierten Werten) wiederholt werden muss.

Prüfe deine Lösung anhand von 2-3 Testläufen, bei denen du konkrete Werte einsetzt (bestenfalls auch Randwerte, um Ausnahmefälle mit einzubeziehen). Entweder schriftlich auf Papier oder in einem beliebigen Texteditor.

Danach übersetzt du das Ganze in Java-Code.

Genau das fällt mir aber gerade sehr schwer – vor allem die Java-Syntax.

Das Wichtigste wird einfach sein, dass du so viel wie möglich praktisch übst.

Übe direkt in einer IDE: IntelliJ IDEA / Eclipse / NetBeans / BlueJ (falls du damit schon einmal gearbeitet hast) / ..., die dir direkt Fehler anzeigt.

Aufgrund der noch wenig verbleibenden Zeit würde ich empfehlen, eines der vielen Kurztutorials zu nutzen, die man im Internet so findet (GeeksForGeeks, Programiz, o.ä.). Sicherlich sind für dich bisher nur die einfachen Grundlagen (Variablen, Operatoren, Kontrollstrukturen, Arrays) von Belang und OOP war noch kein Thema.

Ich habe alle Aufgaben, die wir im Unterricht gemacht haben, aber unser Lehrer erklärt leider kaum etwas.

Naja, also einmal abseits dessen, dass vermutlich ein Feedbackgespräch mit dem Lehrer wohl nicht schlecht wäre, gibt es doch noch einige andere Kontaktmöglichkeiten, an die du dich bereits hättest wenden können: Mitschüler, andere Lehrer, Leute aus deinem Betrieb, heutzutage sicherlich auch OpenAI/Claude/... und hier (oder in anderen Foren) könntest du die Aufgaben mit klaren Nachfragen ebenfalls einstellen.

...zur Antwort