Laden...

Forenbeiträge von bbb Ingesamt 72 Beiträge

28.04.2020 - 15:03 Uhr

@LaTino
Das klingt wirklich nach harter Belastung. Bist du Alleinerziehend oder kann dich deine Frau da nicht unterstützen?

31.03.2020 - 10:29 Uhr

Hi, aufgrund der aktuellen Corona Situation würde mich mal ein kleiner Eindruck aus der C# Community interessieren. Wie läuft es bei euch so? Macht man sich in euren Unternehmen bereits Sorgen? Werden schon Maßnahmen ergriffen? Wie gehts den Selbstständigen hier so?

Ich höre aus meinem Umfeld täglich, dass es schlechter wird. Einer meiner alten Arbeitgeber hat gerade Kurzarbeit angemeldet. Und das obwohl das Unternehmen immer sehr gut dastand. Ständiges Wachstum in den letzten Jahren und volle Auftragsbücher. Dies scheint gerade in kürzester Zeit wegzubrechen. Ich war davon ausgegangen, dass gerade die IT Branche dem Ganzen etwas besser gegenüber aufgestellt ist. Eventuell ist dem nicht so...

17.10.2018 - 09:17 Uhr

Das ist mal ein verdammt simpler & smarter Lösungsansatz. Vielen Dank, herbivore!

05.10.2018 - 14:16 Uhr

Da hast du schon recht, da es sich hier aber um hochfrequente Daten handelt, ist das Ganze auch eher als Approximation zu verstehen.

05.10.2018 - 14:01 Uhr

Sehr cool. Vielen Dank fürs Klarstellen. Ich werde es mal auf diese Weise versuchen. Besten Dank!

05.10.2018 - 13:48 Uhr

@witte
Brute force könnte auch ne Möglichkeit sein. Ich dachte es gibt schlauere und dadurch vielleicht auch effizientere Möglichkeiten. Die Idee mit dem A* finde ich gar nicht mal so schlecht.

@Latino
Diese Abweichung muss ich hinnehmen, selbst wenn die Lösung dadurch ggf. schwach ist.

Zusammen mit der Anzahl der möglichen Lösungen wird sie etwas stärker

Und müsste es nicht genau umgekehrt sein? Mit zunehmender Anzahl der möglichen Lösungen wird die Aussagekraft weniger?

05.10.2018 - 11:24 Uhr

Hi T-Virus,

ja, es ist mir durchaus bewusst, dass es hier zu mehreren Kombinationen kommen kann, die passen würde. Diese Abweichung ließe sich in Kauf nehmen.

Bzgl. des Rahmens der Anwendung: Nein, ich habe keinerlei Möglichkeiten herauszufinden, ob die Einzelwerte positiv oder negativ sind.
Es handelt sich hier um Börsenwerte. Die Hauptwerte, die ich als T1 und T2 beschrieben sind Interest Rates, die ca. alle 5 Sek veröffentlicht werden. Zwischen diesen Zeitpunkten finden etliche Trades statt. Ganz einfach gesprochen sieht es so aus:

T1: 1000 T2 1050

Hier zwischen gab es genau einen Trade: 50. Die Gesamt Interest Rate ist angestiegen, also kann man draus schließen es war eine Open-Order. Wäre die Gesamt Interest Rate gefallen, also zu T2 kleiner als zu T1, dann wäre es eine Close-Order gewesen. Soviel zum Anwendungsrahmen.

05.10.2018 - 10:50 Uhr

Hallo zusammen,

ich weiß nicht recht wohin dieses Thema passt, daher habe ich es erstmal unter offtopic erstellt. Es geht hier um eine Art Kombinatorik Problem und ich weiß nicht so recht nach was ich googlen muss, um hier in die richtige Richtung zu kommen. Vielleicht habt ihr ein paar Hinweise, wie man so ein Problem angeht.

Ich habe ein Intervall in dem ich eine Gesamtzahl an Messwerten bekomme. Das kann (vereinfacht) so aussehen:

T1: 1000 T2: 1051

Ich habe zwischen den beiden Zeitpunkten also eine Differenz von 51

Nun bekomme ich im Intervall von T1 - T2 weitere Einzelmesswerte in absoluter Form. Ich weiß also nicht, ob sie positiv oder negativ sind:

