<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    <title>Andreas Bernauer's personal blog</title>
    <link>http://www.lysium.de/blog/</link>
    <description>come around</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.5.3 - http://www.s9y.org/</generator>
    <pubDate>Thu, 16 Jun 2011 08:22:18 GMT</pubDate>

<item>
    <title>Gnuplot: 'illegal month'</title>
    <link>http://www.lysium.de/blog/index.php?/archives/241-Gnuplot-illegal-month.html</link>
    
    

    <author>nospam@example.com (Andreas Bernauer)</author>
    <content:encoded>
    &lt;p&gt;I&#039;ve recently stumbled across the following error message of Gnuplot:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;illegal month
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Gnuplot can handle time data. With &lt;code&gt;set timefmt&lt;/code&gt;, you can specify the format of your time data. As of know, all your time data has to be in the same format, that is, all columns containing time data must have the same format.&lt;/p&gt;

&lt;p&gt;Although every column used the same format, I still got this error message. Strangely enough, if I tested the plot command within gnuplot, the error message disappeared; only when I ran the script to plot the data the error message appeared.&lt;/p&gt;

&lt;p&gt;Turns out that the reason for the error message is not a malformed data line, but a malformed command. In my case, I have used the wrong format for specifying the coordinates of &lt;code&gt;set arrow&lt;/code&gt;, because I wrote the script with time data that had a different format. Changing the coordinates to adhere to the new time format made the error message disappear.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Thu, 16 Jun 2011 18:14:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.lysium.de/blog/index.php?/archives/241-guid.html</guid>
    <category>gnuplot</category>
<category>knowledgebase</category>

</item>
<item>
    <title>Fixing vimperator on Ubuntu 10.04</title>
    <link>http://www.lysium.de/blog/index.php?/archives/240-Fixing-vimperator-on-Ubuntu-10.04.html</link>
    

    <author>nospam@example.com (Andreas Bernauer)</author>
    <content:encoded>
    &lt;p&gt;After upgrading to Ubuntu 10.04, vimperator could not read or write its .vimperatorrc anymore. Although all permissions were set correctly, the access to this file was denied. The access is also denied to firefox if you want to save a file as &#039;.vimperatorrc&#039;. Strangely, this is true for any file named &#039;.XYZrc&#039; in your home directory. The error message in the logs is&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;May 29 12:34:27 quick kernel: [ 7021.689247] type=1503 audit(1306665267.160:49):
operation=&quot;mknod&quot; pid=4195 parent=1 profile=&quot;/usr/lib/firefox-3.6.17/firefox-*bin&quot;
requested_mask=&quot;c::&quot; denied_mask=&quot;c::&quot; fsuid=1000 ouid=1000 name=&quot;/home/andreas/.vimperatorrc&quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The access is denied by apparmor, in particular because of  a rule in the privacy settings that disallows read or write access to *.rc files in the user&#039;s home directory. I don&#039;t know, why this broad apparmor rule is necessary, but I found a workaround for the .vimperatorrc problem. Reading the vimperator sources, I found that the configuration file is expected as &#039;.vimperatorrc&#039; (which causes the aforementioned problem) or &#039;_vimperatorrc&#039; (for Windows machines). It turns out that if on both GNU/Linux and Windows platforms one of the files does not exist, the other one is tried instead.&lt;/p&gt;

&lt;p&gt;So, to let vimperator read its .vimperatorrc file, just rename .vimperatorrc to _vimpeatorrc. And keep in mind that firefox cannot read or write any file named *rc in your home directory (such as .my-vimperator.rc).&lt;/p&gt;

