Laden...

Forenbeiträge von Femaref Ingesamt 240 Beiträge

25.09.2011 - 21:40 Uhr

ASP.net kennt die Referenzen nicht, da es kein Projekt, sondern eine Anwendung ist. Es sucht die gebrauchten assemblies im \bin Ordner, wenn sie in \build liegen, werden diese natürlich nicht gefunden.

06.08.2011 - 21:48 Uhr

Einem IOrderedEnumerable kannst du nichts hinzufügen, es ist eine sortierte Sequenz. Du kannst natürlich über List<T> l = new List<T>(input) eine Liste draus machen, allerdings ist diese nicht mehr sortiert.

13.07.2011 - 18:46 Uhr

DNA: Die x64 dll liegt im System.Data.Sqlite Ordner unter x64.

Ich hab mir dafür einfach mehrere Configurations gebaut, die dann mit nem post-build event dann einfach die entsprechende dll ins output kopieren.

11.07.2011 - 18:58 Uhr

Ich kenne das Problem - ich habe es auch gehabt.

Es gibt eine 64 bit und 32 bit Version der dll (da kommste auch net drumherum, weils auf unmanaged APIs zugreift, wenn ich mich recht erinnere). Auf deinen Entwicklungsrechnern funktioniert es, weil die verschiedenen Versionen im GAC sind, aber auf den anderen nicht, weil du entweder die 32 bit Version auf 64 bit ausführen willst oder umgekehrt.

Zwei Möglichkeiten:

  1. Mit einem Installer richtig ins GAC schreiben
  2. Ohne Installer eine 32 bit und eine 64 bit Version mit der entsprechenden DLL anbieten.
24.06.2011 - 16:51 Uhr

@schneeweiss:

Im Ankündigungsbereich kannst du keinen Thread erstellen.

17.06.2011 - 02:02 Uhr

Ich benutz zumeist Entity Framework. Ist durch die Autogeneration sehr einfach zu bedienen, macht aber bei komplexeren Schemas öfters kopfzerbrechen. Nachteil wäre außerdem die fehlende platform unabhängigkeit.

15.06.2011 - 19:58 Uhr

Meines Wissens haben alle AA-Acounts Ultimate-Versionen, egal ob Vista, 7 oder VS;

Meiner hat nur Professional von den Betriebssystemen.

14.06.2011 - 19:44 Uhr

Und in solchen Momenten liebe ich den MSDNAA Zugang.

<3 Microsoft.

07.05.2011 - 20:32 Uhr

Du musst die richtige Version hinterlegen, da System.Data.Sqlite zum Teil native Methoden benutzt, gibt es eine 32 bit und 64 bit Version.

11.04.2011 - 00:36 Uhr

Du rufst aus newGame() die startTimer() auf:


        public void startTimer()
        {
            snaketimer.Interval = 25;
            snaketimer.Tick += new EventHandler(snaketimer_Tick);
            snaketimer.Start();
        }

Jedes Mal, wenn du das Spiel neustartest, wird ein weiterer EventHandler hinzugefügt, somit wird snaketimer_Tick im ersten Spiel einmal pro Tick, im zweiten zweimal, im dritten dreimal etc aufgerufen. Da es auch ohne die Methode funktioniert, wirst du den Timer im Designer erstellt haben und dort auch die snaketimer_Tick als Handler hinzugefügt haben. Du brauchst die explizite Registrierung also nicht.

02.04.2011 - 21:37 Uhr

Du hast bereits einen int, musst es also nur noch parsen (mit int.Parse/TryParse).

02.04.2011 - 16:28 Uhr
 <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
  </startup>

In die app.config einfügen.

Mehr infos: In-Process Side by Side (Part1)

31.03.2011 - 23:12 Uhr

Es gibt auch container, die das injecten über eine property zulassen, und das zumeist auch lazy, d.h. erst wenn du es brauchst. Um irgendeine Referenz auf dein Logging interface wirst du aber nicht herum kommen.

19.03.2011 - 21:51 Uhr

