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 Spontifixus
Thema: FireDolphin - Die zentrale Datenquelle im Internet [und Alternativen]
Am im Forum: Projekte

@herbivore: Die Idee ist gut - und bereits altbewährt: Google macht genau das im großen Stil mit recaptcha...

Thema: Coding Styles Horror
Am im Forum: Smalltalk

Eben in einem Unit-Test entdeckt (der ansonsten durchaus brauchbare Sachen testet):


[TestMethod]
public void SomeTestMethod(){

    var some = TestCode();

    // TODO:
    // Verify other interesting stuff...

}

Thema: NetOffice - Ein versionsunabhängiger Wrapper für MS-Office
Am im Forum: .NET-Komponenten und C#-Snippets

Hallo Sebastian,

danke für den Hinweis, ich hab das wie von dir vorgeschlagen über Copy'n'Paste (CSV-Daten in die Zwischenablage kopieren und dann in den entsprechenden Bereich kopieren) gelöst. Das funktioniert extrem schnell.

Viele Grüße,
Markus :)

Thema: Problem mit Farbänderung in Excel: COMException
Am im Forum: Office-Technologien

Du solltest die Farbe in einen double-Wert umwandeln (siehe Beitrag von Sebastian weiter oben) bevor du sie zuweist...

Gruß,
Markus

Thema: Humor: Java Programmierer ... und andere lustige Sachen
Am im Forum: Smalltalk

Whoop-Dee-Do!

(via allthingsd.com)

Thema: Was habt ihr bisher so programmiert ?
Am im Forum: Smalltalk

Moin moin,

Privat:

  • Eine Bibliotheksverwaltung für die Schulbücherei (das war vor etwa 12 Jahren mit VB 4... ;) )
  • Jede Menge kleine Programme - manche mehr, die meisten weniger nützlich
  • Aktuell bastle ich wenn ich Lust und Zeit hab an einem Stellwerk für meine Modellbahn. An diesem Scenario probiere ich eine Menge aus - und fange auch des öfteren mal ganz von vorne an. Unten ein Screenshot aus einer der Applikationen.


Beruflich:
  • Leitstandsapplikationen für den ÖPNV (Kameraüberwachung, Notrufabfrage, Passenger-Information)
  • Home Automation
  • Mobile Anwendungen für Logistikdienstleister

Viele Grüße,
Markus :)

Thema: NetOffice - Ein versionsunabhängiger Wrapper für MS-Office
Am im Forum: .NET-Komponenten und C#-Snippets

Hallo Sebastian,

coole API - ich brauche sie gerade wieder für ein kleines Projekt. Vielen Dank dafür!

Und (wie könnte es anders sein) dazu gleich eine Frage. Ich muss mit meinem Programm große Datenmengen (>50.000 Zeilen, 6 Spalten) in Excel importieren. Wenn ich die händisch (Zelle für Zelle) hinzufüge dauert das ewig.
Gibt es eine Möglichkeit das zu beschleunigen, beispielsweise über einen CSV-Import?

EDIT: Da habe ich wohl nicht klar genug formuliert. Die Frage bezieht sich ganz konkret auf die netoffice-API: Ist ein CSV-Import mit dieser API möglich? Und wenn ja, wie?

Viele Grüße,
Markus :)

Thema: MS Zertifizierungen: 70-511 Prüfung: Wie vorbereiten?
Am im Forum: Smalltalk

Ich kann aus eigener Erfahrung sagen, dass die PrepKits von uCertify (kostenpflichtig) recht gut auf die Prüfung vorbereiten.
Es gibt noch eine schweizer Seite (testmaster.ch) bei der man kostenlos soviele Tests (unter anderem für die 70-511) machen kann wie man möchte. Dort kostet jeder absolvierte Test 2 sog. Testpunkte. Man startet mit 10 Punkten und kann sein Konto durch das bewerten von Fragen nach dem Test wieder auffüllen. Diese Seite ist ganz nützlich, aber die Fragen liegen vom Niveau her oft deutlich unter dem tatsächlichen Prüfungsniveau.

