1. Speichern vor dem Schließen. 😉
  2. Im Solution Explorer werden deine Klassen aufgeführt. Angenommen, deine Form liegt in Form1.cs, dann brauchst du nur diesen Eintrag doppelt anklicken. Im Kontextmenü gibt es zudem Einträge (View Code / View Designer), wenn du dich im Form Designer / der Form-Klasse befindest. Die Tastenkürzel dazu lauten F7 / Shift + F7.
...zur Antwort

Es reicht eigentlich aus, die Reihenfolge der Selektoren zu ändern (zu: :link - :visited - :hover - :active), sodass der :visited-Zustand den :hover-Zustand nicht überschreibt.

...zur Antwort

Doxygen ist ein Tool, welches generell für das Generieren von Dokumentationen für verschiedene Sprachen bekannt ist und auch für Python verwendet werden kann. In diesem Fall vielleicht kombiniert mit doxypypy.

Weitere Dokumentationstools findest du hier und hier.

...zur Antwort

Da gibt es viele verschiedene Möglichkeiten.

a) Alle Vokabeln mitsamt Übersetzung werden in einer HTML-Tabelle aufgelistet und standardmäßig ausgeblendet (CSS: display-Eigenschaft). Der Nutzer kann via Button / Checkbox die Vokabeln ein- und ausblenden (s. CSS-Pseudoklasse :checked oder via JavaScript).

Entsprechende Beispiele, an denen du dich orientieren kannst, findest du hier oder hier.

b) Du erstellst ein HTML-Formular, in dem, wie bei Option a) die Vokabeln in einer Tabelle aufgelistet werden. In der rechten Tabellenspalte wird ein Textfeld eingesetzt, welches in seinem pattern-Attribut die Lösung beinhaltet und als erforderdlich definiert wird. Wenn dem Formular noch ein Button zugeordnet wird, hat man eine einfache Validierung.

Minimalbeispiel:

<form>
  <label for="word1">Haus</label><input id="word1" pattern="house" required>
  <button>Validate</button>
</form>

Dem könnte man noch jeweils ein Element zufügen, welches die Lösung anzeigt oder einen Tipp gibt.

<span title="house">Tipp</span>

c) Wieder der Tabellenansatz mit Button. Wenn der Button angeklickt wird (schau dir Event Listener an) iterierst du via JavaScript über alle Eingabefelder und vergleichst die Werte mit der Lösung, die in einem data-Attribut liegt.

<input class="vocabulary-input" data-solution="Haus" id="word1">
<span></span>

JavaScript:

const inputFields = document.getElementsByClassName("vocabulary-input");

for (field of inputFields) {
  const solution = field.getAttribute("data-solution");
  field.nextSibling.innerText = field.value === solution ? "Correct" : "Wrong";
}

In dem leeren span-Element kann das Prüfungsergebnis eingesetzt werden.

d) Du legst dir ein Array an, in dem die Vokabeln gespeichert sind.

const vocabularies = [
  { "de": "Haus", "en": house, "es": "casa", /* ... */ },
  { "de": "Lampe", "en": lamp, "es": "lámpara", /* ... */ },
  /* ... */
];

Anhand der Länge und der random-Funktion ermittelst du einen Zufallsindex, um ein zufälliges Objekt zu erhalten. Zu dem kannst du folgend den Nutzer testen.

Ich stelle mir das so vor: Es gibt einen Generate-Button, der immer wieder einen neuen Zufallsindex sucht und das Wort ausgibt, welches geprüft werden soll. Wie du die Sprachen vorher festlegst (oder erst mit dem Generieren?), kannst du ja für dich selbst auswürfeln.

Ein zweiter Button ermöglich das Prüfen.

Schau dir dafür Objekte, Arrays und Event Listener an.

e) Du schaust nach einer API, der du irgendein Wort zuschicken kannst, um als Ergebnis die Übersetzung zu bekommen. Dann brauchst du wie in d) nur eine Wörterliste, die sich (erneut via Zufallsindex) abarbeiten lässt. Für die Prüfung vergleichst du die Eingabe mit der Übersetzung von der API.

Ich könnte nun noch weitermachen mit dem Auflisten möglicher Umsetzungen (die obigen Optionen ließen sich zudem unterschiedlich kombinieren), doch ich denke, dass das als Anregung ausreichen wird.

Soweit habe ich auch nie den Fall beachtet, dass es sich oft nicht auf eins-zu-eins-Paare beschränkt, sondern dass Wörter ebenso mit anderen Wörtern übersetzt werden können. Im Fall von b) kann man reguläre Ausdrücke im Attribut einsetzen, um eine größere Auswahl an Lösungen zu erlauben. Für die nachfolgenden Lösungen kann man mit Funktionen wie includes oder indexOf in Strings / Arrays suchen, statt mit einem strikten Vergleichsoperator zu arbeiten.

...zur Antwort

Zunächst fallen mir einmal wieder einige direkte Fehler im Markup auf sowie Punkte, die sich verbessern lassen.

  • Du schließt den letzten button-Tag nicht.
  • In deinem h1-Element hast du einen Paragraph, der da nicht hineingehört. Verschiebe die Attribute einfach auf das h1-Element und entferne den p-Tag. Mit margin/padding kannst du nachjustieren, wenn sich die Höhe der Überschrift eklatant ändert.
  • Ich sehe mehrere style-Tags im body deines Dokuments. Verschiebe sie in den head, um zu gewährleisten, dass die Stylesheets möglichst früh vom Browser geladen werden können. Nutze zudem nur einen style-Tag oder binde das CSS als externe Datei via link-Tag ein. Das dürfte dein Dokument übersichtlicher machen. In dem Zuge würde ich dir zudem raten, die Inline-Styles ebenfalls in Klassenselektoren umzuschreiben. Das class-Attribut verkraftet durchaus eine Aufzählung mehrerer Klassenselektorennamen (getrennt via Leerzeichen).
  • Deine Buttons benutzen dieselbe ID, dasselbe gilt für deren span-Kinder. Eine ID kennzeichnet sich aber gerade dadurch aus, dass sie eindeutig ist, also nur ein einziges Mal im Dokument vorkommt. Schau am besten dein komplettes Dokument durch, falls es noch weitere Fälle gibt. Verteile zur Lösung entweder unterschiedliche ID-Werte oder setze stattdessen das class-Attribut ein.
  • Im #b2-Selektor (CSS) hast du einen überaus deutlichen Syntaxfehler.

Bezüglich deines Problems, welches du hier ruhig einmal eindeutig beschreiben hättest können:

An sich benötigst du nur einen Container, in dem du die beiden Buttons unterbringst.

<div class="button-container">
  <button class="button on" name="garten" data-normal="garten on" data-hover="garten off" type="button">
    <span class="sb3">garten on</span>
  </button>
  <button class="button off" name="garten" data-normal="garten off" data-normal="garten on" onclick="window.location.href='{% url udata %}';">
    <span class="sb3">garten off</span>
  </button>
</div>

Die knopf-Selektoren können raus, der Inline-Style übrigens ebenso. Er übt hier eh keinen Einfluss auf das Element aus.

.button-container {
  height: 72px;
  position: relative;
  margin: 0 auto;
  width: 240px;
}

.button-container .button {
  left: 0;
  margin: 0;
  position: absolute;
  top: 0;
}

.button-container:hover .on,
.off {
  display: none;
}
  
.button-container:hover .off {
  display: block;
}

Soweit nur die stumpfe Umsetzung der Funktion. Die beiden Buttons werden übereinandergeschoben und anhand des Containers wird folgend entschieden, welcher der beiden Buttons ein-/ausgeblendet wird.

Statt dieser Lösung könnte man sich auch nur darauf konzentrieren, den Text im Button durch Ein-/Ausblenden eines span-Elements zu ändern:

<button class="button" ...>
  <span class="sb3">garten
    <span class="on">on</span>
    <span class="off">off</span>
  </span>
</button>

CSS:

.off,
.button:hover .on {
  display: none;
}

.on,
.button:hover .off {
  display: inline-block;
}

Eine dritte Lösungsoption wäre der Einsatz von JavaScript. Hier soweit nur in Kurzform:

<a aria-live="polite" class="button" href="..." id="link">On</a>
<script>
  const link = document.getElementById("link");
  
  function on() {
    link.innerText = "On";
  }

  function off() {
    link.innerText = "Off";
  }

  link.addEventListener("mouseover", off);
  link.addEventListener("focus", off);
  link.addEventListener("mouseout", on);
  link.addEventListener("blur", on);
</script>

Wie du siehst, habe ich diesmal einen Link verwendet, der generell für deinen Anwendungsfall m.E. geeigneter wäre. Immerhin möchtest du ja mit deinen Buttons eh nur auf ein externes Ziel verweisen.

Des Weiteren habe ich diesmal gleich auch den :focus-Zustand berücksichtigt, der bei den obigen Lösungsvorschlägen ebenfalls noch ergänzt werden sollte. So ließe sich der Zustand des Elements auch für Nutzer nach außen transportieren, die vorzugsweise mit der Tastatur / über Fokussierung die verschiedenen Seitenelemente ansteuern.

...zur Antwort

Dies wäre eine mögliche Implementation:

(defparameter *max_value* -1000)

(defun get_max(list)
  (if list
    (progn
      ((lambda (factor)
        (if (= (mod factor 2) 1)
          (setf *max_value* (max *max_value* (expt factor 2)))
        )
      ) (car list))
      (get_max (cdr list))
    )
  )
)

