Windows 10 mit alter Fotoanzeige nutzen

Einfach folgenden Registry Eintrag ausführen und man kann ein Bild mit rechter Maustaste und Öffnen mit wieder mit der gewohnten Fotogallerie nutzen.

fotogalerie

— Download Fotogallerie Registry —
[crayon-664a264889208404656233/]
 




Windows, mit Microsoft Konto automatisch anmelden

Ich habe ja kein Problem auch meinen Microsoft Account dazu zu nutzen um mich an meinen lokalen Rechner anzumelden.

Allerdings nervt mich, dass ich nach jedem neustart das Passwort des Microsoft Accounts eingeben muss.

Dies geht auch einfacher:

1. Das lokale Konto evtl. unter Kontoeinstellungen (Systemsteurung) in Microsoft-Konto wechseln und dann

In die Suche oder unter Ausführen  netplwiz eingeben und den Haken bei “Benutzer müssen Benutzernamen und Kennwort eingeben” wegnehmen.

dann das letzte Mal das Passwort eingeben und Fertig

netplwiz




SQL Server Querys

Duplicate löschen, welche sich aus col1 und col2 zusammen setzen. Alternativ kann man natürlich auch nur mit col1 arbeiten
[crayon-664a2648897c2432712728/]
 

Update Spalte, wenn Datum  Heute > dann 1 sonst 0:
[crayon-664a2648897c8009938589/]
Zeilennummerierung erzeugen:
[crayon-664a2648897c9737256622/]
 




LINQ Querys

SQL:

IF EXISTS (SELECT 1 FROM tblUsers WHERE Username = “whatever”) // Return 1, wenn Username vorhanen ist, 0, wenn eben nicht

LINQ:
[crayon-664a2648899cb354581583/]
 




My SQL Querys

eine Sammlung netter Querys für MySQL:

ifnull(expression,”) – Wenn expression NULL ist, dann zählt der rechte Wert.

Concat(‘a’,123,(SELECT col from tab WHERE a = b)) – erstellt einen zusammengesetzten String aus allen teilen der Funktion




Eigenen Event erstellen

Ein Event oder deutsch Ereignis ist immer an einen Delegatentypen gebunden, welcher wiederum eine bestimmte Signatur von (Rückgabewert + Parameter).

Ungefähr, stellt es dieses Muster da:

Zuerst brauchen wir einen delegaten. Jetzt stellt sich die Frage, die Methoden, auf die der Delegat später verweist, wie soll die aussehen? soll sie einen Rückgabewert haben? Soll irgend ein Wert an die Methode übergeben werden? Ja? Dann brauchen wir Parameter. Um das noch ein wenig verständlicher zu machen, wenn wir eine for-Schleife haben und wollen, dass das Event nach jedem Schleifendurchgang immer abgefeuert wird, und uns den Wert liefert. Dann würden wir einen Delegaten mit einem Parameter vom Typ int z.B. machen.
[crayon-664a264889b9a532913064/]
 

Dann braucht man das Event an sich. Dieser muss vom Typ des Delegaten sein.
[crayon-664a264889b9e465357472/]
 

Jetzt muss gesagt werden, wann das Event abgefeuert werden muss. Und, wichtig, wir haben dem Delegaten einen Parameter (int a) angegeben. Dieser Parameter muss nun durch das Event gefüllt werden. Das machen wir, indem wir
[crayon-664a264889b9f640043118/]
Jetzt wird bei jedem Schleifendurchgang das Event abgefeuert.

 

Ok, das war unsere Quell klasse.

Jetzt erstellen wir ein Objekt dieser Klasse und weisen dem Event eine Methode zu, die ausgeführt werden soll, sobald das Event abgefeuert wird. Die Methode muss die selbe Signatur haben wie unser Delegat. Zum Schluss müssen wir die Methode in der Quell klasse ausführen und das Event wird abgefeuert und führt ebenso die Methode mit dem Parameter aus, die wir in der Ziel Methode eingegeben haben.
[crayon-664a264889ba0663429570/]
[crayon-664a264889ba2918199204/]
 

Download Beispielprojekt Eigener Event




TSQL Mod – Eine DLL für schnelle SQL Server arbeiten

TSQLmod Download

Klasse db (Connection String)

benötigt in erster Linie die SQL Instanz. Nachdem das Objekt erfolgreich initialisiert wurde, wird auch gleichzeitig die Verbindung aufgemacht und die folgenden Methoden können genutzt werden.

LookUP(…)

gibt aus einem SQL Query den ersten Treffer der angegebenen Spalte als String wieder. Ideal um einen Wert aus der Datenbank auszulesen. Möglich ist es entweder die Spaltennummer oder den Spaltennamen anzugeben.

getRowList(…)

gibt eine List<string> oder generische List<T> von der angegebenen Spalte zurück. Man erhält quasi aus dem Select eine gewünschte Spalte

getRowStringBuilder(…)

ähnlich wie die getRowList(…) ist der Rückgabewert aber ein Stringbuilder, in welchen alle Zeilen einer selektierten Spalte enthalten sind.

getDynamicList(…)

erfordert eine Klasse welche dieselben Datentypen und Bezeichnung hat wie das SQL Select. Als Rückgabe erhält man man eine List<meineKlasse>, welche 1:1 so viele Elemente und Spalten hat wie das Sql Query. Das ganze arbeitet nicht mit Reflektionen, sondern nach dem Prinzip von diesem genialen Autor: KLICK

Dazu jeweils ein Beispiel. Ausgehend vom folgenden Select:

sqlManager

 

einem erstellten Objekt der Klasse db:
[crayon-664a264889e64230300663/]
und ein string mit folgendem select:
[crayon-664a264889e69030507203/]

LookUp(…)

