Sind schon die Guten, die es gibt.
Klar, es gibt noch Andere, aber zumindest Notepad++ ist meines Wissens nach der Quasi-Standard in dem Bereich. Und VisualStudioCode ist ja auch ein hervorragender Allrounder geworden, der mühelos alle Anwendungsfälle erschlägt.

|

Den normalen Text-Editor nutze ich gerne für einfache Notizen, schnell aufgerufen (WIN + "edi" + ENTER), fix was rein schreiben und bei Zeiten dann sauber irgendwie anders niederschreiben.

Visual Studio Code nutze ich, sobald ich etwas komplexeres machen will, das in Visual Studio nicht oder nur schlecht geht. Oder wenn es um reine Web-FrontEnd-Entwicklung (z.B. Angular) geht, dann läuft das FrontEnd in VSCode und das Backend in VS.

Für aufwändige Texte mit Formatierungen, Gliederungen und Co wird Office bzw. Word verwendet, das ist mMn. auch im Vergleich zu den kostenlosen Alternativen ungeschlagen.

Und für den ganzen Rest kommt Notepad++ zum Einsatz.
Das heißt, für einfache Texte, alles was Syntax-Highlighting braucht, sobald ich aufwändige Such- oder Ersetzen-Funktionen brauche oder für die vielen kleinen und großen Tricks, mit denen ich mit Hilfe von Notepad++, Excel, Regex, SQL oder C# in wenig Zeit irgendwelche Daten von einem Format ins Andere bringe.

Und ja, für JSON, XML und Co. bevorzuge ich Notepad++, einfach weil es schneller ist und die Funktionen, die ich da benötige, kurz knapp und auf's Wesentliche reduziert sind.

Aber ja, eine schickere UI - und vor allem ein vollständiges und gutes Dark-Theme!!! - wäre wirklich toll.

...zur Antwort

Teils teils.

Es gibt im Grunde drei Wege:

  • Du programmierst die App zwei Mal
  • Du programmierst eine Website und die eigentliche App ist intern nur noch WebServer und Browser oder nur ein Browser
  • Du verwendest Frameworks, die auf mehreren Plattformen funktionieren

Was man macht, hat alles Vor- und Nachteile, da muss man je Anforderung auswählen.

Ich kenne mich in der Java-Welt nicht gut genug aus, um dazu mehr zu sagen, aber bei C# gibt's Xamarin (und bald MAUI und aus der Community noch mehr), mit denen man die App nur einmal entwickeln und nur spezifische Dinge je Plattform anpassen muss. Für Letzteres gibt's wieder PreCompiler-Direktiven, dann ist's der selbe Code.

Meist ist die App selber aber nur ein (kleiner) Teil der Arbeit, dahinter steht normalerweise eine Web-API auf irgendeinem Server, der muss natürlich nur einmal entwickelt werden.

...zur Antwort
Was kann man dagegen tun?

Den Virus gar nicht erst starten.

|

Ein Virenscanner ist kein zuverlässiger Schutz, nie!
Er unterstützt dich nur, falls dir doch mal was unterkommt.

Gegen sowas ist auch kein anderer Virenscanner wirklich sicher.
Ich würde zwar immer den Windows Defender nutzen, aber auch der kann Sicherheitslücken haben, die so ein Virus ausnutzen kann.

Da hilft nur warten, bis die Lücke geschlossen wird, dann aktualisieren und ggf. Windows neu installieren.

...zur Antwort

Das Problem ist, dass dein Fenster mit einem UI-Thread arbeitet, der sich um das Fenster kümmert. Den Download lässt Du im UI-Thread laufen und solange der Download läuft, ist der UI-Thread beschäftigt und kann nichts aktualisieren.

Das Thema heißt asynchrone Programmierung.

