Laden...

Forenbeiträge von Coder007 Ingesamt 1.214 Beiträge

05.06.2015 - 17:01 Uhr

Eine einfachere Möglichkeit gibt es nicht. Was man machen könnte, wäre ein Filtertreiber (sicher nicht in .NET), so in etwa wie Procmon das macht.

01.06.2015 - 20:53 Uhr

Das ist nicht so einfach zu beantworten. Vieles davon ist Interpretationssache. Wie MrSparkle geschrieben hat, kennen wir weder den Code noch die Anforderungen noch die möglichen Anforderungen.
Mit Design Patterns usw. sollte man es wohl nicht übertreiben. Es gibt wohl tatsächlich (kenne ich persönlich nicht, arbeite aber im C++ Umfeld) diese Entwickler, die bei jeder Aufgabe möglichst viele Design Patterns einsetzen wollen, weil die eben meinen, Design Pattern wären gut und die muss man überall reinzwingen. Sowas sollte man eher vermeiden.
Ansonsten kann man aber viele Aufgaben entweder möglichst pragmatisch und direkt (und dabei von mir aus auch produktiv und gut lesbar) umsetzen, oder eben mit ein paar Abstraktionsebenen mehr, die evtl. nicht nötig wären. Da gibt es auch die Fraktion, die gleich rumbrüllt, OMG, alles mit OOP und abstrakt, ich versteh gar nichts mehr. Aber welche Lösung auf lange Sicht die bessere ist, kann man von vornherein oft nicht sagen. Wir arbeiten seit 20 Jahren an einer sehr umfangreichen Software und ich kann aus Erfahrung sagen, dass da an sehr vielen Stellen einfach Abstraktionsebenen fehlen. Da denke ich mir oft, ok, das ist jetzt klar und einfach umgesetzt, aber wiederverwenden kann ichs nicht, jetzt muss ich alles umbauen. Und oft genug kann man was nicht mal ohne weiteres umbauen, weils zu viele Abhängigkeiten hat. Ich würde sowas also nicht pauschal beurteilen, ohne das System und die Umstände näher zu kennen.
Kontrolle in irgendeiner Form gibts bei uns eigentlich nicht. Es gibt ab und zu Code Reviews und die meisten wissen auch, was die anderen so in etwa machen und wie, aber es gibt keinen übergeordneten Architekten (es gibt aber Senior Developer, die Entscheidungen treffen, was wie grundsätzlich gemacht wird) und der Chef schaut sich den Code auch nicht an. Die meisten Lösungen sind mittlerweile ziemlich pragmatisch. Es wird mit den Design Patterns usw. nicht übertrieben, es wird aber auch darauf geachtet, keine ungewollten Abhängigkeiten einzubauen und den wiederverwendbar zu halten. Passiert aber schon ab und zu, dass man bei irgendwelchen kleineren Projekten Overengineering betreibt, wenns einem grad Spass macht und man ausprobieren will.

31.05.2015 - 17:09 Uhr

Mir gehts ja auch um die Frage, ob ich das mit einem Closed Source Produkt vertreiben kann, ohne das ebenfalls unter die AGPL zu stellen und den Quellcode freizugeben. Und in dem Zusammenhang habe ich eben ziemlich eindeutige Aussagen in Bezug auf Webanwendungen gefunden, aber nicht auf Dektopanwendungen.

31.05.2015 - 16:54 Uhr

Ich habe MongoDb bisher nicht in die engere Wahl gezogen (obwohls mir technisch ganz gut gefällt), weil das die AGPL Lizenz benutzt.

Dank Abts Beitrag in diesem Thread Welche NoSQL-Datenbank für Logging-Server?

hab ich mir das aber nochmal angeschaut. Es wäre bei Webanwendungen anscheinend explizit kein Problem, MongoDb zu verwenden, das schreiben die auch auf ihrer Seite. Die Treiber stehen unter der Apache Lizenz und somit muss der Clientcode nicht freigegeben werden. Mich würde aber mehr der Fall interessieren, MongoDb zusammen mit einer Dektop Anwendung zu vertreiben. Zu dem Fall habe ich keine eindeutigen Aussagen gefunden. Hat hier schon jemand Erfahrungen damit gemacht?

31.05.2015 - 01:04 Uhr

Was mich an MongoDb vor allem stört ist die AGPL Lizenz, da muss man etwas aufpassen.

18.05.2015 - 19:56 Uhr

Ob Dlls oder Funktionen in Dlls fehlen könnte man evtl. mit dem Dependency Walker rausfinden. Allerdings sollte in dem Fall die Anwendung nicht hängen. Schwieriger wirds, wenn die benötigten Dlls und Funktionen zwar da sind, aber nicht wirklich zusammenpassen.

14.05.2015 - 18:04 Uhr

Es handelt sich in der Tat um eine C/S-Anwendung, sie ist aber 25 Jahre alt, also nicht 4-6... Sie soll in den nächsten Jahren schrittweise auf .Net überführt werden. Wir können nicht alles über den Haufen werfen und den Kunden sagen, dass die nächsten Updates erst mit der Fertigstellung des neuen Systems in fünf Jahren kommen.