Einzelmesswerte im Zeitraum T1 - T2:

10, 15, 20, 10, 11, 5

Ich weiß also das die Differenz von T1 zu T2 51 ist. Nun möchte ich die passenden Werte finden, die dieses Ergebnis bilden.

Alle Einzelwerte auf addiert passt nicht:

10 + 15 + 20 + 10 + 11 + 5 = 71

Wohingegen eine solche Kombination passen würde:

10 + 15 + 20 - 10 + 11 + 5 = 51

Das die Werte zwischen T1 und T2 negativ sein können, ist auch möglich. Zb so:

T1: 1000 T2 950

Einzelmesswerte im Zeitraum T1 - T2:

20, 30

Einzige mögliche Kombination

-20 -30

Ich denke, dass Problem ist klar. Wie ließe sich sowas lösen? Gibt es dafür mathematische Ansätze oder Algorithmen - außer stumpfen ausprobieren?

30.03.2018 - 16:15 Uhr

Hmm, wenn es bei dir auf Anhieb läuft, dann wird tatsächlich auf meiner Maschine noch irgendetwas schief hängen. Danke für den Support soweit.

30.03.2018 - 14:41 Uhr

Danke für die Tipps. Leider konnte ich es damit auch noch nicht lösen.

Ich hab das mal runtergebrochen auf ein ganz simples Beispiel:

  • Neues Projekt mit
  • ASP.NET Core 2.0 Web Api
  • Weiteres Projekt hinzugefügt: Class Library .NET Standard 2.0
  • Der WebApp die Library als Projekt Referenz hinzugefügt
  • Im Values Controller versucht die Klasse der Library zu nutzen

Ich nutze Visual Studio 2017 Version 15.6.4

Hab ich da jetzt doch irgendwo einen groben Schnitzer drin oder ist das tatsächlich ein Bug?

Test Projekt ist im Anhang.

30.03.2018 - 13:58 Uhr

Hallo zusammen,

ich stehe gerade vor dem Problem, dass ich gerne eine .NET Standard Library in meiner ASP.NET Core Web Api nutzen möchte.

Das Szenario sieht so aus:

  • Model-Klassen in der .NET Standard Library 2.0
  • ASP.NET Core Web Api bekommt eine Projekt Referenz auf die Standard Lib

Nun möchte ich die Model-Klassen in der Web Api nutzen und stelle fest, dass die Namespaces nicht aufgelöst werden können. Es verhält sich so, als wäre überhaupt keine Referenz auf die Standard Lib vorhanden (was sie aber eindeutig ist; auch ohne Fehlermeldungen).

Ich hab zum Test mal eine Core Lib erstellt. Diese verhält sich wie erwartet und man kann sie nach dem Referenzieren ohne Probleme verwenden.

Irgendwelche Ideen woher dieses Problem kommt?

29.03.2018 - 14:35 Uhr

Super, vielen Dank fürs Klarstellen!

29.03.2018 - 10:39 Uhr

Und PPS:
Schau Dir REST an. GetRole ist keine REST-konformes URL-Segment.

Hallo Abt,

was genau meinst du hiermit? Was ist da falsch?

02.10.2016 - 19:32 Uhr

Hallo,

ich hatte überlegt mein Web-Projekt aufzuteilen in folgende Struktur:
*MVC 5 Projekt für das Frontend; ohne eigene Authentication *Web Api Projekt als DataProvider mit Authentification in Form des Identity Servers

Aus diesem Umstand ergibt sich nun das Problem, dass mein MVC Projekt den Identity Server nicht mehr selbst hostet und ich die entsprechenden Login Mechanismen, die im Template mitkommen, nicht mehr nutzen kann. Ich habe auch noch keinen wirklich einfachen Weg gefunden den Endpunkt des Identity Servers im MVC Projekt zu ändern.

Ich kann zwar mit JavaScript Calls gegen den Endpunkt "meinWebApiProjekt/token" einen Login durchführen, allerdings findet dies dann nur clientseitig statt. Auf Serverseite des MVC Projektes findet der Login ja nicht statt.

Nun meine Frage: Gibt es einen einfachen Weg den Endpunkt des Identity Servers im MVC Projekt umzukonfigurieren oder wäre es sinnvoller die Projektstruktur zu ändern und die beiden oben genannten Projekte in ein einziges Projekt zu überführen?

