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 – 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.

Neues YouTube-Video – Qt-Tutorial 004: Installation auf macOS

In diesem neuen Video zeige ich dir, wie du das Qt-Framework auf macOS installieren kannst.

Qt-Tutorial 004: Installation auf macOS
Die Installation auf macOS ist recht einfach. Folge einfach den Schritten in diesem Video.

Ebenso wie unter Windows, ist die Installation auf macOS sehr leicht, letztlich noch einfacher, denn es gibt eine vorgefertigte Paketauswahl.

Man lädt auf https://qt.io einfach das Installationprogramm herunter, mountet die heruntergeladene DMG-Datei und führt das Installationprogramm von Qt aus. Darin meldet man sich mit seinen Login-Daten an und wählt “Qt for desktop development” aus. Dann gönnt man sich einen Tee. Nach kurzer Zeit ist das Programm installiert.

Neues YouTube-Video – Qt-Tutorial 003: Installation auf Windows

Es gibt wieder ein neues Video. Hierin zeige ich, wie du Qt inklusive QtCreator auf Windows installieren kannst.

Qt-Tutorial 003: Installation auf Windows

Um mit Qt zu beginnen, musst du das Framework auf deinem Rechner installieren. Das ist recht einfach und du kannst die Schritte, wie ich sie im Video zeige, einfach nach- oder mitmachen.

Die Installation ist super einfach. Auf https://qt.io lädt man das Installationsprogramm herunter und führt es aus. Dann gibt man seine zuvor erstellten Daten ein, wählte die benötigten Pakete, gönnt sich einen Tee und, je nach Internetgeschwindigkeit, ist Qt dann innerhalb kurzer Zeit installiert.

Neues YouTube-Video – Qt-Tutorial 001: Vorstellung

Ich habe ein neues Video hochgeladen. In meinem Qt-Tutorial geht es darum, das Framework kennenzulernen und damit zu arbeiten.

Qt-Tutorial 001: Vorstellung

In diesem Video gehe darauf ein, was wir mit Qt in diesem Tutorial machen werden.

Nur kurz zusammengefasst: Bei Qt handelt es sich um ein Anwendungsframework und eine GUI-Bibliothek, sprich, man kann einfach Software in C++ (und anderen Programmiersprachen) schreiben, die auch über eine grafische Benutzeroberfläche verfügen.

Qt gibt es für etliche Betriebssystem. Neben Windows, macOS und Linux gibt es auch (teils inoffizielle Builds) für bsplw. Haiku und FreeBSD und andere.

Zusätzlich zur GUI-Bibliothekt gibt es aber auch viele weiter Abstraktionen wie Netzwerk, Multimedia, Datenbanken und vieles mehr.

In diesem Tutorial geht es um folgende Dinge:

  • Erstellung eines kostenlosen Kontos auf https://qt.io, um die Installation aus den offiziellen Quellen durchzuführen
  • Installation von Qt auf
    • Windows
    • macOS
    • Linux
  • GUI-Entwicklung
  • Netzwerk-Entwicklung (Sockets)
  • Datenbankanbindung

Alles andere lasse ich in diesem Tutorial aber zuerst aus, sprich, ich gehe weder auf Multimediaentwicklung (Kameraansteuerung, Mikrofon und ähnliches), QML, Entwicklung für mobile Endgeräte und Embedded-Entwicklung ein.

Viel Spaß beim Zusehen.

Mein YouTube-Kanal

Ich habe es getan, ich habe es wirklich getan. Nachdem manche meinten, ich solle einen YouTube-Kanal aufmachen, und ich immer sagte: “Ich kann sowas nicht, ich kann ja nichtmal vernünftig frei reden.” und mir gesagt wurde: “Jeder hat mal klein angefangen, da wächst du schon hinein.” habe ich für mich beschlossen, ich beginne mal einfach und schaue, was daraus wird.

