Pberndt V4

Direkt zum Inhalt springen


News & Blog

Willkommen auf pberndt.com, der privaten Homepage von Phillip Berndt. Diese Webseite dient der Information über mich, meine Arbeit und als Downloadportal für meine Projekte.

Unter anderem finden sich hier Anyfreewhere, eine simple VNC Applikation, sowie die phpBB Highlighting Mod, die fast alle Sprachen schnell und einfach hervorhebt.

Postscript und PDF für pqiv (20.09.2014)

pqiv 1.0 und 2.0-rc1 In letzter Zeit habe ich pqiv mal wieder etwas mehr Zeit gewidmet. In meinem wissenschaftlichen Alltag speichere ich Plots in aller Regel direkt als Postscript oder PDF Datei, damit ich für die Einbindung in ein Paper direkt ideale Qualität habe, ohne doppelte Arbeit zu haben. Nachteil dieser Praxis ist, dass es aufwendig ist, schnell durch Serien von Plots zu schauen, die z.B. während langer Simulationen regelmäßig zwecks Übersicht weggespeichert werden. Da ich in pqiv 2.x ohnehin Cairo zum Zeichnen verwende, ist die Einbindung von Poppler extrem simpel: Das rendert in einer Zeile eine PDF auf eine Cairo Oberfläche. Von daher bot es sich an, das mal nachzurüsten.

Aufwendiger war es, das schön zu machen. Ich hatte bislang gdk-pixbuf fest mit pqiv verdrahtet, weil ich beim Designen nicht davon ausgegangen war, dass ich einmal mehr Backends als nur das verwenden will. Diese Verknüpfung ist nun aufgehoben, sodass das Nachrüsten von Backends extrem einfach geworden ist. (Der gesamte Poppler Code ist z.B. derzeit nur 179 Zeilen inklusive Kommentaren lang.)

Ich habe mich für's erste an meinen Bedürfnissen orientiert und neben Poppler nur durch libspectre Postscript-Support eingebaut. Für Spezialanwendungen dürfte aber selbst so etwas wie ein gnuplot Backend machbar sein, falls jemand daran interessiert ist ;) Nebenbei kamen durch die Umbauten noch besserer BSD-Support, diverse Bugfixes und allgemein bessere Stabilität als Gimmick hinzu, denn beim ausgiebigen, inzwischen automatisierten, Testen habe ich einige Probleme gefunden & behoben.

Wer an den Änderungen interessiert ist, findet hinter dem Merge-Commit noch die Versionsgeschichte der Umbauten.

Neues zu pqiv (05.11.2013)

pqiv 1.0 und 2.0-rc1 pqiv 2.0 ist vor inzwischen wieder einer ganzen Weile erschienen und steht bereits in den Testversionen von Debian und Gentoo zur Verfügung. Während im Vergleich zur hier angekündigten rc-Version nicht mehr viel passiert ist, wird die kommende Version 2.1 einige große Änderungen bringen:

Sie fügt per inotify automatisch neue Dateien zur Dateiliste hinzu, gibt endgültig den Namen qiv auf, bringt Überblendungen zwischen Bildern zurück - schicker als je zuvor, denn diesmal funktioniert der Effekt für beliebige Bilder, kommt besser mit dem Nachladen großer Bilder zurecht, schont die CPU beim Neuzeichnen von Bildern, indem mehr gecached wird, bringt einen neuen „low memory“ Modus, der alle Zwischenspeicher so weit wie möglich abschaltet, und ermöglicht das Laden der Bilder im einem „lazy mode“, bei dem das Fenster bereits angezeigt wird, bevor alle Bilder geladen worden sind. Auf letzteres Feature bin ich ein wenig stolz, denn richtig sortiert werden die nachgeladenen Bilder trotzdem. Das erreiche ich, indem ich statt der Dateiliste einen order-statistic AVL Baum verwende. Das ist ein Suchbaum, in dem zusätzlich, ebenfalls in O(log n), per Index auf Elemente zugegriffen werden kann. Da ich so etwas nicht in fertig für C gefunden habe, habe ich mir einen selbst geschrieben: Das Projekt habe ich bostree (binary order statistic tree) genannt.