17.09.2016 - 12:34 Uhr

Danke fürs Klarstellen. Dann werde ich mal die Sicherheitsempfehlungen beachten und keine Fehlermeldungen anzeigen.

17.09.2016 - 11:13 Uhr

Hallo zusammen,

ich setze gerade eine Passwort vergessen Funktion anhand von Microsoft Beispielen um LINK

Dort wird folgender Satz empfohlen:

"The method fails silently if the user email has not been confirmed. If an error was posted for an invalid email address, malicious users could use that information to find valid userId (email aliases) to attack."

Man soll also den User nicht darüber informieren, dass eine Mail an ihn rausgeschickt wurde, bzw. eine bekannte Rückmeldung wie "Deine Email ist uns nicht bekannt" soll nicht stattfinden. Finde ich etwas userunfreundlich. Manchmal weiß der Benutzer ja auch nicht mehr, mit welcher E-Mail er sich angemeldet hat. Wie handhabt ihr das?

Des weiteren wird auch erst eine Mail rausgeschickt, wenn die Email zuvor bestätigt wurde. Ist das auch sinnvoll? Auch hier ist es möglich, dass der User sich nur kurz angemeldet hat, auf der Seite noch nichts getätigt hat und das erst eine Woche später tut. Da hat er dann sein gewähltes PW vergessen und kann es nicht erneut resetten, da er eventuell bei der letzten schnellen Anmeldung seine Mail nicht bestätigt hatte. Wie seht ihr das?

28.08.2016 - 19:07 Uhr

Danke für die Denkanstöße von euch beiden. Hat mir auf jeden Fall zu denken gegeben. Da den "Top-Kommentaren" sei es in Bezug auf Reise-Bewertungen, Produkte, etc. heutzutage sehr viel Bedeutung zukommt, werde ich mein System noch mal überdenken und wohl nicht public anbieten.

Edit: Jeder dem noch Ideen einfallen so ein System so robust wie möglich zu gestalten, ist herzlich eingeladen seine Ideen hier mitzuteilen 😉

28.08.2016 - 16:00 Uhr

Korrekt. Es soll als weiterer Zusatz dem System nur einen gewissen Mehrwert verpassen.
Ich werde als weitere Hürde das Ganze noch an die IP koppeln. Dann muss der Live-Betrieb ergeben wieviel Sinn das alles macht. Wenn man sich Systeme wie StackOverflow oder Amazon anguckt, dann bietet das dem Nutzer schon einen guten Mehrwert und es ist einigermaßen fälschungssicher gestaltet worden.

28.08.2016 - 13:00 Uhr

Okay, dank dir für deine Einschätzung. Dann muss im Zweifel bei Mißbrauch das Voting auf bestehende User eingeschränkt werden.

28.08.2016 - 12:18 Uhr

Hallo zusammen,

ich bin gerade bei der Konzeptionierung eines Voting-Systems für User-Kommentare. Ziel ist es, dass alle Website Besucher, egal ob eingeloggt oder nicht, in der Lage sein sollen einen Kommentar hoch- oder runter zu voten. Im Grunde genommen ein ähnliches System wie es Amazon bei seinen User-Bewertungen macht.

Nun stellt sich mir die Frage, wie ich am besten verhindere, dass ein User mehrfach votet. Mein erster Gedanke wäre es einen Cookie zu setzen. Wenn gevotet wurde dann entsprechend eine Methode zu haben die anhand des Cookies überprüft, ob gevotet werden darf. Ich hab dazu nen Snippet im Netz gefunden, wo es wie folgt gelöst wurde:

private Boolean CanUserVote(Guid id, double rating) 
{   
    HttpCookie voteCookie = Request.Cookies["Votes"];    
    if (voteCookie != null) 
    {        
        if (voteCookie[id.ToString()] != null) 
        {            
            return false;        
        }    
    }  
      
    //create the cookie and set the value    
    voteCookie = new HttpCookie("Votes");    
    voteCookie[id.ToString()] = rating.ToString();    
    Response.Cookies.Add(voteCookie);    
    return true;
}