[crayon-664a264889e6b149578564/]
 

 

Antwort: lookUp

 

getRowList(…)

[crayon-664a264889e6c060644805/]

Antwort: getRowList
getRowStringBuilder(…)

[crayon-664a264889e6e293429577/]
Antwort: getRowStringBuilder

 

getDynamicList(…)

Wie oben bereits erwähnt, ist hierfür eine Klasse mit Propertys notwendig. Diese kann man ganz einfach auch mit den Methoden aus  CreateClass – Klasse erstellen. Dazu weiter unten.
[crayon-664a264889e6f415741920/]
dann kann man so eine dynamische Liste ganz einfach erstellen:
[crayon-664a264889e71607812855/]
 

diese Liste kann man nun z.B. einem Datagrid aus WPF zuordnen:
[crayon-664a264889e72986203857/]
[crayon-664a264889e73499301199/]
Das ganze sieht dann so aus:

dynList_01

wem das Datumsformat stört, der kann dem Ereignis AutogeneratingColumn aus dem Datagrid eine Änderung des Datumsformates durchführen:

dynList_Property

 

folgendes soll nun passieren, wenn das Ereignis eintrifft:
[crayon-664a264889e74483214277/]
Nun sieht das ganze so aus:

dynList_02




Lambda Ausdrücke oder anonyme Methoden

Lambda Ausdrücke werden in Kombination mit Delegaten dazu verwendet um schnelle Anweisungen auszuführen und sich dabei jede Menge Code zu ersparen.

Ohne Lambda und anonymer Methode für ein Delegatenaufruf in etwa so aussehen:

Lambdaausdruck

Neue Eigenschaft vom Typ delegate erstellen. (Rückgabewert ist ein int, mit 2 in Parameter a und b)
[crayon-664a26488a138846983701/]
Dann müssen wir eine Methode haben, die ebenfalls denselben Rückgabewert und Parameter besitzt (Anzahl und Typ sind entscheidend)
[crayon-664a26488a13d268197087/]
Nun könnte man ein Objekt vom den oben erstellten MyDelegate erstellen und dem die Methode addiere zuweisen:
[crayon-664a26488a13e082617719/]
Durch den Aufruf des Objektes dlg zeigt der Delegat auf die Methode addiere, führt diese aus und gibt den Rückgabewert zurück:
[crayon-664a26488a13f654690182/]
________________

Dies ist in der Tat etwas umständlich. Vor allem benötigt man immer ein Methode, die man dem Delegaten immer zuweisen muss.

schneller geht es mit den Lambda Ausdrücken.:
[crayon-664a26488a141524175212/]
Die delegaten delegat1 bis delegat 5 tun immer dasselbe, nur wird der Code dadurch sehr kompakter und wenn man delegaten erstmal verstanden hat, wird es auch übersichtlicher.

Hat man einen Delegaten ohne Rückgabewert, würde der Lambdaausdruck mit Klammer auf- Klammer zu sein:
[crayon-664a26488a142389419755/]
 

Wegen den => Operator werden die Lampdaausdrücke oft mit Linq verwechselt. Das eine hat mit dem anderen aber nichts zu tun 🙂

 

 




Vom Projekt bis Fertigstellung – Teil 1: Projektbeginn, Programmablaufplan (PAP)

Neben der eigentlichen Arbeit eines Entwicklers am Programmcode, sind vor allem für größere Projekte Diagramme, Notizen, und Pläne von sehr hoher Bedeutung und werden nur zu gerne unterschätzt. Vernachlässigt man dieses, verliert den Durchblick und am Ende die Motivation überhaupt weiter zu machen. Was ist also wichtig, wenn man ein Projekt plant?

1. Ziele setzen

Wichtig ist, dass man zunächst nicht alle gewünschten Features auf einmal versucht einzubauen, sondern  dies bewusst trennt. Auf der einen Seite habe ich die Grundfunktionen bzw. das eigentliche Programm und auf der anderen Seite der Wichtigkeit nach sortierte Features, die ich danach implementieren werde. Beides schreibt man am besten auf ein Blatt Papier, trennt sie und legt sich den Basisfunktionszettel gut Sichtbar auf dem Schreibtisch.

2. Welche Technologien? Welche Themen?

Welche Programmiersprache und Datenbank zum Einsatz kommt ist eher die leichtere Frage, die geklärt werden muss. Wichtiger ist, dass man sich dann aber mit den Themen, die auf einen zukommen genau informiert. Möchte man einen Server programmieren, so schaut man sich die Protokolle genau an und lernt erstmal den theoretischen Teil.

3. Programmablaufplan (PAP)

Wieder mit Zettel und Stift bewaffnet kann man nun einen ungefähren Ablauf des Programms erstellen. Wichtig ist, dass man sich hier eben nur auf die Basisfunktionen beschränkt. Der Rest kommt, wenn alles fertig ist. Hier gibt es einen einfachen Einstieg in PAP -> http://www.mrknowing.com/2014/03/13/wie-erstelle-ich-ein-pap-programmablaufplan/. Vielleicht ist es nicht wichtig die einzelnen Formen genau zu kennen, doch ist es sehr Hilfreich, sich im groben aufzuschreiben, was genau passieren soll, wenn man dies oder jenes drückt / einstellt. Eben die if / else Verzweigungen sollten gründlich überdacht werden.

 




HttpListenerContext decode/encode Umlaute

Liest man die Url aus dem HttpListenerContext, die Umlaute wie äöü enthält, so sieht das ungefähr so aus:

aus süß wird s%FC%df.

Abhilfe schaft da die Klasse HttpUtility:
[crayon-664a26488a3ba388210982/]
möchte man zurück encodieren macht man einfach :
[crayon-664a26488a3be426316082/]