<?xml version="1.0" encoding="iso-8859-1"?>

<rss version="2.0"
 xmlns:blogChannel="http://backend.userland.com/blogChannelModule"
 xmlns:atom="http://www.w3.org/2005/Atom"
>

<channel>
<title>idlebox.net - Timo&#x27;s Weblog</title>
<link>http://idlebox.net</link>
<description>idlebox.net - RSS 2.0 Feed</description>
<language>de</language>
<copyright>Copyright 2007, idlebox.net</copyright>
<pubDate>Thu, 23 Oct 2008 11:25:00 +0200</pubDate>
<lastBuildDate>Thu, 23 Oct 2008 11:25:00 +0200</lastBuildDate>
<webMaster>tbrss@idlebox.net (Timo Bingmann)</webMaster>
<atom:link href="http://idlebox.net/xmlfeed/weblog-rss20.xml" rel="self" title="idlebox.net Weblog Feed RSS 2.0" type="application/rss+xml"/>

<item>
<title>Published Flex Bison C++ Example 0.1.3</title>
<link>http://idlebox.net/2008/1023-Flex-Bison-C++-Example-0.1.3.blog</link>
<description>&#x3C;span style=&#x22;float: right; clear: right; margin: 0em 0em 1.5em 1.5em; font-size: 10pt; text-align: center&#x22;&#x3E;&#x3C;a href=&#x22;http://idlebox.net/2007/flex-bison-cpp-example/&#x22;&#x3E;&#x3C;img src=&#x22;http://idlebox.net/2007/flex-bison-cpp-example/drawing.jpg&#x22; width=&#x22;200&#x22; height=&#x22;200&#x22; alt=&#x22;Funny Drawing with &#x27;C++&#x27; &#x27;FLEX&#x27; and a Bison&#x22; /&#x3E;&#x3C;/a&#x3E;&#x3C;/span&#x3E;&#x3C;p&#x3E;Released yet another updated source code package for &#x3C;a href=&#x22;http://idlebox.net/2007/flex-bison-cpp-example/&#x22;&#x3E;Flex Bison C++ Example&#x3C;/a&#x3E;. The example source code is released into the public domain or, at your option, under the &#x3C;a class=&#x22;exp&#x22; href=&#x22;http://sam.zoy.org/wtfpl/&#x22;&#x3E;Do What The Fuck You Want To Public License (WTFPL)&#x3C;/a&#x3E;.&#x3C;/p&#x3E;

&#x3C;p&#x3E;This bugfix release &#x3C;b&#x3E;solves a subtle, severe bug&#x3C;/b&#x3E;, which rendered the template code useless. Even the example &#x3C;code&#x3E;exprtext&#x3C;/code&#x3E; program segfaulted with any expression.&#x3C;/p&#x3E;

&#x3C;p&#x3E;Corrected a very subtle bug with the newly introduced virtual &#x3C;code&#x3E;yywrap()&#x3C;/code&#x3E; function in the &#x3C;a href=&#x22;http://idlebox.net/2007/flex-bison-cpp-example/flex-bison-cpp-example-0.1.3/doxygen-html/classFlexLexer.html&#x22;&#x3E;FlexLexer&#x3C;/a&#x3E; class. Depending on how the header was included, the class contained the virtual &#x3C;code&#x3E;yywrap()&#x3C;/code&#x3E; function or not. These differing class declarations lead to very strange NULL pointer exceptions, because the different compiled objects assume different class memory layouts. Ultimately the exprtest program always segfaulted.&#x3C;/p&#x3E;

&#x3C;p&#x3E;For more information and the download package see the &#x3C;a href=&#x22;http://idlebox.net/2007/flex-bison-cpp-example/&#x22;&#x3E;Flex Bison C++ Example&#x3C;/a&#x3E; web page.&#x3C;/p&#x3E;</description>
<guid isPermaLink="true">http://idlebox.net/2008/1023-Flex-Bison-C++-Example-0.1.3.blog</guid>
<pubDate>Thu, 23 Oct 2008 11:25:00 +0200</pubDate>
</item>
<item>
<title>Update Release of STX B+ Tree 0.8.3</title>
<link>http://idlebox.net/2008/0907-STX-B+Tree-0.8.3-Update.blog</link>
<description>&#x3C;span style=&#x22;float: right; clear: right; margin: 0em 0em 1.5em 1.5em; font-size: 10pt; text-align: center&#x22;&#x3E;&#x3C;a href=&#x22;http://idlebox.net/2007/stx-btree/&#x22;&#x3E;&#x3C;img src=&#x22;http://idlebox.net/2007/stx-btree/btree-thumb-border.png&#x22; width=&#x22;252&#x22; height=&#x22;193&#x22; alt=&#x22;Small drawing of a B+ tree&#x22; /&#x3E;&#x3C;/a&#x3E;&#x3C;/span&#x3E;&#x3C;p&#x3E;Released another updated version 0.8.3 of the &#x3C;a href=&#x22;http://idlebox.net/2007/stx-btree/&#x22;&#x3E;STX B+ Tree C++ Template Classes&#x3C;/a&#x3E; package. The updated release fixes up issues with the root node == NULL when the tree is initially empty.&#x3C;/p&#x3E;

&#x3C;p&#x3E;Fixed crash when running &#x3C;a href=&#x22;http://idlebox.net/2007/stx-btree/stx-btree-0.8.3/doxygen-html/classstx_1_1btree.html#e382217f25916442745eb83520b20c12&#x22;&#x3E;verify()&#x3C;/a&#x3E; on an empty btree object. Now the root node is freed when the last item is removed. Also fixed crash when attempting to copy an empty btree or when trying to remove a non-existing item from an empty btree.&#x3C;/p&#x3E;

&#x3C;p&#x3E;Also &#x3C;a href=&#x22;http://idlebox.net/2007/stx-btree/stx-btree-0.8.3/doxygen-html/speedtest.html&#x22;&#x3E;enhancing the speedtest&#x3C;/a&#x3E; to test the hash table container implementation from &#x3C;code&#x3E;__gnu_cxx&#x3C;/code&#x3E;. Extending tests by another set of runs measuring only the find/lookup functions. See the speed results web page for more information.&#x3C;/p&#x3E;

