UNIXwork

DTrace gibt es jetzt auch unter Windows

12. März 2019

Microsoft kann einen immer mal wieder überraschen, und so ist es ihnen auch diesmal gelungen, in dem sie DTrace auf Windows portiert haben.

DTrace ist ein Framework um den Kernel und auch Userspace-Programme zu analysieren. Dieses wurde von Sun Microsystems entwickelt und war 2005 erstmals Teil von Solaris. Dank der Open Source Lizenz wurde es recht bald auch von FreeBSD und Mac OS X adaptiert.

Auch eine Linux-Portierung ist verfügbar, und da DTrace mitlerweile auch GPL-lizensiert ist, könnte es theoretisch auch problemlos in Linux Einzug halten. Vermutlich werden die Distributionen aber eher auf das recht neue bpftrace setzen, welches sehr große Ähnlichkeit zu DTrace hat.

Und wenn Microsoft jetzt die guten Solaris-Features übernimmt, würde ich ihnen noch empfehlen, ZFS für Windows zu portieren.

Autor: Olaf | 0 Kommentare | Tags: solaris, windows, linux, dtrace

XNEdit - Mein NEdit-Fork mit Unicode-Support

06. März 2019

NEdit dürfte einer der ältesten grafischen Texteditoren für Unix-Systeme sein. Seit 1991 reifte dieses gute Stück Software und hat über die Jahre einige Features angesammelt. Leider ist die Entwicklung in diesem Jahrtausend mehr oder weniger eingeschlafen. Bis 2004 gab es noch regelmäßig neue Releases, danach jedoch praktisch nur noch Bug-Fixes.

Vor allem wurde es verpasst, in NEdit auch Support für Unicode einzubauen, was in der heutigen Zeit aber ein absolut unverzichtbares Feature ist. Auch das X11 Core basierte Text Rendering, welches nur Bitmap-Fonts unterstützt, ist nicht mehr zeitgemäß.

Im Dezember 2018 hatte ich spontan Lust mich dieser Probleme anzunehmen und NEdit so wieder zu einem benutzbaren Editor zu machen. Das ist mir hoffentlich auch ganz gut gelungen. Mit dem neuen Xft-basiertem Textrenderer gibt es endlich Antialiasing und Unicode wird nun auch unterstützt.

Damit ist der erste Meilenstein in meinem Modernisierungsplan erreicht. Weitere Verbesserungen und neue Features sind geplant, aber jetzt veröffentliche ich das erstmal als XNEdit 1.0.

Downloads gibt es hier oder auf Sourceforge. Des Weiteren existiert das Projekt auch auf GitHub.

Autor: Olaf | 3 Kommentare | Tags: xnedit, x11, unix, linux

Wie man nicht einen WebDAV-Server implementiert

20. Februar 2019

Ich hatte vor, als eine Ergänzung für dav, einen leichtgewichtigen WebDAV-Server zu entwickeln. Wäre gut wenn ich zu dav-sync gleich noch eine kompatible Server-Komponente anbieten kann, denn von verbreiteten Webservern kann eigentlich nur Apache WebDAV richtig. Alternativ könnte man hierfür auch Nextcloud verwenden, aber das will vielleicht auch nicht jeder.

Verwenden wollte ich das Go Package golang.org/x/net/webdav. Bis ich es mir genauer angeschaut habe.

Ein essentielles Feature sind die sogenannten Dead Properties. WebDAV erlaubt es beliebige XML-Werte als Properties in einer Ressource zu speichern. Dummerweise wird dies immer wieder schlecht implementiert. Ein Auszug aus der Dokumentation aus dem Go-Package:

// Property values of complex type or mixed-content must have fully
// expanded XML namespaces or be self-contained with according
// XML namespace declarations. They must not rely on any XML
// namespace declarations within the scope of the XML document,
// even including the DAV: namespace.
InnerXML []byte `xml:",innerxml"`

Es wird gefordert, dass wenn XML-Elemente darin vorkommen, diese ihren Namespace selbst deklarieren. Anders könnte man den Content auch nicht als einfaches Byte-Array speichern.

Man zwingt damit den Client dazu, seine XML-Requests auf besondere Art zu gestalten, die nirgendwo im WebDAV RFC gefordert wird. Es ist sogar so, dass im RFC Beispiele vorhanden sind, die dies schon nicht erfüllen.

Und wieder mal ein Beispiel für "zu faul um XML richtig zu verarbeiten". Leider nicht das erste mal, dass ich das bei einer WebDAV-Implementierung sehe.

Autor: Olaf | 2 Kommentare | Tags: webdav, go, google, rant

Das Ende ist nah

01. Dezember 2018

Dropping Profanity In Kernel Code Comments: Linux Gets "Hugs"

Also wenn man als Kommentar im Quellcode folgendes hat:

avoid hugging up the memory controller

Weiß man dann, was damit gemeint ist? Wenn man nach hugging up googled landet man bei urbandictionary.com und findet:

to be involved, dating or in a relationship with someone

Dann ist ja alles klar.

Autor: Olaf | 0 Kommentare | Tags: linux, fun

Missverständnisse über Webassembly

03. November 2018

Kürzlich erschien auf Golem ein Artikel über Webassembly, und in den Kommentaren dazu ist mir aufgefallen, dass viele auf Grund von falschen Vorstellungen eine Ablehnung gegen WASM haben.

Bei Bytecode denken viele offenbar an Java, und im Context eines Browsers erinnern sich einige sicherlich an Java-Applets. Auch das ungeliebte Flash nutzt Bytecode. Also warum will man sowas jetzt standardmäßig im Browser integriert haben?

Dabei ist der Vergleich völlig unpassend. Javascript und Flash (oder Java-Applets) sind völlig unterschiedliche Dinge. Flash hat seine ganz eigene Runtime, seine ganz eigene Version einer Sandbox und bietet auch ganz andere Möglichkeiten als Javascript.

Webassembly hingegen ist quasi nur Javascript, nur nicht in Textform, sondern in einer für Menschen eher unlesbaren Binärform. Beides wird in der gleichen Runtime ausgeführt. Alles was Webassembly kann, geht auch mit Javascript. Somit gibt es auch wenig neue Angriffsfläche.

Wer also wirklich kein Webassembly will, sollte dann auch gleich Javascript ausmachen. Kann ich auch nachvollziehen, wieso man kein Javascript will, denn der exzessive Gebrauch davon verbrennt massiv viel CPU-Leistung. Viel zu viele Webentwickler übertreiben es leider damit.

Trotz Allem möchte man natürlich nicht auf dynamischen Webcontent verzichten. Und dafür muss man nunmal Javascript nutzen. Das Problem mit Javascript ist, dass es die schlechteste Programmiersprache ist, die ernsthaft von Leuten verwendet wird. Davon wegzukommen halte ich für ein absolut erstrebenswertes Ziel. Dass man die Wahl hat, für Webentwicklung eine gut durchdachte Programmiersprache zu wählen, kann also nicht schlecht sein.

Sidenote: Ich habe schon zwei Computer wegschmeißen müssen (sprich: bei ebay verkauft), weil diese zu langsam zum Surfen waren. Für alles andere hätten diese noch locker gereicht. Einer dieser Computer war eine HP Z600 Workstation, und diese hatte mit ihren zwei Quadcore-Xeons sogar mehr Rechenleistung als ich jetzt habe. Es gab allerdings noch andere Gründe für einen Wechsel der Hardware.

Autor: Olaf | 0 Kommentare | Tags: wasm, javascript
Zurück Weiter