Ich weiß nicht wie groß eure Anwendung ist, und ob ihr den Aufwand auch wirklich gut abgeschätzt habt. Ich arbeite in einer Firma (C++, wir haben nichts mit .NET zu tun), die auch an einer Software arbeitet, die seit 20 Jahren entwickelt wird. Vor paar Jahren haben wir auch ein größeres Refactoring gemacht und auf ein moderneres UI Framework umgestellt. Das hat grob zwei Jahre gedauert und auch noch Jahre später finden wir immer wieder etwas, was früher ging und jetzt nicht mehr. Und wir haben auch erst vor wenigen Jahren einen Application Server eingeführt. War auch bei weitem nicht so viel Aufwand eingeplant, wie es dann tatsächlich geworden ist, und es sind dann sehr sehr sehr viele Sachen erst beim Implementieren aufgefallen, die wir nicht berücksichtigt hatten. Dabei rede ich nicht mal von einer kompletten Neuimplementierung in einer neuer Programmiersprache. Also, fünf Jahre wäre jetzt nichts so abwegiges, wie du dir das grad anscheinend denkst. Sollte eigentlich klar sein, wollte dich aber vorsichtshalber doch nochmal warnen.

13.05.2015 - 18:00 Uhr

Kannst du da nicht reindebuggen? Entweder in den .NET Code, oder wenn du nicht so weit kommst, in den Aufruf? Bin mir nicht sicher, aber ich könnte mir vorstellen, dass man mit dem .NET Code sehen müsste, was hinter dem Aufruf alles passiert.

Da die sich "aufhängt", denke ich irgendwie an Thread/Apartment Marshalling Probleme.

09.05.2015 - 17:28 Uhr

Bei einem "großen" Projekt mit hunderten Variablen wirst du wahrscheinlich so viel sonstigen Code haben, dass der Aufwand für die Erstellung der Variablen absolut vernachlässigbar sein wird.

02.05.2015 - 18:02 Uhr

Es gibt Bibliotheken, die HTML parsen können. Schau dir z.B. Html Agility Pack an. Das war seinerzeit nicht schlecht, hab aber schon lang nichts mehr damit (und mit .NET) gemacht.
Einen einfachen Scanner/Parser, der nur den Klartext extrahiert sollte man aber auch selber schnell schreiben können.

13.04.2015 - 20:39 Uhr

Es gibt noch so DCOM Rechte, weiß jetzt aber nicht mehr, wie man das einstellt, zu lang her.

13.04.2015 - 20:16 Uhr

So wie du das beschrieben hast, hat sich das schon angehört, als ob das Citrix Plugin laufen würde.

Mit dem File System Watcher kriegst du die Änderungen nicht mit, wenn deine Anwendung nicht läuft. Es gibt bei NTFS so ein Change Journal, das kann man aktivieren und dann kann man abfragen, was es alles für Änderungen gab. Das geht auch nachträglich. Allerdings kann irgendein anderes Programm das Change Journal auch wieder deaktivieren, also wirklich zuverlässig ist es nicht.
Es ist im Endeffekt alles zu komplex und nicht wirklich zuverlässig, ich würde da keinen besonders großen Aufwand treiben und kann mir schlecht vorstellen, dass es sonst jemand macht. Wenn du das schnell mit deinem File System Watcher nebenbei machen kannst, ok. Ansonsten vielleicht wie gesagt mal schauen, ob du an die Datei ID von NTFS rankommst und dann danach und nicht nach dem Dateinamen suchen kannst. Aber ob sich das alles lohnt, wag ich mal stark zu bezweifeln.

13.04.2015 - 20:11 Uhr

Glaub eher, dass es doch Verbindungsprobleme sind und nicht am Code liegt (außer da ist ein offensichtlicher Fehler, den ich grad nicht sehe).

Probiers mit wbemtest, ob du dich damit mit deinem Server verbinden kannst.

12.04.2015 - 17:49 Uhr

Ich glaube nicht, dass z.B. Install Shield da irgendwas großartig komplexes macht, um das Umbenennen von Shortcuts zu überwachen. Wenn das jemand umbenennt, wirds halt nicht gelöscht. Hab ich aber nicht getestet 😉
Bei NTFS gibts aber pro Volume eindeutige IDs, die man auslesen und sich speichern könnte. Evtl. machen das andere Installationsframeworks sogar so.

07.04.2015 - 20:03 Uhr

Ich bin gerne für weiteres Feedback offen und auch Idden zur "Komplexitätserhöhung" 😃

Was anscheinend noch nicht erwähnt wurde ist, ob die Mannschaft daheim oder auswärts spielt. Das macht sehr oft sehr viel aus. Wenn du dir Statistiken anschaust, sind die meisten Mannschaften daheim deutlich stärker.

06.04.2015 - 16:58 Uhr

So sieht es aus und es funktioniert super

Was heißt das? Hast du deine Ergebnisse mit den bekannten Ergebnissen tatsächlicher Spiele verglichen? Da gibt es schon sehr viele Testdaten, an denen man den Algorithmus optimieren könnte.
Pauschal würde ich aber sagen, dass dein Ansatz viel zu einfach ist und so gesehen "nichts bringt". Das nichts bringt in Anführungszeichen, weil du nicht mal dazugeschrieben hast, was du eigentlich erreichen willst. Als Ziel könnte man hier definieren, die zukünftigen Ergebnisse mit einer gewissen Wahrscheinlichkeit vorhersagen zu können. Wie du dir sicher denken kannst, gibts hier schon einiges. Die ganzen Wettanbieter werden sowas einsetzen und ich glaube, die haben wesentlich mehr Arbeit in ihre Algorithmen und die Optimierung reingesteckt, schliesslich ist das ihr Geschäft und es geht um viele Millionen. Und trotzdem liegen sie bei weitem nicht immer richtig. Dass man hier auch gar nicht immer richtig liegen kann und das Ergebnis von sehr vielen unterschiedlichen Faktoren abhängt ist denke ich sowieso klar. Aber dann muss ich erst recht fragen, was genau ist dein Ziel?