&#x3C;p&#x3E;The updated source code package is available &#x3C;a href=&#x22;http://idlebox.net/2007/stx-btree/&#x22;&#x3E;for download from this webpage&#x3C;/a&#x3E;.&#x3C;/p&#x3E;

&#x3C;p&#x3E;Some compiled binaries of &#x3C;a href=&#x22;http://idlebox.net/2007/stx-btree/demo.htt&#x22;&#x3E;wxBTreeDemo&#x3C;/a&#x3E; for Win32 and Linux are available on the &#x3C;a href=&#x22;http://idlebox.net/2007/stx-btree/demo.htt&#x22;&#x3E;demo download page&#x3C;/a&#x3E;.&#x3C;/p&#x3E;

&#x3C;p&#x3E;As before, the updated main B+ tree implementation can be found in doxygen &#x3C;a href=&#x22;http://idlebox.net/2007/stx-btree/stx-btree-0.8.3/doxygen-html/btree_8h-source.html&#x22;&#x3E;stx/btree.h&#x3C;/a&#x3E; or with plain text comments &#x3C;a href=&#x22;http://idlebox.net/2007/stx-btree/stx-btree-0.8.3/include/stx/btree.h.html&#x22;&#x3E;stx/btree.h&#x3C;/a&#x3E;.&#x3C;/p&#x3E;</description>
<guid isPermaLink="true">http://idlebox.net/2008/0907-STX-B+Tree-0.8.3-Update.blog</guid>
<pubDate>Sun, 07 Sep 2008 18:31:00 +0200</pubDate>
</item>
<item>
<title>C++ Code Snippet - Print Stack Backtrace Programmatically with Demangled Function Names</title>
<link>http://idlebox.net/2008/0901-stacktrace-demangled/</link>
<description>&#x3C;p&#x3E;Yesterday I was tasked to analyzed an inner function of a reasonably complex software package. The inner function was called thousands of times from many different parts of the program, a simple counter print-out showed that. However I was interested in which execution paths reach this inner function and how often the different parts access the function.&#x3C;/p&#x3E;

&#x3C;p&#x3E;My straight-forward idea was to dump a stack backtrace each time the inner function is called, similar to the one printed by a debugger. However I needed some code snippet to &#x3C;b&#x3E;dump the stack backtrace programmatically&#x3C;/b&#x3E;, without using &#x3C;code&#x3E;gdb&#x3C;/code&#x3E; to halt the program each time.&#x3C;/p&#x3E;

&#x3C;p&#x3E;Stack backtraces can be saved with &#x3C;a href=&#x22;http://idlebox.net/2008/0901-stacktrace-demangled/backtrace.3.htt&#x22;&#x3E;backtrace(3)&#x3C;/a&#x3E;, resolved into symbolic names using &#x3C;a href=&#x22;http://idlebox.net/2008/0901-stacktrace-demangled/backtrace.3.htt&#x22;&#x3E;backtrace_symbols(3)&#x3C;/a&#x3E; and printed using &#x3C;a href=&#x22;http://idlebox.net/2008/0901-stacktrace-demangled/backtrace.3.htt&#x22;&#x3E;backtrace_symbols_fd(3)&#x3C;/a&#x3E;. These functions are well documented and fairly easy to use.&#x3C;/p&#x3E;

&#x3C;p&#x3E;However I was debugging a C++ program, which made heavy use of templates and classes. C++ symbols names (including namespace, class and parameters) are mangled by the compiler into plain text symbols: e.g. the function &#x3C;code&#x3E;N::A&#x26;lt;int&#x26;gt;::B::func(int)&#x3C;/code&#x3E; becomes the symbol &#x3C;code&#x3E;_ZN1N1AIiE1B4funcEi&#x3C;/code&#x3E;. This makes the standard backtrace output very unreadable for C++ programs.&#x3C;/p&#x3E;

&#x3C;p&#x3E;To demangle these strings the GNU &#x3C;code&#x3E;libstdc++&#x3C;/code&#x3E; library (integrated into the GNU Compiler Collection) provides a function called &#x3C;a href=&#x22;http://idlebox.net/2008/0901-stacktrace-demangled/cxa_demangle.htt&#x22;&#x3E;__cxa_demangle()&#x3C;/a&#x3E;. Combined with &#x3C;a href=&#x22;http://idlebox.net/2008/0901-stacktrace-demangled/backtrace.3.htt&#x22;&#x3E;backtrace(3)&#x3C;/a&#x3E; a pretty stack backtrace can be outputted. The demangling function only works for programs compiled with &#x3C;code&#x3E;g++&#x3C;/code&#x3E;.&#x3C;/p&#x3E;

&#x3C;p&#x3E;The following header file contains a function &#x3C;code&#x3E;print_stacktrace()&#x3C;/code&#x3E;, which uses &#x3C;a href=&#x22;http://idlebox.net/2008/0901-stacktrace-demangled/backtrace.3.htt&#x22;&#x3E;backtrace(3)&#x3C;/a&#x3E;, &#x3C;a href=&#x22;http://idlebox.net/2008/0901-stacktrace-demangled/backtrace.3.htt&#x22;&#x3E;backtrace_symbols(3)&#x3C;/a&#x3E; and &#x3C;a href=&#x22;http://idlebox.net/2008/0901-stacktrace-demangled/cxa_demangle.htt&#x22;&#x3E;__cxa_demangle()&#x3C;/a&#x3E; to print a readable C++ stack backtrace.&#x3C;/p&#x3E;