Ist das Best-Practices? Oder gibt es noch weitere, vielleicht sogar bessere Möglichkeiten, Doppel-Votes zu unterbinden? Schließlich ließe sich diese Variante recht schnell aushebeln, sobald die Cookies einmal gelöscht wurden.

23.05.2016 - 13:51 Uhr

Super, dank dir. Ich werde das nun auf die Weise umsetzen.

23.05.2016 - 12:47 Uhr

Ich glaub da hast du mich falsch verstanden. Im Grunde soll wie du beschrieben hast der User vollkommen freie Wahl der Sprache haben. Es geht um den ersten Besuch der Seite. Der User tippt in den Browser www.website.com ein und soll (je nach Browsersprache) zb auf www.website.com/de umgeleitet werden. Dies nur für den ersten Aufruf. Wenn er dann also, wie in deinem Fall auf der schwedischen Version gelandet ist, drückt er einmal auf die deutsche Flagge und hat bei allen zukünftigen Besuchen die deutsche Seite vor sich, da in diesem Fall dann der gesetzte Cookie greift.

Also meine Frage: Wie leite ich den User immer auf den korrekten URL Prefix? Der URL Prefix ist ja meines Erachtens nach schon durch das Routing gesetzt.

23.05.2016 - 12:10 Uhr

Ja, das Vorgehen über den Action Filter ist mir auch bekannt. Eignet sich meiner Auffassung nach aber nicht für mein Vorhaben.

Stelle dir folgendes vor: User betritt zum ersten mal die Seite (Cookie nicht vorhanden). Es müsste eine Default route greifen die ihn beispielsweise auf:

Website.com/en/Index/Home

leitet. Seine Browser-Einstellung sagt aber, dass er ein deutscher User ist und eigentlich hier landen müsste:

Website.com/de/Index/Home

Wenn das OnActionExecuting Event des Filters greift wurde der User also schon auf die "en"-Default-Culture geleitet. Was soll denn jetzt geschehen, wenn diese Default-Route für den User unpassend ist? Ein weiterer Redirect zurück mit einer neu ermittelten Culture?

23.05.2016 - 10:29 Uhr

Korrekt. Ich versuche darüber eine Lokalisierung zu realisieren. Idee ist die Lokalisierung bereits als Teil der URL zu haben nicht als Parameter. Also zb so:

Website.com/de/Index/Home
Website.com/en/Index/Home

Ich habe dazu einen Base Controller, welcher im BeginExecuteCore Event die culture ausließt:


protected override IAsyncResult BeginExecuteCore(AsyncCallback callback, object state)
{
    string cultureName = RouteData.Values["culture"] as string; 

}

Das klappt auch sehr gut. Mein Ziel ist es nun folgendes Verhalten schon beim Initialen starten der Site zu erlangen:

1.) Hat der User ein Cookie mit einer Spracheinstellung gesetzt, wenn ja nutze dies
2.) Hat er kein Cookie, auslesen der Accept-Language des Browsers
3.) Klappt das nicht setzen der Default Language (zb en)
4.) Möglichkeit bieten den User (zb DrobDown) eine Sprache auszuwählen. Diese Auswahl soll dann im Cookie gespeichert werden.

Meine Idee war nun dieses Verhalten schon beim greifen der Default Route einzubauen, indem ich den culture Teil der URL durch eine Methode setzen lasse, die genau das beschriebene umsetzt.
Falscher Ansatz? Bessere Vorschläge um genau das umzusetzen?

22.05.2016 - 22:35 Uhr

Hallo zusammen,

ich suche gerade nach einer Möglichkeit in der RouteConfig auf den Request zuzugreifen. Ich habe folgende Default-Route:


routes.MapRoute(
                name: "Default",
                url: "{culture}/{controller}/{action}/{id}",
                defaults: new { culture = CultureHelper.DetectRequestCulture(HttpContext.Current.Request), controller = "Home", action = "Index", id = UrlParameter.Optional }
            );

Ich möchte gerne auf das Request Object zugreifen, wenn die Default-Route greift. Leider wird an dieser Stelle dann eine Exception geworden:

Fehlermeldung:
"Anforderung steht in diesem Kontext nicht zur Verfügung"

Kennt jemand einen Weg bereits an dieser Stelle den Request entsprechend abzugreifen?

08.04.2016 - 15:06 Uhr