Viele Grüße und viel Erfolg,
Markus :)

Thema: Wie viel für kleine Website verlangen?
Am im Forum: Smalltalk

Zitat von Coder007
Ich glaub, du übertreibst ;) So wie die meisten Band Seiten ausschauen, sind die an einem Tag mit Notepad zusammengeschustert. Das ist auch in etwa der Aufwand, mit dem ich rechnen würde. Selbstverständlich, wenn alle Inhalte fertig geliefert werden, und dann noch zusätzlich Tests/Nachbesserungen. Aber das ist jetzt ziemlich sicher kein großes Projekt, wo man ein CMS braucht.

Du hast natürlich recht, wenn es um ein paar zusammengeschusterte Notepad-Seiten geht und es auch dabei bleibt.

Aber nicht selten kommt dann "Wir hätten gerne ein Gästebuch" oder "Wir möchten selber Eintragen können wenn wir einen Gig haben" und dann ist man mit einem System wie Wordpress besser bedient - denn erstens kann das schon ne ganze Menge, und zweitens gibts für das was Wordpress nicht direkt kann Plugins...

Nachtrag: Und auch für eine in Notepad zusammengeschusterte Seite braucht man (wenn sie ein bisschen ordentlich aussehen soll) zwei Tage...

Thema: Wie viel für kleine Website verlangen?
Am im Forum: Smalltalk

Auch wenn ich im beruflichen Bereich deutlich teurer bin, baue ich doch Webseiten für die bucklige Verwandtschaft oder Freunde für 15 bis 20 Euro / Stunde.

Wenn du eine einfache (!) Webseite rechnest (z.B. ein Wordpress-System mit einem Design-Template, dass du nicht verändern musst und ohne die Entwicklung von eigenen Plugins) kannst du mit etwa 24 bis 32 Std. rechnen bis die Webseite so läuft, dass der Kunde zufrieden ist. Wenn du noch Grafiken bauen musst, kommen nochmal mindestens zwei Tage (16 Std.) dazu.
Die Zahlen gelten natürlich nur, wenn du den Inhalt der Webseite (die Texte, Hörproben etc...) nicht selber machen musst. Sonst kommen dafür auch nochmal um die zwei Tage (16 Std.) dazu.

Wenn du die Webseite komplett selber baust (ohne auf ein bestehendes CMS aufzusetzen) wage ich nicht den Aufwand abzuschätzen...

Ich würde an deiner Stelle von einem Festpreis abraten, und die Webseite für deine Freunde entweder umsonst oder zu einem festen Stundensatz basteln. Lass dich für ein solches Projekt nicht auf einen Festpreis ein - es sei denn du willst diesen Fehler unbedingt mal gemacht haben... ;)

Viele Grüße,
Markus :)

Thema: Verständnisproblem bei salted hashs: Wo wird das Salt gespeichert?
Am im Forum: Rund um die Programmierung

Hallo Maddinel,

der Salt wird zusammen mit dem Gehashten Passwort in der Tabelle gespeichert. Der Sinn eines Salzes ist es ja die Anwendung von Rainbow-Tables unmöglich zu machen. Der Datenbankeindringling würde immer noch nahezu ewig brauchen für jeden Salt (!) eine neue Rainbow-Table berechnen zu müssen - selbst wenn er die Salts kennt.

Gruß,
Markus :)

PS: Und die Brute-Force-Attacke EDIT nach herbivores Beitrag: funktioniert nicht, weil du beim Login auf der Seite oder im System ja immer noch einen Salt anhängst... wird dadurch auch nicht weniger aufwändig als ohne Salt.

Thema: Button dauerhaft mit einem Text versehen
Am im Forum: GUI: Windows-Forms

Moin,

Noch eine Anmerkung zu deiner Überschreibung:

public override string Text {
    get { return base.Text; }
    set { base.Text = value; }
}