(get_max '(1 3 2 6 5 4 1))
(print *max_value*)

Wie du siehst, ist die Funktion rekursiv. Mit jedem Aufruf wird ihr die Liste verkürzt um den ersten Eintrag weitergegeben (car). Wenn sie noch Einträge hat, wird die globale Variable neu gesetzt und die nächste Iteration aufgerufen.

Die mathematischen Funktionen max, mod und expt sollten selbsterklärend sein, progn ermöglicht die Ausführung mehrerer Anweisungen im if-Körper.

...zur Antwort

Dann beschreibe doch erst einmal, was du konkret brauchst und wie der Programmablauf sein müsste.

Für einen Login Screen fallen mir bspw. zwei Eingabefelder, ein Button und ein Label für Eingabe und Feedback (vom Programm) ein. Sich so etwas in Xcode zusammenzuschieben, wird wohl kaum Probleme bereiten. Hilfe dazu bekommst du auch von Entwicklerplattformen wie der von Apple, Ray Wenderlich, u.a.:

  • https://developer.apple.com/library/archive/referencelibrary/GettingStarted/DevelopiOSAppsSwift/BuildABasicUI.html
  • https://www.raywenderlich.com/ios/paths/learn
  • ...

Gerade für einen Anfänger halte ich es für ratsam, sich anfangs mit solchen Quellen zu beschäftigen.

Für den Logikteil brauchst du die Nutzereingabe aus den Eingabefeldern und die richtigen Logindaten. Die müssen nur miteinander verglichen werden.

Wenn die Logindaten aus Firebase kommen, beschäftige dich zuvor damit, wie man Firebase in das eigene Projekt einbinden und mit der Datenbank kommunizieren kann. Es gibt neben der offiziellen Dokumentation einige Tutorials dazu (Beispiel).

...zur Antwort

Der Hamster kann doch prüfen, ob vor ihm eine Wand ist oder nicht (vornFrei). Er braucht nur so oft nach vorn gehen, bis er auf eine Wand (also das Ende des Spielfelds) trifft.

Bei jedem Schritt muss er so oft ein Korn abgeben, bis zwei Körner auf dem jeweiligen Feld liegen.

Vergleiche noch einmal mit den dir gelehrten Werkzeugen, welche dafür am besten passen.

...zur Antwort

Bau dir einen entsprechenden SQL Query, der die Filterung und Sortierung für dich übernimmt.

Dieser dürfte passen:

SELECT zahl FROM tabellenname WHERE datum >= DATE_SUB(NOW(), INTERVAL 1 HOUR) ORDER BY zahl DESC

Der muss nun nur noch via PHP an die Datenbank geschickt werden.

...zur Antwort
net.minecraftforge.fml.loading.moddiscovery.InvalidModFileException: Missing License, please supply a license. (main)

In deiner mods.toml-Datei fehlt eine Lizenzangabe.

Die Lizenzangabe wurde wohl in Build 1.16.1-32.0.90 eingeführt:

Update coremods and spi, include mandatory license field in metadata. Added at top level of mods.toml file.

Und ist seit dem Build 1.16.1-32.0.93 wieder optional:

Make license toml entry optional during 1.16.1

Quelle

Grundsätzliche Informationen über die mods.toml findest du hier: https://mcforge.readthedocs.io/en/latest/gettingstarted/structuring/#the-modstoml-file

Entweder also, du nutzt eine andere Forge-Version oder du setzt die Lizenz.

license="..."

Welche Werte konkret erlaubt sind, kann ich dir nicht sagen. Ich habe zum Vergleich einmal in diese JAR geschaut, dort war MIT angegeben. Daher vermute ich, dass auch solche, wie GPL oder LGPL gesetzt werden könnten.

Welche Lizenzform für deine Anwendung richtig ist, musst du selbst recherchieren. Ein paar Schlüsselbegriffe habe ich dir im vorherigen Absatz ja genannt.

...zur Antwort
Wie lange (...)

Rechne einfach in Monaten. Ich gehe hierbei auch davon aus, dass du dich nicht nur oberflächlich mit 1-2 Themen auseinandersetzt, sondern auch mit Motivation und Interesse Themen verfolgst, die dein Grundwissen erweitern (und Grundlagen festigen), selbst wenn es nicht konkret für diese Webseite benötigt werden würde.

Diese Webseite selbst lässt sich (mit Grundkenntnissen) in kürzerer Zeit erstellen. Da würde ich jetzt erst einmal in Wocheneinheiten rechnen.

Diese Schätzungen berücksichtigen, dass du nicht Vollzeit unter Druck daran arbeitest und vor allem, dass du vermutlich komplett neu im Themenbereich Programmierung bist, also auch einige Extrarunden drehen wirst (weil du hier und da noch irgendwo feststecken bleiben wirst oder die ersten Versuche durch neu erworbenes Wissen ersetzt).

In der Hinsicht kann ich dir auch nur raten: Lasse dir Zeit, nimm dir die Zeit. An Webseiten kann man, wenn man möchte, ewig herumwerkeln. Neugier und Experimentierfreudigkeit werden dir helfen, neue Informationen / Praktiken / allgemein Erfahrungen zu sammeln.

(...) und was muss ich können (...)

Bevor du dich mit irgendeiner Programmiersprache auseinandersetzt, solltest du erst einmal HTML und CSS lernen, da das die absoluten Basistechnologien sind, um Webseiten zu beschreiben.

Die Webseite, die du da angegeben hast, verwendet PHP, JavaScript und mit hoher Wahrscheinlichkeit eine MySQL-Datenbank. Damit solltest du dich also im Anschluss auseinandersetzen.

Ein paar gute Ressourcen zum Lernen sowie Tipps habe ich hier und hier schon einmal aufgelistet.

Neben diesen Punkten gäbe es aber noch weitere Felder, die etwas Aufmerksamkeit bedürfen oder die zumindest für die Zukunft nützlich wären. Zum Beispiel ein paar Mindestkenntnisse bezüglich Datenschutz/Rechtliches, Bildbearbeitung, Tools für die Arbeit mit dem Webserver, sowie wenigstens ein paar Designregeln (Anordnung von Elementen, responsive Design, u.ä.).

https://ma(...)

Bezüglich der Webseite: Ich würde sie ganz ehrlich nicht unbedingt als Vorbild nehmen, denn sie ist etwas dürftig umgesetzt (in Design, Rechtschreibung und technischer Umsetzung).

...zur Antwort

Du hast beachtet, dass im CodePen SCSS verwendet wird?

Wenn du es Eins-zu-eins kopieren möchtest und selbst nicht mit SCSS arbeitest, dann klicke in der CSS-Box auf den Pfeil rechts oben und wähle View Compiled CSS aus.

Beachte zudem, die einzelnen Code-Bereiche in eine HTML-Struktur einzufügen, sodass ein valides Dokument herauskommt. Nur die divs in der HTML-Datei zu haben, wäre falsch. Der CSS-Code müsste zudem innerhalb von style-Tags eingesetzt oder werden oder in eine CSS-Datei kommen, die du via link-Tag im head-Bereich des HTML-Dokuments inkludierst.

...zur Antwort

Du brauchst zunächst eine Quelle, die dir sagen kann, auf welcher Seite du dich gerade befindest. Die URL eignet sich in der Regel ziemlich gut dafür. Sei es der Dateiname, ein URL-Parameter, o.ä.. Daraus kann man sich eine Überprüfung zusammenbauen, um zu entscheiden, ob man die active-Klasse für den Link herausrendern möchte oder nicht.

Sehr simples Beispiel:

<?php if (isset($_GET["page"]) && $_GET["page"] === "pageA"): ?>
  <a class="active" href="index.php?page=pageA">Page A</a>
<?php endif; ?>

Das könnte man nun noch weiter ausbauen:

<?php
  $currentKey = isset($_GET["page"]) ? $_GET["page"] : "";
  $links = // associative array with links ...
?>
<?php foreach ($links as $key => $link): ?>
  <?php if ($key === $currentKey): ?>
    <a class="active" href="<?= $link->get_url() ?>"><?= $link->get_title() ?></a>
  <?php else: ?>
    <a href="<?= $link->get_url() ?>"><?= $link->get_title() ?></a>
  <?php endif; ?>
<?php endforeach; ?>

$links könnte dabei ein assoziatives Array mit mehreren Link-Objekten sein:

class Link {
  // functions: get_title, get_url, etc. ...
}

$links = array(
  "pageA" => new Link(/* ... */), 
  "pageB" => new Link(/* ... */),
  // etc. ...
);
...zur Antwort

In Visual Studio kannst du eine WPF-Anwendung entweder für .NET Core oder für das .NET-Framework anlegen (WPF ist Bestandteil des .NET-Frameworks, .NET Core wiederum ist quasi eine Neuentwicklung des .NET-Frameworks). Beim Anlegen des Projekts fügt Visual Studio auch die notwendigen Referenzen hinzu.

Baue deine Projekt einmal. Wenn der Prozess erfolgreich abgeschlossen werden kann, hast du ein funktionstüchtiges Projekt mit allen notwendigen Abhängigkeiten.

...zur Antwort

Ich denke nicht, dass alle Punkte, die ich beitragen kann (bzw. die mir gerade dazu einfallen), tatsächlich als lustige Stilblüten betrachtet werden können.

Klassenvariable vs. Instanzvariable

Oft werden Instanzvariablen in einem Topf mit Klassenvariablen geworfen. Vermutlich folgt diese Schlussfolgerung daher: Beide Variablentypen werden innerhalb der Klasse definiert.

switch ist eine Schleife

Beliebter Fehler, wie bei if. Hat vermutlich seinen Ursprung darin, dass im Konstrukt ja wie bei Schleifen break verwendet werden kann.

head - header

Zwei HTML-Tags mit unterschiedlicher Bedeutung. Dennoch sind mir schon Fälle untergekommen, bei denen sie aufgrund des ähnlichen Namens verwechselt wurden.

Abstände zwischen HTML-Elementen schafft man mit einem border

Ja, der Meinung war ich auch, dass margin und padding stets überbewertet werden. Mit dem border kann man den freien Platz sogar farblich hinterlegen. 😜

Java-Skript

Das JavaScript und Java andauernd fälschlicherweise als gleiche Sprachen gewertet werden, ist ja bereits bekannt. Mir ist allerdings aufgefallen, dass sich daraus auch bei einigen ein Mischwesen entwickelt hat. Der Bindestrich und die deutsche Schreibweise von Skript werden bewusst verwendet, um sich bei Kritik in die eine oder andere Richtung winden zu können oder vielleicht auch, um zu provozieren.

C - C+ - C++

Einige scheinen dieses Mittelstück zu kennen.

Weitere Vermischungen bzgl. Programmiersprachen

  • Visual Basic - Visual Basic.NET
  • UnityScript - JavaScript
  • Fortran - F#
  • C++ - C#

Die beiden ersten Fälle sind der Kommunikation geschuldet. Der dritte Fall vermutlich wegen dem F und der Tatsache, dass verschiedene bestehende Sprachen damals in .NET aufgenommen werden sollten. Die Gleichsetzung von C++ und C# wiederum ist scheinbar eine neu aufkommende Erscheinung, alternativ habe ich schon Behauptungen gehört, C# wäre ein direkter Parallelstrang zu C++.

Weitere beliebte Verwechslungen:

  • In der Schreibweise: QT (QuickTime) und Qt
  • Visual Studio und Visual Studio Code
  • Deklaration und Definition

Was ist eine Programmiersprache?

Diskussionen dazu gibt es immer wieder.

Wenn du eine Programmiersprache kannst, kannst du alle / Alle Programmiersprachen sind gleich aufgebaut

Absolut nicht.

Gut lesbarer Code ist langsamer als kurzer, schlecht lesbarer Code

Auch wenn es einige sehr gut optimierte, jedoch hässliche Code-Beispiele gibt, muss gut lesbarer Code nicht zwangsweise schlechter in seiner Performance sein.

Java ist langsam

Auf dieses Vorurteil stößt man immer noch. Dabei ist Java heutzutage gerade wegen seiner guten Performance eine beliebte Wahl.

Um eine ausführbare Datei zu erzeugen, brauchst du nur die Dateiendung zu .EXE umändern.

Irgendwie hat das bei mir bis heute nicht so recht geklappt.

Browsertechnik

  • Wenn ich JavaScript deaktiviere, sind auch Cookies deaktiviert
  • Wenn ich Java im Browser deaktiviere, wird auch JavaScript nicht ausgeführt.

Zu letztgenannter Aussage: Das ein Unterschied zwischen den Sprachen besteht, war der Person klar, als sie diese These aufgestellt hat.

Captcha und CSRF

Ersterer kann nur bei richtiger Implementation einen CSRF-Schutz ersetzen.

CMS und Website Builder sind das Gleiche

Der Ursprung für dieses Denken ist wohl der Features einiger CMS geschuldet, die auch das Zusammenstellen von Webseiten via Drag & Drop erlauben.

Google Analytics, Google Tag Manager und Big Data

Die beiden Programme stehen irgendwie ebenso auf der Liste an Programmen, die gern in ihrer Funktionalität verwechselt werden (oder bei denen die Funktion generell nicht klar zu sein scheint). Ich habe dazu schon Gesprächsrunden erlebt, die ziemlich grotesk wurden, weil sich die Gesprächspartner (aus dem Management-/Business-Bereich) möglichst viele Big-Data-like Fachwörter an den Kopf geworfen haben und ganz eindeutig hervorging, dass sie keine Ahnung haben, wovon sie überhaupt reden. Wiedergeben kann ich solche Gespräche leider nicht. Das muss man eh besser live erlebt haben.

Der Zugriff auf die Matrix und die Persönlichkeit des Programmierers

Ich denke schon, dass das zu Stilblüten irgendwie dazugehört: Was sind die größten Vorurteile gegenüber Programmierern?. Dem ergänzt sei die Vorstellung, ein Programmierer würde sich tatsächlich an den Rechner setzen und in den kommenden Stunden Nullen und Einsen eintippen.

Vor einigen Jahren hat mich zudem ein Senior Programmer darüber aufklären wollen, wie eine Programmiererin nur (äußerlich) aussehen könne, wenn sie denn existiert. Seine Ausführungen, auf die ich ganz sicher nicht konkret eingehen werde, waren ziemlich frauenfeindlich und mit Ich-mach-doch-nur-Spaß auch nicht zu verwechseln.

Die Arbeit selbst

Dazu ein paar Aussagen, denen ich nicht zustimmen kann:

  • Programmieren ist kein kreativer Prozess
  • Das tippst du doch in ein paar Minuten herunter? (beliebte Aussage von demjenigen, der ein Programm von dir will)
  • Ein Programmierer muss sehr gut in Mathematik sein

Überhaupt gibt es so einige falsche Vorstellungen von Managern oder Kunden, wie Programmierung abläuft. Sei es die Art des Zeitmanagements, die Art der Arbeitsaufteilung (Lass uns mehr Programmierer ordern, um das Projekt schneller voranzubringen), die Notwendigkeit von Tests (Tests sind doch überbewertet. Oder: Das mach ich schnell.) oder die Beschreibung des Produkts (Das Programm muss meinen Anforderungen entsprechen, die ich überhaupt nicht benannt habe).

Einen Prototyp als tatsächliche Basis für das Produkt nutzen

Diese Vorstellung gefällt vor allem Kunden und Managern. Selbst wenn zuvor deutlich und klar hervorgehoben wurde, dass der Prototyp nur zum Testen dient.

...zur Antwort

Statt eine Methoden getweight2 zu definieren, solltest du zunächst getweight in der Subklasse überschreiben.

Beispiel:

class Base {
  public:
    virtual float getweight();
};

class Sub : public Base {
  public:
    virtual float getweight() override;
};

Für den Algorithmus kann dann von Polymorphie Gebrauch gemacht werden.

std::shared_ptr<Base> someObject = std::make_shared<Sub>();
someObject->getweight();

Dafür muss es dir aber auch möglich sein, die konkrete Instanz vorzugeben.

...zur Antwort

Das Buch ist m.E. gut, weshalb ich es oft hier empfehle, wenn jemand nach C#-Quellen fragt.

Da Kühnel schon über Jahre hinweg die Auflagen zu den verschiedenen C#-Versionen schreibt und der Verlag ein Open Book zu C# 5 kostenlos zur Verfügung stellt, könntest du dieses für dich als Leseprobe nutzen.

Des Weiteren kannst du ja auch auf der von dir verlinkten Seite über die Leseprobe in das Inhaltsverzeichnis einsehen, um zu schauen, welche Themen für dich womöglich noch von Interesse sind. Anhand dessen könntest du nochmal weiterschauen, denn wenn dir bereits Grundthemen wie die OOP bekannt sind, könntest du ebenso nach Quellen zu spezifischen Themen recherchieren (z.B. WPF/XAML, Xamarin, .NET Core, ASP.NET). Englische Literatur (wie Pro C# 8) deckt solche Themen ab.

...zur Antwort
jedoch habe ich keine ahnung von css, java oder sonst irgendwelchen anderen programiersprachen :D. Ist es irgendwie möglich so etwas auch nur in html zu "programmieren"?

Nun, Java benötigst du zu deinem Glück überhaupt nicht. JavaScript einzubeziehen, wäre hingegen nicht verkehrt, wobei es auch eine Lösung ohne gibt. Nur mit HTML allein schaffst du es aber nicht.

Ich zeige zunächst ein einfaches Beispiel mit HTML, CSS und JavaScript:

<!doctype html>
<head>
  <title>Show or hide iframe</title>
  <style>
    .hidden { display: none; }
  </style>
</head>
<body>
  <iframe id="iframe" src="some-url ..."></iframe>
  <button id="button" type="button">Hide</button>
  <script>
    const iframe = document.getElementById("iframe");
    document.getElementById("button").addEventListener("click", function() {
      iframe.classList.toggle("hidden");
      this.innerText = iframe.classList.contains("hidden") ? "Show" : "Hide";
    });
  </script>
</body>

Dem Button wird ein Event Listener angehängt. Bei Klick wird dem iframe-Element entweder eine CSS-Klasse (hidden) zugefügt oder wieder genommen (siehe toggle-Funktion). Wenn sie auf dem Element gesetzt ist, wird der initiale Wert der display-Eigenschaft mit none überschrieben.

Das Setzen des Buttontexts (innerText) ist nur hübsches Beiwerk.

Nun noch zu der oben erwähnten Lösung ohne JavaScript:

<!doctype html>
<head>
  <title>Show or hide iframe</title>
  <style>
    .togglebox,
    .togglebox:checked + iframe {
      display: none;
    }

    .button {
      background-color: #eee;
      border: 1px solid rgb(118, 118, 118);
      border-radius: 3px;
      font: 400 13.3333px Arial;
      padding: 2px 6px;
    }

    .button:hover {
      background-color: #ddd;
    }

    .button:active {
      background-color: #f4f4f4;
    }
  </style>
</head>
<body>
  <label class="button" for="togglebox">Show or hide</label>
  <input class="togglebox" id="togglebox" type="checkbox">
  <iframe id="iframe" src="some-url ..."></iframe>
</body>

Hier ist es an eine Checkbox gebundenes Label, welches visuell einen Button vortäuscht (keine Frage, die visuelle Imitation bekommt man sicherlich noch besser hin). Bei Klick de-/aktiviert es die Checkbox.

Zwar ist CSS keine Programmiersprache, die wie JavaScript Anwendungslogik formulieren kann, jedoch bietet die Pseudoklasse :checked die Möglichkeit, einen Selektor zusammenzubauen, der das iframe-Element beschreibt, sobald die Checkbox aktiviert ist. Dann wird er, wie im ersten Beispiel, ausgeblendet.

Für weitere Informationen zu den angeführten Elementen aus Beispiel 1 und 2 würde ich dir das Mozilla Developer Portal als Nachschlagewerk (und auch Quelle für Tutorials zur Webentwicklung) empfehlen.

Versuche mehrere Videos durch verschiedene Knöpfe anzeigen und wieder verschwinden zu lassen.

Für diesen Fall müsste Beispiel 1 abgeändert werden. Zum Beispiel so:

<!-- doctype, etc. -->

<div>
  <iframe src="some-url ..."></iframe>
  <button class="show-or-hide-button" type="button">Hide</button>
</div>

<div>
  <iframe src="some-url ..."></iframe>
  <button class="show-or-hide-button" type="button">Hide</button>
</div>

<!-- etc. ... -->

<script>
  const showOrHideButtons = document.getElementsByClassName("show-or-hide-button");
  for (let i = 0; i < showOrHideButtons.length; ++i) {
    const iframe = showOrHideButtons[i].parentElement.querySelector("iframe");
    showOrHideButtons[i].addEventListener("click", function() {
      iframe.classList.toggle("hidden");
      this.innerText = iframe.classList.contains("hidden") ? "Show" : "Hide";
    });
  }
</script>

<!-- further html ... -->

IDs dürfen nur einmal in einem HTML-Dokument vorkommen, daher würden Button und iFrame hier einfach in eine Box gestopft werden, damit ein eigener für sich abgeschlossener Kontext entsteht. Die Buttons werden mit einem class-Attribut ausgestattet, sodass sie später im JavaScript-Teil leicht abgreifbar sind.

Die for-Schleife geht durch die Liste der gefundenen Buttons und ermittelt je Schritt das richtige iFrame, welches mit dem gerade vorliegenden Button in einer Box liegt und hängt die notwendigen Event Listener an.

...zur Antwort

Du brauchst die ID nur an die URL hängen.

location.href += "#" + id;
...zur Antwort
(...) In dem Video ist zu sehen, dass diese Methode sobald man das "On" eingegeben hat schon Vorgeschlagen wird (...)

Installiere dir die Visual Studio Tools für Unity.

Eine Anleitung für die Implementation von OnTriggerEnter findest du in der Scripting API. Ansonsten gibt es auch verschiedene Videos auf YouTube zu dem Thema.

...zur Antwort

Beide Programmiersprachen werden dazu genutzt, Computerprogramme zu entwickeln.

PHP wird dabei vorwiegend zur Entwicklung von dynamischen Webanwendungen, die auf einem Webserver laufen, eingesetzt.

Diese könnten z.B.:

  • vom Browser verschickte Formulardaten (Kontaktformular, Formular zum Anmelden bei einem Newsletter, o.ä.) verarbeiten (auf Validität prüfen, irgendwo speichern, in einer E-Mail verschicken, ...)
  • bestimmte Informationen (aus einer Datenquelle) herausziehen und als bestimmtes Datenformat zusammenbauen (HTML, XML, JSON, ...)

Eine Vielzahl an CMS, Foren- oder E-Commerce-Anwendungen basieren auf PHP. Ein paar konkrete und bekanntere Beispiele: WordPress, Drupal, Magento, vBulletin.

In anderen Anwendungsgebieten ist PHP sehr rar bis gar nicht vertreten. Es ist zwar möglich, mit der Sprache bspw. Desktopanwendungen zu entwickeln (s. Nightrain Projekt, u.ä.), doch sind solche Ausflüge in fremde Gewässer meist auch mit einigem zusätzlichen Aufwand verbunden, da erst entsprechende Vorbedingungen geschaffen werden müssen. Verschiedene Programmbibliotheken, die in anderen Sprachen bestimmte Funktionalitäten bereits implementieren, existieren in PHP halt meist noch nicht.

JavaScript wird ebenso in der Webentwicklung verwendet. Sowohl clientseitig, also im Webbrowser, als auch serverseitig. Hier endet der Anwendungsbereich aber noch nicht. JavaScript wird ebenso in Bereichen wie diesen eingesetzt:

  • Zur Spieleprogrammierung (Scripting der Spiellogik)
  • Generell der App-Entwicklung (Desktop / mobile; s. Electron, Ionic, React)
  • Generell als embedded language in Simulations-/Modellierungs-/Formatierungs-/Animations-/...-software

Das sollte soweit als grober Überblick ausreichen.

Wenn du konkrete Themenschwerpunkte hast (z.B. Programmierung von Smart Home-Anwendungen) und nun wissen willst, ob die auch mit PHP / JavaScript / ... umsetzbar sind (bzw. ob es günstig wäre, diese einzusetzen), sollte eine Recherche via Google hilfreich sein. Die volle Bandbreite an Möglichkeiten kann hier schließlich nicht aufgezählt werden.

...zur Antwort

Zuallererst würde ich der Klasse Display zwei Getter schenken:

public int getRowCount() {
  return rows;
}

public int getColumnCount() {
  return cols;
}

Generell sehe ich bei deinem Programm das Problem, dass konkrete Werte an mehreren Stellen unabhängig voneinander statisch gesetzt werden, sodass bei einer Änderung der Größe des Spielfeldes einiger Aufwand entstehen würde. Das Risiko, hierbei etwas zu vergessen, ist nicht gering. Man kann also von einer potenziellen Fehlerquelle reden.

Was ebenso auffällt: Viele deiner Variablen sind in ihren Bezeichnern nicht gerade aussagekräftig: a, b, d, i, .... Es fällt leichter, so ein Programm zu lesen, wenn an jeder Stelle, an der eine Variable eingesetzt wird, auch klar ersichtlich ist, welchem Zweck sie dient / was sie speichert. In den folgenden Snippets werde ich die angesprochenen Bezeichner nicht ändern, diese Aufgabe überlasse ich dir.

Die wesentliche Anpassung der Logik beginnt bei der Funktion turnAllOff. Sie setzt bei jedem Zeichenvorgang alle Felder auf false, was aber nicht sein darf. Die bereits erreichten Spalten am Anfang müssen ihren Zustand beibehalten.

Also wird die Funktion umbenannt und wie folgt geändert:

public void turnColumnsOff(int startColumn) {
  for (int column = 0; column < cols; ++column) {
    if (startColumn < column) {
      for (int row = 0; row < rows; ++row) {
        leds[column + cols * row] = false;
      }
    }
  }
}

An sich wäre es hier wohl einfacher gewesen, ein zweidimensionales Array zu nutzen, um sich die Rechnerei zu sparen.

Danach wird die draw-Funktion geändert.

Mit jedem Durchlauf deiner Animation darf das Zurücksetzen der Spalten ja nur noch ab einer bestimmten Spalte beginnen. Dazu bedarf es einer globalen Variable (lastActivatedColumn), die sich den letzten Zustand / die letzte aktivierte Spalte merkt. Die Variable i braucht folglich nur noch bis zu dieser Spaltenzahl laufen und muss danach auch wieder auf den Anfangswert zurückgesetzt werden, damit die Animation neu beginnen kann.

int lastActivatedColumn = 0;

// setup ...

void draw() {
  d.turnColumnsOff(lastActivatedColumn);

  for (int row = 0; row < d.getRowCount(); ++row) {
    d.setLed(i, row, true);
  }
  
  if (i > lastActivatedColumn) {
    --i;
  }
  else if (lastActivatedColumn < d.getColumnCount()) {
    ++lastActivatedColumn;
    i = d.getColumnCount() - 1;
  }

  d.show();
}

Die draw-Funktion habe ich im Übrigen via Schleife verkürzt.

Zu guter Letzt würde ich noch empfehlen, auskommentierten Code sowie unnötige Variablen und Leerzeilen aus dem Programm zu entfernen. Wenn man das immer gleich direkt macht, ist es auch am einfachsten, den Überblick über das Programm zu behalten.

...zur Antwort

Also zunächst solltest du deine Markup-Fehler korrigieren.

1) Der Doctype ist unvollständig.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

2) Der startende html-Tag fehlt.