&#x3C;p style=&#x22;text-align: center&#x22;&#x3E;&#x3C;a href=&#x22;http://idlebox.net/2008/0901-stacktrace-demangled/&#x22;&#x3E;This blog entry continues on the next page ...&#x3C;/a&#x3E;&#x3C;/p&#x3E;</description>
<guid isPermaLink="true">http://idlebox.net/2008/0901-stacktrace-demangled/</guid>
<pubDate>Mon, 01 Sep 2008 22:30:00 +0200</pubDate>
</item>
<item>
<title>Update Release of STX B+ Tree 0.8.2</title>
<link>http://idlebox.net/2008/0813-STX-B+Tree-0.8.2-Update.blog</link>
<description>&#x3C;span style=&#x22;float: right; clear: right; margin: 0em 0em 1.5em 1.5em; font-size: 10pt; text-align: center&#x22;&#x3E;&#x3C;a href=&#x22;http://idlebox.net/2007/stx-btree/&#x22;&#x3E;&#x3C;img src=&#x22;http://idlebox.net/2007/stx-btree/btree-thumb-border.png&#x22; width=&#x22;252&#x22; height=&#x22;193&#x22; alt=&#x22;Small drawing of a B+ tree&#x22; /&#x3E;&#x3C;/a&#x3E;&#x3C;/span&#x3E;&#x3C;p&#x3E;Released an updated version 0.8.2 of the &#x3C;a href=&#x22;http://idlebox.net/2007/stx-btree/&#x22;&#x3E;STX B+ Tree C++ Template Classes&#x3C;/a&#x3E; package. The updated release fixes up all issues with iterators and one harmless bad-memory access.&#x3C;/p&#x3E;

&#x3C;p&#x3E;The &#x3C;a href=&#x22;http://idlebox.net/2007/stx-btree/stx-btree-0.8.2/doxygen-html/classstx_1_1btree_1_1reverse__iterator.html&#x22;&#x3E;reverse_iterator&#x3C;/a&#x3E; classes of the B+ tree were completely reworked. Now they are real implementations and do not use STL magic. Both &#x3C;a href=&#x22;http://idlebox.net/2007/stx-btree/stx-btree-0.8.2/doxygen-html/classstx_1_1btree_1_1reverse__iterator.html&#x22;&#x3E;reverse_iterator&#x3C;/a&#x3E; and &#x3C;a href=&#x22;http://idlebox.net/2007/stx-btree/stx-btree-0.8.2/doxygen-html/classstx_1_1btree_1_1const__reverse__iterator.html&#x22;&#x3E;const_reverse_iterator&#x3C;/a&#x3E; should work as expected now. Added two large test cases for iterators. Enabled public default-constructors on iterators.&#x3C;/p&#x3E;

&#x3C;p&#x3E;Also fixed a memory access bug which happens in &#x3C;a href=&#x22;http://idlebox.net/2007/stx-btree/stx-btree-0.8.2/doxygen-html/classstx_1_1btree.html#40e3e935186128e71b90ad2482fc73a7&#x22;&#x3E;erase_one_descend()&#x3C;/a&#x3E;: &#x3C;code&#x3E;leaf-&#x3E;slotkey[leaf-&#x3E;slotuse - 1]&#x3C;/code&#x3E; if &#x3C;code&#x3E;leaf-slotuse == 0&#x3C;/code&#x3E;. This doesn&#x27;t have any other bad effect, because the case only occurs when &#x3C;code&#x3E;leaf == root&#x3C;/code&#x3E; and then the resulting &#x3C;code&#x3E;btree_update_lastkey&#x3C;/code&#x3E; message is never really processed. However it still is a bad-memory access.&#x3C;/p&#x3E;

&#x3C;p&#x3E;The updated source code package including the wxBTreeDemo source is available &#x3C;a href=&#x22;http://idlebox.net/2007/stx-btree/&#x22;&#x3E;for download from this webpage&#x3C;/a&#x3E;.&#x3C;/p&#x3E;

&#x3C;p&#x3E;Some compiled binaries of &#x3C;a href=&#x22;http://idlebox.net/2007/stx-btree/demo.htt&#x22;&#x3E;wxBTreeDemo&#x3C;/a&#x3E; for Win32 and Linux are available on the &#x3C;a href=&#x22;http://idlebox.net/2007/stx-btree/demo.htt&#x22;&#x3E;demo download page&#x3C;/a&#x3E;.&#x3C;/p&#x3E;

&#x3C;p&#x3E;As before, the updated main B+ tree implementation can be found in doxygen &#x3C;a href=&#x22;http://idlebox.net/2007/stx-btree/stx-btree-0.8.2/doxygen-html/btree_8h-source.html&#x22;&#x3E;stx/btree.h&#x3C;/a&#x3E; or with plain text comments &#x3C;a href=&#x22;http://idlebox.net/2007/stx-btree/stx-btree-0.8.2/include/stx/btree.h.html&#x22;&#x3E;stx/btree.h&#x3C;/a&#x3E;.&#x3C;/p&#x3E;</description>
<guid isPermaLink="true">http://idlebox.net/2008/0813-STX-B+Tree-0.8.2-Update.blog</guid>
<pubDate>Wed, 13 Aug 2008 16:48:00 +0200</pubDate>
</item>
<item>
<title>Published Flex Bison C++ Example 0.1.2</title>
<link>http://idlebox.net/2008/0803-Flex-Bison-C++-Example-0.1.2.blog</link>
<description>&#x3C;span style=&#x22;float: right; clear: right; margin: 0em 0em 1.5em 1.5em; font-size: 10pt; text-align: center&#x22;&#x3E;&#x3C;a href=&#x22;http://idlebox.net/2007/flex-bison-cpp-example/&#x22;&#x3E;&#x3C;img src=&#x22;http://idlebox.net/2007/flex-bison-cpp-example/drawing.jpg&#x22; width=&#x22;200&#x22; height=&#x22;200&#x22; alt=&#x22;Funny Drawing with &#x27;C++&#x27; &#x27;FLEX&#x27; and a Bison&#x22; /&#x3E;&#x3C;/a&#x3E;&#x3C;/span&#x3E;&#x3C;p&#x3E;Released an updated source code package for &#x3C;a href=&#x22;http://idlebox.net/2007/flex-bison-cpp-example/&#x22;&#x3E;Flex Bison C++ Example&#x3C;/a&#x3E;. The example source code is released into the public domain or, at your option, under the &#x3C;a class=&#x22;exp&#x22; href=&#x22;http://sam.zoy.org/wtfpl/&#x22;&#x3E;Do What The Fuck You Want To Public License (WTFPL)&#x3C;/a&#x3E;.&#x3C;/p&#x3E;

&#x3C;p&#x3E;This bugfix release &#x3C;b&#x3E;solves two problems&#x3C;/b&#x3E; there were reported to me via e-mail:&#x3C;/p&#x3E;

