Die Reviews API gehört zur Google Business Profile API. Alles, was du brauchst, um sie zu nutzen, ist ein Google My Business Account mit einem Unternehmensprofil (lies hier und hier). Das Anlegen von Account und Profil ist kostenlos.

Bezüglich der von dir erwähnten 200$ beziehst du dich wohl auf die Google Maps API, daher gilt alles Folgende von mir nur noch für diese. Ihre verfügbaren Sub-APIs werden in der Produktübersicht aufgeführt.

Nutzer der Google Maps Platform erhalten ein Guthaben von 200 $ pro Monat für Maps, Routes und Places (siehe Guthaben für Rechnungskonten). Damit können manche Kunden ihre Anwendungsfälle ohne Kosten abdecken. Ihnen werden erst Gebühren in Rechnung gestellt, wenn die Nutzung 200 $ in einem Monat überschreitet.
Für Maps Embed API, Maps SDK for Android und Maps SDK for iOS gibt es aktuell keine Nutzungsbeschränkungen und Kosten. Die Verwendung der API oder der SDKs wird nicht auf Ihr monatliches Guthaben von 200 $ angerechnet.

Quelle (FAQ: 1. Tab)

Für einen begrenzten Testzeitraum kann man sogar ein Guthaben von 300$ pro Monat erhalten.

(...) und muss ich eine Kreditkarte hinterlegen?

Nein, es gibt noch weitere Optionen (lies hier). PayPal wird allerdings nicht mehr unterstützt.

(...) Von mir aus kann es nach dem Guthaben aufhören zu funktionieren (...)

Du kannst Request-Limits setzen (siehe: API-Nutzung deckeln) und zusätzlich deinen Verbrauch überwachen (siehe: API-Nutzung überwachen und Budgets und Budgetbenachrichtigungen erstellen, bearbeiten oder löschen).

Wie viel Geld/Cents kostet so ein Request bzw. wie viele sind möglich mit diesen $200?

Das hängt von der jeweiligen Sub-API ab, die du aufrufst. Schau in die Preisübersicht. Die Freibeträge kannst du dir mittels Dreisatz ausrechnen.

(...) die ich von WordPress auf Next.js wegen Performance/Speed-Problemen nachbauen möchte und weil es der Kunde nicht wie gedacht als CMS nutzt (...)

Google ist es egal, ob du deine Anfragen via JavaScript oder PHP verschickst.

Bezüglich deines Vorhabens berücksichtigst du hoffentlich, dass du damit einen Kostenaufwand aufrufst, der so nicht im Interesse des Kunden liegen dürfte, sofern das noch nicht abgesprochen wurde. Für eine Performanceoptimierung würde ich erst einmal schauen, ob die derzeitige Lösung nicht entsprechend modifiziert werden kann (und wo überhaupt die Ursachen liegen).

Von einem CMS würde ich des Weiteren nicht abkehren, für Node.js gibt es ja auch einige Optionen (Apostrophe, Keystone, Strapi, ...).

Wenn es dich zudem so stört, dass dein Kunde die Texte nicht selbst pflegt, musst du das mit ihm abklären. Entweder löst man das Vertragsverhältnis oder ändert die darin verhandelten Aufgabenbereiche.

...zur Antwort
Hallo, ich hatte die Idee meinen Lebenslauf zusätzlich noch als Website zu erstellen.

Für die schlichte Aufführung eines Lebenslaufs kannst du auch LinkedIn oder Xing nutzen. Beides sind Plattformen, die gezielt auf das Knüpfen beruflicher Kontakte fokussiert sind.

Lediglich Daten wie die private Telefonnummer oder E-Mail-Adresse würde ich dort nicht ohne Weiteres einstellen, um dreiste Headhunter-Manöver zu vermeiden.

Jedoch würde ich ungerne persönliche Informationen ins Internet stellen.

Dann mache es nicht.

Was denkt ihr, wie wahrscheinlich ist es dass meine Lebenslauf Website von Leuten entdeckt wird?