Ja, da Path.Combine nen params string[] overload hat.

17.03.2011 - 02:49 Uhr

Ein cast von double auf int nimmt einfach alle nachkommazahlen weg, somit ist der resultierende int für zahlen kleiner 1 = 0.

Benutze also besser die TimeSpan.FromMilliseconds Methode:


TimeSpan zeit = TimeSpan.FromMilliseconds(versuche / pwRate * 1000);

16.03.2011 - 04:42 Uhr

Die Datei liegt unter (Win 7) %localappdata%\Local\company\programm_guid

Der Pfad ist tatsächlich abhängig vom Ort des Programmes, selbst die Debugversion im VS hat einen eigenen.

Persönlich würde ich das selber serialisieren und in %appdata% schreiben. Ich denke mal, dass es um eine Benutzungsbeschränkung geht? Bei normalen Benutzern dürfte das ausreichen, bei programmierern wird sowas simples eh nichts bringen, vorallem wenn du den sourcecode nicht obfuscatest.

07.03.2011 - 21:55 Uhr

Haben sie endlich die contentfarmen gekillt? Gut so! Es geht einfach nur tierisch auf die Nerven, wenn man nen SO post findet, merkt, dass es nicht das Problem ist, und dann erstmal 10 Seiten rausfiltern kann, weil es GENAU der gleiche Post ist.

Bis jetzt nichts festgestellt, was meine Suchgeschwindigkeit ändert.

01.03.2011 - 00:41 Uhr

tom-essen wieso denn das?
Das sind doch die Standardmethoden die das .NET Framework bereitstellt.

Du solltest dich an die naming conventions im framework halten, dann treten solche Missverständnisse nicht auf - XMLEdit sollte hier xmlEdit oder xml heißen, damit klar wird, dass es eine lokale variable ist. XMLEdit deutet durch die Großschreibung am Anfang auf eine Klasse hin.

23.02.2011 - 17:17 Uhr

.. na dann teste doch mal den RAM, wie es die Fehlermeldung schon besagt.

Ich bezweifel, dass es am RAM liegt. Eher wird im code versucht auf Speicherbereiche zuzugreifen, die dem Prozess nicht gehören, und da hat die managed Umgebung natürlich was gegen.

20.02.2011 - 11:59 Uhr

Jup, ist weg. Browser war Opera im übrigen.

19.02.2011 - 20:05 Uhr

Moin,

seit kurzem wird jeweils der Post, der unter der Maus ist, komplett mit underline versehen. Das trägt der Lesbarkeit nicht wirklich bei, wo genau ist der Sinn dahinter?

Grüße

15.02.2011 - 09:46 Uhr

Genau das, was da steht, einfach die mathematische Formel in C umsetzen.

29.01.2011 - 16:42 Uhr

Gestaltet sich relativ "einfach": selber machen.

Du musst dir überlegen, wie genau die Daten eingelesen werden, und woran die einlesende Funktion erkennen soll, dass zb. ein integer, oder ein string mit Länge X oder oder oder anfängt.

Das hört sich nicht nur komplex an, es ist es auch. Am besten solltest du dir angucken, wie andere (offene) Datei bzw. Übertragungsformate es anstellen (Stichwort Header, Opcodes).

18.01.2011 - 15:16 Uhr

Ich würde nur den identifier in der db speichern, und die styles als resourcen. Somit hast du default styles und lädst dann dynamisch je nachdem welcher identifier aus der db kommt.

17.01.2011 - 23:41 Uhr

Ich würde mich schon zumindest damit zufrieden geben, nächstes Semester auf Java verzichten zu können.

17.01.2011 - 23:32 Uhr

Wobei die Trennung bei ihm wohl nicht ganz der Fall ist 😉

11.01.2011 - 15:00 Uhr

Benutzt du zufällig T4 Templates und generierst code aus der assembly? wenn ja, guck dir mal die T4 Toolbox extension sowie die dort enthaltene T4Toolbox.VolatileAssemblyProcessor für das VolatileAssembly tag an.

05.01.2011 - 19:41 Uhr

