Saturday, September 24. 2005
As the observing readers of my weblog already I know, I'm working on an HTTP stack as part of a high-performance Ruby servlet container that I want to implement. This weekend, I finished the work on the HTTP stack, and the tests so far look good, so everything seems quite stable. That means: refactoring. Currently, there's only one piece of code that doesn't look to good in my eyes, as it is to "un-C++-ish", but as I'm not a regular user of the C++ language and especially its standard library, and have no good ideas how.
That piece of code is an URL decoder, and looks like the following:
static inline int h2c(char hi, char lo) { std::string s; int value = util::PARSE_FAILED; s += hi; s += lo; std::istringstream is(s); is >> std::hex >> value; return value; } std::string util::url_decode(const std::string& s) { std::string result; std::istringstream iss(s); char c; for (iss >> c;!iss.eof();iss >> c) { if ('+' == c) { result += ' '; } else if ('%' == c) { char c1 = 0, c2 = 0; iss >> c1; iss >> c2; if (!iss.eof()) { int r = h2c(c1,c2); if (r != PARSE_FAILED) { result += static_cast<char>(r); } } } else { result += c; } } return result; }
Any recommendations?
Tuesday, September 20. 2005
Wen kann man haftbar machen, wenn ohne Warnung der Strom im Haus abgeschaltet wird, und dadurch aus irgendeinem Grund die Grafikkarte eines Rechners stirbt? Zuletzt passiert bei mir, heute, ca. 8:00. Und ich bin sauer.
Sunday, September 18. 2005
As I mentioned yesterday, I'm working on wrapper around Unix sockets. Well, just in case somebody else also wants to use the __gnu_cxx::stdio_filebuf GNU extension for marrying file descriptors or C FILE*s with C++ iostreams, one word of warning: don't try to create one iostream for both directions. Instead, create everything separated, from the FILE* to the stdio_filebuf to the istream and ostream, otherwise one of the two channels (in my case the out channel) gets messed up. Here's a little code snippet to demonstrate that:
FILE * ifh = fdopen(fd,"r");
FILE * ofh = fdopen(fd,"w");
__gnu_cxx::stdio_filebuf * ibuf = new __gnu_cxx::stdio_filebuf(ifh,std::ios_base::in,1);
__gnu_cxx::stdio_filebuf * obuf = new __gnu_cxx::stdio_filebuf(ofh,std::ios_base::out,1);
std::istream * conn_istream = new std::istream(ibuf);
std::ostream * conn_ostream = new std::ostream(obuf);
Why the extra wrapping with FILE *, even while stdio_filebuf provides a constructor where file descriptors can be put in? Because I made the experience that buffering doesn't quite work as you expect. You need to provide a buffer size, and it only seems to return data to e.g. getline() when the buffer is completely filled. This leads to weird behaviour that getline(istream,strobj) leads to strobj == "ASDF" when the buffer size was 4 and the input was actually "ASDFQWERT\n". So, that's why I'm putting FILE * in between, as it gives me the behaviour that I expect (see principle of least surprise).
Saturday, September 17. 2005
In this blog, I already wrote about developing a new content management system. Well, after doing some research, I concluded that, in order to get a reasonable performance, I need to develop a high-performance servlet container for Ruby (think of Tomcat for Ruby).
I evaluated a few available ready-to-use HTTP server stacks, but I liked none of them (I was always forced to use threads), so I decided to develop my own one, in C++. Currently, I'm at an early level, all I've got is a nice and easy-to-use wrapper around Unix sockets, providing only the socket functionality that I need. But a nice feature is that it enables me to do the network communication via C++ iostreams. Yes, that's right, no more low-level read()/write()/send()/recv()/whatever.
Monday, September 5. 2005
This is definitely an acceptable speed (within the ISP's network):
21:29:04 (475.55 KB/s) - `linux-2.4.19.tar.gz' saved [32219641]
Sunday, August 28. 2005
In June, I published a few food photos of stuff that I ate at that time.
This time, I will present two pictures of wonderful dishes. The first one is Ramen, some kind of Japanese "noodle soup" (although it's an own kind of dish in Japan cuisine), very spicy, and easy to prepare because there's cheap Instant Ramen available:
The other dish is also Asian, also noodly, but not spicy at all. It's called Udon, also available as instant food. The one I bought was obviously directly from Korea, with the importing company putting own preparation descriptions (in German) on the packages, as the original package only has a Korean and an English version of it on it.
Wednesday, June 29. 2005
No, I don't expect any meaningful answer nor any understanding for my point of view, but it just had to be said.
From: Andreas Krennmair <ak@synflood.at>
To: ron@christianministriesintl.org, jason@christianministriesintl.org
Subject: Regarding your article "Islam: a beautiful and peaceful religion?"
Hello,
I came across your article "Islam: a beautiful and peaceful religion?" and would like to comments a few things you mentioned in there.
First of all, your article seems to imply to Christianity is a religion that leads to freedom, justice and prosperity. This is definitely not true. Freedom, justice and prosperity started to develop in the western world during the Age of Enlightenment. This was the time when first signs of religious freedom together with the idea of separation of church and state came up.
But comes up when state and church more or less build on each other can be seen in the terror and arbitrariness in the middle ages, when Christiany was at its peak (at that time), and acts like witch burning and the four inquisitions were established. At his time, not a single "society characterized by freedom, justice and prosperity" could be produced, at least not in the Western world.
The Islamic world just hasn't got into their Age of Enlightenment yet. Nor did the Christian world when it was as old as the Islamic world is now.
I would also to comment on the "hatred of Jews and Christians" you claim the Islam to spread. Well, you're taking the view of a few extremists whose interpretation of Koran is worthy of discussion (as with many religious writings, Koran contradicts itself several times in several places) and lump together all Muslims.
Please make yourself familiar with the situation before and after the "Reconquista": before the reconquista, most parts of Spain were part of an Islamic Emirate/Califate, and Jews, Christians and Muslims lived together with basically no religious clashes. Then, when Spain was reconquered, the Jews and Muslims living in the reconquered parts were either dispelled or evangelized by force. So, within a few years, and open, multi-ethnic and tolerating society turned into a brutal, intolerant, anti-semitic and anti-islamic society.
If you say now "yes, but that was only Roman-Catholic church", I would like to point to the anti-semitic writings of Martin Luther, who was a hate monger against the Jewish minorities.
Christianity is not the final solution to all problems in the world, nor is any other religion, nor produced Christianity any freedom-, justice- and prosperity-loving societies. Without the triumphal possession of Rationalism and the Age of Enlightenment, the Western World would still be at about the same level as the Islamic world you like to criticize so much.
Regards,
Andreas Krennmair
Actually, I wanted to sign the whole letter with "Regards, Andreas Krennmair, Rationalist, Agnostic [and thus neutral to all religions], Peace Lover", but the "Peace Lover" would have outed me as a "liberal".
Sunday, June 26. 2005
Kennt noch wer diesen Spruch dieser zum Lesen aufmuntern wollenden Kampagne - "Lesen ist Abenteuer ist Kopf"? Nicht Lesen, sondern Träume sind Abenteuer im Kopf. Ich muss ja wirklich sagen, wenn ich mich an Träume erinnern kann (was nicht allzu oft passiert), dann sind das meistens irgendwie spannende Abenteuer.
Also, es fing damit an, dass ich wieder einen Urlaub in Ägypten machte (warum eigentlich gerade Ägypten?! Da war ich doch schon). Auf jeden Fall wollte ich dort an einer Art Bootsrundfahrt teilnehmen, und schaffte es nur mit Mühe, rechtzeitig mein Boot zu erreichen. Ich musste über eine lange Kette von Booten und Surfbrettern laufen, um mein Boot zu erreichen, und das letzte Surfboard ging sogar unter. Im Boot angelangt erkannte ich ein paar Gesichter wieder, die ich von meinem ersten Ägypten-Urlaub kannte, und dachte mir "ah, die Russen!", und wollte sie fragen, ob sie noch immer in Ägypten wären. Doch ich wurde von jemand anderem davon abgehalten, der mir erklärte, dass wir nicht in Ägypten wären, sondern in Mexiko, und wir würden auch keine Bootsrundfahrt machen, sondern an einem Abenteuer-Paddelurlaub in Mexiko. Ich war deswegen zwar verwundert, dachte mir aber, das müsse schon seine Richtigkeit haben.
Ich half also mit, zu paddeln, teilweise war der Fluss ziemlich schnell. Plötzlich paddelten wir jedoch nicht mehr in einem Fluss, sondern auf einer asphaltieren Strasse, und mir wurde mitgeteilt, wir wären jetzt in Ohio. Dieses Ohio sah allerdings eher aus wie das Mühlviertel. Um vorwärts zu gelangen, verwendeten wir unsere Füsse, d.h. wir hielten sie aus dem Boot, und schoben an. Das Boot hatte übrigens Räder, insofern war das nicht so anstrengend. Plötzlich fuhren wir einen kleinen Berg hinauf, und der Vordermann musste einen Gang umschalten, sodass wir das boot vor uns überholen konnten. Ja, so ging das Anschieben viel leichter, und wir erreichten die Anhöhe. Ich blickte den Hang hinunter, sah eine Tankstelle mit kyrillischer Beschriftung und wunderte mich, warum denn ausgerechnet in Ohio eine russische Tankstelle sei.
Wir fuhren weiter, und kamen dann zu einem Haus, wo wir eintraten. In diesem Haus kam mir irgendwie ein Buch unter, in dem ein Foto steckte, dessen Bild sich jedes Mal änderte, wenn man es kippte. Die Bilder, die erscheinten, waren immer paarweise. Das heisst, man kippte das erste Mal, und es erschien z.B. eine junge Frau. Kippte man es noch einmal, wurde aus dem Gesicht der Frau plötzlich die Fratze eines Monsters. Ich war allerdings in keinster Weise darüber erschüttert, sondern eher amüsiert. Manche Bilder hatten auch kleine Animationen, z.B. spritzte bei so einer Verwandlung von Frau in Monster aus dem Auge des Monsters eine Flüssigkeit (allerdings nur auf dem Bild). Ich zeigte dieses Bild also den anderen Leuten, die mitpaddelten, die allerdings nur mäßig interessiert daran waren.
Und hier endet der Traum. Tja, irgendwie richtig verrückt, aber so sind die meisten meiner "Abenteuer", die ich träumenderweise erlebe.
Saturday, June 25. 2005
I love eating and drinking, and that's why I also like photographing that food. Below you can see some food that I had within the last few weeks that was it worth to take pictures of it.
Tomatoes and mozarella with some olive oil on it:
That's a simple and wonderful thing to eat, easy to prepare, and a joy to eat. Unfortunately the picture doesn't show the fresh white bread that I had with it.
"Eispalatschinken" (pancakes with ice cream filling):
A really nice dessert, also quite easy to do, really good with e.g. caramel cream, just like the picture shows it.
And last, but not least, yerba mate, the hot drink from South America with lots and lots of caffeine inside, with some chocolate cookies:
The bitter taste of unsweetened mate and the sweet taste of chocolate cookies are a big contrast, but interestingly enough, they fit together very well, and complement one another.
Friday, June 24. 2005
Alexander Bernauer schildert seine Erlebnisse auf dem LinuxTag mit Überwachungskameras von HP. Tja, das ist der Überwachungsstaat-Prototyp im Messestand-Format. Überall Kontrolle, und Auskunft wird verweigert. HP ist böse.
Wednesday, June 22. 2005
Su-Shee ist am Nörgeln. Und zwar in einer Art und Weise, die mir aus dem Herz spricht. Mir kommt ja schon seit langem eine große Menge der ganzen herumschwabernden Laberei rund um alles, was sich in den letzten paar Jahren in Sachen Netz getan hat (WeblogSocialInteractiveSmartMobCollaborativeFoobar), noch dazu, weil die Leute, die was drüber schreiben, oft diese absolut unerträgliche Formulierungsweise der Postmoderne verwenden, bei dem man 100 Runden B{ullshit,uzzword}-Bingo spielen kann, und in 5 Minuten fertig ist. Am besten selber durchlesen, und ebenso die Augen aufreissen wie ich gerade eben, und sich darueber freuen, dass jemand aehnlich denkt wie man selber (und das besser und konkreter ausformulieren kann). Ein paar Zitate, die mir besonders gut gefallen:
Gern wird heute argumentiert, alles würde zunehmend an Komplexität gewinnen, aber das kann doch kein Argument dafür sein, sich gedanklich nicht aus den üblichen Bahnen zu bewegen und nicht mehr ganz genau hinzugucken. Irritierend ist das besonders dann, wenn ich Texte lese, wo offenkundig ist, dass Wissenschaftler X seine bisherigen Ideen/Theorien begeistert über ein neues, auftauchendes Phänomen stülpt und ein paar schicke Begrifflichkeiten dafür entwirft, damit es geil klingt.
Es ist nicht Gewissheit oder Stillstand, was ich suche, sondern Tiefsinn, Genauigkeit, wenigstens der Versuch, die moderne Welt zu durchschauen. Was ich stattdessen in vielen Szenarien vorfinde, ist die hohe Kunst des Bullshittens, des Dabei-Sein-ist-Alles, mit dem man bequem Einheiten auf das Konto für Reputationsökonomie zahlen kann.
Schlimm ist, dass dies wunderbar in allen Lebensbereichen funktioniert - etwas security-mässig rumlabern, schon ist man ein toller Hacker. Ein paar laue Worte über Google, Überwachung, Wissensgesellschaft - das reicht doch, um als Experte für die Post-Post-Moderne zu gelten! Wer dann noch sowas umwerfendes wie ?Smart Mobs? erfindet, ist Gott. Mindestens.
(via Andreas Bogk)
Tuesday, June 21. 2005
Also, ich kann das wirklich nicht verstehen. Zuerst fängt Theo de Raadt an, Linux zu attackieren, wobei er selber zugibt, Linux nie installiert zu haben. Und jetzt auch noch Joerg Schilling, der zwar offiziell schreibt, mit der OpenSolaris-Live-CD SchilliX eine "technisch überlegene" Alternative zu Linux präsentieren zu wollen, jedoch dann praktisch alles und jeden, der auf Fehler, Probleme und Unstimmigkeiten hinweist, entweder mit Aussagen a la "das geht ganz leicht, mit $MAGIC_COMMAND" abspeist, oder gleich mit Linux-Troll-Vorwuerfen daherkommt, anstatt sich einer sachlichen Diskussion zu stellen. Von Theo de Raadt kam ja die Aussage, die Arbeit an Linux werde durch den Hass gegen Microsoft bestimmt (was uebrigens eine Unterstellung ist, und definitiv nicht zutrifft), und interessanterweise findet sich ein gewisser Hass gegen Linux in so ziemlich allen Aussagen von Joerg Schilling.
Auf jeden Fall herrscht derzeit in diesem Umfeld eine derart negative Grundstimmung, die es mir schwer fallen, noch irgendein BSD-Projekt sowie OpenSolaris auch nur irgendwie ernst zu nehmen. Gerade Linux hat es erst soweit gebracht wie es jetzt steht, weil an der Spitze des Linux-Kernels eine eher ruhige und ausgeglichene Person stand, die sich bis jetzt nur zu einem einzigen Flame in ähnlicher Weise hinreißen ließ, nämlich das Bashing gegen Minix - welches er dann auch prompt zurücknahm, und sich entschuldigte. Hätte Torvalds so um sich geschlagen wie es Theo de Raadt und Joerg Schilling (sowie deren Jünger) derzeit machen, Linux hätte nie einen derartigen Verbreitungsgrad erlangt.
Update: hier hab ich eine ebenfalls interessante Betrachtung des "Problemfalls" Joerg Schilling gefunden.
Friday, June 17. 2005
Today, I had to install a new server. And to try out something new, I decided to use GRML, a Knoppix-based Linux Live CD. Well, actually it's more than just a live CD. GRML is actually a really nice system to get new Debian systems up and running quickly. Just create a partition (or probably a second one, for swap), mkswap the swap partition if you want one, and then run grml2hd. And just ten minutes later (yes, ten [10] minutes, that's not a typo), you have a really nice base installation which comes with more than just the bare base of Debian. In my case, it was just perfect. The only trap I was falling into during configuration of the required services was /etc/hosts.{allow,deny}, both of them were preconfigured in an extreme-paranoia mode.
And not to forget: without GRML I would have suffered a productivity loss. Other distributions just can't fulfill the high demands of me and my customers. Using GRML takes up less time than any other comparable system, leaving me more time to spend on important, time-critical tasks.
Although the previous paragraph is full of the usual user-testimonal bullshit phrases, it is actually true.
Wednesday, June 15. 2005
Willkommen bei Vodafone in Deutschland. Wie zu Hause erreichen Sie Ihre Mailbox über die 30699 Ihre Kundenbetreuung über die 70699. Schönen Aufenthalt!
Achja: jetzt bin ich bei T-Mobile Deutschland eingeloggt. Toll. Mal "manual network selection" auswählen... gna "no network found", nach Auswahl meines Providers. Das ist wirklich zum verrückt werden.
|