&#x3C;p&#x3E;The first problem were &#x3C;b&#x3E;compilation errors that occured when no &#x3C;code&#x3E;%union&#x3C;/code&#x3E; directive is used in the grammar&#x3C;/b&#x3E;: in this case the include headers order is changed around by bison and thereby breaks compilation. This was fixed by never including &#x3C;a href=&#x22;http://idlebox.net/2007/flex-bison-cpp-example/flex-bison-cpp-example-0.1.2/doxygen-html/parser_8h.html&#x22;&#x3E;parser.h&#x3C;/a&#x3E; directly, but always using &#x3C;a href=&#x22;http://idlebox.net/2007/flex-bison-cpp-example/flex-bison-cpp-example-0.1.2/doxygen-html/scanner_8h.html&#x22;&#x3E;scanner.h&#x3C;/a&#x3E;.&#x3C;/p&#x3E;

&#x3C;p&#x3E;And the second issue was raised because new versions of &#x3C;a href=&#x22;http://flex.sourceforge.net&#x22;&#x3E;flex&#x3C;/a&#x3E; were released after years of stagnation. The &#x3C;b&#x3E;new flex version 2.5.35&#x3C;/b&#x3E; adds a virtual function &#x3C;code&#x3E;yywrap()&#x3C;/code&#x3E; to the &#x3C;code&#x3E;yyFlexLexer&#x3C;/code&#x3E; class. This function is automatically defined in any lexer source file generated by flex. However because I copied &#x3C;a href=&#x22;http://idlebox.net/2007/flex-bison-cpp-example/flex-bison-cpp-example-0.1.2/doxygen-html/FlexLexer_8h.html&#x22;&#x3E;FlexLexer.h&#x3C;/a&#x3E; from an older flex distribution, the function definition throughs a &#x3C;b&#x3E;&#x22;no &#x3C;code&#x3E;yywrap()&#x3C;/code&#x3E; member function&#x22; compiler error&#x3C;/b&#x3E;. Updating the &#x3C;a href=&#x22;http://idlebox.net/2007/flex-bison-cpp-example/flex-bison-cpp-example-0.1.2/doxygen-html/FlexLexer_8h.html&#x22;&#x3E;FlexLexer.h&#x3C;/a&#x3E; with a conditional declaration of &#x3C;code&#x3E;yywrap()&#x3C;/code&#x3E; hopefully did the trick and now works on all versions. Usually this file should be taken from &#x3C;code&#x3E;/usr/include&#x3C;/code&#x3E; and not from the package. However that will break compilation if flex is not installed, and a self-sufficient compilation package was a primary goal of the example.&#x3C;/p&#x3E;

&#x3C;p&#x3E;For more information and the download package see the &#x3C;a href=&#x22;http://idlebox.net/2007/flex-bison-cpp-example/&#x22;&#x3E;Flex Bison C++ Example&#x3C;/a&#x3E; web page.&#x3C;/p&#x3E;</description>
<guid isPermaLink="true">http://idlebox.net/2008/0803-Flex-Bison-C++-Example-0.1.2.blog</guid>
<pubDate>Sun, 03 Aug 2008 14:26:00 +0200</pubDate>
</item>
<item>
<title>Speedtest and Comparsion of Open-Source Cryptography Libraries and Compiler Flags</title>
<link>http://idlebox.net/2008/0714-cryptography-speedtest-comparison/</link>
<description>&#x3C;span style=&#x22;float: right; clear: right; margin: 0em 0em 1.5em 1.5em; font-size: 10pt; text-align: center&#x22;&#x3E;&#x3C;a href=&#x22;http://idlebox.net/2008/0714-cryptography-speedtest-comparison/&#x22;&#x3E;&#x3C;img src=&#x22;http://idlebox.net/2008/0714-cryptography-speedtest-comparison/p4-3200-gentoo-all-thumb.jpg&#x22; width=&#x22;300&#x22; height=&#x22;423&#x22; alt=&#x22;Cryptograph Speedtest - All Tests: Speed by Data Length on p4-3200-gentoo&#x22; /&#x3E;&#x3C;/a&#x3E;&#x3C;/span&#x3E;&#x3C;h2&#x3E;Abstract&#x3C;/h2&#x3E;

&#x3C;p&#x3E;There are many well-known open-source cryptography libraries available, which implement many different ciphers. So which library and which cipher(s) should one use for a new program? This comparison presents a wealth of experimentally determined speed test results to allow an educated answer to this question.&#x3C;/p&#x3E;

&#x3C;p&#x3E;The speed tests encompass eight open-source cryptography libraries of which 15 different ciphers are examined. The performance experiments were run on five different computers which had up to six different Linux distributions installed, leading to ten CPU / distribution combinations tests. Ultimately the cipher code was also compiled using four different C++ compilers with 35 different optimization flag combinations.&#x3C;/p&#x3E;

&#x3C;p&#x3E;Two different test programs were written: the first to verify cipher implementations against each other, the second to perform timed speed tests on the ciphers exported by the different libraries. A cipher speed test run is composed of both encryption &#x3C;em&#x3E;and&#x3C;/em&#x3E; decryption of a buffer. The buffer length is varied from 16 bytes to 1 MB in size.&#x3C;/p&#x3E;

&#x3C;p&#x3E;Many of the observed results are unexpected. Blowfish turned out to be the fastest cipher. But cipher selection cannot be solely based on speed, other parameters like (perceived) strength and age are more important. However raw speed data is important for further discussion.&#x3C;/p&#x3E;

&#x3C;p&#x3E;When regarding the eight selected cryptography libraries, one would expect all libraries to contain approximately the same core cipher implementation, as all calculation results &#x3C;em&#x3E;have to be equal&#x3C;/em&#x3E;. However the libraries&#x27; performances varies greatly. OpenSSL and Beecrypt contain implementations with highest optimization levels, but the libraries only implement few ciphers. Tomcrypt, Botan and Crypto++ implement many different ciphers with consistently good performance on all of them. The smaller Nettle library trails somewhat behind, probably due to it&#x27;s age.&#x3C;/p&#x3E;