Das werde ich mal ausprobieren. Vielen Dank!

08.04.2016 - 14:46 Uhr

verwendetes Datenbanksystem: MS SQL

Hallo zusammen,

gibt es eine Best Practise für die Loaklisation von Datenbank-Tabellen?

Was ich bisher so gelesen habe ist, dass es zu einer Tabelle A eine Tabelle LanguageA geben sollte. Diese enthält dann sowas wie:

LanguageID
IsoCode
Language
Translation
und als Foreign Key dann den Verweis auf Tabelle A in Form von TableAID

Ich hätte es gerne etwas generischer. In etwa so:

LanguageID
IsoCode
Language
Translation
EntityID <- generischer Foreign Key

Jetzt hätte ich nur noch eine Translation Tabelle. Hier stoße ich aber glaube ich auf Foreign Key Constraint Probleme, weil jede zu übersetzende Tabelle mit seinem Primary Key auf den Foreign Key der Tanslate-Tabelle zeigen müsste.

Wie wäre mein generischer Ansatz überhaupt möglich? Oder muss ich tatsächlich für jede zu übersetzende Tabelle eine eigene Sprachtabelle haben? Oder gibt es noch andere Ansätze?

28.11.2014 - 15:30 Uhr

Hallo zusammen,

ich suche zurzeit nach einer Möglichkeit die Pfade des internen Telefonspeichers zu ermitteln. Konkret: Genau die Pfade die ich auch im Windows-Explorer angezeigt bekomme, wenn mein Telefon mit dem Computer verbunden ist. Also z.B. Documents, Downloads, Music, Pictures, etc.

Soweit ich das bis jetzt verstanden habe, kann ich mit dieser Methode


var file = await ApplicationData.Current.LocalFolder.GetFileAsync(fileName);

bloß auf die Pfade meiner Application zugreifen. Wenn ich nun also eine Datei mit meiner App herunterlade, dann landet diese immer im Application-Scope. Das ist sowas ähnliches wie der AppData Ordner unter Windows und diese sind nicht sichtbar, wenn das Telefon mit dem Computer per USB verbunden ist.

Ich hatte nun gehofft, dass es Konstanten - ähnlich zu den SpecialFolder unter Windows - gibt, mit denen ich die Pfade des internen Telefonspeichers ermitteln kann. Weiß da jemand mehr?

07.03.2014 - 13:26 Uhr

Ich denke, es ist nicht das Ergebnis von obige Abfrage. Bitte überprüfe das mal.

Ja, das habe ich jetzt mal gemacht. Du hast recht. Das geht auch. Hatte mich da vertan. Ich meine allerdings schon öfters vor ähnlichen Problemen gestanden zu haben, bei denen mir die etwas erweiterte Auslegung des GROUP BY von MySQL bessere Dienste geleistet hatte. Leider habe ich dafür gerade kein passendes Beispiel parat.
Aber wie gesagt, ich danke euch für die Klarstellung.

07.03.2014 - 13:05 Uhr

Dann sag MSSQL doch dass Du den höchsten Wert haben willst (max).

Ja, genau. Würde ich doch wie folgt:


SELECT name, max(amount)
FROM table
GROUP BY Name, amount

Das Ergebnis habe ich doch in meiner letzten Antwort beschrieben und entspricht nicht meinem erwarteten. Oder wie sähe deine Query aus?

07.03.2014 - 12:58 Uhr

Hmm, ich versuche mal ein Beispiel zu konstruieren:

Folgende Tabelle:


Name | Amount
Peter | 10
Peter | 25
Hans | 15
Peter | 17
Hans | 20
Willi | 30

Möchte ich in MySQL hier nun mit einer Query den Namen und den dazu gehörigen höchsten Amount-Wert haben, mache ich folgendes:


SELECT name, max(amount)
FROM table
GROUP BY Name

Das Ergebnis wäre:


Peter | 25
Hans | 20
Willi | 30

Das MSSQL Ergebnis - da ich hier dem GROUP-Statement noch den Amount hinzufügen müsste wäre folgendes:


Peter | 10
Peter | 25
Hans | 15
Peter | 17
Hans | 20
Willi | 30

