Videoreihe: Entwicklung einer Desktopsoftware für compow mit C++, Qt und SQLite Teil 8

Der Benutzer soll die Datensätze exportieren können, und zwar als CSV, JSON und XML. Dazu treffen wir in diesem Video die Vorbereitungen, indem wir die Daten des CompanyTypes in einer Hashmap (QHash) speichern, um sie später einfach auszulesen.

Eine Desktopanwendung für compow mit C++, Qt und SQLite - Teil 8
Eine Desktopanwendung für compow mit C++, Qt und SQLite – Teil 8

Und so sieht es aus:

QtCreator mit CSV-Export in der Debug-Übersicht
QtCreator mit CSV-Export in der Debug-Übersicht

Hier geht es zum Video.

Warum ist QtCreator so schlecht?

Immer wieder lese ich zur Zeit, dass Programmierer den QtCreator für eine der schlechtesten IDEs überhaupt halten. Ich konnte das bisher nicht nachvollziehen, bis auf Kleinigkeinten finde ich, dass QtCreator eine recht gut IDE ist.

QtCreator
QtCreator

Ich muss durchaus zugeben, dass ich eher die Kommandozeile (Shell), make oder gmake und vor allem einen vernünftigen Editor – VIM – bevorzuge, um zu entwickeln. Zumindest habe ich das so über Jahre hinweg recht erfolgreich gemacht. Doch neben meinem liebsten Editor kenne ich auch andere Editoren, Pseudo-IDEs (Visual Studio Code zum Beispiel) und einige IDEs (Visual Studio, Eclipse, Netbeans, IntelliJ IDEA, Clion, Delphi, Lazarus, Anjuta, KDevelop, Code::Blocks und was weiß ich, was noch). Die beiden verschrienen IDEs gefallen mir komischerweise am besten: QtCreator und Lazarus IDE.

Warum ist das so? Nehmen wir einmal Visual Studio. Bis das Ding gestartet ist, bis ich ein Projekt angelegt oder, schlimmer noch, geladen habe, dauert es ewig bis drei Tage. Danach ist alles so träge und nervig, die Vorkonfiguration kaum zu benutzen, das Einrückverhalten eine Katastrophe und der Editor eine Art Notepad im modernen Gewand. Gut, das ist jetzt übertrieben. Die Editoren leisten schon eine Menge mehr, als Notepad, allerdings halte ich sie, zumindest in der Standardkonfiguration, für unbenutzbar. Tatsächlich ist das bei QtCreator und Lazarus nicht anders. Vergleicht man die Editoren mit modernen Dinosauriern wie VIM, dann merkt man schnell, was effizient ist und was pseudoeffizient ist.

Dann kommen die ganzen Automatismen, die Automagic dazu. All das nervt mich oftmals, denn tauchen Probleme auf, sind sie oftmals nur schwer behebbar, denn man kennt die Automagic dahinter ja nicht und dann nehmen einem diese Systeme nicht Arbeit ab, sondern machen noch viel mehr.

Natürlich sind die integrierten Debugger toll, auch, dass Referenzenzähler mit drin sind, man im Code hin und her springen kann usw. Aber sie lahmen oftmals so sehr, dass ich meinen Gedankenfluss andauernd unterbrechen muss, warten muss oder irgendwas abstürzt.

QtCreator kann nicht viel. Es handelt sich um einen “schlechten” Editor mit Projektmanagement, GUI-Designer und ein paar Nettigkeiten wie integriertem Debugger. Die Sache ist schon komplexer, aber wenn man es herunterbricht, bleibt eine nicht so hochkomplexe IDE, die sich angenehm betreiben lässt. Denn sie unterstützt mich, macht Automatismen oder sichtbar und einfach handlebar. Genau das ist für mich wichtig: zumeist, nicht immer, weiß ich, was passiert und kann auch händisch recht problemfrei eingreifen. Dabei kann ich aber auch im Code herumspringen, Fenster splitten, den grafischen Debugger starten und Kompilierszenarien auswählen. Mir gefällt das sehr und ich empfinde QtCreator tatsächlich als eine IDE, mit der ich gerne arbeite, auch wenn sie Schwächen hat (Editor – das Problem haben aber alle IDEs, die ich kenne, Refactoring ist nicht schön, Automatismen wie Getter/Setter erstellen sind nicht vorhanden, usw.). Ich finde es schade, dass die IDE so zerissen wird. Das selbe bei Lazarus. Ich finde die IDE schön aufgeräumt und einfach in der Nutzung. Darin liegt für mich die Mächtigkeit des Systems.

Doch freue ich mich auch immer wieder, wenn ich auf der Shell und mit VIM arbeiten kann.

Videoreihe: Entwicklung einer Desktopsoftware für compow mit C++, Qt und SQLite Teil 7

In diesen ca. 20 Minuten machen wir einiges. Wir laden das Logo der Firma im Firmeneintrag und zeigen es an. Dann implementieren wir noch die Funktion, dass man aus der Firmenmaske die Firma direkt auf der compow-Website anzeigen kann und wir machen die Ausgabetabelle der Firmen sortierbar.

Videoreihe: Entwicklung einer Desktopsoftware für compow mit C++, Qt und SQLite Teil 7
Videoreihe: Entwicklung einer Desktopsoftware für compow mit C++, Qt und SQLite – Teil 7

Und so sieht es (auf macOS) aus:

Firmeneintrag mit angezeigtem Logo
Firmeneintrag mit angezeigtem Logo

Hier geht es zum Video.

Videoreihe: Entwicklung einer Desktopsoftware für compow mit C++, Qt und SQLite – Was kommt jetzt?