Sobald die Seite einmal von einer Suchmaschine indiziert wurde, wird es zumindest einfacher. Auf welches Ranking (zu welchen Suchbegriffen) deine Webseite springen würde oder wie viele Personen gezielt nach dir suchen, lässt sich kaum beantworten.

Was könnte man machen damit nur Leute mit dem Link auf meine Website zugreifen könnten?

Du kannst ein Authentifizierungsverfahren (Basic Auth o.ä. Loginverfahren) davor setzen. Wenn du solche Dienste wie Google Sites nutzt, könntest du die Seite auch via Link mit nur bestimmten Personen teilen.

...zur Antwort

Vorausgesetzt, das du oder jemand in der Firma genügend Kenntnisse mitbringt, um einfache Office-Anwendungen (wie MS Word) zu bedienen, wäre Google Sites eine einfache und kostenlose Option, die für den Anfang vollkommen ausreichen sollte.

...zur Antwort

Man könnte die Objekte in einen Graph übertragen.

Ein Graph besteht aus Knoten, die jeweils eines deiner Objekte beinhalten. Mittels Kanten/Pfaden sind sie mit einem (leeren) Wurzelknoten verbunden, wobei jeder Pfad den Wahrscheinlichkeitswert für den Knoten beinhaltet, auf den er zeigt. Die Anzahl eines Objekts sollte ebenso außerhalb des Objekts selbst gelagert werden, bspw. im Knoten.

Das Modell einmal grob in Java angedeutet:

class Graph {
  private Node root;

  /* ... */
}

class Node {
  private ArrayList<Edge> nextEdges;
  private Edge previousEdge;
  private Object someObject;
  private int numberOfSomeObject;

  /* ... */
}

class Edge {
  private double probabilityValue;
  private Node startNode;
  private Node endNode;

  /* ... */
}  

Wenn die Häufigkeit eines bestimmten Objekts geändert werden soll, muss das also über eine Methode des Graph erfolgen. Die könnte in diesem Zug auch über alle Kanten des Vorgängerknotens iterieren, um die Wahrscheinlichkeitswerte zu aktualisieren.

...zur Antwort

Für Ketten, die stets denselben Rechenoperator nutzen, könnte man die Eingabe ganz einfach anhand des Operators in Substrings auftrennen (siehe Split-Methode).

Die einzelnen Substrings könntest du im Anschluss in Werte numerischen Typs umwandeln und via Schleife miteinander verrechnen.

Für komplexere Aufgaben, die unterschiedliche Operatoren einsetzen, wäre der Aufbau eines Expression Tree eine geeignete Wahl, was allerdings keine Übung für einen Anfänger ist.

Andernfalls kann man eine mathematische Aufgabe ebenso von der Compute-Methode einer DataTable verarbeiten lassen.

...zur Antwort
(...) wenn ich jetzt z.b. ein kleines grafisches Programm,schrieben will (...)

So lange du mit einfachen Grundbausteinen (Listen, Kontrollstrukturen, OOP) noch nicht vertraut bist, wäre es besser, sich erst einmal darauf zu fokussieren, statt bereits mit fortgeschritteneren Themen agieren zu wollen.

Mit einsteigerfreundlichen Modulen wie turtle oder Processing.py gelangt man ebenso zu visuellen Erfolgserlebnissen.

(...) woher weiß ich dann das ich erst was importieren muss (...)

Plane im Voraus. Du musst erst erfassen, was dein Programm tun/können soll und im Anschluss kannst du schauen, welcher Teilschritte es dafür zu lösen bedarf. Ich habe erst gestern mehr in diesem Beitrag dazu geschrieben.

Wenn du dabei merkst, dass du z.B. eine Netzwerkverbindung herstellen musst, wäre es gut, nach einem Modul zu suchen, welches dich dabei unterstützt, da du so etwas kaum selbst von neu aufbauen möchtest. Erste Anlaufstellen wären die Dokumentation (in der alle Module der Standardbibliothek aufgelistet werden) oder ein Package-Repository wie PyPi, welches externe Bibliotheken führt.

