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

Es handelt sich hierbei erst einmal nur um eine Warnung (nicht um eine Fehlermeldung), die dich lediglich auf die aktuelle Programmeinstellung aufmerksam machen soll.

Im ersten Schritt würde ich dir zunächst empfehlen, zu prüfen, ob:

  • die PDF-Datei überhaupt interaktive Elemente (z.B. Formulare) beinhaltet, die du bedienen musst.
  • die Quelle der Datei vertrauenswürdig ist.

Nur wenn beides zutrifft, würde ich die Einstellung ändern. Schau dazu im Menü unter Einstellungen > JavaScript.

...zur Antwort

Das ist unterschiedlich, je nachdem welches Ziel und welcher dazu führende Weg verfolgt wird.

Wenn man zum Beispiel Malware entwickeln möchte, über die man Zugriffe auf ein Windows-Betriebssystem erlangt (oder nach Einbruch verschleiert, siehe Rootkits), dann eignen sich C oder C++ sehr gut, denn für sie gibt es besser Schnittstellen, um auf dem System zu operieren. Das Gleiche gilt, wenn man entdeckte Schwachstellen in der Speicherverwaltung (z.B. Use-After-Free) ausnutzen möchte.

Für einfache Tests (Proof-of-Concept-Exploits, Pentests) könnte man gut Python nutzen, denn es geht ja erst einmal nur darum, ohne hohen Entwicklungsaufwand Analysen vorzunehmen. Zudem gibt es für so etwas auch schon einige nützliche Tools, wie z.B. pwntools oder scapy (für Sniffing).

Das sind aber soweit nur einzelne Beispiele und selbst bei denen wäre die Wahl noch ganz anderer Programmiersprachen (z.B. Bash, Rust, Go, PowerShell, Assemblersprachen) nicht abwegig.

Nutzen sie auch JavaScript?

Ja, für Angriffe auf Webseiten (z.B. XSS-Injection, Drive-by-Downloads, Formjacking) wäre JavaScript ein häufig genutztes Werkzeug.

...zur Antwort
Unity Raycast / Gebäude anklicken?

Ich versuche aktuell ein Panel zu öffnen, wenn man auf ein platziertes Gebäude klickt (2D in Grid System)Das hier ist der kritische Code Ausschnitt:

void Update() {
  if (!Input.GetMouseButtonDown(0)) return;
  //if (EventSystem.current != null && EventSystem.current.IsPointerOverGameObject()) return;

  Vector3 worldPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
  Vector2 point2D = new Vector2(worldPos.x, worldPos.y);

  RaycastHit2D hit = Physics2D.Raycast(point2D, Vector2.zero, 0f);

  Debug.Log($"Klick bei {point2D}, Treffer: {(hit.collider != null ? hit.collider.name : "kein Treffer")}");
  Debug.DrawLine(worldPos + Vector3.left * 0.2f, worldPos + Vector3.right * 0.2f, Color.green, 1f);
  Debug.DrawLine(worldPos + Vector3.up * 0.2f, worldPos + Vector3.down * 0.2f, Color.green, 1f);

  if (hit.collider != null) {
    var b = hit.collider.GetComponent<Building>();
    if (b != null) {
      Debug.Log($"Gebäude getroffen: {b.name}");
      StartCoroutine(OpenMenuDelayed(b));
      return;
    }
  }

  UIManager.Instance.ShowBuildingMenu(null);
} 

Die Kommentierte Zeile (die dritte) ist das Problem, sobald sie reingenommen wird kann ich das Gebäude nicht mehr anklicken (andere Tiles schon). Ich debugge jetzt schon etwas länger, weiß aber nicht wie ich das lösen soll (bin noch etwas neu bei Unity). Das Problem ist, dass ohne die diese Zeile es möglich ist durch UI Fragmente zu klicken, wie Buttons oder Menüs.

...zum Beitrag

In der auskommentierten Zeile steht explizit, dass der weitere Verlauf der Update-Methode abgebrochen werden soll, wenn sich der Mauszeiger über dem aktuellen GameObjekt befindet (IsPointerOverGameObject). Insofern halte ich das Verhalten nicht für verwunderlich.

Du kannst mit Layers arbeiten und so spezifisch zwischen den Zielen bei Klicks/Raycasts unterscheiden. Der folgende Raycast wäre beispielsweise nur dann erfolgreich, wenn dein Panel auch auf dem Layer "SomePanel" liegt:

int buildingLayerMask = LayerMask.GetMask("SomePanel");
RaycastHit2D hit = Physics2D.Raycast(point2D, Vector2.zero, 0f, buildingLayerMask);
...zur Antwort
Betreff: Desktop-App (Mac/Win) mit Qt & komplexer UI – Python oder C++ für Hobby-Entwickler mit KI-Fokus?

