Status Update #30 - BDL, Teil 7: Umzug, Build-Prozess & Gimmicks

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

      Status Update #30 - BDL, Teil 7: Umzug, Build-Prozess & Gimmicks



      Hey,

      ein Umzug geht natürlich nicht an einem Wochenende. Ich bin damit entsprechend noch gut beschäftigt.

      Hier mal etwas anderes - vielleicht für den einen oder anderen interessant.

      Wenn man an Minecraft bastelt bzw. allgemein programmiert kann sehr viel Zeit durch 'Warten' drauf gehen.
      Sei es das 'compilieren' - den Sourcecode in eine Ausführbare Datei umwandeln, das erneute hochladen der aktualisierten Dateien oder der Neustart des Servers.
      Wenn man dutzende/hunderte kleinere Updates an einem Tag auf den Server aufspielt dann sammeln sich diese Sekunden/Minuten schnell und man verbringt Stunden mit diesen Wartezeiten.

      Aber ich habe ja nicht umsonst Informatik studiert und optimiere alles wenn ich einen Weg finde :rolleyes:
      Zeit einsparen kann man über viele Wege. Die einfachsten und vom Kosten/Nutzen am besten sind:

      Schnellere Hardware!
      1. Das wohl offensichtlichste und mittlerweile alltägliche ist die Festplatte durch eine SSD zu ersetzen. Bei den meisten hier sollte dies bereits der Fall sein.
      2. Schnellere CPU: In meinem Fall habe ich aktuell den 9900K im Einsatz (Ram, GPU ist nicht so relevant bei der Programmierung für Minecraft).
      3. Besseres Internet: Speziell der Upload ist hier wichtig. Aktuell bin ich bei 50 MBit und das Potential zur Optimierung ist hier eher dann das Tooling.
      4. Gute M2 statt SSD: Was den Dateizugriff an geht kann man durch das Upgrade von einer SSD zu einer M2 noch etwas an Geschwindigkeit raus holen. Typischerweise geht es hier um 10-20% bei der Programmierung. Bei Games gibt es so gut wie keine Vorteile.

      Aber es gibt natürlich noch einige weitere Punkte die vielleicht nicht sofort in den Kopf kommen:


      1. Bildschirmfläche
        Wenn man sich selber dabei ertappt regelmäßig zwischen Anwendungen hin und her zu wechseln, dann kann man überlegen in einen weiteren Monitor zu investieren. Es ist wesentlich einfacher/angenehmer einen festen Ort für eine Anwendung zu haben. Hier als Beispiel die dauerhaft offene Server-Console. So kann man Fehler sofort sehen und darauf reagieren ohne zwischen Fenstern wechseln zu müssen oder den Fehler erneut zu provozieren. (Hier übertreibe ich dann richtig und habe 2x 24" WUXGA hochkant und in der Mitte den 43" 4k. Zusammen also etwa 6x FullHD :whistling: )
      2. Arbeitsspeicher korrekt zuweisen
        Diverse Anwendungen bekommen im Normalfall gerne mal zu wenig Arbeitsspeicher vom System oder sind für den "Normalanwender" ausgelegt. Hier ist es gerne mal sinnvoll die Werte eigenhändig zu optimieren. Nutzt man in Minecraft beispielsweise eine sehr hohe Sichtweite sollte man auf jeden Fall den Java-Parameter für die Arbeitsspeicher Zuweisung erhöhen (z.B. -Xmx6G ). In meinem Fall gilt dies auch für die Entwicklungsumgebung Eclipse.
      3. Antiviren-Software
        Was man oben durch die M2 gewinnt bringt aber nicht viel, wenn die Antiviren-Software aktiv ist im Entwicklungsordner. Die Prüfung und Suche nach möglicher Schadsoftware ist aufwändig und klaut gerne mal 5-50% der Leistung. Speziell bei vielen kleinen Dateien ist dies merkbar: 20-30% Zeitverlust durch Aktivierung der Software. Ich habe sie daher für einzelne Ordner deaktiviert.

      Und dann spezieller für die Programmierung
      1. Multi-Core ausnutzen
        Häufig ist der Einsatz von mehreren Cores beim Compilieren o.Ä. noch deaktiviert. Beispielhaft bei Maven über die commandline builden mit "mvn install -T 1.5C ...". Einsparung: 30-50%
      2. Tests deaktivieren
        Sicherlich umstritten. Aber ich habe üblicherweise alle Tests deaktiviert und lasse sie nur am Ende von Umbauarbeiten/Finalisierungen laufen. Einsparung je nach Software bis zu 99%. Bei MC vielleicht 50%.
      3. Keine Fat-Jar erstellen
        Bei Spigot oder auch Spring und anderen Java-Anwendungen wird meistens eine Fat-Jar gebaut. Also eine JAR-Datei, welche alle nötigen Referenzprojekte dabei hat. Dies kostet einiges mehr an Zeit. Speziell der Upload dieser Dateien verzögert enorm den Prozess. Erstellt man keine Fat-Jar, sondern nutzen einen Lib-Ordner muss man fast nie diese Referenzprojekte neu hochladen. Aus einem 100MB-Upload werden 5MB. Einsparung: 30-60% je nach Projektgröße.
      4. (Remote Debugging & Live Updates)
        Wenn man das Remote-Debugging gut einsetzt kann man den Serverneustart/Redeploy komplett umgehen und Fehler zur Laufzeit des Servers beheben. Das ist ein riesiges Thema, da ich sogar meinen Programmierstil angepasst habe um möglichst häufig nicht den Server Neustarten zu müssen. Etwas zu aufwändig für dieses Topic.

      3. Scripts bauen & Hotkeys nutzen :thumbup:

      Mit diesem Punkt habe ich mich dann dieses Jahr etwas mehr beschäftigt, weil ich endlich eine einigermaßen gut Lösung gefunden hatte um eine zweite Tastatur als Macro-Tastatur an zu schließen. Das ist in der Form einfach nicht vorgesehen und nur sehr aufwändig machbar. Wer etwas mehr zu den verschiedenen Lösungen sehen möchte findet hier einen guten Einstieg:




      Ich habe mich für den USB-Converter entschieden. Ein kleines Hilfsmittel über welches eine beliebige zweite Tastatur als reine Hotkey-Tastatur genutzt werden kann. Diese habe ich mir dann nach und nach eingerichtet. Das sieht dann aktuell aus Zeitmangel für das Projekt noch so aus. Die beschrifteten Tasten führen diverse Aktionen aus. F12 z.B. öffnet mir alle Fenster (12 Stück) für das BDL Projekt und schiebt sie an die richtigen Stellen auf den Bildschirmen. Der USB-Converter ist von hier.




      Die Scripts/Hotkeys werde ich in diesem Post jetzt nicht im Detail erklären - ihr könnt aber gerne Fragen.

      Es erlaubt aber mit einem Tastentruck alle nötigen Schritte auf einmal auszuführen. Für meinen BDL-Testserver sind dies:
      • Commandline Build-Prozess starten
      • SSH Login zum Server. Server stoppen.
      • Update-Ordnerstruktur/Dateien generieren.
      • Upload-Programm mit entsprechenden Parametern starten (Ersetzung aller Dateien die verändert wurden.)
      • SSH Login zum Server. Server starten.
      • Remote-Console-Fenster aktivieren und in den neu gestarteten Server springen.
      Dadurch, dass alle Schritte, die parallel laufen können dies auch tun dauert ein Redeploy teilweise unter 30 Sekunden. Per Hand sind wir hier bei ~2-5 Minuten. Speziell das Entfernen der "Fat-Jar" hilft hier.


      Hab ich eine Weg zur Verbesserung/Beschleunigung vergessen? Schreibt es gerne in die Kommentare.


      Soviel in diesem Status Update,
      Kade :coffee:


      PS: Bei Minecraft-Servern sind die Werte übrigens auch sehr ähnlich. Durch bessere Hardware kann man ein bisschen an Verbesserung raus holen. Das Meiste sind aber einfach "bessere Software" und bessere Regeln auf dem Server (Maximum an Tieren, Spawn-Rate optimieren usw.).
      Bilder
      • lul.jpg

        176,3 kB, 1.200×651, 3.863 mal angesehen
      • dongle.jpg

        58,34 kB, 600×450, 632 mal angesehen
      • tasta.jpg

        80,01 kB, 600×452, 635 mal angesehen
      • screenspace.jpg

        57,03 kB, 600×450, 632 mal angesehen
      Bitte möglichst alle Fragen im Forum stellen und nicht mir per Privatnachricht.
      Ich Teile meine Zeit aktuell: 2,5 Tage 1.13, 2,5 Tage Arbeit, 1 Tag Kadcon. Eine PN-Antwort kann entsprechend länger dauern.

      Harry schrieb:

      Geil du hast das gleiche Makita Maßband wie ich

      #unnötig .


      Ich messe damit immer den Nase-Bildschirm-Abstand. Darüber hol ich auch nochmal 5% Geschwindigkeit raus. :huh:
      Bitte möglichst alle Fragen im Forum stellen und nicht mir per Privatnachricht.
      Ich Teile meine Zeit aktuell: 2,5 Tage 1.13, 2,5 Tage Arbeit, 1 Tag Kadcon. Eine PN-Antwort kann entsprechend länger dauern.
      oh, so n Bilsschirm bzw. mehrere wäre mein Traum sowie eine 2. Tastatur für Makros (auch wenn das bei mir mehr zum Vergnügen als zum Arbeiten wäre)
      hm werde mir das Video sicher mal ansehen und den Bildschirm wünsch ich mir von meiner Frau zu Weihnachten :) mal schauen was sie davon hält :S

      Finde das Statusupdate toll, man bekommt so langsam eine vage Vorstellung wofür deine ganze Zeit alles drauf geht ausserdem finde ich die Updates sehr inreressant, auch wenn ich teilweise nur Bahnhof verstehe :)

      Aber am meisten bewundere ich dein aufgeräumtes Büro :D
      ist mir ein Rätsel wie das gehen soll ;)

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Jonas151993“ ()

      Kademlia schrieb:

      Bildschirmfläche

      Ich bin mittlerweile bei drei Bildschirmen angelangt und ich meine es reicht immer noch nicht^^ Wobei ich ein anderes (schlechteres) Setup als du habe. Bei mir sind es zwei Bildschirme und das Notebook. Der Bildschirm links ist immer zweigeteilt und muss für Browser/Git/Console/Dateibrowser herhalten. In der Mitte ist auch ein externer Bildschirm hier läuft immer eine Entwicklungsumgebung. Der rechte Bildschirm ist vom Notebook dort sind weitere Fenster der Entwicklungsumgebung untergebracht oder zwei Minecraftfenster, wenn ich am Testen bin.

      Hast du ein spezielles Programm mit dem du die Fenster auf dem Riesenbildschirm in der Mitte anordnen kannst?

      Kademlia schrieb:

      Antiviren-Software

      Ich bin seit zwei Jahren Antiviren-Software frei :whistling:

      NiborLP schrieb:

      Ist sonst noch jemandem der Riegel rechts unten auf dem Bild aufgefallen? ^^


      Suche noch nach einem gutem Preis/Leistung. Die ganz günstigen gehen auf den Magen bei mir - weiß aber noch nicht genau warum probiere gerade ohne kollagenes Eiweiß.

      Ovolos schrieb:

      Oneplus 6 Schachtel liegt da aufn Tisch xD habs selbe Handy xD


      6T richtig :)

      d4n1el89 schrieb:

      Kademlia schrieb:

      Bildschirmfläche

      Ich bin mittlerweile bei drei Bildschirmen angelangt und ich meine es reicht immer noch nicht^^ Wobei ich ein anderes (schlechteres) Setup als du habe. Bei mir sind es zwei Bildschirme und das Notebook. Der Bildschirm links ist immer zweigeteilt und muss für Browser/Git/Console/Dateibrowser herhalten. In der Mitte ist auch ein externer Bildschirm hier läuft immer eine Entwicklungsumgebung. Der rechte Bildschirm ist vom Notebook dort sind weitere Fenster der Entwicklungsumgebung untergebracht oder zwei Minecraftfenster, wenn ich am Testen bin.

      Hast du ein spezielles Programm mit dem du die Fenster auf dem Riesenbildschirm in der Mitte anordnen kannst?

      Kademlia schrieb:

      Antiviren-Software

      Ich bin seit zwei Jahren Antiviren-Software frei :whistling:


      Bei den Fenstern benutze ich zur Einteiliung der Fläche Display-Fusion. Ich habe die Bildschirme in 9 kleinere Bildschirme eingeteilt. Dann geht das Maximieren eines Fensters immer auf die jeweilige Zone. Daneben dann in den Scripts die ich per Hotkey auslöse per Autohotkey resizing und bewegen an den default-ort beim starten.

      Viren-Software: Ja ist bei mir auch in etwa so. Verdächtige Dateien lade ich immer manuell erstmal bei VirusTotal hoch.

      Kade

      Bilder
      • monitor.png

        87,09 kB, 1.704×789, 259 mal angesehen
      Bitte möglichst alle Fragen im Forum stellen und nicht mir per Privatnachricht.
      Ich Teile meine Zeit aktuell: 2,5 Tage 1.13, 2,5 Tage Arbeit, 1 Tag Kadcon. Eine PN-Antwort kann entsprechend länger dauern.