Abonnieren

Liebes BLOG Tagebuch!

Man sagt:
Was wir wissen, ist ein Tropfen, was wir nicht wissen, ist ein Ozean.
(von Isaac Newton oder aus Dark)

Ich muss heute also noch sehr viel trinken. 😉

Diese Seite benutzt KEINE Cookies! Wozu auch?
Hier geht es NICHT um Browser-Kekse, Werbung und Spionage, SONDERN um Programmierung, Hardware, Software und was mir sonst noch so passiert ist, damit ich in 10 bis 20 Jahren eine Erinnerungshilfe an meine momentanen Erlebnisse parat habe.

Was bisher geschah:


Arrays: Wenn C templates hätte...

… 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:

  1. MACROs
  2. void*

» Ganzen Beitrag lesen

Die V-Table objektiv betrachtet

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

Dem Leonardo die Hand schütteln

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

Zeitumstellung

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

Der unbekannte Monitor

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

Mixed-Reality: Im Minecraft-Wohnzimmer

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

Das Geheimnis von su

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

Sind stop() cancel() oder quit() asynchron?

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

Heute vor 20 Jahren...

… 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

Fehlerströmung

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

Die globale Welt von 1970

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

Der kleinste gemeinsame Nenner

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

Kein RAII - Kein Spaß

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

Low Voltage RAM

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

WIN32 Todessehnsucht

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

📧 📋 🐘 | 🔔
 

Meine Dokus über:
 
Weitere externe Links zu:
Alle extern verlinkten Webseiten stehen nicht in Zusammenhang mit opengate.at.
Für deren Inhalt wird keine Haftung übernommen.



Wenn sich eine triviale Erkenntnis mit Dummheit in der Interpretation paart, dann gibt es in der Regel Kollateralschäden in der Anwendung.
frei zitiert nach A. Van der Bellen
... also dann paaren wir mal eine komplexe Erkenntnis mit Klugheit in der Interpretation!