Sun Java JDK 1.6 update 16 on CentOS 5.3

Today I needed to install Sun Java SDK 1.6 on CentOS 5.3. Unfortunately, Sun Java does not appear to be packaged in CentOS. Instead, there are instructions at on how to install Sun Java using a “helper” SRPM (source RPM) package from the JPackage Project. The latest generic JPackage SRPM is for 1.6 update 11 and it does not work for update 16 without minor modifications.

I created a new version for 1.6 update 16 by extracting the old version using rpm2cpio, modifying the spec file and recreating the SRPM using rpmbuild. I tested the package on 32-bit CentOS 5.3 and it worked without problems.

The SRPM for Sun Java 1.6 update 16 is available here. It works with the instructions mentioned in the url in the beginning of this posting.

Updated Mantis driver patch for the latest v4l-dvb

I ported Manu Abraham’s Mantis driver from his tree (revision 3c897a20ff8b) to the latest v4l-dvb tree (revision 28f8b0ebd224). I also ported the previous remote control support as an additional patch. The Mantis driver patch for the v4l-dvb tree is available here and the additional remote control patch is available here. Since I only have Mantis VP-2033, I don’t know whether the support for other Mantis cards work. At least mine works fine.

Manu has done some big changes to the Mantis driver since the revision 3c897a20ff8b, but I could not view any channels with those changes. Until it gets fixed, I’ll stick to the revision 3c897a20ff8b.

How to compile community edition of Ingres 9.2 on 64-bit openSUSE 11.1

Thanks to Dejan Lekic (Deyan) on #ingres for inspiring me to write this short “how to” on building the community edition of Ingres 9.2 on 64-bit openSUSE 11.1. Currently (2009-07-24) there is no 64-bit Linux binaries of the community edition of Ingres 9.2 available at the Ingres ESD site. Because of this, the only way to run the community edition of 64-bit Ingres version 9.2 on Linux is to build it by yourself. In this posting I shortly describe the steps to get it built on 64-bit openSUSE 11.1.

Read more »

Tips for comparing Ingres patch bug fixes lists

I like to keep Ingres installations up to date by upgrading them occasionally by using the latest patches from ESD. Since I am a responsible DBA, I always read through the list of fixed bugs (“Bugs addressed with this patch” section in the readme file). Some bug fixes even need special attention (marked with “ATTENTION”), so it would be careless not to read the readme file, which is included with the patch.

Ingres patches are cumulative, meaning that each patch also contain the fixes included in the previous patches. Since the list of fixed bugs is ordered by bug numbers and not chronologically, it’s pretty hard to figure what have been fixed since previous installed patch. For example there’s 145 new bug fixes between patches 13322 and 13435.

Here’s a simple tip, how to compare two readme files on Linux using command line tools. First, save the readme files on disk with names p13322.html and p13435.html. Then run

grep "Bug " p13322.html | perl -p -e 's/<.*?>//g' > p13322.txt
grep "Bug " p13435.html | perl -p -e 's/<.*?>//g' > p13435.txt

Now you have a simple listing of bugs fixed in the patches. You can then use diff to compare, what have been fixed between 13322 and 13435:

diff -u p13322.txt p13435.txt | grep "^+" | less

The best thing would be, if Ingres Co. provided their customers a simple web application, which could be used to check these. Until that… use this tip or propose a better one!

Perl script for listing open user sessions in Ingres

I wrote a pretty simple Perl script which outputs a list of open user sessions in an Ingres installation (remote or local). This information can also be retrieved using Ingres utilities iinamu and iimonitor, but not in a very straigth-forward fashion. The script is also a decent example how to access an Ingres database using Perl scripting language and Database Interface (DBI).

The script uses DBD-Ingres driver to access the imadb database, which is part of  the Ingres Management Architecture (IMA). The script retrieves the necessary data from the imadb and then prints it. A short, concise list of open sessions is printed first with a more verbose listing (“iimonitor show user sessions formatted” alike) following.