&lt;p&gt;Alternatively you can disable apparmor (which I don&#039;t recommend) or update the apparmor rules (which I don&#039;t know how to do without removing the offending rule in the privacy profile as the manual page is incomplete here as far as I can see).&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Sun, 29 May 2011 13:57:33 +0200</pubDate>
    <guid isPermaLink="false">http://www.lysium.de/blog/index.php?/archives/240-guid.html</guid>
    <category>apparmor</category>
<category>computer science</category>
<category>knowledgebase</category>
<category>ubuntu</category>

</item>
<item>
    <title>Getting Prism 2.5 working with Ubuntu 10.04</title>
    <link>http://www.lysium.de/blog/index.php?/archives/239-Getting-Prism-2.5-working-with-Ubuntu-10.04.html</link>
            <category>computer science</category>
    
    

    <author>nospam@example.com (Andreas Bernauer)</author>
    <content:encoded>
    &lt;p&gt;I&#039;ve recently upgraded my system from Ubuntu 8.02 to 10.04 (Lucid Lynx). After the reboot, my wireless PCI card with Intersil Prism 2.5 Wavelan chipset (rev 01) did not work anymore.&lt;/p&gt;

&lt;p&gt;First I thought the driver for this rather old card is missing. However, it turned out the interface was named wrong by the udev rules.&lt;/p&gt;

&lt;p&gt;To fix the issue, I edited &lt;code&gt;/etc/udev/rules.d/70-persistent-net.rules&lt;/code&gt;. There were two entries for my wireless card, one for the &lt;code&gt;hostap_pci&lt;/code&gt; driver that named the interface &lt;code&gt;wlan0&lt;/code&gt; and one for the &lt;code&gt;orinoco_pci&lt;/code&gt; driver that named the interface &lt;code&gt;eth1&lt;/code&gt;. As &lt;code&gt;eth1&lt;/code&gt; showed up with &lt;code&gt;ifconfig&lt;/code&gt;, but &lt;code&gt;wlan0&lt;/code&gt; did not, I figured &lt;code&gt;orinoco_pci&lt;/code&gt; is working, but &lt;code&gt;hostap_pci&lt;/code&gt; is not. So I changed the following lines in &lt;code&gt;70-persistent-net.rules&lt;/code&gt; from&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# PCI device 0x1260:0x3873 (hostap_pci)
SUBSYSTEM==&quot;net&quot;, ACTION==&quot;add&quot;, DRIVERS==&quot;?*&quot;, ATTR{address}==&quot;00:09:5b:11:e2:c9&quot;, 
    ATTR{type}==&quot;1&quot;, KERNEL==&quot;wlan*&quot;, NAME=&quot;wlan0&quot;

# PCI device 0x1260:0x3873 (orinoco_pci)
SUBSYSTEM==&quot;net&quot;, ACTION==&quot;add&quot;, DRIVERS==&quot;?*&quot;, ATTR{address}==&quot;00:09:5b:11:e2:c9&quot;, 
    ATTR{dev_id}==&quot;0x0&quot;, ATTR{type}==&quot;1&quot;, KERNEL==&quot;eth*&quot;, NAME=&quot;eth1&quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;to&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# PCI device 0x1260:0x3873 (hostap_pci)
#SUBSYSTEM==&quot;net&quot;, ACTION==&quot;add&quot;, DRIVERS==&quot;?*&quot;, ATTR{address}==&quot;00:09:5b:11:e2:c9&quot;, 
    ATTR{type}==&quot;1&quot;, KERNEL==&quot;eth*&quot;, NAME=&quot;eth1&quot;

# PCI device 0x1260:0x3873 (orinoco_pci)
SUBSYSTEM==&quot;net&quot;, ACTION==&quot;add&quot;, DRIVERS==&quot;?*&quot;, ATTR{address}==&quot;00:09:5b:11:e2:c9&quot;, 
    ATTR{dev_id}==&quot;0x0&quot;, ATTR{type}==&quot;1&quot;, KERNEL==&quot;wlan*&quot;, NAME=&quot;wlan0&quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;That is, I commented out the section for &lt;code&gt;hostap_pci&lt;/code&gt; and renamed the entry for &lt;code&gt;orinoco_pci&lt;/code&gt; to use &lt;code&gt;wlan0&lt;/code&gt; as the interface name.&lt;/p&gt;

&lt;p&gt;After a reboot, I could use my wireless network again.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Update&lt;/em&gt;: However, a new entry was added to the udev rules file so that after the next reboot, my wireless network card did not work anymore. The culprit was the udev rules generator file at &lt;code&gt;/lib/udev/rules.d/75-persistent-net-generator.rules&lt;/code&gt;, which thought it still had to add a udev rule for the &lt;code&gt;eth1&lt;/code&gt; interface. I don&#039;t know how to debug udev rules, so the easiest way to fix this issue is to disable the rule generation once everything is set up nicely. For this, I added the following line at the beginning of the &lt;code&gt;75-persistent-net-generator.rules&lt;/code&gt; file, with the effect that no further rule generation for network cards happens:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;GOTO=&quot;persistent_net_generator_end&quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Of course, if you add or change your network cards, you should uncomment this new line to generate new rules.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Sun, 20 Mar 2011 18:00:00 +0100</pubDate>
    <guid isPermaLink="false">http://www.lysium.de/blog/index.php?/archives/239-guid.html</guid>
    <category>computer science</category>
<category>knowledgebase</category>
<category>lucid-lynx</category>
<category>network</category>
<category>ubuntu</category>

</item>
<item>
    <title>Merry Grav-mass!</title>
    <link>http://www.lysium.de/blog/index.php?/archives/238-Merry-Grav-mass!.html</link>
            <category>meinung</category>
    
    

    <author>nospam@example.com (Andreas Bernauer)</author>
    <content:encoded>
    &lt;p&gt;&lt;a href=&quot;http://www.stallman.org/grav-mass.html&quot;&gt;Merry Grav-mass&lt;/a&gt; to you all!&lt;/p&gt;

&lt;p&gt;Let&#039;s celebrate the birthday of &lt;a href=&quot;http://en.wikipedia.org/wiki/Isaac_newton&quot;&gt;Isaac Newton&lt;/a&gt; today, or even better, the &lt;a href=&quot;http://opinionator.blogs.nytimes.com/2008/12/23/the-ten-days-of-newton/&quot;&gt;ten days of Isaac Newton&lt;/a&gt; as suggested by Olivia Judson in the New York Times.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Sat, 25 Dec 2010 00:01:00 +0100</pubDate>
    <guid isPermaLink="false">http://www.lysium.de/blog/index.php?/archives/238-guid.html</guid>
    <category>meinung</category>
<category>net</category>

</item>
<item>
    <title>Thank you, Richard Stallman</title>
    <link>http://www.lysium.de/blog/index.php?/archives/237-Thank-you,-Richard-Stallman.html</link>
            <category>meinung</category>
    
    

    <author>nospam@example.com (Andreas Bernauer)</author>
    <content:encoded>
    &lt;p&gt;Thank you &lt;a href=&quot;http://en.wikipedia.org/wiki/Richard_Stallman&quot;&gt;Richard Stallman&lt;/a&gt; for &lt;a href=&quot;http://en.wikipedia.org/wiki/Free_Software_Foundation&quot; &gt;25 years of free software&lt;/a&gt;. And for the GNU/Linux system. That is all.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Tue, 05 Oct 2010 09:49:31 +0200</pubDate>
    <guid isPermaLink="false">http://www.lysium.de/blog/index.php?/archives/237-guid.html</guid>
    <category>computer science</category>
<category>meinung</category>

</item>
<item>
    <title>Zimbra Keyboard Shortcuts</title>
    <link>http://www.lysium.de/blog/index.php?/archives/236-Zimbra-Keyboard-Shortcuts.html</link>
    
    

    <author>nospam@example.com (Andreas Bernauer)</author>
    <content:encoded>
    &lt;p&gt;I&#039;m currently evaluating &lt;a href=&quot;http://www.zimbra.com&quot;&gt;Zimbra&lt;/a&gt; as my webmail client. It looks pretty nice and even has keyboard shortcuts.&lt;/p&gt;

&lt;p&gt;However, the listings available on the net seem to be outdated or not match with my configuration, so I copied the listing from the Preferences dialog and put them on a cheat sheet, that you can download here: &lt;a href=&quot;http://www.lysium.de/sw/zimbra-shortcuts.pdf&quot;&gt;Zimbra Keyboard Shortcuts&lt;/a&gt; (PDF).&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Mon, 08 Mar 2010 16:22:08 +0100</pubDate>
    <guid isPermaLink="false">http://www.lysium.de/blog/index.php?/archives/236-guid.html</guid>
    <category>knowledgebase</category>

</item>
<item>
    <title>Plotting data with gnuplot in real-time</title>
    <link>http://www.lysium.de/blog/index.php?/archives/234-Plotting-data-with-gnuplot-in-real-time.html</link>
            <category>computer science</category>
    
    

    <author>nospam@example.com (Andreas Bernauer)</author>
    <content:encoded>
    &lt;p&gt;I needed to plot data from a program in real-time for a demo, that is, as the program generates the data, I wanted it to show in some nice diagram.&lt;/p&gt;

&lt;p&gt;A friend pointed me to &lt;a href=&quot;http://users.softlab.ece.ntua.gr/~ttsiod/gnuplotStreaming.html&quot;&gt;Visualize real-time data streams with Gnuplot&lt;/a&gt; by &lt;a href=&quot;http://users.softlab.ece.ntua.gr/~ttsiod/&quot;&gt;Thanassis Tsiodras&lt;/a&gt;, which is very nice: you specify the number of streams to plot and where to plot them, and feed it with lines like &#039;0:1.23&#039;, &#039;1:2.3&#039;, etc. defining the data points for the individual streams (here: first point on stream 0 is 1.23, first point on stream 1 is 2.3, etc.).&lt;/p&gt;

&lt;p&gt;However, I needed to plot several streams in a single window, which that version lacked. So I extended that program with the ability to plot several streams into a single window (&lt;a href=&quot;http://www.lysium.de/sw/driveGnuPlotStreams.pl&quot;&gt;download&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;For this, you specify both the number of streams you want to plot and the number of windows you want to show. Furthermore, you specify in which window each stream is plotted. I kept as much as possible of the original command line interface to ease the transition to this new version. The result looks like this:&lt;/p&gt;
 &lt;br /&gt;&lt;a href=&quot;http://www.lysium.de/blog/index.php?/archives/234-Plotting-data-with-gnuplot-in-real-time.html#extended&quot;&gt;Continue reading &quot;Plotting data with gnuplot in real-time&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sun, 29 Nov 2009 19:21:32 +0100</pubDate>
    <guid isPermaLink="false">http://www.lysium.de/blog/index.php?/archives/234-guid.html</guid>
    <category>computer science</category>
<category>gnuplot</category>
<category>plotting</category>
<category>video</category>

</item>
<item>
    <title>g++ error message: 'non-class type'</title>
    <link>http://www.lysium.de/blog/index.php?/archives/232-g++-error-message-non-class-type.html</link>
            <category>computer science</category>
    
    

    <author>nospam@example.com (Andreas Bernauer)</author>
    <content:encoded>
    &lt;p&gt;Who&#039;s designing the error messages of g++? Anyways, here is a translation:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;error: request for member ‘foo’ in ‘((Test*)this)-&amp;gt;Test::_bar’, 
which is of non-class type ‘C_bar*’
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;means: in class &lt;code&gt;Test&lt;/code&gt;, you&#039;ve written &lt;code&gt;_bar.foo&lt;/code&gt;, but &lt;code&gt;_bar&lt;/code&gt; is a pointer; you need to write &lt;code&gt;_bar-&amp;gt;foo&lt;/code&gt;, that is, change the dot to an arrow.&lt;/p&gt;

&lt;p&gt;Happy C++ coding!&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Fri, 30 Jan 2009 10:08:00 +0100</pubDate>
    <guid isPermaLink="false">http://www.lysium.de/blog/index.php?/archives/232-guid.html</guid>
    <category>c++</category>
<category>computer science</category>
<category>knowledgebase</category>
<category>programming</category>

</item>
<item>
    <title>Global and local variables in python</title>
    <link>http://www.lysium.de/blog/index.php?/archives/231-Global-and-local-variables-in-python.html</link>
            <category>computer science</category>
    
    

    <author>nospam@example.com (Andreas Bernauer)</author>
    <content:encoded>
    &lt;p&gt;I just stumbled over my python code, similar to the following one, which raises an UnboundLocalError in the first line of &lt;code&gt;push&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;def func_stack1():
    stack = []
    def push(num):
        print &quot;stack before: &quot;, stack
        stack = stack + [num]
        print &quot;stack after: &quot;, stack
    return push

push = func_stack1()
push(1)
&lt;/code&gt;&lt;/pre&gt;
 &lt;br /&gt;&lt;a href=&quot;http://www.lysium.de/blog/index.php?/archives/231-Global-and-local-variables-in-python.html#extended&quot;&gt;Continue reading &quot;Global and local variables in python&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 27 Jan 2009 15:08:30 +0100</pubDate>
    <guid isPermaLink="false">http://www.lysium.de/blog/index.php?/archives/231-guid.html</guid>
    <category>computer science</category>
<category>knowledgebase</category>
<category>python</category>

</item>
<item>
    <title>Updated SystemC 2.2.0 docs</title>
    <link>http://www.lysium.de/blog/index.php?/archives/230-Updated-SystemC-2.2.0-docs.html</link>
    
    

    <author>nospam@example.com (Andreas Bernauer)</author>
    <content:encoded>
    &lt;p&gt;I&#039;ve just  updated the &lt;a href=&quot;/docs/systemc-2.2.0/docs/html/index.html&quot;&gt;documentation of SystemC 2.2.0&lt;/a&gt;. It includes more graphs, the source code of the .cpp files, and I turned the comments of some functions to doxygen comments which now show up in the docs. I plan to update the docs with more documented functions (the original source contains only simple comments instead of doxygen comments).&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Wed, 21 Jan 2009 15:55:07 +0100</pubDate>
    <guid isPermaLink="false">http://www.lysium.de/blog/index.php?/archives/230-guid.html</guid>
    <category>docs</category>

</item>
<item>
    <title>Installing Python 2.6 on Ubuntu 8.04</title>
    <link>http://www.lysium.de/blog/index.php?/archives/229-Installing-Python-2.6-on-Ubuntu-8.04.html</link>
            <category>computer science</category>
    
    

    <author>nospam@example.com (Andreas Bernauer)</author>
    <content:encoded>
    &lt;p&gt;I wanted to &#039;upgrade&#039; my python from 2.5 to 2.6 on Ubuntu. Unfortunately, I could not find .deb packages for Ubuntu. Fortunately, the &lt;a href=&quot;http://www.python.org/ftp/python/2.6/Python-2.6.tgz&quot;&gt;Python 2.6 sources&lt;/a&gt; &lt;a href=&quot;http://www.python.org/download/releases/2.6/Python-2.6.tgz.asc&quot;&gt;(sig)&lt;/a&gt; are available, so I can compile it from source. Here&#039;s what I had to do to get it running. (Short version: &lt;code&gt;apt-get build-dep python2.5&lt;/code&gt; and apply &lt;a href=&quot;/sw/python2.6-disable-old-modules.patch&quot;&gt;this patch&lt;/a&gt; to disable unavailable and outdated modules.)&lt;/p&gt;
 &lt;br /&gt;&lt;a href=&quot;http://www.lysium.de/blog/index.php?/archives/229-Installing-Python-2.6-on-Ubuntu-8.04.html#extended&quot;&gt;Continue reading &quot;Installing Python 2.6 on Ubuntu 8.04&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 06 Nov 2008 14:06:37 +0100</pubDate>
    <guid isPermaLink="false">http://www.lysium.de/blog/index.php?/archives/229-guid.html</guid>
    <category>computer science</category>
<category>howto</category>
<category>knowledgebase</category>
<category>python</category>

</item>
<item>
    <title>gvim spell correction popup menu</title>
    <link>http://www.lysium.de/blog/index.php?/archives/224-gvim-spell-correction-popup-menu.html</link>
            <category>computer science</category>
    
    

    <author>nospam@example.com (Andreas Bernauer)</author>
    <content:encoded>
    &lt;p&gt;I gvim, if you set&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;:setlocal spell spelllang=en_us
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;gvim will spell-check your file and underline wrongly spelled words with a red line much like you know it from OpenOffice. If  you&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;:set mousemodel=popup
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;you can even right click on any misspelled word to get a list of suggested corrections.&lt;/p&gt;

&lt;p&gt;However, this sometimes did not work for me.  I could not figure out a reason, until I read the help docs again, which clearly say:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Note for GTK: don&#039;t release the right mouse button until the menu appears, 
otherwise it won&#039;t work.
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;They actually mean what they say: if I release the right mouse button too fast, the menu appears, but it does not replace the misspelled word with the corrected word.  Only if keep the right mouse pressed until the menu appears, it works, for whatever reason. RTFM!&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Sat, 17 May 2008 16:01:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.lysium.de/blog/index.php?/archives/224-guid.html</guid>
    <category>computer science</category>
<category>knowledgebase</category>

</item>
<item>
    <title>CCTV does not help against crime [The Guardian]</title>
    <link>http://www.lysium.de/blog/index.php?/archives/223-CCTV-does-not-help-against-crime-The-Guardian.html</link>
            <category>meinung</category>
    
    

    <author>nospam@example.com (Andreas Bernauer)</author>
    <content:encoded>
    &lt;p&gt;There&#039;s an interesting &lt;a href=&quot;http://yro.slashdot.org/yro/08/05/07/1525236.shtml&quot;&gt;discussion at slashdot&lt;/a&gt; over an &lt;a href=&quot;http://www.guardian.co.uk/uk/2008/may/06/ukcrime1&quot;&gt;article in The Guardian concerning the effectiveness of CCTV&lt;/a&gt; cameras.  In short, The Guardian cites a police man that only 3% of street robberies were solved using CCTV images.&lt;/p&gt;

&lt;p&gt;While this seems to argue against installation of CCTV cameras, there are several interesting points brought up in the discussion on slashdot, though.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Concerning the 3% figure, &lt;a href=&quot;http://yro.slashdot.org/comments.pl?sid=545802&amp;amp;cid=23325324&quot;&gt;noa points out&lt;/a&gt; that it does not say anything about how much crime the cameras prevented, the reason why they were installed in the first place.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The basis for CCTV cameras is law enforcement, so &lt;a href=&quot;http://yro.slashdot.org/comments.pl?sid=545802&amp;amp;cid=23325670&quot;&gt;mi asks&lt;/a&gt; whether we want 100% law enforcement to which ShieldW0lf answers yes, but only if 99% of the laws are abolished. mi also points out that &lt;a href=&quot;http://news.yahoo.com/s/ap/20080507/ap_on_re_us/videotaped_police_beating&quot;&gt;cameras can help protect citizens against police violience&lt;/a&gt;, as happened in Philadelphia.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On the other hand, &lt;a href=&quot;http://yro.slashdot.org/comments.pl?sid=545802&amp;amp;cid=23326160&quot;&gt;Wowsers reports&lt;/a&gt; that a camera could not help find a guy assaulting a woman, because the camera was used to catch motorists using the wrong lane, presumably because this gives money to the city.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Even worse, the cameras are sometimes used for spying, as &lt;a href=&quot;http://yro.slashdot.org/comments.pl?sid=545802&amp;amp;cid=23325138&quot;&gt;Toreo asesino reports&lt;/a&gt;. He was making out with a girl in a park and observed a camera being pointed to him.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thank you, slashdot, for your great discussion system. On a personal note, I don&#039;t think CCTV is a cure for everything. It may help in some cases (say banks), but most often it will only invade people&#039;s privacy and satisfy the curiosity of some (unknown) security people while pushing crime to other, non-monitored areas. More intelligent software, as the Guardian article suggests, won&#039;t help here.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Thu, 08 May 2008 10:26:43 +0200</pubDate>
    <guid isPermaLink="false">http://www.lysium.de/blog/index.php?/archives/223-guid.html</guid>
    <category>meinung</category>
<category>news</category>
<category>privacy</category>

</item>
<item>
    <title>Lost static objects in static libraries with GNU linker `ld`</title>
    <link>http://www.lysium.de/blog/index.php?/archives/222-Lost-static-objects-in-static-libraries-with-GNU-linker-ld.html</link>
            <category>computer science</category>
    
    

    <author>nospam@example.com (Andreas Bernauer)</author>
    <content:encoded>
    &lt;p&gt;If you link a static library to your executable, the GNU linker &lt;code&gt;ld&lt;/code&gt; (as many others) only adds those symbols that &lt;code&gt;ld&lt;/code&gt; thinks are actually used in your executable (that&#039;s a feature). Unfortunately, &lt;code&gt;ld&lt;/code&gt; can only check if the symbol is in use, but not if the side effects of the symbol&#039;s initialization is used. Thus, your program will fail if it depends on the initialization of an unused static object.&lt;/p&gt;

&lt;p&gt;In my case, I have a factory (&lt;code&gt;class module::factory&amp;lt;T&amp;gt; : public factory_plant {...} factory;&lt;/code&gt;) at which classes can register themselves with a name (&lt;code&gt;module::factory&amp;lt;Group&amp;gt; f(&quot;Group&quot;)&lt;/code&gt;). If I call the factory with a name (&lt;code&gt;factory.create(&quot;Group&quot;)&lt;/code&gt;), the factory returns a pointer to a newly created class associated with that name. The class registers itself via a static object (here: &lt;code&gt;f&lt;/code&gt;) whose initialization code does the actual registration.&lt;/p&gt;

&lt;p&gt;The problem arises if the class is not used directly and the linker throws the static object away. The registration does not happen and thus I can&#039;t use the factory to create an object of the class. There are several possibilities to work around this feature:&lt;/p&gt;

&lt;p&gt;Use &lt;code&gt;--whole-archive&lt;/code&gt; to tell the linker to include all symbols, no matter what (with &lt;code&gt;gcc&lt;/code&gt; use &lt;code&gt;-Wl,--whole-archive -lmylib -Wl,--no-whole-archive&lt;/code&gt;).  The drawback is that symbols that I neither use nor care about are also included, resulting in increased code size.&lt;/p&gt;

&lt;p&gt;Use &lt;code&gt;-u&amp;lt;symbol&amp;gt;&lt;/code&gt; to tell the linker to treat &lt;code&gt;&amp;lt;symbol&amp;gt;&lt;/code&gt; as if undefined and thus include it in the executable, even it is not used. The drawback here is to know what &lt;code&gt;&amp;lt;symbol&amp;gt;&lt;/code&gt; looks like. Easy for C files, difficult (and not portable) for C++ files (see &lt;a href=&quot;http://en.wikipedia.org/wiki/Name_mangling&quot;&gt;Name mangling in Wikipedia&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Use static initializers (thanks to &lt;a href=&quot;http://blog.copton.net/&quot;&gt;Alex&lt;/a&gt; for this).  This is my preferred method. I use a throw-away class, which I add to the header file:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;static struct Init {
     Init() {
          static module::factory&amp;lt;Group&amp;gt; init(&quot;Group&quot;);
     }
} init;
&lt;/code&gt;&lt;/pre&gt;
 
    </content:encoded>

    <pubDate>Tue, 06 May 2008 18:30:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.lysium.de/blog/index.php?/archives/222-guid.html</guid>
    <category>c</category>
<category>c++</category>
<category>computer science</category>
<category>knowledgebase</category>

</item>
<item>
    <title>Realistic 3D experience with Wii remote</title>
    <link>http://www.lysium.de/blog/index.php?/archives/221-Realistic-3D-experience-with-Wii-remote.html</link>
            <category>net</category>
            <category>science</category>
    
    

    <author>nospam@example.com (Andreas Bernauer)</author>
    <content:encoded>
    &lt;p&gt;&lt;object width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/Jd3-eiid-Uw&amp;amp;rel=1&quot;&gt;&lt;/param&gt;&lt;param name=&quot;wmode&quot; value=&quot;transparent&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/Jd3-eiid-Uw&amp;amp;rel=1&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;transparent&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.johnnylee.net&quot;&gt;Johnny Lee&lt;/a&gt; strikes again. After using the Wii remote to create a &lt;a href=&quot;http://www.lysium.de/blog/index.php?/archives/200-Low-Cost-Multi-touch-Whiteboard-using-the-Wii-Remote.html&quot;&gt;low cost multi-touch whiteboard&lt;/a&gt; he uses the Wii remote to implement head tracking and 3D virtual reality. He coupled the Wii remote with a PC and a monitor which displays the 3D world. Thanks to the 3D processors in our brain (and the normal processors in Lees computer), we get an impressive illusion of three dimensionality with objects sticking out of the TV. You can even look into a football stadium as if you look through a window: lean to the right and you see more of the field, lean to the left and you see more of the audience.&lt;/p&gt;

&lt;p&gt;However, it works only for a single person (and I guess you need a pretty big TV screen such as the one Lee owns to enjoy this 3D experience. &lt;img src=&quot;http://www.lysium.de/blog/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;) Great work!&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Fri, 22 Feb 2008 10:33:53 +0100</pubDate>
    <guid isPermaLink="false">http://www.lysium.de/blog/index.php?/archives/221-guid.html</guid>
    <category>net</category>
<category>science</category>
<category>video</category>

</item>

</channel>
</rss>