Ich denke daran ist leicht zu erkennen, wie leicht ich per MySQL zu meinem Ergebnis komme. Bei MSSQL müsste ich wohl mit deutlich aufwändigeren Unter-Selections arbeiten.

Schade, dass das nicht möglich ist. Dennoch danke für die Klarstellung!

07.03.2014 - 12:13 Uhr

verwendetes Datenbanksystem: MySQL & MSSQL

Hallo zusammen,

ich verwende überwiegend MySQL und bin schon öfter über ein, für mich ärgerliches Verhalten, bei MSSQL gestolpert. Folgende Query wird von MySQL anstandslos bearbeitet:


SELECT SpalteA, SpalteB
FROM Table1
GROUP BY SpalteA

Selbe Query auf einer MSSQL-Datenbank führt zu folgender Fehlermeldung:


Die 'SpalteB'-Spalte ist in der Auswahlliste ungültig, da sie nicht in einer Aggregatfunktion und nicht in der GROUP BY-Klausel enthalten ist.

Meine Frage: Wieso ist das so? Und welche Möglichkeiten habe ich auf einer MSSQL-DB, wenn ich genau dieses Ergebnis haben möchte, was mir die MySQL-DB liefert?

P.S. Dieses unterschiedliche Verhalten ist nicht nur auf MySQL <-> MSSQSL zu beschränken. Auch eine Postgres DB verhält sich wie die MSSQL.

08.10.2012 - 19:00 Uhr

Okay, danke für die Einschätzungen. Ich nehme an, dass ich es auch mal auf 2 Jahre durchrechnen werde. Wahrscheinlich ist das immer noch günstiger als der Grundversorger.

05.10.2012 - 21:54 Uhr

Hallo zusammen,

ich habe vor meinen Grundversorger zu wechseln und bin beim stöbern in den gängigen Vergleichsportalen über folgende Frage gestoßen: Die meisten attraktiven Angebote kommen meist dadurch zustande, dass dem potentiellen Neukunden ein Bonus bei Vertragsabschluss angeboten wird. Soll heißen, dass ich einen Vertrag über ein Jahr abschließe und dann eine Summe X mit der Jahresabrechnung gutgeschrieben bekomme. Folgende Hinweise werden vor dem Vertragsabschluss angezeigt:

Der Bonus wird nach zwölf Monaten Belieferungszeit mit der ersten Jahresrechnung verrechnet und wird prozentual zu den Gesamtkosten des tatsächlichen Verbrauchs berechnet; mindestens auf Grundlage des bei Vertragsschluss gültigen Paketpreises und höchstens auf Grundlage des bei Vertragsschluss vom Kunden angegebenen voraussichtlichen Jahresverbrauchs. Mit diesem Tarif kaufen Sie eine bestimmte Anzahl von Kilowattstunden. Ein Minderverbrauch wird nicht erstattet, der Mehrverbrauch wird zum Mehrverbrauchspreis abgerechnet. Die Preise bei Pakettarifen (Paketpreis und Mehrverbrauchspreis) sind für die jeweilige Laufzeit des Vertrages unveränderlich, vorbehaltlich von Änderungen einzelner Kostenbestandteile nach Ziff. 6.2 bis 6.5 bzw. Ziff. 6.7 bis 6.10 der AGB (EEG-Umlage, Belastungen aus dem KWKG, Konzessionsabgabe, Umlage nach § 19 Abs. 2 StromNEV), von Änderungen der Strom- und/oder Umsatzsteuer gemäß Ziff. 6.11, bzw. der Einführung oder Änderungen der Steuern, Abgaben oder sonstiger hoheitlicher Belastungen gemäß Ziff. 6.12 bis 6.14.

Der Anbieter verspricht Ihnen als Kunden: Etwaige auf diesem Vertrag ausgezeichnete Boni, Frei-kWh oder sonstige einmalige Rabatte werden Ihnen ohne Einschränkungen nach maximal 12 Monaten Belieferung gutgeschrieben, wenn Sie den Vertrag zuvor nicht gekündigt haben, ohne dass ein wichtiger Kündigungsgrund vorliegt. Kündigen Sie aus einem wichtigen Grund (beispielsweise weil der Anbieter die Preise erhöht), erhalten Sie Ihren Anspruch auf Bonus trotzdem in der vertraglich vereinbarten Höhe. Übt der Anbieter dagegen wirksam ein außerordentliches Kündigungsrecht wegen Zahlungsverzugs aus oder beenden Sie den Vertrag wegen Umzugs innerhalb der ersten 12 Monate, so können Sie Ihren Anspruch auf den Bonus verlieren. Die Boni werden Ihnen spätestens mit der Jahresendabrechnung gutgeschrieben. Einen Anspruch auf Auszahlung des Bonus haben Sie nur gegen den Anbieter.