Und in Powershell ... keine Ahnung, wie es da geht, aber vermutlich ist es eine Qual :D
Wenn Du also nicht gerade sehr ausgeprägte masochistische Züge hast, solltest Du lieber mit C# anstatt Powershell arbeiten, immerhin wurde das Zeug, mit dem Du da arbeitest, hauptsächlich für C# entwickelt - naja, eigentlich .NET, aber das wird meistens mit C# genutzt.

...zur Antwort

Wie das geht:

Wie das geht, ist leicht. Er wusste, wo die Passwörter stehen und für den Rest braucht er nur gängige Datei-Operationen, die Du bei den gängigen Programmiersprachen nachlesen kannst.

Wie die Daten zu dem kommen:

Und die Datei hat er dann genauso zu sich bekommen, wie dein Browser dem gutefrage.net-Server mitgeteilt hat, was in deiner Frage stehen sollte.
Bei dem Virus werden aber vermutlich noch ein paar Server stumpf weiterleiten, um die Nachverfolgung zu erschweren.

Wie bekommst Du heraus, wer das war:

Gar nicht.

Man kann exe-Dateien öffnen, steht nur nix hilfreiches drin.
Man kann sie ggf. dekompilieren, abhängig von der verwendeten Programmiersprache kann man eventuell sogar halbwegs begreifen, was es tut, ohne Tage zu brauchen.
Wenn Du weißt, was das Programm tut, dann hilft dir das aber auch nicht weiter. Vermutlich wird es eine Verbindung mit irgendeinem Server im Ausland aufbauen und dort die Daten hinschicken. Diese IP-Adresse kann man ggf. herausfinden, vielleicht sogar ohne den riesigen Aufwand davor, indem man das Netzwerk überwacht.

Aber genau da hört's auf: Bei der IP ist Schluss.
Solange der Typ dahinter nicht völlig bescheuert war, hilft dir die IP-Adresse genau gar nichts. In Deutschland sind die Hürden sehr groß, an Personendaten hinter einer IP-Adresse zu kommen und wenn der Server im Ausland steht - da müsstest Du verdammt gute Kontakte zum BND oder zur Regierung haben, damit ... wobei, vergiss es.

Und selbst wenn Du den genauen Standort des Servers hättest, ist das vermutlich nicht mal der Server von dem Typ hinter dem Virus. Vermutlich gehört der irgendeinem Dummkopf, der meinte, ohne Vorwissen einen Server ins Netz stellen zu müssen, der jetzt als Bot missbraucht wird, der deine Passwörter entgegen nimmt und wieder nur an irgendeinen Server weiter schickt.

Das Spiel beginnt also von vorne.
Ergo: Für dich unmöglich - wenn der Typ halbwegs wusste, was er tut.

Du kannst mal bei BSI nachfragen.
Die werden dir nicht helfen können, aber vielleicht kannst Du denen etwas sagen, was ihnen weiter hilft.

Aber so oder so, völlig egal, was Du tust: Wenn Du deine Passwörter nicht mit einem guten Master-Passwort geschützt hast, solltest Du bei allen Accounts deine Passwörter ändern.

...zur Antwort

Windows bietet keine Oberflächen-Tools an, um Daten/Dateien zu verschlüsseln.

Du kannst aber mit z.B. 7zip verschlüsselte Archive erstellen, die kann Windows dann wieder ohne 7zip öffnen - richtiges Passwort vorausgesetzt.

Oder Du nutzt irgendein x-beliebiges Verschlüsselungs-Tool, davon gibt's massig.

...zur Antwort

Häng 'ne 0 dran, dann bekommst Du eine Unterklasse-Grafikkarte.
Multiplizier danach mit 2, dann hast Du eine Mittelklasse-Grafikkarte.
Und danach nochmal mit 2 multiplizieren, dann hast Du eine Oberklasse-Grafikkarte.

Sehr, sehr grob gerechnet, natürlich nicht exakt und dazwischen gibt es viele Abstufungen. Diese kleine Rechnung soll nur ein grobes Bild von üblichen Grafikkarten-Preisen vermitteln und verdeutlichen, wie enorm realitätsfern 30€ sind ;)

...zur Antwort