23.03.2015 - 21:02 Uhr

Ja, man kann die Fenster sogar modifizieren, wenn ich mich recht erinnere. Wenn du z.B. eigene Berechtigungen vergeben willst. Ist aber schon lang her, dass ich mir das angeschaut habe.

23.02.2015 - 21:05 Uhr

ITK ist wohl aber C++.

Das ist jetzt nicht wirklich überraschend. Auch OpenCV ist C++. Die einzige brauchbare native Implementierung ist Aforge.NET, aber das ist jetzt nicht so umfangreich und auch nicht so verbreitet. Kann sein, dass es dir reicht. Mit ITK hab ich im Studium gearbeitet, da fließen sehr viele neue Entwicklungen in diesem Bereich ein. Wenn jemand Forschungen im Bereich Computergrafik macht, stehen die Chancen nicht schlecht, dass er das gleich auf eine Integration ins ITK Framework hinarbeitet.
Da gibts schon irgendwelche .NET Wrapper, aber ich weiß jetzt nicht, wie gut die sind.

20.02.2015 - 21:04 Uhr

Das ITK Projekt ist auch weit verbreitet und hat einen guten Ruf, bin mir aber nicht sicher, obs das ist, was du suchst:

ITK

25.01.2015 - 17:14 Uhr

Wir haben in der Arbeit auch eine eigene IDE geschrieben (schon vor Jahrzehnten, wird aber noch benutzt und weiterentwickelt). Du darfst den Wartungsaufwand nicht unterschätzen. Vielleicht kriegst du jetzt etwas hin, womit du zufrieden bist. Paar Jahre gibt es viel mehr Anforderungen, vielleicht ist auch der Stand der Technik weiter, und dann ist man nur noch damit beschäftigt, ständig etwas nachzuimplementieren und zu warten, was es eh schon vielleicht als OpenSource gibt und was besser funktioniert. Das sollte man auf jeden Fall bedenken.

25.01.2015 - 17:09 Uhr

Möglicherweise liegt es auch einfach daran, dass myCSharp.de so gut ist und deshalb kein Bedarf für eine Alternative besteht. 😃

Ich sehe Stackoverflow nicht als Konkurrenz zu myCSharp. Ich bin zwar selber schon seit Jahren nicht mehr im .NET Umfeld unterwegs, aber auch früher hab ich bei Stackoverflow die Schwerpunkte anders gesehen. Das wäre für mich der erste Anlaufpunkt (allerdings über die Suche, hab da noch nie eine Frage gepostet) für technische oder systemnahe Fragen. Ein Forum wie myCSharp ist aber aus meiner Sicht besser dafür geeignet, über Architektur und Vorangehensweisen zu diskutieren. Wegen des Reputationssystems bei Stackoverflow funktionieren solche Diskussionen dort nicht wirklich gut.
Das ist auch ein Grund, warum ich kein Stackoverflow auf Deutsch brauche/wil. Ich verstehe Englisch sehr gut, ich hab kein Problem damit, die Erklärung zu einer technischen Frage zu lesen. Die meisten Texte, die man dazu liest, sind dann meist eh auf Englisch (MSDN und andere Dokumentationen erst recht). Ist auch besser so, habe schon öfter über Google Foren gefunden, wo auf japanisch oder spanisch scheinbar genau das erklärt wurde, was ich wissen wollte.
Und wenn man über etwas diskutieren will, gibt es genügend deutscher Foren.

23.01.2015 - 20:56 Uhr

Wir machen in der Arbeit nicht viel mit PHP, aber ein Kollege benutzt dafür Netbeans. Das scheint ganz gut zu funktionieren. Wirklich beurteilen kann ich das aber natürlich nicht, wir sind da alle keine PHP Experten.

17.01.2015 - 22:29 Uhr

Man muss Desktopsoftware übrigens auch nicht unbedingt installieren. Wir entwickeln Softwarelösungen im CAD/PDM Bereich, Teile der Software sind z.B. als Plugins in die entsprechenden Systeme eingebunden. Trotzdem wird unsere Software oft nicht installiert, sondern liegt auf einem Netzlaufwerk und kann einfach gestartet werden. Kann man auch recht einfach in viele CAD Systeme einbinden, indem man einfach zentral auf die entsprechenden Verzeichnisse verweist. Wir haben auch einen Application Server, sowas bietet sich natürlich schon an, aber der ist optional. Wenn die Software aktualisiert werden muss, gibts einfach ein Wartungsfenster und die Software wird zentral ausgetauscht. Das funktioniert auch bei Kunden, bei denen unsere Software an mehreren tausend Arbeitsplätzen eingesetzt wird.

13.01.2015 - 20:54 Uhr

Ich weiß nicht so genau, was .NET hier macht...

In C++ würde ich das COM Objekt irgendwie so aufbauen:

HRESULT GetKeyList(IKeyList ** list);

Normalerweise wird erwartet, dass Methoden von COM Objekten HRESULT zurückgeben. Steht auch in den Design Rules. Ist in .NET jetzt aber wiederum nicht üblich.
IKeyList wär dann wieder ein Interface und es würde eine Klasse geben, die das implementiert. Das wurde aber anscheinend auch in der Form generiert, tlh Dateien sind mir nicht geläufig.