Was ich mich nun Frage, ist ob ich den versprochenen Bonus auch erhalte, wenn ich direkt nach Abschluss kündige, sodass sich der Vertrag nicht automatisch um ein Jahr verlängert. Im Text heißt es ja, ich dürfe nicht vor 12 Monaten kündigen: "[...] einmalige Rabatte werden Ihnen ohne Einschränkungen nach maximal 12 Monaten Belieferung gutgeschrieben, wenn Sie den Vertrag zuvor nicht gekündigt haben[..]"

Weiß jemand wie das zu verstehen ist und ob eine direkte Kündigung nach Abschluss möglich wäre, wenn sich der Kündigungstext auf soetwas bezieht wie "fristgerecht zum 01.11.2013"?

28.08.2012 - 12:30 Uhr

Das scheint gut zu klappen. Vielen Dank!

28.08.2012 - 11:57 Uhr

Hallo,

ich würde gerne verhindern wollen, dass sich die benutzerbezogenen Einstellungen nach einem Rebuild ändern, bzw. wieder "zurückgestellt" werden. Wenn ich in meiner Applikation beispielsweise eine Benutzereinstellung für die Fensterposition habe, dann möchte ich diese gerne beibehalten, auch wenn eine neue Version veröffentlicht wurde. Gibt es die Möglichkeit einer Art Migration der alten und neuen Settings-Datei? Oder ist sowas aus Konistenzgründen o.ä. überhaupt nicht vorgesehen?

09.08.2012 - 17:17 Uhr

Hallo zusammen,

ich stelle mir gerade die Frage wie man folgendes Problem aus Architekur Sicht möglichst elegant löst:

Ich habe ein Event im DataAccessLayer, welches vom BusinessLayer abonniert wird. Dieses informiert über den Fortschritt einer langlaufenden Aktion. Nun soll im BL beim nutzen der DAL Funktion diese Information über den Fortschritt an die GUI weitergeleitet werden. Hier beißt sich meiner Ansicht nach die Trennung der Schichten ein wenig. Eigentlich ist es ja durchaus üblich und erlaubt ein Event zu fangen und dann erneut zu feuern. Allerdings müsste beim erneuten feuern des DAL-Events (im konsumierenden BL) die GUI ja auch die entsprechenden Event-Args kennen. Dies geht nur, wenn sie den DAL einbindet. Dies ist nicht gewünscht. Was also ist hier zu tun?
Ich sehe da nur die Möglichkeit im BL erneut einen Event-Handler zu definieren, welcher dem aus dem DAL ähnelt oder gar gleich ist. Dies fällt dann unter Code-Verdopplung und erschwert die Wartbarkeit.

Hat jemand nützliche Tipps, wie dies zu handhaben ist?

09.05.2012 - 22:32 Uhr

Ok, vielen Dank. Damit hab ich dann alle nötigen Infos denke ich.

09.05.2012 - 20:19 Uhr

Hallo,

danke, die Antworten haben mir das Ganze schon um einiges klarer gemacht. Weiß jemand wie dabei die Einkommenssteuer berechnet wird? Wird für die Ermittlung der Einkommenssteuer mein festes Jahresgehalt plus dem Betrag den ich per Kleingewerbe erwirtschaftet habe zusammengerechnet?
Und wann wird die Abgabe dieser Steuer vorgenommen? Ich nehme an in der jährlichen Steuererklärung, oder?

09.05.2012 - 14:19 Uhr

Hallo MrSparkle,

ja, das ist klar und wird natürlich vorher mit dem Arbeitgeber abgestimmt. Da es aber ähnliche Fälle bei uns schon gab, wird dort eine grundsätzliche Bereitschaft da sein.

09.05.2012 - 14:12 Uhr

Hallo zusammen,

