Schon mal versucht eine moderne Seite mit einem
Raspberry PI Zero
zu öffnen?
Viel Spaß dabei!
Hier befindet sich eine entschlackte Zusammenstellung meiner
Tagebucheinträge von opengate.at/blog ,
aber ohne unnötigem
HTML oder
CSS Schnickschnack.
So haben Webseiten vor 20 Jahren ausgesehen und ich möchte hiermit
beweisen, dass man auch heute noch Content so gestalten kann,
dass er auf alten Browsern, Embedded-Systemen und
energie-effizienten SoCs vernünftig dargestellt werden kann.
Denn schließlich geht es hier um Inhalte, und nicht darum, ob
Überschriften mit Farbverläufen funkeln können.
d(^_^)b
Meine Ärztin hat mir vom Verzehr von
Cookies abgeraten.
Cookies sind schädlich für den Organismus und schränken die Bewegungsfreiheit
im Netz ein.
Folglich muss auch diese Seite ohne diese Bürde auskommen.
|
|
Es ist oft ganz lustig, wenn man Leute (oder auch sich selbst) dabei
ertappt, wenn sie altkluge Belehrungen zum Besten geben.
Aber das ist menschlich und auch nicht wirklich schlimm.
Da kam einmal die Frage an mein Ohr:
Wusstest du nicht, dass man heute nicht mehr template<class ...>
schreibt, sondern template<typename ...> ?
Man erkennt dann beim Gegenüber, dass jetzt ein “Oh Gott, Nein”
von einem selbst erwartet wird.
|
10 Nov 2018
|
|
» Weiterlesen
|
|
Ein Kollege meinte einmal:
Schreib’ deinen C++ Code um, weil so etwas habe ich noch nie gesehen.
Gemeint war ein do { ... } while(0); Block.
Doch da musste ich darauf hinwirken, dass wir zuerst das Problem
“So etwas habe noch nie gesehen” lösen.
|
09 Nov 2018
|
|
» Weiterlesen
|
|
Wenn man mal eine Idee am Steckbrett getestet hat, damit zufrieden ist und
nun an die Praxis denkt, kommt einem - bzw. kommt mir zumindest - die
Frage unter:
Und wie wird das jetzt möglichst modular zusammengesteckt?
Wie kommt der Strom zum Gerät?
|
08 Nov 2018
|
|
» Weiterlesen
|
|
Mama hat auf dem Flohmarkt fast kostenlos ein altes etwas mitgenommenes
Buch gefunden und ihrem Sohnemann geschenkt.
Es trägt den Titel
Vom Anfänger zum GEM-Profi
Perfekte Programmierung auf Atari ST und IBM-PC
|
07 Nov 2018
|
|
» Weiterlesen
|
|
Mein Glückssträhne geht weiter …
Windows Server 2016 ist
installiert, alles läuft perfekt und dann mache ich den schlimmsten Fehler
überhaupt:
System wird mit dem Internet verbunden, Windows Updates laufen an und
… das System friert ein.
Perfekt! Dafür liebe ich Microsoft.
Ein kluger Mann sagte mal zu mir:
Ein Feature, das man nicht abdrehten kann, ist ein Bug!
|
06 Nov 2018
|
|
» Weiterlesen
|
|
Nach meinem Server Crash erfolgte nun der eigentlich für nächstes Monat
geplante Umstieg auf
Server 2016.
Zwar habe ich noch keine Lizenzen, aber die ersten 180 Tage darf man ja
kostenlos testen.
Die Installation lief problemlos und auch das Setup der Zusatzdienste wie
z.B. DHCP
war kein Problem.
Getestet habe ich das allerdings nicht, weil mein Hauptrechner ja
sowieso mit statischen IP Adressen konfiguriert ist.
Und heute sind die Akkus meiner Smartphones und vom
3DS leer.
|
05 Nov 2018
|
|
» Weiterlesen
|
|
Heute Nacht hat die Festplatte
meines Servers zu Hause den Geist aufgegeben.
Backup? Nö … nicht notwendig. Die Daten darauf sind sowieso mehrfach auf
anderen Systemen gespeichert und die Test-VMs sind auch egal …
… dachte ich.
|
04 Nov 2018
|
|
» Weiterlesen
|
|
Vor einige Jahren kaufte ich mir mal beim Conrad den kleinen
Probot 128.
Der ist für “fortgeschrittenere” Kinder geeignet, also müsste ja sogar ich
damit klar kommen. Und das wäre dann auch ein super Einstieg in die
Mikrocontroller Welt.
Und das Teil ist ja auch lieb und alles, aber dann gibt es da ein Detail,
dass mir die Freude nachhaltig vermiest hat.
Die C-Control Mega 128 und ihr beknacktes
Compact-C.
|
03 Nov 2018
|
|
» Weiterlesen
|
|
Da hatte mal ein
pfiffiger Kerl einen
Code für eine
Wildcard - Suche
verfasst, der mein C-Fanboy-Herz schneller schlagen lässt.
Wenn man eine komplexere Suche in eine Zeile bannen kann, die auch noch
korrekt funktioniert, ist das schon was sehr Schönes.
Und die besonderen Nebeneffekte sind:
- Sehr geringer Maschinencode
- Portabel auf alle (und zwar wirklich alle) Plattformen
- Man kann damit Wettbewerbe gewinnen
Und wie hat der Junge das geschafft?
Mit einer Rekursion.
|
02 Nov 2018
|
|
» Weiterlesen
|
|
Als Entwickler freue ich mich natürlich sehr, dass meine Erfindung
letztlich dann doch in den
C++17 Standard Einzug gefunden hat.
std::string_view
OK, Spaß bei Seite … das haben wohl auch schon zehntausende Entwickler vor
mir gebraucht und darauf hin erfunden. Aber trotzdem erinnere ich mich noch
zurück an das Jahr 2007,
als mir bei der Arbeit mit
std::string
unmittelbar auffiel, dass dieses unglaublich wichtige Feature im Standard fehlte.
|
01 Nov 2018
|
|
» Weiterlesen
|
|
… 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*
|
31 Oct 2018
|
|
» Weiterlesen
|
|
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.
|
30 Oct 2018
|
|
» Weiterlesen
|
|
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.
|
29 Oct 2018
|
|
» Weiterlesen
|
|
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?
|
28 Oct 2018
|
|
» Weiterlesen
|
|
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.
|
27 Oct 2018
|
|
» Weiterlesen
|
|
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.
|
26 Oct 2018
|
|
» Weiterlesen
|
|
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.
|
25 Oct 2018
|
|
» Weiterlesen
|
|
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.
|
24 Oct 2018
|
|
» Weiterlesen
|
|
… 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.
|
23 Oct 2018
|
|
» Weiterlesen
|
|
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.)
|
22 Oct 2018
|
|
» Weiterlesen
|
|
|