Damit hast du nichts gewonnen, denn du überschreibst den Code zwar, greifst aber trotzdem auf die Implementierung der Basisklasse zurück - da kannst du dir das überschreiben auch sparen.

Einen eigenen (unveränderlichen) Text erreichst du folgendermaßen:

public override string Text {
    get { return "Mein Text" }
    set { }
}

Die Thematik Properties und Methoden zu überschreiben gehört allerdings zu den Grundlagen des Programmierens mit C# und dem .NET-Framework...

Viele Grüße,
Markus :)

Thema: [Aprilscherz] Automatisches Schließen von Threads
Am im Forum: Ankündigungen

Ahhhhh - Schon die nummer Zwei auf die ich heute reinfalle.

@Team: Herzlichen Glückwunsch - genial gemachte Vereimerung! So müssen Aprilscherze sein!

Viele Grüße,
Markus :)

Thema: [Aprilscherz] Automatisches Schließen von Threads
Am im Forum: Ankündigungen

Interessante Idee.

Wenn aber sowieso alle Beiträge von Moderatoren freigegeben werden - warum dann nicht den Thread offen lassen und die Beiträge manuell moderieren?

Es fühlt sich weniger hart an, wenn es heißt "Dein Beitrag wird moderiert" als wenn es heißt "Der Thread wurde automatisch geschlossen"...

(EDIT: Weiter unten habe ich den Gedanken weitergedacht...)

Könnt ihr sicherstellen, dass wenigstens einigermaßen rund um die Uhr jemand da ist, der auf neue Beiträge kontrolliert? Es mag zwar in der Nacht ein paar Stunden geben wo niemand ernsthaft auf eine Antwort wartet, aber ich kann mir gut vorstellen, dass Hobbyprogrammierer (und Studentden ;) SCNR - ich war selbst einer) insbesondere in den Abendstunden so zwischen 19:00 und Mitternacht aktiv sind. Gibts da Statistiken drüber?

Das Team ist zwar relativ groß, aber ich könnte mir doch vorstellen, dass es zu Situationen kommt wo durch einen zufall für eine oder zwei Stunden keiner von Euch Moderatoren online ist. Bleiben dann Beiträge auf Halde liegen?

Je mehr ich darüber nachdenke desto weniger gefällt mir diese Idee. Dieses Forum war schon immer sehr gut moderiert, und ich empfindes dieses Forum als eines der angenehmsten in denen ich lese bzw. schreibe.
Trotzdem denke ich dass diese Maßnahme ein wenig Overkill ist - denn diese Maßnahme trifft in erster Linie die Nutzer die brauchbare Fragen stellen und sich an ernsthaften Diskussionen beteiligen.

Wäre es zur Verhinderung von Grundlagenfragen nicht sinnvoller nur neue Threads zu moderieren und diese erst von einem Moderator freigeben zu lassen bevor sie auf der Webseite erscheinen? So kämen solche Threads erst gar nicht auf, und der normale User wäre trotzdem nicht in seiner Teilnahme eingeschränkt.

Viele Grüße,
Markus :)

Thema: Volltextsuche bei MS SharePoint 2010 Foundation
Am im Forum: Smalltalk

Moin,

soweit ich das weiß kommt erst mit der Standard-Edition das Search-Feature mit dazu, in der Enterprise-Version dann inkl. FAST.

Informationen zum "Search"-Feature von SharePoint gibts bei sharepoint.microsoft.com/... (auch wenn du den wahrscheinlich schon kennst)

Viele Grüße,
Markus :)

Thema: Das Programmier-Spiel: nette Übungsaufgaben für zwischendurch
Am im Forum: Smalltalk

Hallo bSharp,

auch deine Lösung erzielt den gewünschten Effekt, aber hält sich nicht ganz an die Aufgabenstellung. Allerdings hat deine Lösung auch was - denn wer vermutet schon, dass sich hinter einem String nicht ein System.String verbirgt...