Was heißt überhaupt type mismatch in C++? Das kann doch eigentlich nur ein HRESULT return code sein, E_TYPEMISMATCH oder so. Das würde aber kommen, wenn man die Methode über IDispatch aufrufen würde. Das seh ich bei dir aber nicht, ich seh einen direkten Aufruf.

03.01.2015 - 18:26 Uhr

Wir haben die Sockets natürlich auch nicht selber implementiert 😉 Nur, damit es hier keine Missverständnisse gibt.
Kannst du die ganze Zeit einen Debugger mitlaufen lassen? Breakpoints an den wichtigen Stellen setzen, wo sich das Programm beenden könnte, und natürlich Exceptions aktivieren.
Ansonsten kannst du schon versuchen, mit tshark den Traffic aufzuzeichnen und dann nochmal abzuspielen. Da du schreibst, dass du das schon probiert hast, was genau hat dann nicht geklappt?

03.01.2015 - 16:09 Uhr

Naja, zumindest wenn du nach einem guten HowTo fragst, ist ein Google Link als Antwort nicht verkehrt 😉 Ich meine, ein HowTo kannst du sicher auch selber finden, und wenn du konkretere/andere Antworten haben willst, solltest du auch konkretere/andere Fragen stellen. Zumindest was diesen einen Satz und die Antwort darauf betrifft.

Solche Netzwerkprobleme können ziemlich kompliziert zu finden sein. Ich schreibe auch nebenbei an einer Serversoftware (nebenbei, weil die Serverkomponente eigentlich nur einen ganz kleinen Teil der Gesamtsoftware ausmacht) und wir hatten über die Jahre schon alle möglichen komischen Probleme damit. z.B. wurden die Verbindungen irgendwann nicht mehr zugemacht und das hat den Server nach einer Weile gekillt. Da mussten wir auch eine ganze Weile suchen, warum das Zumachen der Verbindungen von heut auf morgen nicht mehr ging, an der Software wurde nichts geändert, der Server wurde nur auf eine frische VM umgezogen. Selbe Windows Version, eigentlich alles gleich. Wir haben auch tatsächlich nicht rausfinden können, was der Unterschied war, aber irgendwann dann doch einen Bug in unserer Software gefunden. Oder irgendwann wars auch von wieder heut auf morgen viel langsamer usw...
Was ich sagen will, riesige network captures aufzuzeichnen und wieder durchlaufen zu lassen ist nicht unbedingt der richtige Weg, das Problem zu finden, oder zumindest nicht gleich. Kannst du das Problem schon eingrenzen? Wir haben über die Jahre wie gesagt viele Probleme untersuchen müssen und die hatten auch alle möglichen unterschiedlichen Ursachen. Kann sein, dass es auf die Menge ankommt, oder auf die zeitlichen Abstände, oder auf die Intervalle, oder auf ganz bestimmte Pakete zu einem bestimmten Zeitpunkt... Hatten wir alles schon. Kann sein, dass du den capture wieder abspielst und das Problem dabei nicht auftritt.

Wegen Wireshark. Ich habs länger nicht mehr so intensiv benutzt, aber so weit ich mich erinnern kann, hatte das früher Stabilitätsprobleme bei großen Captures. Also zumindest tshark verwenden und nicht die GUI. Aber ich meine, das hat auch so seine Probleme. Im Wireshark Blog (Wireshark Blog) steht, dass sie da was verbessert haben und beim rotieren der Dumpfiles auch der Speicher aufgeräumt wird, aber ob das jetzt auch wirklich released wurde und wie gut das funktioniert, weiß ich nicht.

01.01.2015 - 18:27 Uhr

Nein, das geht nur auf Treiberebene. Und das macht eben winpcap und bietet dafür eine Schnittstelle für User Prozesse.
Das Zusammenbauen der Header kannst aber wahrscheinlich wiederverwenden. Du brauchst winpcap dann nur, um sie zu versenden.

01.01.2015 - 16:55 Uhr

Das geht auch nicht und ist nicht gewollt. Mit der WinSock API kannst du auch keine Raw TCP Packets versenden. Das kannst du aber mit WinPCap machen. Dafür gibts auch einen .NET Wrapper, ich kann aber nichts dazu sagen, wie gut der ist.

30.12.2014 - 16:00 Uhr

Schau dir das mit Process Explorer an. Damit müsstest du die Threads und deren Call Stack sehen können.

p.s. Ach ja, und natürlich kannst du ganz einfach reindebuggen. Attachen, anhalten, schauen was die Threads so machen.

22.12.2014 - 16:37 Uhr

Kannst du irgendwelche Voraussagen über die Größen der Dateien treffen? Wenn die z.B. alle ähnlich groß sind, könntest du die Dateien da lassen und nur als frei markieren, statt sie zu löschen. Dann wär der Speicherbereich bereits reserviert.

18.12.2014 - 16:35 Uhr

Viel mehr steht in der Doku zu der Klasse auch nicht dabei. Du könntest höchstens mal schauen, was für Schnittstellen das Attachment Objekt implementiert, z.B. IDataObject oder IPersistStream wären interessant.

16.12.2014 - 17:06 Uhr

Hast du das Excel.Application Objekt oder kommst du irgendwie ran? Dann könntest du dir das Fenster holen und den dazugehörigen Prozess.
Was für IMoniker hast du genau an der Hand?

05.12.2014 - 21:20 Uhr

