Zum Inhalt springen

Whiz-zarD

Mitglieder
  • Gesamte Inhalte

    2.018
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    48

Alle Inhalte von Whiz-zarD

  1. Hallo, Neulich habe ich mir ein Video von zwei Trainer angeschaut, die eine Coding Kata bearbeitet haben und ich dachte mir, wieso nicht mal sowas Live machen und wollte mal in die Runde Fragen, ob evtl. daran interesse besteht? Speziell wollte ich damit FIAEler ansprechen aber wenn Azubis anderer Fachrichtungen daran Lust haben, sag seid ihr auch herzlich eingeladen. Was ist eine Coding Kata? Der Begriff "Kata" stammt aus japanischen Kampfsportarten und bezeichnet eine Übungsform und genau sowas sind auch Coding Katas: Übungsaufgaben. Softwareentwicklung lernt man nämlich nicht durch stupides anschauen oder lesen von Tutorials oder Büchern, sondern durch Übung, Übung und noch mehr Übung und dafür sind die Katas sehr gut geeignet und mit mehreren Leuten kommt man vielleicht zu einer besseren Lösung als alleine. Vielleicht hat der eine oder andere auch Fragen zu Aufgaben, die in der Schule gemacht werden sollen oder Fragen zu den Aufgaben in den Zwischen- bzw. Abschlussarbeiten. Die könnten wir dann auch besprechen. Dies soll aber keine Hausaufgaben-Veranstaltung werden, wo ich eure Hausaufgabe mache. Wenn ich merken sollte, dass da keine Eigenleistung kommt, werde ich dies dann abbrechen. Falls Interesse bestehen sollte, bleibt aber die Frage, welche Software könnte man dafür verwenden. Hat da jemand dafür eine Idee? mfg Whiz-zarD
  2. Such mal unter Google nach Coding Katas. Das sind Übungsaufgaben zum lernen.
  3. Vor allem weil es nicht DIE Exceptions gibt, sondern jeder Entwickler kann auch eigene Exceptions bauen und sollte es auch je nach Kontext tun.
  4. Ich hatte bis jetzt zwar auch noch keine gehabt, aber ich weiß, dass einige Firmen das FizzBuzz-Beispiel nehmen, um zu schauen, wie sauber dein Code ist.
  5. Außerdem: Welche Fachrichtung?
  6. Keine Ahnung, in welcher Branche er arbeitet aber dies kann z.B. bei Banken schon mal vorkommen. Bei der Einführung unserer Software in einer Bank, müssen wir auch solche riesigen PDF-Dateien erstellen und die können je nach Größe der Bank mehr als 20k Seiten haben. (meist so zwischen 30k und 50k).
  7. Der Berufsalltag kümmert sich nicht mehr um Java-Grundwissen, da man davon ausgeht, dass man das Grundwissen beherrscht, daher sucht man im Berufsalltag eher Tutorials zu bestimmten Themen, wie z.B. zu bestimmten Frameworks. In dem anderen Thread von dir, habe ich ja z.B. Hibernate genannt. Als Anfänger wäre aber das Lernen der SOLID-Prinzipien nicht verkehrt oder such dir Coding Katas und versuche, die zu bearbeiten. Am meisten lernt man eben durch Übung und nicht durch Tutorials. Tutorials zeigen dir nicht, wie man Software schreibt, sondern verdeutlichen nur bestimmte Techniken und Technologien anhand eines simplen Beispiels. Diese Beispiele repräsentieren aber oft nicht den Weg, wie man Software schreiben sollte.
  8. Schau mal genau hin. ResultSet rs = stmt.executeQuery("SELECT * FROM praktikum_aufgabe.kunde"); rs.next(); <-- erste Zeile wird gelesen if(rs.getObject(1) == null) { stmt.executeUpdate("INSERT INTO praktikum_aufgabe.kunde (nachname,vorname,postleitzahl,straße,ort) " + "Values('dieter','bauer','86551','waldweg 29','aichach')"); stmt.executeUpdate("INSERT INTO praktikum_aufgabe.kunde (nachname,vorname,postleitzahl,straße,ort) " + "Values('manueal','jansen','86551','steiner weg 2','aichach')"); } while(rs.next()) <-- nächste Zeile wird gelesen { ... } Das sollte doch ein Selbstgänger sein, oder nicht? Du hast eine Schleife. Du kannst die Daten aus der Tabelle lesen. Was hält dich nun davon ab, Kundenobjekte mit den Daten aus der Tabelle zu erzeugen?
  9. Die Indexvariable i benötigst du nicht, da über die next()-Methode der interne Zeiger schon auf die nächste Zeile gesetzt wird. Die Methoden vom ResultSet (z.B. getObject()) erwarten als Parameter nämlich nicht die Zeilennummer, sondern den Spaltenindex. Also entweder als Integer- oder als String. Anstatt i reichst du dort z.B. "Vorname" rein und anstatt getObject verwendest du getString(). while(rs.next()) { System.out.println(rs.getString("Vorname")); }
  10. Das, was du willst, nennt sich O/R-Mapping (Object/Relationship-Mapping). Ganz stumpf heißt es, dass du den Inhalt von Spalte "Kundennummer" in das Klassenattribut "Kundennummer" schreiben musst. Du musst also jede Spalte aus dem Ergebnis auslesen und dementsprechend mappen. Dazu gibt es aber komplette Frameworks, die dies übernehmen, da es je nach Situation nicht trivial ist. Für Java gibt es z.B. Hibernate.
  11. Was meinst du mit "Ordnerveränderungen"? Schau dir die NotifyFilters an. Ist da irgendwas bei, was du überwachen willst? https://msdn.microsoft.com/de-de/library/system.io.notifyfilters(v=vs.110).aspx
  12. Ich hatte bis jetzt auch nur sehr wenig mit Python zu tun gehabt und ich dachte, dass sei ein Schreibfehler gewesen, da ich arange() nicht kannte und auch nicht zum Standard gehört aber offenbar gibt es aber wohl ein Package mit dieser Funktion. Mea Culpa. Ich denke auch nicht, dass das NumPy-Package eingebunden werden sollte, da auf Ganzzahlen beschränkt wurde und die range()-Funktion aus dem Standard unterstützt nur Ganzzahlen. https://www.pythoncentral.io/pythons-range-function-explained/
  13. Nein, eben nicht. Die Formel wird außerhalb der Schleife berechnet und er verwendet dort x und x eine Klasse von Typ "float". x=float print(x) Ausgabe: <class 'float'> Gefordert ist auch laut Aufgabe, dass nur Ganzzahlen verwendet werden sollen und keine Fließkommazahlen. Die Umwandlung ist somit überflüssig. Zu mal die range()-Funktion mit Fließkommazahlen ebenfalls nicht umgehen kann.
  14. Jop. Genau so. Deine beiden Systeme verbinden sich mit RabbitMQ und tauschen darüber ihre Nachrichten aus. System A schickt eine Nachricht an RabbitMQ und System B nimmt dann die Nachricht entgegen und umgekehrt. Der Vorteil ist nun, dass die Systeme nichts voneinander wissen müssen und die Anzahl der Systeme könnten nun auch unendlich sein. Kann sein, dass du noch ein weiteres System hat, was grundsätzlich alle Nachrichten empfangen soll, z.B. fürs Logging, fürs Monitoring oder für ein Event Store. Es gibt nun auch mehrere Lösungsansätze. Je nach dem, wie groß die vom System A erstellte Datensatz ist, kann mich sich nun überlegen, den Datensatz als Nachricht zu verschicken. Ich habe aber schon Systeme gesehen, die legen den Datensatz auf einem Dateisystem oder in eine Datenbank ab und schicken als Nachricht, dass eine neuer Datensatz vorhanden sei und wo er liegt, um somit den Netzwerktraffic gering zu halten. Für C# gibt es sogar noch EasyNetQ, was die Nutzung von RabbitMQ erleichtert.
  15. Schaue dir mal RabbitMQ an. Das ist genau das, das du haben willst.
  16. Dann müsst ihr halt einen pdf-Viewer auf eurer Webseite einbinden und halt keine Speicher-Funktion anbieten. http://mozilla.github.io/pdf.js/
  17. Da ist doch sowieso irrelevant. Selbst wenn man im Browser das Speichern blockieren könnte, befindet sich die Datei im Temp-Verzeichnis und kann von dort aus kopiert werden. Irgendwo muss die Datei ja auf dem Client liegen. Wieso wollt ihr das überhaupt verhindern? Welchen Mehrwert habt ihr davon?
  18. https://downloadcenter.intel.com/product/90590/Intel-H110-Chipset
  19. Nein, hat es nicht, da der Three-Way-Handshake für den Aufbau und Abbau einer TCP-Verbindung verwendet wird. Hier geht es aber um die Datenübertragung während einer TCP-Verbindung. Da die TCP-Verbindung in deiner Aufgabe schon steht, wurde der Three-Way-Handshake schon gemacht.
  20. Nicht nur das. Mit dem Android SDK, wären sie im "Low-Level"-Bereich unterwegs. Sprich, sie hätten die OpenGL ES-Befehle selbst ausführen müssen. Dies ist zwar interessant, wenn man die Funktionsweise einer Grafik-API verstehen möchte aber dies würde dazu führen, dass man den Gaming-Bereich nie erreichen würde, weil man in der ganzen Ausbildung nur mit der Computergrafik beschäftigt wäre. z.B. mit der Linearen Algebra, Rendergleichung, Beleuchtungsmodellen, Reflexion, Rendering-Pipeline, Transformationen, Interpolationen, Triangulierung, Tessellation und dann fehlt noch der gigantische Teil der Physik. In meiner Assistentenausbildung zum Medieninformatiker haben wir in der Computergrafikübung drei Spiele mit C und OpenGL entwickelt: Pong (2D), Pac-Man (2D) und Sokoban (3D) und das war schon recht aufwendig, weil wir u.a. selbst Datenstrukturen für die Levels in Pac-Man und Sokuban überlegen mussten und wie daraus Grafiken werden oder selbst berechnen mussten, wie der Ball in Pong an den Wänden abprallt. Das alles nimmt dir aber Unity 3D schon ab. Unity 3D ist nichts weiter als eine weitere Abstraktionsschicht über dem Android SDK, was eine Activity mit einem OpenGL ES-Fenster, dem Game-Loop und noch viele weitere Funktionen bereitstellt (Physikberechnung, Beleuchtung, etc.). Du brauchst dich also z.B. nicht mehr darum zu kümmern, wie jetzt nun die Implementierung eines Algorithmus aussieht, der ein Rechteck rotieren lässt, wie ein Kreis gezeichnet wird oder wie ein Objekt fällt. Du kannst dir ja mal dies durchlesen, was du alles mit dem Android SDK machen müsstest, nur um ein Dreieck zu zeichnen und das ist nur ein 2D-Objekt ohne Textur. Hast du echt Lust darauf, das alles zu entwickeln? Das Android SDK ist in erster Linie nicht dafür gedacht Spiele zu entwickeln, sondern gewöhnliche Apps, die eine androidtypische GUI haben. Betrachte das Android SDK wie WinForms, WPF oder Qt. Keiner würde auf die Idee kommen, damit ein 3D-Spiel entwickeln zu wollen.
  21. Sehe ich genauso. Es ist egal, ob man jetzt Xamarin.Android oder das Android SDK nimmt. Der Unterschied ist da nicht besonders groß. Die Methoden und Klassen sind da weitgehend gleich. Entscheidend ist, dass man versteht, wie Android tickt. Ein Umschwenken auf Java ist dann nicht mehr ganz so tragisch, wenn man unbedingt mit Java entwickeln möchte.
  22. Sollen denn noch Android-Apps gebaut werden? Sofern ihr Android-Apps noch bastelt, werdet ihr wohl C# und Xamarin verwenden und der Vorteil von Xamarin ist halt, dass ihr Apps schreiben könnt, die nicht nur auf Android laufen, sondern auch unter Windows und iOS. Im Spielebereich wird dann wohl Unity verwendet und unter Unity verwendet man ebenfalls C#. Da ist es schon Sinnvoll Java zu streichen und komplett auf C# zu setzen. So kann man Einarbeitungszeit einsparen und die Zeit in den relevanten Themen stecken. Von daher denke ich mal, passt das schon recht gut. Es sollte halt klar sein, dass eine Ausbildung oder Umschulung die Softwareentwicklung nicht vollumfänglich erfassen kann, denn dafür ist das Gebiet einfach zu groß und daher muss man eben Abstriche im Kauf nehmen.
  23. Nein... MD5 ist keine Hashfunktion für Passwörter und sollte dafür auch nicht verwendet werden.
  24. Kommt drauf an. Dependency Injection ist zwar ein schönes Mittel, um konkrete Abhängigkeiten zu entkoppeln aber die Abhängigkeiten bleiben bestehen, wenn auch nur in Form eines Interfaces. Dependency Injection kann somit auch schnell zur Pest werden, wenn man die Klassen nicht klein genug hält und man plötzlich 10 oder mehr Abhängigkeiten über den Konstruktor in die Klasse reinwirft. Dann muss man wieder 10 oder mehr Klassen mocken, bevor man die eigentliche Klasse testen kann. Das minimiert nicht den Testaufwand. Um dieses Symptom zu bekämpfen, wurden dann IoC-Container entwickelt, die dann über ein Bootstrapping die Abhängigkeiten der Klassen auflöst und wie von Geisterhand die Objekte instanziiert. Meiner Meinung nach löst dies aber nicht das Problem, sondern man verlagert es nur an eine andere Stelle und bläht sein Code mit Infrastruktur auf. Zusätzlich können auch Fehler im Bootstrapping auftauchen und plötzlich werden dann die falschen Abhängigkeiten in eine Klasse injiziert. Also muss man auch das Bootstrapping testen. Unter Umständen kann es dann auch soweit kommen, dass man den Code nicht mehr lesen kann, da man nicht mehr weiß, welche Implementierung gerade wo verwendet wird. Meiner Meinung nach, benötigen wir ein anderes Verständnis über die Softwareentwicklung aber ich denke, das würde jetzt hier zu weit führen. tl;dr: Dependency Injection, ja ist ein gutes Mittel aber das Drumherum muss auch stimmen, um die Vorteile genießen zu können. @dnyc: Versuche doch, einen Ausbildungsplatz zu bekommen. Bei deiner vorherigen Ausbildung als IT-Kaufmann kann ich mir vorstellen, dass du auch die Ausbildung verkürzen kannst. Ich denke mal, dass es in der heutigen Zeit Quereinsteiger doch sehr schwer haben. PHP ist auch keine allzu moderne Sprache mehr und inzwischen auch schon etwas verpönt, sodass man auch kaum Chancen hat, eine Firma zu finden, die bereit sind, einen Quereinsteiger in der PHP-Entwicklung einzustellen. Also Frontend-Entwickler mit Angular oder React hat man derzeit wohl bessere Chancen. Allerdings sehe ich heute nur noch eine Chance als Praktikant in die Branche reinzukommen, wenn man nicht eine Ausbildung oder ein Studium anstrebt. Besonders Startups suchen häufig Praktikanten. Bei Facebook und Co. wird aber nicht ausschließlich PHP verwendet. PHP wird überwiegend für die Logik verwendet und ist mehr historisch begründet, weil Zuckerberg damals mit PHP angefangen hat. Inzwischen mussten sie aber vieles tun, damit es überhaupt performant bleibt, indem sie z.B. ein Compiler gebaut haben, der den PHP-Code in Maschinensprache übersetzt. Auch das JavaScript-Framework React stammt von Facebook. Die Klassische Entwicklung mit PHP hat nämlich den Nachteil, dass das Erstellen des HTML-Dokumentes auf dem Server geschieht. Wenn jetzt nun eine Million Nutzer eine klassische PHP-Webseite aufrufen, müssen die Server eine Million HTML-Dokumente erzeugen, die wohlmöglich zu 95% immer gleich aussehen (Header, Footer, ...). Das ist sehr rechenintensiv. Da kommen dann Angular oder React ins Spiel und verlagern die Erstellung der HTML-Dokumente auf den Client (der Browser), da der Client eh die Leistung dafür hat. Auf diese Weise entlastet man den Server enorm. Der Server sendet also nur noch die reinen Daten zum Client und der Client generiert aus diesen Daten die Ansicht. Ein weiterer Vorteil ist nun, dass Angular oder React nicht die Webseite jedes Mal neu generieren, sondern im DOM einfach nur die Elemente austauschen. So bekommt man das Gefühl, dass es sich nicht um eine Webseite handelt, sondern um eine App. Das Prinzip nennt sich dann auch Single-Page-Application.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...