Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von m0rius
Thema: The Clean Coder: A Code of Conduct for Professional Programmers
Am im Forum: Buchempfehlungen

Hallo zusammen,

am 16. Mai erscheint The Clean Coder: A Code of Conduct for Professional Programmers von Robert C. Martin ("Uncle Bob"), dem Autor von Clean Code: A Handbook of Agile Software Craftsmanship:

Zitat von Amazon-Kurzbeschreibung
The Much-Anticipated Follow-Up to "Uncle Bob's" Highly Praised Clean Code Programmers who endure and succeed amidst swirling uncertainty and nonstop pressure share a common attribute: They care deeply about the practice of creating software. They treat it as a craft. They are professionals. In The Clean Coder: A Code of Conduct for Professional Programmers, legendary software expert Robert C. Martin introduces the disciplines, techniques, tools, and practices of true software craftsmanship.

This book is packed with practical advice — about everything from estimating and coding to refactoring and testing. It covers much more than technique: It is about attitude. Martin shows how to approach software development with honor, self-respect, and pride; work well and work clean; communicate and estimate faithfully; face difficult decisions with clarity and honesty; and understand that deep knowledge comes with a responsibility to act. Readers will learn ...
  • What it means to behave as a true software craftsman
  • How to deal with conflict, tight schedules, and unreasonable managers
  • How to get into the flow of coding, and get past writer's block
  • How to handle unrelenting pressure and avoid burnout
  • How to combine enduring attitudes with new development paradigms
  • How to manage your time, and avoid blind alleys, marshes, bogs, and swamps
  • How to foster environments where programmers and teams can thrive
  • When to say "No" — and how to say it
  • When to say "Yes" — and what yes really means
Great software is something to marvel at: powerful, elegant, functional, a pleasure to work with as both a developer and as a user. Great software isn't written by machines. It is written by professionals with an unshakable commitment to craftsmanship. The Clean Coder will help you become one of them--and earn the pride and fulfillment that they alone possess.

m0rius

Thema: Wie kann man sich selbst zum Programmieren motivieren?
Am im Forum: Smalltalk

Hallo Jack_AI,

ich handhabe das genau wie Coder007 und mache mir kleinschrittige (!) ToDo-Listen. Es ist einfach ein klasse Gefühl, wenn man sich mal 1,5 Stunden hinsetzt und 5 Punkte abhaken kann! Auf diese Weise hat man sogar einen Nachweis, dass es vorangeht — ziemlich motivierend, wie ich finde.

Ralf Westphal spricht in vielen seiner Blogposts von senkrechten Durchstichen an Funktionalität, die jede Entwicklungs-Iteration erreichen sollte. Es soll also nicht wochenlang lediglich an der Infrastruktur einer Anwendung gearbeitet werden, sondern kleine, vorzeigbare Funktionseinheiten hinzugefügt werden. Bemerke ich über einen längeren Entwicklungszeitraum auf Dauer keinen sichtbaren Funktionszuwachs oder eine Produktivitätssteigerung, ist das für mich der Motivationskiller #1!

m0rius

Thema: [gelöst] MVC3: Fragen zur Nutzung mit Entity Framework4
Am im Forum: Web-Technologien

Hallo Stipo,

hier der Ansatz, den ich mit meinen Repositories verfolgt habe. Er ist nicht zu 100% generisch, d.h. im jeweiligen Repository muss die Schnittstelle des Interfaces implementiert und dabei die entsprechende Entity Collection verwendet werden.

Ansonsten hilft dir vielleicht Advantage of creating a generic repository vs. specific repository for each object? weiter.

m0rius

Thema: Decompiler schreiben
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo CyberBoy,

herzlich Willkommen auf myCSharp.de!

Zitat von CyberBoy
Meine Frage: Kann man so etwas auch selber implementieren?
Klar kann man das — irgendwie ist der Reflector ja schließlich auch entstanden :).

m0rius

Thema: Bestimmte Elemente aus IEnumerable auswählen: Enumerable.Single/First/Where
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Tholi,

