Posts

Development: Empty strings in Oracle and MySQL

Today I was testing some code I've written, on a client's QA environment. These tests revealed, that if your tests succeed locally on a MySQL server environment this doesn't necessarily mean the tests will succeed on an Oracle server. I was having problems with Oracle's interpretation of an empty string. It seems that if you're executing the following statement: insert into MyTable (c1,c2) values ('val1',''); this is the same as executing: insert into MyTable (c1,c2) values ('val1',null); IMHO this is plain wrong. '' does not equal NULL from a programmer's point of view. Inserting an empty string (or '' ) can be convenient to make your prepared statements easier. Suppose, in the above example, c2 is an optional parameter. When c2 is not available you insert '' . In this case a prepared statement to select records from MyTable could be: select * from MyTable where c1 = ? and c2 = ? After substitution the resulting...

Linux: Fixing authentication in Apache 2, after doing an upgrade

This is the second post on upgrading my Debian box to testing. Obviously everything was b0rken, even authentication mechanisms put in place for Apache2. Apache2 is using the local LDAP server for authenticating users on a subversion repository. Apparently, the people of Apache did some "refactoring" on the naming of their authentication modules. They renamed auth_ldap to authnz_ldap . Enabling this module instead of the outdated on, did not do the trick. I got the following error instead: [Thu Nov 02 19:07:26 2006] [crit] [client] configuration error: couldn't check user. No user file?: /svn/configs/!svn/act/ed8028d3-8254-bd4c-bc94-c3b93f8b97bb [Thu Nov 02 19:07:44 2006] [crit] [client] configuration error: couldn't check user. No user file?: /svn/configs/!svn/act/b2296e68-a114-8e49-aea6-bebfe78947bf [Thu Nov 02 19:14:57 2006] [notice] caught SIGTERM, shutting down I did some more reading and found this presentation very useful: TH21 - Using LDAP Authentication i...

Development: Convert your code to html

If you want to cut and paste code into an html page, you will find the following tools very handy: For Visual Studio (2003/2005): Copy Source As Html For Eclipse: Java 2 Html Makes blogging and publishing code easier ;)

Linux: Upgrading Debian woes (1)

So I decided to give my server, running Debian testing, an upgrade. Normally this works like a breeze. I have never encountered any problems during an upgrade, even though I am following testing. This time was different and things were very b0rken. This is about fixing my first issue: LDAP + libnss + udev. LDAP During the upgrade, the script didn't manage to create a decent backup of the running LDAP server. This LDAP is serving users for my home network and is also the backend for my Samba domain controller. So the LDAP was very b0rken. The only fix I could see was repopulating the entire tree, starting from a fresh, empty LDAP. To help me with this, I found this a very interesting and thorough guide. Since the LDAP is also my Samba backend I am using smbldap-tools to maintain users and such. So repopulating the LDAP wasn't such a big task. Lucky. udev What is udev? udev works entirely in userspace, using hotplug events the kernel sends whenever a device is added or removed f...

Linux: Problems in Ubuntu, icons do not appear when inserting removable device 2 (the solution!)

Seems I was still having problems with devices not being automounted. Very frustrating knowing "it should" automount plugged in devices ... but it just doesn't. So tonight I decided to google some more and finally I found the solution. I had to put session optional pam_foreground.so Near the end of /etc/pam.d/common-session . Since I am authenticating users against an LDAP, I have a sneaky suspicion why my problem occured: - step 1. Installed Hoary a long time ago - step 2. Make sure Hoary is able to talk to an LDAP to retrieve its users - step 3. Upgrade to Breezy (also long time ago). During the upgrade the installer asks: "Dude! someone changed /etc/pam.d/common.session do you want to overwrite the file with the maintainer's version?" Hell no ... I spent a reasonable amount of time configuring pam.d to use pam_ldap (btw: this is an interesting read on how to setup LDAP and stuff) ... and that's when all my problems started. - step 4. Upgrade to Da...

Solaris: Change action behind browser icon in CDE

So I inherited a Sun Enterprise 450, dual CPU, 2GB RAM and a dozen of disks. I’ve been busy wiping disks on this machine and on another Sun Enterprise 250 using this link . Next, I’ve been installing Solaris 10, which was a pretty “next -> next -> finish” install. I’m not running Gnome, because I just love the CDE environment (don’t ask why, I’m a geek). I decided not to install the mozilla browser provided with the set of installation CD-ROMs, instead I used the software service from blastwave to install firefox. It wasn’t very easy to make CDE look for firefox instead of mozilla, when pressing the “world” icon in the front panel. Ok, I admit, after Reading The Funky Advanced CDE Guide, I found all I needed to do is to tweak sdtwebclient file, found in /usr/dt/bin . Change the follwing lines: PATH=/usr/bin:${PATH}:/usr/sfw/bin:/opt/NSCPcom COMMAND=`basename $0` DEFAULT_BROWSER_LIST="mozilla netscape sun_netscape netscape6" To: PATH=/usr/bin:${PATH}:/usr/sfw/bin:/opt/...