Ich würde mit einem Projekt anfangen, das dir Spass macht. Ich habe nie eine Sprache "gelernt". Ich habe vor über 15 Jahren mit Delphi angefangen und kaum konnte ich Variablen deklarieren, schon habe ich mit einem größeren Projekt angefangen. Alles andere kommt nebenbei, weil du das sowieso brauchen wirst. Nur wirst du es vielleicht von sich aus finden oder umgekehrt sofort sehen, wo du das neugelernte in deinem Projekt einsetzen könntest.

28.11.2014 - 20:44 Uhr

DOKAN hatte ich im Einsatz, musste allerdings feststellen, dass es mir Dateien zerstörte (vor allem MS Office und PDF waren betroffen).

Es fällt mir schwer das zu glauben. Hab das vor Jahren auch mal benutzt. Es war zwar ziemlich langsam, aber soweit ganz stabil, und so gravierende Probleme wie zerstörte Dateien sind nie aufgetreten.

16.11.2014 - 23:27 Uhr

Ich glaub, das ist so langsam offtopic... Mag sein, dass du Recht hast. Ich würde hier meine Hand jedenfalls für nichts in Feuer legen. Dass Microsoft in den letzten Jahren sehr stark zugelegt hat, ist klar. Auch dass Apache Marktanteile verliert, z.B. eben auch wegen nginx. Aber die genauen Werte kennt niemand, und einen IIS Marktanteil von 35% glaube ich einfach nicht. Erstens, weil keine einzige Firma, in der ich bisher gearbeitet habe, den IIS eingesetzt hat (nicht mal die Windows Firmen, und eine war sogar eine .NET Softwareschmiede und hat auch etwas ASP.NET gemacht). Zweitens gibts die ganzen riesigen Unternehmen, die keinen IIS einsetzen würden, z.B. wie du selber gesagt hast, Google oder Facebook. Ich weiß jetzt nicht, aber ich würde davon ausgehen, dass auch Oracle, Apple, Amazon und viele andere keinen IIS einsetzen. Drittens gibt es immer noch sehr sehr viele Hoster und Server, die Linux und Apache einsetzen. Viertens läuft der IIS nur unter Windows, Apache hingegen läuft unter Windows UND unter so ziemlich allen anderen Systemen, hat also mehr Verbreitungspotenziall. Fünftens ist ist die Hürde, einen Apache einzurichten einfach niedriger. Viele, die als Schüler oder Studenten mit der Webentwicklung anfangen wollen, installieren wahrscheinlich erstmal einen Apache, und dann kennen die sich damit schon aus. War zumindest zu meiner Zeit so. Sechstens sehe ich Microsoft mittlerweile einfach grundsätzlich auf dem absteigenden Ast. Die sind in allen Bereichen bei weitem nicht mehr so dominant wie früher, nicht mal was Spiele angeht. Die Menschen sind jetzt viel eher bereit, sich nach was anderem umzusehen.
Deswegen halte ich einen Marktanteil von 35% einfach noch für viel zu hoch. Ich wäre auch eher geneigt zu glauben, dass der Anteil sinkt, aber da kann ich sicher falsch liegen.

16.11.2014 - 16:26 Uhr

NetCraft sagt jedoch auch, dass 62% der Webseiten im Februar durch den IIS ausgeliefert werden, was sie den Marktanteilen der Cloud (u.a. Azure) zuteilen.

W3Tech zeigt aber ein ganz anderes Bild, da sind es nur 13,5% und es geht weiter abwärts:

W3Tech: Usage statistics and market share of Microsoft-IIS for websites

Und ganz ehrlich, das halte ich für deutlich realistischer.

Ich weiß nicht, ob sich in Bezug auf .NET und Mono viel ändern wird, ich glaub ehrlich gesagt eher nicht.

Was ich aber wirklich toll finde ist, dass man mit der Community Edition nun auch Plugins und AddOns laden kann. Für mich als C++ Entwickler war VS Express immer sehr suboptimal.

14.11.2014 - 20:47 Uhr

So ein Blog wäre auch ziemlich uninteressant... Ich habe wahrscheinlich jeden Tag Probleme, für deren ich Lösung ich nach Anregungen suche und dabei finde ich natürlich auch interessante Blogbeiträge. Nur suche ich nicht grundsätzlich nach irgendwelche potenziell interessanten Problemen, sondern nach ganz konkreten, die ich jetzt grad habe. Irgendwelche anderen Probleme interessieren mich meist überhaupt nicht, dafür habe ich keine Zeit und könnte mich nicht darauf konzentieren oder mir irgendwas merken.

09.11.2014 - 16:04 Uhr

Das wäre normalerweise nichts, was die Anwendung selber entscheidet, das entscheidet der Administrator. Unter Linux würdest du das mit iptables definieren, unter Windows mit route.

Sowas kann durchaus Sinn machen, auch wenn die beiden Netzwerkkarten mit dem gleichen Netzwerk verbunden sind. Stell dir vor, du hast zwei Möglichkeiten ins Internet rauszukommen, eine schnell und teuer, die andere nicht so schnell, dafür aber eine billige Standleitung. Für bestimmte Dienste willst du die schnelle Verbindung nutzen, für den Rest die andere.

22.10.2014 - 23:00 Uhr

Dann wäre hier noch die Frage zu klären, ob der Verwender dieser DLL das .NET Framework installiert haben muss oder nicht.

Ja. Das war einfach zu beantworten 😉

Die andere Frage zu beantworten würde ich mich jetzt nicht trauen, habe schon seit Jahren nicht mehr mit .NET programmiert. Ich kann mich dunkel erinnern, dass ich sowas schon mal gemacht habe, dürfte jetzt aber schon 7-8 Jahre her sein. Ich vermute, dass du Application.Run irgendwo aufrufen müssen wirst. Probiers am besten mal aus.