überleg mal genau, was du da gemacht hast, dann wird dir auch auffallen, warum das gar nicht funktionieren kann: Du versuchst, alle Früchte, deren "Länge" echt kleiner als 6 ist, in query abzuspeichern. Soweit okay — nur wirst du dafür Where() verwenden müssen, da es sich eben nicht um eine einzelne Frucht handelt.

Genau dafür sind Single() und SingleOrDefault() allerdings gedacht, nämlich zum Zurückgeben des einzigen Elementes einer Collection, das eine bestimmte Bedingung erfüllt (respektive null bei Verwendeung von SingleOrDefault(), wenn die Collection leer ist oder keine Elemente enthält, die die Bedingung erfüllen).

Ich verweise an dieser Stelle nochmal auf den oben genannten Blogpost von James Michael Hare!

m0rius

Thema: Bestimmte Elemente aus IEnumerable auswählen: Enumerable.Single/First/Where
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo zusammen,

der Vollständigkeit halber: James Michael Hare hat vor kurzem den Blogpost C#/.NET Little Wonders: First() and Single() - Similar Yet Different passend zum Thema verfasst. Darin werden die Unterschiede der beiden Erweiterungsmethoden sehr gut erklärt.

m0rius

Thema: Passwort sicher in EXE-Datei ablegen
Am im Forum: Rund um die Programmierung

Hallo words_sourcecode,

an dieser Stelle musst du ganz klar zwischen einer symmetrischen / asymmetrischen Verschlüsselung und einer kryptologischen Hashfunktion unterscheiden.

Verschlüsselte Klartexte, also Geheimtexte, können wieder entschlüsselt werden, um aus ihnen den Klartext – unter Kenntnis des Schlüssels – wiederherzustellen. Hashfunktionen, auf der anderen Seite, funktioneren wie ein Falltür, nämlich nur in eine Richtung. Das heißt, dass es eben nicht erstrebenswert ist, und bei einer guten Hashfunktion auch nicht "leicht" zu machen, diese wieder umkehren zu können.

Jetzt zum eigentlichen Punkt: Passwörter sollten niemals im Klartext abgelegt werden. Gespeichert werden sollte lediglich ein Hash von ihnen. Du errechnest mit der gleichen Hashfunktion den Hash des eingegebenen Passwortes und vergleichst diesen mit dem gespeicherten Hash. Stimmen die beiden Werte überein, wurde mit an Sicherheit grenzender Wahrscheinlichkeit das richtige Passwort eingegeben.

Der Vorteil dieses Verfahrens liegt darin, dass keine Rückschlüsse auf das Passwort eines Nutzers gezogen werden können, da aus einem gegebenen Hash nicht ohne riesig hohen Aufwand der Klartext wiederhergestellt werden kann. Die lange Zeit gängige Hashfunktion MD5 solltest du dabei meiden und auf kryptographisch stärkere Funktionen, wie z.B. SHA-512 aus der SHA-Reihe, ausweichen.

m0rius

Thema: Instanzvariable einer Klasse bei jeder Änderung überprüfen?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Lotus,

du kannst die Überprüfung bzw. die auszuführende Aktion in den set-Accessor stecken, wenn du statt eines Feldes eine Eigenschaft verwendest. So ist sichergestellt, dass die entsprechende Methode bei jeder Änderung – evtl. auch nur unter einer bestimmten Bedingung – aufgerufen wird.

m0rius

Thema: Über Referenz der Oberklasse auf Property einer beliebigen Unterklasse zugreifen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo OldSchoolGuy,

Zitat von OldSchoolGuy
Alle diese erbenden Klassen enthalten dieselbe Eigenschaft, der ich einen Wert zuweisen möchte:
in diesem Fall gehört die Eigenschaft in die Basisklasse, von der alle Klassen erben — dies ist schließlich deren gemeinsame Schnittstelle.

m0rius

Thema: Elegante Lösung für If Abfrage einer Variable auf mehrere zulässige Werte
Am im Forum: Rund um die Programmierung

Hallo MarsStein,

ganz so einfach ist es nicht — so lässt sich zum Beispiel dN!3Ls zweite Erweiterungsmethode, die params nutzt, nicht ganz trivial umdrehen, sodass Contains() verwendet werden kann:

if (i.IsIn(1, 2, 4000, 1337, 100))
{ 
    /* ... */
}
Das händische Äquivalent wäre