Du musst K, L auf Referenztypen restriktieren (also where K : class in der Methodendefinition, siehe Generische Typenbeschränkung). Damit du die id property benutzen kannst, muss K bzw L natürlich diese properties bieten, also müssen sie ein interface implementieren. Somit sähe die Beschränkung so aus:


public void Method<K, L>() where K : class, ISomething, where L : class, IAnything
{
}

28.11.2010 - 01:26 Uhr

Wenn man den Post zur Hand nimmt, dann ist aber schon die Fragestellung im ersten Post inkonsistent zur Überschrift 😉

Ich würd trotzdem gern eine Antwort dazu setzen.

Und zwar gestaltet sich meine Benutzung aktuell zwar noch im Rahmen der DI/IoC ("So while MEF can be used for composition, that's merely a small intersection of its capabilities relative to other IoCs", MEF (Managed Extensibility Framework) vs IoC/DI), aber da ich in Zukunft plane, Plugins zuzulassen, wird mir MEF da gut helfen können.

Okay, das war die technische Erklärung... der eigentliche Grund ist aber eher, dass es die erste DI/IoC Implementierung war, die mir beim Verständnis sehr geholfen hat. Erst dadurch habe ich wirklich gelernt, in DI zu "denken". Ich hatte zuvor sowohl Castle Windsor als auch Hiro versucht, was aber nicht auf Anhieb funktioniert hat. MEF dagegen war in der WAF Doc als Beispiel benutzt, und da ich da zuerst mit DI richtig in Berührung kam, habe ich es übernommen.

Ganz klar, es fehlt eine Configuration, die Assemblies werden bei jedem Startup gescannt, dadurch ist es schwer, den Dependency Tree wirklich zu testen. Ist neben der höheren Startupzeit gewiss ein Nachteil, ich denke aber, dass es sich mit den Vorteilen im Plugin Bereich definitiv lohnt.

Wenn du es weiter diskutieren möchtest, kannst du mir gerne eine PM schreiben.

28.11.2010 - 00:25 Uhr

Managed Extensibility Framework. Die Attribute sind der Hammer 😃

18.11.2010 - 22:18 Uhr

Du kannst den Typenparameter beschränken mit where:


public interface IABC<T> where T: XYZ
{
}

Dann kann dieses Interface nur typenparameter haben, die XYZ sind oder davon ableiten. Als Sonderfälle gibt es noch class, struct und new(), was einen Referenztyp, Valuetyp und einem parameterlosen Konstruktor entspricht.

14.11.2010 - 12:06 Uhr

Wenn du ein Array machst, wird es mit dem defaultwert des Typs initializiert - bei ValueTypes ist das meist 0, und bei Reference Types null. Du musst vorher dem index noch eine neue Instanz zuweisen.

11.11.2010 - 14:35 Uhr

Spielst du Minecraft?

06.11.2010 - 19:54 Uhr

Ich kann dir zwar bei deinem Problem nicht weiterhelfen, mir ist aber was anderes aufgefallen, und zwar folgende Zeilen:


txtBatch2.Text = "c:\\meinedatei.bat";
myProcess.StartInfo.FileName = txtBatch2.Text;

Benutzt du Controls zur Datenhaltung und führst somit deine gesamte Logik in der GUI aus? Das ist absolut nicht empfehlenswert, da die Anwendung so schwer erweiterbar ist und für andere zumeist nicht verständlich.

24.10.2010 - 01:38 Uhr

Hallo Ploetzi,

such mal nach "LINQ to HTML" auf StackOverflow.com. Da findest du einige Beispiele, wie du sowas einfacher realisieren kannst. RegEx finde ich ein wenig zu kompiliziert und für solche Sachen "falsch". Viele verwenden RegEx für solche Sachen, aber es geht auch einfacher.

zero_x

Dazu: RegEx heißt Regular Expression. HTML ist aber nicht regular, es ist ein Baum. Also benutzt man einen DOM-Parser stattdessen. Macht das Ganze vieeeel einfacher. Dazu linke ich gerne

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags

23.10.2010 - 14:31 Uhr
this.lbl_I.Text = string.Format("{0:N2} A", I);
23.10.2010 - 14:11 Uhr

Verschiedene Frameworkversionen auf Server und Client.

20.10.2010 - 17:50 Uhr

How to get fields list from Entity framework model (edmx)?

oh verdammt... hätte ich das man früher gewusst, ich habs über reflection gemacht (wobei es bei meinem Ziel, Generierung von Dto Klassen wohl die bessere Variante war, da ich da wirklich nur die Datentypen brauche, keine weiteren Informationen).

Kurz: man geht die MetaData durch, aus denen das EntityFramework sowieso die Klassen generiert.

17.10.2010 - 16:26 Uhr

Was ich selber gemerkt habe, als ich ein Programm übernommen hab, das primär xml als Datenhaltung benutzt hat ist, dass es mit der Zeit und vielen Daten einfach zu langsam und unflexibel wird. Bei einigen Usern lagen die Ladezeiten beim Startup jenseits der 2-5 Minuten, da die xml auf massive Größen angewachsen war, und die Objekte riesig waren. Mit Umstieg auf sqlite und rewrite der applikation bin ich bei 90% Datenkompression und durchgehend gleichbleibenden Ladezeiten von ~ 5-10 Sekunden (durch Verwendung von MEF, welches die Assemblies beim Startup nach Attributen scannt) gelandet. Es kommt immer auf den Verwendungszweck an. Ich ziehe Datenbanken vor, vorallem wenn es um Datenspeicherung geht. Mit Sqlite gibt es eine einfache Variante, die keine Installation von 3rd-Party Software erfordert, und mit sqlite.NET auch einen ado.net adapter liefert, die ich bei jeder sinnvollen Verwendung benutze.

Xml benutze ich in der Applikation nur noch über die Settings file (.net configuration model) und um den autoupdater zu füttern. Xml ist eben für sowas gedacht.

16.10.2010 - 19:50 Uhr

Das, was du erreichen willst, ist das genaue Gegenteil von Lazy Loading - Eager Loading, d.h. alle Daten werden bereits beim Abfragen und nicht erst beim Iterieren geladen. Dafür musst du Lazy Loading natürlich aus machen.

02.10.2010 - 23:37 Uhr

Brauchste nicht, ich hab das gleiche Problem, aber in WPF, siehe: Einfrieren der Applikation bei Erstellung der Visual Container eines Datagrids und ich verwende durchgehend simple DataGridTextColumns.

Das nervt mich tierisch.

28.09.2010 - 18:45 Uhr

Ich benutze WAF (http://waf.codeplex.com) in Verbindung mit MEF (http://mef.codeplex.com) als DI-Container.

28.09.2010 - 16:51 Uhr

bump... Ich hoffe es macht euch nichts aus, dass ich es auch noch auf SO gepostet hab:

Application freezing while creating visual container for DataGrid rows

Wenn es dort zu einer Lösung kommt, werde ich diese selbstverständlich auch hier posten!

22.09.2010 - 01:08 Uhr

Moin, ich habe die letzten Wochen an nem Problem zu knabbern, dass mir keine Ruhe lässt.

Zuerst einmal als Anmerkung, mir ist der FAQ-Eintrag zum Thema freezen sehrwohl bekannt, und dies ist hier nicht das Problem.

Ich habe folgenden Code:


            <DataGrid Grid.Row="1" ItemsSource="{Binding Source={StaticResource iGroupedJournal}}">
                <DataGrid.Columns>
                    <DataGridTextColumn Binding="{Binding Path=DateTime}" Header="DateTime" />
                    [...]
                </DataGrid.Columns>
            </DataGrid>

iGroupedJournal ist eine normale CollectionViewSource, die auf eine modifizierte ObservableCollection bindet, die automatisch NotifyCollectionChanged im GUI Thread auslöst (was ja erforderlich ist).

Das Problem stellt sich nun eben darin, dass dies nicht ausreicht - selbst mit UI Visualization (also ohne Grouping in der CollectionViewSource) dauert die Erstellung von 50 Visual Container aus den Objekten (selbst wenn es a) reine Datenhalterobjekte und b) nur 3 Bindings sind) viel zu lange - die Applikation friert mal eben 3-5 Sekunden ein.