30.09.2014 - 23:16 Uhr

je mehr sich das Laufzeitverhalten durch das Logging ändert, desto eher findet man Race-Conditions, die ohne Logging verborgen geblieben wären. 😃

Der Klassiker ist natürlich beim Kunden treten Race-Conditions auf, man aktiviert das Logging und sie treten nicht mehr auf.

Ich muss sagen, zumindest gefühlt ist das auch der Fall, der viel häufiger auftritt. Wir haben auch öfter mal Timing Probleme. Kaum versucht man das irgendwie einzugrenzen und baut paar zusätzliche Logausgaben ein, schon lässt sich das Problem nicht mehr nachvollziehen.

22.09.2014 - 21:38 Uhr

Wenn man jeden Methoden Ein- und Ausgang logt, gehe ich ganz stark davon aus, dass Clean-Code Principles , UnitTests und Code-Reviews absolute Fremdbegriffe sind, da wäre man mit Refactorings und Schulungen besser dran, als nachträgliche Flickschusterei und Schuldzuweisungen über Loggings

Ich meinte übrigens nicht, dass wir jede Methode loggen. Das geht eh nicht, da gibts auch viel zu viele Low Level Methoden, bei denen es auf Performance ankommt und man mit den Daten eh nichts anfangen könnte (z.B. Featureerkennung in Meshes, was will man da großartig loggen?). Aber der grundsätzliche Abflauf wird schon geloggt, so in der Art, habe vom System eine Datei bekommen, ist eine STEP Datei -> Variante 1, Features sind schon drin. STL Datei bekommen -> Variante 2, Features müssen erkannt werden. Bei Variante 2 Mesh schaut kaputt aus -> Untervariante: versuchen Mesh zu reparieren. Dann gehts z.B. irgendwo weiter und man muss irgendwas mit Daten aus SAP anreichern, dann wird es auch geloggt und hier dann vielleicht auch die Daten selber, die man bekommen hat.
Wie der Code bei Leuten ausschaut, die jede Methode loggen, weiß ich nicht, aber grundsätzlich finde ich Ablauflogging schon wichtig und das auch nichts mit Unit Tests oder Reviews zu tun. Das sind keine "Fehler". Das sind hochkomplexe Prozesse, die unmöglich grundsätzlich absolut "fehlerfrei" laufen können. Fehler hab ich absichtlich in Anführungszeichen geschrieben, weil es müssen keine Fehler in der Software oder im Prozess sein. Das Endergebnis mag vielleicht in einigen Punkten von den Erwartungen abweichen. Und es muss auch nicht gleich um Schuldzuweisungen gehen, sondern vielleicht darum, auf Probleme aufmerksam zu machen und die zu beheben. Wenn die Normierungsstelle etwas falsch einträgt und das erst dem Ingenieur auffällt, ist es vielleicht nicht uninteressant zu wissen, wo die falschen Daten herkamen. Oder könnte sein, dass wir z.B. ein CAD Modell erzeugen, dass irgenwelche Quaitätsnormen (VDA usw.) nicht erfüllt. Kann auch viele Gründe haben, warum das Modell so erzeugt wurde.

20.09.2014 - 16:43 Uhr

Es ist nicht so wirklich klar, was du genau willst, deswegen ist auch nicht so wirklich klar, ob das was du dir vorstellst, sinnvoll ist.
500-8000 Benutzer hört sich erstmal nach sehr wenig an, warum gehst du nicht von mehreren hundert tausend aus? Vielleicht ist es bei dem Spiel, an das du denkst, eine sinnvolle Größe, vielleicht hast du die Obergrenze aber auch willkürlich viel zu niedrig gewählt.
Was sind langlaufende Berechnungen und warum denkst du hier gerade an Cron Jobs? Ist auch alles überhaupt nicht klar. Vielleicht lohnt es sich hier eher (je nach Spiel) etwas Aufwand in ausgefeiltere Schedulingalgorithmen reinzustecken, damit nicht so viele und nicht so komplizierte Berechnungen anfallen.
Warum denkst du jetzt grad an Verschlüsselung und erst recht Kryptographie? Das hört sich erstmal so an, als ob du das selber implementieren wollen würdest, was immer eine schlechte Idee ist. Es ist besser, Standardprodukte zu nutzen und da brauchst du dir jetzt auch noch nicht so wahnsinnig viele Gedanken drüber machen. Auch bei SSL gibts paar Punkte, die man beachten sollte, aber das ist nur ein Nebenaspekt, der im Moment eigentlich überhaupt keine Rolle spielt. Das Schreiben des Spiels ist eine Sache, und wie das später gehostet wird eine ganz andere.
Mir scheint deine Technologieauswahl sehr plattformspezifisch zu sein. Es kann völlig in Ordnung sein, sich nur auf die Microsoftplattform zu beschränken, kommt aber auch wieder drauf an, was du willst. Und was genau meinst du mit XAML? Silverlight? Das ist ziemlich tot und damit schränkst du deinen potenziellen Nutzerkreis noch viel stärker ein.
Die Datenbank sollte nach Möglichkeit austauschbar sein. Beim SQL Server musst du beachten, dass die kostenlose Express Version auf 10GB bechränkt ist und wahrscheinlich auch nicht wirklich skalierbar ist (der Aspekt hat mich bisher nie interessiert, aber für ein Browserspiel ist das schon wichtig). Und wie Palin geschrieben hat, könnte eine NoSql Datenbank durchaus sinnvoll sein. Ist aber auch wieder Geschmackssache.