Diese Woche wird es erstmal kein Video geben, da zu viel los ist und alle hier kränkeln. Aber was kommt als nächstes?

Nunja, ohne Video werde ich als erstes die Anzeigemaske für die Firmen erstellen, denn das ist langweilige Fließbandarbeit. Danach werden wir uns gemeinsam ansehen, wie wir das Logo-Bild der einelnen Firmen, welches Base64-encoded in der SQLite-Datenbank liegt, in der Firmenmaske anzeigen können. Vielleicht bauen wir es auch in die Ergebnisliste mit ein.

Dann brauchen wir noch etliche weitere Teile:

  • Export der Suchliste
  • Export von Firmen
    • XML?
    • JSON?
    • CSV?
    • Text?
  • Drucken von Firmen
  • Eine Toolbar
  • Ein Menü
  • Einen “Über”-Dialog (About)
  • Für Windows einen Installer
  • Eine Hilfe für die Software oder ein Handbuch?
  • Tests auf Linux, FreeBSD und Windows
  • Vielleicht noch mehr, was mir gerade nicht einfällt

Ich denke, wir werden uns dann nächste Woche damit beschäftigen. Bis dahin hoffe ich, dass ich die Firmenmaske fertig bekomme, wonach es zur Zeit aber nicht aussieht.

KooKooK 0016: FreeBSD-Entwicklungsumgebung für Server einrichten

Ok, wir sind immer noch nicht gestartet. Ich meine, mit dem Programmieren. Wir richten noch ein. Das soll erstmal das letzte Einrichtungsvideo sein. Hier geht es darum, wie wir die Serverkomponente entwickeln wollen. Ich installiere dazu Qt sowie QtCreator in einem Jail auf FreeBSD und nutze es via SSH und X11-Forwarding. Wie das geht, zeige ich in diesem Video.

FreeBSD-Entwicklungsumgebung für Server einrichten
FreeBSD-Entwicklungsumgebung für Server einrichten

Innerhalb unseres KooKooK-Jails installieren wir qtcreator, qt5 und xauth, schalten SSH frei und probieren aus, ob und wie gut es funktioniert.

Hier geht es zum Video.

Hier geht es zur Playlist.

Hier geht es zur Website.

Hier geht es zum Redmine-Projekt.

Hier geht es zum Redmine-Projekt.

Videoreihe: Entwicklung einer Desktopsoftware für compow mit C++, Qt und SQLite Teil 2

Im zweiten Teil unserer Videoreihe “Entwicklung einer Desktopsoftware für compow mit C++, Qt und SQLite” geht es darum, Typen für die Branchen zu entwickeln sowie eine Bibliothek, um die Branchen aus der Datenbank in einer Liste zu speichern und einer ListBox anzuzeigen.

Eine Desktopanwendung für compow mit C++, Qt und SQLite - Teil 2
Eine Desktopanwendung für compow mit C++, Qt und SQLite – Teil 2

Hier geht es zum Video.

Videoreihe: Entwicklung einer Desktopsoftware für compow mit C++, Qt und SQLite Teil 1

Für das Projekt compow, welches ich damals 2016 entwickelt habe und jetzt gerade relaunche, nachdem es zwei Jahre abgeschaltet war, möchte ich die Desktopsoftware, die ursprünglich in wxWidgets geschrieben war, neu in Qt implementieren.

Eine Desktopanwendung für compow mit C++, Qt und SQLite
Eine Desktopanwendung für compow mit C++, Qt und SQLite

Die wxWidgets-Anwendung ist in die Jahre gekommen und das Deployment, vor allem für verschiedene Betriebssysteme, ist unglaublich aufwendig. Weiterhin habe ich eine Menge Code an compow geändert, so dass man ein größeres Refactoring durchführen müsste. Ich möchte sie also neuschreiben und dachte mir, dass ich den Vorgang aufnehme. Darum geht es hier in den Videos. Begleitet mich beim Entwickeln der neuen compow-Desktop-Version.

Und hierum handel es sich: Mit der Desktop-Version von compow hat man lokalen Zugriff auf alle in compow gespeicherten Firmenprofile und kann diese inklusive Branchen durchsuchen.

Es handelt sich um eine sehr einfach Software und im ersten Schritt soll sie auch ganz einfach entwickelt werden. Ich verzichte auf ORM und Persistensbibliotheken (hier geht es nur um ein paar wenige Queries), auf Patterns, und so weiter. Ich entwickle ganz klassisch, da es sich nur um ein Nebenprodukt handelt. So sah die alte Software aus:

Alte compow-Desktop-Software
Alte compow-Desktop-Software

Die SQLite-Datenbank nehmen wir vom alten Projekt. Dafür gibt es auch bereits ein Script, welches die notwendigen Daten aus der “echten” Datenbank herauszieht und in der SQLite-Datenbank speichert und Indices anlegt. Darum möchte ich mich nicht kümmern.

So sieht die Software aus, die wir in diesem ersten Teil implementiert haben:

Anfang der neuen Version
Anfang der neuen Version

Nicht schlecht, oder? In den nächsten Tagen machen wir weiter.

Hier geht es zum Video.

KooKooK 0015: Wir fügen der Baustellenseite noch ein Impressum hinzu

Mir fiel noch ein, dass es vernünftig wäre, ein Impressum auf der KooKooK-Website zu haben. Hier fügen wir das ein und deployen die Website erneut.

KooKooK 0015: Wir fuegen der Baustellenseite noch ein Impressum hinzu
KooKooK 0015: Wir fuegen der Baustellenseite noch ein Impressum hinzu

Hier geht es zum Video.

Hier geht es zur Playlist.

Hier geht es zur Website.

Hier geht es zum Redmine-Projekt.

Hier geht es zum Redmine-Projekt.