Datavisualization habe ich auch bereits ins Auge gefasst, aber dies würde nur bei Mengen von sehr viel größer der anzeigten Menge wirklich etwas bringen (Im Moment werden 50 Rows angezeigt wenn die Anwendung in Standardgröße arbeitet).

Die Frage ist nun - was übersehe ich? Wo besteht die Möglichkeit, zu optimieren? Auf Seiten des ViewModels gibt es wirklich nichts mehr was ich machen kann - in der Zeit, die wirklich zur Berechnung benötigt wird, habe ich bereits einen Loadingindicator, der fröhlich anzeigt, dass gearbeitet wird, erst wenn es um die Anzeige der Daten geht, kollabiert das Ganze.

19.09.2010 - 21:51 Uhr

Ich kann dir keine genauen Zahlen liefern, aber ich würde empfehlen, die patterns so zu schreiben, dass ersichtlich ist, was erreicht werden will. Das, was du versuchst, fiele unter den Bereich premature optimization. Regexes haben das Problem, dass sie zum Teil sehr schwer verständlich sind, und wenn man da nicht so klar wie möglich ist, ist es noch schwerer.

19.09.2010 - 21:48 Uhr

Equals vergleicht auf die Ticks, und diese sind anscheinend unterschiedlich.

16.09.2010 - 14:00 Uhr

Auch sehr lustig:

http://ytinstant.com/

Wurd von nem Studenten in 3 Stunden programmiert, danach noch polishing... hat über Twitter vom Youtube CEO nen Jobangebot bekommen und ihn auch getroffen, schreibt in seinem blog darüber:

http://www.feross.org/youtube-instant-media-frenzy/

15.09.2010 - 12:04 Uhr

Da ich die googlesuche nur über adressleisten shortcut in opera benutze (und die instantsuche sowieso in opera net geht) bekomme ich es nicht wirklich zu gesicht, ich habs aber mal testweise im firefox getestet... nette spielerei, aber da ich meist genau weiß, was ich suche, brauch ich es nicht unbedingt. Auf jedenfall bemerkenswert was sie da gezaubert haben.

11.09.2010 - 01:30 Uhr

Ich würde einen Mittelweg vorschlagen - du schreibst die Miniprogramme als Plugin für den server. Du hast dann ein Interface ala:


public interface IPlugin
{
  void Initialize();
  void ReceiveData(object sender, ReceiveDataEventArgs e); //Handler for receiving data
  event EventHandler<SendDataEventArgs> SendData; // event for sending data
  void Destroy();
}

Wenn nun die Serverapplikation startet, scannt sie das Programmverzeichnis nach dlls und lädt diese in eigene Appdomains, instanziert die plugins über Reflection und verknüpft die Events und ruft dann Initialize auf.

Wenn nun der Server Daten bekommt, verteilt er diese an die plugins weiter (über ein Event), die plugins reagieren drauf und sollten sie Daten zurückschicken wollen, machen sie das über das Event. Der Server steckt diese dann in eine Queue und schickt die Nachrichten dann raus and den Microcontroller. Hierbei ist aber zu bedenken, dass es dauern kann, bis alle Plugins die Reaktion auf eine Nachricht zurückgeschickt haben.

06.09.2010 - 20:13 Uhr

ich habe eine Klasse mit etwa 1900 Delegaten , diese werden Dynamisch zur Laufzeit an Systempointer gebunden. Nun möchte ich in einer anderen (statischen) Klasse die Methoden auf meine Delegaten binden. Meine Frage , kann ich das , dass ich dann zur Laufzeit die Methoden einfach aufrufen kann und der delegate wird ausgeführt?

Also irgendwie riecht das tierisch. Magst du vl weiter drauf eingehen, was du überhaupt vorhast?