Für genauere Informationen zu einem Modul (was es beinhaltet, wie man es nutzen kann, etc.) solltest du immer in die entsprechende Dokumentation schauen. Bei externen Bibliotheken auf PyPi solltest du dir die jeweilige Moduldetailseite durchlesen, denn sie beinhaltet auch Links zu den offiziellen Manuals o.ä. oder manchmal sogar Kurzanleitungen).

...zur Antwort

JetBrains IntelliJ ist in erster Linie eine Java-IDE. Den Support für Python müsstest du dir erst einmal einrichten. Empfehlenswerter wäre es allerdings, sich stattdessen JetBrains PyCharm zu holen, denn das ist eine direkt auf Python-fokussierte IDE.

Die Paketverwaltung wird in deren Dokumentation beschrieben. Über diesen Weg kannst du dir auch den Discord-Wrapper für Python von PyPi herunterladen und ihn anschließend in deinem Projekt einbinden.

...zur Antwort

Ich verstehe nicht, wieso der Tutor sich dafür ein extra Skript schreibt. Die Funktionalität liefert IntelliJ bereits von sich aus. Du brauchst lediglich eine entsprechende Run Configuration anlegen. Ein komplettes Tutorial, wie man ein Java-Programm in IntelliJ anlegt, dazu eine JAR deployt und sie ausführt, findest du ebenso in der JetBrains-Dokumentation (siehe Create your first Java application).

Bezüglich der Fehlermeldung: Entweder kann das System die Datei nicht finden oder hat keine Leserechte.

  • Schau dir die JAR-Datei (bzw. ihre Eigenschaften) über den Windows Dateiexplorer an.
  • Probiere es mit Verschieben (in einen anderen Ordner) und/oder Umbenennen der Datei. Der Pfad im Skript müsste dementsprechend natürlich angepasst werden.
java -jar "c:\users\path\to\your\jar\file.jar"

PS.: Batchskripte (.bat) sind für Windows OS, Shellskripte (.sh) sind für Unixsysteme.

PPS.: An deiner Rechtschreibung solltest du dringend arbeiten, denn die ist eklatant schlecht. Bestenfalls, bevor du weiter Programmieren lernst, denn gerade dort werden Tippfehler u.ä. nicht verziehen.

...zur Antwort

Der erste Schritt wäre stets, das Problem zu erfassen, welches folgend gelöst werden soll. Ob es hierbei nun darum geht, ein komplettes Programm zu entwickeln oder nur um die Entwicklung einer einzigen Funktion in einem Programm, ist an der Stelle egal. Beschreibe also zuerst, in Kurzform (Stichpunkte / wenige Sätze), was du überhaupt erreichen möchtest. Dabei kann man zusätzliche Informationen, wie den aktuellen Zustand mit hineinnehmen, wenn man es als hilfreich empfindet.

Solltest du dabei mit dir unbekannten Themen konfrontiert sein, müsstest du dich in diese erst hineinarbeiten. Wolltest du beispielsweise einen Konverter entwickeln, der Dezimalzahlen in eine Form des Binärsystems umwandelt, müsstet du erst wissen, wie diese Zahlensysteme überhaupt funktionieren und wie der mathematische Weg zur Umwandlung aussieht.

Der zweite Schritt wäre eine Ausarbeitung und der Beginn einer Aufteilung. Vor allem wenn es um ein komplexes Problem geht, welches in seiner Rohform noch zu abstrakt ist, als dass man es direkt lösen könnte, muss man schauen, dass man es zergliedern kann. So oft, bis man konkrete, fassbare Teilaufgaben vor sich hat, mit denen zusammengenommen sich das Gesamtziel erreichen lässt.