Dann stelle ich hier mal meine Lösung vor. Die Ursprungsklasse wird (wie von zommi bereits vorgeschlagen) um das keyword partial ergänzt.

static partial class Program {

    [STAThread]
    static void Main(string[] args) {

        if (args.Length == 0 || args[0] == string.Empty) {
            Console.WriteLine("Bitte geben Sie den Namen des Angestellten an, den Sie feuern möchten!");
            return;
        }

        // Jede
        // Menge
        // Code
        // um
        // den
        // Angestellten
        // loszuwerden
        // ...

    }

}

Die andere Hälfte der Klasse Program, die wir dem Programm unterschieben enthält (wie von zommi vorgeschlagen) einen Typinitialisierer - denn nur der wird in diesem Beispiel vor der Methode Main ausgeführt.

Aber worin liegt nun die Magie die die Überprüfung in der originalen Main-Methode ein unerwartetes Ergebnis liefern lässt? Der gewünschte Effekt lässt sich mit einer einzigen Zeile voll Schabernack erzielen:

static partial class Program {

    static Program()  {
        typeof(string).GetField("Empty").SetValue(null, "Ihr Name");
    }

}

Da zommi an der Aufgabenstellung am nächsten dran war darf er weitermachen! :)

Ich muss allerdings gestehen, dass ich nicht von ganz allein auf diese Aufgabenstellung gekommen bin: The Daily WTF: The Disgruntled Bomb (in den Kommentaren findet sich die Anregung...)

Viele Grüße,
Markus :)

Thema: Das Programmier-Spiel: nette Übungsaufgaben für zwischendurch
Am im Forum: Smalltalk

Hallo zommi,

der Trick mit dem partial-keyword und dem Typinitialisierer war gefragt. Allerdings kommt mein Typinitialisierer mit einer einzigen Zeile Code aus - ohne sich dabei auf die Kommandozeilenparameter zu beziehen ;)
Ich werd nochmal ein Weilchen warten und ansonsten meinen Code posten...

@AndereAnsätze: Egal was dabei rauskommt: bis jetzt ist zommi der erste der sich tatsächlich an die Aufgabenstellung gehalten hat. (Eine versteckte Datei in der Solution)...

Viele Grüße,
Markus :)

Thema: Das Programmier-Spiel: nette Übungsaufgaben für zwischendurch
Am im Forum: Smalltalk

Hallo zusammen,

da der letzte Beitrag ja schon eine kleine Ewigkeit her ist, erlaube ich mir mal ein neues kleines Rätsel zu stellen. Ich formuliere die Frage mal so, wie sie bei einer Zertifizierungsprüfung gestellt würde. ;)

Sie arbeiten als Software-Enwickler bei der Firma Kleine Klitsche GBR und verwenden Visual Studio 2010 mit .NET 4 als Entwicklungsumgebung.

Trotz exzellenter Leistungen erhalten Sie die Kündigung. Sie haben durch Zufall erfahren, dass der Chef bei Kündigungen immer ein kleines Konsolenprogramm aufruft, um sämtliche Daten des Gekündigten aus dem System zu entfernen.

Bevor der Chef Sie jedoch aus dem Büro geleitet, bekommt er einen Anruf und lässt Sie für ein paar Minuten an Ihrem Platz allein. Schnell starten Sie Visual Studio und laden die Solution der kleinen Applikation. Damit ihre Änderung so unauffällig wie möglich bleibt, fügen Sie der Originaldatei nur ein einziges Wort hinzu. Allerdings verstecken Sie eine weitere Datei in den Tiefen der kleinen Applikation.

Gerade als Sie Ihre "Arbeit" abgeschlossen haben erscheint Ihr Gerade-Noch-Chef und geleitet Sie aus dem Büro. Kaum das er Sie vor die Tür gesetzt hat verschwindet der Jetzt-Ex-Chef in seinem Kämmerlein. Sie spitzen die Ohren und richtig: Keine zwei Minuten später hören Sie ein ersticktes Schluchzen aus eben diesem Kämmerlein und machen sich fröhlich pfeifend auf den Weg zum Arbeitsamt...