&#x3C;p&#x3E;The first real surprise of the speed comparison is the extremely slow test results measured on all ciphers implemented in libmcrypt and libgcrypt. libmcrypt&#x27;s ciphers show an extremely long start-up overhead, but once it is amortized the cipher&#x27;s throughput is equal to faster libraries. libgcrypt&#x27;s results on the other hand are really abysmal and trail far behind all the other libraries. This does not bode well for GnuTLS&#x27;s SSL performance. And libmcrypt&#x27;s slow start promises bad performance for thousands of PHP applications encrypting small chunks of user data.&#x3C;/p&#x3E;

&#x3C;p&#x3E;Most of the speed test experiments were run on Gentoo Linux, which compiles all programs from source with user-defined compiler flags. This contrasts to most other Linux distributions which ship pre-compiled binary packages. To verify that previous results stay valid on other distributions the experiments were rerun in chroot-jailed installations. As expected Gentoo Linux showed the highest performance, closely followed by the newer versions of Ubuntu (hardy) and Debian (lenny). The oldest distribution in the test, Debian etch, showed nearly 15% slower speed results than Gentoo.&#x3C;/p&#x3E;

&#x3C;p&#x3E;To make the results transferable onto other computers and CPUs the speed test experiments were run on five different computers, which all had Debian etch installed. No unexpected results were observable: all results show the expected scaling with CPU speed. Most importantly no cache effects or special speed-ups were detectable. Most robust cipher was CAST5 and the one most fragile to CPU architecture was Serpent.&#x3C;/p&#x3E;

&#x3C;p&#x3E;Most interesting for applications outside the scope of cipher algorithms was the compiler and optimization flags comparison. The speed test code and cipher library Crypto++ was compiled with many different compiler / flags combinations. It was even compiled and speed measured on Windows to compare Microsoft&#x27;s compiler with those available on Linux.&#x3C;/p&#x3E;

&#x3C;p&#x3E;The experimental results showed that Intel&#x27;s C++ compiler produces by far the most optimized code for all ciphers tested. Second and third place goes to Microsoft Visual C++ 8.0 and &#x3C;code&#x3E;gcc 4.1.2&#x3C;/code&#x3E;, which generate code which is roughly 16.5% and 17.5% slower than that generated by Intel&#x27;s compiler. gcc&#x27;s performance is highly dependent on the amount to optimization flags enabled: a simple &#x3C;code&#x3E;-O3&#x3C;/code&#x3E; is not sufficient to produce well optimized binary code. Relative to &#x3C;code&#x3E;gcc 4.1.2&#x3C;/code&#x3E; the older compiler version &#x3C;code&#x3E;3.4.6&#x3C;/code&#x3E; is about 10% slower on most tests.&#x3C;/p&#x3E;

&#x3C;p&#x3E;All in all the experimental results provide some hard numbers on which to base further discussion. Hopefully some of the libraries&#x27; spotlighted deficits can be corrected or at least explained. Lastly the most concrete result: the cipher and library I will use for my planned application is Serpent from the Botan library.&#x3C;/p&#x3E;

&#x3C;p style=&#x22;text-align: center&#x22;&#x3E;&#x3C;a href=&#x22;http://idlebox.net/2008/0714-cryptography-speedtest-comparison/&#x22;&#x3E;This blog entry continues on the next page ...&#x3C;/a&#x3E;&#x3C;/p&#x3E;</description>
<guid isPermaLink="true">http://idlebox.net/2008/0714-cryptography-speedtest-comparison/</guid>
<pubDate>Mon, 14 Jul 2008 14:53:00 +0200</pubDate>
</item>
<item>
<title>Kooperative LaTeX-Mitschrift zu Algebra 2 bei Prof. Herrlich</title>
<link>http://idlebox.net/2008/0510-Algebra2-Skript.blog</link>
<description>&#x3C;p&#x3E;Nachdem ich in der letzten Woche die Pr&#x26;uuml;fung zu Algebra 2 abgelegt habe, betrachte ich nun das dazugeh&#x26;ouml;rige Skript auch als abgeschlossen.&#x3C;/p&#x3E;

&#x3C;p&#x3E;Zu der Vorlesung im Sommersemester 2006 entstand kooperativ per Internet eine LaTeX-Mitschrift. Das gemeinsame Mitschreiben/Nach-TeXen wurde m&#x26;ouml;glich durch das &#x3C;a href=&#x22;http://latexki.nomeata.de&#x22;&#x3E;LaTeX-Wikisystem latexki&#x3C;/a&#x3E; von &#x3C;a href=&#x22;http://www.joachim-breitner.de&#x22;&#x3E;Joachim Breitner&#x3C;/a&#x3E;. Auf dem &#x3C;a href=&#x22;http://mitschriebwiki.nomeata.de&#x22;&#x3E;Mitschrieb-Wiki&#x3C;/a&#x3E; haben damals verschiedene Leute zusammen das LaTeX kapitelweise zusammengestellt. Ich habe ungef&#x26;auml;hr sechs Vorlesungen dazu beigetragen.&#x3C;/p&#x3E;

&#x3C;p&#x3E;Irgendwann hatte ich damals einen lokalen Branch der LaTeX Dateien mittels &#x3C;a href=&#x22;http://svk.bestpractical.com&#x22;&#x3E;SVK&#x3C;/a&#x3E; angefangen. Daf&#x26;uuml;r gab es verschiedene Gr&#x26;uuml;nde. Insbesondere war lokales Editieren der LaTeX-Dateien mit XEmacs sehr viel bequemer als online im Browser-Formularfeld. Au&#x26;szlig;erdem war das Einbinden von externen EPS/PDF Graphiken auf dem Wiki-System leider nicht m&#x26;ouml;glich. Ich hatte auch andere Vorstellungen vom optischen Seitenlayout und Schriften, welche das LaTeX-Wiki nicht akzeptierte.&#x3C;/p&#x3E;

&#x3C;p&#x3E;Der Branch ist dann permanent geworden und ich habe beim Lernen sehr, sehr viele kleine Fehler im Skript gefunden und einige kurz gefasste Stellen erg&#x26;auml;nzt. Leider ist es nicht mehr m&#x26;ouml;glich die &#x26;Auml;nderungen auf das Wiki hochzuladen, da einige Neuerungen insbesondere die Graphiken nicht unterst&#x26;uuml;tzt werden und die ganzen anderen kleinen &#x26;Auml;nderungen nur noch schwer nachvollziehbar sind.&#x3C;/p&#x3E;

