Nachdem Martok nach Erhalt des Tumbleweed-Awards bereits drohte, auf dessen goldene Ausführung zuzusteuern, und ich für eines meiner Projekte eh noch mal etwas Unterstützung brauchte, habe ich mich mal des Cases angenommen, um zu schauen, wie man Code von FreePascal statisch in sein C-Programm eingebunden bekommt. War auch – ehrlichgesagt – nicht ganz uneigennützig, da die betroffene Bibliothek durchaus für eigene Projekte bereits ins Auge gefasst wurde, nur wegen „falsche Programmiersprache“ bisher noch nicht näher betrachtet wurde. (more…)
02.04.2014
13.03.2014
BIND9 mit Stoßdämpfer
Nachdem ich ja längere Zeit eher Probleme hatte mit Bind9, weil er sich nicht wie gewünscht mit DNS Dampening betreiben ließ, sondern nur mit DNS Response Rate Limiting, was eher schlecht als recht funktioniert, gibt es inzwischen einen Lichtblick. Mit der Unterstützung von Wonka ist es gelungen, den Patch von Lutz Donnerhacke auf aktuelle Bind9-Versionen zu portieren. Bereits nach kurzer Zeit gab es positives Feedback von Upstream, weshalb an dieser Stelle auf das Repository mit den gepatchten Debian-Quellen verwiesen sein soll, aus denen sich leicht eigene Packete mit DNS Dampening erzeugen lassen. (more…)
10.11.2013
SSL und das Caching
Manche Leute könnten es vielleicht mitbekommen haben, aber falls nicht, dann hier die kurze Info: In letzter Zeit war das Blog in Bezug auf SSL leicht kaputt, weil das Caching gesponnen hat. Das dürfte sich jetzt aber erledigt haben. (more…)
12.03.2013
Automatische Vollständigkeit
Wer kennt es nicht: Man schreibt gerade so schön in der Konsole einen kilometerlangen Bash-Einzeiler und hat gerade keine Lust die Halbzeilenlange Option seines Lieblingsbefehls – für die es, trotz dem das halbe Alphabet bei den Kurzoptionen noch frei ist, keine Abkürzung gibt – auszuschreiben, als man sich nun schon zum hundertsten (oder tausendsten) Male darüber ärgert, dass die Auto-Vervollständigung der Shell mal wieder nicht funktioniert. Man wollte schon immer einmal eine Vereinfachung haben, die einem genau hier hilft und den lästigen Tippaufwand stark verringert. Mit etwas Bash-Skripting kann hier nachgeholfen werden. (more…)
06.03.2013
Zero is too large!
Welcome to our new series of strange bugs. Today we’ve got a brand new candidate called emptyness which is a really great star on the floor of PHP bugs. I was being stumbled upon this one by Thomas Puls who mailed me about the fact, that if you highlight a single 0 with GeSHi, it magically disappears. (more…)
27.08.2012
News in and around GeSHi 1.0.8.11
Being way overdue, and not only because some other projects askednagged for a release, I’m really pleased I finally had everything together last week so I could do the release of GeSHi 1.0.8.11. Besides the 18 new language files there are also two important bugfixes addressing problems in contrib scripts. (more…)
06.08.2012
Last steps towards GeSHi 1.0.8.11
Hi guys,
I know it’s been quite a bit since the last release of GeSHi and even though there’s been some confusion about what the most recent version actually was, I’ll probably lighten up the confusion a bit and present some good news to all of you who are waiting for some of the most recently included language files. But first things first. (more…)
23.06.2012
RRDTool für PHP 5.4
Nach dem letztens endlich das Packaging für die von mir etwas für aktuellere PHP-Versionen gepflegte RRDTool-Extension abgeschlossen war, dachte ich eigentlich, dass das soweit auch für PHP 5.4 funktionieren sollte. Da ich wegen dem ausstehenden Support für den Suhosin-Patch aber noch nicht upgraden wollte, gab es natürlich wenig Chancen, das selber zu überprüfen.
Vor knapp 4 Wochen habe ich mich dann aber doch hingesetzt, um meinen Server auf PHP 5.4 zu aktualisieren. Nachdem das Update selbst recht unproblematisch verlief und bis auf wenige Extensions, die einen expliziten Arschtritt zum Compilen haben wollten, alles lief, war die RRDTool-Extension dran. Und (Grüße an Murphy) es wollte nicht compilieren. Aber glücklicherweise waren das nur ein paar Kleinigkeiten, die sich im Wesentlichen darauf beschränkten, den Typ pval durch zval beim Abfragen von Parametern auszutauschen.
Sobald das durch war, funktionierte das auch mit dem Compilieren und alle Scripte mit der Extension liefen wieder wie immer.
Die neu, nun mit Support für PHP 5.4, gepackagedte Version gibt es ab sofort; nach dem ich nach einer stressigen Zeit dazu gekommen bin, das alles zusammenzupacken. Außer der oben genannten Änderung ist nix an Features hinzugekommen. Wird also PHP 5.4 nicht benötigt, reicht auch die alte Version. Die neue RRDTool-Extension für PHP 5.4 (Version 0.2) gibt unter dem genannten Link.
29.01.2012
Zu faul zum Suchen
Hätte ich nicht schon wieder zwei Abende damit zugebracht, die Ursache für einen Fehler bei einem Joomla-Update zu suchen, würde ich es ja unter der Kategorie „Running Gag“ verbuchen, dass die Joomla-Entwickler jedes Mal auf’s Neue sich in der Kreativität ihrer Bugs übertreffen. War es beim einem Komponenten-Update noch das Unvermögen konsistente Datenstände zu halten, so ist es in Sachen Software-Update die Abwärtskompatibilität zu seinen eigenen, früheren Versionen. (more…)
24.08.2011
Schleifchen erwartet
Unter der Kategorie Kuriositäten kann man glaube folgenden GCC-Bug abhandeln, der bei mir mit folgendem Source auftrat:
// Run the job we've taken
if(cleanup_func) {
pthread_cleanup_push(cleanup_func, cleanup_arg);
}
job_func(job_arg);
if(cleanup_func) {
pthread_cleanup_pop(1);
}
Wobei job_func ein normaler Callback-Typ der Form
typedef void (* dispatch_func_t)(void *);
ist, also einen Pointer entgegen nimmt und nix zurückliefert. Nunja. Versucht man obigen Source (im Zusammenhang mit etwas mehr Source eines Thread-Pools zu compilieren, erhält man recht überraschend eine Fehlermeldung vom GCC (4.6.1-4):
gcc -g -Wall -Werror -std=c99 -I./src -O9 -o ./obj/threadpool.o -c ./src/threadpool.c ./src/threadpool.c: In Funktion »_threadpool_dowork«: ./src/threadpool.c:120:9: Fehler: expected »while« before »job_func«
Und ja: Der will da wirklich ne While-Schleife haben! Geben wir sie ihm also:
// Run the job we've taken
if(cleanup_func) {
pthread_cleanup_push(cleanup_func, cleanup_arg);
}
//GCC fails if I DON'T write a while loop here. Let's make it happy!
while(0);
job_func(job_arg);
if(cleanup_func) {
pthread_cleanup_pop(1);
}
Und der GCC ist zufrieden.