Neues YouTube-Video – Qt-Tutorial 010: Unser erstes Programm

Es ist endlich soweit: wir schreiben unser erstes eigenes Programm. Dabei handelt es sich um ein Fenster mit einer Schaltfläche sowie einem Eingabefeld, in welches wir beim Klick auf die Schaltfläche “Hello World” eintragen.

Unser erstes Programm
Unser erstes Programm

Wir beginnen erst einmal sehr oberflächlich. Später gehen wir tiefer ins Detail. Versuchen wir, die ersten Erfolge zu genießen.

Hier geht es zum Video.

Warum ich Redmine mittlerweile sehr gerne benutze

Es ist tatsächlich so, dass ich nie wirklich Software eingesetzt habe, um meine Projekte zu managen. Dabei ging es teils um Projekte, die groß waren, an denen bis zu fünf Personen gearbeitet haben und die über Jahr hinweg liefen.

Das KooKooK-Projekt in Redmine
Das KooKooK-Projekt in Redmine

Ich hatte immer alles im Blick, ich hatte maximal einen selbstgeschriebenen Bug-Tracker im Einsatz und Aufgaben haben wir analog auf Karten verteilt oder mündlich kommuniziert. Komischerweise und im Gegenzug zu vielen anderen, war das nie problematisch. Aufgaben wurden erledigt, Übersicht über Bugs und Features hatten wir und es lief, wie es laufen sollte.

Doch bin ich seit vier Jahren dazu übergegangen, ein Projektmanagementprogramm einzusetzen. Ich hatte damals viel überlegt, recherchiert, was ich so brauche und wurde bei CGM dazu gezwungen, Jira zu benutzen, was ich zwar schon kannte, aber immer (für mich) unübersichtlich hielt, mit einem dazu geschalteten Confluence, was aber nie vernünftig gepflegt wurde.

Ich stieß dann, eines Tages, auf Redmine. Ich sah mir Videos an und wagte mich an die Installation auf FreeBSD. Mit viel Geschrei bekam ich es auch installiert und ich war: begeistert. Genau so habe ich mir ein Tool für mich vorgestellt. Zu Beginn war es ein wenig unübersichtlich, aber man kommt innerhalb weniger Tage rein und dann wird es von unübersichtlich zu übersichtlich.

Redmine bringt etliches mit. Was es nicht mitbringt, lässt sich zumeist als Plug-In herunterladen und installieren. Mit dabei sind eine multiple Projektverwaltung (man kann mehrere Projekte anlegen und mit Unterprojekten gliedern), ein Ticketsystem (was meiner Meinung aber eher für intern ist und nicht für die Kommunikation mit externen Kunden, wo ich OTRS für besser geeignet halte), Aufwandmanagement (man kann für Tickets, die übrigens auch verknüpfte Tickets haben dürfen, Zeiten schätzen und Aufwände buchen, wodurch dann Abrechnungen beim Kunden zum Kinderspiel werden), ein GANTT-Diagramm (Tickets können terminiert werden), Foren, ein Wiki, eine Roadmap mit Versionierung, Repository-Einbindung (es ist problemfrei möglich, vorhandene Git und SubVersion-Repos einzubinden und sogar innerhalb von bspw. Tickets auf Commits zu verweisen), Dokumente, Dateien, News und ein Rechte-Rollen-Management.

Das GitHub-Repository in Redmine eingebunden
Das GitHub-Repository in Redmine eingebunden

Als unterliegende Plattform benutze ich zurzeit ein FreeBSD 13 mit einer PostgreSQL-Datenbank. Redmine selbst ist in Ruby (Ruby on Rails) geschrieben.

Als einziges Plugin benutze ich einen visuellen Editor, da ich Redmine auch mit Menschen benutze, die sich nicht in irgendeine Markup-Sprache einarbeiten möchten. Somit ist es einfach, überall mit Überschriften, Listen oder Bildern zu arbeiten.

Redmine erleichtert meinen Alltag ungemein. Aufgaben und Ideen werfe ich direkt ins Ticketsystem, Dokumentieren erledige ich im Wiki. Wichtige Dateien kann man überall anhägen (in Tickets sowie in Wikieinträgen und überall sonst), wobei es für allgemeinen Kram auch eine Dateienverwaltung gibt.

Aktivitätsübersicht in Redmine
Aktivitätsübersicht in Redmine

Was Redmine nicht hat ist die Einbindung von Microsoft Office, so wie man es beispielsweise von Confluence kennt. Ich kann nicht direkt eine Excel-Datei bearbeiten. Hier müsste man sie herunterladen, bearbeiten, hochladen. Dafür ist das System nicht ausgelegt.

Redmine ist kostenlos, OpenSource und läuft letztlich auf allen unixoiden Plattformen. Es unterstützt unterschiedliche Datenbanken und es gibt sogar kommerziellen Support (EasyRedmine), wenn man ihn benötigt.

