about

Felix J. Ogris' private homepage: some stuff about homemade software, FreeBSD, Linux, computers, and hacking in general.
See my profile on Xing, my Google+ profile, or at my current job (scroll down half the page).

Somewhat more nosy? Mailto www@ogris.de. Send women, not mails ;-)

recent news

[2012-05-11] How to read the Windows eventlog (warning, source code included)

[2012-02-19] Updated finitrd, my ramdisk for Linux systems that have their root partition inside an LVM volume. The ramdisk uses ext4 by default now.

[2012-02-18] Updated after 4 years: graypold (part of my Postfix policy daemons) is now IPv6 ready. Added an improved rc script for FreeBSD, too.

[2012-01-15] fproxy 0.41 - just a code cleanup

[2011-12-28] Simple DVD authoring on Linux

[2011-11-29] Removed ipv6.ogris.de and its 6to4 address. Published a real IPv6 address for www.ogris.de and ogris.de

[2011-11-06]

[2011-08-14] xmlrpc.pl el-cheapo XML-RPC with Perl and xinetd - don't try this in a hostile environment

[2011-08-05] How to join Unix-like systems to an Active Directory

[2011-08-01] Some thoughts about splice() on Linux

[2011-07-31] Updated after 4 years: fproxy 0.4 comes with a bugfix and an enhanced log format

[2011-07-07] Uploaded a CORBA howto which shows my experience with several ORBs

[2011-03-21] Got some strange error like input must be 8 bytes long at /usr/local/lib/perl5/site_perl/5.10.1/mach/Crypt/DES.pm line 59 with Perl's Net::SSH::Perl? Try my patch for DES.pm. It inserts a utf8::downgrade($data); in encrypt() and decrypt() along with a use utf8;.

[2011-03-21] I wrote a small server in C# that creates a thread for each connection. It looks like this:

TcpClient client = tcpListener.AcceptTcpClient();
MyHandler handler = new MyHandler(client);
Thread thread = new Thread(handler.Run);
thread.IsBackground = true;
thread.Start();
After it served some clients, I noticed in the Task Manager that it consumes several hundreds of RAM, holds thousands of handles, but only runs 15 threads. The Process Explorer revealed that these handles are thread handles. Turns out that you have to call thread.Abort() explicitly to get rid of those handles. So I added the following:
foreach (Thread t in allThreads) {
  if (!t.IsAlive) {
    t.Abort();
  }
}
This is different from Java where a threads terminates as soon as its run() method returns. Of course I could use System.Threading.ThreadPool. But then I don't know which threads are currently running unless I track each instance of MyHandler. For that I would have to extend the MyHandler class:
class MyHandler {
  private bool _running = true;

  public void Run() {
    try {
      ...
    } finally {
      _running = false;
    }
  }

  public bool Running { get { return _running; } }
}
I don't like both of these approaches.

[2011-01-30] On my workstation at home I sometimes use qemu-kvm to start a virtualized Windows XP. For my personal reference I uploaded my qemu-wxp.sh and tun.sh shell scripts. Put the later one in /usr/local/libexec.

[2011-01-06] updated my short howto on IPv6, added a section called Impact on home networks

[2011-01-02] short howto on IPv6

[2011-01-01] IPv6 is here! See http://ipv6.ogris.de. Same stuff, different protocol. Magic!

[2010-11-28] With FreeBSD 8.1 running in VirtualBox, Jonsen Yang discovered that my patch for CARP IP loadbalancing panics the kernel. So I setup a VirtualBox on my Mac Mini, recompiled the kernel with options WITNESS, and encountered some non-sleepable locks being held. Here is an adjusted patch.

[2010-11-11] smtppipe version 0.21 fixes an embarrassing bug

[2010-11-01] uploaded two patches against Libidn 1.16 to support the German ligature ß (sharp s, unicode codepoint 0x00df) as part of IDNA2008 or IDNA-bis.
Put both files into /usr/ports/dns/libidn/files on your FreeBSD box and do a portupgrade -f libidn

[2010-10-30]

[2010-09-20] Note to self:

old news


Valid HTML 4.01 Strict! Valid CSS! Viewable With Any Browser Vim FreeBSD