<html xmlns="http://www.w3.org/1999/xhtml">

3) Der Wert für das method-Attribut müsste post lauten (kleingeschrieben).

Wieso du überhaupt mit XHTML 1.0 arbeiten möchtest, erschließt sich mir nicht ganz. HTML5 ist doch viel moderner.

Für einen Login mit unterschiedlichen Nutzern, die dynamisch hinzukommen können, benötigst du noch eine Registrierung (ein HTML-Formular, welches die Nutzerdaten an ein PHP-Skript zur Speicherung versendet). Wenn dir statisch vorgegebene Nutzer reichen, kannst du dir das Registrierungsformular ersparen.

In beiden Fällen brauchst du:

  • noch ein Eingabefeld für den Nutzernamen (wenn Nutzer durch Nutzernamen unterscheidbar sein sollen)
  • eine externe Speicherstelle für die Nutzerdaten (Datei / Datenbank); die Daten hingegen im Skript zu speichern, wäre unsicher
  • eine passende Prüfung: Die Nutzerdaten müssen aus der Speicherstelle ausgelesen und mit der Nutzereingabe verglichen werden (schau in die PHP-Dokumentation nach Datei-/MySQLi-/PDO-Funktionen)

Für Registrierung- + Loginsystem gibt es eigentlich schon etliche Schritt-für-Schritt-Tutorials und sie sind auch wirklich nicht schwer zu finden (Beispiel).

...zur Antwort

1) Du musst deinen Code richtig einrücken. Jeglicher Code, der in einem Code-Block steht, wird um vier Leerzeichen eingerückt.

Beispiel:

number = 2

if number == 2:
  print("number is 2")
else:
  print("number is not 2")

Da die print-Befehle jeweils in einem eigenen Code-Block stehen (einmal für if, einmal für else), werden sie eingerückt. Würdest du innerhalb eines solchen Blocks einen weiteren Block öffnen, würde dieser erneut um vier Leerzeichen eingerückt werden.

2) Diese Ausdrücke, die du hier

if 'ich' or 'er' or 'sie' or 'es' or 'wir' or 'ihr' not in str:

mittels or verbindest, werden einzeln ausgewertet und beziehen sich (mit Ausnahme von ihr) nicht auf not in. Das heißt, der Ausdruck wird immer als wahr gewertet, denn bereits der Wert ich ist nie unwahr.

Das, was du wolltest, müsste ausgeschrieben eher so aussehen:

if ('ich' not in str) or ('er' not in str) or ('sie' not in str) or # etc. ...

(Die Klammern sind der Übersichtlichkeit wegen gesetzt)

Das geht aber noch kürzer. Um zu prüfen, ob ein String einen von verschiedenen Substrings nicht enthält, kann any genutzt werden.

if any(s not in str for s in substrings):
  # do something ...

Die Variable substrings ist hierbei eine Liste der Substrings, auf die geprüft werden soll.

...zur Antwort

Wie erstelle ich in C# Wpf einen Runden ToggleButton?

Ich möchte einen ToggleButten erstellen, der einen runden Rand hat und seine Breite automatisch anpasst.

Mein Code bisher:

Style:

<Style TargetType="ToggleButton" x:Key="favorite_btn">
            <Setter Property="Height" Value="30"/>
            <Setter Property="Width" Value="Auto"/>
            <Setter Property="Background" Value="Red"/>
            <Setter Property="Foreground" Value="White"/>
            <Setter Property="Cursor" Value="Hand"/>
            <Setter Property="Margin" Value="60,0"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate>
                        <Border BorderBrush="{TemplateBinding Background}" BorderThickness="1" CornerRadius="20">
                            <StackPanel Orientation="Horizontal" Background="Red">
                                <Image Height="20" Width="20" Source="{Binding Path=Image}" VerticalAlignment="Center" Margin="5,0,0,0"/>
                                <TextBlock Text="{Binding Path=Text}" Foreground="White" FontSize="20" Margin="5,0" VerticalAlignment="Center" Width="Auto"/>
                            </StackPanel>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

und

<ToggleButton DockPanel.Dock="Top" x:Name="favorite_btn" Style="{StaticResource favorite_btn}" Checked="favorite_btn_Checked" Unchecked="favorite_btn_Unchecked" />

Jedoch bekomme ich am Ende folgendes heraus:

Herauskommen soll aber:

Was mach ich falsch?

...zur Frage

Gib nicht dem StackPanel eine Hintergrundfarbe, sondern dem Border.

<Border Background="Red" BorderBrush="{TemplateBinding Background}" BorderThickness="1" CornerRadius="20">
  <StackPanel Orientation="Horizontal">
    <!-- ... -->
...zur Antwort

Einfaches Beispiel:

<!-- doctype, etc. -->
<textarea id="html"></textarea>
<button id="apply" type="button">Apply</button>
<div id="output"></div>

<script>
  const output = document.getElementById("output");
  const textarea = document.getElementById("html");
  document.getElementById("apply").addEventListener("click", function() {
    output.innerHTML = textarea.value;
  });
</script>

Um Skripts, innerhalb des eingegebenen Codes auszuführen, müsstest du allerdings den eingefügten JavaScript-Code / die script-Tags nochmal herausextrahieren und konkret evaluieren (z.B. mit der eval-Funktion oder bei externen Quellen durch Einfügen des script-Tags via appendChild, statt innerHTML).

...zur Antwort

Im einfachsten Fall prüfst du einfach in der Update-Methode, ob sich der Wert ändert. Speicher dir den SpriteRenderer erst in einem Feld zwischen, er muss ja nicht ständig neu geholt werden.

public SpriteRenderer spriteRenderer;

private bool flipX;

void Start()
{
  spriteRenderer = GetComponent<SpriteRenderer>();
  flipX = spriteRenderer.flipX;
}

void Update()
{
  if (flipX && spriteRenderer.flipX != flipX)
  {
    // do something ...
    flipX = spriteRenderer.flipX;
  }
}

Andernfalls könntest du auch ein Delegate nutzen. Das flipX-Property dürfte künftig aber nur noch über ein anderes Property angesprochen werden, welches bei Änderung ein Event auslöst.

public bool FlipX
{
  get => spriteRenderer.flipX;
  set
  {
    if (spriteRenderer.flipX != value)
    {
      spriteRenderer.flipX = value;

      if (!value && OnFlipXChange != null)
      {
        OnFlipXChange(value);
      }
    }
  }
}

public event OnFlipXChangeDelegate OnFlipXChange;

An dieses Event kannst du dich dann leicht anhängen.

this.OnFlipXChange += ReferenceToYourMethodToExecute;

Falls dir Delegates und Events noch nicht bekannt sein sollten, kannst du in der Microsoft Dokumentation (zu .NET) Weiteres nachlesen.

...zur Antwort

Eine alert-Box nimmt nur Plaintext auf. Du könntest also damit nur die reinen Informationen anzeigen lassen:

<!-- time link and other html ... -->
<span id="Austin__Minnesota_z123" style="display:none"></span>
<button class="blog-name" onclick="showTime('Austin__Minnesota_z123')" type="button">Blog name</button>
<script src="//widget.time.is/t.js"></script>
<script>
  time_is_widget.init({Austin__Minnesota_z123:{time_format:"hours:minutes"}});

  function showTime(id) {
    const time = document.querySelector(`#${id} > span`).innerText;
    alert(`Aktuelle Ortszeit in Austin: ${time}`);
  }
</script>

Und für den Button kann man noch dieses CSS einsetzen:

.blog-name {
  background: transparent;
  border: 0;
  outline: 0;
  padding: 0;
}

Nimm bestehende Bibliotheken wie fancybox, um komplexere Popups zu erstellen.

...zur Antwort

Du kannst es mit einem Headless Browser versuchen (Tutorial).

(...) hab nämlich kein Gradle/Maven (...)

In IDEs wie IntelliJ IDEA oder NetBeans sind solche Tools bereits fest integriert.

...zur Antwort

Kann es zunächst einmal sein, dass du die Arbeitsweise der Timer-Klasse nicht wirklich verstanden hast? Ich kann jedenfalls nicht nachvollziehen, wieso du innerhalb des Timers zum einen eine Endlosschleife startest (die überhaupt keine Abbruchbedingung hat) und zum anderen, wieso du je Schleifenlauf den Thread anhältst. Für das Intervall und die periodische Ausführung ist doch gerade der Timer zuständig.

So könnte ein einfaches Beispiel aussehen:

public partial class TimerExample : Form
{
  private readonly StreamReader _reader;

  private readonly Timer _timer;
  
  public Form1()
  {
    InitializeComponent();

    _reader = new StreamReader("test.txt");
    
    _timer = new Timer { Interval = 1000 };
    _timer.Tick += TransportLettersFromFile;
    _timer.Start();
  }

  private void TransportLettersFromFile(object sender, EventArgs e)
  {
    var currentLine = _reader.ReadLine();

    if (currentLine == null)
    {
      _timer.Stop();
      return;
    }

    SendKeys.Send(Regex.Replace(currentLine, @"[+^%~(){}]", "{$0}"));
    SendKeys.Send("{ENTER}");
  }
}

Da bestimmte Zeichen (unter anderem die Klammern) für die Send-Methode von SendKeys eine spezielle Bedeutung haben, müssen diese von geschweiften Klammern gruppiert werden. Ich habe an der Stelle einen regulären Ausdruck definiert, mit Hilfe dessen die Gruppierung stattfinden kann.

Bei dem Caret-Zeichen kann es allerdings trotzdem noch zu einem Problem kommen und für {^} wird stattdessen ein &-Zeichen ausgegeben. Eine Lösung dafür findest du hier.

...zur Antwort

Das Styling des Instagram Buttons kannst du leicht selbst über das Webinspektor-Tool deines Browsers auslesen (Rechtsklick auf den Button > Element untersuchen / o.ä.). Es listet alle Stylesheets auf, die auf das Element aktiv wirken.

Ich habe einmal einen Follow-Button nachgebaut. Nach einem Verify-Button hätte ich nun vermutlich länger suchen müssen, aber ich denke eh, dass der kaum anders aussehen wird.

HTML:

<button class="instagram-like-button" type="button">Follow</button>

Beachte, dass ein Button kein Kindelement eines a-Elements sein darf! Dein obiges Snippet entspricht also keinem validen HTML und führt für bestimmte Nutzergruppen eher zu Problemen.

Wenn du den Button mit einem Link ausstatten möchtest, kannst du entweder ein Formular zusammenstellen (wobei der Button als Submit-Button eingesetzt wird):

<form action="yourTargetURL">
  <button class="instagram-like-button">Follow</button>
</form>

oder du verwendest einfach nur ein a-Element (das würde ich empfehlen):

<a class="instagram-like-button" href="yourTargetURL">Follow</a>

Da das Styling via Klassenselektor definiert wird, ist es ziemlich flexibel und es sind nur wenige Anpassungen notwendig. In diesem Fall sollte noch dieses CSS-Property ergänzt werden:

text-decoration: none;

Zum CSS generell:

.instagram-like-button {
  background-color: #0095f6;
  border: 1px solid transparent;
  border-radius: 4px;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
  color: white;
  cursor: pointer;
  font-family: -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  font-size: 14px;
  font-weight: 600;
  line-height: 18px;
  padding: 5px 9px;
}