In other, unrelated news: Ich habe die Homepage auf einen Server umgezogen, über den ich etwas mehr Kontrolle habe. Meinen alten Hoster musste ich dafür leider ganz verlassen, weil man mir keine Hoheit über die DNS-Einträge geben wollte. Nun liegt die Domain bei Host Europe. Dadurch gibt es hier endlich den ganzen Technik-Schnickschnack, der schon lange überfällig war: IPv6, SSL und für Email DKIM und SPF. Und bei Gelegenheit habe ich die Seite mal auf UTF-8 umgestellt.

pqiv 1.0 und 2.0-rc1 (13.06.2013)

pqiv 1.0 und 2.0-rc1 Für meinen Bildbetrachter pqiv gibt es ein großes Update. Zunächst ein kleines: Version 0.13 springt auf 1.0, denn das Release mit einem kleinen neuen Feature (anpassbare Fenstertitel) wird das letzte in dieser Reihe sein. pqiv 2.0 wird demnächst als komplettes Rewrite mit GTK 3 erscheinen.

Zunächst einmal hatte ich ja mal eine Portierung angekündigt. Während der Arbeit daran habe ich aber gemerkt, dass ich einige Konzepte von GTK erst jetzt richtig verstehe und dass sich einige auch mit der neuen Version geändert haben. Das ganze neu zu schreiben erschien mir da angebracht.

Die neue Version läuft mit GTK 3 und Cairo, ist aber rückwärtskompatibel mit den neueren Versionen von GTK 2. Einige aus heutiger Sicht unnütze Features werden verschwinden, dafür kommt auch ein neues, das mir schon länger gefehlt hat: pqiv lädt das kommende Bild schon vorab in den Speicher, sodass bei Albenpräsentationen nach Betätigung der Leertaste auch wirklich sofort das nächste Bild zu sehen ist. Außerdem ist die neue Version dank saubererer Verwendung der Schnittstelle zum Display Server und intensivem Testen mit verschiedenen Fenster Managern (mutter, muffin, xfwm, i3 und etwas am Rande auch mingw32) deutlich kompatibler und hat weniger Macken.

Ich freue mich, wenn jemand das schon testen will & Feedback gibt! Den Code gibt es im Rewrite Branch auf Github. Kompilieren geht einfach per make, ./configure ist noch optional.

UPnP relay daemon (01.04.2013)

UPnP Logo Meine Eltern haben einen Philips Fernseher, der über einen OpenWRT-WLAN-Router in das eigentliche LAN eingebunden ist. Ich hatte mir - eigentlich schon über Weihnachten - vorgenommen, herauszufinden, warum der Computer den Fernseher nicht via UPnP als Ausgabegerät findet. Am Netzwerk lag es nicht, Multicast-Routing hatte ich eingerichtet und in die andere Richtung hat auch alles funktioniert.

Jetzt an Ostern war ich wieder einmal zu Hause und hatte Gelegenheit, noch einmal herumzuexperimentieren: Anscheinend hat der Fernseher einen Bug. In der UPnP-Spezifikation tauschen Geräte über UDP/Port 1900 per Multicast HTTP-Nachrichten aus, um einander zu finden. Über eine weitere URL, die dann per TCP aufgerufen wird, lädt sich jedes interessierte Gerät dann nähere Informationen herunter. Es gibt nun zwei verschiede Mechanismen: Zum einen senden alle Geräte ab und zu ein "NOTIFY"-Request, in dem sie ihre Präsenz ankündigen. Der andere Mechanismus ist eine aktive Suche, bei der ein Gerät ein "M-SEARCH" an dieselbe Adresse schickt und alle Geräte eine HTTP-Antwort speziell an den Fragenden zurücksenden.

Letzterer Mechanismus funktioniert auf dem Fernseher offenbar nicht. Und auch bei dem Notify gibt es Probleme, denn im laufenden Betrieb sendet er bisweilen eine Nachricht ins Netz, in der er sich aus dem Verbund abmeldet. Und danach ist dann Funkstille.

Ich habe einen kleinen Dämon geschrieben, den man auf seinem Router laufen lassen kann, der das Problem angeht. Er cached die NOTIFY-Nachrichten und antwortet auf M-SEARCH Anfragen mit Antworten aus diesem Cache. Dabei halte ich mich nicht gänzlich an die Spezifikation und erzeuge einigen unnötigen Traffic, aber dafür finden alle Geräte jetzt den Fernseher und ich kann endlich von meinem Handy aus Videos vom PC auf dem Fernseher starten. Schick.

