Laden...

Forenbeiträge von Coder007 Ingesamt 1.214 Beiträge

21.02.2022 - 22:45 Uhr

aber zu Software Architektur Modellen findet man deutlich weniger.

Das ist nicht ganz richtig... Man findet schon durchaus einiges, auch etwas was man in vielen Bereichen wiederverwenden kann. Es ist aber auch so, dass man im Bereich Enterprise Software viel mehr findet. Das ist wohl einfach etwas, womit sich sehr viele Entwickler beschäftigen, und wo es schon ziemlich viele etablierte/dokumentierte Architekturen gibt. Die meisten anderen Bereiche sind schon viel spezieller. Wenn du z.B. ein spezialisiertes CAD System schreiben musst, ist das vermutlich ein Thema, das nicht Millionen von Entwicklern interessiert, da findet man viel weniger. Aber ein bisschen was findet man schon.
Mich haben solche Fragen vor allem im Studium auch sehr stark beschäftigt. Und die Antwort ist wohl einfach Erfahrung, möglichst viel davon. Man kann oft auch einfacher sagen, warum eine Software schlecht ist, als warum sie gut ist.
Ich bin C++ Entwickler, da findet man noch weniger vorgefertige Architekturen. Ich schau z.B. gern öfter mal Videos von der cppcon und ähnlichen Veranstaltungen (wobei ich da mittlerweile auch wenig neues entdecken kann). Da finde ich sicher nicht DIE Idee, wie ich eine bestimmte Software angehe. Aber viele kleine Ideen, wie man etwas verbessern oder eleganter lösen könnte. Und das kann sich durchaus zu einem Gesamtbild zusammensetzen.

08.01.2022 - 16:41 Uhr

Honda hat wohl ein ähnliches Problem:

Y2K22-Fehler

Das dürfte in nächster Zeit noch häufger auffallen.

03.01.2021 - 17:54 Uhr

Du hattest explizit das 13er XPS aussen vor genommen. Hat das keine Probleme mit der Wärmeentwicklung?

Ich nutze beruflich den XPS 15 und bin sehr zufrieden damit.

Bzgl. Linux für Entwickler, ich schätze die Kritik kommt jetzt ehr in Bezug auf .NET/Windows Entwicklung. Allgemein kann ich das nicht bestätigen. Ich war auch schon in Unternehmen die fast ausschließlich Linux Systeme für ihre Entwickler zur Verfügung stellten und damit sehr gute Erfahrungen gemacht haben. Alles eine Frage der Angewohnheit.

Es ist zum Teil auf jeden Fall eine Frage der Gewohnheit...
Ich habe im Studium jahrelang Linux als Hauptsystem verwendet (auf dem Laptop) und in einer Linux-Firma gearbeitet.
Zur Zeit habe ich das als Zweitsystem drauf, benutze das aber kaum. Und ich bin hauptsächlich C++ Entwickler, privat und beruflich.

Man sollte sich die Frage stellen, ob und warum man unbedingt auf Linux auf dem Arbeitsplatzsystem umsteigen will.
Wenn man die ganzen ideologischen Gründe usw. weglässt... Ich komme damit gut zurecht und mag das System auch. Es ist offen und flexibel und man kann mit Bordmitteln vieles anstellen, was unter Windows so ohne weiteres nicht gehen würde, und wofür man etwas zusätzliches bräuchte.

Warum benutze ich das trotzdem kaum?

  • Ich mag VS
  • Ich spiele auch öfter mal
  • Ich verwende immer wieder auch etliche andere Programme, die es unter Linux nicht (oder nicht in der entsprechenden Qualität) gibt
  • Und: eigentlich will ich meist gar nichts mit dem System machen. Linux zwingt oder verleitet mich zumindest sehr oft dazu, mich intensiver mit irgendwas zu beschäftigen, und etwas zu basteln. Das ist super, wenn man das will. Das war genau das, was ich im Studium wollte. Aber seitdem haben sich meine Interessen spezialisiert und verlagert, deswegen habe ich da kaum noch Lust drauf.

D.h. für mich lohnt sich das nicht, und Windows tut einfach unauffällig seinen Dienst und mehr brauche ich zur Zeit auch nicht.

MacOs würde für mich sowieso auf keinen Fall in Frage kommen.

20.10.2020 - 16:53 Uhr

Ich weiß, dumme Frage

Ähm... Ja?

Was genau ist die Frage? Du kannst z.B. völlig trivial eine jar erstellen, die man per Doppelklick starten kann. Wenn das deine Frage beantwortet. Gibts seit Java 1.1.

Und man findet auch problemlos Tools, die das in eine exe verpacken können, wenn einem das lieber ist.

Und davon abgesehen - Java hat hauptsächlich ganz andere Anwendungsgebiete, als etwas, wo man eine "ausführbare Assembly" braucht.

19.10.2020 - 16:18 Uhr

Ich weiß es nicht, ich will es eigenltich auch nicht raten. Gehe aber nicht davon aus.

Was mir erstmal auffällt, ist dass der Artikel überhaupt keinen guten Eindruck macht. Und was ich eigentlich sagen wollte, grad im Java Umfeld gibt es in den letzten Jahren durchaus einige Probleme. Die Frage, ob Java nicht ausstirbt, habe ich in den letzten paar Jahren schon sehr oft gehört.

27.05.2020 - 20:13 Uhr

wenn im Hintergrund sind die Compiler-Typen von Java auch nichts anderes, als bei C# (vermute ich zumindest)

Nein... Ich bin hauptsächlich C++ Entwickler und ziemlich Performance-fixiert, habe aber auch ein größeres Java-Unterprojekt (wegen Lucene, ist aber sehr viel darauf aufgebaut). Und die fehlenden Wertetypen in Java sind ein Riesenproblem, da kann auch der "Compiler" nichts optimieren.