Demo

Vielleicht sind noch ein paar weitere Styles notwendig oder es muss noch eine der aufgezählten Schriften eingebunden werden (es sind ja nicht alle in dieser Auflistung standardmäßig auf jedem Rechner vorhanden). Doch als Grundlage sollte es erst einmal vollkommen ausreichen.

...zur Antwort
(...) ich möchte heute gerne wissen, wie man am besten und einfachsten C# lernt.

Wie du am besten / einfachsten lernst, musst du selbst probieren. Ich werde nur meine eigene Meinung einbringen.

macht es Sinn, sich ein Unity C# Buch zu kaufen und mit diesem zu lernen?

Ich halte es für sinnvoll, nach einem Buch über C# zu suchen (Gründe). Ob es nun gekauft werden muss oder irgendwo ausgeliehen werden kann, schaust du besser selbst.

Nicht nur einen Buchvorschlag, sondern auch verschiedene andere hilfreiche Ressourcen habe ich hier schon einmal aufgelistet.

Mit Unity würde ich, so lange du nicht wenigstens in den Grundkonzepten der OOP vertraut bist, noch nicht beginnen. Es wird oft suggeriert, man könne das auch so nebenbei lernen. Die Ergebnisse dessen, die ich bisher gesehen habe, sprechen in der Mehrzahl dagegen. Am Ende wird es vielleicht auch noch zum Motivationskiller.

Helfen gewisse Tutorials das programmieren zu lernen?

Ja, sicher kannst du auch auf Videoplattformen hilfreiche Tutorials finden. Allerdings würde ich da wirklich empfehlen, nicht eines der erstbesten Ergebnisse einer beliebigen Suche zu wählen. Lies Weiteres dazu hier.

Bezüglich Unity Tutorials würde ich zunächst auf die Unity Lernplattform verweisen sowie für einzelne spezielle Themen auf den offiziellen YouTube-Kanal. Auf erstgenannter Plattform findest du neben der eigenen, ziemlich umfangreichen Auswahl an Tutorials, auch Referenzen auf YouTube (5 Unity Tutorials for new game developers).

Viele sagen, dass "learning by doing" eine gute Option seihe (...)

Das Learning by doing, welches (meiner Erinnerung nach) oft vorgestellt wird, ähnelt eher der Anwerbung zu trial and error-Spielen, was ich als ineffektiv erachte bzw. als besten Weg, schnell viel Halbwissen (und gern auch Copy&Page-Meisterkünste) anzustauen. Auch wenn es von denen, die es empfehlen, sicherlich nicht so angedacht war.

Das Problem ist, dass es bei so einem Vorgehen keinen wirklichen roten Theorie-Faden gibt, der doch gerade für den Anfang ziemlich sinnvoll ist. Möglicherweise wird man auf verschiedene Themenaspekte nie stoßen und sich nicht das Wissen aneignen, welches von Fall zu Fall vorteilhaft wäre (Beispiel: Man lernt nur Listen kennen, aber nie Arrays; man beschäftigt sich nie mit der OOP; man kreiert für sich falsche Erklärungen für verschiedene Verhaltensweisen). Oftmals führt es auch dazu, dass man sich wirklich schlechte Praktiken aneignet (bestes Beispiel ist der Missbrauch des Schlüsselworts static oder sonstiges Gegenarbeiten gegen bestimmte Konzepte), was es zu guter Letzt nur schwerer macht.

Statt einen der beiden Teile (Theorie, Praxis) zu vernachlässigen, sollten sie eher Hand in Hand gehen. Herumexperimentieren? Ja! Das kann man anhand dessen tun, womit man sich gerade beschäftigt. Der Theorieteil führt, der Praxisteil führt weiter.

...zur Antwort
import os

# go to directory
os.chdir("path\\to\\your\\folder")

# read files
files = os.listdir(os.getcwd())

# sort files by modification timestamp
sortedFiles = sorted(files, key=os.path.getmtime, reverse=True)

# get first 50 entries
newestFiles = sortedFiles[:50]

Bezüglich der Darstellung via tkinter hatte ich dir ja bereits in deiner anderen Frage geschrieben.

...zur Antwort

Auf Ersteres gehe ich nicht groß ein. Die Fehlermeldung ist aussagekräftig genug und um Texte zu übersetzen kannst du Google Translate nutzen.

Zu Zweiterem: Das Eclipse Buildship Plugin 3.14 ist eigentlich Bestandteil von Eclipse 2020-06. Du solltest dennoch einmal prüfen, ob es bei dir auch aktuell ist. Schau in den Marketplace.

...zur Antwort

Du brauchst an sich nur eine Auflistung aller Räume in Assoziation mit ihrer Zielseite / dem Zielabschnitt, zu dem weitergeleitet werden soll.

Dem Nutzer gibst du ein Eingabefeld zur Verfügung sowie einen Button, um die Suche zu starten. Sprich, es braucht ein Formular. Ob du dieses serverseitig auswertest oder gleich im Browser mit JavaScript, ist wohl egal. Die Eingabe muss jedenfalls mit den vorrätigen Einträgen der oben genannten Auflistung gegengeprüft werden.

Nach Fund, lässt sich auch das assoziierte Ziel finden und weiterleiten (via JS mit location.href, via PHP mit der header-Funktion).

...zur Antwort

mediaContainerFormat sollte doch wohl eher auf ein select-Element zeigen, welches verschiedene Optionen auflistet.

<select>
  <option> ... </option>
  <option> ... </option>
</select>
...zur Antwort

Auf der Übersichtsseite eines GitHub-Repository hast du doch eigentlich immer einen nicht übersehbaren grünen Button (neuerdings mit Code beschriftet; Beispiel), über den du die Adresse beziehen kannst.

...zur Antwort

Du kannst dich an diesen Beispielen orientieren.

  • https://www.it-swarm.dev/fr/python/tkinter-canvas-scrollbar-grid/832569188/
  • https://stackoverflow.com/questions/53401185/tkinter-display-multiple-images-in-a-grid-with-scrollbar
...zur Antwort

1) Schau auf Turbosquid. Dort gibt es auch kostenlose Charakter-Modelle.

https://www.turbosquid.com/3d-model/free/low-poly/character

2) Charakter Creator-Tools wie MakeHuman (in diesem Fall ein Blender-Addon) können das Erstellen von Charakteren erheblich vereinfachen.

3)

doch ich bin erst ein anfänger bei blender und somit habe ich nur eine figur mit einem komischen kopf etc gemacht

An Lehrmaterial wird es wohl kaum mangeln, Tutorials gibt es auf YouTube zuhauf. Ein gutes Beispiel ist dieses:

https://www.youtube.com/watch?v=4OUYOKGl7x0&t=1s

Die Vorgehensweise, ein Bild als Vorlage zu verwenden, kann ich zudem (für künftige Modelle) nur empfehlen.

Was dir im Folgenden fehlt, ist Übung.

...zur Antwort

Es ist so wie bei unseren üblichen Sprachen zur Kommunikation untereinander: Sie bleibt so lange aktuell, wie sie genutzt wird. So einfach ist das. 😉

Und auch wenn Englisch als Weltsprache bezeichnet wird, ist sie nicht in jedem Teil der Welt dominant. Im asiatischen Raum ist es bspw. Mandarin oder in Südamerika Spanisch. Das kann man auch kleinteiliger betrachten: Möglicherweise gibt es selbst in Deutschland noch einen Ort, wo du mit Platt mehr Chancen in der Kommunikation hast, als mit Englisch. 😁

In der technischen Entwicklung ist das Kommen und Gehen von Sprachen aber natürlich etwas schnelllebiger, denn es ist stärker an wirtschaftliche Zwecke gebunden.

Gute Chancen, sich weit zu verbreiten oder für längere Zeit zu halten, haben meist die Sprachen, die:

1) Einfach sind (einfach zu erlernen, einfach zu schreiben).

Generell sind Skriptsprachen da ein gutes Beispiel: Python, PHP oder Perl haben das gezeigt.

2) Entweder in vielen Anwendungsbereichen angewandt werden können oder eine eigene Nische gefunden haben.

Für den ersten Fall ist Java eines der besten Beispiele. Die Sprache ist populär, denn sie ist (im Vergleich zu einigen anderen Sprachen) schnell, in hohem Maße portabel / plattformunabhängig und hat eine ziemlich gute Performance. Im Vergleich zu unseren menschlichen Sprachen könnte man sie zu den Weltsprachen mit einordnen. Java wird in vielen unterschiedlichen Anwendungsbereichen eingesetzt, es gibt etliche Tools, die jeweils helfen.

Dazu noch zwei Nischenbeispiele:

a) JavaScript ist über Jahre hinweg die einzige Programmiersprache gewesen, die in den wichtigsten Webbrowsern für die Erstellung von clientseitigen Anwendungen unterstützt wurde. Die aufgebauten Alternativen (ich denke dabei an Silverlight-/Flash-Anwendungen oder Java Applets) hatten verschiedene Mängel (Sicherheitsaspekte; Notwendigkeit, als Plugin erst installiert zu werden), bis sie schließlich komplett abgeschafft wurden. Erst in den letzten Jahren gibt es wieder aussichtsreichere Bemühungen, neue Optionen einzubringen (Stichwort: WebAssembly).

b) Verschiedene komplexe, breitlastige Anwendungen wurden mit älteren Sprachen (COBOL, Perl, Visual Basic (Classic), ...) geschrieben und werden heute nur langsam / stückweise neu implementiert (wenn überhaupt), da so eine Neuimplementation natürlich auch ziemlich teuer sein kann.

3) Eine starke Lobby haben.

Auch hierzu zwei Beispiele.

a) Apple hat sich mit der Veröffentlichung von Swift dazu entschieden, ihre bisherige hauptsächlich eingesetzte Sprache (Objective-C) abzusägen, um sich künftigen Entwicklern wieder moderner und offener zu präsentieren (offen im Sinne von: Die Sprache lässt sich leichter lernen).

Des Weiteren bekämpft Apple regelrecht fremde Technologien (um somit die eigene zu stärken). Das bekannteste Opfer dürfte Java sein. Java-Apps werden auf iOS schon seit Jahren nicht mehr unterstützt. Steve Jobs wird Freudentränen in den Augen gehabt haben.

b) Auch Microsoft hat ein Steckenpferd, welches nach bester Möglichkeit promoted wird. Seit der Entwicklung von .NET liegt C# im Fokus und es wurde sogar eine Übergangssprache (J#) erstellt, die Java-Entwicklern einen Wechsel einfacher gestalten sollte.

Sollte eine Sprache, die bisher fast nur von ihrem Entwickler-Support gelebt hat, irgendwann einmal ihren Rückhalt verlieren, ist es natürlich möglich, dass sie nach und nach in einer Versenkung verschwindet, sollte sich nicht eine liebende Community ihrer annehmen. Wie lange sie sich noch als Nischensprache halten kann, ist wiederum davon abhängig, wie viel Zeit vergeht, bis die Anwendungen, die mit ihr entwickelt wurden, ersetzt werden können.

Und wen ich jetzt eine lerne für mein Arduino dan bin ich mir nicht sicher wie lange diese noch aktuell bleiben wird bis sie von der nächsten ersätzt wird.

Ich weiß nicht, mit welcher Sprache du da arbeitest. Der offizielle Support liegt bei C++ und neue Language Bindings werden da eher nur drauf aufbauen. Denen wiederum würde ich eher eine geringere Haltbarkeit zuordnen, da sie oft nur von Privatpersonen oder kleinen Communities entwickelt werden.

Einmal etwas allgemeiner (nicht auf Arduino beschränkt):

Selbst wenn andere Sprachen für die Entwicklung moderner werden, musst du nicht zwingend wechseln. Du kannst auf dem dir vorliegenden Stand weiterentwickeln. Problematisch ist es eher, wenn du dazu auf neue Techniken zugreifen möchtest.

Wenn ein Wechsel wiederum notwendig ist, würde ich das nicht als allzu problematisch betrachten. Zum einen sollte man ja (einfach mal naiv) davon ausgehen, dass das Neue einfacher / besser ist, sonst hätte es sich wohl nicht durchgesetzt. Zum anderen kannst du bis dahin doch schon eine Programmiersprache und hast somit schon einiges Wissen gesammelt, welches einen Wechsel (in den meisten Fällen) einfacher halten sollte, als wenn du komplett neu beginnen würdest.

...zur Antwort

Prüfe einmal:

a) Worauf der git.path in den VS Code-Einstellungen zeigt.

Unter File > Preferences > Settings (Ctrl + Komma) findest du unter Extensions > Git alle Einstellungen zu Git. Die Einstellungen sind alphabetisch sortiert, von Interesse ist Path.

Wenn der Pfad nicht passt, kannst du entweder versuchen, es über die PATH-Umgebungsvariable zu lösen (in der wird der Pfad zur git.exe zugefügt) oder du bearbeitest die settings.json:

{
  "git.path": "absolute\path\to\git.exe"
}

Starte in beiden Fällen VS Code danach einmal neu.

b) Ob deine Built-in Git-Extension überhaupt aktiviert ist.

Unter Extensions (Ctrl + Shift + X) nach @builtin suchen und in der Features-Liste Git anwählen.

...zur Antwort

http://sqlfiddle.com/#!9/a849ba/1/0

Im linken Feld wird das Schema angegeben, im rechten die Queries (SELECT, INSERT INTO, ...).

Ohne Schema gibt es keine Tabelle, aus der du Informationen beziehen könntest. Diese solltest du zudem auch mit Daten befüllen, sonst ist ein ein SELECT erst einmal noch sinnlos.

Für das Schema empfiehlt sich das Text to DDL-Feature (Menü oben). Es vereinfacht den Prozess etwas.

...zur Antwort

Ich habe mir gerade einmal dein unten gepostetes Markup angeschaut. Dieses ist an verschiedenen Stellen fehlerhaft (Beispiel: falscher link-Tag, center gehört nicht zum HTML5-Standard, doppelte ID, ...). Du solltest die Quelle, von der du deine Informationen beziehst, wechseln. Das MDN bietet eine aktuelle und valide Referenz.

Wie es eher aussehen sollte: https://jsfiddle.net/6fzbrm8j/

Dazu ein paar Anmerkungen:

1) Inline-Styles habe ich dabei durch CSS-Selektoren in einem style-Tag ersetzt. Optimalerweise sollten diese mit in deine StyleSheet.css.

2) Ich weiß nicht, was in Script.js steht (daher habe ich deinen JS-Code erst einmal in ein eigenes script-Tag gesetzt), doch ich vermute, sie soll dein Skript beinhalten, welches die Audioquelle steuert. Das Skript sollte erst ausgeführt werden, sobald alle Seitenelemente geladen wurden (andernfalls werden die gesuchten Elemente im DOM noch nicht gefunden). Das lässt sich erreichen, indem man den script-Tag kurz vor dem schließenden body-Element einbindet.

3) Da du zweimal die ID play vergeben hast (was ein Fehler ist), habe ich sie nun dem Paragraph mit dem Code geschenkt.

<p class="code" id="play">dOEZIqGjsRF7h0qibHupMPkcJgfTsY</p>

Da an das Element im script-Block ein Klick Handler gebunden wird, fliegt das onclick-Attribut heraus und die Aktion von TestsFunktion kommt mit in einen Handler.

playBtn.addEventListener('click', function() {
  document.getElementById("TestsDiv").style.display = "none";
}, false);

Ein leerer String ist im Übrigen kein valider Wert für das display-Property. Ich habe dafür nun einfach none gesetzt. Das blendet das angesprochene Element aus. Wenn du einen anderen Zustand möchtest, schau auf MDN nach dem display-Property.

4) Du hast bisher eine nicht existente Variable (audio) angesprochen. Die habe ich noch ergänzt.

5) Sollte deine Webseite im Übrigen über HTTPS laufen, solltest du für deine Audioquelle ebenso schauen, dass diese gesichert (mit HTTPS) eingebunden werden kann. Andernfalls kann es dazu führen, dass die Quelle blockiert wird.

