Laden...
M
Benutzerbeschreibung
-VS Code, VS 2019 Comm.

Forenbeiträge von M.L. Ingesamt 368 Beiträge

12.12.2022 - 08:38 Uhr

Auf Vorrat (da DB-Anbindung): [Artikelserie] SQL-Befehle:... (macht Sinn, wenn man Daten manipulierenden Angreifern/Nutzern/... nicht "Tür und Tor" offen halten will)
Fehlerhafte (i.S. von nicht vertrauenswürdige) Software kann man sich aber auf jedem Weg einhandeln (Anspielung auf Youtube, "thenativeweb", "Achtung! npm ist unsicher (by Design …))

29.11.2022 - 11:11 Uhr

BASIC ..., Pascal und C. Grundsätzlich gibt es bei jeder Programmiersprache eine formalisierte Menge an Schlüsselwörtern auf die der Compiler / Interpreter / Transpiler (Bspl.: TypeScript) /... in einer vorgesehenen Art und Weise reagiert. Diese Schlüsselworte lassen sich x-beliebig kombinieren, führen aber eben nicht immer zum Erfolg und werden mit Warnungen oder Fehlermeldungen quittiert. Z.B. schlägt die Kombination "abstract class" i.V. mit "final" fehl.

Den Compiler / Interpreter /... selbst interessiert nur die formelle (nicht dessen logische) Korrektheit des Codes.

21.11.2022 - 14:17 Uhr

...PHP...C#...OOP... Auf Vorrat: C# erzwingt die Verwendung von Klassen zum Definieren von Variablen und Methoden. Datentypsicherheit wird auch streng gehandhabt: FAQ - Variablennamen zur Laufzeit...

16.11.2022 - 10:54 Uhr

... ändern?

Zusätzlich: im Endeffekt ist der verwendete C#-Compiler die entscheidende Instanz was formal(*) korrekten Code, Implementierungs-Möglichkeiten oder Magie im Hintergrund betrifft. Verhaltensweisen wie "Clean Code" oder "Aufteilung in Schichten" dienen dem Menschen, erleichtern aber das Ändern oder Erweitern eines Softwareprodukts. Und mit (tendenziell) zunehmender Menge an Code ist der Einsatz einer Versionsverwaltung (Git, (veraltet) Subversion, (veraltet) CVS,... ) anzuraten.

(*)nicht zwingend: logisch

04.11.2022 - 20:56 Uhr

...PHP...

PHP ist eine Skriptsprache und diese sind idR weniger anspruchsvoll was z.B. Formalien oder Gebrauch der OOP darstellt. Die Idee getter- und setter-Methoden als Container oder zentrale Kontrolle einzusetzen ist aber dieselbe wie in C#: https://www.php-einfach.de/experte/objektorientierte-programmierung-oop/php-design-patterns/get-und-set-methoden/

03.11.2022 - 08:05 Uhr

... get und set...

Das sind Methodennamen, und wie jede Methode beinhalten sie eine Teilmenge elementarer Befehle. Wobei "get" und "set" vom Compiler gesondert behandelt werden (im Ggs. zu anderen Bezeichnungen).

 { get; set; }

ist übrigens eine valide Kurzschreibweise, wenn nur Werte gelesen oder gesetzt werden sollen.

02.11.2022 - 16:40 Uhr

...static...

Klassen dienen zum Herstellen von Zusammenhängen zwischen Methoden und Objekten (1). Eine statische Methode oder Variable soll diese Eigenschaft aber gerade nicht erfüllen (auch wenn der C#-Compiler eine formelle Definition innerhalb einer Klasse erwartet (2)).

(1)youtube.com, Kanal "thenativeweb", "Warum OOP (objektorientierte Programmierung) überbewertet ist" (ab 3:03) (tendenziell religiöse Ansichten...)
(2)youtube.com, Kanal "thenativeweb", "5 Gründe, warum C# Murks (und nicht mehr so ganz zeitgemäß) ist" (ab 13:14 oder 14:49) (auch tendenziell religiöse Ansichten...)

20.10.2022 - 08:38 Uhr

C# .. Webabfrage

Alternativ könnte man hierfür eine Skriptsprache wie Python (i.V. mit z.B. Beautiful Soup) verwenden.

17.10.2022 - 12:39 Uhr

Das ist eine vom Compiler akzeptierte Kurzschreibweise, wenn nur Werte gelesen oder geändert (Doku zu set) werden sollen: get – C#-Referenz

10.10.2022 - 12:05 Uhr

Zumindest was das Löschen aus der jeweiligen View (nicht aus den verwendeten Datensätzen) angeht, könnte das hier helfen: https://www.csharp-console-examples.com/winform/deleting-selected-row-in-datagridview-in-c-by-using-button/

27.09.2022 - 07:59 Uhr

Oder mit Python: https://www.geeksforgeeks.org/how-to-sort-data-by-column-in-a-csv-file-in-python/ (das Panda-Paket ist analog zum CsvHelper eine Fremdbibliothek)

25.09.2022 - 10:43 Uhr

Objektorientierung ...da gehört mehr dazu als "nur" ein (oder mehrere) Instanzobjekt(e) anzulegen: Rheinwerk - Openbook OOP und Rheinwerk - Openbook VC# '12 (Kap. 3)

21.09.2022 - 07:25 Uhr

Zusatz: bei graphischer Programmierung können auch passende Bibliotheken und Möglichkeiten der Grafikkarte (GPU) genutzt werden. Sinn und Zweck der (parallelen) Berechnungen wird der Rechner aber auch nicht kritisieren.

27.08.2022 - 11:43 Uhr

XML

...und falls (später) JSON zum Einsatz kommt: Tutorialhinweis bei dotnetpro

17.08.2022 - 12:04 Uhr

AntMe... Schrödinger (..) relativ alt

Zusatz:
AntMe verwendet eine mittlerweile veraltete .NET Version inkl. IDE, XNA wird auch nicht mehr weiterentwickelt (Vorteil: es gibt (wohl) keine beachtenswerten Änderungen/Erweiterungen mehr)
Die aktuellste Ausgabe von Schrödinger (Rheinwerk Verlag) stammt von 2019 (C# 8)

16.08.2022 - 08:36 Uhr

static

Weiterhin: [FAQ] Für das nicht statische Feld, die Methode oder die Eigenschaft "X" ist ein Objektverweis erf. Kurzfassung: statische Methoden, Variablen,... werden zwar in einer Klasse definiert (weil die C#-Formalien es verlangen) haben mit der Klasse selbst aber (idR) nichts zu tun.

12.08.2022 - 07:59 Uhr

Skriptsprache ... direkt mit dem Befehl losgelegt.

Bei einer Skriptsprache hat man idR weniger Formalien einzuhalten bis zum Programm, verzichtet aber auch auf Sicherheiten und andere Aktivitäten im Hintergrund. Z.B. Datentypgarantie oder das nur die geänderten Teile eines Programms interpretiert (eher: kompiliert) werden. Aber auch hier gibt es Entwicklungen, siehe youtube, MouseVsPython, "Python 101 - Type Hinting in Python"

11.08.2022 - 09:04 Uhr

Etwas billiger: ein C#-Compiler erwartet gewisse syntaktische Formalien (z.B. das die Definition von Variablen oder Methoden immer innerhalb einer Klasse erfolgt), die auf jeden Fall einzuhalten sind und zum laufenden Programm führen. Aus menschlicher Sicht haben Empfehlungen wie z.B. Coderichtlinien, Aufteilung in versch. Schichten,... Sinn (erleichtern das Lesen/Schreiben von Code, erleichtern das Erweitern/Ändern von Code,...)

11.08.2022 - 08:36 Uhr

Grundsätzlich funktionieren das Herunterladen und Entpacken der zip-Datei, sowie das Anlegen und Starten einer Konsolenapplikation: .NET Tutorial | Hello World in 5 minutes (s.a. Screenshot im Anhang)

01.08.2022 - 09:54 Uhr

Hidden Fields gebrauchen soll.

Damit könnte man -auch in Kombination mit z.B. Captchas oder Rechenaufgaben- ungewünschte Fremdeingaben (z.B. via Selenium, PlayWright,..) verhindern.

26.07.2022 - 20:13 Uhr

..und noch eine Vorgehensweise (die beim Laden von Internetseiten Sinn haben kann): erst das Control überhaupt darstellen lassen, danach in der gewünschten Formatierung.

21.07.2022 - 14:15 Uhr

Zwecks eines Erfolgserlebnisses (weitere Optimierungen oder "best practices" bleiben aussen vor): man erstellt wieder eine Windows Forms GUI-Applikation und platziert dort einen Button. In der _click-Methode dann:

 private void button1_Click(object sender, EventArgs e)
        {
           
            Form1 myForm = new Form1();
            int aktuelleBreite = myForm.Width;

            
            Console.WriteLine("aktuelleBreite :" + aktuelleBreite);
          
            Console.ReadLine();
        }
 

Ausgabe im Debuggen: "WindowsFormsApp_Console_Resolution.exe" (CLR (..)
aktuelleBreite :816
(..) beendet.

20.07.2022 - 22:47 Uhr

Zum Thema API kann man (auch) unter dem Twitterkonto @Rapid_api Material in Comic- oder Tutorialform recherchieren: https://mobile.twitter.com/Rapid_API

18.07.2022 - 08:29 Uhr

Oberfläche zusammenzuklöppeln,

Evtl. hat VS auch Container anzubieten, welche sich (im Hintergrund) um die Initialisierung, Ansprache, Formatierung, Funktionalität,... der untergeordneten Elemente kümmern. Im konkreten Fall z.B. eine DataGridView mit mehreren Spalten und DGVComboBoxColumn als ColumnType (s. Anhang)

17.07.2022 - 20:35 Uhr

Weiterhin kann man sich z.B. ein Windows Forms Projekt anlegen und die gewünschten Ergebnisse auf der Konsole (o.ä) ausgeben lassen. Einen einfachen Button auf einer WinForms GUI platzieren und dessen _Click-Methode erweitern könnte so aussehen:

private void button1_Click(object sender, EventArgs e)
        {
            int Width = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width;
            int Height = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height;
            Console.WriteLine("Width :" + Width);
            Console.WriteLine("Height :" + Height);
            Console.ReadLine();
        } 

Ausgabe (z.B.) nach Klick auf "Run" beim Debuggen:
...
Width :1280
Height :1024

Allerdings sollte man erst auf Kommandozeile üben, später dann im GUI-Bereich

15.07.2022 - 09:19 Uhr

Buch ... Website

Grundsätzlich kann man über jede Informationsquelle auf Verhaltensweisen (in Form von z.B. C#-Programmiertechniken) stossen, die aufgrund neuerer Entwicklungen (nicht mehr) empfehlenswert sind, ein Bspl. aus den FAQ zu Boxing und Unboxing. Eine Neuerung ist z.B. der "Github CoPilot", aber hier besteht (noch) die Gefahr das ungetester oder (aus menschlicher Sicht) nicht verständlicher Code verwendet wird.

14.07.2022 - 22:15 Uhr

Weiterhin achtet der C#-Compiler auf die Einhaltung diverser syntaktischer Formalien, z.B. das alles (Objekte, Methoden,...) Bestandteil irgendeiner Klasse ist, Datentyp-Sicherheit, Einsatz von öffnenden und schliessenden Klammern,...

26.06.2022 - 12:35 Uhr

Bitte Beitrag nicht löschen

Nebenbei: den Original-Beitrag auch nicht selbst editieren (vor allem nicht am Code), da das Startproblem (inkl. erfolgter Antworten) so nicht mehr nachvollzogen werden könnte. Und längerfristig -v.a. bei komplexeren Software-Produkten- könnte der Einsatz eines Versionsverwaltungssystems (Git(hub),...) erwägenswert sein.

12.06.2022 - 09:32 Uhr

Zusätzlich kann es viele objektive und subjektive Gründe haben, warum sich eine Person (nicht (*)) auf eine Stelle bewirbt oder Unternehmen eine Stelle (konsequent) unbesetzt lassen (letzteres kann Sinn haben, wenn eine Fehlbesetzung effektiv mehr Ärger macht als ein Freilassen)

(*)die verwendeten Technologien und Vorgehensweisen könn(t)en zu alt oder zu wenig verbreitet sein. Falls Veränderungsdruck besteht, könnte der Zug anderweitig abgefahren sein...

13.05.2022 - 18:14 Uhr

Muskelmasse .. Waffe

Rateversuch: Schrödinger programmiert C# (~750 Seiten)

12.05.2022 - 07:51 Uhr

trocken

Wenn man den (längerfristigen) Nutzen diverser Vorgehensweisen nicht erläutert bekommt, kann das sogar stimmen...

Code-Konventionen erleichtern das Schreiben oder Lesen eigenen oder fremden Codes
Namespaces wurden schon erläutert (Zusatz: Eigenrecherche "C/C++ diamond problem")
Klassen diesen zum Herstellen von Zusammenhängen von (strengbetrachtet irgendwelchen) Daten und Methoden (Quelle: YT, thenativeweb - "Warum OOP (objektorientierte Programmierung) überbewertet ist")

16.04.2022 - 17:11 Uhr

Weiterhin bedeutet eine neuere .NET Runtime 5+ auch ein verändertes Verhalten bei z.B. Strings und Unicode: Behavior changes when comparing strings on .NET 5+

16.04.2022 - 08:43 Uhr
  • Strukturen dafür zu verwenden? Oder besser Klassen? Es gibt interne Unterschiede zwischen "Structs" und "Classes", z.B. Link zur MS-Doku
23.03.2022 - 11:49 Uhr

auslagern

Hierbei könnte man die Teile der Software mit keinem oder geringem Änderungs-/Erweiterungsbedarf in einer Datei (z.B. dll) zusammenfassen und die restlichen Teile jeweils separat auslagern (dll, Interfaces, Module,...)

16.03.2022 - 18:51 Uhr

Weiterhin könnte man Avalonia UI mal betrachten (neben Konzepten, die für effektive WPF-Programmierung elementar sein könnten)

13.03.2022 - 19:58 Uhr

Architektur

Einfacher Grundsatz: man fügt die sich nicht (oder kaum) ändernden Teile der Software zusammen, sich schneller ändernde Teile werden ausgelagert (z.B. durch Interfaces). Und DIE Architektur gibt es nicht, siehe auch die Videos unter Folgen chronologisch (z.B. 111, 109, 92). Und was Englisch betrifft höre man die Ausführungen eines ehemaligen mycsharp-Mitglieds: YT - thenativeweb, "Programmieren auf Deutsch?!"

12.03.2022 - 13:45 Uhr

Zusätzlich kann man beim Verwenden mehrerer abstrakter Klassen auf das sogenannte "diamond problem" stossen (Java oder C# erlauben deswegen 'nur' einfache Vererbung). Interfaces machen effektiv Sinn, wenn man häufig(er) Änderungen oder Erweiterungen (z.B. bei der Menge an zu verwendenden Datenbanken oder deren Abfrageoperationen) implementieren und nutzen muss.

04.03.2022 - 09:54 Uhr

Für C# (& SAP) gibt es nach wie vor ERPConnect

20.02.2022 - 20:50 Uhr

das CQRS-Entwurfsmuster siehe z.B. bei thenativeweb & YT: https://www.youtube.com/watch?v=nDSwyowKYP8 und https://www.youtube.com/watch?v=r0xWHh2u--A (aber am Beispiel "Microservices" sollte man anmerken, dass man ein Architekturprinzip nicht "auf Teufel komm raus" auf jede x-beliebige Situation anwenden soll(te))
Wege, wie ich diese erreichen kann. Man identifizert im Vorab die Teile der Software, die kaum (oder selten) geändert werden und fügt diese zusammen. Teile mit höherer Änderungsrate werden ausgelagert oder abstrahiert, z.B. durch Interfaces

20.02.2022 - 20:06 Uhr

solide Applikation zu entwickeln? Weiterhin hat der Verweis auf die Drei-Schichten-Architektur einen tieferen Sinn: damit können (häufige) Änderungen / Erweiterungen an der Software nur an einer (zentralen) Stelle im Code vorgenommen werden (immerhin könnten weitere DB'en ins Spiel kommen, an der Verarbeitungslogik könnten Änderungen nötig werden, andere UI's wollen benutzt werden,...)

10.02.2022 - 09:03 Uhr

Von C# mal abgesehen könnten Selenium (aktueller: Playwright), Python geeigneter sein.

04.02.2022 - 11:33 Uhr

alles kompliziert geworden ist...

(teilweise offtopic) Der gezeigte Quellcode funktioniert auch ohne Umwege über z.B. PowerShell oder zusätzliche (ältere) Befehle, siehe Anhang.
Im Gegensatz zu Java nimmt .NET aber nicht unbedingt auf Plattformkompatibilität Rücksicht. Es kann also passieren, dass man auf Codes oder Vorgehensweisen trifft, die damals möglich (wenn auch nicht zwingend sinnvoll) waren. Aber diese sind angesichts neuerer Änderungen, Entwicklungen, Erweiterungen,... obsolet (geworden), bekanntere Beispiele sind "(Un)Boxing" vs. "Generics" oder der neue(re) Umgang mit Zeiten.

02.02.2022 - 16:40 Uhr

2.) Verstehst du unter "naiv kompiliert"

Zus. zu 1.): im konkreten Fall braucht man @ nicht, aber längerfristig ist es die solidere Entscheidung
2.) das "t" fehlt absichtlich: VS starten, WinForms-Projekt anlegen, Program.cs öffnen, gegebenen Quellcode kopieren, "Debug" und "Any CPU" belassen, alles speichern, Run-Button. Und kurz danach auf der Kommadozeile mit geöffnetem (oder geschlossenem) Chromebrowser experimentieren (<- evtl. waren andere Vorgehensweisen geplant)

02.02.2022 - 13:11 Uhr

funktioniert allerdings nicht.

Testsystem: Windows 10 Pro, .NET 5.0 Runtime, VS Comm. 2019 Der Testcode funktioniert -naiv kompiliert und mit @ vor der Pfadangabe- jedenfalls.


...        mExecutablePath =@"C:/Program Files/Google/Chrome/Application/" + lChromeProcessNameWithExtension;

Weiterhin kann man in die Kommandozeile gehen und ruft das kompilierte Programm zu Fuss auf (Anhang)

14.01.2022 - 11:16 Uhr

noch etwas Neuland

Zwecks Orientierung:

  • Code-Konventionen machen Sinn um sich überhaupt im (fremden) Quellcode zurechtzufinden
  • die Aufteilung in Schichten macht (effektiv) Sinn, wenn das Programm (häufig) geändert oder erweitert werden soll: dann hat man die Änderung/Erweiterung (im Idealfall) an einer (zentralen) Stelle
  • SQL-Parameter machen Sinn, wenn irgendein(e) Endnutzer(in) irgendwelche Daten in eine Ziel-Datenbank eintragen darf/soll/muss: damit können kritische Einträge (oder Befehle) verhindert werden
  • SW-Architektur: man fügt die die sich nicht (oder selten) ändernden Teile der Software zusammen, sich schnell(er) ändernde Teile werden ausgelagert

...im Endeffekt sind das aber "nur" Empfehlungen und man kann das Zielprogramm nach eigenen Vorstellungen konstruieren.

28.12.2021 - 19:05 Uhr

Parallel kann man sich eine andere IDE ansehen (neben VS (Code)): replit.com. Vorteil: kostenfrei (zumindest in der Standardversion), erlaubt einfacheres Code-Teilen via URL (statt Screenshots, Beschreibungen, Code-Tags,...), hat Templates z.B. für C++ (verwendet CLang++ 7 i.V. mit C++ 17) , bedarf keiner Konfiguration via json

28.12.2021 - 10:27 Uhr

Für Code sollte man die Code-Tags verwenden. Damit könnte man das Zielprogramm einfacher selbst nachstellen. Und welcher C/C++ - Compiler wird verwendet ?

26.12.2021 - 09:14 Uhr

Das Grundsatzprinzip der Drei-Schichten-Architektur gilt auch mit ASP.NET Core (der längerfristige Vorteil wird klar, wenn eine Änderung oder Erweiterung der Zielsoftware nur an einer (zentralen) Stelle erfolgt) und wird vermutlich vom Framework und den Templates auch so vorgegeben. Die restlichen Dateien könnten Konfigurationsinformationen (z.B. "Glue-Code") oder andere Vorgaben enthalten: [Tutorial] Konfigurationsmodell im .NET Framework. Und für Frontendprogrammierung soll VS Code die schankere (und bessere) Option darstellen.

13.12.2021 - 07:38 Uhr

Kurzgefasst sollte man die Teile der Software, die sich selten (oder gar nicht) ändern, zusammenfügen und die sich schneller ändernden Teile auslagern (Stichworte z.B.: Modulithen, Macroservices, Microservices). Beim konkreten Projekt könnte man die 'alten' Ideen als Vorlage für ein neues Produkt verwenden (unter Benutzung einer Architektur...)

23.11.2021 - 13:49 Uhr

höchsten Umsatz

Das Maximum eines Arrays kann man Linq i.V. mit Max (<- keine Anfängervorgehensweise, der zugehörige Algorithmus soll wohl selbst implementiert werden) ermitteln: https://www.dotnetperls.com/max