21.05.2020 - 17:20 Uhr

@gfoidl: ich muss mich ehrlich wundern, dass der Compiler dass nicht sowieso optimieren kann. Gibt es konkrete Gründe, die das verhindern?

18.02.2020 - 21:48 Uhr

Ich finde auch, dass der Begriff "Big Data" viel zu allgemein ist.

Um mal ein Beispiel zu nennen, das wahrscheinlich in eine etwas andere Richtung geht, als das, woran du denkst.
Wir beschäftigen uns mit CAD Daten und Geometrien. Wir reden jetzt selber nicht von Big Data, und da wird die Komplexität nicht in Petabytes gemessen, aber die Anforderungen gehen durchaus in die gleiche Richtung. Die Verarbeitung und Auswertung ist komplex, kann z.B. bei einem Kunden durchaus Wochen dauern. Das ist auch nichts, wo wir einfach so beliebig viel Hardware bekommen, das ist es dem Kunden meist auch nicht wert, muss sich alles in Grenzen halten.
Optimieren wir seit Jahren und Jahrzehnten dran. Es werden immer mehr Daten und Anforderungen, die Hardware und vor allem der Code wird immer schneller, hält sich also mehr oder weniger die Waage (wir sind besser dran als vor Jahren).

Wir arbeiten hauptsächlich mit C++, also nichts Scala oder Python. Und keins der Bücher über "Big Data" würde uns weiterhelfen.

Also, was man in der Industrie alles braucht, kann sehr sehr unterschiedlich ausfallen.

01.12.2019 - 17:25 Uhr

Ich möchte mal zwei Punkte aus eigener Erfahrung anbringen.

  1. Was mich hier seinerzeit weitergebracht hatte, waren tatsächlich Designpatterns. Ich hatte Delphi programmiert, OOP "verstanden", aber den Nutzen nicht erkannt, deswegen zu 90% prozedural programmiert. Erst als ich das Design Patterns Buch von der GoF gelesen habe, habe ich mir öfter gedacht, cool, so hätte ich das auch machen können. Und dann hätte das auch plötzlich Sinn ergeben, von vornherein Klassen zu haben, und nicht Listen von Structs.
  2. Du schreibst, dass das was du findest, sich nicht direkt auf dein Problem anwenden lässt. Das ist zwar sehr oft richtig, und du musst vor allem lernen zu abstrahieren. Aber auch hier habe ich die Erfahrung gemacht, dass man für erstaunlich viele Probleme tatsächlich fertige Lösungen findet, evtl. muss man dafür nur umdenken und seinen Code umstrukturieren. Nur als Beispiel, ich hatte an etwas gebastelt, bei dem ich Undo/Redo haben wollte und hätt nie gedacht, dass ich dafür etwas finde, ist doch etwas sehr spezielles, wie das bei mir aufgebaut ist (Google war damals noch fast ein Geheimtipp, so leicht ist man nicht an Informationen gekommen). Ich war dann recht erstaunt, dass es dafür ganz einfache Patterns gibt, die auch bei mir problemlos funktioniert hätten.
24.09.2019 - 20:36 Uhr

sprich ich bin mir nicht sicher, ob ich irgendwelche "speziellen" Methoden anwenden soll, wie Factory Method, Dependency Injection o.Ä. .. also wann es Sinn macht bestimmte Konzepte zu implementieren...

Ich finde, das sind in dem Sinne nicht-funktionale Anforderungen. Also, eigentlich hätte ich sie schon als funktionale Anforderungen eingestuft, aber es geht aus der Spezifikation einfach nicht hervor. Von dem her kann man das so interpretieren, dass das völlig egal ist, so lange die dargestellte Funktionalität erfüllt ist.

Aber in einem richtigen System würde es von vielen weiteren Faktoren abhängen. Wir haben bei uns z.B. auch ein recht zentrales "Pipeline" System. Das ist zwar wahrscheinlich ziemlich anders, als das was von dir gefordert ist, dürfte aber prinzipiell auch eine gewisse Ähnlichkeit aufweisen.
Und sehr vieles ergibt sich da eben aus den Anforderungen und der Umgebung. Wir arbeiten z.B. mit C++, d.h. da geht man schon mal oft anders vor, als in C# oder Java, z.B. bei der Frage nach der Factory. Und das ist bei uns schon eine wichtige Frage, die mit vielen anderen Faktoren zusammenhängt.
Auch wie die Pipeline auszuführen ist, geht aus deinem Diagramm nicht hervor. Das ist bei uns z.B. auch eine ganze Menge Code, der sich in den letzten Jahren massiv weiterentwickelt hat, und wo wir viel gelernt haben. Oder wie der Datenaustausch zwischen den Knoten ausschaut.

Da kommen in einer richtigen Software einfach noch sehr viel mehr Fragen auf, die die Designentscheidungen dann massiv beeinflußen.

03.08.2019 - 19:06 Uhr

Es ist auch gar nicht so einfach, diese Informationen zu vermitteln, wenn man sich auskennt, das ist auch eine Kunst für sich. Bei uns brauchen neue Mitarbeiter auch immer eine ganze Weile um reinzukommen.
Produktiv mitarbeiten geht schnell, aber die komplexeren Projekte näher am Kern brauchen ihre Zeit. Riesige Software, über Jahrzehnte gewachsen, sehr viele Use Cases und Workflows. Muss man einfach mit der Zeit lernen, was es so für Abhängigkeiten und Anforderungen gibt.

16.01.2019 - 21:07 Uhr

Muss aber an dieser Stelle noch sagen, dass das Debuggen im späteren Verlauf meines Studiums vorkommt. ^^