Hast Du ein paar Jahre Zeit? Dann hast Du vielleicht eine kleine Chance ;)
Hängt natürlich auch davon ab, wie detailliert die Simulation sein soll.

Professionelle Simulationen sind hoch komplex und sehr aufwändig.

...zur Antwort

Wie kann ich Werte in einer XML-Datei mit PowerShell ändern?

Hallo, ich möchte in folgender XML-Datei die drei Werte hinter "Dailylimit_Running", "GoSmall_Running" und "GoLarge_Running" mittels PowerShell jeweils auf 0 setzen.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <userSettings>
    <R_Go_Break.Properties.Settings>
      <setting name="Start_On_Boot" serializeAs="String">
        <value>True</value>
      </setting>
      <setting name="Check_For_Updates" serializeAs="String">
        <value>True</value>
      </setting>
      <setting name="Dailylimit_Running" serializeAs="String">
        <value>959</value>
      </setting>
       <setting name="UpdateSettings" serializeAs="String">
        <value>False</value>
      </setting>
      <setting name="GoSmall_Running" serializeAs="String">
        <value>99</value>
      </setting>
      <setting name="GoLarge_Running" serializeAs="String">
        <value>3578</value>
      </setting>
      <setting name="Restarting" serializeAs="String">
        <value>False</value>
      </setting>
      <setting name="RestartingWindowMode" serializeAs="String">
        <value>1</value>
      </setting>
    </R_Go_Break.Properties.Settings>
  </userSettings>
</configuration>

Das Ganze ist ein Auszug aus der config-Datei der R-Go Break App, welche bei mir aus unerfindlichen Gründen die täglichen Arbeitszeitzähler nicht auf null zurücksetzt.

Das würde ich nun gerne mittels PowerShell-Skript manuell erledigen.
Einfach die komplette Datei zu ersetzen ist keine Option, da auch andere Zähler darin gespeichert werden.

Nebenbei bemerkt finde ich es recht mies entwickelt, dass die Zähler dieser App jede Sekunde in der Log-Datei aktualisiert werden. Das hätte man auch ohne sekündliche Schreibzugriffe auf die HDD lösen können.

...zur Frage

PowerShell-Tutorial IV: XML-Dateien und relationale Datenbanken | iX Magazin (heise.de)

Oder Du schaust dir die C#-XML-APIs an.
Powershell kann das .NET-Framework nutzen, entsprechend hast Du in Powershell die gleichen Möglichkeiten, wie mit C# - nur sehr viel umständlicher.

...zur Antwort

2. ist eine Folge von 1., Visual Studio braucht ein Projekt, um es starten zu können.

Warum Du kein Projekt hast, kann ich dir nicht sagen.
Visual Studio legt das immer mit an - vorausgesetzt, Du hast vorher auch wirklich ein Projekt erstellt (und nicht nur die cs-Datei) und Du hast auch das Projekt geöffnet (und nicht nur die cs-Datei).

...zur Antwort

Habe ich auch schon gesucht.

Gefunden habe ich nur eine und die war irrsinnig teuer...
Da ich mir einen höhenverstellbaren Schreibtisch anschaffen will, hat sich das Thema für mich geklärt.

Dir kann ich aber auch nur empfehlen:
Kaufe Einzel-Halterungen, dann eben drei Stück.
Beachte aber, dass Du die Monitore eventuell schwenken oder etwas von der Wand weg einstellen können möchtest, z.B. um einen Halbkreis zu bilden.

Tatsächlich würde ich aber eher zu eine Tisch-Halterung raten. Da gibt es auch gute und sehr stabile Halterungen und die sind vor allem deutlich günstiger.

...zur Antwort

Programmieren => Die Tätigkeit, das Schreiben von Code
Fachinformatiker Anwendungsentwicklung => Ausbildungsbezeichnung
Softwareentwickler => Der eigentliche Beruf, das Programmieren ist nur ein kleiner Teil.

So zumindest sehe ich das, irgendwie genormt ist da nichts.