Linux: Testing your iptables firewall

I have an old Pentium II running Debian Testing to protect my internal network from the Internet. Yesterday, I decided to test this firewall using a site that performs a portscan. I came accross http://www.testmyfirewall.com/ that did exactly what I wanted. This site claimed my internal address (the address of the computer sitting behind the firewall) was exposed to the outside. Yeah, right. After some digging I came accross this post from a guy having the same "problem". It seems that testmyfirewall starts an applet displaying the address of the computer running the applet, which is indeed the one sitting behind the firewall. So this site does not test your firewall, it only tests your browser which is a different thing. Just be aware of sites that claim to test your firewall, they're not allways right.

Java: Extending classpath in Tomcat 5.5.x

According to the documentation you can add locations/jars to your classpath using the CLASSPATH system variable in windows. I have discovered another way to do this. Just open the catalina.properties file in the conf directory. This should read: shared.loader=${catalina.base}/shared/classes,${catalina.base}/shared/lib/*.jar Changing the line to: shared.loader=${catalina.base}/shared/classes,${catalina.base}/shared/lib/*.jar,c:/test/foo.jar Will extend the shared classpath with foo.jar .

Biztalk 2004: Issue you might encounter when you refactor

So I decided to split a project that contained 4 orchestration. I now have - 1 project containing a receive pipeline - 4 other projects containing the orchestrations, referencing the above project Apart from splitting the project, I decided to clean up the namespaces for the schema’s and property schema files. “Easy enough”, I thought, “Edit the schemas and property schemas using notepad or some other XML editor and we’re done”. Better think again. When deploying the “split” DLLs I encountered the following error in our test environment: errors: Property "ns0:Something" (msgType="http://foo#bar ") not found in Configuration database. The solution for this problem is not to edit your property schema files, but generate them again, if you’re refactoring namespaces or types. Reason for this is the fact that properties have their GUIDs and these have to be unique. Should you change the namespace and not the GUID for this property, uniqueness is not maintained. So, in sh...

Linux: Problems in Ubuntu, icons do not appear when inserting removable device

In my setup, users on my Ubuntu box are authenticated against an LDAP running on Debian. This is working very nicely, but since I upgraded from Hoary to Breezy, my icons for auto-mounted removable devices were not showing any more. This is, of course, very annoying. After googling a bit, I came accross this bug. But none of the suggestions worked for me. So I decided to create a real local user (i.e. a user not available in the LDAP) and see if this one still had the icons showing when auto-mounting happens. It did ;) So I guessed the local user was member of some local groups, my LDAP user wasn't member of. My guess was correct. Seems that the LDAP users have to be member of the local “users” group as well, which was the one I missed out. Below is the output of the id command for an LDAP user: uid=1002(ldapuser) gid=513(Domain Users) groups=24(cdrom),25(floppy),29(audio),46(plugdev),100(users),109(admin),513(Domain Users)

Devlopment: Hungarian Notation Sucks ...

Don't you just hate people using the so called Hungarian Notation in their C#/Java code. Well, I do. Here's an interesting read on this matter.

Linux: New chapter in DGP

Dr. Salus is back from holiday and released a new chapter in his series on "The Daemon, the GNU and the Penguin". Read it here .

Biztalk 2004: Per-Instance pipeling - Tool

Just found this interesting article . For each pipeline (Receive Locations and Send Ports each have a Receive and Send Pipeline respectively, but if a port uses a Request-Response message exchange pattern it will also have a corresponding pipeline for the other direction, so the Receive Port will have a Send Pipeline and the Send Port will have a Receive Pipeline) the configuration database holds another piece of configuration. In the ExplorerOM this can be found as the ReceivePipelineData (on the ReceiveLocation or SendPort object) or SendPipelineData (on the SendPort or ReceivePort object) property. This "data" is generally empty in most cases, but can be an XML document that overrides some or all of the properties of the components configured in the pipeline (note that the XML cannot add any addtional pipeline components)

Introduction ... better late than never ...

I've been running this blog for a few months now, without proper introduction. So now, I thougth, the time is ripe. My real name is Kenneth. I've been dragging the kennywest alias around since my first hotmail acount (which was also my first real e-mail address), which is why I used this alias for my blog as well. I'm a consultant implementing architectures/solutions for B2B and A2A scenario's. For the moment I am using Biztalk to do this. I've also used plain Java, Seebeyond's e*Gate and Crossworlds. Although I am working with Biztalk and .NET . I am not a, how should I put it, Microsoft supporter. I'm more into Open Source and Linux or UNIX. I first heard about linux 8 or 9 years ago. At that time we were doing labs on a DOS box telnetting to a Linux server to learn about a database called PostgreSQL. A friend of mine had a 6 CD box containing RedHat, SuSE and Slackware distros. He told me he'd installed it and loved it very much. I decided to take it ...

Biztalk 2004: Mime revisited ...

I had to deploy a flow in production today that has been working fine for 2 months in our test environment. The flow receives a mail from an IIS maildrop folder, gets all attachments and sends them to an orchestration. Mails are in .eml format which is actually a mime message following the RFC2557 specification. Below you can find a sample file that enters Biztalk: From: a@a.com To: b@b.com Subject: hello world Date: Mon, 14 Nov 2005 23:31:17 -0000 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----_=_NextPart_000_01C5E973.82A5C520" ------_=_NextPart_000_01C5E973.82A5C520 Content-Type: multipart/alternative; boundary= "----_=_NextPart_001_01C5E973.82A5C520" ------_=_NextPart_001_01C5E973.82A5C520 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit hello world, content ------_=_NextPart_001_01C5E973.82A5C520 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: 7bit <HTML> <HEAD...

Linux: Problems with Ubuntu, X and NVidia

When I started my computer the other day, X was not starting. Nothing happened. Just a cold, black screen. I had no idea what triggered this, so I decided to reinstall the NVIDIA driver for my graphics card. All went well and X was working again. After reboot, same problem. After googling for a while, I found this discussion. Seems the Debian's/Ubuntu's own nvidia runlevel scripts are cleaning up modules they shouldn't. So the solution is to uninstall all nvidia stuf you installed from Debian/Ubuntu (with --purge option), reinstall the NVIDIA driver from the official website and switch to runlevel 2 to see the result. Aah, don't you just love if everything falls back into place ;)

Visual Studio .NET 2003: resx files ...

I have a project containing custom pipeline components. Each component has its own .resx -file. For some reason the .resx -file for ComponentA was included in the project as a seperate file and the .resx -file for ComponentB was only visible if you clicked the [+] -sign left of my component. I had no idea why there was a difference between the visualization for both .resx -files. When I edited the .csproj -file, I saw why it happened: <File RelPath = "ComponentB.resx" DependentUpon = "ComponentB.cs" BuildAction = "EmbeddedResource" /> If you remove the DependentUpon property, the file becomes visable in your project. Dunno how to do it without editing the project file though ...

Biztalk 2006 on Linux ... yes, it's possible (2)

Image
So I finally installed the second Biztalk 2006 beta on my Ubuntu Linux box. My machine is a Pavilion 5080.be with 1GB of RAM. I thought running VMWare and Windows 2003 Server would really slow the machine down ... but it didn't. In the above screenshot you can see my first flow (ProcessOrder) I've developed in Biztalk 2006. Let's start doing some more advanced things ;)

Biztalk 2006 on Linux ... yes, it's possible (1)

I'm currently running Ubuntu Hoary on a custom 2.6.13 kernel. I will be using this to run Windows 2003 Server and Biztalk 2006. To be able to run Windows on Linux (Ubuntu), you'll need VMWare . Apparently the most recent version (5) is having problems on kernels later than 2.6.11. The VMWare network modules causes the network to lock up from time to time. You can read all about it and how to solve it here . Right now, I've managed to install 2003 Server, SQL Server 2000, Analysis services and Visual Studio 2005 beta. Later this week, I'll be installing the second Biztalk 2006 beta. Very exciting stuff ...

Excel ... aaaargh ...

I am working for a client that is using a lot of automated B2B scenarios. These include, next to normal EDI (Edifact and X12), ordering by mail. My client’s client sends orders as mail attachments. This has been working for quite some time, until recently, I got a phone call. Apparently, something was wrong in _my_ code because the requested delivery date was wrong by a day. The requested delivery date is, well, quite special. It is an integer indicating the number of days that passed since 01/01/1900. “Why?” you might ask. No idea. But hey, no problem, I can count. So this is the code that was parsing the “number of days passed since 01/01/1900” to a real date:             DateTime baseDate = DateTime.ParseExact("01011900", "ddMMyyyy", null );             int days = int .Parse(numDays);             return baseDate.AddDays(days - 1).ToString("yyyyMMdd"...