The version 1.0 of the script is available at The requirements for running the script are listed in the beginning of the script.

Revised VDR 1.6.0-2 installation

Since Debian Lenny is about to be released this weekend, I decided to upgrade my VDR box from Debian Etch to the upcoming Lenny. Instead of just doing dist-upgrade, I decided to do a complete reinstall from scratch including upgrading some of the components used by my VDR setup.

Now my current setup is:

  • FFmpeg revision 17245
  • DirectFB 1.0.1
  • Xinelib
  • VDR 1.6.0-2, with the following plugins
  • xineliboutput 1.0.4
  • epgsearch 0.9.24
  • femon 1.6.6
  • remote 0.4.0
  • skinsoppalusikka 1.6.3
  • streamdev 0.3.4
  • sc 0.9.1

I also upgraded to the latest v4l-dvb tree for which I ported the Mantis driver by Manu Abraham.

Calling NetBeans 6.1′s SecureCalculatorApp example web service using WSO2 WSF/PHP

I have been working to get WSO2 WSF/PHP 2.0.0 to work with the SecureCalculatorApp example web service provided with NetBeans 6.1. I want to be able to call a secure web service created with NetBeans 6.1′s user interface from an application written in PHP. SecureCalculatorApp example provides a really good starting point for a simple interoperability test.

Read more »

Glassfish and Web service request dumping for debugging

I have recently been working to get some web services to run on Glassfish, which uses Metro. The web services need to be called from different clients (some not even written in Java) and unfortunately not all clients work as documented. Sometimes it’s because of incorrect configuration, sometimes because of interoperability problems etc.

Comparing the requests sent by different clients makes it easier to debug the reasons for the problems. Since not all clients allow dumping the created requests upon sending, it would be nice if it was possible to ask Metro to do it. Fortunately, this is possible through configuration. For doing this, Arun Gupta describes the possible properties in his blog.

The easiest way is to add parameters

to your Glassfish domain’s domain.xml as jvm-options elements.

Upgraded VDR to version 1.6.0-2

I have recently upgraded my VDR setup with more recent software and plugin versions! My current setup consists of

  • FFmpeg revision 15245
  • DirectFB 1.0.1
  • Xinelib 1.1.15
  • VDR 1.6.0-2, with the following plugins
  • xineliboutput 1.0.1
  • epgsearch 0.9.24
  • remote 0.4.0
  • skinsoppalusikka 1.6.1
  • streamdev 0.3.4
  • sc 0.9.0

I’m using Matrox G550 and its tv-output to display the video image on my old 28″ analog television.

The actual reason for the upgrade was to get a recent FFmpeg version to play videos using xineliboutput’s media player. Everything went well except that for some reason, there’s a problem with the OSD when playing videos using software scaling (hardware scaling made OSD look awful). I posted a question about the problem on the VDR mailing list to see, if anyone else has had this problem. It seems to be some kind of initialization problem during playback, but I have not yet been able to find out the cause for it.

For those who don’t know what VDR is: It can be used to make a computer to function as a video disk recorder (article in Wikipedia).

Ingres: Tables and data files

I recently needed to know how much disk space each table in a Ingres 2006 R2 database took. Any Ingres DBA knows that by default Ingres stores the data under location II_DATABASE, but the filenames used for the data files are not too informative. Fortunately it is possible to check the filename of a table using the following query in the corresponding database:

SELECT file_name, file_ext FROM iifile_info WHERE table_name = 'mytable';

The file_name column contains the name of the file for the table without extension and the column file_ext contains the extension. If the database uses multiple locations, it is also necessary to check the value of the column ‘location’, which will tell you the location of the file.

But this is not all. Ingres also stores all secondary indexes in separate files. It is also possible to see, using the table iifile_info, which index is stored in which file. This way it is even possible to hunt down indices that require more disk space than you expected.