Saturday, May 5, 2012

BEWARE of asterisk!

Some sharing. 

I was about to replace certain string in a specific file in all directories in a AIX machine. We have a Perl script file to perform this action. All this while it has been running fine but not today.

After some troubleshooting i quickly discovered it is due to: the string that we are going to replace contains an asterisk(*) which causes the whole script not working properly.

Very shortly my colleague found a solution, which is to 'escape' the asterisk(*) symbol by putting a backslash(\) symbol right before the asterisk(*) symbol so that when the script is running it will escape the *

Before (this will give error)
perl -p -i -e 's/12345*9/abcde/g' `find ./ -name somefile

After (this will solve the problem)
perl -p -i -e 's/12345\*9/abcde/g' `find ./ -name somefile

Sunday, March 11, 2012

Strange issue on JAR???

Wondering if anyone out there experience this before.

I have this program calling a external web service. So i built the client classes to consume it.

After some time the web service contract/schema had changed, i needed to either change the content of the classes or rebuild the client classes again. Usually i prefer a rebuild as this will be done by the generator with very minimum effort.

So i rebuilt the client classes. Everything worked fine in the Staging/Testing environment until the production rollout day.

Exactly the same JAR, but not working. I drilled down into which line that caused the havoc. Strange thing is that the program was not able to read the particular web service client classes. I then checked if the client classes were included in the JAR and they were there! Their were at the right path too! What happened?

No choice i needed to get this done asap. I moved these classes from one folder to another folder, ofcuz by using the refactor function. This was just a blind hit and guess what, it works!!!

This may give you an idea the next time you are facing exactly the same weird issue!

Best way to remove MQRFH Header (WMB)

I have tried many approaches just to achieve this. My goodness each approach is so unstable. It may work in environment A but then somehow does not work in environment B.

With the help from a more experienced colleague, the optimum solution for that seems to be:

1) Set the Message Domain as XMLNSC for MQInput Node.
2) Create a Compute Node then write your ESQL as follows:
CALL CopyEntireMessage();
SET OutputRoot.MQRFH2 = null;

Done! It's never been so easy. Fuck i wasted much time in this! Should have known this colleague long time back.