wie aus dem Titel schon ersichtlich bin ich Angestellter in einem festen Arbeitsverhältnis und würde gerne nebenbei in meiner Freizeit noch selbstständig Jobs annehmen.

Ich nehme an, dass dieser Umstand des öfteren bei Entwicklern auftreten kann, daher meine Frage wie man dies am besten löst. Zurzeit denke ich wäre die Anmeldung eines Kleingewerbes die beste Möglichkeit. Nach meinen Informationen ließen sich so steuerfrei bis zu 17.500 € verdienen. Ich denke diesen Betrag würde ich zunächst nicht überschreiten.

Ist das eine gute Idee? Was gibt es sonst noch zu beachten. Ich wäre dankbar über jeden Tipp.

27.03.2012 - 17:24 Uhr

Oh ha, stimmt. Das könnte natürlich auch gehen. Darauf bin ich noch garnicht gekommen. Vielen Dank für den Denkanstoß!

27.03.2012 - 16:57 Uhr

Ja, das wäre eine Möglichkeit. Ich werde das mal so austesten. Vielen Dank.

27.03.2012 - 16:45 Uhr

Wenn ich das so machen würde, wie von dir vorgeschlagen, dann starten sich alle Threads auf einmal. Das soll ja eben nicht der Fall sein, sondern nur maximal 8 gleichzeitig. Was mit Parallel.For ja prinzipiell auch geht, nur eben leicht zeitlich versetzt.

27.03.2012 - 16:30 Uhr

Bei einer Zahl von ca. 8 extrenen Prozessen werden die Kerne am besten ausgenutzt und noch viel wichtiger: bei deutlich mehr Prozessen bekomme ich Probleme mit dem Arbeitsspeicher. Der wird knapp. Insgesamt müssen 15 Prozesse laufen, davon optimalerwiese 8 parallel.

27.03.2012 - 15:58 Uhr

Wenn Du erklärst, was Du überhaupt vor hast, kann man Dir Alternativen vorschlagen.

In der Schleife soll ein Process (also ein externes Programm) gestartet und auf dessen Beendigung gewartet werden. Da es ein zeitkritischer Vorgang ist, sollen möglichst alle (in diesem Fall) 8 Prozesse gleichzeitig gestartet werden.

Wenn Du ein bestimmtes Verhalten haben willst, musst Du entweder Deinen eigenen Task Manager schreiben oder Threadpool-Threads direkt starten.

Ich nehme an, darauf wird es hinauslaufen.

27.03.2012 - 14:43 Uhr

@punkdevil
Danke, das verdeutlicht das Ganze noch etwas mehr.

So richtig zufrieden bin ich mit der Mutmaßung / möglichen Ursache noch nicht. Muss es aber erstmal so hinnehmen. Heißt für mich erstmal, sollte ich eine bestimmte Anzahl von Threads innerhalb einer Schleife _sofort _ starten lassen, dann müsste ich wohl eine andere Technik einsetzen.

27.03.2012 - 14:21 Uhr

2 Cores. Es scheint ja möglich zu sein mehr parallele Aktionen zu starten als der Rechner Kerne hat. Nur warum dabei eine Verzögerung, in meinem Fall von ca. einer Sekunde, auftritt verstehe ich nicht.

27.03.2012 - 14:06 Uhr

Hallo zusammen,

folgender simpler Code sorgt bei mir für Verwirrung:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace TestConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            List<int> items = new List<int>();
            for (int i = 0; i < 16; i++)
                items.Add(i);
            
            ParallelOptions options = new ParallelOptions();
            options.MaxDegreeOfParallelism = 8;

            Parallel.For(0, items.Count, options, (i) =>
                {
                    Console.WriteLine("Thread startet : " + i);

                    Thread.Sleep(10000);

                    Console.WriteLine("Thread beendet : " + i);
                }
            );

            Console.ReadLine();
        }
    }
}

Bei einer Ausführung benötigt jeder Schleifendurchlauf, zum starten einer neuen Aktion, eine gute Sekunde. Ich hab ein anderes Verhalten erwartet und zwar, dass auf einen Schlag 8 Threads erstellt werden und mit der Arbeit beginnen und sich dann auch in etwa gleichzeitig beendet.
Kann mir jemand dieses Verhalten des verzögerten Starts erklären?