Mich würde es ehrlich gesagt überraschen, wenn im Studium Debuggen drankommen würde. Würde wahrscheinlich auch nicht viel davon halten. Das ist viel eher etwas, was du dir im Studium eben selber beibringen musst, weil du eben merkst, dass/wozu du das brauchst und entsprechend motiviert bist. Da wird dich aber ziemlich sicher niemand an die Hand nehmen.

06.12.2018 - 20:18 Uhr

Es gab schon etliche "Berichte", dass Microsoft die Edge-Engine durch Chromium ersetzen will. Das lese ich hier nicht raus, da steht erstmal nur, dass sie das kompatibler machen wollen. Oder hab ich da jetzt was übersehen?

04.12.2018 - 20:16 Uhr

Ich hatte das irgendwann mal benutzt, um Undo/Redo zu implementieren. Weiß nicht mehr, wie das genau funktioniert hat. Es gab Command Klassen, die etwas gemacht hatten, und dann hatte ich sowas wie State Objekte per AOP dran gebunden.
Hat funktioniert, wär aber nicht nötig gewesen. Kann ich jetzt nicht mehr einschätzen, ob ich das heute noch "sauber" finden würde. Das war eine Mischung aus "ich will mal was mit AOP machen" und "keine Lust, so viel Boilerplate zu schreiben".

04.12.2018 - 20:13 Uhr

C++ und Qt standen damals zur Diskussion bei uns – das wäre sicher auch eine sehr gute Alternative gewesen; aber rückblickend ist es immer einfacher...

Das hat sich tatsächlich als ziemlich stabil herausgestellt... Unsere Software wird seit über 25 Jahren in C++ entwickelt. Qt nicht ganz so lang, aber das ist nur Frontend, nicht soo relevant bezogen auf die riesige Codebasis. Lange bevor es .NET gab und völlig unbeeindruckt von den ganz Änderungen im .NET Umfeld. Mit C++11, 14 und 17 gabs Modernisierungen, die wir gerne angenommen haben und im neuen Code gerne benutzen, aber das ist alles freiwillig und (fast) komplett abwärtskombatibel. Ich finde immer wieder noch Code aus den 90ern, der immer noch stabil läuft und seitdem nicht angefasst wurde.

14.11.2018 - 20:04 Uhr

gfoidl hat das schon sehr gut beschrieben, ich möchte nur noch 1-2 Kleinigkeiten ergänzen:

  • Wenn es um sehr große Datenmengen geht, z.B. Milliarden von Messwerten, können 2 Byte (bzw. die Hälfte) schon sehr viel ausmachen. z.B., ob die Daten überhaupt in den Arbeitsspeicher passen, bzw. wieviel in den Arbeitsspeicher passen
  • Für die Performance ist Cachelokalität sehr wichtig. Die CPU ist sehr schnell, der Arbeitsspeicher im Vergleich dazu sehr langsam. Je mehr wichtige Daten in die Caches passen (und die CPU nicht auf den Arbeitsspeicher warten muss), desto besser. Je nach Anwendungsfall macht es Größenordnungen aus und kann u.U. viele Nachteile aufwiegen.
11.11.2018 - 18:08 Uhr

Wie gesagt, versteh mich nicht falsch. Das war nicht als Kritik gemeint.
Aber du hast selber geschrieben, dass du dir noch nicht sicher bist, ob dir das liegt, und ich sag dir, du hast noch nichts gemacht, was irgendjemandem liegen würde 😉 Lass dich daher noch nicht demotivieren.

Konsolenapplikation ist in Ordnung. Es ist eigentlich sogar besser, als etwas mit GUI zu programmieren, das lenkt hauptsächlich ab. Ich hatte schon seit Jahren kaum irgendwas mit GUI Programmierung zu tun. Entweder schreibe ist Services, oder ich schreibe etwas am "Kern" und andere machen dann GUI dafür (das ist natürlich schwieriger, wenn man alleine arbeitet). Jedenfalls ist es wichtig gleich zu lernen, Darstellung von der Logik zu trennen.

11.11.2018 - 17:16 Uhr

Du musst ein Projekt finden, das dir persönlich Spass macht. Und du musst dann versuchen, das möglichst schön zu machen und auszubauen.

Wenn ich mir dein Programm anschaue... Da ist nur WriteLine und ein switch-case. Versteh mich nicht falsch, aber das würde niemandem liegen oder Spass machen 😉 Du hast einfach noch nicht die Aufgaben entdeckt, die einen tatsächlich motivieren können.

10.11.2018 - 17:09 Uhr

Hattet ihr auch solche Phasen wie: ,,Verstehe ich gerade nicht!". Manchmal zebreche ich mir beim lernen den Kopf. Dann nach Stunden oder Tage kommt mir dann ein Geistesblitz und denke mir: ,,aha, so geht das!".

Jein... Ich hatte mich die ersten Jahre auf das konzentriert, was ich verstanden habe und was mir leichtgefallen ist. Ich hatte mit Delphi angefangen und dann gleich mit größeren Projekten (die ich mir selber ausgesucht hatte) und mich immer weiter vertieft und hatte mich dann jeden Tag stundenlang mit den Projekten beschäftigt. Das war genau das, was mich interessiert und mir Spass gemacht hat.
Aber wenn ich mir damals nebenbei C oder C++ angeschaut habe, hatte ich nicht wirklich verstanden. Habs dann aber einfach ignoriert. Als ich das dann Jahre später gebraucht habe, war es dann überhaupt kein Problem mehr. Zum einen hatte ich da schon viel Erfahrung, zum anderen hatte ich es mir dann eben deswegen angeschaut, weil ich es dann konkret gebraucht und einsetzen konnte.

03.10.2018 - 17:17 Uhr

