Wenn du das so umgestellt hast, wie ich es vorgeschlagen habe, dann kannst du dir den Link von Th69 anschauen.
Dort wird das dann erklärt.
Hmmm, das ein Jahr auch 53 Kalenderwochen haben kann sollte eigentlich bekannt sein - unabhängig vom Programmieren - also weit entfernt von den C# Grundlagen um die es hier geht.
Und warum hast du für jede Kalenderwoche eine Spalte?
So etwas normalisiert man in der Regel.
Statt
TABLE YearData
Year INTEGER PRIMARY,
KW01 VARCHAR(30),
KW02 VARCHAR(30),
...
KW52 VARCHAR(30)
nimmt man
TABLE YearData
Year INTEGER PRIMARY,
KW INTEGER PRIMARY,
Data VARCHAR(30)
PS
Ich weiß nicht ob sie es schon wussten, aber 2020 hat z.B. 53 Kalenderwochen
@Th69
Wie willst du denn per Parameter den Spaltennamen übergeben?
Nach der Normalisierung würde das gehen (weil der gesuchte Wert in der gleichen Spalte steht)
mMn macht es durchaus Sinn auch die (InMemory-)Buffer zu begrenzen, denn ansonsten kann es passieren, dass der Speicher überläuft.
Das passiert immer dann, wenn der Buffer schneller befüllt als abgearbeitet werden kann und es eben mehr Elemente gibt als in den Speicher passen.
Die Naming-Aussage von Eric bezieht sich auf JS Math.random()
, also der Methodenname hätte anders lauten sollen.
Zum Namen der C# Random
Klasse lässt er sich gar nicht aus.
BTW. Der gute Kollege heisst Mads Torgersen 😁
Hmmm, so ein MS SQL ist ja zum Speichern von Daten wunderbar, aber wie willst du mit dem etwas darstellen?
Ist ungefähr so, als ob du fragst, wie du dir mit deinem Auto die Haare kämmen kannst
Haben sich die (TimeStamp/RowVersion) Werte zwischen Lesen und Schreiben verändert, dann gibt es die Concurrency Exception.
Der einfachste Weg aus diesem Dilemma:
Nochmal Lesen und Schreiben - und zwar so lange, bis es eben keine Concurrency Exception mehr gibt.
Normalerweise verschickt man eben aus diesen Gründen gar keine Passwörter, sondern der Kunde setzt sie auf der Seite direkt. ...
Keine Ahnung, wie Du jetzt auf Passwörter kommst - darum geht es doch hier überhaupt nicht...
Ob es daran liegt, dass er die Beiträge des TE aufmerksam gelesen hat? 🤔
Nun möchte ich diese Mail - da sie ein Login für einen neuen User enthält - auch noch verschlüsseln - nicht signieren.
[...]private void SendEmailWithNewPassword() { ... }
Man muss die Kommentare in zwei Bereiche teilen, denn diese adressieren unterschiedliche Rollen.
Die Kommentare vor der Methode/Eigenschaft (XML-Dokumentation) sind zum großen Teil für diejenigen Entwickler gedacht, die diese Klasse verwenden wollen/sollen.
Da sollte also vermerkt sein, was man von dieser Methode zu erwarten hat und was für Exceptions kommen könnten. Wer sich nicht sicher dabei ist, der schaut sich einfach mal die MSDN Dokumentation an.
Kommentare im Code sind primär für die Entwickler gedacht, die diese Methode implementieren oder überarbeiten. Hier sollte das Ziel sein, so gut wie ohne Kommentare auszukommen. Sprechende Namen (Variablen, Methode, Eigenschaften) helfen dabei ungemein.
Asynchron ist nicht Parallel.
Wenn du Wäsche in die Waschmaschine packst, dann brauchst du nicht davor zu warten, bis das Waschprogramm durch ist, denn die kann das alleine. Also asynchron.
Du kannst aber nicht in der gleichen Waschmaschine noch eine Ladung Wäsche waschen lassen. Also nicht parallel (dazu bräuchtest du mehrere Waschmaschinen).
Das was du da machst (asynchrone Aufrufe parallel ausführen) ist nicht immer zulässig.
Ist das so empfehlenswert, oder sollte ich dies anders umsetzen?
Setze es anders um => mit async/await
und einem Timer.
Also dachte ich mir, ich baue eine Methode zum stoppen, welche von dem neuen Windows Form aufgerufen wird:
...
Danach sollten dann die Werte in die DB gespeichert und der Thread neu gestartet werden.
Nö, wieso ... wenn du den Wert direkt da hast, dann trag den in das Label ein, ansonsten frag die Datenbank eben direkt danach ab (bzw. frag den Service).
Wenn du unbedingt abbrechen (pausieren) möchtest, dann ist das mit dem Timer (s.o.) wesentlich einfacher zu lösen.
Mag ja sein, dass da was im DataContext
ist, aber das wogegen du das Binding erstellt hast, greift darauf nicht zu.
Wenn, dann würde es aussehen wie
<Label Content="{Binding Path=PriceTag}" />
Was für ein Problem mit diesem Session-Objekt gelöst werden soll ist mir schleierhaft.
Eine Unterhaltung kann doch zwischen 2 (eigentlich auch 1) bis n Benutzern stattfinden. Die Unterhaltung selber ist technisch nicht anders, wenn diese zwischen 2 oder n Benutzern stattfindet.
Also, wen haben wir da im Boot?*die Unterhaltung *die Teilnehmer *die Nachrichten
Die Nachricht wird von einem Teilnehmer erstellt und an die Unterhaltung geschickt. Der Server weiß, ob der Absender Teilnehmer der Unterhaltung ist (oder eben nicht) und fügt die Nachricht der Unterhaltung hinzu (oder eben nicht).
Vom Grundprinzip her also relativ simpel ohne viel Tamtam.
@T-Virus
Es geht nicht darum ob POST richtig oder falsch ist, sondern um deine Aussage
Sollte aber dank Post mehr als schnell sein.
Da kannst du auch schreiben:
Ich muss in einer Stunde mit einem Auto in Köln sein.
Meins ist schwarz, das wird wohl schnell genug sein.
um eine ähliche Aussagekraft zu haben
Wie gesagt, ich würde bei so einem Datensammler, das Entgegennehmen und Eintragen in die Datenbank mit einer Queue entzerren.
Dann solltest du aber darauf achten, was du wirklich testen möchtest.
Wenn deine Test-WebAPI die Daten annimmt, konvertiert und in die Datenbank einträgt, dann misst du nicht nur die Übertragung.
Wenn es auf den Durchsatz ankommt, dann kann die WebAPI die Daten auch entgegennehmen und in eine Queue eintragen (MSMQ, RabbitMQ, etc.). Von dort aus können dann n Systeme diese Daten verarbeiten.
Dann zeig doch mal die Definition von Globals
. Ist das keine Klasse?
Das ist die globale Klasse, die gemeint ist.
Visual Studio 2017 => v15.x
Visual Studio 2015 => v14.x
Von welchem Visual Studio Versionen sprichst du jetzt, wenn du VS17 / VS15 schreibst?
Ich vermute mal VS17 => VS2017 und VS15 => VS2015, denn die Version 17 gibt es wohl noch nicht (und wenn, dann als ganz frühe alpha)
Ich würde jetzt mal sagen, das Problem hat gar nichts mit REST & Co. zu tun.
Die Parameter müssen für die Signierung kodiert werden, was AmzLibrary.GetParametersAsString
auch macht.
Der RestClient kodiert diese Parameter für den Request allerdings auch und genau da würde ich sagen liegt das Problem. Ein Leerzeichen kann als +
oder als %20
kodiert werden. Der Sinn ist der gleiche. Für die Signierung ist das aber eben nicht das Gleiche.
Wenn zwei sich unterhalten, dann könnte man das auch schon als Gruppe ansehen.
Will damit sagen, man kann die Verwaltung (Gruppen-Chat oder Zweier-Chat) komplett gleich halten und benötigt keine Fallunterscheidung.
Nach jedem Refresh - egal ob gefiltert oder nicht - kann an dem Index n ein völlig anderer Datensatz liegen als vor dem Refresh.
Da ist es sinnvoller über eine ID den Index in der aktuellen Liste zu suchen und darauf zu positionieren.
Hmmm,
vor dem Schreiben kommt das Lesen (von Dokumentationen oder hier im Forum die Antworten). Dieses Lesen sollte vollständig und mit der nötigen Ruhe erfolgen, sonst wird das nichts mit dem Programmieren.
Ich will damit sagen, dass deine Frage
Wie kann ich eine Referenz halten?
schon beantwortet wurde.
Gibt es die Möglichkeit ... Fragen können zu 99,99% immer mit Ja, gibt es! beantwortet werden und diese Frage zählt dazu.
Wenn du konkreter fragst, dann kann man auch konkreter antworten 😉
Wie gut kennst du dich denn mit der Bild-Such-Theorie (abseits der Programmierung) aus?
Um mit der Programmierung zu starten, such dir ein Thema aus, wo du dich schon sehr gut auskennst. Dafür schreibe dann ein Programm.
Es ist wesentlich einfacher mit nur einer Unbekannten (Programmierung in ...) zu arbeiten. Das ist schon komplex genug.
Obwohl die Lösung doch naheliegend ist:
Kriegt die Grafikkarte es nicht mehr gebacken, dann hilf ihr mit dem Backofen auf die Sprünge.
😁
Und wenn ich sowas umsetzen müsste, dann würde es für mich nur Produkte geben.
Dazu noch Templates für neue Produkte (wie z.B. Auto-Template, Motorrad-Template, Kettensägen-Template ...) um nicht bei jedem bei Null anfangen zu müssen.
Du willst jetzt also ernsthaft für jedes Produkt eine eigene Klasse definieren?
Wie muss ich mir das dann in der Produktiv-Umgebung vorstellen, wenn ein neues Produkt erstellt werden soll? Soll das dann Aufgabe der Entwicklungsabteilung sein (Anwendung erweitern, Testen, Rollout)?
Selbst wenn man EF ausser acht lässt, sieht man, dass das Konzept schon im Ansatz nicht richtig sein kann.
Für eine Bildauswertung möchte ich ein Bild aus einem Browserfenster in eine pictureBox laden.
Aber du bekommst das Bild doch in deine PictureBox.
Oder ist es womöglich gar nicht das, was du wirklich willst?
Dann beschreib doch bitte, was du wirklich willst, dann ist es auch einfacher mit dem Helfen.
Wie kann ich in der Oberfläche sinnvoll falsche Benutzereingaben verhindert ohne für jedes Control von Hand Bindungen oder sonst was zu programmieren.
AFAIK gibt es da nichts (von VS out of the box)
@weismat
Grundsätzlich sollte man sich von dem Gedanken verabschieden eine Datenbank-Oberfläche zu erstellen, denn genau daher kommt die Denkweise, dass sich alles um diese Datenbank dreht.
Doch, denn was taugt eine Lösung, die nur halbgar ist?
Nehmen wir mal ASP.NET MVC als Beispiel. Da definiert man sich für jede (Eingabe-)View ein ViewModel (reines DTO) und legt über Attribute die grundlegenden Validierungen fest.
Im Controller werden dann weitere Validierungen vorgenommen, die sich nicht (oder nur umständlich) per Attribute definieren lassen.
Sind diese Validierungen alle in Ordnung, dann werden die Daten vom ViewModel an einen Service gereicht, der sich um die Persistierung kümmert (wahrscheinlich eine Datenbank).
Wie man sieht, ist das Konzept völlig losgelöst von irgendwelchen Datenbanken, DataSets, whatever, weil gar nicht sicher ist, ob man eine Datenbank hat.
Da wirst du irgendwie an EinzelnesElemente
eine Referenz zu der Basisklasse
übergeben müssen, sonst geht das nicht.
Wenn du nicht weißt in welchem Haus du wohnst, wie sollst du wissen wie es aussieht?
Ich denke hier geht es um etwas ganz anderes.
Du (@Menten) versuchst den dir bekannten Delphi-Way mit C# zu beschreiten. Kann ich insofern nachvollziehen, weil du das gewohnt bist und damit dann schneller zum Ziel kommst, welches hier sowieso nur eine begrenzte Lebensdauer hat.
Meine ehrliche Empfehlung daher: Setz es mit Delphi im Delphi-Way um.
Wenn man eine Datenbank-Oberfläche erstellen will, dann mag dieser Ansatz mit SP, View sowie alle Logik in der Datenbank richtig sein.
Ich erstelle allerdings Anwendungen wo am Anfang noch gar nicht feststeht, welche Datenbank dort zum Zuge kommt. Festgelegt wird das ziemlich zum Schluss und manchmal stellt man fest, dass keine Datenbank die richtige Lösung ist.
Databases are details to be hidden. They are not your central abstraction, nor are they the core of your application. Ever. Uncle Bob Martin
Delphi hat allerdings mit dem RAD Ansatz und den DataAware-Komponenten viele Entwickler auf das falsche Pferd gelockt und selbige es willig angenommen, weil es ja so hübsch einfach und schnell ist. 5 Klicks und die Anwendung sieht schon zu 90% fertig aus.
Hast du ein Verzeichnis C:\Users<TAB>
?
(Das <TAB>
ist ein Tabulatorzeichen)
Du zeigst gerade sehr deutlich, dass ein Austausch wegen dieser Sprachbarriere (im Moment) unmöglich ist.
Die Chance, dass ich französisch lerne, geht gegen Null. Also müsstest du besser deutsch verstehen, bevor es Sinn macht, dass ich dir etwas erkläre.
Mit Xamarin.Forms geht aktuell nur iOS, Android oder UWP.
Es gibt ein Preview für Xamarin.Forms auf macOS - ist also in Arbeit.
Ich kann mich ja irren, aber für einen Automatismus out-of-the-box sehe ich hier eher schwarz.
Gib doch mal als Beispiel zwei (oder drei) Eingangsdateien und die erwartete Ausgangsdatei, dann kann man da etwas zu sagen.
Ist die Reihenfolge der Datensätze fest vorgegeben?
Kommen von jedem Datenlieferanten immer alle Datensätze oder kann es vorkommen, dass A 10 Datensätze liefert, B 8 und C 9?
Wenn es da solche (oder andere) Besonderheiten gibt, dann bitte auch in den Beispieldaten berücksichtigen.
Die View bekommt die Daten vom ViewModel und die Information ob etwas valide ist ist ja auch nur Information (also Daten) und diese bekommt die View eben auch vom ViewModel.
Wie das ViewModel die Validierung umsetzt (und ob überhaupt) ist der View herzlich egal. Das ergibt sich dann aus dem Kontext. Wenn es einfacher ist die Validierung über das Model umzusetzen, dann machen und das ViewModel reicht die Information einfach nur weiter.
Für die Planung der Backup-Strategie muss man sich überlegen, gegen was man sich denn schützen will.
Hardware-Ausfall (Festplatten, Controller, Mainboard, Netzteil, Stromversorgung)?
Diebstahl der Hardware (komplett oder teilweise)
Was ist dabei kritisch? (Downtime, Daten)
usw. usw.
Wenn man all diese Informationen zusammen hat, dann kann man auch ganz leicht das zur Verfügung stehende Budget errechnen und daraus eine passende Strategie entwickeln, die alle erforderlichen Punkte hinreichend abdeckt.
In der Automobil-Industrie kann ein Ausfall pro Stunde im mittleren sechsstelligen Bereich liegen (Produktionsstillstand). Es gibt andere Branchen, wo ein Ausfall so gut wie gar nicht interessiert und selbst der Verlust von 14-Tagen Datensicherung mit geringem Aufwand wiederhergestellt werden kann.
PS
Für mich ist es immer sehr wichtig, dass der Kunde weiß und versteht gegen welche Unwägbarkeiten er in welchem Umfang wie geschützt ist und wie hoch die maximal zu erwartende Ausfallzeit nach einem Totalausfall sein wird.
... was ist so schwer an dem zu verstehen was ich geschrieben habe?
Die Sprache (Deutsch).
Der TE kommt laut Profil aus Frankreich und wurde jetzt schon vier mal darauf hingewiesen keine Fullquotes zu verwenden.
Die Hinweise auf externe Bildhoster werden ebenso ignoriert (nicht verstanden).
Ohne eine Sprache die von beiden Beteiligten verstanden wird ist ein Austausch schwierig bis unmöglich.
In einem ViewModel befinden sich alle Daten, die die View anzeigen soll.
Du hast eine ComboBox? Dann sind alle Items der ComboBox im ViewModel zu finden sowie auch das ausgewählte Item (oder der Index, oder ... Hauptsache die Information ist im ViewModel).
Die Logik für die Validierung liegt auch im ViewModel.
Kurzum, die View ist nur noch für die Darstellung zuständig. Alles andere bezieht die View aus dem ViewModel.
Indem du exakt das gleiche machst, was in dem Python Programm abläuft.
Sende zwei Bytefolgen und nicht nur eine.
Woher weißt du das die Verbindung nicht funktioniert?
Nur weil sich der Roboter nicht bewegt, heißt das nicht zwangsläufig, dass die Verbindung nicht funktioniert.
Es kann auch bedeuten, dass der nicht weiß, was du von ihm willst.
Bei einem Auto muss man auch erst den Motor starten bevor der Tritt auf das Gaspedal eine nennenswerte Reaktion hervorruft.
Nun ja, so richtig umgeschrieben hast du es nicht - eher so frei interpretiert.
Frei von jeglichem Wissen über Python oder diesen Roboter sehe ich aber, dass in dem Python Programm pro Geste jeweils zwei Bytefolgen gesendet werden.
Du sendest nur eine Bytefolge.
Schreibe das doch in C# exakt so, wie das in Python umgesetzt wurde, also eine Methode Schreiben
definieren und auch die Variablen so deklarieren.
Das Verhalten kann ich hier auch nachvollziehen.
Als Lösung kann man der TextBox nach dem Setzen der Selection den Focus geben.
Dazu sollte das Such-Fenster allerdings nicht als Dialog ausgeführt werden, aber das versteht sich ja von selber.
Wie man an meinem ScreenShot sehen kann ist es durchaus möglich die Selektion anzeigen zu lassen auch wenn die TextBox den Fokus aus welchen Gründen auch immer nicht mehr hat.
Um das zu erreichen habe ich lediglich die Eigenschaft TextBoxBase.IsInactiveSelectionHighlightEnabled
der TextBox
auf true
gesetzt.
Ja wenn es da einen Schalter gibt, dann muss das ja total sicher sein.
Das ist bestimmt so ein Hochsicherheits-Injection-Zauber-Schalter der alles absichern kann was damit geschaltet wird. Wahrscheinlich aus Feenstaub im Zauberwald von den sieben Zwergen höchstpersönlich zusammengeklöppelt.
Es ist eben wie ungeschützter GV mit vielen Partnern. Es muss nichts passieren, aber das Risiko steigt rapide an. Vernünftige Menschen schützen sich, die anderen sehen Darwin eben früher als die anderen.
PS: Bei den Datenbanken geht es primär um Datendiebstahl und nicht um irgendwelche Einfallstore wo die Daten/WebSite oder sonstiges zerstört/verwüstet wird. Denn das ist dann wirklich das kleinste Problem und mit der Datensicherung (erfolgt meistens durch den Provider automatisch) mit ein paar Klicks wieder behoben.
Unter der Maus hat der IMHO auch nichts zu suchen.
Ich denke da eher an so etwas, was macOS einblendet, wenn man die Lautstärke anpasst oder die Auswurftaste für die CD/DVD betätigt. Angezeigt wird das im unteren Drittel horizontal zentriert.
Wenn ich es mir recht überlege würde ich dieses immer für mindestens für die Zeitdauer x anzeigen, damit auch keiner überrascht wird, warum auf einmal jemand am Telefon ist.