Alle Beiträge von Whiz-zarD
-
Java - Verbindung von Applikation und Webseite
Eine Möglichkeit wäre per Sockets. Mit einem Socket können via Netzwerk (per TCP oder UDP) zwei Prozesse, miteinander kommunizieren. Du müsstest dafür ein Socket in der Java-Applikation öffnen. Dann kann der Webserver über diesen Socket mit der Applikation kommunizieren. Wie man eine Socket-Verbindung aufbaut, findest du z.B. hier. Eine andere Möglichkeit wäre über eine Message Queue, wie z.B. RabbitMQ. Dies ist eine separate Applikation. Die Java-Applikation registriert sich an der Message Queue und der Webserver schickt Nachrichten an die Queue und die Java-Applikation nimmt dann die Nachrichten entgegen. Auf der RabbitMQ-Webseite findest du Tutorials zu allen Einsatzszenarien.
-
Einarbeitung/Hilfe Backend Entwicklung
Die Antwort eines Softwareentwickler: It depends. Ich würde mal sagen, es kommt immer auf das Team und auf die Firma an. Es ist gut, wenn der Azubi ins Team integriert wird und auch Verantwortung übernimmt. Dennoch muss man bedenken, dass es ein Azubi ist und man ihn nicht als Entwickler mit mehrjähriger Berufserfahrung ansehen sollte und ihn auch Aufgaben geben, für die er sich gewachsen fühlt. Wenn es für dich zu viel Stress bedeutet, würde ich mal mit dem Ausbilder sprechen. Menschen, die keine Entwickler sind, haben oftmals ein falsches Bild von der Softwareentwicklung. Das ergeht mir auch fast jeden Tag, wenn ein Kundenverantwortlicher ins Büro kommt und fragt, wie lange wir an der Entwicklung für Feature X benötigen und das am besten noch gleich in 10 Minuten im Detail erklären, wie wir es machen würden, weil er gleich mit den Kunden telefoniert. Das ist leider Alltag in vielen Firmen. Da muss man die Leute erziehen und denen klarmachen, dass das alles nicht so einfach ist. Es ist nun mal nicht mit ein paar Mausklicks getan. Na klar kannst du dir eine Testumgebung zu Hause aufbauen und damit rumspielen. Du installierst dir halt einen SQL-Server (z.B. MySQL oder MariaDB) und dann kannst du mit Java schon darauf zugreifen. Alternativ kannst auch auf einen SQL-Server verzichten und SQLite verwenden. Hibernate selber ist ja ein. sog O/R-Mapper. Es stellt dir eine Abstraktion zwischen der objektorientierten Welt in Java und der relationalen SQL-Welt dar. Hibernate baut im Hintergrund die jeweiligen SQL-Queries und schickt diese zur Datenbank. Dann kommt die Antwort vom Server zurück und Hibernate baut daraus deine Klasseninstanzen, mit denen du dann in Java arbeiten kannst. Ich bin jetzt nicht so ganz firm in Hibernate aber ich weiß, dass Hibernate auch die jeweiligen SQL-Queries loggen kann, sodass du dir mal anschauen kannst, was er da eigentlich generiert. Die Verbindung zwischen deiner Anwendung und dem SQL-Server erfolgt über die JDBC-Schnittstelle. Wenn du der englischen Sprache mächtig bist, kannst du ja mal in deiner Firma nachfragen, ob sie dir ein Account bei Pluralsight spendieren könnten. Da findet man sehr viele Tutorials und andere Videos von professionellen Entwicklern. Allerdings ist Pluralsight nicht kostenlos aber ich finde, es ist die Investition wert.
-
Android oder IOS hinsichtlich Umschulung
Warum denn nicht Swift und Java? Wenn du eh schon ein iPhone und ein Mac hast, wo liegt denn da das Problem privat mit Swift zu arbeiten, während man in der Schule Java benutzt?
-
Logisches Datenbankschema
Whiz-zarD hat auf einen Beitrag in einem Thema geantwortet in Anwendungsentwickler und ProgrammiererEs gibt da keine Silberkugel beim Design einer relationalen Datenbank. Für jedes Problem muss individuell entschieden werden, was nun die geeignete Form ist. Auch eine Normalisierung ist nicht für jeden Fall geeignet. Es gibt also viele Fälle, wo eine denormalisierte Tabelle mehr Sinn macht, als eine normalisierte. Eine 1:1 Relation kann also durchaus Sinn machen. Beispiel: Du hast mehrere Gruppen von Personen. Du hast Angestellte, Manager und Kunden. Jede Gruppe besitzt gemeinsame Daten, wie z.B. den Namen aber es gibt unterschiedliche Daten. Ein angestellter oder ein Manager hat ja keine Kundennummer aber ein Kunde schon. Um die Person-Tabelle nicht unnötig breit zu machen, machst du eine Person-, eine Angestellte- und eine Manager-Tabelle. In Person speicherst du die globalen Daten und die Angestellte- und Manager-Tabelle die jeweiligen spezifischen Daten haben dann eine 1:1 Relation zur Person-Tabelle. Ein anderes Beispiel: Aufgrund von Performance willst du eine Tabelle auf eine SSD oder sogar in den Arbeitsspeicher (In-Memory) schieben aber in dieser Tabelle befindet sich ein BLOB-Feld, was sehr groß sein kann (mehrere GBs). Dieses Feld wird aber nicht immer benötigt bzw. muss nicht schnell geladen werden können. Um die SSD oder den Arbeitsspeicher nicht unnötig zuzumüllen, wird das BLOB-Feld in eine Separate Tabelle ausgelagert, die dann auf einem langsameren Speicher liegt und mit einer 1:1-Relation verbunden.
- Was programmieren FIAEs in der Ausbildung?
- [Suche] Die Geschichte des Fachinformatikers
-
Frage bezüglich Bücher / Ausbildung
Ich würde schauen, welche Technologien und Programmiersprachen der Betrieb verwendet und dann gezielt nach Büchern suchen, sofern der Betrieb nicht schon welche besitzt. Alles andere macht aus meiner Sicht wenig Sinn.
-
Erklärung der Codes
Richtig. Was macht denn eine if-else-Abfrage? http://www.if-schleife.de
-
FISI oder FIAE???
Und so sieht dann auch die Software aus... Ich höre immer wieder von Firmen, die versuchen ein großes Projekt mit Studenten aufzubauen. Zuerst klappt es auch wunderbar. Die Software nimmt schnell Form an und die Kunden sind zufrieden aber dann kommt die Nüchternheit: In jeder neuen Version gibt es immer mehr Bugs und die Releasezyklen werden immer länger... Unittests? Integrationstests? Gibt es nicht. Clean Code? Codemetriken? Was ist das? SOLID? DRY? Datenkapselung? Nie gehört.
-
Frage zu PHP-Übungsaufgabe
http://php.net/manual/de/language.types.array.php Arrays in PHP sind eine Liste von Schlüssel-Wert-Paaren. Der Pfeil bedeutet, dass der Schlüssel einem Wert referenziert. Wenn du $wochentage["Sun"] eingibst, erhälst du "Sonntag", weil der Schlüssel "Sun" den Wert "Sonntag" referenziert.
-
FIAE: Fachgespräch VS und IT Fragen
Das Frage ich mich auch.
- Großprojekt / Langzeitprojekt Ideen
-
FISI oder FIAE???
Was für ein Quatsch... Wie soll man da auch großartig helfen können? Wir kennen diese Person nicht persönlich und auch nicht seine Neigungen. Auch für Freunde und Familie wird es schwer, die Frage zu beantworten. Das muss er wohl oder übel selbst mit sich ausmachen, was für ihn besser geeignet wäre. Das einzige, was ich empfehlen könnte, wäre ein Praktikum zu absolvieren. z.B. als Softwareentwickler, um mal zu sehen, ob das Thema überhaupt einen schmeckt. In meiner Ausbildung hatte ich auch viele Kommilitonen, die sich anfänglich für die Softwareentwicklung interessiert haben aber später doch die Ausbildung abbrachen, weil es doch schwieriger war, als sie dachten.
- C# 4-Gewinnt Amateurversuch
- C# 4-Gewinnt Amateurversuch
-
C# 4-Gewinnt Amateurversuch
Es wird eine Exception geworfen. Sprich es kommt zu einem Fehler. Deswegen macht er nicht weiter. Allerdings bekommst du die Exception nicht mit, da sie vom Debugger nicht abgefangen wird. Aktiviere mal alle Exceptions unter Debuggen -> Fenster -> Ausnahmeeinstellungen (auf englisch: Debug -> Window -> Exception Settings). Dann solltest du auch die Exceptions bekommen, warum er nicht weitermacht.
-
C# 4-Gewinnt Amateurversuch
Der Ansatz ist schon mal richtig. Schaue dir aber mal x und y an und versuche mit dem Debugger mal herauszufinden, welche Werte sie bei jedem Durchlauf haben. Vielleicht kommst du selber drauf, was los ist. Allerdings brauchst du x und y im Grunde gar nicht. Die Werte lassen sich auch mit einer einfachen Multiplikation errechnen: 1 * 50 = 50 2 * 50 = 100 3 * 50 = 150
-
C# 4-Gewinnt Amateurversuch
Es kommt eine IndexOutOfRangeException, wenn i = 6 ist. Der Grund ist, du hast zwar die erste Dimension vom Array mit einer Größe von 6 definiert aber der Index fängt bei 0 an zu zählen. D.h. wenn i gleich 6 ist, greifst du somit quasi auf das 7. Element zu und das liegt außerhalb des Bereichs und es kommt zu einer Exception. Das gleiche gilt auch für f. Allerdings sehe ich noch einen weiteren Fehler: picbox[6, f] Die 6 müsste erst mal eine 5 sein aber das ist nicht der Fehler, den ich meinte. Mit der ersten for-Schleife definierst du nur die oberste Zeile und mit der zweiten for-Schleife die letzte Spalte. Zumal ist das Codeverdoppelung, was man vermeiden sollte. Es hat also noch Verbesserungspotenzial. Du kannst auch Schleifen in einer Schleife schreiben. Also: for(...) { for(...) { ... } }
-
Weiterbildungsmöglichkeiten? Beide Ausbildungen hintereinander - FISI & FIAE
Eine Ausbildung ist aber dennoch was anderes, als das Lernen aus Büchern oder Videos. Lernen aus Büchern oder Videos werden dir keinen guten Programmierstil vermitteln können, weil du u.a. kein Code Review durchführen kannst. Mit wem auch? Gerade im Dialog mit anderen Entwicklern lernt man sehr viel. Es bringt ja nichts, wenn man zwar jedes Problem schnell gelöst bekommt, man aber der einzige ist, der den Code überhaupt versteht oder der code nur Spaghetticode ist. Man sieht ja auch, dass der Trend vermehrt zum Pair-Programming geht. Es dauert zwar etwas länger aber der daraus resultierende Code ist lesbarer und stabiler.
-
Weiterbildungsmöglichkeiten? Beide Ausbildungen hintereinander - FISI & FIAE
Im Berufsleben kommt es eher später darauf an, welche Referenzen man vorzuweisen hat. Wenn ein FISI später hauptsächlich Entwicklertätigkeiten übernahm, hat man auch Chancen, als Entwickler irgendwo eingestellt zu werden. Es bringt also nichts, wenn du den AEler hinten ranhängst und dann doch nur Server administrierst. Man sollte aber auch nicht denken, nur weil man FIAEler ist, dass man sich plötzlich auf alle Entwicklerstellenangebote bewerben kann, denn auch hier kommt es auf die Referenzen an. Jemand, der z.B. hauptsächlich mit C# oder Java entwickelt, wird wohl kaum ein Job als COBOL-Entwickler finden. Das betrifft allerdings nicht nur die Sprachen, sondern auch die Technologien, die man im Laufe seiner Berufszeit verwendet hat. Jemand der z.B. zwar mit C# entwickelt aber noch nie was mit WPF zu tun hatte, wird es schwierig haben, einen Job zu finden, wo WPF gefragt ist. Das ist nicht richtig. Es bringt dir keiner bei, wie man richtig programmiert. Richtiges Programmieren lernt man nicht aus Büchern, sondern nur durch Übung, Übung und noch mehr Übung. Bücher und Co. geben einem nur Hinweise, was man besser machen könnte aber die berühmte Silberkugel wird und kann dir keiner präsentieren. Oder meint jemand, der das Buch "Clean Code" von Robert C. Martin durchgelesen hat, plötzlich ein super Entwickler zu sein, der zu 100% die SOLID-Prinzipien einhalten kann? Tutorials geben oft nur Lösungen für einfache Beispiele und selbst da gibt es mal gute und mal schlechte Lösungen.
-
C# 4-Gewinnt Amateurversuch
Hilfreich wäre auch Vererbung. So könnte man z.B. die Buttons mit weiteren Informationen ausstatten: public class MyButton : Button { public int Spalte { get; set; } } So hätte man z.B. einen Button, der die Spalten-Information besitzt und so könnte man jeden Button mit dem selben Event ausstatten. Man hat also nur noch eine Event-Implementierung, anstatt zig kopierte.
-
Android oder IOS hinsichtlich Umschulung
Ist doch völlig Banane, welches Gerät du nimmst. Du wirst in der Umschulung mit Sicherheit keine Apps dafür entwickeln, sondern Konsolen- oder Desktopanwendungen. Zum Anfang wohl eher nur Konsolenanwendungen. Eine Android-App zu entwickeln ist nämlich noch ein bisschen was anderes und da wird man wohl nicht die Zeit haben, das SDK zu erklären. Inzwischen kannst du auch mit C# und Xamarin Crossplattform-apps schreiben, die sowohl auf Android als auch auf iOS laufen. Es kommt also darauf an, was du in deiner Freizeit machen möchtest.
-
Ablösung der XML Dateien (SAP Jobketten im Redwood) und Implementierung im Ticketsystem
Theoretisch bräuchte man sowas gar nicht programmieren. Da gibt es Haufenweise ETL-Tools, die dies übernehmen könnten. Gut man müsste dann schauen, ob es für diese Tools Konnektoren für die Eingangsquelle (SAP?) gibt. Viel mit Datenbank hat das Projekt auch nicht zu tun. Die Tabellen werden ja schon vom Ticketsystem vorgegeben und müssen nicht selbst entworfen werden. Anstatt aber reine SQL-Queries abzufeuern würde ich mal schauen, ob das Ticketsystem eine API besitzt, mit der man von Außen Tickets generieren kann. Das ist der sichere Weg, da man nicht sicher sein kann, ob da nicht noch andere Routinen, während der Ticketerstellung, laufen, wie z.B. eine Generierung von Metadaten. So könnte man die XML-Datei einlesen und dann die API aufrufen. Allerdings sehe ich da auch Probleme mit der fachlichen Tiefe. Aus einer XML-Datei SQL-Insert-Queries zu bauen, ist im Grunde nur noch Fleißarbeit. Ihr dürft aber nicht vergessen, wenn ihr reine SQL-Queries abfeuert, umgeht ihr das Ticketsystem, weil dies davon nichts mitbekommt. Wenn, dann müsst ihr diese Fehler auch noch ins Ticketsystem übertragen und dann wird das Thema auf einmal sehr komplex. Darum sagte ich ja, dass ihr lieber mal schauen solltet, ob das Ticketsystem nicht eine API besitzt. Wir haben auch so tolle Kunden, die meinen, Daten per SQL-Queries in die Datenbank zu pumpen, anstatt unsere Import-Funktion zu verwenden. Wir nehmen da keinerlei Haftung, wenn da irgendwas schieflaufen sollte und es läuft da regelmäßig was schief.
-
SQL Server Blocksize 64KB: Backup von 4KB-Datenbank nicht zurückspielbar?
Ich kenne mich jetzt nicht mit dem SQL Server gut aus aber ich weiß, dass er die Daten blockweise von der Festplatte in den Arbeitsspeicher überführt. Es wird wohl besser sein, wenn Festplatte und Server aufeinander abgestimmt sind.
-
Unity 2D - C# Code trennen
Da bin ich leider auch ein bisschen raus, da ich mich mit Unity nicht wirklich auskenne. Da weiß ich nicht, wie man mit Unity arbeitet. Sorry. Aber ein kleiner Hinweis: Anstatt List<AudioClip> kannst du auch ein Dictionary<string, AudioClip> machen, dann brauchst du die foreach-Schleife nicht und die PlaySound-Methode lautet einfach: public void PlaySound(string audioClipToPlay) { if(this.soundClips.Exists(audioClipToPlay)) audioSource.PlayOneShot(this.soundClips[audioClipToPlay]); }