if (new int[] { 1, 2, 4000, 1337, 100 }.Contains(i))
{ 
    /* ... */
}
Ich halte dN!3Ls Variante auch für deutlich lesbarer! Gerade den Aspekt Lesbarkeit kommt häufig zu kurz und sollte meiner Meinung nach nicht unterschätzt werden.

m0rius

Thema: EmptyResult und FireFox
Am im Forum: Web-Technologien

Hallo Abt,

das gleiche wollte ich eben auch schreiben, bis ich auf den Blogpost Unobtrusive Ajax in ASP.NET MVC 3 von Brad Wilson gestoßen bin:

Zitat von Brad Wilson
In ASP.NET MVC 1.0, we shipped Ajax helpers implemented as extension methods on the AjaxHelper class (and available via the Ajax property of your views). In the box, we shipped two category of Ajax helpers: Ajax links and Ajax forms. Both fundamentally did the same thing: make an asynchronous request, and do something with the result when you’re finished (including knowing whether you got back a success or failure response from the server).

In ASP.NET MVC 3 Beta, we've updated the runtime to enable a feature we're calling "Unobtrusive Ajax". We have also created a consumer for these unobtrusive Ajax attributes that uses jQuery to perform the Ajax requests on our behalf.

m0rius

Thema: EmptyResult und FireFox
Am im Forum: Web-Technologien

Hallo Noodles,

auch ich würde es mit reinem jQuery versuchen, zumal das Microsoft AJAX Toolkit abtritt und, auch offiziell, jQuery Platz macht.
zurückgenommen, siehe meinen Post weiter unten. Ich war der Meinung, die Verwendung von Ajax.BeginForm() würde das Verwenden von MicrosoftAjax.js implizieren, was der unten genannte Blogpost von Brad Wilson allerdings wiederlegt.

m0rius

Thema: Variablen in if deklarieren
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo olik,

du musst die Variable endpunkte außerhalb des if-Blocks deklarieren.

m0rius

Thema: Euer Desktop...
Am im Forum: Smalltalk

Hallo,

dann will ich mich auch nochmal beteiligen. Geöffnet sind die Anwendungen, die bei mir praktisch durchgängig laufen.

m0rius

Thema: Benutzereingabe in WindowsService abfragen
Am im Forum: Rund um die Programmierung

Hallo Paschulke,

verwende Global Hooks, um systemweite Benutzereingaben abzufangen.

m0rius

Thema: Firefox 4 final veröffentlicht
Am im Forum: Szenenews

Hallo dN!3L,

eben :). Hopsen tut er bei mir allerdings nicht.

m0rius

Thema: Firefox 4 final veröffentlicht
Am im Forum: Szenenews

Hallo dN!3L,

ja, ich habe diesen Übergang auch — in allen Fenstern! Allerdings stört er mich nicht, da ich Firefox prinzipiell maximiert geöffnet habe.

m0rius

Thema: Firefox 4 final veröffentlicht
Am im Forum: Szenenews

Hallo zusammen,

lange hat's gedauert — jetzt ist Firefox 4 veröffentlicht.


m0rius

Thema: Gibt es fertige Validierungskomponenten/Extensions?
Am im Forum: Rund um die Programmierung

Hallo #coder#,

sieh dir mal die Data Annotations Extensions von Scott Kirkland an.

m0rius

Thema: .NET Reflector ab Version 7 (März 2011) keine Freeware mehr [außerdem: mögliche Alternativen]
Am im Forum: Szenenews

Hallo David W,

Zitat von David W
Was ist R#?
R# steht für den ReSharper.

m0rius

Thema: Schriftprolem bei allen Textelementen
Am im Forum: GUI: WPF und XAML

Hallo zusammen,

stimmt, die Segoe UI wird erst ab Vista mitgeliefert, genau wie Calibri. Ich würde testweise Arial oder Verdana verwenden.

m0rius

Thema: Einige Toolboxelemente wie PrintDialog sind unsichtbar, wenn man sie auf das Form zieht. Was tun?
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo escsharp,

herzlich willkommen bei myCSharp!