Die Ausbildungsbezeichnung ist quasi irrelevant, erinnert mich ein bisschen an Anwaltsdeutsch. Die Ausbildung beinhaltet aber nicht nur Programmierung, sondern ist viel weiter gefächert (Systemintegration, Elektronik, BWL, etc.), betrachtet aber alles nur sehr oberflächlich - was vermutlich dem extremen Umfang geschuldet ist.

Zum Job des Softwareentwicklers gehört neben dem Job als Programmierer noch sehr viel mehr dazu, was dir aber niemand wirklich beibringen kann, das muss man in der Praxis lernen.

...zur Antwort

Denk dir 'ne Zahl aus.

Das schöne in der Informatik ist, dass nicht Studium oder Ausbildung über das Gehalt entscheidet, sondern Fähigkeiten, Qualitäten, Wissen, Erfahrung, etc.
Hängt natürlich auch von der Firma ab, manche Firmen zahlen mehr, Andere weniger.
Umgekehrt heißt das aber auch, dass Du nicht plötzlich viel Geld verdienst, nur weil Du studiert hast, Du musst auch etwas dafür leisten können.

Deine Frage kann man also nicht klar beantworten.

...zur Antwort

Im Browser-Verlauf steht, was Du gemacht hast.
Wenn das Windows nicht mehr zu retten ist, kann man den Verlauf auch so auslesen, ist nur um einiges aufwändiger.

Und der Router schreibt ggf. auch mit, was Du tust - auch wenn's nicht legal ist, das interessiert nicht jede Firma.

Dem Techniker ist das aber ziemlich sicher sehr egal.

...zur Antwort

C# mehrere Einstiegspunkte definiert?

Hallo ich habe eine Frage zu meiner nachgecodeten Lotterie. Wenn ich sie ausführen will steht dort, dass mehrere Einstiegspunkte definiert sind.

using System;
using System.Linq;


namespace ConsoleApp564
{
    class Program
    {
        public static void Main(string[] args)
        {
            Random Zufallszahl = new Random();
            int lösung1 = Convert.ToInt32(Zufallszahl.Next(1, 49));
            int lösung2 = Convert.ToInt32(Zufallszahl.Next(1, 49));
            int lösung3 = Convert.ToInt32(Zufallszahl.Next(1, 49));


            int[] lösung = new int[3] { lösung1, lösung2, lösung3 };
            Array.Sort(lösung);


            int zahl1;
            int zahl2;
            int zahl3;


            Console.WriteLine("Wilkommen in der Lotterie");
            Console.Write("Geben sie ihre erste Zahl eine, diese muss zwischen 1 und 49 liegen: ");
            zahl1 = Convert.ToInt32(Console.ReadLine());


            if (zahl1 <= 49 && zahl1 >= 1)
            {
                Console.Write("Geben sie ihre zweite Zahl ein, diese muss zwischen 1 und 49 liegen: ");
                zahl2 = Convert.ToInt32(Console.ReadLine());


                if (zahl2 <= 49 && zahl2 >= 1)
                {
                    Console.Write("Geben sie ihre dritte Zahl ein, diese muss zwischen 1 und 49 liegen: ");
                    zahl3 = Convert.ToInt32(Console.ReadLine());


                    if (zahl3 <= 49 && zahl3 >= 1)
                    {
                        int[] number = new int[3] { zahl1, zahl2, zahl3 };
                        Array.Sort(lösung);
                        if ((Enumerable.SequenceEqual(lösung, number)))
                        {
                            Console.WriteLine("Sie haben gewonnen!");
                        }
                        else
                            Console.WriteLine("Sie haben verloren die Lösungzahlen waren " + lösung1 + ", " + lösung2 + " und " + lösung3 + ". Sie haben " + zahl1 + ", " + zahl2 + " und " + zahl3 + " getippt.");
                    }
                }
                else
                {
                    Console.WriteLine("Die Zahl muss zwischen 1 und 49 liegen!");
                    return;
                }
            }
        }
    }


}


