Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Whiz-zarD

User
  • Registriert

  • Letzter Besuch

Alle Beiträge von Whiz-zarD

  1. Jetzt kennst du drei und ich hab deutlich mehr gelernt als die meisten in ihrer Fachinformatiker-Ausbildung. Es ist sogar eher so, dass die Leute die Ausbildung auf dieser Schule abbrechen und eine Fachinformatiker-Ausbildung anfangen, weil das leichter ist. Und nein, ein technisches/berufliches Gymnasium ist keine Assistent-Ausbildung. Dort erwirbt man mit der Abiturprüfung die Hochschulreife, wie auf einem allgemeinenbildenden Gymnasium. Allerdings sind diese Gymnasien technisch orientiert und haben auch berufsbezogene Fächer, wie z.B. sowas wie Drehen, Fräsen, Materialkunde oder auch Netzwerktechnik und Programmieren. Die Fachrichtung muss man dann sich im Vorwege überlegen.
  2. Ich denke zukünftig wird es auch weniger SQL werden. SQL passt einfach nicht in moderne Sprachkonzepte. Man sieht ja z.B. dass man bei objektorientierten Sprachen erstmal einen O/R-Mapper braucht, um mit den Daten arbeiten zu können und es damit auch immer wieder Probleme gibt. Ich denke mal, die Zukunft gehört Datenbanken, die eine Programmierschnittstelle vorgeben, wie man es bei NoSQL-Datenbanken kennt. Auch passen relationale Datenbanken schlechter in ein agiles Mindset, weil der Aufwand, eine relationale Datenbank anzupassen höher ist, als bei schemalosen Datenbanken, wo man einfach nur seine Domänenmodelle in der jeweiligen Programmiersprache anpasst. Aber die Programmierung selbst wird sich wohl in der Zukunft noch stark ändern. Es wird in Richtung funktionale Programmierung gehen. Den Wandel sieht man ja schon in diversen Sprachen. Wie z.B. das MapReduce-Konzept in z.B. JavaScript und Python, LINQ in C# oder die Streams in Java. Ein weiterer Trend aus der funktionalen Programmierung, ist der Begriff "immutable". Also unveränderbarkeit, um Seiteneffekte in der Entwicklung auszuschließen, um parallele und nebenläufige Datenverarbeitung zu vereinfachen. Wenn also Daten nicht veränderbar sind, braucht man sie auch nicht mehr für den parallelen Zugriff sperren. Es zeigt sich also, dass die Entwickler sich selbst in die Schranken weisen. Man fing an, den Entwicklern alle Freiheiten zu geben. Mit großer Macht kommt auch große Verantwortung, wie man es z.B. in C sieht aber es ergaben sich viele Probleme, wie z.B. Memory Leaks. Daraus sind dann Konzepte, wie z.B. der Garbage Collector oder Typüberprüfungen entstanden und da ja Parallelität und Nebenläufigkeit heute an der Tagesordnung steht, setzt man die nächsten Schranken, indem die Daten sich nicht mehr ändern dürfen. Einen weiteren Trend sieht man beim Minimalismus, weil dies den Einstieg erleichtert. z.B. in .NET 6 wurde für C# nun die Minimal API vorgestellt, die den Boilerplatecode der Program-Klasse und der Main()-Methode wegabstrahiert, um den Einstieg in ASP.NET Core zu erleichtern. Es erinnert jetzt stark an Nodejs, wo man auch mit wenigen Zeilen einen Webserver mitsamt Konfiguration starten kann. Welche Programmiersprache jetzt letzendlich gewinnt oder verliert, kann keiner voraussehen. Es sind aber klare Trends sichtbar und die Sprachen müssen sich darauf einstellen können. Wie im echten Leben unterziehen sich auch Programmiersprachen einem Wandel. Wenn ich aber eine Prognose abgeben sollte, denke ich, dass man mit JavaScript nicht schlecht fahren wird. Ich denke mal, dass viele Firmen eine einzige Sprache einsetzen wollen, die sowohl im Frontend- als auch im Backend benutzt werden kann, um auch garantiert Mitarbeiter zu finden und da etabliert sich derzeit stark JavaScript.
  3. Ich hab vor gut 20 Jahren mal selber AMVs geschnitten und war auch in der Anime Fansub-Szene aktiv. Im Grunde sind AMVs illegal, weil man urheberrechtlich geschütztes Material verwendet. Ich nenne keine Links, wo man Rohmaterial runterladen kann. Vermutlich funktionieren die Links eh nicht mehr. 😅 Aber das Rohmaterial kann auch von DVDs/Blu-Rays stammen. Früher hab ich hauptsächlich mit Adobe Premiere, After Effects und AVISynth (eine Scriptsprache für Videobearbeitung) gearbeitet. Inwiefern AVISynth heutzutage noch verwendet wird, weiß ich nicht. Das dürfte inzwischen schon recht veraltet sein. Ich hab damit aber schon lange nichts mehr am Hut. AVISynth war aber ganz nett, um das Rohmaterial zu bearbeiten, wie z.B. Entfernung von Kompressionsartefakten, Resizing, Farbkorrektur oder Deinterlacing.
  4. Ah, okay. Dann hab ich dich missverstanden.
  5. Ja und? Weil es nur drei Zahlen sind, soll man sich nicht mit Sortieralgorithmen beschäftigen?
  6. Es sind erstmal nur drei Zahlen. Also nichts, was wirklich lange dauert. Auch bei einer Laufzeit von O(n²). Außerdem berücksichtigt deine Lösung nicht, dass es beliebig viele Zahlen geben kann, die du sortieren musst. Und klar, es gibt weitaus bessere Sortieralgorithmen aber der TE steht am Anfang seines Studiums und da ist oft Bubblesort und andere Sortieralgorithmen ein Thema.
  7. Joa, so hätte ich es auch einfach gemacht. Einfach ein neues Array mit den drei Elementen erzeugen. Dieses Array sortieren und die Elemente wieder entsprechend an ihre Positionen zurückgeschrieben. Einfach das Problem in Teilprobleme zerlegen und sie nach und nach abarbeiten. Und zudem auch noch falsch, da da der größte Index nicht die Länge vom array ist, sondern Länge - 1. Der Index fängt nämlich bei 0 an... Weil wir nun mal kein Forum sind, das die Hausaufgaben macht. Natürlich könnte ich schnell eine Lösung hinrotzen aber davon hat der TE nichts. Ich hab ihn ja ein Hinweis zum Bubblesort-Algorithmus gegeben, den er sich mal anschauen sollte, da ich denke, dass die Aufgabe genau darauf hinaus wollte. Allerdings mit dem Kniff, dass nicht das gesamte Array sortiert werden sollte, sondern nur einzelne Elemente.
  8. Im Texteditor gibt es ein Button, mit dem du Code einfügen kannst. Im Grunde hast du ja schon richtig erkannt, dass du die Zahlen sortieren musst und dass du das Sortieren mit den Tauschen der Position realisieren kannst. Diesbezüglich schaue dir dazu mal den Bubblesort-Algorithmus an.
  9. Es gibt keine Arrays mit unbekannter Länge. Die Länge eines Arrays ist immer bekannt, sie als ein ganzer Block im Speicher liegen. Die Größe muss also schon beim erstellen bekannt sein und die Größe lässt sich auch nicht verändern. Wie sehen denn ansonsten deine Versuche aus und was verstehst du nicht?
  10. Du weißt wie viele Pixel ein Bild hat und du weißt auch, wie viele Bits ein Pixel benötigt. Also kannst du doch ausrechnen, wie viele Bits ein Bild benötigt. Du weißt du auch, wie viele Bits pro Sekunde übertragen werden. Also kannst du doch nun ausrechnen, wie viele Bilder pro Sekunde übertragen werden.
  11. Die Fibonacci-Folge ist ein klassisches Beispiel für eine Rekursion, da die Formel selbst eine Rekursion ist. f(n) = f(n-1) + f(n-2) Nein. Jede Rekursion lässt sich als Schleife abbilden aber nicht jede Schleife als Rekursion. Jeder Methodenaufruf speichert seine Rücksprungadresse auf dem Stack, damit das Programm weiß, an welche Stelle des Codes zurückgegangen werden muss, wenn die aufgerufende Methode durchlaufen wurde. Je tiefer man dann in die Rekursion einsteigt, also je häufiger sich eine Methode selbst aufruft, desto mehr Rücksprungadressen befinden sich auf dem Stack. Der Stack ist aber nicht unendlich groß und wenn kein Platz mehr vorhanden ist, steigt das Programm aus und wirft eine Stackoverflow Exception. Also z.B. Endlosschleifen, wie man sie halt z.B. in grafischen Oberflächen einsetzt, wären mit einer Rekursion nicht möglich. Weil jedes Mal Daten auf dem Stack gelegt werden, sind Rekursionen (zumindest in imperativen Sprachen) langsamer als Schleifen und sollten auch nur mit Bedacht eingesetzt werden. Eine Schleife ist aus performancetechnischen Gründen zu bevorzugen. Wenn die Performance und die Rekursionstiefe keine Rolle spielen und eine Rekursion die Lesbarkeit des Codes erhöht, dann kann man eine Rekursion nehmen. Ansonsten eine Schleife.
  12. Zuhause hab ich einen höhenverstellbaren Tisch, um ihn in die richtige Position zu bringen. In Büro hab ich einen elektrisch höhenverstellbaren Tisch und obwohl ich ein Rückenleiden habe, finde ich die elektrisch höhenverstellbaren Tische viel zu überschätzt. Es ist vollkommen egal, ob man nun statisch sitzt oder statisch steht. Beides ist nicht gut. Wichtig ist, dass man in Bewegung bleibt. Das kann man auch sitzend machen und ab und an im Stuhl lümmeln ist auch positiv. Da man auch regelmäßig Pausen machen sollte, kann man dies auch gleich mit ein bisschen Bewegung verknüpfen und dabei aufstehen.
  13. Versteift euch nicht an der Aussage: "Ich hab kein Bock zu lernen". Das hab ich nach meinem Realschulabschluss auch gesagt. Damit ist aber nicht gemeint, dass man jetzt sein Gehirn ausschaltet und Stumpf an einem Fließband die gleichen fünf Arbeitsschritte, bis zu seinem Lebensende, machen möchte. Man möchte einfach in die Berufswelt raus und arbeiten. @point_00 Der Schulabschluss spielt später kaum noch eine Rolle. Der ist eigentlich nur wichtig für den Einstieg, denn je besser/höher dein Abschluss, desto eher bekommst du auch ein Ausbildungsplatz. Als Azubi bekommt man aber erstmal nur eine Ausbildungsvergütung und die ist in Firmen festgelegt. Unabhängig vom Schulabschluss. Später, wenn man mehr in Richtung Management/Teamleiter machen möchte, dann wäre ein Studiumsabschluss vom Vorteil. Die einzige Frage, die du dir erstmal stellen solltest, ist: "Warum Fachinformatiker?".
  14. In diesem Zusammenhang solltest du dir mal CSS anschauen. Das Design sollte nicht im HTML-Dokument gemacht werden, sondern in CSS. Das macht änderungen später einfacher, weil das Design an einer Stelle definiert wird und nicht überall verteilt. https://jsfiddle.net/xvoLr16h/ <!DOCTYPE html> <html> <head> <style> table { border: 1px solid black; } .even { color: red; } .odd { color: black; } </style> </head> <body> <table> <tr> <td class="odd">1</td> <td class="even">2</td> <td class="odd">3</td> <td class="even">4</td> <td class="odd">5</td> <td class="even">6</td> <td class="odd">7</td> <td class="even">8</td> <td class="odd">9</td> <td class="even">10</td> </tr> <tr> <td class="even">2</td> <td class="even">4</td> <td class="even">6</td> <td class="even">8</td> <td class="even">10</td> <td class="even">12</td> <td class="even">14</td> <td class="even">16</td> <td class="even">18</td> <td class="even">20</td> </tr> </table> ... </body> </html>
  15. In Bereich IoT kann dir Physik sehr wohl was bringen.
  16. Man sollte auch von einer Ausbildung nicht viel erwarten und das meine ich nicht negativ. Selbst wenn man in einer Firma arbeitet, die spezielle Kundenbedürfnisse implementieren, arbeitet man nicht mit zig unterschiedlichen Programmiersprachen und in einem unendlich großen Technologiestack. Das kann sich keine Firma leisten. Es müssten ja für jede Programmiersprache und Technologie eigene Entwickler angeschafft werden, da man eben nicht unbedingt davon ausgeht, dass man Entwickler findet, die Experten in Java, C#, JavaScript und Python gleichzeitig sind. Auch hier konzentrieren sich die Firmen auf bestimmte Sprachen und Technologien und dann ist es auch egal, was man entwickelt. Inhouse-Entwicklungen können sogar auch ein Vorteil sein, da man selber der Kunde ist. Neue Technologien lassen sich da oft schneller einführen, als bei einem externen Kunden. Darum setzt man ja heutzutage vielfach auf Cloud-Dienste, weil man nicht genötigt wird, seine Systeme so zu konfigurieren, um die Anwendung zum Laufen zu bekommen. Ich als Kunde muss dann nicht z.B. ein Web- und ein Datenbankserver bereitstellen. Das kann schön der Dienstanbieter selber auf seiner Seite machen.
  17. Das gilt nur für die Dinge, die man auf dem Bildschirm flimmern sieht. Alte Hardware/Software wird durch neue Hardware/Software abgelöst. Die Benutzung der neuen Hardware/Software ändert sich aber die Grundlagen bleiben.
  18. IT-Sicherheit != Ich hacke Facebook/Meta Der Begriff "IT-Sicherheit" ist extrem breit gefächert und muss nicht mal was mit Softwareentwicklung zu tun haben. Außerdem gibt es weitaus mehr als nur Google/Spotify und Startups. Es gibt auch Unternehmen, die sich auf Cybersecurity spezialisiert haben. Was Cybersecurity angeht, spielt Google nicht mal in der obersten Liga mit. Da gibt es ganz andere Firmen, die aber für Endverbraucher weitaus unbekannter sind, wie z.B. CrowdStrike oder ZScaler. Die Lösungen von ZScaler werden sogar z.B. von Microsoft und Google eingesetzt. Auch Google kocht nur mit Wasser und holen sich Berater ins Haus und Cybersecurity-Firmen, die vor allem eine beratene Tätigkeit haben, gibt es aber auch hierzulande. Auch ist nicht alles Gold, was glätzt. z.B. kürzt Google derzeit das Gehalt, wenn man im homeoffice arbeiten möchte. Apple möchte Homeoffice am besten ganz verbieten. In beiden Unternehmen gibt es gerade enorme Streitigkeiten. Und was Google Project Zero angeht: Das Team ist so klein, dass es nicht mal eine eigene Webseite bekommt, sondern einfach nur ein Blog auf blogspot.com ist. Mag sein, dass man bei Google und co. viel verdienen kann (muss aber nicht) aber dort ist es auch nicht viel besser und anders als in anderen Firmen.
  19. Wenn ich mir aber das anschaue, dann sieht es für mich so aus, als ob der TE überhaupt nicht weiß, was er will aber hauptsache in einem MANGA-Unternehmen (Meta (demnächst Microsoft), Amazon, Netflix, Google, Apple) fett Kohle verdienen. Auch klingt es für mich sehr überheblich. Erinnert mich daran: Klar, braucht man im Leben auch Ziele aber die Ziele sollten auch schon realistisch bleiben.
  20. Ich denke auch, dass er erstmal daran liegt, dass nicht jedes Unternehmen (Inhouse-)Software entwickelt aber durchaus Administratoren und Techniker für ihre IT-Infrastruktur benötigen und es deswegen mehr Unternehmen gibt, die FISIs ausbilden. Darüber hinaus hab ich auch den Eindruck, dass zwar viele irgendwas mit Computer machen wollen aber bloß nicht Software entwickeln, weil man zu schlecht in Mathe sei. Es gibt aber noch die Gruppe Azubis, die zwar Anwendungsentwicklung lernen, weil sie voll krass Facebook hacken wollen und dann doch FISI lernen, weil sie sich nicht informiert haben und Anwendungsentwicklung doch nicht so funktioniert, wie Hollywood immer weis machen möchte. ich hatte gedacht, dass diese Gruppe inzwischen kleiner geworden ist, aber der Chat bei der virtuelle Einschulung der neuen Azubis in der Berufsschule, wo auch die Ausbilder teilnehmen durften, haben mich des besseren belehrt.
  21. Der TE spricht über eine private Nutzung von Office und nicht von einer beruflichen Nutzung. Falls Office also eh schon beruflich auf dem Firmenrechner installiert ist, dann braucht die Firma da auch speziell für den Azubi nichts zur Verfügung stellen...
  22. Wie gesagt, das lässt sich nicht programmieren. Wie soll das auch gehen? In der Informatik arbeitet man mit digitalen Signalen. Digitale Signale haben Stufen. Ein analoges Signal ist stufenlos. Ein D/A-Wandler tastet das Signal ab, indem man z.B. 8 Bits nimmt und sie mit Widerständen so schaltet, dass jeder Bit für die Verringerung des Gesamtwiderstandes beiträgt. Wenn also alle 8 Bits geschaltet sind, ist auch der Widerstand am geringsten und somit die Spannung am höchsten. Dennoch wird das Signal weiterhin stufen haben, die dann mit Hilfe von Filtern geglättet werden können. Der ESP32 besitzt z.B. zwei 8-Bit-D/A-Wandler. Der Arduino hingegen macht es anders. Hier verwendet man eine Pulsweitenmodulation. Das Signal ist weiterhin ein digitales Signal (Rechteckspannung), das oszilliert bzw. pulsiert. Das Signal wechselt also in einem bestimmten Takt immer von 0 auf 1 und umgekehrt. Hier nutzt man also die Trägheit der Bauelemente aus, die man damit steuern kann (z.B. LEDs oder Motoren). Je stärker es pulsiert, desto heller leuchtet die LED/rotiert der Motor, ohne dabei die Spannung zu ändern. Wenn du einfach sowas mit einem fiktiven D/A-Wandler simulieren möchtest, dann mache doch einfach eine Interpolation bzw. ein Dreisatz. Du hast z.B. Werte von 0 bis 255 und eine Ausgangsspannung von 5V. Der Wert 123 wäre 2,41V, da 5V / 255 * 123 = 2,41V und genau das versucht ein D/A-Wandler hinzubekommen aber wie gesagt, die Werte sind weiterhin stufig, da 124 2,43V wäre. Wir haben also eine Stufe von 0,02V und um diese Stufe wegzubekommen, verwendet man Filter, die für einen stufenlosen Anstieg sorgen. Weil man einen D/A-Wandler nicht programmieren kann, lassen sich auch z.B. Soundchips aus der 8-Bit-Ära eben nicht zu 100% emulieren, da sie integrierte Oszillatoren, Filter und A/D-Wandler haben, die für die Generierung des Analogen Signals zuständig sind. Man konnte den Charakter dieser Chips zwar ganz gut nachahmen aber eben nicht zu 100% akkurat.
  23. Dann mach das doch. Nur weil du Objekte in eine Methode reinreichst, musst du doch nicht alle Eigenschaften eines Objektes benutzen. Du kannst sowieso ein Spieler nicht mit einer Waffe vergleichen. Du musst sowieso die Werte miteinander vergleichen. public bool CanPlayerHandleWeapon(Player player, Weapon weapon) { return player.Strength >= weapon.Strength && player.Agility >= weapon.Agility ... }
  24. Wie soll das funktionieren? C++ ist eine Programmiersprache, wie mit digitalen Werten arbeitet. Sowas wie Analog kennt die Sprache nicht. Die Digital-Analog-Wandlung passiert im Bereich der Elektrotechnik. Dafür gibt es spezielle Bauteile, die die digitalen Stufen mit speziellen Filter wieder glättet. Dies ist aber nur ein Näherungswert, da der echte Wert mit der Quantisierung der Analog-Digital-Umwandlung verloren gegangen ist. https://de.wikipedia.org/wiki/Digital-Analog-Umsetzer#Funktion
  25. Und was hat das mit async/await zu tun? Zur Klarstellung: Async-Methoden laufen nicht in einem eigenen Thread. Sie laufen im selben Thread aber sie blockieren nicht den Thread, da sie im sog. Sychronisierungskontext des Threads verwaltet werden. Ich stecke da nicht ganz so tief drinnen aber es möglich, dass im Sychronisierungskontext tatsächlich ein Threadpool bereitgestellt wird. Aber wie gesagt, da stecke ich nicht so tief drinnen und wäre auch nur gefährliches Halbwissen von mir. Ein Vorteil von async/await hast du schon genannt: Der aktuelle Thread wird nicht blockiert. Grafische Oberflächen (UI) laufen in einem sog. UI-Thread. D.h. die UI darf nur in einem einzigen Thread geändert werden. UIs laufen in einer Endlosschleife und sie werden immer wieder neu gezeichnet. Das heißt aber auch, dass der UI-Thread nicht blockiert werden darf. Wenn du aber eine Logik ausführst, die etwas länger dauert, dann wird der UI-Thread blockiert und die UI kann nicht mehr reagieren. Das bedeutet auch, dass du z.B. keine Progressbar anzeigen lassen kannst und Windows würde auch melden, dass die Anwendung nicht mehr reagiert. Du hättest auch nicht die Möglichkeit z.B. einen Abbrechen-Button zu implementieren, weil der Event des Buttons erst aufgerufen werden kann, wenn deine Logik durchgelaufen ist und die UI wieder reagieren kann. Mit async/await würdest du diese Logik, wie du schon sagst, in einen separaten Bereich auslagern, um den UI-Thread nicht zu blockieren. Ein anderes Beispiel wäre ein asynchrones Logging, um z.B. nicht auf die Festplatte zu warten, bis die Meldung endlich in die Datei geschrieben wurde. Ein weiterer Vorteil wäre, dass du z.B. mehrere Tasks gleichzeitig ausführen kannst. z.B. die Methode Task.WaitAll() nimmt ein Array von Task entgegen, die alle gleichzeitig gestartet werden können. z.B. möchtest du vielleicht ein Dashboard entwickeln, auf dem mehrere Kennzahlen darstellt werden soll. Mit Async/Await könntest du dafür sorgen, dass alle Kennzahlen gleichzeitig ermittelt werden und nicht jede einzelne sequentiell. Klar, kann man das auch alles mit Backgroundworkern bauen aber async/await nimmt einem sehr viel Arbeit ab. Zumal Backgroundworker tatsächlich einzelne Threads erstellen.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.