Außerdem kann man den Dämon auf einen Router zwischen zwei gerouteten Netzwerken setzen und kann sich auf die Weise Multicast-Routing komplett sparen. Auch nützlich.

Wer will: Auf Github gibt es ein Repository.

Neuerungen rund um pqiv 0.12 (18.05.2012)

pqiv 0.12 Rund um pqiv gibt es nach längerer Zeit mal wieder Neuigkeiten. In glib 2.3 ist das direkte Einbinden von anderen Include-Dateien als glib.h nun endgültig verboten, was zu diversen Änderungen bei den Distributionen führte. Ich habe den notwendigen Patch nun in den Code eingepflegt und bei der Gelegenheit einige Bugs gefunden, die in Distributionen gefixt wurden, aber nicht ihren Weg zurück zu mir gefunden haben: Das Keypad funktioniert nun richtig und auch mit Xinerama kommt der Code nun klar, wenn es um die Positionierung im Vollbildmodus geht.

Ich habe mein Repository nun auf Github hochgeladen, damit meine Änderungen zeitnaher verfügbar sind und um eine Seite zu haben, die zum Wohlwollen der Maintainer-Scripte garantiert längere Zeit ihr Layout behält. (Wenngleich diese Version der Webseite auch schon lange durchgehalten hat..) Die Downloads laufen nun auch über die Download-Funktion von Github.

Last but not least habe ich mit einer Portierung nach GTK-3.0 angefangen. Die funktioniert schon ziemlich gut und in mancher Hinsicht auch besser, als es die GTK-2.0 Version je getan hat. Vermutlich wird der Code abwärtskompatibel bleiben, bislang sieht es zumindest sehr danach aus. Es scheitert aber noch an einem Verhalten, das ich für einen GTK bug halte: Die gelbe Infobox macht das Fenster zu breit, falls sie breiter ist als das Bild. Innerhalb eines GtkFixed sollte gerade das meiner Auffassung nicht passieren. Wenn das geht gibt es dann jedenfalls vermutlich endlich eine Version für das neue GTK.

Newsarchiv

  1. Wegwerf SMTP server
  2. Partitionen verschieben
  3. iwebd - Ad-Hoc Server Dienste
  4. gCryptMount Update
  5. Bejeweled KI
  6. Huawei-Modem von O2 und Linux
  7. pdfshrink
  8. Faxen mit der Fritzbox
  9. pqiv 0.10 mit großen Änderungen
  10. iftpd ist hier
  11. consolectrl
  12. Einfach mal mitschneiden
  13. Wichtiges Update for gCryptMount
  14. PyS60 kommt mit Python 2.5
  15. Rapidshare download (3)
  16. 100.000 Besucher
  17. Rapidshare download (2)
  18. Update für die Netzwerkkonfiguration
  19. Unpack > unp
  20. 24c3, mimetex
  21. Frohe Weihnachten
  22. Rapidshare download
  23. Ich bin wieder Berliner
  24. Pseudotransparenter Hintergrund in GTK
  25. Prototype
  26. Speedport, E61, Widgets
  27. Juchuh ich habe wieder Internet
  28. pqiv wird C
  29. Abitur
  30. Immer noch kein Internet
  31. Updates und Abwesenheit
  32. Rapidshare macht Updates
  33. Fertig
  34. pqiv und Yeha
  35. Verzeichnisse auflisten, einfache Downloads und ein Wordpressbug
  36. Frohe Ostern!
  37. Im Namen von Kane
  38. Die Schule ist aus
  39. Netzwerkkonfiguration
  40. brightd für Thinkpads
  41. Updates im Linuxbereich
  42. Update für den Kernel updater
  43. Mehr Vielfalt
  44. Hallo, ich bin jEph
  45. Startrek und Zeitreisen
  46. Die letzten Wochen
  47. Einmal Urlaub und zurück
  48. Dead man's chest und andere Updates
  49. Ein Wort zu Templates in PHP
  50. Moto4Lin und mein C450
  51. Wir sind Dritter
  52. Über zwei praktische Tools und meine Lieblingsserie
  53. Update für das phpBB Topicliste-Sortier-Script
  54. How to ask questions
  55. Ohrwurm
  56. American Dreamz
  57. Stadtfest
  58. Half-Life²: Episode 1
  59. Version 4!