...zur Antwort

Ein JFrame nutzt standardmäßig das BorderLayout, welches sich in die fünf Sektionen aufspaltet, die du da gerade visuell vorliegen hast. Die letztendliche Größenaufteilung läuft dynamisch ab. Die mittlere Fläche (CENTER) bekommt stets den meisten Anteil der Gesamtfläche zugewiesen und alle anderen Flächen vergrößern sich nur soweit, wie sie Platz benötigen.

Ändere also entweder den Layout Manager (welche es gibt, wird hier aufgeführt) oder packe deine Elemente einfach in die CENTER-Fläche.

...zur Antwort

Das ist eine Jython-Implementation der turtle-Bibliothek, konkret die für TigerJython. Schau dir dazu doch einmal die aufgeführten Funktionen an: makeTurtle, penDown, ...

...zur Antwort

GM:S2 ist einfach bedienbar und die genutzte Programmiersprache (GML) hat eine niedrige Lernkurve, lässt sich also auch schnell erlernen. Für jemanden ohne viel Erfahrung in der Spiele-Entwicklung ist die Engine also keine schlechte Wahl.

Auf der Kehrseite ist GM:S2 aber auch in gewissen Punkten beschränkt / nicht so gut aufgestellt wie andere Engines (z.B. gibt es keinen GUI-Editor). Dies macht eine Umsetzung bestimmter Anforderungen etwas umständlicher / aufwendiger.

Das heißt, generell ist GM:S2 für einfache-mittelgroße 2D-Spiele ausgelegt. Schau dir auf der offiziellen Seite am besten die Showcases an.

...zur Antwort

Wenn Unternehmen umfangreiche Software benötigen (ich beziehe mich da auf deinen Tag CRM-System), kaufen/kombinieren/erstellen sie diese in der Regel selbst oder beauftragen professionelle Entwickler(-firmen).

Deine Chancen liegen (auf kurzem Weg) da wohl eher bei sehr kleinen Unternehmen, die bspw. eine eigene Webpräsenz aufbauen möchten. Oder du schaust, dass du irgendwo ein Praktikum bekommst, analysierst dort den Arbeitsablauf und sprichst dich mit den Leuten ab, ob du ihn mit eigener Software optimieren dürftest.

Ansonsten müsstest du selbst in die Materie eines bestimmten Themengebiets einsteigen, um zu erkunden, welche Tools hilfreich wären. Das kann schon bei Erweiterungen für Office-Anwendungen / IDEs / CMS / u.ä. beginnen oder mit Helferbibliotheken, die Daten verarbeiten (Konvertierung von Datenformaten, Extraktion - z.B. Texte aus PDF/PPT/... herauslesen, usw.).

Wenn deine Anwendungen bei Anwendern Anklang finden, werden sie sich auch verbreiten und möglicherweise irgendwann einmal öfter, auch in Unternehmen, eingesetzt.

Auf komplexere Hobbyprogrammierer-Anwendungen (Frameworks, Engines, u.ä.) werden viele Unternehmen dennoch nicht bauen, da solche Projekte oft nicht ausreichend getestet, flexibel genug und überschaubar sind. Dokumentation und stetiger Support sind da ebenfalls relevante Themen (die auch schon bei kleinen Projekten eine Rolle spielen). Das ist aufgrund des bestehenden, wirtschaftlichen Risikofaktors wohl auch verständlich.

Zu guter Letzt könntest du dir auch Gedanken machen, wie du später selbst deine Arbeit erleichtern könntest. Ein einfach bedienbares, persönliches Trackingtool für Arbeitszeiten ist z.B. etwas, was du angehen könntest oder eine Anwendung, die für dich Notizen (zu aufgenommenen Gesprächen) anlegt. Im Grunde wäre das eine Analyse des eigenen Workflows, der allerdings ebenso abhängig vom Arbeitsumfeld ist (Zeittracking ist bspw. nicht in jeder Unternehmensbranche notwendig).

...zur Antwort

1) Kompiliert wird mit dem javac-Befehl:

javac Main.java

2) Die Klasse wird nicht gefunden, da sie in einem Package liegt und vom falschen Verzeichnis ausgehend gesucht wird. Wechsel nach der Kompilierung in das Überverzeichnis und rufe dann das Programm / die Startklasse auf.

java main.Main
...zur Antwort

Schau auf https://www.w3schools.com/. Dort findest du sowohl Beispiele für JavaScript, als auch für Java.

...zur Antwort
# ...
textElementId = c.create_text(100, 50, anchor='w', fill='white',font='Arial 12 underline', text='Dies ist ein Test')
c.itemconfigure(textElementId, text='Some other text')

https://effbot.org/tkinterbook/canvas.htm#Tkinter.Canvas.itemconfigure-method

Es ist im Übrigen günstig, Variablen mit aussagekräftigen Bezeichnern auszustatten.

...zur Antwort

Wieso nutzt du nicht die Anleitung aus der Dokumentation (Prerequisites), die ich bei deiner letzten Frage schon beiläufig verlinkt habe? 😉 Wenn du den Guides folgst (und es dabei keine Probleme gibt), hast du recht schnell eine Entwicklungsumgebung für Angular zusammengebaut.

...zur Antwort
Jetzt ist meine Frage was man mit den Sachen machen kann die die Person im Youtube Video heruntergeladen hat und anwendet bzw. verändert?

Erklärt er das denn nicht?

Python wird installiert, damit du einen Python Interpreter und weitere Entwicklungstools auf dem Rechner zur Verfügung hast (Standardmodule, die IDLE, ...). Ohne könntest du weder Funktionen aus den Standardbibliothek (wie print) nutzen, noch deinen Python-Code überhaupt ausführen.

Visual Studio Code installiert er, weil das so ein toller Editor ist, in dem es sich gut entwickeln lässt. Verschiedene Funktionalitäten werden in der Dokumentation aufgeführt. Du könntest aber auch ohne diesen Editor auskommen. Für die Python-Entwicklung an sich benötigst du nur die Konsole oder ein Textprogramm (welches deinen Text ohne zusätzliche Formatierung speichern kann, d.h. Anwendungen wie Word oder PowerPoint fallen da heraus) und den Interpreter (der sich via Konsole ansprechen lässt). Es gibt auch zahlreiche IDEs für Python (IDLE, Thonny, PyCharm, ...).

Die VS Code-Erweiterungen sind dazu da, Syntax Highlighting, Autosuggestion, u.ä. freizuschalten. Es dient also der gezielten Konfiguration von VS Code für Python.

GitHub installiert er nicht (sein Beschreibungstext ist falsch), denn das ist eine Webplattform. Stattdessen wird Git installiert. Das ist ein Versionsverwaltungssystem für Dateien.

Kurz erklärt: Stell dir einen Ordner (= Repository) vor, in dem Dateien liegen. Immer wenn Änderungen in dem Ordner vorgenommen werden (Löschen/Anlegen von Dateien, Ändern von Dateien), können diese als neue Version gekennzeichnet werden. Falls man Mist baut, kann man wieder zu vorherigen Versionen zurückspringen. Ausführliche Anleitungen etc. findest du im in Pro Git, evt. ebenso auf YouTube, für VS Code in der bereits verlinkten Dokumentation und in diversen Tutorials wie dem von Atlassian. Git kann über die Konsole bedient werden oder (einfacher) mittels Git Tools mit grafischer Oberfläche (bspw. in VS Code über die vorinstallierte Git SCM oder Programme wie Git Extensions, SourceTree, GitKraken, ...).

So ein Repository kann man jedenfalls auf GitHub laden, um anderen Personen ebenso Zugriff darauf zu gestatten. Für das Tutorial greift der Autor auf sein öffentlich angelegtes GitHub Repository zu und lädt sich einen Klon (bzw. eine Kopie) auf den Rechner. Wie er in dessen ReadMe selbst schreibt, wird er auf die Skripte, die in dem Repository liegen, in seinen verschiedenen YouTube Videos eingehen.

Wenn du dir einen Klon dieses Repositories ziehst, kannst du selbst in den Skripten herumfuhrwerken / auf Grundlage dieses Codes eigene Experimente starten. Dies passiert alles auf deinem Rechner. Die Repository-Änderungen lassen sich nicht zurück in das Repository laden, so lange du keine Berechtigungen dazu hast / die Credentials des Autors nicht kennst.

Meine zweite Frage wäre wie ich diese Dateien, welche über GitHub gedownloadet wurden komplett löschen kann.

Klicke mit der rechten Maustaste auf eine der Dateien und wähle Reveal in File Explorer (wenn es keine Delete-Option gibt). Dein Datei Explorer wird geöffnet. Geh in das übergeordnete Verzeichnis und lösche den Ordner, den du löschen möchtest.

Im Editor wiederum kannst du mit Rechtsklick auf den Ordner > Remove Folder from Workspace den Ordner aus dem Editor Workspace entfernen oder einfach über das Hauptmenü File > Close Workspace den aktuellen Editor Workspace schließen.

PS.: Beachte, dass es sowohl Visual Studio Code, als auch Visual Studio gibt. Beides sind zwei unterschiedliche Programme.

...zur Antwort

Ich zitiere hierzu einmal direkt aus der Angular Dokumentation:

To use the Angular framework, you should be familiar with the following:
-JavaScript
-HTML
-CSS
Knowledge of TypeScript is helpful, but not required.

Also nein, du brauchst keine TS-Kenntnisse.

...zur Antwort

Vor ungefähr einem Monat wurde schon einmal eine Frage gestellt, die Debatten bezüglich des Inhalts des Informatikunterrichts angerissen hat. Ich möchte sie daher zuerst einmal hier verlinken: Warum wird Programmieren nicht gelehrt?

Wie man in meiner dortigen Antwort lesen kann, gibt es m.E. verschiedene Themen, die im Informatikunterricht Platz finden sollten. Die Programmierung von Anwendungen stellt nur einen Teilbereich dar.

Nun habe ich einmal geschaut, welche Themenbereiche denn derzeit überhaupt angestrebt werden. Laut Wikipedia werden diese Lernziele von der Gesellschaft für Informatik für die jeweiligen Altersgruppen empfohlen.

Wie man sieht, stehen da für die Klassenstufen 9-13 auch schon einige Themen, die Punkte auf deiner Liste abdecken würden. Da wären die Konzepte der OOP, Arbeit mit RDBMS (mit Fokus auf Datenbankdesign, SQL) und im Zusammenhang mit Datenstrukturen lassen sich auch generelle Grundlagen und das Erstellen von Algorithmen angehen. Sollte sich die Lehrkraft zudem für Delphi entscheiden, könnte der GUI-Teil ebenfalls schnell abgedeckt werden.

Das ist soweit auch ganz schön viel.

Dazu sollte bedacht werden:

  • Unterrichtsstunden in Deutschland umfassen 45 (oder als Block: 90) Minuten, der Informatikunterricht ist dabei eher geringlastig vertreten. Es steht also nur sehr wenig Zeit zur Verfügung, um dies und das zu lehren.
  • Der Lehrer muss versuchen, in seinem Unterricht möglichst viele Schüler mitzunehmen. Auch die, die mit dem Computer überhaupt nicht zurecht kommen oder überhaupt kein Interesse an diesem Fachbereich haben.

So etwas wie Dateibearbeitung, GUI-Programmierung, Datenbankkommunikation über eine Programmiersprache oder neuronale Netze / KI sehe ich (nicht nur aufgrund des Zeitmangels) als unwichtig an. Mit so etwas kann man sich in spezifischeren Ausbildungskursen beschäftigen.

Eure Meinung: Welche Programmiersprachen sollte man im Informatik-Unterricht lernen (...)

Eine einfache Sprache, die sich für die Themen, die man angehen möchte, auch gut eignet. Die Gesellschaft für Informatik hat 2016 Java oder Delphi vorgeschlagen. Das ist vollkommen ok so. Andere gute Optionen wären Processing, Python, C, Swift, oder vielleicht C#.

...zur Antwort

Wie man Popups erstellt, erklärt die Dokumentation: https://leafletjs.com/reference-1.6.0.html#popup.

Folglich muss nur noch der richtige String zusammengebaut werden:

`Die Koordinaten sind: ${point.lat} , ${point.lng}`

Wobei point zuvor so definiert wird:

const point = e.latlng;
...zur Antwort
  1. Wenn du die Daten deiner Anwendung, die Oberfläche und die Controller-Schicht getrennt hast, findest du MVC oder MVP.
  2. Wenn du irgendwo eine Liste mittels sort-Methode und Comparator sortierst, nutzt du eine Strategy.
  3. In JavaScript kannst du ziemlich leicht ein Module Pattern implementieren. Das macht eh meist Sinn.
  4. Wenn du irgendwo eine foreach-Methode in Java nutzt, wird implizit ein Iterator verwendet.
  5. Eventuell verwendest du DAO für dein Model (in der REST-Anwendung).
  6. Eventuell verwendest du einen Proxy in deiner REST-Anwendung.
  7. Ein Cache-Aside Pattern wäre bei einer REST API ziemlich sinnvoll.
...zur Antwort

So wie ich das sehe, fügst du aber keinem Container dein ListTile-Element hinzu, sondern platzierst ein child-Property einfach mitten in das Array.

Ich vermute einmal, das Element sollte mit in den Container, in dem auch Montag steht. Dann müsste es so aussehen:

// inside body: PageView(
children: <Widget>[
  Container(child: Column(
    children: <Widget>[
      Text('Montag'),
      ListTile(
        leading: Checkbox(value: false),
        title: Text("Hallo"),
        trailing: ()
      )
    ]
  ),
  /* further containers ... */
]

Ich habe an dieser Stelle einfach ein Column-Layout verwendet. Dieses positioniert seine Kindelemente vertikal untereinander.

...zur Antwort

Deine Karte kannst du mit einem passenden Zoomfaktor und dem Einstellen einer passenden Breite/Höhe auf das gewünschte Maß bringen.

Auf dieser Seite wird erklärt, wie du zoomen kannst. Einen maximalen und einen minimalen Zoomfaktor festzulegen, wäre wohl nicht schlecht. Schau dir dazu das letzte Beispiel an.

Via CSS kannst du nun noch die Kartengröße anpassen.

#map {
  height: 100px;
  width: 100px;
} 

Die von mir im Snippet gewählten Werte werden natürlich nicht passen.

...zur Antwort

Soweit ich das sehe, hast du für dein konkretes Problem bereits eine Rückmeldung von ralphdieter bekommen, sodass ich nicht mehr darauf eingehen muss.

Daher nur noch Tipps / Verbesserungsvorschläge.

1) Nutze die kamelHoeckerSchreibweise. Dann sind Bezeichner leichter zu lesen.

Beispiel: Statt eingabefunktion wäre der Name eingabeFunktion besser.

Bei Funktionen ist es allerdings ebenfalls üblich, Verben für die Namen zu verwenden (oder Befehlswortgruppen wie: starteAusgabe, kocheEssen, verrueckeGegenstand). Immerhin erledigen die Funktionen ja eine Tätigkeit. Das es Funktionen sind, ist eine redundante Information im Namen.

So wären Namen wie addiere, subtrahiere, ... eine bessere Wahl.

2) Wenn du mit einem Charakter arbeiten möchtest, dann verwende auch das passende Literal:

char a = 'a';

Mit doppelten Anführungszeichen hingegen deutest du an, eine Zeichenkette verwenden zu wollen (char*).

3) Du erstellst zweimal die Variablen für a-e. Sollte sich das einmal ändern, müsstest du erneut zwei Stellen im Code anpassen, was die Wahrscheinlichkeit für Fehler erhöht.

Eigentlich brauchst du auch nicht so viele Variablen. Schau dir einmal die ASCII-Tabelle an. Du brauchst nur eine Startzahl (97) und das Ende (101) / die Spannweite (5). Bedenke, dass ein Charakter direkt in eine Ganzzahl konvertiert werden kann und andersherum.

Noch einfacher wäre es, statt Zeichen einfach nur Zahlen zu nehmen.