&#x3C;p&#x3E;Darum gibt es hier meine (private) Version des Mitschrieb-PDFs und des LaTeX-Quellcodes.&#x3C;/p&#x3E;

&#x3C;p&#x3E;Das fertig kompilierte Skript &#x3C;a href=&#x22;http://idlebox.net/2006/Algebra2/Algebra2.pdf&#x22;&#x3E;&#x3C;b&#x3E;Algebra2.pdf&#x3C;/b&#x3E;&#x3C;/a&#x3E; ist 611 kB gro&#x26;szlig;.&#x3C;/p&#x3E;

&#x3C;p&#x3E;Der LaTeX-Code zum Skript ist in eine Hauptdatei und kleine Kapitel-Dateien aufgeteilt. Die folgenden Links f&#x26;uuml;hren zum Quellcode mit Syntaxhighlighting.&#x3C;/p&#x3E;

&#x3C;table class=&#x22;smallwhite vtop&#x22;&#x3E;
  &#x3C;tr&#x3E;
    &#x3C;td&#x3E;
      Hauptdatei:&#x3C;br /&#x3E;
      &#x3C;a href=&#x22;http://idlebox.net/2006/Algebra2/Algebra2.tex.html&#x22;&#x3E;Algebra2.tex&#x3C;/a&#x3E;
    &#x3C;/td&#x3E;
    &#x3C;td rowspan=&#x22;2&#x22;&#x3E;
      Teil 1:&#x3C;br /&#x3E;
      &#x3C;a href=&#x22;http://idlebox.net/2006/Algebra2/Algebra2Par11.part.tex.html&#x22;&#x3E;Algebra2Par11.part.tex&#x3C;/a&#x3E;&#x3C;br /&#x3E;
      &#x3C;a href=&#x22;http://idlebox.net/2006/Algebra2/Algebra2Par12.part.tex.html&#x22;&#x3E;Algebra2Par12.part.tex&#x3C;/a&#x3E;&#x3C;br /&#x3E;
      &#x3C;a href=&#x22;http://idlebox.net/2006/Algebra2/Algebra2Par13.part.tex.html&#x22;&#x3E;Algebra2Par13.part.tex&#x3C;/a&#x3E;&#x3C;br /&#x3E;
      &#x3C;a href=&#x22;http://idlebox.net/2006/Algebra2/Algebra2Par14.part.tex.html&#x22;&#x3E;Algebra2Par14.part.tex&#x3C;/a&#x3E;&#x3C;br /&#x3E;
      &#x3C;a href=&#x22;http://idlebox.net/2006/Algebra2/Algebra2Par15.part.tex.html&#x22;&#x3E;Algebra2Par15.part.tex&#x3C;/a&#x3E;&#x3C;br /&#x3E;
      &#x3C;a href=&#x22;http://idlebox.net/2006/Algebra2/Algebra2Par16.part.tex.html&#x22;&#x3E;Algebra2Par16.part.tex&#x3C;/a&#x3E;&#x3C;br /&#x3E;
      &#x3C;a href=&#x22;http://idlebox.net/2006/Algebra2/Algebra2Par17.part.tex.html&#x22;&#x3E;Algebra2Par17.part.tex&#x3C;/a&#x3E;
    &#x3C;/td&#x3E;
    &#x3C;td rowspan=&#x22;2&#x22;&#x3E;
      Teil 2:&#x3C;br /&#x3E;
      &#x3C;a href=&#x22;http://idlebox.net/2006/Algebra2/Algebra2Par21.part.tex.html&#x22;&#x3E;Algebra2Par21.part.tex&#x3C;/a&#x3E;&#x3C;br /&#x3E;
      &#x3C;a href=&#x22;http://idlebox.net/2006/Algebra2/Algebra2Par22.part.tex.html&#x22;&#x3E;Algebra2Par22.part.tex&#x3C;/a&#x3E;&#x3C;br /&#x3E;
      &#x3C;a href=&#x22;http://idlebox.net/2006/Algebra2/Algebra2Par23.part.tex.html&#x22;&#x3E;Algebra2Par23.part.tex&#x3C;/a&#x3E;&#x3C;br /&#x3E;
      &#x3C;a href=&#x22;http://idlebox.net/2006/Algebra2/Algebra2Par24.part.tex.html&#x22;&#x3E;Algebra2Par24.part.tex&#x3C;/a&#x3E;&#x3C;br /&#x3E;
      &#x3C;a href=&#x22;http://idlebox.net/2006/Algebra2/Algebra2Par25.part.tex.html&#x22;&#x3E;Algebra2Par25.part.tex&#x3C;/a&#x3E;&#x3C;br /&#x3E;
      &#x3C;a href=&#x22;http://idlebox.net/2006/Algebra2/Algebra2Par26.part.tex.html&#x22;&#x3E;Algebra2Par26.part.tex&#x3C;/a&#x3E;&#x3C;br /&#x3E;
      &#x3C;a href=&#x22;http://idlebox.net/2006/Algebra2/Algebra2Par27.part.tex.html&#x22;&#x3E;Algebra2Par27.part.tex&#x3C;/a&#x3E;&#x3C;br /&#x3E;
      &#x3C;a href=&#x22;http://idlebox.net/2006/Algebra2/Algebra2Par28.part.tex.html&#x22;&#x3E;Algebra2Par28.part.tex&#x3C;/a&#x3E;&#x3C;br /&#x3E;
      &#x3C;a href=&#x22;http://idlebox.net/2006/Algebra2/Algebra2Par29.part.tex.html&#x22;&#x3E;Algebra2Par29.part.tex&#x3C;/a&#x3E;&#x3C;br /&#x3E;
      &#x3C;a href=&#x22;http://idlebox.net/2006/Algebra2/Algebra2Par2A.part.tex.html&#x22;&#x3E;Algebra2Par2A.part.tex&#x3C;/a&#x3E;&#x3C;br /&#x3E;
      &#x3C;a href=&#x22;http://idlebox.net/2006/Algebra2/Algebra2Par2B.part.tex.html&#x22;&#x3E;Algebra2Par2B.part.tex&#x3C;/a&#x3E;
    &#x3C;/td&#x3E;
    &#x3C;td rowspan=&#x22;2&#x22;&#x3E;
      Extras:&#x3C;br /&#x3E;
      &#x3C;a href=&#x22;http://idlebox.net/2006/Algebra2/Algebra2Par28.pic1.fig.html&#x22;&#x3E;Algebra2Par28.pic1.fig&#x3C;/a&#x3E;&#x3C;br /&#x3E;
      &#x3C;a href=&#x22;http://idlebox.net/2006/Algebra2/Algebra2Par29.pic1.fig.html&#x22;&#x3E;Algebra2Par29.pic1.fig&#x3C;/a&#x3E;&#x3C;br /&#x3E;
      &#x3C;a href=&#x22;http://idlebox.net/2006/Algebra2/Algebra2Par29.pic1.pictex.html&#x22;&#x3E;Algebra2Par29.pic1.pictex&#x3C;/a&#x3E;&#x3C;br /&#x3E;
      &#x3C;a href=&#x22;http://idlebox.net/2006/Algebra2/Algebra2Par29.pic2.gnuplot.html&#x22;&#x3E;Algebra2Par29.pic2.gnuplot&#x3C;/a&#x3E;&#x3C;br /&#x3E;
      &#x3C;a href=&#x22;http://idlebox.net/2006/Algebra2/Algebra2Par29-pic2.pdf&#x22;&#x3E;Algebra2Par29-pic2.pdf&#x3C;/a&#x3E;&#x3C;br /&#x3E;
      &#x3C;br /&#x3E;
      &#x3C;a href=&#x22;http://idlebox.net/2006/Algebra2/Cover-Algebra12.tex.html&#x22;&#x3E;Cover-Algebra12.tex&#x3C;/a&#x3E;
    &#x3C;/td&#x3E;
  &#x3C;/tr&#x3E;
  &#x3C;tr&#x3E;
    &#x3C;td&#x3E;
      Komplett:&#x3C;br /&#x3E;
      &#x3C;a href=&#x22;http://idlebox.net/2006/Algebra2/Algebra2.zip&#x22;&#x3E;Algebra2.zip&#x3C;/a&#x3E;
    &#x3C;/td&#x3E;
  &#x3C;/tr&#x3E;