Ich denke, das war ganz gut erklärt, danke!
Werds auf jeden Fall im Hinterkopf behalten.

02.10.2018 - 19:56 Uhr

Könntest du vielleicht noch 1-2 Fotos machen?

Ich hab meine "geprellten" Mäuse nicht weggeschmießen, müsste noch 3-4 rumliegen haben, vielleicht probier ich das irgendwann aus, wenn ich mal nichts zu tun habe.

30.08.2018 - 18:15 Uhr

Du musst wohl die DoDragDrop Funktion hooken. Wenn ich das richtig sehe, ist es nicht direkt vorgesehen, müsste man also mit den üblichen WinApi Hooking Methoden machen.

23.07.2018 - 20:08 Uhr

Dein Link funktioniert nicht.
Was heißt überhaupt "erweitern"?

07.05.2018 - 19:58 Uhr

Für ein Qualitätsmanagement, halte ich Subjektive Kriterien nicht wirklich geeignet.
Was du mit deiner Software machen könntest ging eher in Richtung Marktforschung.

Das ist nicht ganz ungewöhnlich in dem Bereich. Sowas habe ich schon gesehen. Man hat Checklisten, die von einer Software verwaltet werden, und macht dann Stichproben (das ist auch in der Checkliste hinterlegt, z.B. 100 Teile auf Merkmal X testen, 50 Teile auf Merkmal Y). Und dadrüber gibts dann Reports und Auswertungen.

05.05.2018 - 18:37 Uhr

Leider komme ich eher aus der "Maschinenbauecke" und kann nur ein wenig C-Programmierung. Im Zuge der Digitalisierung kommt man auch als Maschinenbauer nicht mehr um die Programmierung herum

Sorry wenn das etwas offtopic ist, aber ich finde diese Aussage einfach etwas zu gewagt. Wir sind Softwareentwickler im Maschinenbau Bereich. Bei uns sind dutzende Entwickler seit Jahrzenten dabei, ziemlich komplexe Software zu entwickeln. Bei dir hört sich das hingegen so an, als ob ab sofort Maschinenbauer einfach so mal nebenbei selber die Software schreiben würden.

Deine eigentliche Frage hingegen ist sehr allgemein... Was hast du denn überhaupt für konkrete Probleme, was ist dein Kenntnisstand, was hast du dir schon für Gedanken gemacht?

19.04.2018 - 19:30 Uhr

Mich beschleicht das Gefühl dass dies entweder gar nicht (mehr) funktioniert oder ich etwas grundsätzlich falsch mache..

Grundsätzlich müsste das schon funktionieren. Hab ich jetzt seit Monaten nicht mehr ausprobiert, aber hier meine launch.json, mit der das ging. Ich meine, ich hätte damals auch gesucht, und das war eine der Einstellungen, die so aussieht, als ob man sie nicht brauchen würde.

{
    "version": "0.2.0",
    "configurations": [

        {
            "type": "chrome",
            "request": "launch",
            "name": "Launch Chrome against localhost",
            "url": "http://localhost:4200/",
            "webRoot": "${workspaceRoot}/src",
            "sourceMaps": true,
            "userDataDir": "${workspaceRoot}/.vscode/chrome",
            "sourceMapPathOverrides": {
                "webpack:///C:*":"C:/*"
            }
        },
        {
            "type": "chrome",
            "request": "attach",
            "name": "Attach to Chrome",
            "port": 9222,
            "webRoot": "${workspaceRoot}",
            "sourceMaps": true
        }
    ]
}

08.03.2018 - 20:36 Uhr

Egal ob Studium oder Ausbildung: in der Wirtschaft zählt das Wissen.
Bei den großen Firmen leider weniger als bei den kleinen - aber ich kenne genug Azubis, die viel weiter sind als Studenten, was das Fachwissen angeht.

Kann ich zumindest in Bezug auf meine Firma nicht bestätigen (wobei die jetzt auch nicht so klein ist und auch mehrere Niederlassungen hat). Bei uns wird einfach versucht, die Gehälter möglichst zu drücken, und wenn jemand "nur" ein Fachinformatiker ist, dann ist das ein Super Argument, um sein Gehalt zu drücken. Und dabei wird seit Jahren auch völlig ignoriert, dass viele unserer Fachinformatiker ausgezeichnete Entwickler mit sehr viel Erfahrung und Fachkenntnissen sind, die viel wertvoller für die Firma sind, als irgendein Frischling von der Uni, der gleich mehr bekommt.

07.03.2018 - 20:06 Uhr

Nun könnte man die Frage stellen, ob wir überdurchschnittlich gut oder Ihr überdurchschnittlich schlecht bezahlt 😉

Bist du aus München, oder wie war das wir gemeint?
In München würden mich solche Gehälter nicht überraschen. Ich komm aus einer größeren Stadt in Bayern und ich weiß, dass man in München und vor allem in größeren Firmen deutlich mehr verdienen könnte. Allerdings sind die Lebenshaltungskosten deutlich höher, von dem her schätze ich zumindest mein Gehalt im Vergleich dazu als sehr gut ein.
LaTino hat ja von einem Admin nach seiner Ausbildung geschrieben, also auch wieder FI.

p.s.

Zum Thema zurück: wer's wegen des Geldes macht, wird a) nicht glücklich und b) nicht reich.

Darum gings auch nicht. Was ich ursprünglich damit sagen wollte war, dass man damit evtl. unnötig Chancen vergibt. Vieler meiner jetzigen FI-Kollegen, die kaum was anderes machen wie ich, verdienen auch nach 10 Jahren deutlich weniger als das, was ich als Einstiegsgehalt hatte. Und wenn das einem von vornherein klar ist, dann würde man das denke ich eher nicht mitmachen.

