Von Android wieder auf iPhone

Mein letztes iPhone war das iPhone 4 – habe ich immer noch. Danach bin ich auf Android umgestiegen. Warum? Keine Ahnung. Ich hatte das Google Nexus 4 (habe ich immer noch hier), das Blackberry Priv, das Xiaomi Mi Max 2 und zuletzt das Ulefone Armor 7. Zwischendurch hatte ich auch ein Blackberry Classic.

Ich hatte schon länger überlegt, wieder auf ein iPhone zurückzuwechseln. Der Hauptgrund war, dass meine IT-Umgebung doch eher Mac-lastig ist (MacBook Pro 16″ 2019, MacBook Pro 13″ 2020, iPad von 2018) und die Integration darein doch einfach “nett” ist. Ist sie auch.

Entschieden habe ich mich für das iPhone 13 Pro Max. Jedes andere hättes es auch getan, aber die Akkus der anderen Geräte sind noch unterirdischer und nach meinem Xiaomi Mi Max 2 und dem Ulefone Armor 7 wollte ich einfach nichts mehr, was einen miserablen Akku hat. Damit kam nur das iPhone 13 Pro Max in Frage, denn der Akku ist “ok”. Allerdings: Für ein so hochpreisiges und großes Gerät hätte man auch einen “vernünftigeren” Akku verbauen können.

Die Gründe, warum ich aber jetzt mein Smartphone gewechselt habe, obwohl ich das Ulefone sehr sehr mag, waren:

  • Keine Updates mehr. Und ja, auf dem Ulefone läuft die TAN-Software für mein Online-Banking. Keine Updates sind aber ein generelles No-Go und ich verstehe diese Politik nicht wirklich. Das letzte Update ist vom Sicherheitsupdate vom 5. Dezember 2019 (Android 9). Es gibt zwar ein Android 10 für das Gerät, das muss man aber kompliziert und umständlich selber flashen, danach ist auch alles weg und ob es funktioniert, weiß ich nicht. Aber selbst dann gibt es keine wirklichen Updates mehr. Schade, bis auf die anderen Punkte, die ich hier anspreche, ist das Gerät super.
  • Der Zugang: Ich habe als Basiszugangsmethode die Gesichtserkennung eingeschaltet. Die funktioniert so lala … allerdings: mein fünfjähriger Sohn kann mit seinem Gesicht das Handy auch entsperren. Meine dreijährige Tochter mit ihrem auch…
  • Der Fingerabdruckscanner ist unbrauchbar. Unbrauchbar. Absolut unbrauchbar. Die Positionierung ist eine wahre Katastrophe. Man kommt immer mit dem Handballen darauf beim Greifen des Geräts und dann sperrt sich der Sensor auch direkt, weil man zu oft “Fehlversuche” hatte …

Bisher gefällt mir das iPhone gut. Ob es den Preis auch wert ist? Ehrlicherweise denke ich nicht. Es hat zwar etliche Features, aber ob man die alle auch nutzt, wage ich zu bezweifeln. So ein richtiger Dauerläufer ist es nicht. Auch die 120Hz (die auch 300 Euro Android-Geräte bieten), hauen mich im Gegensatz zu den anderen Leuten nicht so aus den Socken. Ich spiele mal noch ein wenig damit herum und schreibe dann vielleicht einmal ausführlicher, was ich gut und was ich schlecht finde.

Bis dahin: Bis bald (:

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.

wxWidgets auf macOS installieren

wxWidgets lässt sich einfach auf dem Mac installieren. Hier das Beispiel für Monterey.

Zuerst checken wir via Git den Code des aktuellen Projekts aus

git clone https://github.com/wxWidgets/wxWidgets.git

Dann wechseln wir in das ausgecheckte Verzeichnis

cd wxWidgets

und checken noch einige Submodule aus

git submodule update --init 3rdparty/nanosvg
git submodule update --init 3rdparty/catch
git submodule update --init src/jpeg
git submodule update --init src/png
git submodule update --init 3rdparty/pcre

Wir erstellen das Verzeichnis, in das hineinkompiliert werden soll, und wechseln dorthin

 mkdir osx && cd osx

Dann konfigurieren wir noch das Projekt, kompilieren und installieren es

../configure --disable-shared --enable-stl --with-cxx=14 --with-macosx-sdk=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk --enable-optimise --prefix=/usr/local/wxMac --enable-monolithic  --without-libjbig --without-libtiff
make -j4
sudo make install

wxWidgets ist jetzt einsatzbereit.

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"));
}

Umstieg von FreeBSD auf macOS

Zehn Jahre, nein, mehr als zehn Jahre, habe ich, nahezu ausschließlich, FreeBSD auf meinen Arbeitsplatzrechnern benutzt – auf der Arbeit, wie auch zu Hause.

Vor nunmehr einem Jahr bin ich gewechselt oder, besser gesagt, zurückgewechselt, auf macOS.

Ich liebe FreeBSD, wenn man denn bei einem Betriebssystem von Liebe sprechen kann. Es hat mir immer wahre Freude gemacht, mit dem System, neben meinen zahlreichen Servern und Jails, direkt meine Arbeit zu erledigen. Ungefähr 2009 bin ich in der Firma sowie zu Hause von macOS auf FreeBSD umgezogen, erledigte damit softwareentwicklerische und administrative Aufgaben, und ganz ehrlich: es gab nicht einen Tag, an dem ich aufgrund von Problemen nicht arbeiten konnte. Was ich brauchte, funktionierte in aller Regel gut bis sehr gut. Zuerst nutzte ich einige Jahre WindowMaker, stellte dann aber doch eines Tages, im Wahn des Komforts, auf KDE um und hatte ein hervorragendes Werkzeug, welches kaum Wünsche offen ließ.

Meine Werkzeugkiste war vollständig, doch irgendwann bröckelte es. Es begann mit Problemen meiner doch etwas in die Jahre gekommenen Grafikkarte. Dazu kamen dann die Zwänge, properitäre Software zu nutzen, vor der es mir immer noch schaudert. Weiterhin gab es für ein großes Projekt die Problematik, dass Qt mit meiner Webcam (und auch mit anderen) so überhaupt auf FreeBSD nicht klar kam und ich auch für Android und iOS entwickeln musste.

Schweren Herzens verabschiedete ich mich dann doch von FreeBSD auf der Workstation. Zu Windows, welches ich seit über zwanzig Jahren wie der Teufel das Weihwasser fürchte, wollte ich aber nicht. Da ich über all die Jahre auch immer ein MacBook hatte, welches aber nie mein Hauptsystem war, kam ich zur Überlegung, mir ein vernünftiges System vom Hersteller mit dem angebissenen Apfel zu kaufen. Es wurde das MacBook Pro 16″ aus 2019.

Bis auf den Dauervollausschlag des Lüfters bei angeschlossenen Bildschirmen bin ich sehr zufrieden. Das System bietet vieles, was mein FreeBSD für mich auch bot, und einiges andere mehr.

Auf meinen Servern betreibe ich FreeBSD aber wie gewohnt weiter und könnte glücklicher kaum sein. Selten hat mich ein System so wenig genervt und mich so wenig an Produktivität gehindert.

Aber trotz alle dem, steht meine FreeBSD-Workstation noch immer hier neben mir, mit seinem ZFS, dem RAID und allem, was ich so sehr mag. Ich habe XRDP drauf konfiguriert und nutze es ab und an doch noch für die ein oder andere Aufgabe.