4) Zudem wäre es wohl gut, diese Ausgabe:

printf("a)Addition\nb)Substraktion\nc)Multiplikation\nd)Division\ne)Programmende\n");

im Programm zusammenzubauen, statt manuell. Die einzelnen Optionen könnten in ein Array und mit einer Schleife erzeugst du die Ausgabe nach dem Format:

(startLetter + index) + ") " + options[index]

5) So etwas:

for(;;){

erachte ich nicht als guten Stil. Wenn du eine Endlosschleife haben möchtest, wäre bspw.

while (1) {

aussagekräftiger.

6) Natürlich muss main nicht zwingend einen Rückgabewert liefern. Es wäre allerdings einheitlich / konsequent, da du es ja für einige Programmzweige auch schon tust.

7) Bei jeder Eingabe rechnest du doch eigentlich damit, dass nur ein Zeichen eingegeben wurde. Dennoch prüfst du in jedem Fall immer alle fünf Zeichen durch.

Das heißt, wenn der Nutzer a eingegeben hat, prüft dein Programm trotzdem auch nach Fund (erstes if), ob einer der folgenden Fälle wahr ist. Da sich das von vornherein ausschließen lässt, wäre der Einsatz eines if-else if oder eines switch-case günstig. Noch einfacher aber: continue.

while (1) {
  eingabe = eingabefunktion(eingabe);

  if (eingabe == a) {
    // ...
    continue;
  }

  if (eingabe == b) {
    // ...
    continue;
  }

  // etc. ...
}

So wird der Rest der aktuellen Iteration übersprungen und ein neuer Schleifendurchlauf angestoßen.

8) Deine Eingabefunktion benötigt eigentlich gar keinen Parameter. Dessen Wert überschreibst du doch eh im Funktionskörper. Es wäre daher besser, die Variable lokal zu erstellen.

char erhalteEingabe()
{
  char eingabe;

  // ...
}
...zur Antwort
Beide haben ihre Da-seins-Berechtigung

Gibt es dazu nicht schon etliche Artikel? Es würde mich nicht wundern, wenn die Frage nicht nur via Google, sondern auch über die GF-Suche beantwortet werden könnte.

Folgend zur Java-Technologie von Oracle und CPython:

Ein paar Vorteile von Java gegenüber Python:

  • subjektiv: statische, stärkere Typisierung (Fehler können schneller gefunden werden)
  • mit der JVM lässt sich leichter eine bessere Ausführungszeit erzielen
  • mehrere Threads können zur gleichen Zeit ausgeführt werden (CPU-Arbeitsaufteilung)
  • erzwingt einen einheitlichen Stil (kein Mix aus OOP + funktional, o.ä.)
  • hinsichtlich mobile + Webentwicklung besser aufgestellt

Ein paar Nachteile von Java gegenüber Python:

  • oftmals ist mehr Code notwendig, um bestimmte Lösungen umzusetzen (Bsp.: Hello World-Applikation)
  • der Entwickler (Oracle) vergrault seit den letzten Jahren mehr Nutzer (Beispiele: Lizenzmodell, JakartaEE)
...zur Antwort

Vorweg: Alle vorgeschlagenen Anwendungen sollten eine grafische Oberfläche besitzen. Schau dir dazu Tools wie kivy, PyQt oder tkinter an.

1) Ein Chat-Programm

Dazu ein paar Ideen:

  • Es gibt Nutzer mit administrativen Rechten (Moderatoren)
  • Der Nutzer kann in den Einstellungen angeben, ob Nachrichten besonders formatiert dargestellt werden dürfen (z.B. bunt, mit Smileys) oder nicht (Plaintext)
  • Chat-Verläufe können in verschiedenen Formaten de-/serialisiert werden (XML, JSON, CSV)

2) Diverse Spiele, wie:

  • Snake (ein paar Zusatzideen findest du hier)
  • Ein Verwaltungsprogramm für einen Ahnenbaum
  • Ein Schiebepuzzle
  • Domino
  • Peg Solitaire
  • Sternhalma
  • Ein Kartenspiel
  • Schach

3) Bilde eine Szenerie nach.

Das könnte ein Einkaufscenter sein. Es gibt verschiedene Geschäfte, die jeweils verschiedene Produkte verkaufen. Kunden können Waren entsprechend ihres verfügbaren Budgets kaufen und ausgestattet mit Taschen oder Einkaufswagen mehr Waren transportieren als üblich. So hat also jede Ware nicht nur einen Preis, sondern auch ein bestimmtes Gewicht.

Im Folgenden könntest du Kunden mit zufallsgenerierten Einkaufslisten ausstatten und auf dem Spielfeld automatisch nach den Läden suchen lassen, sodass sie eine Ware nach der nächsten abarbeiten können (lass für diesen Punkt das Dilemma mit dem Gewicht heraus, um es vorerst einfacher zu halten).

Dazu kannst du Zeitmessungen vornehmen (wie lange brauchen die Kunden) und prüfen, inwiefern du die benötigten Zeiten verringern könntest.

...zur Antwort

Das liegt daran, dass du bei jeder neuen Iteration ein neues Random-Objekt anlegst. Dieses verwendet zum Generieren eines Seeds die Zeit, die sich aufgrund der extrem geringen Abstände, in denen die Iterationen vonstatten gehen, aber nicht großartig ändert. Das heißt, es wird mit jeder Iteration derselbe Seed erzeugt.

Erstelle also nur ein Random-Objekt außerhalb der Schleife bzw. besser: Lege ein Feld an und initialisiere es / definiere es im Konstruktor.

...zur Antwort

SameSite cookies - Wo und Wie steuern?

Hallo zusammen,

In einem Modul sollen wir eine kleine responsive Webseite bauen. Dazu bedienen wir uns HTML/CSS/JS. Soweit, so einfach.

Ich habe die Seite im Grunde nun fertig, es ist alles responsive - man freut sich. Visual Studio Code wirft weder Warnungen, noch Fehlermeldungen aus.

Allerdings hat die Konsole meines Chrome Browsers einiges zu meckern. Es geht um das Thema Cookies, genauer: SameSite Cookies. Das Konzept dahinter habe ich mittlerweile kapiert, las dazu folgendes: https://web.dev/samesite-cookies-explained/?utm_source=devtools

Allerdings hatten wir bisher noch keine Lesungen zu Cookies, daher weiß ich nicht, wo ich sie ansprechen muss. In der HTML oder JS? Und wie spreche ich sie an? Aus der Konsole weiß ich, dass es um folgende Cookies geht:

cookie-domain:.youtube.com cookie-name:PREF cookie-path:/ 

cookie-domain:.youtube.com cookie-name:HSID cookie-path:/ 

cookie-domain:.youtube.com cookie-name:SSID cookie-path:/ 

cookie-domain:.youtube.com cookie-name:APISID cookie-path:/

cookie-domain:.youtube.com cookie-name:SAPISID cookie-path:/ 

cookie-domain:.youtube.com cookie-name:SID cookie-path:/ 

cookie-domain:.youtube.com cookie-name:wide cookie-path:/ 

cookie-domain:.youtube.com cookie-name:CONSISTENCY cookie-path:/ 

cookie-domain:.youtube.com cookie-name:SIDCC cookie-path:/ 

Hat vielleicht jemand ein Tutrial parat, oder ein CodePen, wo ich sehen kann, wie ich denen die gewünschten Attribute verpassen kann, sodass die Meldungen verschwinden? Danke vorab.

...zur Frage

YouTube lädt eine Reihe an Cookies (z.B. Cookies für Nutzereinstellungen: PREF, SIDCC), auf die du (da sie von einer anderen Domain kommen) in erster Linie keinen Zugriff hast.

Aber Google stellt auch eine No-Cookie-URL bereit, die du stattdessen verwenden kannst. Im Einbettungscode muss lediglich die Domain geändert werden.

Aus

https://www.youtube.com...

wird:

https://www.youtube-nocookie.com...

Die Warnungen in der Konsole werden daraufhin verschwinden, denn die Cookies werden nicht mehr mit dem Video mit geladen.

...zur Antwort

1) C# ist eine case-sensitive Sprache. Daher gibt es einen Unterschied zwischen Start (richtig) und start (falsch).

public void start()

2) Dein Code sollte im Editor bei dieser Zeile:

megaNice = GameObject.Find("MovementSlider").GetComponent<Slider>();

röter als Rudolfs Nase aufleuchten und ist vermutlich auch ein Paradebeispiel, wieso man den eigenen Variablen zudem sinnvolle Namen geben sollte.

Die Variable auf der linken Seite ist vom Datentyp float. Ein Objekt des Typs Slider lässt sich da nicht hineindrücken. Mit dem Wert des Sliders (value) wäre das hingegen möglich.

Allerdings wäre es wohl sinnvoller, neben dem Namen des Feldes, auch den Datentyp erst einmal auf Slider zu ändern. Auf das value-Property kann dann später im Skript zugegriffen werden, wo es auch nötig ist. Bei anderen Komponenten (wie dem Rigidbody2D) verfährst du ja genauso.

...zur Antwort

1) Ziel definieren

Wie bei jeder guten Projektplanung sollte die Anforderungsanalyse einen der ersten Schritte darstellen. In der Spiele-Entwicklung redet man hier auch vom Anlegen des Game Concepts.

Du hast bisher nur ein grobes Ziel vorgegeben (2D Open World für PC, später für weitere Plattformen), aber das reicht ja noch lange nicht, um irgendwo konkreter eintauchen und Ressourcen suchen zu können.

Lies hier, denn ich habe nun schon etliche Male viel über dieses Thema geschrieben:

  • Ich habe Spiel-Ideen und würde gerne wissen an wen ich mich wenden kann für sowas?
  • Was braucht man alles zur Spiele-Programmierung?

2) Ziel eingrenzen

Du weißt selbst, dass du nicht so viel Zeit für dieses Projekt hast und dir wage wohl noch einiges an Wissen fehlen wird. Das heißt, du wirst für vieles, was du umsetzen möchtest, lange brauchen und du wirst Fehler machen (das ist ganz normal). Das Gleiche gilt vermutlich für deinen Partner und generell die Teamarbeit zwischen euch. Bevor man gut miteinander arbeiten kann, bedarf es viel Abstimmung, hinzu kommen Meinungsverschiedenheiten, technische Probleme (eure Arbeit darf sich ja nicht überschneiden / gegenseitig behindern), etc..

In dem Sinne wäre es sehr sinnvoll, wenn ihr eurer Ziel zunächst eingrenzt. Im Hinblick auf das Spiel, auf Basisfunktionalitäten. Statt einer Open World würde ich zunächst nur einen Spielabschnitt erstellen (z.B. ein Dorf mit 3-4 Häusern, 4-5 Charakteren, 2-3 Quests; oder vielleicht ein roguelike-Spiel?). Bereits damit werdet ihr erst einmal genug zutun haben. Zielplattform Windows OS - völlig ausreichend.

Ein Problem, an dem Projekte oft scheitern, ist die Überforderung des Projektteams. Ideen lassen sich leicht finden, es muss aber umsetzbar sein. Priorisiert daher eure Ideenliste. Basisfunktionalitäten (key features) sind von größerer Bedeutung. Nicht alles muss sofort perfekt aussehen. Wenn ihr anfangs nur Blöcke (statt richtige Sprites) über die Karte schiebt, ist das vorerst ausreichend.

3) Ressourcenplanung

Ein paar gute Leitsätze: Baut auf dem, was ihr könnt und erfindet das Rad nicht neu.

Da du nach deinen Angaben mit HTML, CSS und Java schon etwas gemacht hast, wäre es sinnvoll, Tools (Game Engines/Frameworks) zu verwenden, die mit den selben Techniken arbeiten oder zumindest mit ähnlichen Techniken.

Mir fallen da bspw. folgende ein:

  • Eines dieser Java-Tools für die Spiele-Entwicklung (wobei ich in dem Fall wohl zu libGDX, FXGL, der LITIEngine oder der jMonkeyEngine raten würde)
  • Felgo (arbeitet mit QML, einer z.T. CSS-ähnlichen Sprache)
  • Unity (verwendet C#)

Ansonsten - ganz klar - gibt es noch etliche andere Lösungen, bei denen du aber unter Umständen dich mit neuen Sprachen beschäftigen müsstest (auch wenn es deswegen nicht unbedingt schwer ist). Browser-Spiele mit JavaScript wären da eine Möglichkeit (siehe Phaser, CraftyJS oder melonJS) oder ein Spiel mit Godot und GDScript.

Bei den meisten der genannten Tools sollte es später auch möglich sein, diese auf verschiedene Plattformen (wie Android oder iOS) zu bringen (was keine Selbstverständlichkeit ist!). Bei einem Browser-Spiel wäre es natürlich am einfachsten.

Schau sie dir einfach alle einmal an. Meist kannst du unter Gallery/Showcases bereits implementierte Beispielprojekte finden (die zudem als Inspiration dienen können?). Bedenke aber, dass ihr bei eurem Projekt für das Grafikdesign zuständig seid. Das heißt, auch wenn du Spiele mit extrem schönen Sprites siehst oder andersherum Spiele mit extrem hässlichen Assets, bedeutet das nicht, dass euer Spiel genauso aussehen muss.

Bezüglich der Erstellung von Grafiken fasse ich mich sehr kurz:

  • Mit Sprites und Tilemaps beschäftigen, Sprite Editor suchen oder Sprite Animationen mit Blender erstellen (Beispiel)
  • An einer Auswahl guter Bildbearbeitungssoftware wird es nicht mangeln: Adobe (Photoshop / Illustrator / After Effects), Gimp, Krita, o.a.
  • Auf einer Seite wie DeviantArt findest du auch Künstler, die bereits Sprites, individuelle Pinselmuster, Texturen, u.ä. erstellt haben. Sie können dir möglicherweise Tipps geben.

Auf Audio-, Leveldesign und Weiteres gehe ich nicht ein. Zu all solchen Themen kann man Bücher schreiben (und dementsprechend gibt es bereits Literatur).

4) Weitere Vorbereitung (nur auf die Programmierung bezogen)

Grundkenntnisse in Java/C#/JavaScript/... solltest du dir am besten zuerst aneignen, bevor du damit beginnst, drauflos zu spurten. Das heißt (grob mit dem Daumen gepeilt), du solltest wissen, wie man Arrays befüllt, wie sich Verzweigungen von Schleifen unterscheiden und wie man Code objektorientiert strukturieren kann.

Links zu Lernquellen und Tipps findest du bereits auf GF zuhauf, entsprechende Fragen werden gefühltermaßen fast jeden Tag gestellt und beantwortet.

Für das gemeinsame Arbeiten im Team solltet ihr euch noch überlegen, wie ihr vorgehen wollt. Lies dazu hier: Wie geht man an ein riesiges Projekt ran?

...zur Antwort

HTML Grid mit Bildern & Einzelverlinkungen?

Ich wollte auf einer Website so ein Raster mit quadratischen Bildern machen (das hab ich auch geschafft, Bilder sind auch alle drin)

Jetzt will ich bei jedem Bild einen Fade Effekt beim Mouseover haben und das dann über einem weißen Hintergrund der Name des Projektes als Link auf die weiterführende Seite erscheint. Ich weiß im Prinzip auch wie das geht aber das Ding ist, ich verstehe nicht wie ich diesen Fade Effekt bei jedem Element einzeln mache. Ich hab schon versucht den <figure> bzw <img> Elementen eine Class zuzuordnen und mit der zu arbeiten, irgenwie klappt aber nichts :D

Nur beim ersten Kästchen oben links habe ich es hinbekommen, wie gehe ich weiter vor?

<div class="wrapper">
   
 <div class="grid-container">
    
 <div class="grid-item"><figure> <img class="Gitterbilder" src="Bilder/Bild1.jpg" alt="Bild1"></figure>
    
   <div class="overlay"> <div class="content"> <a>Link auf Projektseite von Projekt 1</a></div></div>
   </div>
    
 <div class="grid-item"><figure> <img class="Gitterbilder" src="Bilder/Bild2.jpg" alt="Bild2"></figure></div>
 <div class="grid-item">Bild 3 hier</div>
 <div class="grid-item">Bild 4</div>
 <div class="grid-item"> Bild 5</div>
    </div>
