- Embedded SQL for C.
Administrating and Developing with Informix
So as I'm messing around with the Informix Ultimate-C edition for Mac, I also am looking at CSDK 3.50 too. And while there is nothing wrong with the product, it does make me wonder what else a Developer might like to see with the product. In out (C)lient (S)oftware (D)evelopment (K)it we have the following:
If you happen to be on a platform other than Mac, you also get JDBC.
What else would you like to see in a CSDK bundle? Maybe I'm getting spoiled but looking at Microsoft and Apple, if you get an SDK you actually get a a real toolkit, something that also helps you build rapid prototypes, or even full fledged applications. I honestly think that IBM has a solution there already too. The free version is called Data Studio, and with just a little tweaking IMHO, could be the exact gui programming tool I see missing from the CSDK bundle. Even then though, I think all we would see on Unix platforms would be JCC, JDBC, ESQL/C and ODBC, and the question then is "is that enough, or do you want more?"
Would PHP, Ruby, and perl be enough? What else could/should a developer want for a CSDK bundle? I want to hear you thoughts on the matter.
Based on support calls there is a fairly high demand for Informix integration with Pluggable Authentication Modules (PAM). When it comes to worked examples there is somewhat of a dearth. It is therefore refreshing to see this new developerWorks article by Manoj Mohan, Ramesh Gopal Srinivasan, Thamizhchelvan A. Anbalagan: Enhance Informix Dynamic Server security using the Pluggable Authentication Module framework and JDBC - Increased authentication flexibility for IDS.
The article includes a working example PAM module written in C with Solaris 32 compilation instructions and configuration file. Next is a an example JAVA callback module using JDBC. The Informix JDBC driver has supported PAM since 2.21.JC5. (Incidentally the JDBC version coming out with Cheetah will be 3.10.)
At one point the article states:
Note that IDS also supports LDAP on Windows which is set up and configured just like PAM - look in %INFORMIXDIR%\demo\authentication for an example. The IDS documentation for LDAP on Windows is here: http://publib.boulder.ibm.com/infocenter/idshelp/v10/index.jsp?topic=/com.ibm.admin.doc/admin219.htm.[Read More]
There is a trend within IBM to move to using DVD as the standard software install media.
There has been talk about doing this within Informix before, partly because we're close to the maximum CD size on some platforms (where more than one copy of Java Runtime needs to be on the CD for example).
One advantage moving to DVD would provide is the ability to bundle additional components, for example Data Server Driver, which provides the Comment Client API's to connect to IDS via the DRDA protocol. Currently if you want components like this you would have to download them separately.
Once concern that has been raised is could this lead to bloating of IDS? E.g. if we're not so concerned about space might the install footprint go up? We would certainly have to be very careful about what is installed by default if we were to add components to the bundle.
Would anyone be inconvenienced if the IDS install media was no longer available on CD? If you see a problem with that please leave a comment or contact me. I am also curious as to what percentage of people download all their products electronically.[Read More]
For the past 6 months I've been tinkering with a chatbot that provides an instant messaging interface to our product defect database via SameTime. Development consists of sporadically adding commands in my spare time to meet various user requirements like fuzzy search, subscribing to nightly bug reports, reporting defects by owner, submitter, severity, etc. One of these needs is to expand coverage to other databases used by tech support, for example those used to track customer calls and internal technical discussions.
Some of the databases are difficult for mere mortals to obtain direct access to, and can only be publicly accessed by logging on to the official internal web interface. These restrictions led me to experiment with Jakarta Commons HttpClient as a means to retrieve and process information from secure websites. HttpClient is straightforward to use and has all the functionality required for this purpose. Once the basic infrastructure was in place it was easy to add chatbot commands that retrieve information from any websites. One of my first experiments was to add a "whatis" command to the bot in order to provide an interface to Wikipedia.
The whatis program
The whatis program is a simple command line example to demonstrate using HttpClient to look up Wikipedia articles and return the information as text. It retrieves the raw HTML from the website and does a little processing to extract the main text of the article and filter out the HTML. To build and run it you need the following Jakarta Commons libraries in your CLASSPATH: HttpClient, logging, codec.
// wiki.java - a simple Apache Jakarta Commons HttpClient demo to// download articles from Wikipedia.org
This example calls getResponseBodyAsString to get the requested web page as a string. It would be more efficient and predictable to write your program around the getResponseBodyAsStream method, or to limit the downloaded size.[Read More]
Well a crazy workday kept me from blogging yesterday. I was , however, reminded of an important piece to trouble shooting applications, even database instances. What was that piece? Never get hung up on a single test box, or a single test instance. The reason why may be obvious, but the problem is that if you get hung up on a single instance or box , you can miss the actual problem.
Take yesterday, for example, I was helping a customer with a box that recently migrated to 11.50.FC5 , their app was crashing every time the engine came on-line, and in the process was crashing the Informix engine as well. Now as a support engineer you tend to focus on the assertion failure file and shared memory dump , just like an application developer would focus on debug logs and a core file. Well to make a long story short, after trying to identify the problem, I finally asked them to test on a separate box that had 11.50.FC5, if they had one. They did have another test box, and tested their application which did not crash and worked as expected. It turned out there was no problem with Informix, or the application, but the original test box had significant issues all its own, due to an unforseen accident that both the developers and myself were not originally aware of.
It's so easy these days, in this "whose to blame" society that we forget sometimes, that conditions exist where no one is to blame. Accidents happen, and it's what we do to idenify and correct the issue, accidental or not, that helps make our application, and ourselves , successful.
Hi all, another PSA today.
Still this one is pretty cool, because the lab will be talking about application development with Data Studio and Informix. Even if you don't use Data Studio, and even if you don't plan to, I highly recommend attending. The more interest a call like this generates, the more calls like this (i.e. Application Development) will occur.
So I ran into an interesting issue last week. A customer couldn't alter a table. Non-Exclusive access. Sounds pretty normal right? I mean after all it's not like a DBA doesn't see this fairly often.
The Normal routine is for a DBA to run the following:
However what happens when you still get non-exclusive access after doing the above?
You need to have two considerations then. #1, check for referential integrity issues, and #2 look for open cursors?
RI can be checked using dbaccess, or dbschema, but how do you check open cursors?
The easiest way is with
onstat -g opn
In the situation I wan into, we had several open cursors with transactions running against the child table holding RI.
This allowed us to identify where applications were forgetting to close the cursors. As soon as those cursors were closed, the alter table was successful.
From a development standpoint, this brings up a salient point to always remember, close your cursors.
For more info on onstat -g opn
This week I'm hanging around San Francisco, working at the Macworld Expo. IBM has pedestals for Informix, Rational Buildforge and Lotus Notes / Symphony (there is an announcement this week for Mac versions of the Lotus products integrated with Google and other calendars).
Here is a view from the Expo floor..
Venu, PJ and Terri trying not to scare people away from the Informix booth
Recently IBM has added a 32-bit Mac version of the Informix Client SDK (useful for Ruby developers) and made improvements to the IDS installer look and feel on Mac OS. We have a few demo's running this week.. a FileMaker application using an Informix backend, a high availability demo showing Mac based Mach11 and ER systems handling failover scenarios, an IDS virtual appliance guest OS running under VMWare Fusion acting as a client and using OpenAdmin Tool to administer IDS running on a Mac, and a Cocoa application written in Objective C integrated with ODBC which uses the Basic Text Search Blade to do freeform text searches on an Informix database.
The high availability theme will be continued on Friday at 1pm when Carlton Doe presents a session entitled Building Enterprise-class and Virtually Fail-safe Database Services on the Mac.
Certain people have accused me of being a PC and not a Mac. Maybe, but after spending some time tinkering with Xcode and seeing how fast IDS runs on it, the platform is starting to grow on me.[Read More]
How do you use the Microsoft Win32 RtlVirtualUnwind() and RtlLookupFunctionEntry() functions to unwind a stack in a 64 bit Windows program?
These functions require different arguments between 32 and 64 bit Windows, and usage examples/documentation seem a bit thin on the ground. Another potential pitfall is that there appear to be some changes in exception handling documentation between Windows Server 2003 SP1 and R2. Here's an example WalkStack() function for AMD64 (also known as x86_64) shown in the context of a C program which walks its stack and prints frame information. Comments welcome.
There have been a few new Informix developworks and support articles in the last month or three. Here are my favourites:
Just as an FYI OAT 2.28 is now available check out the details at:
As a quick aside, OAT 2.28 is still not fully function on the Mac at this time. Hoping to see the Mac fix for the next release.
So the next question we have , now we know why we encrypt, is what to encrypt.
Ultimately we have only two areas to encrypt. The first area is encrypting our network connection, and the data that goes against them. The second is encrypting the actual data when it is "at rest", which is an industry term indicating encrypting the data where it had permanent or near permanent storage.
Different Compliance standards requests different things. Some only care about the storage, others only the "in flight", and some require both. You have to know what your requirements are if you only want to do some encryption, versus going wholesale.
Important to remember is that any encryption requires a performance cost. Some less than others, but a cost nonetheless.
My next post on this comment will be the network options for encryption.
The IDS 11.50.xC5 virtual appliance has been available for a while now, but since we've been changing the download mechanism to enable a quicker turnaround. Now the virtual appliance is available via direct FixCentral links..
Below are the direct links associated with each of the Linux 32 and 64 bit virtual appliance packages (Workstation tgz/exe and ESX) - make sure you download the right one..
Desktop VMware virtual appliances (for VMware Workstation, Server, Player, Fusion)
32-bit Gzipped Tar (.tgz for any platform)::
32-bit self-extracting Executable (.exe for Windows):
64-bit Gzipped Tar (.tgz for any platform):
64-bit self-extracting Executable (.exe for Windows):
VMware ESX format
So I got back from this years IIUG. It was a blast, as usual. The IIUG is making efforts to increase the number of presentations that are applicable to developers. This year it included presentations on Database programming with PHP, a section on open source coding with informix, programming with drupal, and then I did a best practices presentation for application developers.
I don't know when the IIUG will make the presentations available, but you do need to be a member to get them, and the process is simple, and free. Just go over to
And sign up.
Great news for people who are bored of reading insipid mediocre blogs like this one. Three new Informix blogs have sprung up on developerWorks for our reading pleasure..
Fred Ho leads the IDS Competitive Technologies team, and despite his self-effacing first post has a wealth of experience and expertise, particularly in areas such as data warehousing and business intelligence. Fred will be enlightening us with more of what the competitive team gets up to in subsequent posts.
Keshav is the Informix architect for SQL and Optimizer and is responsible for designing many of the SQL and performance features and enhancements we've seen in recent versions of IDS. He also has interests in diverse areas such as IBM Smart Market and cloud computing. In his first post he has found an interview with Roger Sippl, venture capitalist and founder of Informix.
Jonathan Leffler's is our security architect, and the guy I tend to go to when I have obscure questions on SQL syntax and 4GL. His new blog: Ruminations on Informix begins nice and technical with the question of where to put $INFORMIXDIR.
Welcome to developerWorks!