Komplett ersetzeten wird TypeScript JavaScript nie, da TS bevor es ausgeführt werden kann immer erst zu JS transpiliert werden muss. Wirklich stark ein unterschied macht es aber auch nicht, da TS quasi JS mit starker typisierung ist.

...zur Antwort

Der grund weshalb das nicht geht ist das URL Kodierung genutzt wird. Zeichen die in der URL stehen obwohl sie nicht erlaubt sind werden deshalb mit dieser Kodierung Kodiert. Das Zeichen [ wird z.B. in %5b kodiert und als solches dürftes du es auf dem Server auch empfangen.

Ein besserer Weg um ein array zu übergeben währe ein Daten format wie json zu nutzen. Du könntest egal ob mit GET oder POST ein json objekt das ein array enthält entgegen nehmen und aus diesem die Werte beziehen. JSON enthält zwar auch Zeichen die in der URL kodierung anders kodiert werden, allerdings müssten Werte automatisch dekodiert werden.

lg Suiram1

...zur Antwort

Ein Weg der mir jetzt spontan einfällt wäre eine Liste mit absteigenden 2er Potzen zu erstellen (z.B. [1024, 512, 256, ...]) und du läst eine schleife diese durchlaufen. Jede der potenzen wird in dieser reihenfolge subtrahiert. Ist das Ergebnis der subtraktion größer 0 setzt du im Ergebnis das jeweilige Bit (bei z.B. 256 müsste es das 8. Bit sein), und speicherst das Ergebnis der Subtraktion in der Ausgangs Variable. Wenn es gleich 0 ist die Verarbeitung fertig und die Schleife kann beendet werden und wenn das Ergebnis negativ ist gehtst du zur nächsten potzen weiter und setzt das Bit nicht.

Nachtrag: Wenn bei der letzten Potenz angekommen das Ergabnis größer 0 ist dürften die Anzahl an bits nicht ausreichen.

Ich hab das nicht probiert, aber das müsste eigentlich so Funktionieren.

lg Suiram1

...zur Antwort

Die Platform heißt GuteFrage und nicht WünschDirWas. Es wäre angemessen wenigstens einen Versuch vorzulegen anstelle von anfang an eine komplette Lösung zu verlangen.

Aber naja. Du könntest dir jedenfalls eine Klasse User erstellen die alle geforderten Daten enthält. Um nun CRUD zu implementieren ist es sinnvoll eine Klasse zu erstellen, die die CRUD operationen bereitstellt und mit diesen eine Nutzer DB egal ob extern, im local storage oder nur als instanzen verwaltet.

Wie du nun alles in der GUI und den zugriff auf diesen Nutzermanager umsetzt musst du schon machen.

Müsstest ihr das aber nicht eigentlich in den Vorlesungen oder so lernen?

...zur Antwort

Wenn der TypeScript code in JavaScript code transpiliert wurde kann man da recht wenig machen. Man kan zwar probieren den uhrsprünglichen typescript code wieder daraus zu bekommen aber bei TypeScript eigenen features die in Effizienten, aber schwer Verständlichen JavaScript code übersetzt werden wird es schwierig.

Das würde ich sagen wenn man es selber per 'hand' versucht.

Nach einer kurzen Google suche bin ich auf converter gestoßen ich weiß, aber nicht inwiefern, die was taugen. Du kannst diese vllt. mal ausprobieren.

Für die Zukunft würde ich dir raten Git mit einer Remote repository zu verwenden, damit alles in der Cloud gesichert ist.

...zur Antwort

Für solche Projekte wirst du nirgends eine Schritt für Schritt anleitung finden. Am besten ist es da wenn du selbst erstmal programmieren lernst in einer Sprache und Framework deiner Wahl (sollte, aber für Webentwicklung geeignet sein) und wenn du diese plus einge konzepte und Architekturen ganz gut kannst und verstehst wirst du selbst wissen wie du vorgehen musst.

lg Suiram1

...zur Antwort
Frage zu c# bzw. #script?

Kennt sich jemand mit #script aus?

Ich habe folgendes Skript:

 "Script/DeviceTemplate": {
        "Content": "{{var assignments = []}}
{{var nodeId = ServiceTask.DeviceInstallationServiceTask.Details.NodeId}}
{{#each groupName in Typicals.DeviceTypes.xxx.DeviceTypicals[ServiceTask.DeviceInstallationServiceTask.Details.Typical.Name].SignalGroups}}
{{var index = 0}}
{{#each signal in Typicals.DeviceTypes.xxx.SignalGroups[groupName].SignalList}}
{{var baseComponent = ServiceTask.DeviceInstallationServiceTask.Details.Typical.SignalAssignments[groupName].BaseComponent}}
{{var _ = assignments.push({
    "assignmentIndex": index,
	"deviceId": "" + nodeId,
    "sparkplugName": baseComponent + signal.MetricBaseName
})}}
{{index = index + 1}}
{{/each}}
{{/each}}
{{ {
  "system": {
    "deviceName": nodeId
  },
  "apps": [
    {
      "appName": "SPARKPLUG",
      "appId": 12345,
      "settings": {
                "clientId": nodeId,
                "keepAliveInterval": 120,
                "publishInterval": 120,
                "startupDelay": 50
      },	 
      "sparkplugSettings": {
            "mqttTopic": "spBv1.0",
            "sparkplugTopic": "NTN/{MessageType}/" + nodeId
      },
      "assignments": assignments
    }
  ]
} |> json}}"
      }

Dieses hat zwei Schleifen, in der inneren Schleife soll die Variable index um 1 erhöht werden. Alles funktioniert, nur bekomme ich in der Ausgabe für jeden Aufruf von

index = index + 1

ebenfalls eine Ausgabe:

     1
     2
     3
     4
     5
     6
     7
     8
     9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
   {"system":{"deviceName......

Wie kann ich die Ausgabe von 1 bis 23 unterdrücken?

...zum Beitrag

Nach einigem suchen habe ich diesen Vergleich zwischen Codezeilen in Razor und #Script gefunden.

Ich kann das zwar gerade nicht testen, allerdings müsste es gehen wenn du

```code
index = index + 1
```

anstelle von

{{index = index + 1}}

schreibst. Soweit ich das verstanden habe wird alles was in {{ }} steht evaluiert und ausgegeben und in den Codeblöcken nur Evaluiert.

Tipp: Anstelle von

index = index + 1

kannst du die Variable direkt inkrementieren mit

index++

lg Suiram1

...zur Antwort

Laut dem Flussdiagramm würde wenn eine der Bedingungen wahr ist zurückgekehrt werden.

Ich würde es eher so umsetzen, dass von den Blöcken Geschwindigkeit: xx% der Pfeil sich mit dem wenn die Bedingung Falsch ist zusammengeht, also vor der nächsten Bedingung.

Dann müsste außerdem noch vom Ende der letzten Bedingung ein Pfeil zum Anfang der ersten gehen damit die Schleife vollständig ist.

Ich hoffe das man das soweit nachvollziehen kann was ich meine (lässt sich halt nicht so gut beschreiben).

LG Suiram1

...zur Antwort

Bücher kenne ich da zwar keine (hab auch nie nach welchen gesucht), allerdings finde ich zwei YouTube känale ziemlich gut, die vieles verständlich erklären. Die Kanäle beziehen sich zwar nicht auf Java, sondern generell darauf wie Computer befehle ausführen an Beispielen in 'Komplett' kompilierten sprachen wie Rust oder C.

Vorweg kann ich dir den Hinweis geben, dass du dich nicht auf Deutsche inhalte fixieren solltest. In den bereic hen von Computern und Softwareentwicklung kommt man sehr viel weiter mit Englisch.

Zum einen wäre da Core Dumpped. Auf diesem Kanal werden viele Prinzipien wie eine CPU im Detail dinge ausführt beleuchtet und vorallem wie Transitoren all das wie Rechnen und Datenspeichern tun können.

Dann wäre da noch Ben Eater. Hier wird mehr an Praktischen Steckkbrett Computer erklärt, wie verschiedene dinge funktionieren.

lg Suiram1

...zur Antwort

Das einzigste was dort nicht genannt ist, ist dass du dir ein Node projekt erstellen musst und in diesem dein Botcode einfügst. Das erstellen eines solchen Projekts ist das erste was man macht wenn man mit Node arbeitet. Außerdem ist das dort nur beispiel code der außer loggen nichts macht. Du solltest dir erstmal die Grundlagen von JavaScript und Node anschauen bevor du damit anfängst.

...zur Antwort

Das was mir als erstes auffällt ist das du in der Bedingung der While-Schleife kein Vergleich, sondern eine Zuweisung durchführst. Das heißt das x die ganze zeit auf y -1 gesetzt wird. Vergleichen tut man mit == und zuweisen mit =.

lg Suiram1

...zur Antwort

Task ist eine Klasse die Methoden für das erstellen von Aufgaben bereitstellt und die Task instanz repräsentiert eine solche Aufgabe. Mit Task.Run(MeineMethode) kann man zum Beispiel eine Aufgabe starten, die die Methode MeineMethode paralel zum Aufrufer ausführt. Insgesammt ist diese auch wichrig für die asynchrone programmierung was noch viel tiefgreifender geht.

lg Suiram1

...zur Antwort

Private benutzt man für interne sachen und public für öffentliche. Heißt also wenn es nicht gedacht ist das von außen zugegriffen wird ist es sinnvoll private zu nutzen und anderfalls public.

lg Suiram1

...zur Antwort