Alle in allem kann ich sagen: Wenn ihr auf der Suche nach einem Projektmanagementprogramm seid, dann probiert Redmine einfach einmal aus.

Neues YouTube-Video – Qt-Tutorial 009: Kurze Einführung in QDebug

Dieses Video zeigt in kurzer Weise, wie man mit QDebug einfache Ausgaben im Ausgabenfenster des QtCreators macht.

Kurze Einführung in QDebug
Kurze Einführung in QDebug

Wie man die anderen Dinge von QDebug benutzt und auch Debugging-Informationen umleitet, sei es in eine Datei, eine speziell formatierte Ausgabe, in eine Datenbank, uvm., werden wir in dieser Videoreihe später noch sehen.

Hier geht es zum Video.

YouTube-Video – Kurztipp: Minecraft-Server auf FreeBSD installieren und betreiben

Ich habe mir gedacht: Warum nicht einmal zeigen, wie einfach es ist, einen Minecraft-Server auf FreeBSD zu installieren und zu betreiben.

Minecraft-Server auf FreeBSD installieren und betreiben
Minecraft-Server auf FreeBSD installieren und betreiben

Die Vorgehensweise ist so:

In /etc/fstab eintragen:

fdesc /dev/fd fdescfs rw 0 0
proc /proc procfs rw 0 0

und dann mounten:

mount /dev/fd && mount /proc

Screen und OpenJDK installieren

pkg install screen openjdk17

Verzeichnis erstellen

mkdir /server

Benutzeraccount erstellen

pw add group minecraft
pw add user minecraft -g minecraft -c "Minecraft" -s tcsh -m -b /server
passwd minecraft

Minecraft-Server herunterladen

