Compiler Explorer

Wer intensives Debugging auf Systemebene betreibt, sein System so weit wie möglich optimieren möchte (oder muss), oder auch nur einfach einmal sehen möchte, was der Compiler so tut, wird schnell mit dem Assembler-Code konfrontiert. Es gibt mehrere mehr oder weniger komfortable Möglichkeiten sich die Compiler-Ausgabe im Assembler anzusehen – wer dann aber mit Compiler-Optionen herumspielt […]

Read More

C: Variable Argumente richtig nutzen

Immer wieder finde ich zu Funktionen mit variablen Argumenten folgende Konstruktion: Hier stellt sich die Frage, warum für fmt unbedingt den Wert 0 erlaubt werden muss? Nach C99-Standard ist va_list ein opaques Objekt und kein Pointer. Weder das Vorinitialisieren der va_list (führt auf vielen Architekturen zu Compiler-Fehlern) noch das Prüfen von fmt auf NULL (Der Wert […]

Read More

Shell: Ausgabe/Eingabeumleitung kompakt

Hier als kleiner Auffrischung/Referenz die gebräuchlichsten Ausgabe- und Eingabeumleitungen: < Datei Datei auf Standardeingabe umleiten << EOT ….. EOT z.B. in Shellskript, mehrzeilige Eingabe bis EOT (end of text) in Standardeingabe umleiten 1> Datei oder > Datei Standardausgabe in Datei umleiten, neue Datei dabei erstellen >> Datei Standardausgabe in Datei umleiten, an evtl. vorhandene Datei anhängen 2> Datei […]

Read More

BASH: Abbrechen von im Hintergrund gestarteten Skripten vermeiden

Shell-Skripte sind beliebt, weil mit wenig Aufwand auch komplexe Aufgaben erledigt werden können. Begonnen mit den Init-Skripten bis hin zu Installationsskripten werden dabei oft Dinge erledigt, bei denen ein (unbemerktes) Fehlverhalten zu sehr schwer zu findenen Problemen führt. Eine häufige Ursache ist, dass zeitaufwändige Aufgaben zwar im Hintergrund gestartet werden, aber nicht sicher gestellt ist, […]

Read More

Nginx: Statische Inhalte bereits vorkomprimiert direkt ausliefern

HTML-Seiten und andere gut komprimierbare Inhalte in komprimierter Form auszuliefern, spart Bandbreite und erhöht die Performance… üblicherweise. Leider gilt dieser Grundsatz nicht für schwache Hardware wie Embedded-ARM-Boards wie den Cubietruck, Raspberry-PI oder Banana-PI. Hier ist es sinnvoll die auszuliefernden Dateien bereits komprimiert auf der Platte abzulegen und so die Prozessorleistung nicht für die Kompression zu […]

Read More