&#x3C;/table&#x3E;

&#x3C;p&#x3E;Da ich mein &#x3C;a href=&#x22;http://idlebox.net/2005/1103-Algebra1-Skript.blog&#x22;&#x3E;altes Algebra 1 Skript&#x3C;/a&#x3E; zusammen mit dem neuen Algebra 2 Skript zu einem kleinen Buch binden wollte, habe ich noch ein &#x3C;a href=&#x22;http://idlebox.net/2006/Algebra2/Cover-Algebra12.pdf&#x22;&#x3E;Deckblatt-PDF (Cover-Algebra12.pdf)&#x3C;/a&#x3E; f&#x26;uuml;r die beiden Teile angefertigt.&#x3C;/p&#x3E;</description>
<guid isPermaLink="true">http://idlebox.net/2008/0510-Algebra2-Skript.blog</guid>
<pubDate>Sat, 10 May 2008 15:59:00 +0200</pubDate>
</item>
<item>
<title>Bugfix Release of STX B+ Tree 0.8.1</title>
<link>http://idlebox.net/2008/0125-STX-B+Tree-0.8.1-Bugfix.blog</link>
<description>&#x3C;span style=&#x22;float: right; clear: right; margin: 0em 0em 1.5em 1.5em; font-size: 10pt; text-align: center&#x22;&#x3E;&#x3C;a href=&#x22;http://idlebox.net/2007/stx-btree/&#x22;&#x3E;&#x3C;img src=&#x22;http://idlebox.net/2007/stx-btree/btree-thumb-border.png&#x22; width=&#x22;252&#x22; height=&#x22;193&#x22; alt=&#x22;Small drawing of a B+ tree&#x22; /&#x3E;&#x3C;/a&#x3E;&#x3C;/span&#x3E;&#x3C;p&#x3E;Released a bugfix version 0.8.1 of the &#x3C;a href=&#x22;http://idlebox.net/2007/stx-btree/&#x22;&#x3E;STX B+ Tree C++ Template Classes&#x3C;/a&#x3E; package. The bug fixed is a possibly illegal memory access during &#x3C;code&#x3E;find()&#x3C;/code&#x3E; function.&#x3C;/p&#x3E;

&#x3C;p&#x3E;I received a new test case via email in which valgrind detected an uninitialized memory access. By tracing it, I soon found that it happens during any &#x3C;code&#x3E;find(key)&#x3C;/code&#x3E; call with a &#x3C;code&#x3E;key&#x3C;/code&#x3E; that is larger than any item contained in the tree. During the &#x3C;code&#x3E;find()&#x3C;/code&#x3E; function &#x3C;code&#x3E;find_lower()&#x3C;/code&#x3E; is called on a leaf node and returns the slot number with the smallest or equal key. However if the queried key is larger than all keys in a leaf node or in the whole tree, &#x3C;code&#x3E;find_lower()&#x3C;/code&#x3E; returns a slot number past the last valid key slot. Comparison of this invalid slot with the queried key then yields an uninitialized memory error in valgrind.&#x3C;/p&#x3E;

&#x3C;p&#x3E;The updated source code package including the wxBTreeDemo source is available &#x3C;a href=&#x22;http://idlebox.net/2007/stx-btree/&#x22;&#x3E;for download from this webpage&#x3C;/a&#x3E;.&#x3C;/p&#x3E;

&#x3C;p&#x3E;Some compiled binaries of &#x3C;a href=&#x22;http://idlebox.net/2007/stx-btree/demo.htt&#x22;&#x3E;wxBTreeDemo&#x3C;/a&#x3E; for Win32 and Linux are available on the &#x3C;a href=&#x22;http://idlebox.net/2007/stx-btree/demo.htt&#x22;&#x3E;demo download page&#x3C;/a&#x3E;.&#x3C;/p&#x3E;

