31 Oct 2018
⌨
… dann wäre C++
womöglich arbeitslos.
Naja, vielleicht nicht ganz, also Spaß bei Seite. Aber generische
Programmierung mit Templates zählt für mich neben
RAII
zu den wichtigsten Features von C++.
Also Frage: Wie löst man dieses Manko in reinem
C?
Die beiden üblichen und widerlichen Antworten sind:
- MACROs
- void*
» Ganzen Beitrag lesen
30 Oct 2018
⌨
Man wirft sowohl C++ als auch dem
COM unter Windows vor,
dass sie eine
V-Table
(auch Virtual Method/Function Table genannt) in ihrem Objektmodell und -layout
einsetzen.
Die Kritik lautet dann: O-M-G! Ein Funktionsaufruf läuft über 2 Pointer!
Der erste zeigt auf die Methodentabelle und in der Tabelle zeigt ein zweiter
Pointer zur tatsächlichen Funktion.
Na … jetzt könnten wir doch meinen: Ha! Das machen wir einfacher.
» Ganzen Beitrag lesen
29 Oct 2018
🔧
Der Arduino Leonardo
ist zwar auch ein Arduino … aber eben doch ein bisschen anders.
Das gilt in erster Linie für die serielle Kommunikation, denn schnell schreibt
man sich ein paar Zeilen um Bytes an die
Mikrocontroller zu senden.
Beim UNO oder allgemein bei
allen Boards mit separatem USB-zu-Seriell-Konverter sind die Parameter für den
COM-Port recht anspruchslos …
… doch beim Leonardo funktioniert das dann nicht.
» Ganzen Beitrag lesen
28 Oct 2018
💻 💾
Ah, die Uhr hat sich wieder 3 mal zurückgestellt.
… muss ich zum Glück nicht mehr an Tagen wie heute sagen.
Denn die Umstellung von Sommer- auf Winterzeit ist wieder einmal fällig.
Als ich damals vor 15-20 Jahren 3 Windows-Installationen auf einem PC parallel
installiert hatte und mit
VAMOS
hin- und her bootete, stellte jede Windows-Installation die Uhr vor oder
zurück. Damit lief die Uhr dann bis zu 2 Stunden falsch.
Ein Umstellung erfolgte durch mich selbst manuell unter
DOS bzw.
Windows 3.x
, und dann führten
Windows 9x und danach
Windows NT das
gleiche nochmals automatisch durch.
(Anmerkung: Damals war ich hauptsächlich in DOS unterwegs und nutzte Windows
nur für Office Anwendungen)
Und NTP … was ist das?
» Ganzen Beitrag lesen
27 Oct 2018
⌨
Fast kein Programmierer weiß heute mehr was ein Monitor ist.
Natürlich meine ich damit nicht den Bildschirm, sondern ein
Synchronisierungsobjekt,
das in vielen Sprachen und Betriebssystemen vorhanden ist.
Ausgerechnet die Windows API hat auf dieses Konstrukt bis zu NT 6
(auch als Vista
bekannt) verzichtet.
In Java und
C# hingegen ist quasi alles ein
Monitor … nur nutzt diesen fast niemand.
» Ganzen Beitrag lesen
26 Oct 2018
🔧 💻
Dieser Spontankauf einer
Lenovo-Explorer
VR-Brille leitete natürlich ein paar Folgekosten und Umbauarbeiten ein, doch am
Ende landete ich dann doch in meinem virtuellen Holographic-Wohnzimmer.
Die projizierte Landschaft draußen sieht besser aus, als die mit
Apps-behängten Wände und die herum schwebenden Stein-Inseln erinnern fast ein
bisschen an Aincrad
aus
Sword Art Online.
Wirklich lustig sieht Minecraft aus,
man sitzt dann in einem Minecraft-Wohnzimmer mit
Glowstone an der Decke und
die eigentliche Spielwelt hat man in einem übergroßen Bilderrahmen vor sich.
» Ganzen Beitrag lesen
25 Oct 2018
⌨
Während in Windows ein ganzes Gestrüpp an Funktionen herangewachsen ist um
Prozesse mit anderen Rechten zu starten, hat POSIX
bzw. Linux gleich ganz auf eine API
verzichtet. Wer root
ist, darf mit setuid()
und seinen Freunden machen
was er will und sonst hat niemand (kein nicht-privilegierter Account)
was zu melden.
Wie bekommt also ein normaler User eine Funktion mit “erhöhten Rechten”
ausgeführt?
Na man ruft das Programm su
oder sudo
auf … und die machen das schon
irgendwie.
» Ganzen Beitrag lesen
24 Oct 2018
⌨
Komponenten, Dienste oder Micro-Services stellen gerne Funktionen wie
start()
run()
oder execute()
bereit, die einen spezifischen
Arbeitsprozess initiieren. Nicht selten sind solche Routinen asynchron,
sie veranlassen intern den Ausführungs-Start (z.B. in einem anderen Thread)
und kehren unmittelbar mit einer Erfolgs- oder Fehlermeldung zurück.
Die Ausführungsumgebungen des Initiators und der Komponente sind getrennt.
Jetzt brauchen wir natürlich auch eine Möglichkeit um die Komponente zu
informieren, dass sie ihre Tätigkeit einstellen bzw. abbrechen soll.
» Ganzen Beitrag lesen
23 Oct 2018
💻
… war
Windows 98 aktuell.
Und nachdem ich gerade 20 Minuten in eine solche Neuinstallation investiert
habe, fällt einem wieder ganz besonders auf: dass früher alles anders war.
Doch mit großer Freude stelle ich fest, dass der Blog im alten IE5
(OK ich hab die SE von 1999 installiert) angezeigt wurde.
Zwar nicht ganz perfekt “responsive”, aber nutzbar.
» Ganzen Beitrag lesen
22 Oct 2018
⌨
Ich liebe Streams!
Die Idee, dass man alles als Stream öffnen kann, Daten herausziehen
und Daten reinstecken kann ist doch eigentlich genial.
Diese überlegene Unix-Konzept wurde zum Glück auch in Windows (zumeist)
übernommen, und so bieten Dateien, Sockets, Pipes, Geräte, Treiber
und auch Prozesse eine recht einheitliche Schnittstelle an, um Daten auszutauschen.
Man kann also mit den 2 Funkionen
read()
und
write()
bzw.
ReadFile
und
WriteFile
die halbe Welt erobern.
(Bei Windows sieht man schon am Namen, wie limitiert die API früher war, heute
sind die beiden Funktion wesentlich mächtiger.)
» Ganzen Beitrag lesen
21 Oct 2018
⌨
Es ist schon klar, dass eigentlich alles “aus der Historie” entstanden ist.
Kein System, das älter als 5 Jahre ist, leidet nicht an seinen
Design-Entscheidungen aus der Vergangenheit.
Wie auch immer … manche Dinge sind schon ein bisschen unverzeihlich,
wenn wir im 21. Jahrhundert immer noch mit “globalen” Zuständen und
Variablen konfrontiert sind, nur weil um 1970 noch keiner objektorientiert
nachgedacht hat.
» Ganzen Beitrag lesen
20 Oct 2018
⌨
Will man zwischen unterschiedlichen Plattformen einen Datenstandard
durchsetzen, trifft man schnell auf das Problem, dass die Plattformen selbst
Standards setzen, die sich untereinander gegenseitig ausschließen.
Mein aktuelles Beispiel ist ein “Text-Trennzeichen”.
Z.B.: Wir wollen mehrere Felder in eine Zeile bekommen.
Also definieren wir ein Zeichen, das im Text selbst nicht vorkommt und
erklären es stolz zum Trennzeichen.
» Ganzen Beitrag lesen
19 Oct 2018
⌨
Wer “Resource Acquisition Is Initialization” - kurz
RAII -
nicht kennt, hat nicht das Recht sich als C++ Entwickler zu bezeichnen.
Und selbstverständlich gehört auch die Umkehrung dazu:
“Resource Release Is Destruction” - kurz RRID
.
Doch die erste Implementierung im GATE Projekt findet in C statt und hier
fehlt dieses C++ Konzept wirklich sehr.
» Ganzen Beitrag lesen
18 Oct 2018
💾 🔧
Einmal nicht genau hingesehen und schon muss man 60 Euro zusätzlich ausgegeben.
Ich besitze jetzt also ein Mainboard, das meine Standard SO-DIMM DDR3 Riegel
nicht verdauen kann. … Aha.
Tja, auch in der Hardware gibt es im Laufe der Zeit Veränderungen.
Seit langem pflege ich mein “Atom-Kraftwerk”, also eine Reihe von kleinen
Intel-Atom-ITX-Mini-Servern und ich habe mir bisher nie über die
Spannungspegel der RAM Module einen Kopf gemacht.
» Ganzen Beitrag lesen
17 Oct 2018
⌨ 💾
Mark Twain’s
Die Nachricht von meinem Tod ist stark übertrieben.
gilt heute für Vielerlei.
Und die
Windows-API,
heute auch bekannt als WIN32, zählt meines Erachtens auch dazu.
Ebenso könnte man unter Linux behaupten: POSIX
war früher, heute gibt es nur noch D-BUS
und Docker.
Warum kommt im 3-Jahres-Rhythmus immer ein neuer Hype um etwas auf, das
zeitgleich behauptet: “Das andere war früher, ist jetzt tot und ich allein
bin die Zukunft”?
» Ganzen Beitrag lesen