Was war geschehen? Jedes mal wenn der Zum-Glück-Nicht-Mehr-Chef der kleinen Applikation Ihren Namen übergibt erscheint derselbe Text auf dem Bildschirm:

[TT]c:\>KollegenKicker.exe "Ihr Name"
Bitte geben Sie den Namen des Angestellten an, den Sie feuern möchten!
c:\>
[/TT]

So sah das Programm vor Ihrer Änderung aus:

static class Program {

    [STAThread]
    static void Main(string[] args) {

        if (args.Length == 0 || args[0] == string.Empty) {
            Console.WriteLine("Bitte geben Sie den Namen des Angestellten an, den Sie feuern möchten!");
            return; 
        }

        // Jede 
        // Menge
        // Code
        // um
        // den
        // Angestellten
        // loszuwerden
        // ...

    }

}

Welches Wort fügen Sie in die Datei Program.cs ein, und welche Datei erstellen Sie noch um den gewünschten Effekt zu erreichen?

Es gewinnt die Antwort, die mit dem wenigsten Code auskommt!

Thema: Coding Styles Horror
Am im Forum: Smalltalk

Gestern in einem unserer Projekte entdeckt: Der sog. throw-catch Block!


public void DoSomething() {
    try {
        throw new NotSupportedException("Methode wird nicht unterstützt.");
    
        // Etliche
        // Zeilen
        // auskommentierter
        // Sourcecode

    } catch {
    }
}

Thema: Warum gibt es ein Forum für Smalltalk, aber nicht für VB oder C++?
Am im Forum: Wünsche und Kritik

... zumal die Beschreibung des Forums eindeutig ist: "Diskussionen zu allen sonstigen Themen"

Thema: Windows 7 neu entdeckt: Nützliche Tastenkombination und hilfreiche Features
Am im Forum: Smalltalk

Dass man Fenster an den Rand (oder nach oben) schieben kann, habe ich auch jeden Tag verwendet - aber dass das über Tasten geht war mir neu (auch wenn ich mir das hätte denken können...)

Thema: Windows 7 neu entdeckt: Nützliche Tastenkombination und hilfreiche Features
Am im Forum: Smalltalk

Moin,

habt ihr mal versucht wenn ihr mehrere Windows auf habt eins davon mit der Maus zu "schütteln"? Oder bei einem Fenster die Tastenkombination <Windows><Links> oder <Windows><Rechts> ausprobiert?

Ich bin begeistert!

Viele Grüße,
Markus :)

Thema: Registriertes Event zur Laufzeit entfernen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Qt21580,

dann hatte ich dich richtig verstanden. Ein Formular auf diese Weise zu laden ist nicht unbedingt der beste Weg.
Du könntest dem Formular einen Konstruktor geben, der einen boolschen Parameter übernimmt anhand dem festestellt wird ob die EventHandler ausgeführt werden oder nicht. (Also eine Art "DesignMode")

Ich nehme an du baust die Applikation mit Windows-Forms? Dann schau dir mal das MVP (Model-View-Presenter) Pattern an. Wenn du die relevante Logik in einen Presenter auslagerst, kannst du den View (in dem Fall deine Form) je nach Anzeigegrund mit einen passenden Presenter anzeigen. Im Falle eines normalen Applikationsstarts ist das eben der der die Produktivdaten bereitstellt, im Falle des Rechteeditor tut er nichts außer die Form anzeigen und vielleicht Dummy-Daten bereitstellen.

Viele Grüße,
Markus :)

Thema: Registriertes Event zur Laufzeit entfernen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Qt21580,

das ganze sieht noch etwas unausgegoren aus. Ich habe da noch ein paar Fragen. Warum erstellst du eine neue Instanz von dem gewünschten Typ? Wo registrierst du dich auf die Events von denen du dich deregistrieren willst - bzw. welche Handler willst du deregistrieren?