Ich habe bereits ein paar Videos vorproduziert. Natürlich, wie ich auch erwartet habe, sind sie noch schrecklich. Wenn ich aber nicht anfange und einfach mache, dann kann ich natürlich auch nicht besser werden. Also seid ein wenig nachsichtig (:

Ich werde mit drei, vielleicht vier, Sparten beginnen:

  • Softwareentwicklung mit Qt
  • FreeBSD
  • Kurztipps
  • und, vielleicht etwas später, macOS-Administration im Netzwerk mit Deployment und vielem mehr

Hier geht es zu meinem YouTube-Kanal: Thorsten Geppert

wxWidgets-Entwicklung mit dem QtCreator (zumindest auf macOS, Linux und FreeBSD)

Es ist kaum zu glauben, aber bis vor einer kurzen Zeit benutzte ich keine IDE. Oftmals entwickle ich immer noch gerne ohne IDE, doch für Qt nehme ich QtCreator und ich finde die IDE ganz “nett”. Ich kenne etliche Systeme, und keins gefällt mir tatsächlich so gut wie QtCreator, außer NetBeans für Java vielleicht. Damit bin ich aber vermutlich allein (:

Ich wollte einmal wissen, wie hoch der Aufwand ist, wxWidgets in QtCreator einzubinden. Es ist sehr einfach. Wie es geht, zeigt dieser Artikel.

wxWidgets nutzt auf unixoiden System “wx-config” als Kommandozeilenkonfigurationswerkzeug. Das bedeutet, dass man einfach in seinen Compileraufruf “wx-config” einbaut. Ein einfaches Beispiel könnte:

# c++ *.cpp -o test `wx-config --libs --cppflags`

sein.

Also einfach mal den QtCreator starten und ein neues Konsolenprojekt erstellen. In der Projektdatei (*.pro) dann folgende Zeilen hinzufügen:

INCLUDEPATH += /usr/local/wxWidgets/include/wx-3.0
wxCXXFLAGS = $$system(/usr/local/wxWidgets/bin/wx-config --cxxflags --unicode=yes --debug=no)
wxLinkOptions = $$system(/usr/local/wxWidgets/bin/wx-config --debug=no --libs --unicode=yes)
LIBS += $$wxLinkOptions
QMAKE_CXXFLAGS_RELEASE += $$wxCXXFLAGS
QMAKE_CXXFLAGS_DEBUG += $$wxCXXFLAGS

Es ist natürlich darauf zu achten, dass der Pfad für wx-config sowie der Includepfad stimmen und angepasst werden.

Jetzt ist es möglich, einfach sein wxWidgets-Programm zu schreiben und mit Klick auf den Play-Button zu kompilieren und zu starten.

Hier noch ein kleines wxWidgets-C++-Beispiel:

#include <wx/wx.h>

class MyApp : public wxApp {

	public:
		bool OnInit();

};

IMPLEMENT_APP(MyApp)

class MyFrame : public wxFrame {

	public:
		MyFrame();
	
	private:
		enum {
			HELLO_WORLD_BUTTON
		};
	
		wxPanel *mainPanel;
		wxBoxSizer *mainBoxSizer;
		wxButton *helloWorldButton;
		wxTextCtrl *helloWorldTextCtrl;
	
	protected:
		DECLARE_EVENT_TABLE()
		
		void HelloWorldEvent(wxCommandEvent &WXUNUSED(event));

};

bool MyApp::OnInit() {
	MyFrame *f = new MyFrame;
	f->Show();
	SetTopWindow(f);
	return true;
}

wxBEGIN_EVENT_TABLE(MyFrame, wxFrame)
	EVT_BUTTON(HELLO_WORLD_BUTTON, MyFrame::HelloWorldEvent)
wxEND_EVENT_TABLE()

MyFrame::MyFrame() : wxFrame(NULL, -1, _("Hello World")) {
	mainPanel = new wxPanel(this, -1);
	mainBoxSizer = new wxBoxSizer(wxHORIZONTAL);
	
	helloWorldButton = new wxButton(mainPanel, HELLO_WORLD_BUTTON, _("Say Hello World"));
	mainBoxSizer->Add(helloWorldButton);
	
	mainBoxSizer->AddSpacer(5);
	
	helloWorldTextCtrl = new wxTextCtrl(mainPanel, -1);
	mainBoxSizer->Add(helloWorldTextCtrl);
	
	mainPanel->SetSizer(mainBoxSizer);
	mainBoxSizer->SetSizeHints(this);
}

void MyFrame::HelloWorldEvent(wxCommandEvent &WXUNUSED(event)) {
	helloWorldTextCtrl->SetValue(_("Hello World"));
}