Google search bar

December 24, 2008

Updating RubyGems broke the gem command

On a windows box where I have ruby installed at "C:\Program Files\ruby\" rather than "C:\ruby\".

I ran:
gem update --system

The result was that the next time I tried to execute the gem command I got the following:

C:\>gem
The filename, directory name, or volume label syntax is incorrect.


I found that the gem.bat file had been changed and there was an extra double-quote on two lines.

@"ruby.exe"" "c:/Program Files/ruby/bin/gem" %1 %2 %3 %4 %5 %6 %7 %8 %9

And

@"ruby.exe"" "%~dpn0" %*

In both these cases, where there were two juxtaposed double-quotes (two double-quotes in a row), I had to remove one of the double quotes. Yielding:

@"ruby.exe" "c:/Program Files/ruby/bin/gem" %1 %2 %3 %4 %5 %6 %7 %8 %9

And

@"ruby.exe" "%~dpn0" %*


Problem was solved. I found a comment on the RubyGems forum that agreed with my fix.

December 09, 2008

Using patches to manage bug change-sets

I have just discovered that you can manage sets of changes in Eclipse by using patches.

In the Package Explorer, select Team | Create Patch...
Follow wizard to export the patch file to the clipboard, the filesystem or the workspace.

You can then Override and Update to return the workspace to a state corresponding to the CVS repository.

Later, you can Apply Patch.. from the Team submenu, select the patch file you previously exported. Voila, your changes are back.

October 14, 2008

Identifying the source of a java Class

My coworker, Mike, shared this with me. You can find out what jar a class is loaded from.
Class.forName("com.foo.MyClass")
.getProtectionDomain().getCodeSource()

October 13, 2008

Setting up Websphere for a remote debugger

Here are a couple of references for configuring Websphere for use with a remote debugger:

Jacoozi: Remote Debugging with Eclipse
IBM Documentation -- another method, i have not tried.

Basically:

In the websphere administration console, go to a server's configuration and set it up.

October 07, 2008

Getting DB2 Error Code information

There is a way to get DB2 error information if you have DB2 installed.

Start the DB2 Command Line Processor (CLP).

For SQLCODE -551 you type: "? sql551"

For SQLSTATE 56098: "? 56098"

May 27, 2008

Bugzilla Comments are mostly plain text, so don't use HTML

Today I tried to get fancy using HTML in a bugzilla.

I wanted to do something like

<pre>
... some code ...
</pre>

for the sake of readability.

Well, I found out that doing so will just result in those tags showing up in the comment.

But bugzilla will try to create some hyperlinks for things in comments. See the Hints and Tips page of the bugzilla manual for more information.

March 19, 2008

ILog JRules BOM Update is trying to remove classes that I need!

Periodically, I need to update the JRules Execution Object Model and then update entries in the Business Object Model, accordingly.

Yesterday, when I did my normal procedure for this, the Update BOM option on a BOM Entry tried to remove a bunch of classes that I needed in the BOM.

I didn't know why.  So I experimented.  I created a brand new BOM Entry and tried to add the classes that JRules wanted to remove from the real BOM Entry.  It threw an error.  I tried to add some classes that were direct dependencies of the first, and they had the same problem.

I tried to think what had changed that these classes suddenly couldn't be in the BOM.  Then I remembered that we had recently changed the base class to use Log4J.  Log4J isn't part of the XOM.  So maybe the BOM can't use a class if it doesn't have a access to to the classes dependencies.  So, I tried adding a Log4J jar to the XOM project.  After doing that, the classes from the XOM that had become dependent upon Log4J stayed in the BOM.  The next time I tried to update the BOM, those classes remained in the BOM.

March 03, 2008

Deferred Constraints

In the Oracle DB, you can define a constraint as deferable. You can then make the constraint check fire at commit. It turns out, according to the DB people at my employer, that DB2 by IBM cannot. We have a table where rows can reference each other.

For example:

CREATE TABLE SELF_REFERENCE_EXAMPLE(
pk unsigned long;
...
another_row_pk;
CONSTRAINT FOREIGN KEY examplefk REFERENCES SELF_REFERENCE_EXAMPLE (pk);
);

And suppose we had a table like this.

pk |... |another_row_pk
=============================================
101 ... 208
208 101

Now, if we needed to move these rows to a history table, we can't move either because the other referenced row will not be in the history table.

In oracle we could make the history table fk constraint deferred and insert both rows. The fk constraint will be checked at commit, so there is not fk violation.

DB2 won't let us do the constraint deferral trick. So we have to do something like

insert 101 into the history table without its reference to 208.
insert 208 without its reference to 101.
update both rows with their respective references.
commit.

February 12, 2008

I really don't like ILog JRules

I'm using JRules 6.5.3. I am not loving it. It is really slow.

There is an eclipse-based IDE called ILog Rule Studio. It works somewhat, but builds are slow and you can't use the most recent jvm.

It is restricted to Java 1.4 and Java 5. If you use anything more current, some features of the ILog plug-ins won't work. Ruleset or RuleApp exports did not work until I installed the latest 1.5 JDK.

To use JRules you go through a process of "verbalization". You associate, hopefully, understandable English phases with java code. But doing a verbalization is painfully slow. When you verbalize, the save operation takes an amazing amount of time. I would say 10-30 seconds.

February 06, 2008

OpenLDAP wouldn't start. Here's how I fixed it.

Yesterday, a power outage brought my computer at work crashing down. When I tried to get my development environment going again, I couldn't interact with my local OpenLDAP server.

The slapd.exe process would essentially hang. I killed the process, and started it from the command line:

$ slapd -d -1


This showed that the process was hanging after loading a file in the data directory.

So I zipped up (zip file) the data directory. and then deleted the contents. Now, it would start up.

But there are no entries in the directory now. So I import an ldif file and, Voila!, I'm back in business.