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.
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.
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.
Ein kleines Update für dav, welches 3 Probleme behebt.
HTTP-Redirects wurden nur unzureichend unterstützt, denn sie funktionierten nur mit einfachen GET-Requests richtig. Jetzt werden bei allen Methoden Redirects richtig behandelt.
Des Weiteren wurde die Kompatiblität mit älteren libcurl-Versionen verbessert. Statt libcurl 7.32 reicht jetzt auch die Version 7.18. Somit lässt sich dav problemlos auch auf älteren Distributionen kompilieren.
Aus Kompatiblitätsgründen werden von dav-sync jetzt Dateien nicht mehr mit Chunked Transfer-Encoding geuploadet, sondern die PUT-Requests enthalten einen Content-Lengh Header. Mit schlecht konfigurierten oder verbuggten Webservern im Zusammenspiel mit php gab es da bisher ein paar Probleme.
dav Projektseite
SourceForge Projektseite
Versucht man eine VirtualBox-VM auf einem Solaris 11.4 Host zu starten, verursacht dies eventuell einen Panic. Wenn dies geschieht, dann ist die Ursache laut Release-Notes die Supervisor Mode Access Prevention. Diese kann man aber deaktivieren, und dann funktioniert VirtualBox auch.
$ sxadm disable smap
$ reboot
Kommentare
dev | Artikel: Datei ver- und entschlüsseln mit openssl - kompatibel mit dav
Andreas | Artikel: Datenanalyse in der Shell Teil 1: Basis-Tools
Einfach und cool!
Danke Andreas
Rudi | Artikel: Raspberry Pi1 vs Raspberry Pi4 vs Fujitsu s920 vs Sun Ultra 45
Peter | Artikel: XNEdit - Mein NEdit-Fork mit Unicode-Support
Damit wird Nedit durch XNedit ersetzt.
Danke!
Olaf | Artikel: XNEdit - Mein NEdit-Fork mit Unicode-Support
Anti-Aliasing hängt von der Schriftart ab. Mit einem bitmap font sollte die Schrift klassisch wie in nedit aussehen.
Einfach unter Preferences -> Default Settings -> Text Fonts nach einer passenden Schriftart suchen.
Peter | Artikel: XNEdit - Mein NEdit-Fork mit Unicode-Support
Mettigel | Artikel: Raspberry Pi1 vs Raspberry Pi4 vs Fujitsu s920 vs Sun Ultra 45
Ich hatte gedacht, dass der GX-415 im s920 deutlich mehr Dampf hat als der Raspi4.
Mein Thinclient verbraucht mit 16 GB RAM ~11 W idle, das ist das Dreifache vom RP4. Das muss man dem kleinen echt lassen... Sparsam ist er.
Olaf | Artikel: Raspberry Pi1 vs Raspberry Pi4 vs Fujitsu s920 vs Sun Ultra 45
Ergebnisse von der Ultra 80 wären natürlich interessant, insbesondere im Vergleich mit dem rpi1.