Thema: Welches ist die bessere/beste Eisenbahnsimulation?
Am im Forum: Smalltalk

Moin moin,

ich kann dir noch das Forum TSSF empfehlen - die beschäftigen sich mit nix anderem als Eisenbahnsimulationen...

Viele Grüße,
Markus :)

Thema: Abbruch Backgroundworker dauert zu lange
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

... in diesem Fall der System.Threading.Timer, dem man mitgeben kann wann er den TimerCallback aufrufen soll...

Viele Grüße,
Markus :)

Thema: Event wird nicht gefeuert, weil es null ist
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Zitat von PPK
2 Fragen warum:


 EventHandler createMenu = CreateMenu;

Dieses Konstrukt ist eine Frage der Thread-Safety. Folgendes Konstrukt ist nicht Thread-Safe, da nach der Prüfung ob EventHandler registriert sind auch wieder welche deregistiert werden können *bevor* der Handler aufgerufen wird. In diesem Fall würde der direkte Auftruf von CreateMenu in einer NullReferenceException resultieren:

if(CreateMenu != null) {
    // <-- hier könnte sich in einem anderen Thread der letzte Handler deregistrieren
    CreateMenu(this, EventArgs.Empty);
}

Durch den Umweg über eine lokale Variable wird diese Situation entschärft, da die Prüfung auf der lokalen Variable ausgeführt wird, die sich nicht verändert - auch wenn ein EventHandler deregiestriert wird.


var handler = CreateMenu;
// <-- selbst wenn sich jetzt der letzte Handler von CreateMenu deregistriert
//     ist hat das keinen Einfluss mehr auf die lokale Variable handler.
if(handler != null) {
    handler(this, EventArgs.Empty);
}

Viele Grüße,
Markus :)

Thema: Suche Klassendiagramm aller .net Klassen als Poster
Am im Forum: Smalltalk

[offtopic]

Zitat von michlG
9000end
10000end

Interessante Schreibweise. Sprich Neuntausendend oder Zehntausendend ;) SCNR....

[/offtopic]

edit: Typos gefixt. Bitte keinem verraten, dass ein Beitrag weiter noch der falsche Text steht...

Thema: [gelöst] Wie Boolsches Attribut deserializieren
Am im Forum: Datentechnologien

Moin,

Danke für die Antwort. Sicherlich habe ich ein RootItem - die in meinem vorangegangenen Beitrag sind nur ein kleiner Ausschnitt aus dem XML- oder dem dazugehörigen C#-Code. Es geht nicht darum wie deserialisiere ich überhaupt irgendwas - sondern wie deserialisiere ich ein bool...

Aber nach einer Nacht drüber schlafen bin ich selbst drauf gekommen.

<TestItem IstIrgendwas="True" />
Diese Schreibweise funktioniert nicht, denn der Serializer arbeitet Case-Sensitiv.
<TestItem IstIrgendwas="true" />
Diese Schreibweise wird anstandslos deserialisiert...

Viele Grüße,
Markus :)

Thema: [gelöst] Wie Boolsches Attribut deserializieren
Am im Forum: Datentechnologien

Hallo zusammen,

ich habe eine XML-Datenstruktur, die ich deserialisieren möchte. Darin z.B. folgendes Item:

<TestItem IstIrgendwas="True" />

Dazu hatte ich folgenden Code implementiert:

[XmlAttribute]
public bool IstIrgendwas{ get; set; }

Das funktioniert so natürlich nicht, da der Wert "True" ein string ist. Kann ich das eleganter lösen als eine String- und eine boolsche Property zu definieren, so dass der String "True" direkt in einen boolschen Wert deserialisiert wird?

Wenn ich dem XmlAttribute-Attribute den Typ System.Bool mitgebe funktioniert das auch nicht wie gewünscht...

Viele Grüße,
Markus :)