
Whiz-zarD
-
Gesamte Inhalte
2083 -
Benutzer seit
-
Letzter Besuch
-
Tagessiege
51
Reputationsaktivitäten
-
Whiz-zarD hat eine Reaktion von KeeperOfCoffee erhalten in Fragen zu PL/SQL
Mein Beileid.
Ich habe auch viel mit PL/SQL zu tun und das ist keine Sprache, die man sich freiwillig antun möchte.
-
Whiz-zarD hat eine Reaktion von JimTheLion erhalten in C# Zufallszahlen erstellen und Wiedergeben
Performance ist nicht das Problem. Über Performance würde ich mich erst Gedanken machen, wenn es wirklich ein Problem mit dieser gibt. Performanceoptimierung heißt in den meisten Fällen, dass der Code unübersichtlicher wird.
Wie man den Code nun übersichtlicher macht, ist ein recht großes Thema und lässt sich auch nicht mit einfachen Worten erklären. Wenn du 10 Entwickler an die Aufgabe lässt, wirst du 11 Lösungen bekommen.
In der Objektorientierung hat sich aber das sog. SOLID-Prinzip bewährt. Das S steht für "Single-Responsibility-Principle", das besagt, dass eine Methode oder eine Klasse nur für eine Sache zuständig sein soll. Wenn man jetzt deine button1_Click()-Methode anschaut, dann sie quasi für alles zuständig ist. Also sie würfelt, analysiert und macht die Ausgabe. Ich weiß es, weil ich die Aufgabe kenne und auch deine Gedanken dahinter verstanden habe aber kann ein anderer erkennen, dass der folgende Code ein Würfel sein soll?
Random Zufall = new Random(); [...] int Zahl = Zufall.Next(1, 7); Nicht so wirklich, oder? Er sieht nur, dass du dort Zufallszahlen zwischen 1 und 6 generierst aber das es ein Würfel sein soll, lässt sich in diesem Kontext nicht herauslesen. Also würde ich im ersten Schritt genau daraus einen Würfel bauen. Also wir erstellen eine Klasse, die einen Würfel repräsentiert. Diese Klasse hat dann eine Roll()-Methode, die dann uns eine Zufallszahl zurückgibt. Das Endergebnis würde dann so aussehen:
int number = dice.Roll(); So lässt sich dann auch im Kontext lesen, dass wir es mit einem Würfel zu tun haben, der gewürfelt wird.
Analog das selbe gilt auch fürs Analysieren. Da würde ich auch eine Klasse bauen, die genau das übernimmt. Da könnte es dann z.B. eine Analyse()-Methode geben, die als Parameter die Nummer entgegennimmt und sie entsprechend eingruppiert. Eine GetCount()-Methode könnte dann die Anzahl zurückliefern:
int number = dice.Roll(); analyser.Analyse(number); [...] label3.Text = "Es wurde " + analyser.GetCountOfNumber(1) + " mal die Eins gewürfelt"; Natürlich könnte man noch viel mehr erzählen. z.B. über MVC (Model-View-Controller), etc aber ich denke, das würde zu weit führen. Ich denke, dass selbst mein Text schon zu weit geht.
Zum Thema String vs. StringBuilder vs. Stringinterpolation:
Ich denke mal, der TE kann mit dem Wort "immutable" nichts anfangen. Ich bin mir nicht mal sicher, ob der TE überhaupt eine Ausbildung macht oder nur ein Schüler auf einer allgemeinbildende Schule ist. Daher sollte man ihn vielleicht auch mal erklären, was immutable heißt. Zumal es performancetechnisch wohl keinen allzu großen Unterschied macht, ob er die Strings verkettet und somit einen neuen erzeugt oder einen StringBuilder verwendet. Wenn er einen eigenen StringBuilder verwendet, dann muss jedes Mal die Clear()-Methode aufgerufen werden, was den Code zumüllen würde. Darüber hinaus müsste er jedes String-Fragment mit der Append()-Methode zusammenführen, was schlecht lesbar ist.
Daher würde ich hier auf den StringBuilder verzichten und die Stringinterpolation verwenden. Diese verwendet intern auch nur die string.Format()-Methode und in dieser Methode wird ein gecachter StringBuilder verwendet, der eben die Clear()-Methode aufruft.
Ob man jetzt also
"Es wurde " + Eins + " mal die Eins gewürfelt"; oder
$"Es wurde { Eins } mal die Eins gewürfelt"; ist aus meiner Sicht erst mal irrelevant. Da es sich hier um eine Mikrooptimierung des Code handelt. Dann läuft der Code halt 10 Nanosekunden langsamer. Na und? Wir reden hier nicht von einem Hochverfügbarkeitssystem, was die Zahlen in Echtzeit anzeigen soll.
Ja, man kann die Problematik ansprechen aber geht es nicht erst mal darum, den Code lesbarer zu machen? Im Idealfall liest sich der Code wie ein Buch und da sollte die Reise hingehen und nicht welche Mikrooptimierung man nun unbedingt einbauen muss.
-
Whiz-zarD hat eine Reaktion von Mttkrb erhalten in Liste Filtern mit bestimmten Werten
Sorry, aber dann hat er keine Ahnung.
Ein Code sollte im Idealfall wie ein Prosatext zu lesen sein. Wenn man dann anfängt Kommentare schreiben zu müssen, um den Code zu erklären, dann macht man was falsch. Zu mal, solche Kommentare irgendwann lügen, da der Code angepasst wird aber nicht der Kommentar.
Ein Kommentar sollte, wenn überhaupt, das "Wieso" erklären und nicht das "Was". Das "Was" erzählt schon der Code.
Und was ist an den Code nicht verständlich? Es ist eine simple Überprüfung, wann zwei Person-Objekte als gleich zu betrachten sind. Dafür wird ein Hashwert und eine Equals()-Methode benötigt. Der Hashwert ist im Grunde nichts weiter, als eine Zahl, die das Objekt repräsentiert. Es ist quasi eine Performanceoptimierung. Bei meinem Comparer gibt es aber noch einen Fehler. Die GetHashCode()-Methode berücksichtigt auch den Wert und daher funktioniert es nicht. Die XOR-Verknüpfung von Wert muss raus.
public class PersonComparer : IEqualityComparer<Person> { public bool Equals(Person x, Person y) { if (x == null || y == null) return false; return x.Vorname == y.Vorname && x.Nachname == y.Nachname && x.Geburtsdatum == y.Geburtsdatum; } public int GetHashCode(Person obj) { return obj.Vorname.GetHashCode() ^ obj.Nachname.GetHashCode() ^ obj.Geburtsdatum.GetHashCode(); } } Intern verwendet Distinct() eine Art HashSet, die aber speziell für LINQ entwickelt wurde. Distinct() vergleicht die Werte über einen Comparer. Wenn man keinen Comparer verwendet, wird intern ein DefaultComparer verwendet. Wie dieser genau arbeitet, weiß ich allerdings auch nicht.
Nicht desto Trotz, lässt sich nun ein eigenen Comparer implementieren. GetHashCode() ermittelt aus dem Objekt eine Zahl. Dazu gibt es etliche Artikel, wie die Methode zu implementieren ist. Die Empfehlung ist, von den jeweiligen Properties den Hashwert ermitteln (die Methode befindet sich am Objekt selber) und diese dann mit einem XOR zu verknüpfen. Damit bekommt man einen eindeutigen Hashwert. Das HashSet kann dann daraufhin sehr performant ermitteln, ob beide Objekte gleich sind, da er er nur zwei Zahlen miteinander vergleichen muss. Zusätzlich gibt es noch die Equals()-Methode, die eine weitere Überprüfung darstellt, falls dann doch zwei Hashwerte gleich sind.
Du könntest auch einfach bei GetHashCode() eine 0 zurückgeben. Dann ist der Hashwert immer 0 und bei jedem Objektvergleich würde die Equals()-Methode ziehen. Diese Variante kann aber ggf. zu einer schlechten Performance führen.
public int GetHashCode(Person obj) { return 0; } Dann macht der Code genau das, was du willst und du brauchst kein Boilercode, wo du zig Listen, mehre LINQ-Ausdrücke erstellst.
-
Whiz-zarD hat eine Reaktion von maestro impostor erhalten in Liste Filtern mit bestimmten Werten
Sorry, aber dann hat er keine Ahnung.
Ein Code sollte im Idealfall wie ein Prosatext zu lesen sein. Wenn man dann anfängt Kommentare schreiben zu müssen, um den Code zu erklären, dann macht man was falsch. Zu mal, solche Kommentare irgendwann lügen, da der Code angepasst wird aber nicht der Kommentar.
Ein Kommentar sollte, wenn überhaupt, das "Wieso" erklären und nicht das "Was". Das "Was" erzählt schon der Code.
Und was ist an den Code nicht verständlich? Es ist eine simple Überprüfung, wann zwei Person-Objekte als gleich zu betrachten sind. Dafür wird ein Hashwert und eine Equals()-Methode benötigt. Der Hashwert ist im Grunde nichts weiter, als eine Zahl, die das Objekt repräsentiert. Es ist quasi eine Performanceoptimierung. Bei meinem Comparer gibt es aber noch einen Fehler. Die GetHashCode()-Methode berücksichtigt auch den Wert und daher funktioniert es nicht. Die XOR-Verknüpfung von Wert muss raus.
public class PersonComparer : IEqualityComparer<Person> { public bool Equals(Person x, Person y) { if (x == null || y == null) return false; return x.Vorname == y.Vorname && x.Nachname == y.Nachname && x.Geburtsdatum == y.Geburtsdatum; } public int GetHashCode(Person obj) { return obj.Vorname.GetHashCode() ^ obj.Nachname.GetHashCode() ^ obj.Geburtsdatum.GetHashCode(); } } Intern verwendet Distinct() eine Art HashSet, die aber speziell für LINQ entwickelt wurde. Distinct() vergleicht die Werte über einen Comparer. Wenn man keinen Comparer verwendet, wird intern ein DefaultComparer verwendet. Wie dieser genau arbeitet, weiß ich allerdings auch nicht.
Nicht desto Trotz, lässt sich nun ein eigenen Comparer implementieren. GetHashCode() ermittelt aus dem Objekt eine Zahl. Dazu gibt es etliche Artikel, wie die Methode zu implementieren ist. Die Empfehlung ist, von den jeweiligen Properties den Hashwert ermitteln (die Methode befindet sich am Objekt selber) und diese dann mit einem XOR zu verknüpfen. Damit bekommt man einen eindeutigen Hashwert. Das HashSet kann dann daraufhin sehr performant ermitteln, ob beide Objekte gleich sind, da er er nur zwei Zahlen miteinander vergleichen muss. Zusätzlich gibt es noch die Equals()-Methode, die eine weitere Überprüfung darstellt, falls dann doch zwei Hashwerte gleich sind.
Du könntest auch einfach bei GetHashCode() eine 0 zurückgeben. Dann ist der Hashwert immer 0 und bei jedem Objektvergleich würde die Equals()-Methode ziehen. Diese Variante kann aber ggf. zu einer schlechten Performance führen.
public int GetHashCode(Person obj) { return 0; } Dann macht der Code genau das, was du willst und du brauchst kein Boilercode, wo du zig Listen, mehre LINQ-Ausdrücke erstellst.
-
Whiz-zarD hat eine Reaktion von äymm erhalten in Liste Filtern mit bestimmten Werten
In Distinct kann man auch einen Comparer mitgeben:
var listDis = liste.Distinct(new PersonComparer()).ToList(); public class PersonComparer : IEqualityComparer<Person> { public bool Equals(Person x, Person y) { if (x == null || y == null) return false; return x.Vorname == y.Vorname && x.Nachname == y.Nachname && x.Geburtsdatum == y.Geburtsdatum; } public int GetHashCode(Person obj) { return obj.Vorname.GetHashCode() ^ obj.Nachname.GetHashCode() ^ obj.Geburtsdatum.GetHashCode() ^ obj.Wert.GetHashCode(); } }
-
Whiz-zarD hat eine Reaktion von arlegermi erhalten in Liste Filtern mit bestimmten Werten
In Distinct kann man auch einen Comparer mitgeben:
var listDis = liste.Distinct(new PersonComparer()).ToList(); public class PersonComparer : IEqualityComparer<Person> { public bool Equals(Person x, Person y) { if (x == null || y == null) return false; return x.Vorname == y.Vorname && x.Nachname == y.Nachname && x.Geburtsdatum == y.Geburtsdatum; } public int GetHashCode(Person obj) { return obj.Vorname.GetHashCode() ^ obj.Nachname.GetHashCode() ^ obj.Geburtsdatum.GetHashCode() ^ obj.Wert.GetHashCode(); } }
-
Whiz-zarD hat eine Reaktion von auxiliam erhalten in Ist der Beruf für mich? (FiAE)
Da ich einige Kontakte zu Malern und Schriftstellern habe, kann ich sagen, dass es zwischen Künstlern und Softwareentwicklern sehr viele Gemeinsamkeiten existieren. Daher würde ich schon den Entwickler auch als einen kreativen Beruf ansehen. Auch ein Maler/Schriftsteller arbeitet systematisch und methodisch. Ein Maler/Schriftsteller versucht eine Ästhetik in seine Werke zu bringen. Genauso, wie der Entwickler, der mit Clean Code, Design Patterns und Architektur seine Weise von Ästhetik zum Ausdruck bringt.
Schriftsteller schreiben auch nicht gleich drauf los, sondern recherchieren auch erst mal diverse Themen und erarbeiten sich ein Konzept.
Man gilt auch nicht als unkreativ, nur weil man kein großes Projekt vor Augen hat. Projekte in der Softwareentwicklung entstehen auch oft nur aus einer Problemlösung heraus. Marc Zuckerberg ist auch nicht von der Toilettenschüssel gefallen und hatte plötzlich die Idee von Facebook, sondern es entstand einfach daraus, dass die Entwicklung des offizielle Online-Jahresbuch der Harvard Universität, aufgrund von Datenschutzbedenken, zu langsam lief und er entwickelte halt ein System, wo die Studenten selbst ihre Daten online stellen konnten. Somit umging er die Datenschutzbedenken, weil jeder selber für seine Daten verantwortlich ist.
Ich denke mal, dass man gewisse Menschen als kreativ ansieht, liegt daran, dass man deren Methodik nicht kennt. Man kennt nur eine leere Leinwand und auf dieser Leinwand entsteht wie von Geisterhand dann eine Mona Lisa aber Leonardo da Vinci musste auch auch erst mal Methoden kennenlernen und entwickeln, um so etwas malen zu können.
Halte ich persönlich nicht wirklich für Schlau. Egal bei welchem Beruf. Wer so handelt, bei dem ist eigentlich schon Burn-Out oder eine Depression vorprogrammiert. Ich rede da leider aus Erfahrung. Man sollte schon eine gewisse Affinität mitbringen. Gerade als Softwareentwickler ist das meiner Meinung nach ein Muss, weil man auch dann bereit ist, etwas neues zu lernen. Ich hab auch ein paar Kollegen, die meinten, mit ihrem Wissen aus dem Studium, was sie mal vor 20 Jahren abgeschlossen haben, genug Wissen über die Softwareentwicklung gelernt haben, sodass sie nichts mehr neues Wissen lernen müssen. Sie sind inzwischen aber schon sehr kleinlaut geworden, als wir zwei Werksstudenten eingestellt haben, die mit ihrem Wissen jetzt schon meilenweit voraus sind.
In meiner Assistentenausbildung zum Medieninformatiker habe ich viele solcher Menschen kennengelernt. Kaum einer hat die Ausbildung abgeschlossen. Die meisten haben schon nach einem Semester gemerkt, dass Softwareentwicklung doch für sie nichts ist. Das muss nicht auf dich zutreffen aber die Frage, die du dir stellen solltest ist, ob du wirklich Lust darauf hast, 8 Stunden täglich auf den Bildschirm zu glotzen und Code zu lesen? Die meiste Zeit des Tages verbringst du damit, Code zu lesen, ihn zu verstehen und zu begreifen, was der eigentlich tut. Das kann auf die Dauer sehr anstregend werden.
Diejenigen, die von Java abraten, haben selber keine Ahnung und plappern dummes Zeug nach, was sie mal im Internet gelesen haben und/oder sind Fanboys/girls anderer Sprachen. Java wird noch lange Zeit eine der am meistverbreitesten Sprachen bleiben. Android-App werden ja auch mit Java entwickelt. Wenn man die imperative Programmierung lernen möchte, ist es erstmal egal, welche Sprache man nimmt, weil sie alle die selben Grundkonzepte besitzen (z.B. Schleifen oder Verzweigungen). Mache dir also da erst mal keine Sorgen.
Um noch mal auf deine eigentliche Intention einzugehen: Die Frage, ob der FIAE was für dich ist, kannst nur du beantworten. Wenn du meinst, dass dies was für dich sein kann, dann mach es. Probiere es aus. Es geht fast allen Menschen so, die kurz vor der Beendigung der Schule stehen und nicht wissen, was sie später machen wollen, wenn man nicht gerade ihr Hobby zum Beruf machen können und wollen. Du brauchst dir aber keine Sorgen um deine Kreativität machen. In Laufe der Jahre entwickelt man einen Programmierstil und auch ein Gedankenmuster, an denen man sich entlang hangelt und diese immer wieder Stück-für-Stück verbessert und korrigiert. Es ist halt ein ständiger Lernprozess.
-
Whiz-zarD hat eine Reaktion von Gooose erhalten in Ist der Beruf für mich? (FiAE)
Vom Taschenrechner würde ich sehr stark abraten. Das geht nur in die Hose.
-
Whiz-zarD hat eine Reaktion von KeeperOfCoffee erhalten in Ist der Beruf für mich? (FiAE)
Vom Taschenrechner würde ich sehr stark abraten. Das geht nur in die Hose.
-
Whiz-zarD hat eine Reaktion von Ryotsun erhalten in Ist der Beruf für mich? (FiAE)
Größere Dinge teilt man auch in kleinere Dingen auf, sodass sich überschaubar und machbar sind. Wenn jetzt jemand z.B. einen Messenger entwickeln möchte, fängt ja auch nicht sofort an, sondern überlegt im ersten Schritt, aus welchen Bestandteilen ein Messenger besteht. Also z.B. aus einem Login, einem Kontakte-Fenster und einem Chat-Fenster, dann überlegt man sich, wie der Login funktionieren kann, usw. usw.
In einer Firma wird man ja auch dann nicht alleine an diesem Messenger sitzen, sondern in einem oder ggf. in mehreren Teams, die die Arbeiten aufteilen. Die Teams sind dann in ihren bestimmten Kompetenzen aufgeteilt. So übernimmt ein Team dann z.B. das Front-End (also, das was der Benutzer im Endeffekt sieht), ein anderes Team das Back-End (also der Server, der im Hintergrund läuft) und ein anderes Team verbindet Front-End mit dem Back-End. So muss man dann nicht alles bis ins Detail wissen.
Ich selber arbeite in einer Firma, die Software für Banken entwickelt. Ich habe aber auch nicht so viel Wissen über das Finanzwesen und wenn wir eine neue Anforderung bekommen, haben wir ein Team, was sich nur mit den fachlichen Themen beschäftigt und uns Entwicklern helfen, die Anforderungen umzusetzen, indem für sie uns z.B. Gesetzestexte in eine verständliche Sprache übersetzen.
Dann viel Glück.
-
Whiz-zarD hat eine Reaktion von 201X20w5m3 erhalten in Ist der Beruf für mich? (FiAE)
Da ich einige Kontakte zu Malern und Schriftstellern habe, kann ich sagen, dass es zwischen Künstlern und Softwareentwicklern sehr viele Gemeinsamkeiten existieren. Daher würde ich schon den Entwickler auch als einen kreativen Beruf ansehen. Auch ein Maler/Schriftsteller arbeitet systematisch und methodisch. Ein Maler/Schriftsteller versucht eine Ästhetik in seine Werke zu bringen. Genauso, wie der Entwickler, der mit Clean Code, Design Patterns und Architektur seine Weise von Ästhetik zum Ausdruck bringt.
Schriftsteller schreiben auch nicht gleich drauf los, sondern recherchieren auch erst mal diverse Themen und erarbeiten sich ein Konzept.
Man gilt auch nicht als unkreativ, nur weil man kein großes Projekt vor Augen hat. Projekte in der Softwareentwicklung entstehen auch oft nur aus einer Problemlösung heraus. Marc Zuckerberg ist auch nicht von der Toilettenschüssel gefallen und hatte plötzlich die Idee von Facebook, sondern es entstand einfach daraus, dass die Entwicklung des offizielle Online-Jahresbuch der Harvard Universität, aufgrund von Datenschutzbedenken, zu langsam lief und er entwickelte halt ein System, wo die Studenten selbst ihre Daten online stellen konnten. Somit umging er die Datenschutzbedenken, weil jeder selber für seine Daten verantwortlich ist.
Ich denke mal, dass man gewisse Menschen als kreativ ansieht, liegt daran, dass man deren Methodik nicht kennt. Man kennt nur eine leere Leinwand und auf dieser Leinwand entsteht wie von Geisterhand dann eine Mona Lisa aber Leonardo da Vinci musste auch auch erst mal Methoden kennenlernen und entwickeln, um so etwas malen zu können.
Halte ich persönlich nicht wirklich für Schlau. Egal bei welchem Beruf. Wer so handelt, bei dem ist eigentlich schon Burn-Out oder eine Depression vorprogrammiert. Ich rede da leider aus Erfahrung. Man sollte schon eine gewisse Affinität mitbringen. Gerade als Softwareentwickler ist das meiner Meinung nach ein Muss, weil man auch dann bereit ist, etwas neues zu lernen. Ich hab auch ein paar Kollegen, die meinten, mit ihrem Wissen aus dem Studium, was sie mal vor 20 Jahren abgeschlossen haben, genug Wissen über die Softwareentwicklung gelernt haben, sodass sie nichts mehr neues Wissen lernen müssen. Sie sind inzwischen aber schon sehr kleinlaut geworden, als wir zwei Werksstudenten eingestellt haben, die mit ihrem Wissen jetzt schon meilenweit voraus sind.
In meiner Assistentenausbildung zum Medieninformatiker habe ich viele solcher Menschen kennengelernt. Kaum einer hat die Ausbildung abgeschlossen. Die meisten haben schon nach einem Semester gemerkt, dass Softwareentwicklung doch für sie nichts ist. Das muss nicht auf dich zutreffen aber die Frage, die du dir stellen solltest ist, ob du wirklich Lust darauf hast, 8 Stunden täglich auf den Bildschirm zu glotzen und Code zu lesen? Die meiste Zeit des Tages verbringst du damit, Code zu lesen, ihn zu verstehen und zu begreifen, was der eigentlich tut. Das kann auf die Dauer sehr anstregend werden.
Diejenigen, die von Java abraten, haben selber keine Ahnung und plappern dummes Zeug nach, was sie mal im Internet gelesen haben und/oder sind Fanboys/girls anderer Sprachen. Java wird noch lange Zeit eine der am meistverbreitesten Sprachen bleiben. Android-App werden ja auch mit Java entwickelt. Wenn man die imperative Programmierung lernen möchte, ist es erstmal egal, welche Sprache man nimmt, weil sie alle die selben Grundkonzepte besitzen (z.B. Schleifen oder Verzweigungen). Mache dir also da erst mal keine Sorgen.
Um noch mal auf deine eigentliche Intention einzugehen: Die Frage, ob der FIAE was für dich ist, kannst nur du beantworten. Wenn du meinst, dass dies was für dich sein kann, dann mach es. Probiere es aus. Es geht fast allen Menschen so, die kurz vor der Beendigung der Schule stehen und nicht wissen, was sie später machen wollen, wenn man nicht gerade ihr Hobby zum Beruf machen können und wollen. Du brauchst dir aber keine Sorgen um deine Kreativität machen. In Laufe der Jahre entwickelt man einen Programmierstil und auch ein Gedankenmuster, an denen man sich entlang hangelt und diese immer wieder Stück-für-Stück verbessert und korrigiert. Es ist halt ein ständiger Lernprozess.
-
Whiz-zarD hat eine Reaktion von Sullidor erhalten in Probezeit Kündigungsszensario
Bei einer Ausbildung gilt das BBiG und das BBiG sagt, dass es keine Kündigungsfrist gibt.
-
Whiz-zarD hat eine Reaktion von RubberDog erhalten in Probezeit Kündigungsszensario
Das gilt auch für dich...
BBiG §22
Die Probezeit dauert in einer Ausbildung maximal 4 Monate.
-
Whiz-zarD hat eine Reaktion von RubberDog erhalten in Probezeit Kündigungsszensario
Bei einer Ausbildung gilt das BBiG und das BBiG sagt, dass es keine Kündigungsfrist gibt.
-
-
Whiz-zarD hat eine Reaktion von Griller erhalten in Zukunft von Oracle / APEX?
Von APEX habe ich noch nie was gehört. Wenn ich mir aber den Wikipedia-Artikel durchlese, sehe ich da wenig Zukunft, da APEX bedeutet, dass man an Oracle gebunden ist. Unsere Kunden (Banken) benutzen zwar alle noch Oracle Database aber sie wollen davon weg, weil die Lizenzen immer teurer werden und das Lizenzmodell immer undurchsichtiger. Open Source Datenbanken werden auch immer besser und nicht immer ist eine relationale Datenbank die beste Entscheidung.
Wenn ich das richtig lese, wird serverseitig PL/SQL verwendet. Das ist eine proprietäre, prozedurale Programmiersprache von Oracle, die einfach nur grausam ist (ich muss auch noch vieles damit entwickeln).
Im .Net-Umfeld wäre man deutlich besser aufgestellt, weil da sich mehr viel bewegt. Die Größe einer Firma ist meiner Meinung nach auch nicht entscheidend, sondern ob die Firma auch mal neue Wege wagt und wenn eine Firma nur APEX verwendet, dann wohl aus historischen Gründen, weil man es entweder schon immer so gemacht hat oder weil man da nicht mehr rauskommt bzw. auch nicht rauskommen will, weil alles neumodische eh Teufelszeug ist.
-
Whiz-zarD hat eine Reaktion von RubberDog erhalten in Als Ausbilder - was vermitteln?
Das heißt Ausbildungsrahmenplan.
Der Rahmenlehrplan ist für die Berufsschule.
-
Whiz-zarD hat eine Reaktion von RubberDog erhalten in Als Ausbilder - was vermitteln?
Wenn du den Ausbilderschein machen möchtest, würde ich dir raten, einen AdA-Kurs zu besuchen. Dort erfährst du, dass es zu der Ausbildungsordnung noch einen Ausbildungsrahmenplan gibt. In der Ausbildungsordnung, die du wohl nur gelesen hast, stehen nur die Richtlernziele drinnen. Im Ausbildungsrahmenplan dann die Groblernziele. Die Feinlernziele (also das, was der Azubi tatsächlich messbar lernt), musst du dann vorgeben. Dieses Wissen ist vor allem später bei der Prüfung wichtig, denn du musst dann entweder so eine Lernsituation nachspielen (ein Prüfer spielt dann den Azubi) oder hältst eine Präsentation, wie du einem Azubi etwas beibringen möchtest.
Bezüglich Netzwerk: Wieso richtet man dann nicht ein Netzwerk ein, was von der Außenwelt abgeschottet ist? So ist es dann nicht weiter dramatisch, wenn der Azubi in seinem eigenen Netzwerk groben Unfug baut.
-
Whiz-zarD hat eine Reaktion von KeeperOfCoffee erhalten in C# Lernmaterial für WPF
.NET Core 3 wird WinForms und WPF unterstützen.
https://blogs.msdn.microsoft.com/dotnet/2018/05/07/net-core-3-and-support-for-windows-desktop-applications/
-
Whiz-zarD reagierte auf Rienne in Jetzt versteh ich den "Fachkräftemangel"...
Und ich finde es immer wieder bemerkenswert wie blauäugig und ahnungslos manche Azubis durch ihre Ausbildung gehen, wo doch auch immer wieder gesagt wird, dass die Ausbildung auch zu Eigenintiative erziehen soll.
Und ja, ich sehe es als selbstverständlich an, dass jeder Azubi vor seiner Abschlussprüfung mal die Rahmenpläne angeschaut haben sollte. Zumal dann in der schriftlichen Prüfung auch weniger böses Erwachen stattfinden würde, da die IHK, meiner Erfahrung nach, eigentlich nie etwas verlangt, was nicht auch im Rahmenlehrplan erwähnt wird!
Sich über seine Rechte und Pflichten zu erkundigen, kann übrigens nie schaden; nicht nur in Hinsicht auf eine Ausbildung. Ich musste mich auch selber erkundigen, was ich noch für finanzielle Zuschüsse während meiner Ausbildung bekommen kann und wo ich wie einen Antrag auf BAB stelle. Da kam auch niemand auf mich zu und hat gesagt: "Hey! Du hast Kinder und bekommst nicht allzuviel Ausbildungsvergütung, stell doch nen Antrag auf BAB."
-
Whiz-zarD hat eine Reaktion von allesweg erhalten in Jetzt versteh ich den "Fachkräftemangel"...
Kommt darauf an. Wenn es eine Maßnahme ist, die vom Jobcenter aufgezwungen wird, dann ja.
Möchte der Arbeitssuchende eigene Ideen einbringen, so tut der Sachbearbeiter oft, als müsse er es aus eigener Tasche zahlen.
-
Whiz-zarD hat eine Reaktion von _byT erhalten in Mein Dozent rät von Java ab?
Visual Basic? Na klar. Damit wäre das Gespräch schon beendet. So viel Ahnung scheint er nicht zu haben. Ich vermute mal, dass er bei Java die ganzen kritischen Sicherheitslücken meint, die man in den letzten Jahren gefunden hat, dabei ist das Problem nicht Java selbst, sondern die Bibliotheken, die mit und für Java geschrieben werden. Viele der Sicherheitslücken sind auf das Browserplugin zurückzuführen. Das Browserplugin lässt die Java-Applikation in einer Sandbox laufen, damit die Applikation nicht zu viel Schindluder treiben kann. Allerdings konnte die Applikation zu leicht aus der Sandbox ausbrechen. Außerdem sind viele Angriffe auf veraltete Java-Versionen zurückzuführen.
Java wird also nicht so schnell aussterben. Ich vermute mal, dass Java eher das neue COBOL wird. Eine Sprache vergangener Tage aber immer noch Entwickler dafür gesucht werden, weil kritische Programme damit entwickelt worden sind.
Ich persönlich bin ein Freund von C# und die Gründe liegen nicht in der Sicherheit oder sonst wo, sondern einfach an den Sprachfeatures, denn C# bekommt immer mehr funktionale Programmieraspekte, die das Leben vereinfachen. Allerdings ist man heute eh nicht davon befreit, mehrere Sprachen können zu müssen. Die Zeiten sind vorbei, wo man nur eine Sprache lernen muss, um den Rest seines Lebens als Entwickler arbeiten zu können. Gerade wenn man an Web-Applikationen arbeitet, bleibt nichts anderes übrig, als weitere Sprachen, wie z.B. JavaScript oder TypeScript und damit verbundene Frameworks, wie z.B. Angular oder React zu lernen.
Kotlin und Scala haben nichts mit Java zu tun. Die Sprachen verwenden aber die JVM. Der Compiler von Kotlin und Scala kompiliert den Code in Bytecode und dieser wird dann von der JVM ausgeführt.
-
Whiz-zarD hat eine Reaktion von Rabber erhalten in Jetzt versteh ich den "Fachkräftemangel"...
Das ist das Ziel von vielen Bildungsträgern. Hauptsache Geld vom Jobcenter abkassieren und wenn die Person durch die Prüfung rasselt, ist halt die Person schuld und nicht der Bildungsträger.
-
Whiz-zarD hat eine Reaktion von thereisnospace erhalten in Speichern von ListView in .txt datei
Weil eine Invalid Cast Exception geworfen wird, die aber die Form abfängt. Die bekommst du zu sehen, wenn du alle Exceptions unter Debuggen -> Fenster -> Ausnahmeeinstellungen aktivierst. Dann unterbricht der Debugger bei jeder Exception die Ausführung.
Hast du dich überhaupt schon mal mit Schleifen beschäftigt? Dann erübrigt sich dein Problem.
Wenn man es richtig macht, brauchst du nicht mal eine Zählschleife, denn deine Datei ist nichts weiter als eine Liste von Objekten und wenn du die Datei eine Struktur geben würdest (z.B. eine Zeile pro Fehlermeldung), dann könntest du die Datei auch vernünftig parsen und bräuchtest nur eine foreach-Schleife.
Derzeit sieht ja deine Datei so aus:
Name1/Gerät1/Datum1/Fehlermeldung1/Name2/Gerät2/Datum2/Fehlermeldung2/... Es ist nicht erkennbar, wann der Datensatz aufhört und wann er anfängt. Wenn du aber pro Zeile einen Datensatz schreibst, ist der Anfang und Ende definiert:
Name1/Gerät1/Datum1/Fehlermeldung1 Name2/Gerät2/Datum2/Fehlermeldung2 ... Dementsprechend kann man nun die Datei parsen:
List<Fehlermeldungen> fehlermeldungen = new List<Fehlermeldungen>(); foreach (var row in file.Split(new[] {Environment.NewLine}, StringSplitOptions.None)) { var columns = row.Split('/') fehlermeldungen.Add(new Fehlermeldungen { Name = columns[0], Gerät = columns[1], Datum = column[2], Fehlermeldung = columns[3] } }
-
Whiz-zarD hat eine Reaktion von maestro impostor erhalten in Speichern von ListView in .txt datei
Schaue dir doch mal die Zeile genauer an:
sw.WriteLine("{0}{1}{2}{3}{4}", item.SubItems[0].Text, // <- {0} "/" , // <- {1} item.SubItems[1].Text,// <- {2} "/" , // <- {3} item.SubItems[2].Text, // <- {4} "/", item.SubItems[3].Text, "/", item.SubItems[4].Text); Schreib es doch so:
sw.WriteLine("{0}/{1}/{2}/{3}/{4}", item.SubItems[0].Text, item.SubItems[1].Text, item.SubItems[2].Text, item.SubItems[3].Text, item.SubItems[4].Text);
Du öffnest den Dialog zwei Mal:
sfd1.ShowDialog(); // <- 1. Mal if (sfd1.ShowDialog() == DialogResult.OK) // 2.Mal