Zitat von escsharp
Jetzt frage ich mich
Bzw. uns? Es gibt nämlich kein einziges Fragezeichen in deinem Post.
Der PrintDialog ist ein Dialog, den du anzeigen lassen kannst — dieser wird nicht direkt auf dem Fenster dargestellt.

m0rius

Thema: macht ein gästebuch für eine tanzschule noch sinn?
Am im Forum: Smalltalk

Hallo multitrust,

ich bin völlig gegen ein Gästebuch — ich rolle schon immer mit den Augen, wenn ich den Link dazu sehe. Dazu kommt, dass sich die Einträge in den Gästebüchern, die ich bisher gesehen habe, größtenteils an der Grenze zur Lesbarkeit bewegt haben.

m0rius

Thema: Standard-Keys in Form abfangen? Return, Tab etc.
Am im Forum: GUI: Windows-Forms

Hallo Samy1981,

siehe Th69s Antwort in KeyPress Event bekommen, egal welches Control den Focus hat:

Zitat von Th69
Nur bei System-Tasten (z.B. Tab, Alt etc.) muß man tiefer in die Trickkiste greifen, z.B. Form.ProcessCmdKey().

m0rius

Thema: myCSharp.de Mobil BETA
Am im Forum: Ankündigungen

Hallo winSharp93,

sehr, sehr chic, was man bisher so sehen kann — Kompliment!

m0rius

Thema: Was genau gehört in einen Unit test.
Am im Forum: Rund um die Programmierung

Hallo Zottell,

ich schreibe die Test so, wie ich sie oben beschrieben habe. Ein Test pro Controller, der gleichzeitig das Model mittestet, ist demnach großer Blödsinn.

m0rius

Thema: Was genau gehört in einen Unit test.
Am im Forum: Rund um die Programmierung

Hallo Zottell,

mit einem Unit Test wird eine (!) Unit getestet, s. Single Responsibility Principle. Du sollst also nicht einen 500-zeiligen Unit Test schreiben, der eine gesamte Assembly testet. Stattdessen sollst du einzelne Unit Tests schreiben, die eine jeweils spezifische Funktionalität testen.

Wenn man testgetrieben entwickelt, hat jede öffentliche Methode einen oder mehrere zugehörige Tests. Auch dann, wenn man nicht TDD praktiziert, ist eine möglichst hohe Testabdeckung anzustreben.

Die Frage, ob private Methoden direkt getestet werden sollten, beantwortet herbivore sehr gut in Tatsächlicher Nutzen von Unit-Tests [und TDD]:

Zitat von herbivore
gerade mit Blick auf den Nutzen von Unit-Tests beim Refactoring ist es kontraproduktiv, private Methoden direkt zu testen, statt nur indirekt über öffentliche Methoden, weil du dann nach einer Änderung der Implementierung die Tests nicht einfach unverändert laufen lassen kannst, um eine verlässliche Aussage über die Korrektheit der Änderungen zu bekommen, sondern die Tests erst anpassen musst.

m0rius

Thema: EF4: Update von POCO Entity
Am im Forum: Web-Technologien

Hallo Abt,

hier nochmal der feine Unterschied aus Controller.TryUpdateModel-Methode:

Zitat von msdn
Die [TryUpdateModel]-Methode entspricht der [UpdateModel]-Methode, mit dem Unterschied, dass die [TryUpdateModel]-Methode keine InvalidOperationException-Ausnahme auslöst, wenn der aktualisierte Modellzustand nicht gültig ist.

m0rius

Thema: EF4: Update von POCO Entity
Am im Forum: Web-Technologien

Hallo Abt,

meines Wissen nach ändert UpdateModel das Model — TryUpdateModel hingegen gibt nur einen boolschen Wert zurück, der angibt, ob das Model entsprechend aktualisiert werden kann, ohne es abzuändern.

m0rius

Thema: Thema für 5 minütige Presentation mit nur 3 PPT Folien über einen Aspekt von C# gesucht
Am im Forum: Smalltalk

Hallo Jelly,

Zitat von Jelly
Wie wäre es mit der ganzen Binding Sache unter .NET.
in 5 Minuten? Da wäre ich skeptisch, ob die Zeit reicht bzw. bin mir ziemlich sicher, dass sie es nicht tut ...

m0rius