allo zusammen,

ich plane eine persönliche Desktop-Aufgabenverwaltungs-App für Mac & Windows. Langfristig soll sie eine komplexe UI bekommen (Kanban-Board mit Drag & Drop, Kalender mit OS-Integration). Mein Hauptziel ist es, eine Technologie zu wählen, die das packt, um einen späteren kompletten Rewrite der GUI wegen Framework-Limitierungen zu vermeiden.

Nach viel Recherche habe ich mich für Qt als UI-Framework entschieden, da es die nötige Mächtigkeit und den Qt Designer (den ich gut finde) bietet.

Jetzt stehe ich aber vor der großen Frage: Soll ich Qt mit Python (PySide6) oder mit C++ nutzen?

Kurz zu meinem Hintergrund:

  • Ich entwickle als Hobby, nicht beruflich.
  • Ich setze sehr stark auf KI-Unterstützung für die konkrete Code-Erstellung.
  • Meine C++ Erfahrung ist minimal: Bei sehr kleinen Windows-Tools (mit WinAPI, nicht Qt) hat die KI den Code geschrieben, ich habe primär Fehler mit der KI behoben. Ich kann C++ also nicht wirklich.
  • Meine Go Erfahrung ist auch kaum vorhanden (nur mal ein Fyne-Fenster testweise).
  • Ich habe aber einen (von KI geschriebenen) Python-Backend-Dienst für eine andere iOS Swift App. Python ist also schon entfernt in meinem technischen Umfeld, und ich habe auch Interesse an Pentesting (wo Python nützlich ist).
  • Für die Aufgaben-App selbst ist ein Installer/Abhängigkeiten okay. (Der Wunsch nach kleinen, einzelnen 
  • .exe
  • -Dateien betrifft andere, zukünftige, kleine Windows-Tools, für die ich dann wahrscheinlich Go oder C++/WinAPI nehmen würde – das ist also ein getrenntes Thema.)

Meine Zwickmühle mit Python/Qt vs. C++/Qt:

  • Python/Qt (PySide6):
  • Pro: Bietet die volle Qt-Power. Python ist deutlich zugänglicher für mich als C++. Ich habe die genannten Synergien (anderer Dienst, Pentesting). Die KI kann mich bei Python/Qt sicher gut unterstützen, und der Qt Designer hilft beim UI-Bau.
  • Mein großes Problem: Ich habe einen hartnäckigen "faden Beigeschmack" / ein starkes Unbehagen, Python für GUI-Programmierung zu nutzen, auch wenn meine frühere Hauptsorge (Performance) bei Qt-GUIs wohl unbegründet ist.
  • C++/Qt:
  • Pro: Wäre Qt "nativ", und mein Python-GUI-Unbehagen wäre weg.
  • Meine große Sorge: Die extreme Lernkurve von C++ von meinem jetzigen Stand. Ich habe Angst, hier monatelang nur mit der Sprache zu kämpfen (auch mit KI) und nicht bei der App voranzukommen, was für mich "verschwendete Zeit" wäre.

Meine Frage an euch: Ich will jetzt "richtig anfangen" mit Version 0.0.1 meiner App (Fenster, Eingabe, Button, Liste). Was ratet ihr mir in dieser spezifischen Situation für den Start mit Qt? Sollte ich versuchen, meine Python-GUI-Aversion (mit viel KI-Hilfe und Fokus auf den Qt Designer) zu überwinden, um die Vorteile der zugänglicheren Sprache und der Synergien zu nutzen? Oder haltet ihr den Weg mit C++/Qt (trotz des immensen Lernaufwands für mich) für realistischer oder langfristig besser, um Qt ohne Python-GUI-Unbehagen zu nutzen? Mein Hauptziel bleibt, die App mit Kanban & Co. sicher umsetzen zu können, ohne in einer Sackgasse zu landen.

Vielen Dank für eure Einschätzungen!

...zum Beitrag

Ich denke, mit C++ wirst du definitiv Probleme bekommen (sei es aufgrund kryptischer Compilerfehler, Objektverwaltung, falsch gesetzter Modifier oder Operatoren, u.ä.) und zusätzlich kannst du damit rechnen, dass Hilfstools wie ChatGPT dich in Sackgassen manövrieren werden, da du doch nie weißt, ob das, was dir empfohlen wird, tatsächlich gut und richtig ist. Das beginnt schon damit, dass man mit Qt noch einmal anders an Problemlösungen herangeht, als mit Standard C++.

So etwas wird dir sicherlich ebenso bei Python passieren, doch sollte da der Aufwand dennoch geringer ausfallen.