19.01.2018 - 20:43 Uhr

Ich wollte eher damit ausdrücken, dass man bei Ämtern nicht immer die Hilfe bekommt die man wirklich
braucht und eben auch manchmal Halbwahrheiten zu hören bekommt. Ich weiß nicht wie es euch erging.

Ich hatte mich nach dem Studium kurz arbeitslos gemeldet. Und meinen jetzigen Job (da arbeite ich jetzt seit sieben Jahren) hatte ich tatsächlich von der Arbeitsagentur vermittelt bekommen.
Grundsätzlich hatte ich aber den Eindruck, dass sie sehr, sehr wenig Ahnung haben. Erst musste ich irgendeinen Fragebogen ausfüllen, wie gut ich mich mit irgendwelchen Sachen auskenne, die keinen interessieren. Das bekannteste davon war noch Cobol. Dann ist eine Beraterin mit mir irgendwelche Stellen durchgegangen, die nur mit etwas Fantasie zu meiner Qualifikation gepasst haben. Im Endeffekt war das aber alles auch völlig egal. Es gab genügend Angebote, die wir uns anschauen konnten und die gut gepasst haben, und mir hat der eine Termin gereicht, in Ruhe die passende Stelle auszusuchen.

Da ich mich mit den ganzen Formalitäten und Voraussetzungen nicht auskenne, muss ich eine vielleicht etwas doofe Frage stellen... Kannst du nicht einfach eine "normale" Ausbildung zum Fachinformatiker machen? Bei einer Firma + Berufsschule + IHK Abschluss? So kenne ich das, und das wäre ein anerkannter Abschuss, mit dem du keine Probleme haben solltest.

18.01.2018 - 20:38 Uhr

Ich kenne auch einige Entwickler in München. 80k sind realistisch, aber eher mit 20 Jahren Erfahrung. Ansonsten so um die 60k.
Fachinformatiker bekommen deutlich weniger. Ich kenn zwar keine in München, aber hier bei uns sind 30k für einen Fachinformatiker kein schlechtes Gehalt.

06.12.2017 - 20:32 Uhr

Wie erkennst du die Störkontur?

15.10.2017 - 17:42 Uhr

Poste doch mal den Code, den du nicht verstehst. Dann kann man vielleicht konkreter drüber reden.
Vielleicht hat ja jemand erst eine KI geschrieben, die das Finden der kleinsten Zahl lernt und das als Lösung präsentiert 😉 Man kann alles beliebig kompliziert machen.

17.09.2017 - 19:05 Uhr

Mit SQL Server ist es auch so. Overkill wäre es nur wenn die Daten nur im kB Bereich vorliegen, sonst eine super Chance etwas "richtig" zu gestalten und sich mit Technologien vertraut zu machen.

Ich hab neulich mal wieder ein privates Projekt ausgegraben, bei dem ich den SQL Server verwendet hatte. Den hatte ich bei mir schon seit fünf Jahren nicht mehr drauf. Es hat Stunden gekostet, und ich fands auch total entnervend, die Datenbank wieder zum Laufen zu bekommen. Ich würde heute praktisch ausschließlich zu Embedded Datenbanken tendieren, die man weder installieren noch einrichten muss.

01.09.2017 - 17:04 Uhr

Mir fehlt irgendwie die Info, was du eigentlich willst. "Programmierern lernen" an sich ist kein Problem, dafür bist du sicher nicht zu alt.
Aber willst du das privat als Hobby machen, oder willst du einen neuen Beruf erlernen? Wenn du das beruflich machen willst, muss dir halt klar sein, dass du jetzt noch Jahre in eine Ausbildung oder ein Studium investieren musst.

05.06.2017 - 19:22 Uhr

Ich programmiere aber noch nicht das Spiel selbst sondern ich mache erst mal getrennte Projekte für einzelne Komponenten wie Datenbank, Scripting, Noise Generator, Client Server Kommunikation usw

Dann könntest du theoretisch aber auch Programmiersprachen mischen. Also, z.B. Rendering in C++, und Datenbank, Scripting, Networking usw. in C#.
Deine Probleme mit dem Scripting in C++ kann ich jetzt nicht bestätigen. Es gibt dutzende oder hunderte Scriptsprachen, die du in C++ einbinden könntest. Einen Speicherlimit bei Lua (JIT oder nicht ist erstmal zweitrangig) kenne ich jetzt nicht, sowas müsste man sich schon im Detail anschauen.

28.05.2017 - 18:50 Uhr

Ich bin einfach unsicher, was den GC angeht. Ich möchte nicht unnötig in einer Sackgasse landen, die man vermeiden könnte.

Ich hab mich bisher bewußt herausgehalten, und wüsste auch nicht, ob man dir hier überhaupt eine sinnvolle Antwort geben kann. Ich selber bin schon lang von .NET auf C++ umgestiegen und würde die Sprache sowieso bevorzugen. Aber nicht unbedingt weiterempfehlen. Die Sprache ist nicht für jeden was. Ich mach das wahrscheinlich schon seit 15 Jahren, seit 7 Jahren hauptberuflich, und trotzdem entdecke ich immer wieder etwas neues, was mir nicht klar war. Man braucht viel länger, bis man damit sinnvoll arbeiten kann, mit C# kann man viel schneller loslegen. Wenn dir C++ liegt und du Gefallen daran findest, dann mach das. Aber wenn du sagst, du machst es, weil du das wahrscheinlich machen musst, dann wird das nichts.
Ich geh auch überhaupt nicht davon aus, dass der GC hier großartig Probleme machen wird. So ein Spiel ist schon etwas komplexer, da gibts verschiedene Möglichkeiten, wie man sowas aufbauen könnte. Probier das doch einfach mal aus. Mach ein paar einfache Tests, schau, obs performant genug läuft. Wenn nicht, versuche rauszufinden, was das Problem ist, und das evtl. anders aufzubauen.

