GitHub Design Previews

Wer rastet der rostet, das wissen wir alle und so sieht es wohl auch GitHub. Denn aktuell arbeitet man an neuen Designideen für verschiedene Bereiche der Website. Diese wurden mir vor wenigen Tagen das erste Mal angeboten und seitdem nutze ich sie. Die Feature Previews beziehen sich sowohl auf das globale User Interface, wie auch die spezifische Repository Ansicht.
Flutter App Development - Teil 6 - RSS Entries und mehr

Heute geht es weiter mit den eigentlichen Einträgen eines RSS Feeds. Die dazugehörigen Dateien befinden sich im lib/entry_list/ open_in_new Package und sind verglichen mit der lib/feed_list/ open_in_new Logik etwas einfacher zu handhaben. Dieser Beitrag ist der Abschluss meiner kleinen Tutorialreihe und den gesamten Source-Code findet ihr auf Github. Links zu den gennannten Dingen findet ihr in den Related Links. Mit diesen kurzen Worten der Einleitung möchte ich heute direkt mit dem User Interface starten.
GitHub App - Meine Meinung

Ich bin täglich auf GitHub unterwegs und da ist es natürlich praktisch auch eine mobile Version für unterwegs zu haben. Die GitHub App gibt es schon etwas länger, aber ich wollte sie trotzdem einmal erwähnen.
Denn mit selbiger könnt ihr eure Issues, Pull Requests, Repositories und Organizations durchaus übersichtlich im Blick behalten. Vor allem der Punkt der Übersicht war mir wichtig, da ich in verschiedenen Repositories unterwegs bin und sowohl Code beisteuere, wie auch Issues verwalte und Code-Changes einem Review unterziehe.
Dabei bietet die Hauptansicht sowohl die allgemeine Navigation für die genannten Bereiche, wie auch Informationen zu euren letzten Aktionen. Weiterhin sind die Notifications und die Suche schnell und praktisch zu erreichen. Was mich persönlich allerdings mehr interessiert sind die eigentlichen Issue Seiten, wie Reviews aufgebaut sind und derartige Dinge. Denn hier wird es auf dem kleinen Screen kompliziert und komplex. Doch sowohl Issues, wie auch Code-Diffs werden übersichtlich angezeigt und sind tatsächlich auch auf dem Smartphone halbwegs gut nutzbar.
Generell erreicht man über die AppBar die Hauptfunktionen, während der eigentliche Content-Bereich alle spannenden Informationen bereithält. Damit man nun aber Kommentare und ähnliches leicht erreichen kann, gibt es eine weitere Interaktionskomponente am unteren Ende des Bildschirms. Hier könnt ihr schnell verschiedene kontextrelevante Aktionen durchführen.
Positiv für mich fällt weiterhin auf das ein Dark-Mode vorhanden ist. Ob man selbigen nutzt ist wie so vieles, Geschmackssache. Im Allgemeinen bin ich mit dem Funktionsumfang und dem Look and Feel zufrieden und freue mich auf weitere Updates. Aktuell benötige ich die App zwar eher selten, aber wenn man bald wieder mehr in der Welt da draußen unterwegs sein kann, bietet es sich natürlich an ein paar Reviews aus der Natur zu machen.
IntelliJ IDEA + GUI Builder + Gradle - How to