In Performance-Probleme dürftest du da nur bei einem schlechten Programmdesign laufen. Bei deiner Projektbeschreibung fällt mir ansonsten gerade nichts ein, was sonst schwer darauf einzahlen sollte. Nutze in deinem Projekt halt möglichst viel der bereits bestehenden Qt-Implementationen statt Eigenlösungen.

Was ratet ihr mir in dieser spezifischen Situation für den Start mit Qt?

Lerne zuerst Python oder C++, statt komplett auf Hilfstools zu bauen. Du schreibst selbst, dass es sich um eine Hobbyentwicklung handelt, also gehe ich auch davon aus, dass du genügend Zeit dafür hast.

Wenn es dazu deinerseits keinerlei Motivation gibt, bleibt dir wohl nichts anderes übrig, als mit dem Qt Designer die Oberfläche zusammenzuklicken und bzgl. des generierten Python-Codes auf das Beste zu hoffen.

Bezüglich der Projektplanung solltest du noch vor irgendeiner Umsetzungsphase ganz genau definieren, was du alles brauchst. Zudem würde ich gesetzte Anforderungen nochmals hinterfragen. Möglicherweise sind nicht alle wirklich notwendig und können mit Abwurf das Projekt vereinfachen.

...zur Antwort

Bis Google deine Seite neu crawlt, kann es einige Tage oder Wochen dauern. Der Snippet, den du in der Search Console siehst, basiert auf dem letzten Indexstand.

...zur Antwort

Die Lösungsmöglichkeiten hängen vom System und deinen Zugriffsberechtigungen ab.

a) Wenn du die Anwendung selbst hostest bzw. Zugriff auf die Serverkonfiguration hast, könntest du eine Basic Authentication einrichten. Wie das geht, ist vom genutzten Webserver (Apache/Nginx/IIS/...) abhängig. Die Authentifizierung läuft in diesem Fall direkt über den Webserver ab, nicht über die Shopware-Anwendung.

b) Man könnte an der Stelle die Anwendung auch selbst erweitern, doch das setzt gute HTML- und PHP-, evt. ebenso Symfony/Shopware-Kenntnisse voraus.

c) Ähnlich könntest du ein eigenes Plugin entwickeln, welches den aktuellen Nutzer prüft. Die Nutzer-ID sollte aus der Session abgreifbar sein und anschließend kannst du in der Datenbank nach dem entsprechenden Customer-Objekt suchen.

Ungefähr so:

$userId = Shopware()->Session()->get('sUserId'); 
$this->getModelManager()->getRepository(\Shopware\Models\Customer\Customer::class)->find($userId);

Wenn es sich um einen anonymen Nutzer handelt, leitest du ihn auf eine Login-Seite um.

Hierfür sind die selben Kompetenzen wie bei Vorschlag b) gefragt. Zusätzlich solltest du berücksichtigen, dass du bei einem Storefront Plugin nur den Zugriff auf die grafische Weboberfläche verhinderst.

d) Man könnte einen Proxy vor das Shopware-System stellen, welcher einen Login fordert. Sei es nun eine Eigenimplementation oder irgendeine bereits existierende Lösung (Authelia/Cloudflare Access/...).

Wichtig hierbei ist, dass alle Requests ausnahmslos einmal an den Authentifizierungsdienst gehen. Entweder wird er je Request einmal von der Shopware-Anwendung aufgerufen (erfordert Implementationsaufwand) oder an die Shopdomain gebunden (deine Shopware-Anwendung bekommt dafür irgendeine interne Domain) und agiert anschließend tatsächlich als Vermittler (ist man angemeldet, holt er sich die Daten der angeforderten Shopware-Seite und gibt sie als eigenen Response zurück).

Kurzum: Wenn es ein bereits fertiges Plugin für deine Anforderung gibt, wäre das die deutlich einfachste Lösung, denn sie erfordert für eine Einrichtung keinen großen technischen Aufwand oder besondere Zugriffsberechtigungen auf das interne System.

Welche Plugins es in der Art für Shopware gibt bzw. welche empfehlbar sind, kann ich allerdings nicht sagen.

...zur Antwort
Ich verstehe nicht, wie man programmieren lernt?

Ein guter erster Startpunkt wäre, sich entsprechendes Lernmaterial zu besorgen und eine Entwicklungsumgebung einzurichten, in der du herumprobieren/entwickeln kannst.

Zu Ersterem könnte ich folgende Lernquellen empfehlen:

  • Learn C++
  • Bücher von Breymann, Theis oder Will
  • Codeacademy
  • educative: Learn C++ from Scratch

Wobei ich die ersten beiden den Kursen noch vorziehen würde. Du kannst auch mehrere Quellen nutzen, da sie (aufgrund unterschiedlicher Herangehensweisen für Erklärungen) verschiedene Perspektiven eröffnen können, die dem Verständnis beitragen.