12.05.2017 - 20:50 Uhr

Es kommt auch drauf an, wie tief man in der Webentwicklung steckt. Ich mache nicht viel damit, muss aber praktisch auch gar nicht umdenken (würde mich aber nie als guten Webentwickler bezeichnen, ich bin da eher ein kompletter Anfänger).
Wenn ich mal ein Webfrontend für meine Backends machen muss, dann ist es erstmal recht einfach. Es wird auf irgendwas aufgesetzt, was wir grad brauchen/wollen, z.B. Angular. Die Frameworks haben sich in den letzten Jahren paar mal geändert, aber im Grunde ist es alles dasselbe. Dann gibts da irgendeine Template Engine, Routing, Services, Controller... Das fülle ich quasi alles aus und bin im Grunde schon fertig. Den Rest machen Webdesigner, die nicht programmieren müssen/können. Seltener müssen erfahrene JS Entwickler ran, wenn man irgendwelche Diagramme/Graphen usw. braucht. Aber nichts davon würde ich jetzt als Gefrickel bezeichnen.
Würde evtl. ganz anders aussehen, wenn ich das alles selber machen müsste, also auch "fortgeschrittene" JS Entwicklung, und vor allem Design... Aber ich bin nun mal kein Designer, HTML und CSS liegt überhaupt nicht, also machts auch schon mal keinen Sinn, dass ich das mache.

@Abt: das muss bei Desktopanwendungen nicht einfacher sein. Kommt evtl. auch drauf an, was man überhaupt als Desktopanwendung bezeichnet. Unsere Softwaresuite und die Clients sind da sicherlich nicht einfacher. Wir haben schon länger Application Server, die man in unterschiedlichen Konstellationen clustern kann und Desktopclients, die darauf zugreifen. Auch mit mehreren Threads und evtl. sehr viele gleichzeitig. Und es wird auch sehr viel Wert auf Skalierbarkeit und Performance gelegt, weil die Kunden uns eher selten wahnsinnig viele Server zugestehen und das was wir machen schon ziemlich rechenintensiv ist.
Und die Clients und deren GUI ist auch sehr komplex und muss auch mit sehr vielen Daten zurechtkommen, schnell reagieren, mit externen Änderungen zurechtkommen usw. Nichts davon ist eine Erfindung des Webs.

29.01.2017 - 18:46 Uhr

@Coder007 Ja weiß ich, aber aus privaten Gründen kenne ich das MVC Pattern schon ein wenig und wollte das auch in Unity nutzen. Habe mich eingelesen und gesehen das eigentlich beides möglich ist. Das MVC Pattern würde auch "Probleme" mit sich bringen, aber der Code wäre sehr strukturiert.

MVC an sich wäre wohl auch nicht unbedingt ein Problem. Ob das in Spielen grundsätzlich sinnvoll ist, kann ich so nicht sagen.
"MVC" an sich sagt aber noch nichts über die konkrete Implementierung aus. Und gerade solche Basisklassen wie "MovingObject" waren ein Grund dafür, dass einige/viele sich in der Spieleentwicklung von dem Ansatz mit Vererbungshierarchien losgesagt haben und den Ansatz mit Komponenten bevorzugen. Die Objekte leiten nicht von hunderten Basisklassen ab, um ein Verhalten zu modellieren (das kann man auch schlecht dynamisch ändern), sondern enthalten Komponenten, die das Verhalten modellieren. Und Komponenten kann man zur Laufzeit hinzufügen oder entfernen.
Das muss sich nicht unbedingt mit MVC beißen. Wobei ich da ehrlich gesagt schon etwas skeptisch bin.

28.01.2017 - 17:13 Uhr

Wenn du schon von Unity redest - irgendwie widerspricht deine Basisklasse dem von Unity überall eingesetzten ECS Pattern.

18.01.2017 - 20:04 Uhr

In PRTG kannst du auf jeden Fall auch einen HTTP Sensor definieren. Das dürfte wesentlich einfacher sein, als SNMP.

07.01.2017 - 16:18 Uhr

Das hieße aber auch, dass z.B. Browser wie Firefox oder Google Chrome unseriös sind, da diese z.B. bei Softpedia zum Download angeboten werden.

Ich würde es aber nicht von Softpedia herunterladen. Ich weiß auch nicht, wer es da überhaupt hochgeladen hat. Seriöse Software hat eigene Seiten mit klar erkenntlichen Downloadlinks, ohne lauter Werbung drum herum.
Es gibt halt ab und zu irgendwelche Tools, da hat man nun mal keine Wahl und muss sie von solchen Portalen herunterladen, weil man einfach nichts anderes findet. Aber ich versuche sowas möglichst zu vermeiden, einen guten Eindruck macht das definitiv nicht.

31.12.2016 - 16:01 Uhr

Du musst evtl. ein bisschen mit den Lizenzen aufpassen... Es ist schon Jahre her, dass ich mir das angeschaut habe, aber wenn ich mich recht dran erinnere, dann ist es bei Amazon so eine "Advertising API". D.h., das Ziel ist mehr oder weniger, dass du dir Informationen über Produkte (Bücher, Filme) beschaffen kannst, um diese Produkte zu bewerben. Du darfst sie zwar auch zwischenspeichern, aber eher nicht um eine Datenbank aufzubauen, sondern um später Werbung für diese Produkte machen zu können 😉 Bei einem privaten Projekt wirds wahrscheinlich keinen interessieren, und wenn du es als Freeware oder Open Source verteilst, wahrscheinlich auch nicht, aber spätestens bei einem kommerziellen Produkt würde ich davon ausgehen, dass Amazon mit dieser Benutzung ihrer API nicht glücklich wäre.