15.09.2014 - 21:08 Uhr

Zum einen habe ich echt kein Problem mit modalen Dialogen und habe auch noch nie irgendwas gehört, dass sich jemand beschwert hätte. Wir haben z.B. teilweise viel größere Usability Probleme 😉 Und eigentlich mag auch ja auch niemand diese Eigenentwicklungen, die sich nicht an den Standard halten. Bei Star Office hat ja auch jeder über die komischen Dateidialoge geschimpft. Da finden sich Beispiele ohne Ende.

Zum anderen sehe ich den Mehraufwand schon. Man muss sich an zig Stellen überlegen, was alles passieren könnte, wenn irgendwelche Dialoge nicht modal sind. Das muss man sich jedes mal im Detail anschauen und dann kommt später doch jemand, erweitert oder ändert irgendwas und schon hat man ein verstecktes Problem.
Und dann gibts auch noch technische Probleme. Wir haben auch eine Komponente, die man in NX integrieren kann. NX hat praktisch keine modalen Fenster. Deren GUI Api können wir aber auch nicht ohne weiteres benutzen. Wir haben natürlich schon hunderte eigene Fenster, die weitere Fenster aufmachen können usw. Das alles irgendwie so zu verpacken, dass beim Erzeugen von einem Fenster alles in ein "NX Fenster" verpackt wird, würde technisch vielleicht irgendwie gehen, wär aber sehr viel Aufwand und wahrscheinlich auch mit zig Problemen verbunden, die jetzt noch nicht abzusehen wären. Jedenfalls hatten wir Riesenprobleme mit den nicht modalen Dialogen. Wir machen z.B. ein Standard Datei Öffnen Dialog auf, man verklickt sich, das Fenster verschwindet im Hintergrund, die anderen Fenster sind deaktiviert und den Dialog kriegt man auch nicht mehr in den Vordergrund. Oder man macht irgendein Fenster auf, kann aber NX beenden, ohne das Fenster explizit zuzumachen. Dann entlädt NX zuerst die Plugins (auch uns) und zerstört dann die Fenster oder irgendwie so. Komische Abstürze ohne Ende.

11.09.2014 - 18:41 Uhr

Fehler sind nicht unbedingt Exceptions und die haben sowieso wenig mit dem Logging zu tun. Ich bin C++ Entwickler und wir verwenden in unserer Software überhaupt keine Exceptions.
Komplette Abläufe zu loggen finde ich wichtig. Wir können z.B. parametrische 3D Modelle für verschiedene CAD Systeme generieren und in verschiedene PDM Systeme einchecken und dabei mit Daten aus verschiedenen Datenquellen, z.B. anderen PDM Systemen oder SAP anreichern. Das sind komplexe Abläufe mit dutzenden unabhängiger Komponenten, die vielleicht Stunden dauern können. Dabei kann es sehr viele Sonderfälle geben und die Fehler sind auch öfter mal nicht reproduzierbar. Nicht alle Komponenten sind von uns, einige werden von Partnern oder Consultants oder den Kunden selbst geschrieben. Für viele Schitte gibt es verschiedene Möglichkeiten und Fallbacks. Wenn am Ende etwas rauskommt, was vielleicht nicht ganz richtig ist, kann es sehr viele Ursachen haben. Da ist es schon wichtig, wenn man ins Log schauen und genau nachvollziehen kann, was eigentlich passiert ist. Und ich meine dabei nicht mal, dass der Einstieg und der Ausstieg jeder Methode protokolliert wird, das wär zu viel und zu uninteressant. Aber die einzelnen Komponenten protokollieren schon ziemlich genau, was sie machen.
Nachweisen zu können, dass ein Fehler beim Kunden liegt, ist oft auch erstaunlich wichtig. Unsere Hauptzielgruppe sind größere Konzerne und die treten kleineren Zulieferern gegenüber oft gleich ziemlich aggressiv auf, wenn sie bei denen einen Fehler vermuten. Da kann es auch um hohe Schadensersatzforderungen gehen. Da ist es wichtig, wenn man in Log sieht, dass die falschen Daten von einem Kundenscript falsch berechnet wurden und nicht von uns.

11.08.2014 - 21:14 Uhr

Mir ist das Konstrukt, einen IIS hinter einem Apache zu verstecken noch nie untergekommen. Das einzige was ich mir vorstellen könnte wäre eben auch, dass man einfach kein Windows auf den Servern haben will. Wir haben z.B. Solaris Server und hätten wenig Lust, da so eine Windows Kiste ins Netz zu stellen. Wenn das ganze Konzept auf Linux/Unix eingestellt ist und die Admins sich da auskennen, dann kann es schon sein, dass man einen Unix Server mit Apache als Reverse Proxy besser absichern kann, als ein Windows mit dem sich keiner auskennt.
Außerdem gibts die meiste Malware halt für Windows. Aber ob das durch einen vorgeschalteten Apache besser wird, weiß ich nicht. Wenn deine Anwendung irgendwelche Lücken hat, durch die man das ganze System übernehmen kann (sollte eigentlich relativ unwahrscheinlich sein), dann wird der Apache den Angriff halt auch durchschleusen und dann wäre der Windows Server genauso infiziert.

Langsamer wird das ganze allein schon durch die erhöhte Latenz, allerdings sollte die sich in einem LAN in Grenzen halten.

08.07.2014 - 19:59 Uhr