Von Zeit zu Zeit baue ich Java Programme mit einem User Interface. Dies tue ich gerne mit dem IDEA GUI Designer, denn auch wenn Java UI generell eher nicht das idealste ist, manchmal ist sie einfach passend für den Einsatzzweck.
Zusätzlich nutze ich aber auch gerne Gradle als Build-Tool meiner Wahl. Die Kombination aus Gradle + IntelliJ IDEA + GUI Designer ist aber leider etwas problematisch und so hatte ich einige Probleme nach diversen Updates meiner Projekte, eine lauffähige JAR zu erzeugen.
Um euch diese Arbeit zu ersparen habe ich aus verschiedenen Stack Overflow Beiträgen (Beitrag #1 open_in_new, Beitrag #2 open_in_new, Beitrag #3 open_in_new) und der offiziellen Dokumentation für Gradle Einstellungen zusammengesucht, welche ich an euch weiterleiten möchte.
Initial benötigt ihr die forms_rt.jar aus dem JetBrains/IntelliJ IDEA Community Edition/IntelliJ IDEA Community Edition/lib Ordner in eurem Projekt. Um dies zu erreichen und auch Updates automatisch mitnehmen zu können, habe ich einfach einen Symlink erstellt. Somit liegt die Datei nun ebenfalls in meinem Projekt im libs Ordner. Ihr könnt die Datei aber natürlich auch einfach manuell in euer Projekt kopieren.
Flutter App Development - Teil 5 - RSS Feed Formular

Nachdem es durch die Neuinstallation des Servers und diverse andere Themen mal wieder ein paar Verzögerungen gab, geht es nun weiter mit meiner kleinen Futter Tutorialreihe. Heute gehe ich auf das Formular ein, welches das Hinzufügen und Bearbeiten von RSS Feeds erlaubt.
Ich werde heute lediglich eine Klasse beleuchten, da ich das Gefühl habe in anderen Beiträgen wurde etwas viel auf einmal erläutert. So hoffe ich etwas nachvollziehbarere Erklärungen liefern zu können. Wie gesagt ist auch für mich diese umfangreiche Tutorialreihe etwas Neues und zugleich ist sie sehr aufwendiges. Ich versuche entsprechend direkt während der Erstellung und wenn ich mir meine eigenen Beiträge später noch einmal anschaue, Dinge zu optimieren.
Doch nun zum eigentlichen Thema, dem Verwalten der RSS Feeds über ein Formular in Flutter, inklusive simpler Validierung der Eingaben und Übergabe der Daten an unseren BloC.
Code Navigation auf GitHub

GitHub ist in meinem Daily-Doing nicht mehr wegzudenken. Ich nutze es täglich im privaten und beruflichen Umfeld und entsprechend freue ich mich immer wieder über Neuerungen. Egal ob es um mehr kostenlose Features für jedermann geht oder aber um technischen Ausbauten der Plattform.
Derzeit freue ich mich über die neue Code Navigation die Stück für Stück auf GitHub verfügbar wird. CodeQL, Go, Java, JavaScript, PHP, Python, Ruby und TypeScript werden aktuell unterstützt. Sofern ein Repository diese Sprachen nutzt, könnt ihr wie aus eurer IDE gewohnt verschiedene Dinge, wie Klassen und Methoden, anklicken und schauen wo sie definiert oder genutzt werden.
Vor allem die Navigation in fremden Repositories dürfte damit um einiges einfacher werden, auch wenn wir hier natürlich noch nicht auf dem Level von z.B. IntelliJ Idea sind. Ich finde diese Erweiterung sehr sinnvoll und freue mich auf den Support von Dart und Kotlin. Falls ihr euch das Ganze mal anschauen wollt, könnt ihr es z.B. im Repository meines Image-Resizer Resizy open_in_new sehen.
Flutter Version 1.17 erschienen

Vor ca. einer Woche erschien Version 1.17 des Flutter Frameworks. Googles Cross Platform Lösung erfreut sich bei mir weiterhin großer Beliebtheit, auch wenn man hier und da natürlich den einen oder anderen Stolperstein aus dem Weg räumen muss.
Unter anderem dafür sind ja bekanntlich auch neue Framework Versionen gedacht. Das letzte Update bringt allem voran massive Verbesserungen für die Performance unter Android und iOS. Wobei iOS durch den nun gegebenen Metal Support hier mit Abstand am meisten zulegt hat. Zusätzlich wurde teils extrem am Speicherverbrauch geschraubt. Wir reden hier von einer Beschleunigung um bis zu 35 Prozent, während für bestimmte Probleme bis zu 70 Prozent weniger Ram benötigt wird.
Dieser Release basiert auf Dart 2.8 open_in_new, bringt einige neue Material Widgets mit sich und behebt Probleme mit den Popupmenüs, welche bei einem Long-Press auf Text anzeigt werden. Die neue Version aktualisiert außerdem die gegebenen Text Styles, sodass selbige mit den aktuellen Material Design Guidelines Konform sind. Weitere Verbesserungen gab es im Bereich der Accessibility und Internationalization, zwei Bereiche die durchaus wichtig sind und wo es auf jeden Fall noch Verbesserungsbedarf gab.
Darüber hinaus hat das Google Font Package open_in_new die Version 1.0 erreicht und das neue Animations Package open_in_new soll euch mit vorgefertigten und häufig genutzten Animationen Arbeit abnehmen. Auch diverse Entwickler-Tools wurden aktualisiert oder optimiert und diverse weitere Kleinigkeiten angepasst.
Ich arbeite bereits seit einer Woche mit der neuen Version und konnte bis dato keine Probleme feststellen, sodass ich zum jetzigen Zeitpunkt durchaus meine Empfehlung zur Durchführung des Updates aussprechen kann.
Boehrsi.de - Server Neuinstallation und Einrichtung abgeschlossen

Ein arbeitsreiches Wochenende liegt hinter mir, aber dafür ist der Server nun wieder quasi voll einsatzfähig. Eine neue Festplatte und eine frische Installation, dazu diverse Optimierungen und einen Frühjahrsputz gab es.
Vor allem die letzten beiden Punkte freuen mich sehr, denn in den letzten Jahren nutzte ich für vieles kleine selbstgeschriebene Skripte. Die Gründe dafür waren divers, einige sinnvoll und einige eher nicht. Das diese Skripte aber immer noch genutzt wurden basierte einfach auf Gewohnheit.
Diese alten Komponenten bin ich nun losgeworden, wodurch die Verwaltung meiner zusätzlichen Tools (z.B. Voice-Server, Kommentarsystem und Statistiksystem) nun mittels Ubuntus Systemd open_in_new direkt vom System gesteuert wird und meine Tools zum überwachen des Systemzustands nun direkt von der global vorhandenen Verwaltungssoftware des Servers (Plesk open_in_new) erledigt werden.
Dadurch habe ich generell mehr Möglichkeiten, halte mich an gegebene Standards und kann mich besser auf die eigentliche Entwicklung und Nutzung von neuen Tools konzentrieren, statt mir Gedanken zur Einrichtung machen zu müssen.
Sollte euch noch etwas auffallen was nicht funktioniert, meldet euch gerne in den Kommentaren und ich schaue mir das Ganze an. Der Blog wird in den nächsten Tagen auf jeden Fall einige neue News erhalten, da ich mit diversen Themen etwas im Verzug bin.
Boehrsi.de - Weiterer Hardware Scan + Downtime

Auch wenn der Server nach dem letzten Hardware-Scan, welcher keine Fehler offenbarte, relative lange stabil lief, gab es heute leider wieder Probleme. Abermals ohne nützliche Logging Informationen oder sonstige Daten.
Aus diesem Grund werde ich nun den kompletten Hardware-Scan veranlassen, welcher den Server auf Herz und Nieren testen wird. Ich hoffe dabei wird etwas zu Tage gefördert, denn ein kompletter Systemcrash, ohne jegliche Logging Daten, ist remote ansonsten ziemlich unmöglich zu debuggen.
Ich werde den Scan heute Nacht (07.05.2020) gegen 22:00 Uhr starten und hoffe den Server morgen im Laufe des Nachmittags wieder online nehmen zu können. Entsprechende Statusinformationen gibt es wie gewohnt hier via Uptime Robot open_in_new oder auf Twitter open_in_new.
Flutter App Development - Teil 4.2 - Main und RSS-Feed-Logik

Aufgrund der Länge des Beitrags habe ich diesen Abschnitt des Tutorials noch einmal aufgeteilt. Die erste Hälfte (Main Logik) findet ihr hier.
Nachdem wir nun die App initial laden können, geht es weiter mit der Liste der RSS Feeds. Dieser Bereich besteht bei mir aus fünf Dateien. Im feed_list Package open_in_new befinden sich die feed_list.dart open_in_new, feed_list_barrel.dart open_in_new, feed_list_bloc.dart open_in_new, feed_list_change.dart open_in_new und feed_list_events_states.dart open_in_new. Der Aufbau ist sehr ähnlich unserem Main Konstrukt, mit einer weiteren Datei, welche das Hinzufügen, Bearbeiten und Löschen über die UI ermöglicht. Die Event / State Datei (lib/feed_list/feed_list_events_states.dart open_in_new) und die Barrel Datei (lib/feed_list/feed_list_barrel.dart open_in_new) wird im Folgenden nicht weiter erläutert, da sie trivial sind.
Beginnen werden wir nun mit dem FeedListBloc. Dieser könnte als Herzstück der App bezeichnet werden, da er sowohl die RSS Feeds verwaltet, wie auch Updates aller Feeds durchführen kann. Die gesamte App arbeitet dabei mit nur einem FeedListBloc, welcher bereits in der lib/main.dart open_in_new erstellt und mittels eines Providers darunterliegenden Strukturen zur Verfügung gestellt wird. Damit kann sichergestellt werden, dass keine unnötigen Objekte erzeugt werden oder aber falsche States aktualisiert werden.