</div>
CSS:
figure{
  margin: 0px;
}
/*Gitter in dem Projektbilder sind*/
.grid-container {
  margin-top: 60px;
  display: inline-grid;
  grid-template-columns: auto auto auto;
  grid-column-gap: 29.5px;
  grid-row-gap: 29.5px;
}
/*Bilder der Projekte*/
.Gitterbilder{width: 313.5px;}
/*Fade Effekt bei Hover*/
.Gitterbilder{
  opacity: 1;
  transition: .5s ease;}
/*Text beim Hovern,also Projektnamen*/
.content{
  position: absolute;
  top: 45%;
  left: 30%;
  transform: translate(-50%,-50%);
  font-size:60px;
  color: #fff;
  white-space: nowrap;
  overflow: hidden;
}
.content a{
  font-size: 20px;
  display: block;
  text-align: center;
  padding: 10px;
  cursor: pointer;
}
.overlay{
  opacity: 0;
}
.grid-item:hover img{
  opacity: .7;
}
.grid-item:hover .overlay{
  opacity: 1;
}
Das ganze ist in einem Wrapper drinnen, falls das relevant ist:
.wrapper {   
  max-width: 1000px;
  margin: 25px auto;
  margin-top: 120px;
}
...zur Frage

So wie ich das sehe, hast du doch bereits für jedes Grid-Item den Mouse-Over-Effekt definiert:

.grid-item:hover img {
  opacity: .7;
}

Nur wenn der Untergrund am Ende weiß sein soll, müsstest du den Wert noch deutlich heruntersetzen und die Schriftfarbe für Links in overlay-Elementen sollte eine dunkle Farbe bekommen, die sich vom hellen Hintergrund abhebt.

So in etwa:

.grid-item:hover .content a {
  color: black;
}
...zur Antwort

Es handelt sich in diesem Fall um varargs (variable arguments).

Ein Beispiel:

static int getSum(int ...numbers) {
  int sum = 0;

  for (int i = 0; i < numbers.length; ++i) {
    sum += numbers[i];
  }

  return sum;
}

// main:
int sum1 = getSum(1, 2, 3, 4);
int sum2 = getSum(7, 12);
int sum3 = getSum(5, 3, 4, 2, 2, 6, 7);

Die drei Punkte-Syntax gibt an, dass an dieser Stelle eine variable Anzahl an Argumenten (des gegebenen Typs) übergeben werden kann. Diese werden in ein Array gesetzt (numbers oben ist also ein Array).

...zur Antwort
  1. Dem schließenden html-Tag fehlt ein Slash.
  2. Das title-Element im head-Bereich fehlt.
  3. Die runden Klammern in der CSS müssen gegen geschweifte Klammern ausgetauscht werden.

Abschließend das Speichern der Datei nicht vergessen und die Seite neu laden.

...zur Antwort

Den genauen Grund, wieso der Autor des Tutorials es mal so, mal so macht, kann ich dir nicht nennen. Vielleicht hat es eine Bewandtnis, vielleicht ist es seine persönliche Vorliebe oder er weiß es selbst nicht.

Öffentliche Enums (public/package protected) gehören jedenfalls in eine eigene Datei (das würde ich auch als Industriestandard bezeichnen bzw. das, was er da tut, als bad practice).

Ein Enum in einer eigenen Datei ist schneller auffindbar, von anderem Quellcode (der einen eigenen Sinn verfolgt) logisch getrennt und es entgeht eher dem Risiko, versehentlich gelöscht zu werden (was böse Folgen haben kann, wenn man beim Wiederherstellen Werte vertauscht, o.ä.). Die logische Verknüpfung erfolgt bereits dadurch, dass Klasse und Enum im gleichen Package liegen.

Wenn das Enum privat sichtbar sein soll, also nur für die Klasse zugänglich ist, sollte es m.E. als innere Klasse definiert werden. Ganz gemäß der Datenkapselung.

class SomeClass {
  private enum SomeEnumeration {
  }
}

Übrigens geben die Code Conventions von Java vermutlich deswegen nichts zu Enumerationen vor, da sie 1997 geschrieben wurden. Der enum-Typ fand allerdings erst 2004 in Java (5) Einzug. Insofern lässt sich nur diese klare Regel finden:

Each Java source file contains a single public class or interface. When private classes and interfaces are associated with a public class, you can put them in the same source file as the public class. The public class should be the first class or interface in the file.

Enumerationen sind in Java an sich spezielle Klassen. Deswegen würde ich für Enums die gleichen Regeln ansetzen.

Der Google Style Guide (wohlgemerkt, ausgerichtet für Google Developer; hier nur einmal zum Vergleich) sieht das wohl genauso und hat Enums mit in seine Regelung aufgenommen:

The term  class is used inclusively to mean an "ordinary" class, enum class, interface or annotation type (...)

Quelle

Each top-level class resides in a source file of its own.

Quelle

...zur Antwort

Skriptsprachen sind Programmiersprachen, die sich vor allem dadurch auszeichnen, dass man mit ihnen sehr leicht und sehr schnell Anwendungen entwickeln kann, was sich durch verschiedene Merkmale begründen lässt.

So sind Skriptsprachen oft

  • dynamisch typisiert (Beispiele: JavaScript, Ruby, Python, PHP)
  • mit einer automatischen Speicherverwaltung ausgestattet (Beispiele: JavaScript, Ruby, PHP >= 5.3, Python)
  • plattformunabhängig
  • interpretierte Sprachen (wobei sich das nach dem heutigen Stand sehr vermischt, JavaScript bspw. wird im Browser z.T. kompiliert; Sprachen wie Java oder Python werden erst kompiliert und später in einer zweiten Phase ausgeführt; Lisp wurde ursprünglich interpretiert, Clisp u.a. Dialekte wiederum erlauben beides)
  • mit Ausdrücken/Operationen/Funktionen versehen, die es erlauben, sich kurz und flexibel auszudrücken (Beispiel: print-Funktion in Perl, Array-Shortcuts in PHP, short-circuit evaluation in JavaScript)
  • Embedded Languages (sie werden innerhalb eines Systems / einer Engine verwendet, um nur noch bestehende Komponenten miteinander zu verbinden; Beispiele: GDScript in der Godot Engine, MEL in Autodesk Maya, JavaScript in Webbrowsern)

Eine klare Unterscheidung wird zunehmend schwieriger. Grundlegend versucht der Begriff Skriptsprache den Anwendungszweck deutlich zu machen, für den die jeweilige Sprache entworfen wurde oder inwiefern sie genutzt wird. Dazu ein einfaches Beispiel: C# wurde nicht als Skriptsprache entworfen (man verwendet die Sprache immerhin vor allem für den Aufbau von komplexen Desktop- oder Webanwendungen), wird aber inzwischen auch gern für das Scripting in Game Engines verwendet (Unity, CryEngine, Godot, Wave, Duality, ...).

Ursprünglich waren Skriptsprachen dazu gedacht, kleine Anwendungen (Skripte) innerhalb kürzester Zeit entwickeln zu können, die dann bspw. bestimmte Vorgänge automatisieren (z.B. eine automatische Formatkonversion und Speicherung von Bilddateien in Adobe-Software, der Aufruf einfacher Animationen/Effekte wie loopOut/bounce/... in Adobe After Effects, die Erstellung von Animationen mit MEL in Autodesk Maya, usw.). Da in diesen Arbeitsbereichen auch nicht zwingend Programmierer ansässig waren (und noch immer sind), sondern bspw. Designer, gab es einen zusätzlichen Anreiz, diese Sprachen in der Syntax einfach zu halten. Die Anwender sollten sich auf das Wesentliche (die Programmierung der Logik) fokussieren können und nicht mit Speicherverwaltung, explizitem Typecasting, o.ä. herumschlagen müssen.

Skriptsprachen sind über die Jahre schnell populär geworden und haben sich inzwischen in weitere Anwendungsfelder ausgebreitet. Bestes Beispiel dafür ist JavaScript. Die Sprache ist nicht mehr nur auf die Ausführung im Browser beschränkt, sondern kann auch für die Entwicklung von Anwendungen außerhalb eingesetzt werden (mobile Apps, Webserveranwendungen). Nach Möglichkeit geben Entwickler Skriptsprachen gern den Vorzug (vgl. Python where we can, C++ where we must oder Arbeitsaufteilung bei der Spiele-Entwicklung: Skripter und Programmierer).

Wenn man sich die Entwicklung der Programmiersprachen in den letzten Jahrzehnten anschaut, erkennt man durchaus einen Trend, bei dem sich bestehende/neue Programmiersprachen in ihrer Syntax den bekannten Skriptsprachen etwas annähern bzw. zumindest versuchen, Operationen sprachlich zu verkürzen.

Beispiele hierfür:

  • Das var-Schlüsselwort (C#, Java)
  • null-conditional und null-coalescing-Operatoren (C#)
  • Verzicht auf Klammern bei Schleifen oder Verzweigungen (Swift)
  • Lambda-Ausdrücke (Java, C#, C++)
  • Object initizalizer (C#) / double brace initialization (Java)

Andersherum gibt es aber ebenso eine sprachliche Entwicklung zurück zu mehr explizitem Typausdruck (Bsp.: TypeScript > Datentypen, Type-Hints in PHP).

...zur Antwort

Auf dieser Seite: https://docs.oracle.com/en/java/javase/index.html sind alle JDK-Versionen, beginnen bei der Nummer 7 aufgelistet. Wenn du auf die jeweiligen Seiten gehst, findest du dort auch stets einen Punkt What's new.

Auch wenn etwas entfernt wurde, wird das dort aufgeführt.

Lambdas wurden bspw. mit dem JDK 8 eingeführt.

...zur Antwort

Dein HTML-Dokument ist ein einziger Fehlerhaufen. Das muss man leider so sagen.

  • Der Doctype fehlt
  • Das align-Attribut auf dem table-Element gehört nicht mehr zum Standard (wenn man einmal davon ausgeht, dass du mit HTML5 auch arbeitest)
  • Das font-Element gehört nicht mehr zum Standard
  • Es gibt kein rwr-Attribut
  • Ein Blockelement (div) darf nicht von einem Inline-Element (font) umschlossen werden
  • CSS Properties wie mso-fareast-font-family oder mso-margin-top-alt gibt es nicht
  • Ein span-Element darf kein direktes Kindelement eines table/thead/tbody/tfoot-Element sein
  • Die link-Tags gehören eigentlich in den head-Bereich, damit das CSS so früh wie möglich eingebunden werden kann
  • usw. ...

Im günstigsten Fall würde ich dazu raten, das alles wegzuschmeißen und

  • a) einen neuen Generator / Baukasten zu suchen
  • b) HTML / CSS zu lernen
  • c) Jemanden zu engagieren, der HTML und CSS kann

Um die Farbe zu setzen, reicht es aus, diesen CSS-Selektor:

.panel.panel-info>.panel-heading

zu überschreiben. Da du das scheinbar alles via Inline-Styles regeln möchtest (übrigens eine schlechte Lösung, da du dir damit nur Mehraufwand generierst und dafür sorgst, dass das Dokument schlecht lesbar bleibt), reicht dies:

style="background-color: #1e5988"

auf den Tags mit panel-heading-Klasse aus. Raus mit der !important-Regel, so lange sie überhaupt nicht benötigt wird. Sie ist ein weiteres Mittel, Code noch schlechter wartbar zu gestalten, wenn man sie nicht richtig einzusetzen weiß.

Die bessere Lösung wäre die striktere Trennung von CSS und HTML. Entweder mit einer externen CSS-Datei, die via link-Tag eingebunden wird oder zumindest via style-Tag. In beiden Fällen ist der head-Bereich des Dokuments der richtige Ort für die Einbindung. Dazu solltest du dich dann aber auch mit CSS-Selektoren und der Kaskade beschäftigen.

...zur Antwort

Die Anzahl frei verfügbarer Game Engines, die Java für die Beschreibung der Spiellogik nutzen, ist ziemlich überschaubar.

Konkret fallen mir nur diese ein:

  • jMonkeyEngine
  • jPCT (für Android)
  • LITIEngine
  • OpenRTS

Es gibt zudem einige Projekte, auf denen man vermutlich aufbauen könnte (jake2, JGameEngine, WobaniEngine, WurfelEngine), falls du auf so etwas Lust haben solltest.

Ansonsten gibt es mehrere Bibliotheken/Frameworks (Slick2D, FXGL, PlayN, LWJGL, libGDX) und bekanntermaßen kann man mit Spigot/Bukkit an Minecraft herumwerkeln.

Kennt ihr diese? Würdet ihr sie empfehlen?

LWJGL ist die Grundlage vieler Java Spiele-Engines/Frameworks. Sie stellt Bindings zu verschiedenen Graphic APIs bereit (Vulkan, OpenGL) und die Wahrscheinlichkeit, Support oder Referenzen zu finden, ist höher, als bei einigen der anderen genannten Tools. Eine Anlaufstelle wäre da bspw. dieses gitbook (3D Game Development with LWJGL).

Als einfach würde ich diese Bibliothek dennoch nicht einstufen, falls du darauf aus bist. In dem Fall würde ich eher auf libGDX oder die jMonkeyEngine verweisen.

...zur Antwort

Der erste Kommentar unter dem Video, vom Autor selbst:

If you're getting an error here
public IModelPart apply(Object x0)
remove the entire method and save, it's junk

Ansonsten als Rat für ein grundsätzliches Vorgehen in solchen Fällen:

  • Suche nach Projekt Changelogs (in der Dokumentation / im Repository / ...)
  • Finde heraus, wo die Methode im Projekt aufgerufen wird
  • Kommentiere Code nicht einfach aus und hoffe darauf, dass alles gut läuft, sondern beschäftige dich richtig mit der Fehlermeldung - eine Recherche hilft da ebenfalls meist, denn oft hatten andere vor dir ähnliche / die gleichen Probleme
...zur Antwort

Also dass du dich wohl mit JavaScript auseinandersetzen musst, hast du vor einigen Tagen schon erkannt, wie ich sehe. Also würde ich das auch weiterhin als Startpunkt definieren. Meine Antwort von hier hilft dir dabei womöglich.

Im Anschluss würde ich dazu raten, Informationen aus dem offiziellen Wiki zu beziehen.

Außerdem gibt es ja auch noch andere Personen, die sich mit so etwas wie dem Erstellen von Menüs bereits befasst haben. Nach ein bisschen Recherche via Google findet man dann Ergebnisse wie diese:

  • https://forum.altv.mp/topic/296-c-simple-menu-template/
  • https://github.com/DurtyFree/alt-V-NativeUI

Zudem kannst du vermutlich im alt:V-Forum ebenso weitere Informationen erhalten.

...zur Antwort

Ja, Leaflet bietet dafür eine Funktion an: mouseEventToLatLng.

Dieses Beispiel dürfte dir also bei Klick die aktuellen Koordinaten in die Browserkonsole posten:

yourMap.on("click", function(evt) {
  const coordinates = yourMap.mouseEventToLatLng(evt.originalEvent);
  console.log(`${coordinates.lat}, ${coordinates.lng}`);
});

Bezüglich des Kopierens von Text in die Zwischenablage, lies hier.

Eine Anzeige der Koordinaten auf der Webseite gestaltet sich auch recht einfach.

<p id="coordinates-output"></p>
<script>
  const coordinatesOutput = document.getElementById("coordinates-output");

  // inside click handler:
  coordinatesOutput.innerText = `${coordinates.lat}, ${coordinates.lng}`;
  // ...
</script> 
...zur Antwort

Du maskierst die Anführungszeichen gar nicht.

print("<img src=\"https://img.webme.com/pic/r/renate-pircher/2albero-autunno.gif\">")

Alternativ könntest du den Attributwert auch mit einfachen Anführungszeichen umschließen.

Und so am Rande, solltest du noch darauf achten, auch an anderer Stelle valides HTML zu erstellen.

  1. Im head-Bereich fehlt ein title-Element mit nichtleeren Seitentitel.
  2. Dem img-Tag fehlt ein a1t-Attribut.
...zur Antwort

Ja, das dürfte mit einigem Aufwand noch funktionieren.

a) Nach einem Jailbreak kann man sich über den Cydia-Paketmanager JamVM auf dem iPhone installieren. Dies ist eine leichtgewichtige Java VM, die allerdings 2014 ihr letztes Release gefeiert hat.