28.12.2016 - 15:21 Uhr

Ich bin eigentlich kein Freund von Copy and Paste

Das ist auch gut so. Daran muss man sich gewöhnen 😉 Ich hasse Copy&Paste. Ich habe mehrere Kollegen, die intensiv damit arbeiten. z.B., wenn sie eine neue Implementierung einer Schnittstelle brauchen, kopieren sie öfter mal komplett eine bereits vorhandene Implementierung (aus unserem Code), die überhaupt nichts damit zu tun hat, bis auf die paar Funktionssignaturen und "passen sie an". Beim Anpassen bleibt aber oft viel überflüssiger Code drin und viele falsche Kommentare. Und was verstehen angeht, wenn da irgendwelche "Details" mitkopiert werden, die nichts mit ihrer Implementierung zu tun haben und ich dann frage, was das jetzt genau machen soll und was es hier verloren hat, kommt zurück, keine Ahnung, hab ich halt kopiert. Mich bringt sowas echt auf die Palme. Und ich rede hier von Entwicklern mit mehr als fünf Jahren Berufserfahrung.

Ansonsten kommt man ums Kopieren ab und zu natürlich nicht drum rum, daran ist erstmal auch nichts verwerfliches. Wenn man z.B. irgendwelche exotischen Funktionen aus der WinApi oder von mir aus auch .NET braucht, hat man kaum eine andere Chance, als nach einem fertigen Beispiel zu suchen.
Mit dem "Verstehen" würde ich etwas differenzieren. Wenn es einfach nur etwas allgemeines ist, wo ich einfach ein schönes Beispiel haben will, statt mir selber den Kopf zu zerbrechen (blinken würde ich z.B. dazu zählen), dann versteh ich den Code sehr wahrscheinlich einfach schon vom Anschauen und hätte ihn nur nicht in zwei Minuten selber schreiben können. Auf der anderen Seite gibt es aber sehr spezielle Funktionen, mit denen kaum jemand etwas zu tun hat und wo man einfach hofft, dass das schon mal jemand ein bisschen beschrieben hat (gibt genug Exoten in der WinApi). Das ist etwas, was ich auch verstehen will, d.h. ich würde z.B. alle Funktionen und Parameter in der MSDN nachschauen. Ab und zu ist es aber einfach eine Black Box und da gibts nicht besonderes zu verstehen, muss man halt so machen.

08.07.2016 - 20:17 Uhr

Natürlich hast du recht wenn du sagst das meine Lösung für WordWrap nicht die beste Performance hat aber auf der anderen Seite muss man sich wirklich ernsthaft fragen: Ist das eine Requirement? Welche Daten sollen überhaupt verarbeitet werden? Werden die anderen NFR dadurch verschlechtert? etc.

...aber ich denke bei einer einfachen Kata wie dieser hier kommt es in erster Line eher auf die Basics an (Struktur, Test, Erweiterbarkeit, Verständnis etc.).

Wie gesagt, ich wollte das zumindest nicht unkommentiert lassen. Und ich möchte nochmal betonen, dass ich Optimierungen ganz sicher nicht über andere Anforderungen stelle. Wenn durch eine performantere Implementierung die Verständlichkeit, Erweiterbarkeit usw. leidet, sollte man sich ganz genau anschauen, ob es die Optimierung wert ist und ob man sie überhaupt braucht. Ich will aber darauf hinaus, dass es oft viele völlig natürliche Lösungen für ein Problem gibt, und wenn man ein bisschen darauf achtet, wählt man einfach die performantere Variante, ohne dass einer der anderen Aspekte drunter leiden würde.

Wenn du sagst, für dich spielt es bei den Katas eine untergeordnete Rolle, ist das völlig in Ordnung.
Ich persönlich würds aber eher so sehen, dass man sich das nicht angewöhnen sollte. Wobei das natürlich ein schwieriger Punkt ist, vor allem bei so einem Kata... Deine Lösung ist natürlich durchaus "elegant". Ich würde das in unserem Produktivsystem bei Code Reviews (ich mach auch welche) an bestimmten Stellen sicher ankreiden, aber es würde sicher auch genug Stellen geben, wo das eine völlig legitime Lösung wäre.

Ob etwas ein Requirement ist, kannst du nicht wissen. Ich bin wahrscheinlich besonders sensibel für diesen Punkt, weil ich sehr viel mit Optimierungen zu tun habe. Die Ausgangslage bei uns ist, dass wir viele Millionen Zeilen Code haben und eine Codebasis, die über Jahrzehnte von wahrscheinlich über hundert verschiedenen Entwicklern erstellt und gewartet wurde und es kommt ständig viel dazu oder wird ersetzt. Was wo wie verwendet oder später verwendet werden wird, kann man ganz schlecht abschätzen. Es kommt eine Anforderung dazu, man will Code wiederverwenden, nimmt eine vorhandene Implementierung, ohne sich das genau anzuschauen, testet seinen Use Case, hat kein Problem damit. Aber ein anderer, der wiederum diese Komponente verwendet, hat jetzt plötzlich ein Problem, weil er in bestimmten Konstelleationen ganz häufig die eine Funktion aufruft, die diese schlecht geschriebene Funktion aufruft... Fällt drei Jahre später auf. Wir haben auch viel Code, der "irgendwie" geschrieben ist, nach dem Motto, "ist doch egal, das muss doch nicht schnell sein". Ich hab sicher schon hunderte solcher Funktionen umgebaut. Das ist für mich Arbeitsalltag. Ist sicher nicht in jeder Firma so. Wollte nur etwas verdeutlichen, warum ich verstärkt auf sowas achte und warum das aus meiner Sicht keine so untergeordnete Rolle spielt.
Wobei ich schon wieder deutlich mehr geschrieben habe, als ich eigentlich wollte 😉 Wie gesagt, ich wollts zumindest nicht unkommentiert lassen und dich darauf hinweisen, aber wenn du sagst, das spielt für dich hier keine Rolle, ist das für mich auch völlig in Ordnung.