Ich sehe hier auch den Vorteil einer objektorientierten Datenbank nicht. Ich kenne mich mit den "üblichen" Angaben von Nahrungsmitteln nicht so aus, aber zumindest das was du genannt hast, schaut nach einem ziemlich flachen Schema aus. Ich würde die Vorteile objektorientierter Datenbanken eher bei komplexeren Objekthierarchien sehen.
Ich habe db4o bisher nur einmal ausprobiert. Ich hatte den Fall, dass ich Objekte mit Listen von polymorphen Unterobjekten speichern wollte. Also, ein Objekt hatte eine Liste mit Objekten, die eine Schnittstelle implementieren, und diese Objekte konnten jeweils völlig unterschiedliche weiter Eigenschaften haben. Für sowas ist eine relationale Datenbank nicht optimal geeignet. Mit db4o war die Performance wesentlich besser und der Code war auch einfacher. Bei deinem Beispiel seh ich den Vorteil wie gesagt nicht.

03.07.2014 - 20:34 Uhr

Nein. Das Thema "was ist besser" ist einfach sinnfrei. Das ist wie C# vs Python, oder Java vs. F#. Ich sag mit Absicht nicht Java vs. C#, weil PHP keine "Business-Konkurrenz" für C# darstellt.

Ich wollte doch nie darauf hinaus, was besser oder schlechter ist. Ich selber würde jederzeit unterschreiben, dass ASP.NET besser ist, als PHP. Ich wollte nur einen Neueinsteiger darauf hinweisen, dass er evlt. aufpassen sollte, dass er nicht gleich etwas sehr umfangreiches und komplexes lernt, was er evtl. nie brauchen wird. In der IT gibt es einfach sehr viele verschiedene Nischen und .NET ist nur eine davon. Wenn man hier im Forum verkehrt, merkt man das vielleicht nicht unbedingt.

"professionell" in Anführungszeichen war nicht abwertend gemeint. Ich wollte nur das professionell als Spezialisierung betonen, weil mit Webentwicklung kommt wohl jeder Entwickler irgendwann in Berührung.

02.07.2014 - 23:48 Uhr

@Abt: ich seh keinen Widerspruch zu dem, was ich geschrieben habe. Ich mag PHP auch selber nicht, und dass ein wirklich guter ASP.NET Entwickler wahrscheinlich viel mehr ein durchschnittlicher PHP Entwickler verdienen kann ist auch keine Überraschung. Trotzdem, deine "95%" im professionellen Bereich heißen ja auch nur, dass es im Hobby Bereich fast keiner verwendet, und nicht, dass es viele im professionellen Bereich verwenden. Aus meiner eigenen Erfahrung kann ich sagen, dass es keine so große Verbreitung hat. Es wird überhaupt erst in Betracht gezogen, wenn die Firma .NET macht. Bei allen anderen Firmen, und das sind weiß Gott nicht wenige, spielt es überhaupt keine Rolle. Und will man überhaupt ein "professioneller" Webentwickler werden? Ich wollte es ganz sicher nie. Aber so ein bisschen hat man immer wieder mal mit Webzeugs zu tun, nur ist es dann eher PHP, bei mir war noch viel Perl dabei. Im professionellen Bereich dann Java
Ich denke, du bist als wirklich professioneller ASP.NET Entwickler sehr parteiisch. Ich arbeite nicht (mehr) im .NET Umfeld und da wird es höchstens als irrelevantes Nischenprodukt zur Kenntnis genommen, wenn überhaupt. Ich bleibe absolut dabei, wenn man nicht weiß, dass man es brauchen wird, würde es mir nicht antun.

Das sollte es jetzt auch sein bzgl. ASP / PHP / sinnvoll oder nicht.

Finde ich ehrlich gesagt etwas anmaßend von dir, unbedingt das letzte Wort haben zu wollen. Warum auch? Geht es nicht genau darum in diesem Thread?

02.07.2014 - 20:54 Uhr

ich werde mich asp.net mal genau anschauen 😃

Ich will dich nicht davon abhalten, aber ich möchte nochmal erwähnen, dass ASP.NET nur bedingt relevant ist. Webentwicklung ist eine eigene Welt und da gibts sehr viele verschiedene Technologien, einige davon sind ziemlich allgemein und spielen bei so ziemlich jeder Plattform eine Rolle, wie JavaScript oder AJAX, andere sind schon sehr speziell, z.B. ASP.NET oder J2EE. Wenn dich ASP.NET interessiert, schaus dir an. Aber wenns dich nicht wirklich interessiert, kannst es dir auch sparen. Das ist schon sehr umfangreich und sich da im Detail auszukennen ist nicht ohne. Und ob das später jemals brauchen wirst, ist fraglich. Ich habs z.B. noch nie gebraucht und werds sehr wahrscheinlich auch nie brauchen. Ich würde eher mit PHP anfangen. Die Wahrscheinlichkeit, später irgendwo damit in Berührung zu kommen ist viel größer als bei ASP.NET und PHP ist auch einfacher. Musst nur aufpassen, weil die Sprache erstmal zu schlechtem Code verleitet 😉

08.06.2014 - 16:58 Uhr

Eigentlich ist es mehr oder weniger egal, VS ist VS. Das Problem von Express ist, dass es keine Plugins unterstützt. Wir programmieren in der Arbeit C++ und da ist Visual Assist sehr praktisch. Außerdem noch das Qt Plugin und paar selbstgeschriebene.
Die teureren Versionen braucht man meiner Meinung nach so gut wie nie, außer man benutzt den Team Foundation Server (auf den man meiner Meinung nach wiederum gut verzichten kann).