&#x3C;p&#x3E;As before, the updated main B+ tree implementation can be found in doxygen &#x3C;a href=&#x22;http://idlebox.net/2007/stx-btree/stx-btree-0.8.1-doxygen/btree_8h-source.html&#x22;&#x3E;stx/btree.h&#x3C;/a&#x3E; or with plain text comments &#x3C;a href=&#x22;http://idlebox.net/2007/stx-btree/stx-btree-0.8.1/include/stx/btree.h.html&#x22;&#x3E;stx/btree.h&#x3C;/a&#x3E;.&#x3C;/p&#x3E;</description>
<guid isPermaLink="true">http://idlebox.net/2008/0125-STX-B+Tree-0.8.1-Bugfix.blog</guid>
<pubDate>Fri, 25 Jan 2008 15:48:00 +0100</pubDate>
</item>
<item>
<title>Cry of Dolour by Stanislav Ossovsky - Free Fantastic Classic-Metal Music</title>
<link>http://idlebox.net/2007/1014-Stanislav_Ossovsky-Cry_of_Dolour/</link>
<description>&#x3C;span style=&#x22;float: right; clear: right; margin: 0em 0em 1.5em 1.5em; font-size: 10pt; text-align: center&#x22;&#x3E;&#x3C;a href=&#x22;http://idlebox.nethttp://www.cryofdolour.ru/&#x22;&#x3E;&#x3C;img src=&#x22;http://idlebox.net/2007/1014-Stanislav_Ossovsky-Cry_of_Dolour/thumb.jpg&#x22; width=&#x22;360&#x22; height=&#x22;150&#x22; alt=&#x22;Cry of Dolour by Stanislav Ossovsky&#x22; /&#x3E;&#x3C;/a&#x3E;&#x3C;/span&#x3E;&#x3C;p&#x3E;While stumbling around the web, today I found some fantastic instrumental classic-metal music. Listening into some random web music streams, I heard a piece that immediately matched my music taste. That taste is maybe best described as symphonic epic metal, though I&#x27;m generally against over-detailed (music) categorization.&#x3C;/p&#x3E;

&#x3C;p&#x3E;Consequently I entered the song&#x27;s name into Amazon&#x27;s search, but nothing was found. Some googling revealed that the song is downloadable for free: &#x3C;a href=&#x22;http://www.cryofdolour.ru&#x22;&#x3E;http://www.cryofdolour.ru&#x3C;/a&#x3E; - (&#x3C;a href=&#x22;http://www.cryofdolour.ru/download.htm&#x22;&#x3E;download page&#x3C;/a&#x3E;)&#x3C;/p&#x3E;

&#x3C;p&#x3E;It is part of a complete album of similar pieces composed by this Russian musician who signed the page with RAO. The pieces combine classic music motifs with metallic drumming and guitars. Sounds impossible, yet the songs masterfully weaved both styles together creating a bombastic epic expression. Yes, the songs are all instrumental, and yes, you need some patience for the first track. Having heard the pieces over and over again, I soon noticed that while the musical composition is excellent the tracks&#x27; sound itself does not reach usual CD production quality. They sound a bit synthetic and miss some bass blast. But hey, it&#x27;s free.&#x3C;/p&#x3E;

&#x3C;p&#x3E;Original, incredible music by an unknown artist! My three favourite tracks are: &#x22;Hymn to Solitude&#x22;, &#x22;Dies Irae&#x22;, &#x22;It is Coming&#x22; and &#x22;Prelude&#x22;. Ah, that is now four and I still missed some of the best. Just hear them yourself.&#x3C;/p&#x3E;

&#x3C;p&#x3E;If you also have no clue as to what the Russian text on the main page is about, I suggest &#x3C;a href=&#x22;http://translate.google.com/translate?u=http%3A%2F%2Fwww.cryofdolour.ru%2Findex.htm&#x26;amp;langpair=ru%7Cen&#x26;amp;hl=en&#x26;amp;ie=UTF8&#x22;&#x3E;reading Google&#x27;s translation of that page&#x3C;/a&#x3E;.&#x3C;/p&#x3E;</description>
<guid isPermaLink="true">http://idlebox.net/2007/1014-Stanislav_Ossovsky-Cry_of_Dolour/</guid>
<pubDate>Sun, 14 Oct 2007 21:25:00 +0200</pubDate>
</item>
<item>
<title>Really Good Lego Model of Escher&#x27;s &#x22;Relativity&#x22;</title>
<link>http://idlebox.net/2007/0907-Escher-Relativity-Lego/</link>
<description>&#x3C;span style=&#x22;float: right; clear: right; margin: 0em 0em 1.5em 1.5em; font-size: 10pt; text-align: center&#x22;&#x3E;&#x3C;a href=&#x22;http://idlebox.nethttp://www.andrewlipson.com/escher/relativity.html&#x22;&#x3E;&#x3C;img src=&#x22;http://idlebox.net/2007/0907-Escher-Relativity-Lego/thumb.jpg&#x22; width=&#x22;250&#x22; height=&#x22;220&#x22; alt=&#x22;Thumbnail of Escher&#x27;s Relativity in Lego&#x22; /&#x3E;&#x3C;/a&#x3E;&#x3C;/span&#x3E;&#x3C;p&#x3E;The idea strikes me as very strange: to take the impossible figures &#x3C;a href=&#x22;http://www.mcescher.com/&#x22;&#x3E;sketched by Escher&#x3C;/a&#x3E; and build Lego models of them.&#x3C;/p&#x3E;

&#x3C;p&#x3E;Someone actually took up this seemingly &#x22;impossible&#x22; feat. Yesterday I found &#x3C;a href=&#x22;http://www.andrewlipson.com/escher/relativity.html&#x22;&#x3E;their pictures of &#x22;Relativity&#x22;&#x3C;/a&#x3E;, of which I have a poster on the wall left of my PC. I&#x27;ve had some long looks at the poster. So the minute details of the Lego reconstruction interested me immediately. Due to the studs of (standard) Lego tiles pointing in only one direction they had to leave out a few railings, which help form the twisted triangle&#x27;s composition lines. Each of the red Lego men are at the correct place and hold the correct action props. Sweetest are the Lego flowers and plants positioned at the picture&#x27;s upper left, lower right and center. A very good job indeed.&#x3C;/p&#x3E;</description>
<guid isPermaLink="true">http://idlebox.net/2007/0907-Escher-Relativity-Lego/</guid>
<pubDate>Fri, 07 Sep 2007 10:41:00 +0200</pubDate>
</item>
</channel>
</rss>