fetch (den Link zum Server findest du hier: https://www.minecraft.net/de-de/download/server)

Startscript schreiben (start):

#!/bin/sh
java -Xmx1024M -Xms1024M -jar server.jar --nogui

und ausführbar machen

chmod +x start

Einmal durchstarten, dann in eula.txt eula=true setzen und nochmal starten

./start

Dann kann man sich mit dem Server schon verbinden. Hier ist meine server.properties:

enable-jmx-monitoring=false
eula=true
rcon.port=25575
level-seed=
enable-command-block=true
gamemode=creative
enable-query=true
generator-settings=
level-name=g
motd=Thorsten's Creative
query.port=25565
pvp=false
generate-structures=true
difficulty=easy
network-compression-threshold=256
max-tick-time=60000
require-resource-pack=false
use-native-transport=true
max-players=10
enable-status=true
online-mode=true
allow-flight=false
broadcast-rcon-to-ops=true
view-distance=10
max-build-height=256
server-ip=
resource-pack-prompt=
allow-nether=true
server-port=25565
sync-chunk-writes=true
enable-rcon=false
op-permission-level=4
prevent-proxy-connections=false
resource-pack=
entity-broadcast-range-percentage=100
player-idle-timeout=0
rcon.password=
force-gamemode=true
debug=false
rate-limit=0
hardcore=false
white-list=true
broadcast-console-to-ops=true
spawn-npcs=true
spawn-animals=true
snooper-enabled=true
function-permission-level=2
level-type=default
text-filtering-config=
spawn-monsters=true
enforce-whitelist=false
spawn-protection=16
resource-pack-sha1=
max-world-size=29999984

Hier geht es zum Video.

Mein neues (und erstes) Live-Projekt: KooKooK

Da ich jetzt ja mit YouTube begonnen und aufgrund meiner jetzigen Situation ein wenig Zeit habe, habe ich mir überlegt, an einem neuen privaten Projekt zu arbeiten, um nicht aus der Übung zu kommen. Und genau deswegen dachte ich: warum nicht aufzeichnen und auf YouTube veröffentlichen?

KooKooK.org
KooKooK.org

Genau das möchte ich jetzt mit KooKooK versuchen. Es hat mehrere Hintergründe. Ein Ziel ist es auf jeden Fall, mein Portfolio weiter auszubauen, denn ich bin ja auf Jobsuche. Dann dachte ich mir, ich kann sicher noch einiges dazulernen und du vielleicht auch.

Dabei gibt es aber folgende Vorstellung meinerseits. Ich werde die Videos nicht scripten. Ich werde einfach loslegen, Fehler bleiben drin, damit wir was daraus lernen, Versprecher ebenso und alles, was so schief geht. Weiterhin möchte ich mich bei den Videos aber auch nicht nur auf das Coding konzentrieren. Ich möchte euch bei allen Dingen mitnehmen. Natürlich wird ein großer Teil die Programmierung sein, aber ich zeige euch auch, was ich als Projektverwaltung benutze, wir richten die Website ein, scribbeln, malen/zeichnen und machen all das, was man ebenso macht, um eine kleine Software zu entwickeln.

Worum soll es gehen? Ich habe lange überlegt. Soll ich was mit Datenbanken machen? Soll ich was mit Netzwerkprogrammierung machen? Soll ich Websitekram machen? Soll ich ein Spiel programmieren? Die Antwort war einfach: Ja. Mein Ziel ist es, einen grafischen Chat zu entwickeln, der mit Avataren in einer künstlichen Welt funktioniert. Da haben wir Spieleentwicklung, Netzwerkentwicklung, Datenbankentwicklung, Protokollentwicklung, eine Website soll es auch geben, es wird spannend. Und da ich mir vor vielen Jahren bereits die Domain KooKooK.org gesichert habe, wird das Projekt jetzt einfach mal so heißen.

Welche Tools eingesetzt werden, kann ich jetzt noch nicht sagen. Es wird auf jeden Fall C++-lastig, wahrscheinlich Qt, weil ich auch mobile Plattformen wie iPhoneOS, iOS und Android unterstützen möchte. Den Code werde ich auf GitHub lagern, so dass ihr mit daran entwickeln könnt.

Und jetzt geht es los. Ich wünsche euch und auch mir viel Spaß dabei.

Hier geht es zur Playlist.

Und hier zum ersten Video.

Hier geht es zur Website.

Hier geht es zum GitHub-Repository.

Hier geht es zum Redmine-Projekt.

Neues YouTube-Video – Qt-Tutorial 007: Meine QtCreator-Einstellungen

Im neuen Video geht es darum, wie ich meinen QtCreator eingestellt habe. Vor allem habe ich die Einrückungen im Texteditor eingestellt (Tabs statt Leerzeichen, bestimmte Einrückungen, uvm.).

Meine QtCreator-Einstellungen
Meine QtCreator-Einstellungen

Ich füge hier einmal die Screenshots der Einstellungen ein:

Environment -> Interface
Environment -> Interface
Text Editor -> Font & Colors
Text Editor -> Font & Colors
Text Editor -> Behavior
Text Editor -> Behavior
Text Editor -> Display
Text Editor -> Display
Text Editor -> Completion
Text Editor -> Completion
C++ -> Code Style
C++ -> Code Style
C++ -> Code Style -> General
C++ -> Code Style -> General
C++ -> Code Style -> Content
C++ -> Code Style -> Content
C++ -> Code Style -> Braces
C++ -> Code Style -> Braces
C++ -> Code Style -> Switch
C++ -> Code Style -> Switch
C++ -> Code Style -> Alignment
C++ -> Code Style -> Alignment
C++ -> Code Style -> Pointers and References
C++ -> Code Style -> Pointers and References
C++ -> File Naming
C++ -> File Naming

Hier geht es zum Video.

(Vor dem Import muss die Datei entpackt werden!)

Neues YouTube-Video – Qt-Tutorial 006: Test von QtCreator und Qt

Nach dem Klicken eines kostenlosen Accounts sowie der Installation des Qt-Frameworks auf deinem Betriebssystem, probieren wir das alles einmal aus.

Qt-Tutorial 006: Test von QtCreator und Qt
Wir erstellen mit dem QtCreator das erste Programm, kompilieren dieses und, wenn alles gut läuft, erscheint nach dem Start ein Fenster.

Wir schreiben das Programm nicht selbst, wir nutzen eine Vorlage. Hierbei geht es nur darum, die Installation einmal zu testen.

Wenn alles klappt, erscheint ein leeres Fenster, was noch nichts kann (abgesehen von maximieren, minimieren, schließen, verschieben).

Neues YouTube-Video: Floppy Image auf macOS für DOS unter VirtualBox erstellen

Ich hatte vor einer Weile ein wenig mit MSDOS in VirtualBox herumgespielt. Ich wollte TurboPascal darauf mal (wieder) ausprobieren. Dafür brauchte ich ein Floppy-Image. In diesem Video zeige ich, wie man das einfach und schnell machen kann.

Floppy Image auf macOS für DOS unter VirtualBox erstellen
Floppy Image auf macOS für DOS unter VirtualBox erstellen

Hier ist noch der Link zu TurboPascal.

Hier geht es zum Video.

Neues YouTube-Video – Qt-Tutorial 005: Installation auf Linux

Natürlich kannst du Qt auf Linux oftmals über deinen Paketmanager installieren. In diesem neuen Video zeige ich dir aber, wie du das Qt-Framework aus den offiziellen Quellen installieren kannst.

Qt-Tutorial 005: Installation auf Linux
Ich benutze hier als Linux-Distribution Ubuntu Linux 21.10. Mit ein paar einfachen Schritten ist die Installation schnell erledigt.

Zumindest auf Ubuntu 21.10 benötigt man für die Qt-Entwicklug noch das Paket libgl1-mesa-dev (sudo apt install libgl1-mesa-dev). Dann lädt man sich von https://qt.io das Installationspaket herunter, gibt ihm Rechte zum Ausführen und installiert “Qt for desktop development”. Danach kann man direkt loslegen.