Ein sehr einfaches, bildhaftes Beispiel dafür wäre die Ausgabe eines beliebig großen Vierecks mit einem beliebigen Zeichen in der Konsole. So ein Viereck besteht aus mehreren Reihen und Spalten. Insofern kann man erst schauen, wie man eine Reihe ausgibt und noch davor, wie man überhaupt eine Spalte zeichnet.

void printColumn(char symbol) {
  System.out.print(symbol);
}

void printRow(char symbol, int width) {
  for (int x = 0; x < width; ++x) {
    printColumn(symbol);
  }

  System.out.println();
}

void printRectangle(char symbol, int width, int height) {
  for (int y = 0; y < height; ++y) {
    printRow(symbol, width);
  }
}

Es setzt in diesem Beispiel natürlich auch etwas voraus, dass zumindest ein paar Implementationen (siehe print, println) aus der Standard-API bereits bekannt sind, damit man nicht wirklich alles versucht, neu zu erfinden. Bei bestimmten Herausforderungen sollte man daher ebenso eine kurze Recherche in Erwägung ziehen, ob es nicht schon fertige Lösungen gibt. Mathematische Funktionen (log, pow, sin, ...) oder String-Operationen (reverse, substring, ...) sind typische Beispiele.

Die Umstellung in ein recht striktweises Denken ist zugegeben nicht immer einfach. Für Programmiereinsteiger ist es vor allem ungewohnt, da der Mensch an sich sprachlich Operationen meist zusammenfasst. Eine Aktion wie laufen ist für uns alle verständlich. Für den Computer ist es eine komplexe Operation, die erst in die einzelnen Muskelbewegungen heruntergebrochen werden müsste.

Ein paar Tipps, die ich bei der Entwicklung von Funktionen/Algorithmen geben könnte, wären diese:

  • Suche in der Beschreibung des Problems nach Verben, die notwendige Operationen (also Funktionen) darstellen könnten.
  • Überlege dir, was der IST-/Anfangs- und der SOLL-/End-Zustand ist.
  • Halte dich möglichst strikt an die Regel, dass jede Funktion nur einem Zweck dient, nicht mehreren.
  • Scheue nicht davor zurück, Hilfsfunktionen zu formulieren, wenn eine Operation leicht beschreibbar, aber für sich gesehen dennoch komplex ausfällt. Ein typisches Beispiel wäre eine mathematische Prüfung, ob sich ein Punkt in einem Rechteck befindet. So etwas lässt sich gut auslagern und später an anderer Stelle wiederverwenden.
  • Lege dir einen Programmablaufplan an (alternativ ein Struktogramm o.ä. Skizzen - hauptsache es gibt nur einfache Bauteile wie if-else, Deklaration/Definition, Anweisung); Operationen, die noch zu abstrakt/komplex sind, werden in weiteren (eigenen) Diagrammen/Skizzen behandelt.
  • Wenn du die Möglichkeit hast, dir Operationen durch Nachstellung bildlich zu machen, dann nutze das (Beispiel: Arrayoperationen wie Tauschen, Sortieren kann man sich mit Karten nachlegen).
  • Löse Probleme nie direkt mit Programmcode. Beginne mit einer Übersetzung in Java-Code erst, sobald der Ablauf des Algorithmus bereits (z.B. als Diagramm) feststeht und getestet werden konnte (nimm dir 1-2 konkrete Anwendungsfälle und versuche mit ihnen deinen Plan einmal durchzuspielen, so fallen frühzeitig Logikfehler auf).
  • Stelle (Performance-)optimierungen hintenan.
  • Vergib für alle Elemente (Variablen, Funktionen, etc.) immer eindeutige, aussagekräftige Namen.