b) Die Cloud Browse-App verspricht, die Ausführung von Java Applets im Browser wieder zu ermöglichen. Inwiefern das funktioniert, musst du selbst testen. Generell ist zu bedenken, dass selbst Applets eine extrem veraltete Technologie darstellen.

c) Mit der Multi-OS Engine können Java-Module entwickelt werden, die in ein iOS-Projekt eingesetzt werden. Dieser Weg beschreibt also eher eine technische Möglichkeit, mit Java für iOS zu entwickeln. Als Alternative könnte man sich einmal die Tools anschauen, die Gluon entwickelt hat und mit der RoboVM soll es tatsächlich ebenfalls noch funktionieren (lies hier).

...zur Antwort
  1. Deinstalliere alle anderen JDKs, die womöglich bereits installiert sind (Systemsteuerung > Programme deinstallieren).
  2. Prüfe, welche JDK-Version du für deine Eclipse-Version benötigst: https://wiki.eclipse.org/Eclipse/Installation und installiere diese.
  3. Trage den Pfad zum bin-Verzeichnis in der PATH-Umgebungsvariable ein. Lies genaueres dazu hier. Pfade, die bereits in PATH stehen und auf ein JDK verweisen, solltest du entfernen.
  4. Installiere danach Eclipse.
...zur Antwort
...zur Antwort

Entweder über self oder explizit über super.

Beispiel:

class Animal:
  def eat(self):
    print("Eat")

class Lion(Animal):
  def __init__(self):
    self.eat()

lion = Lion()

Die super-Funktion eignet sich vor allem dann, wenn das Element der Basisklasse überschrieben wird.

class Animal:
  def eat(self):
    print("Eat")

class Lion(Animal):
  def __init__(self):
    self.eat()

  def eat(self):
    super().eat()

lion = Lion()

Hier ruft der Konstruktor die eigene (bzw. überschriebene) Methode auf und in dieser wiederum erfolgt der Aufruf der Methode aus der Basisklasse.

...zur Antwort
  • Ein Rechner zum Umrechnen von Einheiten
  • Ein BMI-Rechner
  • Ein Übersetzungstool (der Wortschatz wird in einer JSON-Datei definiert)
  • Ein Vokabeltrainer (aufbauend auf dem Übersetzungstool)
  • Tic-Tac-Toe
  • Ein Kalender
  • Ein Adressbuch
  • Ein Textbearbeitungsprogramm (Text kann in einer Datei gespeichert oder aus einer Datei wieder ausgelesen werden; es gibt eine Wortsuche)
  • Ein leichtes Explorer-Tool (Dateien eines bestimmten Ordners werden aufgelistet und können umbenannt werden)
...zur Antwort

Die Fehlerzeile sagt es schon klar und deutlich: Die globale Variable time wurde noch nicht gesetzt, aber du versuchst bereits, auf sie zuzugreifen.

Schau also, dass du das tust, bevor deine Schleife ausgeführt wird (ein passender Ort könnte das Create Event sein) bzw. dass der Code, der dies tun sollte, noch vor der Schleife läuft.

...zur Antwort

Ja, das geht.

Beispiel:

HTML:

<div id="parent">
  <div class="child"></div>
</div>
<div class="child"></div>

VanillaScript:

console.log(document.getElementsByClassName("child").length); // 2

const parent = document.getElementById("parent");
console.log(parent.getElementsByClassName("child").length); // 1

jQuery:

console.log($(".child").length); // 2
console.log($(".child", "#parent").length); // 1

// or
const parent = $("#parent");
console.log($(".child", parent).length); // 1
...zur Antwort

Hinsichtlich des Fehlers:

Du erbst das Template (register.html), in dem du dich gerade befindest (register.html). So kommt es zur Rekursion.

Hinsichtlich deines Markups:

1) Raus damit:

action="""

Weder beinhaltet das Attribut bei dir eine valide URL, noch wird das zweite Anführungszeichen maskiert. Wenn das Formular die Daten an die selbe Seite schicken soll, ist es auch richtig, wenn das action-Attribut wegbleibt.

2) Zeile 2 sollte vermutlich mit in den Starttag hinein:

<small>
class"text-muted"
...zur Antwort

Ein erster guter Anlaufpunkt für Technologien sind in der Regel die offiziellen Webseiten vom offiziellen Entwickler. Man kann sie meist via Google oder über die Artikelseiten von Wikipedia finden.

  • Java: https://docs.oracle.com/en/java/index.html
  • C++: https://isocpp.org/
  • Für JavaScript empfehle ich MDN: https://developer.mozilla.org/de/docs/Web/JavaScript

Wenn du dich auf den Seiten umsiehst, findest du bereits Tutorials, Referenzen oder Buchvorschläge. Bezüglich Java gibt es von Oracle auch eine Tutorialserie (Java 8): https://docs.oracle.com/javase/tutorial/

Ebenso lässt sich in Bibliotheken / Buchshops oft passende Literatur finden. Ein paar typische Verläge für Programmiersprachen sind der Rheinwerk Verlag, O'Reilly oder Springer.

Wenn du die Suche auf GF nutzt, wirst du des Weiteren etliche Threads finden (vermutlich sogar von gestern/vorgestern/letzter Woche/...), die bereits das Gleiche wie du fragen.

Hier z.B. zu:

  • C++: Das perfekte C++-Buch?
  • Java: Java gut lernen?
  • JavaScript: Womit sollte man anfangen, wenn man programmieren lernen will?

Fernab von Büchern findet man ebenso Videos (z.B. auf Udemy, PluralSight, Lynda). Ja, ebenso auf YouTube, doch in der Hinsicht gebe ich nicht oft Empfehlungen. Wenn du diese Quelle unbedingt nutzen möchtest, dann recherchiere im Vorfeld (via Google - so wie du es zu Büchern/Videokursen tun solltest), welche Kanäle empfohlen werden können oder suche vielleicht nach Vorlesungsaufnahmen von Hochschulen.

Außerdem kann es nicht schlecht sein, ab und an Informationen aus verschiedenen Quellen zu beziehen. Manche erklären es besser als andere oder geben weitere Informationen, die in der vorherigen Quelle nicht deutlich herausgearbeitet wurden.

Bevor du praktisch startest (und das solltest du von Anfang an, parallel zu den von dir gewähltem Lernmaterial), fehlt eigentlich nur noch ein Setup deiner Entwicklungsumgebung.

  • Für C++ lies hier.
  • Zu Java lies hier. Einmal für den Anfang mit der Konsole gearbeitet zu haben, kann ich nur empfehlen. Danach mit einer IDE zu starten, wäre von Vorteil. Passende wurden hier und in der Antwort des letzten Links aufgeführt.
  • Für JavaScript brauchst du im Grunde nur einen Webbrowser deiner Wahl (außer, du möchtest direkt mit Node.js / Electron / o.ä. anfangen). Als IDE könntest du erneut NetBeans einsetzen oder: Atom, Brackets, Sublime Text, Visual Studio, Visual Studio Code, usw. ...

Eine passende Community, die dir bei Fragen helfen kann, findest du beispielsweise

  • hier (für alle drei Sprachen)
  • auf StackOverflow oder Quora (für alle drei Sprachen)
  • zu Java: Gutes Forum fürs Java programmieren? (z.T. sind dort auch Foren aufgelistet, die ebenso Subforen für JavaScript und C++ beinhalten)
  • zu C++: https://www.cplusplus.com/forum/
  • zu JavaScript: https://www.html-seminar.de/forum/board/5-javascript/

Wenn du via Google weiter recherchierst, wirst du sicherlich noch andere Foren finden. Einige Plattformen wie Discord, Google Groups, Reddit, ... haben ebenfalls Subforen für auf einen spezialisierten Bereich von Entwicklern.

Anbei würde ich aber gern noch auf ein paar Tipps verweisen, die ich jemanden anders bereits vor ein paar Tagen gegeben habe.

...zur Antwort

Du brauchst gar keine Schleife. Verwende die fetch_all-Methode, um alle Einträge aus dem ResultSet in ein Array zu holen. Als zweites Argument übergibst du der Methode den Flag MYSQLI_ASSOC.

...zur Antwort

In WPF kann man Animationen einbauen. Das Framework stellt extra Klassen dafür zur Verfügung.

https://docs.microsoft.com/de-de/dotnet/framework/wpf/graphics-multimedia/animation-overview

Hier: https://docs.microsoft.com/de-de/dotnet/framework/wpf/graphics-multimedia/how-to-animate-a-rectangle findest du sogar ein Beispiel, bei dem die Position eines Vierecks verändert wird. Wobei es wohl besser wäre, dies nach Möglichkeit nur in XAML umzusetzen (es ist ja View-Logik).

Vielleicht wäre es günstig, sich das Ganze als Ressource anzulegen, da es dann leicht fällt, die Animation von außen anzutriggern. Sei es durch ein Property, welches sich ändert (https://docs.microsoft.com/de-de/dotnet/framework/wpf/graphics-multimedia/how-to-trigger-an-animation-when-a-property-value-changes), einen Button-Klick o.a..

...zur Antwort

Nein, HTML reicht dafür nicht. Die Daten müssen doch persistent gespeichert werden und es bedarf der Implementation verschiedener Logiken (Anlegen eines Profils, Prüfen von Daten, etc.).

Bau dir ein HTML-Formular, über welches die Daten transportiert werden können und beschäftige dich mit den PHP-Grundlagen (dazu gehören für diesen Fall auch Superglobals).

Ein Minimalbeispiel:

<form action="evaluator.php" method="post">
  <input name="some-name">
  <input type="submit">
</form>

evaluator.php:

if (isset($_POST["some-name"])) {
  print $_POST["some-name"];
}

Informiere dich des Weiteren über MySQLi (oder File Handling) und Sessions. Die PHP-Dokumentation hält dafür entsprechende Artikel bereit. Zudem wurde deine Frage schon oft genug gestellt (Beispiel: HTML Login-System?), weshalb du auch schon auf ausführliche Antworten stößt, wenn du nur einmal die Suche benutzt.

...zur Antwort

Zunächst einmal handelt es sich um das ein und dasselbe Programm. Bei der Projekterstellung kannst du dann auswählen.

Erstellen Sie in Unity 2D- und 3D-Spiele sowie andere interaktive Erfahrungen. Sie haben von dem Moment an, in dem Sie in Unity ein neues Projekt öffnen, die Wahl zwischen 2D und 3D. (...)
Wenn Sie sich noch nicht sicher sind, ob Sie Ihr Spiel im 2D- oder 3D-Modus erstellen möchten, können Sie in Unity jederzeit zwischen den beiden Modi wechseln.

Quelle

Je nachdem, was man wählt, bietet der Editor nach Wahl andere, passende Tools an. Für 2D beispielsweise einen Sprite-Editor. Das in einem 2D-Projekt folgend keine 3D-Spiele erstellt werden, sollte klar sein.

Lies mehr zu diesen Modi in der verlinkten Quelle.

...zur Antwort

Verwende das Flexlayout.

HTML:

<div class="box">
  <div>One</div>
  <div>Two</div>
  <div>Three</div>
</div>

CSS:

.box {
  align-items: flex-start;
  display: flex;
  height: 200px;
}

.box div {
  flex: 33%;
  text-align: center;
}

.box div:nth-child(2) {
  align-self: center;
}

Demo: https://jsfiddle.net/veq3Lxow/

...zur Antwort

Die Frage hierbei wäre zunächst, was für dich eine valide Zahl darstellt.

Einfach nur eine Eingabe, die nur aus den Zeichen 0-9 besteht? Also nie Eingaben mit Vorzeichen oder Dezimalstelle? In dem Fall wäre isdigit eine passende Wahl.

Wenn du aber nach validen Werten filtern möchtest, die auch negativ/explizit positiv oder Fließkommazahlen sein können, wäre so eine Überprüfung passend:

def is_valid_number(text):
  try:
    float(text)
    return True
  except ValueError:
    return False

# usage:
if is_valid_number("+12.3"):
  print("Is valid number")

Statt einen Typecast auf float kannst du auch einen auf int machen, falls du nur Ganzzahlen haben möchtest.

...zur Antwort

Dein Problem kann auch hier recht leicht gelöst werden.

1) Die Eingaben in die Dialogboxen werden gar nicht in einer Variable gespeichert. Das könnte für eine Dialogbox so aussehen:

String input = JOptionPane.showInputDialog("Please input a value");

Die Eingabe steht nach Bestätigung der Box in der Variable input.

2) Du versuchst "Bitte gebe ..." mit "test" zu vergleichen. Das das nicht gleich sein kann, sollte klar sein.

3) Wenn du zwei Stringwerte miteinander vergleichen möchtest, musst du mit der equals-Methode arbeiten.

Beispiel:

String word = "hello";
String otherWord = "world";

if (word.equals(otherWord)) {
  // ...
}

Wenn du den Vergleichsoperator (==) nutzt, werden nicht die Werte verglichen, sondern die String-Objekte selbst. Die sind aber verschieden.

Dazu noch eine Randbemerkung: Strings in Java sind immutable.

Für die Folgezeit würde ich dir übrigens empfehlen:

  • Quellcode stets richtig einzurücken
  • Dich an Java-Konventionen zu orientieren. Lies zu Namenskonventionen hier.
  • Die runden Klammern bei deinen String-Literalen oder dem Vergleich kannst du weglassen. Sie sind nicht nötig.
  • Geschweifte Klammern für Code-Blöcke (wie bei if und else) immer zu setzen (zumindest, so lange du noch Anfänger bist)
if (someCondition) {
  // ...
}
else {
  // ...
}

Wenn du diese Tipps berücksichtigst, sollte dein Code gut / einfacher lesbar bleiben und das Risiko für Fehler senken.

...zur Antwort

Dieses Programm:

import javax.swing.*;

public class Main {
  public static void main(String[] args) {
    String s = JOptionPane.showInputDialog("Text");
    System.out.println(s);
  }
}

läuft bei mir in der Konsole jetzt schon länger als zehn Minuten und wartet auf meine Eingabe.

Gestartet wurde die Anwendung klassisch über die Eingabeaufforderung:

javac Main.java
java Main

Du solltest die Umgebung, in der du die Anwendung testest, genauer unter die Lupe nehmen.

...zur Antwort

Neue Elemente kann man via JavaScript in das DOM einfügen.

Angenommen, du hast diesen Button:

<button id="addRowButton" type="button">Add</button>

und deine Tabelle kann ebenfalls über einen eindeutigen Selektor (folgend: someTable) angesprochen werden.

Dann kannst du beide Elemente holen und dem Button einen Listener zufügen. Im Listener werden die neuen Elemente erstellt und angefügt.

const table = document.querySelector("#someTable > tbody");

document.getElementById("addRowButton").addEventListener("click", function() {
  const row = document.createElement("tr");
  
  // maybe create columns and add to row ...

  table.appendChild(row);
});

Für das Anlegen der Spalten und ihrer inneren Elemente kannst du dich an der Prozedur orientieren, wie ich sie für das tr-Element angewandt habe. Attribute kannst du mit der setAttribute-Methode setzen.

Zu guter Letzt noch ein paar Anmerkungen und Tipps:

  • Setze für dein Dokument die Zeichenkodierung auf UTF-8, dann brauchst du Umlaute nicht kodieren.
<!-- inside head -->
<meta charset="utf-8">
  • Bei lenght hast du einen Tippfehler, die korrekte Schreibung lautet length.
  • Du solltest den Wert in $_GET erst validieren, bevor du ihn im Skript nutzt.
  • Das width-Attribut ist obsolet. Verwende stattdessen das width-Property in CSS.
...zur Antwort