Wenn du auf Recherche nach Quellmaterial gehst, dann würde ich empfehlen, Publikationen vorzuziehen, die nicht vor 2017 veröffentlicht wurden (bzw. mindestens C++ 17 behandeln). Die Sprache hat sich über die Jahre stark gewandelt.

Für Zweiteres wäre es gut, eine IDE für C++ zu installieren. Gute Optionen hierfür wären JetBrains CLion, der QtCreator oder Visual Studio (mit dem C++ Workload).

Zu den jeweiligen IDEs benötigst du ebenso ein (für dein System kompatibles) Compilerset, welches dir den C++-Code in Maschinencode umwandeln kann. Da gibt es bspw. Clang (Linux/macOS/Windows), GCC (Linux/macOS), MinGW (Windows) oder MSVC (Windows). Einige IDEs bieten dir an, bestimmte Compiler bereits bei der Installation mit zu inkludieren (Visual Studio installiert z.B. den MSVC direkt mit), bei anderen musst du dir das Tool nachträglich installieren und als Toolchain in der IDE einrichten.

Fange vor allem erst einmal klein mit einfachen Konsolenanwendungen an und mache dich damit vertraut, wie die Syntax von C++ aussieht, wie Grundlagenbauteine (Variablen, Kontrollstrukturen, u.ä.) funktionieren und wie du deinen Code kompilieren kannst.

(...) ich versteh nichtmal wie man sfml herunterlädt. (...)

In der SFML-Dokumentation gibt es einen Abschnitt Getting Started, der Anleitungen für verschiedene Entwicklungsumgebungen beinhaltet.

Der Punkt SFML with the CMake Project Template wäre ein Guide, der für jedes System anwendbar ist, da an der Stelle CMake die Buildverwaltung übernimmt. Für einen Anfänger stellt es aber sicherlich eine Hürde, da es nochmal ein eigenes Tool für sich ist, zu dem du dich erst einmal an verschiedenen Stellen einlesen müsstest.

...zur Antwort

Für das Zeichnen eines Kreises wird entweder die leftCircle- oder die rightCircle-Funktion benutzt.

Hier findest du die für dich relevante Dokumentation. Du benutzt TigerJython.

...zur Antwort

Google bietet eine recht einfache Lösung: http://blogger.com/. Im Prinzip brauchst du dir bloß einen Account erstellen und kannst anschließend direkt mit dem Schreiben von Artikeln loslegen. Eine Subdomain wird dir von Google gestellt.

...zur Antwort

Geh in die Domainverwaltung von Strato und nutze in den DNS Einstellungen die Option DNS Einstellungen zurücksetzen (wird auch hier erwähnt). Danach dürfte es keine A-Records oder CNAME-Einträge mehr geben, die auf deine WordPress-Seite zeigen. Stattdessen musst du sicherlich einen neuen A-Record anlegen, der wieder deine Strato-Seite referenziert. Die Ziel-IP findest du in deinem Account unter Serverkonfiguratio/IP-Adressen. Eine Umleitung auf die Platzhalterseite von Strato solltest du ebenso in der Domainverwaltung einrichten können (lies dazu hier).

Im Anschluss ist Warten angesagt, denn ein DNS-Eintrag ändert sich nicht so schnell. Prüfe am besten nach 24 Stunden noch einmal den Status. Wenn nötig, leere deinen DNS-Cache.

...zur Antwort

a) Suche dir ein anderes Shopsystem.

b) Du könntest einen Reverse Proxy vor das System setzen, über den die URL-Struktur aufgebaut wird.

Das heißt, in Shopify baust du dir ein System mit der flachen Hierarchie. Zum Beispiel könnte (wie schon bei deinem Beispiel) ein Bindestrich das Trennzeichen für eine neue Subseite sein.

Deine Domain muss an den Proxyserver gebunden werden, statt an Shopify. Zudem müsstest du eine Webanwendung entwickeln oder entwickeln lassen, die URLs wie example.com/a/b/c entsprechend auflöst. Wenn also ein Nutzer example.com/a/b/c eingibt, bekommt der Proxyserver die Anfrage, sucht anhand der Adresse die dazu entsprechende Shopifyseite (shopifydomain.com/pages/a-b-c), ruft sie auf und zieht sich ihren Inhalt (Response). Dort müssen alle relevanten Verlinkungungen (Links, Canonical-Tags, Hreflang-URLs) umgeschrieben werden. Anschließend kann das Ergebnis an den Browser des Nutzers geschickt werden.

Um den Prozess für künftige Aufrufe zu optimieren, wäre es gut, die Anfragen mitsamt ihrer Ergebnisse zumindest für eine gewisse Zeit zu cachen.

Ich vermute allerdings, dass es für dich keine einfache Lösung ist. Zumal sie einigen Aufwand und zusätzlicher Ressourcen bedarf.

...zur Antwort