Vielleicht kannst du ja mal deine (komplette, Sprache egal) Lösung posten?

Ich mach sowas ganz selten und dafür finde ich das Problem jetzt auch nicht interesasant genug. Mein grundsätzlicher Vorschlag sollte ja klar sein? Pseudoalgo:

  1. Schleife mit entsprechender Abbruchbedingung
  2. An die Stelle im String schauen, der der maximalen Länge entspricht, wenn String lang genug
  3. Rückwärts iterieren, bis du einen Worttrenner findest.
  4. Diesen String dann kopieren, das ist auch die Anfangsposition, an der du im nächsten Schleifendurchlauf weitermachst.
07.07.2016 - 20:10 Uhr

Was sind die Kriterien für eine erfolgreiche Lösung?

Ich will eigentlich keine Diskussion über Performance losbrechen und ich weiß gar nicht, ob das hier im Detail erwünscht ist, aber ich hab mir als erstes das WordWrap Beispiel angeschaut und möchte einfach mal meine Meinung dazu sagen.
Ich bin C++ Entwickler und achte einfach meist auf sowas. Es geht nicht um Microoptimierungen, mir ist einfach aus Erfahrung klar, was welche Kosten verursacht (und das kann ich in C++ besser einschätzen als in .NET), und ich verwende eigentlich schon automatisch die Konstrukte, die weniger Laufzeitkosten verursachen, solang das natürlich keine sonstigen negativen Auswirkungen hat.
Und mit so einer Lösung wäre ich bei uns in der Arbeit nicht glücklich gewesen, zumindest nicht in einer der zentralen Komponenten. Grad so "Stringoperationen" sind oft ein ziemlicher Performancekiller, siehe z.B. StringBuilder. Und wenn ich in unserem Code irgendwo (bzw. an zentralen Stellen, irgendwo in der GUI wärs auch egal) split finde, dann stört mich das meist grundsätzlich. Ein Split bedeutet Scannen über den String + Heapallokation für die Liste + x Heap Allokationen für die einzenen Strings in der Liste + Kopieren aller Substrings + entsprechend viele Deallokationen + Join (ebenfalls mit Heapallokationen, aber hoffentlich nur einer, und Kopieren). Und grad Heapallokationen kosten viel Zeit.
Nur als Beispiel, wir hatten in der Arbeit eine sehr komplexe Datenstruktur, die man auch aus einem textbasierten Format laden konnte. Das ganze war so komplex (15-20 Jahre alter Code, etwa 50 000 Zeilen SLOC allein in dieser Komponente, ursprüngliche Entwickler nicht mehr da), dass sich das niemand wirklich im Detail anschauen wollte. Ich hab das Parsen neulich durch Ändern von ein paar String Operationen von fast einer Sekunde auf 75ms runterbekommen. Das bedeutet, dass viele Batchprozesse, die früher tagelang liefen, jetzt in wenigen Stunden durchlaufen. Eine winzige Änderung in einer riesigen Codebasis mit großen Auswirkungen, weil viele Entwickler auf solche Kleinigkeiten einfach nicht achten, obwohl das ganz einfach wäre und auch keinen schlechteren Code produziert.
In deinem Fall würde es reichen, einmal über den String drüberzulaufen und sich die Position der letzten Wortgrenze zu merken. Viel weniger unnötige Heapallokationen 😉

04.07.2016 - 18:59 Uhr

Danke für die Info, hatte ich leider nicht mitbekommen.

04.07.2016 - 17:39 Uhr

Ich würde hier von jeglichen komplexen Datenbanken abraten und eher Sql Server Compact oder Sqlite nehmen (im .NET Umfeld wohl eher den Sql Server Compact). Dann musst du auf dem Server auch nichts installieren.

Alles andere ist evtl. deutlich erhöhter Administrationsaufwand. Oracle würde ich hier gar nicht ins Spiel bringen, das wird die wahrscheinlich mittelfristig völlig grundlos Kopfzerbrechen bereiten. Der Sql Server ist deutlich überschaubarer, aber wenn dir eine Embedded Datenbank wie Sql Server Compact reicht, würde ich auf jeden Fall sowas nehmen.

30.05.2016 - 20:22 Uhr

Überlege dir auch ob überhaupt alle 6000 Objekte geladen werden müssen. Ein Benutzer kann mit dieser Menge direkt eh nichts anfangen. Erst nachdem er Such- bzw. Filterkriterien eingegeben hat, so kannst du die gefilterte Liste (im Hintergrund) laden und dann anzeigen.

Nicht unbedingt. Wenn die Liste sortiert ist und man etwas bestimmtes sucht, kann man auch in einer langen Liste schnell den richtigen Eintrag finden. Und dann braucht man vielleicht auch gar keine zusätzlichen Filter oder Eingabefelder usw.

20.05.2016 - 20:26 Uhr

C/C++ mit/ohne Linux mit/ohne Echzeitkernel scheidet von meiner Seite für diese Anwendung leider aus.

Ich möchte nochmal betonen, dass ich erstmal nicht davon ausgehe, dass .NET hier zu langsam wäre und man unbedingt C++ dafür braucht. Mag sein, glaub ich aber erstmal nicht. Ich wollte nur darauf hinaus, dass ich das besser im Griff habe und das Problem dann genauer untersuchen und mehr ausprobieren könnte.