Dazu gibt es eine große Bandbreite an möglichen Aufgaben, an denen sich das Vorgehen üben lässt. Zum Beispiel:

  • Berechnung des Produkts zweier Faktoren, ohne den Multiplikationsoperator zu nutzen
  • Konversion von Zahlen in unterschiedliche Zahlensysteme (Dezimal-/Oktal-/Hexadezimal-/Binärsystem)
  • Addition und Subtraktion beliebiger Brüche
  • Berechnung des größten/kleinsten gemeinsamen Teilers zweier Zahlen
  • Berechnung der Quersumme einer dreistelligen Zahl
  • Berechnung und Ausgabe der ersten zehn Ziffern der Fibonacci-Reihenfolge
  • Die Lösung von Problemen gezielt mit Rekursion (Test ob ein Wort einem Palindrom entspricht, Rückwärtsausgabe einer Zeichenfolge, Berechnung der Werte für ein Pascal'sches Dreieck)
  • Viele mathematische Rätsel findest du auf Projekt Euler
  • Zahlen-raten (eine Zahl zwischen 0 und 1000 wird berechnet, in Folge soll versucht werden, mit möglichst wenigen Arbeitsschritten diese Zahl zu erraten)
  • Eigenimplementation von bekannten String-Methoden (z.B. indexOf, replace und replaceAll für einfache Zeichenfolgen, substring)
  • Die Implementation von Sortierverfahren (Bubblesort, Selectionsort, Insertionsort, Quicksort) - schau für die jeweiligen Beschreibungen auf Wikipedia
  • Überlege dir Methoden, wie man in einer Liste beliebiger Zahlen eine bestimmte Zahl suchen könnte
  • Entwicklung eigener Datenstrukturen (ohne dafür die List-Implementationen der Standard-API zu nutzen): Stack (mit peek, pop und push), doppelt verkettete Liste (mit add, insert, remove), eine Queue (mit add, remove), AVL-Baum (mit add, insert, remove), Graph (mit add, insert, remove)
  • Binäre Suche für einen binären Baum
  • Traversionsverfahren für einen binären Baum (pre-order, in-order, post-order)
  • Suche nach dem kürzesten Weg von einem Knoten eines Graph zu einem anderen (die Kanten, die die Knoten verbinden, geben die Entfernung zwischen zwei verbundenen Knoten vor)
  • Minispiele oder Simulationen wie Conway's Game Of Life, Türme von Hanoi oder Snake (für die grafische Darstellung kannst du Processing nutzen)

Bei der Entwicklung von komplexen Programmen kommt es oft vor, dass man keinen allgemeinen Hauptprogrammablauf hat und stattdessen ein Bündel verschiedener Anwendungsfälle/Funktionen (vgl. mit MSPaint: Der Nutzer kann das Programm öffnen und verschiedene Aktionen in beliebiger Reihenfolge starten). Zudem ist man meist damit konfrontiert, neben der eigentlichen Anwendungslogik noch eine grafische Oberfläche zu haben, die interaktiv sein muss.

Es ist bei so einem Projekt sinnvoll, in der Analysephase das Programm als eigenständiges System auszuarbeiten, welches sich an objektorientierte Konzepte orientiert.

  • Man muss die Anwendungsfälle finden, die in dem System auftreten können (ein use-case-diagram kann hierbei helfen: Erst schaut man, wer das Programm nutzen soll und dann, welche Interessen diese Personengruppe hat bzw. was für Aktionen sie nutzen wird)
  • Anhand einer textuellen Beschreibung des Systems (Was tut es? Wer agiert damit?) kann man einmal wieder herausfinden, welcher Objekte es braucht und wie sie miteinander agieren. Ich habe das in diesem Beitrag einmal an dem Spiel Pac-Man ansatzweise gezeigt. Letztendlich lässt sich damit ein Objektdiagramm und anschließend ein Klassendiagramm kreieren (Stichwort: UML)

In der Projektstrukturierung wiederum sollte es klare Aufteilungen geben. Funktionsbündel kann man als eigene Module definieren (Beispiel MSPaint: Es gibt ein Modul zur Speicherung von Bildformaten, ein Modul für Zeichenoperationen, usw.). Die Anwendungslogik sollte generell von der Formulierung der grafischen Oberfläche getrennt sein. Architekturmuster wie MVC, MVP oder MVVM sind dabei ziemlich hilfreich. Generell macht es Sinn, sich zu diesem Thema (Architektur- und Entwurfsmuster) genauer zu belesen.

Hilfreich könnte zudem eine testgesteuerte Entwicklung (test-driven-development/TDD) sein, da sie dich unter anderem stärker dazu drängt, modular zu denken. Recherchiere zu dem Thema einfach einmal.

...zur Antwort

Deiner Beschreibung zufolge ist das Weiterkommen nichts, was über den Feldzustand ermittelt wird. Stattdessen wird bei jedem Feld neu ausgewürfelt.

Das heißt, du brauchst an sich nur eine Zufallszahl zwischen 0 (inklusiv) und 2 (exklusiv) ermitteln. Ob man nun weiterkommt, bemisst sich daran, ob die ausgewürfelte Zahl größer als 0 ist oder nicht.

Statt eines mathematischen Vergleichs könnte man ebenso die nextBoolean-Methode des Random-Objekts nutzen.

...zur Antwort

Du kannst in der Konfiguration des Webservers bestimmen, welche Ciphersuites für die TLS-Verbindung erlaubt werden sollen. Beachte dabei, dass die Auswahl an verfügbaren Suites von der installierten OpenSSL-Version auf dem OS abhängt.

  • Eine Übersicht zu den als derzeit sicher eingestuften Suites findest du auf ciphersuite.info.
  • Als Hilfsmittel für die Konfiguration kannst du den SSL Configuration Generator von Mozilla nutzen. Schau andernfalls (oder nichtsdestotrotz) auch in die jeweilige Dokumentation des von dir genutzten Webservers (Beispiel Apache).
...zur Antwort

Trimming ist bei Anwendungen, die mit Reflection oder COM-Marshalling arbeiten, problematisch, denn während des Analyseprozesses kann nur schwer beurteilt werden, was denn raus darf oder nicht. Windows Forms ist an der Stelle besonders betroffen, denn es baut unter Haube wesentlich auf COM-Marshalling. Eine mögliche Lösung an der Stelle ist die Nutzung von COM-Wrappern (siehe z.B. WinFormsComInterop).

Zusätzlich solltest du den Microsoft-Artikel Prepare libraries for trimming durcharbeiten.

Eine Garantie dafür, dass du es schaffst, gibt es aber nicht. Seitens des .NET-Teams (lies hier) gibt es jedenfalls noch keinen offiziellen Support. Einen Überblick über den aktuellen Entwicklungsstatus liefert dieses Epic: #4649 Make WinForms trim compatible.

Noch ein paar andere Optionen, die du ausprobieren/angehen könntest:

  • Deploye die App im Release-Modus.
  • Gehe diese Liste an Features durch. Sicherlich kannst du einige von ihnen ausschließen.
  • Schau, ob es im Projekt Dateien gibt, die explizit exkludiert werden können und markiere sie entsprechend.
  • Komprimiere Mediendateien (u.ä. externe Ressourcen), die du möglicherweise nutzt.
  • Mit einem Packer/Kompressor kannst du deine Executable nochmals komprimieren (siehe bspw. NeoLite oder UPX).
  • Etwas, was man fallbedingt einfach einmal testen müsste: Eine Aufteilung in Assemblies und dazu ein partielles Trimming.
...zur Antwort

Die input-Funktion ist ausschließlich für die Texteingabe (und z.T. -ausgabe) in der Konsole gedacht. Wenn du mit einer grafischen Oberfläche (mit Buttons, etc.) arbeiten möchtest, solltest du auch an der Stelle mit entsprechenden Komponenten arbeiten.

Seitens tkinter gibt es für Nutzereingaben das Entry-Widget.

Beispiel:

import tkinter as tk

def show_input():
  output_field.configure(text = input_field.get())

root = tk.Tk()
input_field = tk.Entry(root)
input_field.pack()
output_field = tk.Label(root, text="")
output_field.pack()

tk.Button(root, text="Show text", command=show_input).pack()
root.mainloop()

In diesem Beispiel wird bei Buttonklick das Eingabefeld ausgelesen und dessen Text in einem Label ausgegeben.

Alternativ kann man das Label auch an eine StringVar binden:

text = tk.StringVar()
output_field = tk.Label(root, textvariable=text)

// change:
text.set(input_field.get())

Bei Änderung dessen Wertes wird aktualisiert sich das Label automatisch.

Auch andere GUI-Toolkits (kivy, PyQt, u.ä.) verfügen über eigene Komponenten für Ein- und Ausgabe.

...zur Antwort
(...) Ich habe als letztes Projekt (...) mit QTpy erstellt (...)

Du meinst sicherlich QtPy. Qt ist kein Akronym. 😉

Kennt jemand gute Möglichkeiten / Websites, mit denen ich weiter Üben könnte?

Für kleine Aufgaben / Herausforderungen kannst du auf Edabit, EntwicklerHeld, Excercism oder Projekt Euler schauen. Es gibt dort einen Mix aus Übungen für Anfänger und Intermediate-Level. Als Inspirationsquelle für eigene kleine Projekte kann man die Seiten ebenso nutzen.

Sofern du dich schon mit OOP beschäftigt hast, wäre es gut, sich dahingehend zu vertiefen. Spiele (z.B. Klassiker wie Pac-Man, Schiffe versenken, Snake, Tetris; Text-Adventures, Kartenspiele wie Uno oder Brettspiele wie Go, Pachisi, Schach) stellen dafür angemessene Herausforderungen dar und lassen sich leicht mit weiteren Features erweitern (bspw. einer Zughistorie, einem Multiplayermodus via Netzwerk, neuen Spielmodi, einem Chat zur Kommunikation unter Spielern, einer Gegner-KI, ...). Du kannst hierfür sowohl auf Bibliotheken wie Processing.py oder PyGame, als auch erneut QtPy zurückgreifen.

Schau dir in dem Zusammenhang Datenstrukturen (Bäume, Queues, Stacks), verschiedene Sortier- und Suchalgorithmen (z.B. Alpha-Beta-Pruning, Traversion) und Design Patterns (sowie MVC, MVVM) an. Löse dich allerdings von Schritt-für-Schritt-Tutorials (sofern du solche bisher genutzt haben solltest) und versuche eigene Lösungsansätze (natürlich unter Anwendung der OOP) zu finden.

Andernfalls lohnt sich eine Fokussierung auf ein bestimmtes (Python-spezifisches) Thema, wobei natürlich die Frage im Raum steht, was du mit Python denn nun machen möchtest. Optionen gibt es ja genug:

  • AI/ML (s. Keras)
  • Datentracking und -analyse (s. Anaconda, Pandas, SciPy)
  • IoT / Entwicklung von Software für Mikrocontroller (z.B. für Raspberry Pi OS)
  • Entwicklung von Webanwendungen (mit Django/Flask/Pyramid/o.ä.)
  • Spieleentwicklung (mit Panda3D/PyGame/Ursina/Wasabi2D/o.ä.)

Eine Anlaufstelle für verschiedene Lerntracks und Einstiegstutorials (für diverse Themen aus den oben gelisteten Themenfeldern) bietet RealPython. Ansonsten solltest du spezifisch recherchieren: Es gibt zahlreiche Bücher, Online-Dokumentationen zu den jeweiligen Tools und Webartikel (s. bspw. PlanetPython, PyBites, PythonCentral), in denen neue Features, u.ä. vorgestellt werden.

...zur Antwort

Überlege dir zuerst, welche tatsächlichen Vorteile für dich entstehen bzw. welche Features denn nun fehlen würden, die bestehende Ticketsysteme nicht bieten. Schau dabei auch, ob deine Anforderungen nicht via Nachkonfiguration oder mittels Erweiterungen eines existierenden Systems erfüllbar sind. In der Regel sind solche Anwendungen ziemlich anpassbar und verfügen über eine API zur Automatisierung.

Für das Anlegen von Tickets aus der App heraus, kannst du dir beispielsweise auch ein einfaches Formular anlegen, welches notwendige Daten (Titel, Beschreibung, ...) an ein bestehendes System schickt.

Meines Erachtens dürfte es kaum Gründe geben, das Rad an der Stelle neu erfinden zu müssen. Zumal du an der Stelle ein zweites Softwareprojekt starten würdest und den Fokus vom wesentlichen Projekt nimmst. Das wird dich definitiv hemmen, egal ob du das Projekt nun als einfach oder schwer einschätzt.

Ein zusätzlicher Vorteil, den dir Plattformen wie Atlassian, DevOps oder GitHub bieten können, ist ein komplettes Board rund um deine Software drumherum, welches neben dem Ticketsystem noch weitere Aspekte (Repository, Wiki, Release-Pipelines) verknüpfen kann.

...zur Antwort

Der Umbruch auf eine neue Zeile entspricht bereits dem Standardverhalten von Tabellen.

<table><!-- table 1 --></table>
<table><!-- table 2 --></table>

Wenn das nicht klappt, wurde dieses Verhalten von dir wohl überschrieben. Schau in dem Fall also, welche Styles auf die Tabellen und den Containern wirken.

...zur Antwort

Syntaxfehler gibt es keine. Ob die Dateistruktur des Projekts sowie die Programmlogik stimmt, kannst du innerhalb von Eclipse prüfen. Bei Konfigurationsproblemen (bzgl. Ausführung des Programms) schau in die Eclipse-Dokumentation (Launching a Java program).

Bezüglich der Form wäre es besser, sich an den üblichen Java-Konventionen auszurichten:

  • Bezeichner für Packages, Variablen (das inkludiert auch Parameter) und Methoden beginnen mit einem Kleinbuchstaben
  • Bezeichner für Klassen beginnen mit einem Großbuchstaben
  • Da Methoden etwas tun, wäre es besser, sie mit einem Verb oder einer Imperativform (z.B. baueTreppe) zu bezeichnen
...zur Antwort

1) Du änderst in deinem Code die StarterGui, statt der PlayerGui. Ersteres ist ein Replikat von Letzterem, wird aber erst sichtbar, wenn der Spieler zurückgesetzt wird. Ändere also stattdessen den Knoten in der PlayerGui.