...zur Frage

Dann hast Du mehrere Einstiegspunkte im Start-Projekt.
Normalerweise wird nach einer statischen Main-Methode gesucht, findet er mehrere, hast Du mehrere Einstiegspunkte.

Ein eigenes Compile-Script ist jedenfalls völlig unnötig, zumindest für das, was Du vor hast.

Und das alte .NET-Framework (heißt ".NET Framework") ist tot und sollte nicht mehr verwendet werden. Die Neuentwicklung heißt nur ".NET" (ohne "Framework"). Am Code ändert sich meistens nichts, nur die csproj-Dateien sind deutlich einfacher geworden.

Und warum arbeitest Du immer noch direkt mit der Enumerable-Klasse?

...zur Antwort

C#: Wie kann ich Arrays vergleichen?

Hallo,

ich bin sehr neu im Programmieren, habe hier eine Lotterie nachgecodet:

using System
using System.Collections.Generic;
using System.Linq;

namespace ConsoleApp2
{
  class Program
  {
    static void Main(string[] args)
    {
      Random Zufallszahl = new Random();
      int lösung1 = Convert.ToInt32(Zufallszahl.Next(1, 49));
      int lösung2 = Convert.ToInt32(Zufallszahl.Next(1, 49));
      int lösung3 = Convert.ToInt32(Zufallszahl.Next(1, 49));

      int[] lösung = new int[3] { lösung1, lösung2, lösung3 };
      Array.Sort(lösung);

      int zahl1;
      int zahl2;
      int zahl3;

      Console.WriteLine("Wilkommen in der Lotterie");
      Console.Write("Geben sie ihre erste Zahl eine, diese muss zwischen 1 und 49 liegen: ");
      zahl1 = Convert.ToInt32(Console.ReadLine());

      if (zahl1 <= 49 && zahl1 >= 1)
      {
        Console.Write("Geben sie ihre zweite Zahl ein, diese muss zwischen 1 und 49 liegen: ");
        zahl2 = Convert.ToInt32(Console.ReadLine());

        if (zahl1 <= 49 && zahl1 >= 1)
        {
          Console.Write("Geben sie ihre dritte Zahl ein, diese muss zwischen 1 und 49 liegen: ");
          zahl3 = Convert.ToInt32(Console.ReadLine());
          
          if (zahl1 <= 49 && zahl1 >= 1)
          {
            int[] number = new int[3] { zahl1, zahl2, zahl3 };
            Array.Sort(lösung);
            bool isEqual = Enumerable.SequenceEqual(lösung, number);
          }
        }
        else
        {
          Console.WriteLine("Die Zahl muss zwischen 1 und 49 liegen!");
          return;
        }
      }
    }
  }
}

und habe eine Frage.

Dort wo

bool isEqual = Enumerable.SequenceEqual(lösung, number);

steht, probiere ich die Listen "lösung" und "number" miteinander zu vergleichen und falls sie gleich sind, einen Text anzeigen zu lassen. Doch vor diesen Befehl kann ich leider kein if setzen.

LG

...zur Frage

Was ist jetzt das Problem?
Schreib danach ein if mit isEqual und gut is.

Abgesehen davon:
Fast alle Methoden in der Enumerable-Klasse (und Queryable auch) sind Erweiterungsmethoden, man kann den Aufruf also auch so schreiben:

var isEqual = lösung.SequenceEqual(number);

Deine Schreibweise ist aber nicht falsch (der Compiler macht auch nix anderes), es macht nur sonst niemand so :D

...zur Antwort

Hattest Du schon mal eine Wasserkühlung?

Wenn nein, dann lass dir gesagt sein: Das ist völlig überflüssig :D

Stell sie so ein, dass sie dich nicht stört, das reicht völlig aus.
Zwei große Radiatoren sind deutlich übertrieben, ein paar Umdrehungen mehr oder weniger machen da keinen Unterschied.

...zur Antwort