2) Da du eine Sekunde je Intervall warten möchtest, wäre es besser, task.wait zu nutzen. Die von dir genutzte wait-Funktion gilt als veraltet und agiert ungenauer.

3) Noch ein wichtiger Rat: Vergib immer eindeutige und aussagekräftige Namen für deine Variablen, Funktionen, etc.. Mit c, q, u.ä. kann niemand etwas anfangen. Du machst es dir ebenso nur schwer, da du dich doch ebenso stets einlesen musst - wofür stand nun gerade d, für was gerade o? Verwechslungen führen schnell zu Fehlern und nach Pausenzeiten ist es aufwendiger, sich wieder einzulesen.

...zur Antwort

Die Meldung weist auf einen Syntaxfehler hin. Der könnte beispielsweise durch eine falsche Klammersetzung oder eine falsche Parameterübergabe verursacht werden.

Reduziere deine Formel auf eine funktionierende Minimalform und nimm dann schrittweise die entfernten Terme wieder hinzu. So dürfte es einfacher fallen, die Fehlerstelle zu finden.

...zur Antwort

Auf NPM kannst du Packages wie mysql2 finden, mit denen du (in diesem Fall) mit einer MySQL-Datenbank kommunizieren kannst. Für deine Datenbank brauchst du lediglich die Verbindungsdaten (Host, Datenbankname, Nutzername, Passwort).

...zur Antwort