gmosx: (Amazing!!)

Nasty Java catch

by gmosx, at 17 Mar 2011
Some time ago, I wrote about a nasty JavaScript catch. Well, it seems that no language is immune from nasty surprises, so here comes one for Java:

BigDecimal value = new BigDecimal("0.31");
BigDecimal oldValue = new BigDecimal("0.34");
BigDecimal ratio = value.divide(oldValue);


java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.

Funky, huh? Let me offer a quick fix:

BigDecimal ratio = value.divide(oldValue, BigDecimal.ROUND_HALF_EVEN);

For some intuition (in Khan's parlance), have a look here

I had a very annoying problem lately. The deployment of my app to GAE was failing randomly with mysterious errors like this: getTopLevelNode SEVERE: Received IOException parsing the input stream for /home/.../war/WEB-INF/web.xml Connection timed out         at Method)  ... SEVERE: Received exception processing /home/.../war/WEB-INF/web.xml Received IOException parsing the input stream for /home/.../war/WEB-INF/web.xml         at 210) 

After an extended googling session I unearthed a solution from this helpful discussion thread. Just replace the doctype declaration in your web.xml file

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app     PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"     ""> <web-app>

with the following updated version:

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=""  xmlns="" xmlns:web=""  xsi:schemaLocation=""  version="2.5">

That's all, one click deployment is working reliably again!

You worked hard. Your application works like a charm, the concept rocks, the graphics are great, the client is happy. Still, you know there is one more thing to do: test with the dreaded Internet Explorer.

In your case, the app is a standard Facebook iframe application. You went to great lengths to make sure it stays compatible with IE (that means modern CSS/HTML techniques are off limits). Tough luck, you have to try harder my friend. You see, the application does not work at all! With no error message whatsoever.

Oh, wait a minute, there is a stupid eye icon in the status bar. Once you click it you realize that IE is actually blocking Facebook's authentication cookie! In the default security setting, no less. You are royally screwed.

To make a long story short, here is a 'voodoo' solution, offered by a mastermind friend:


For the hairy details, get educated by the pros. Groovy!

A few days ago, I needed to center a mini site horizontally *and* vertically (don't you just love client requests?). It 's easy to tackle the horizontal axis using CSS:

.hcenter {
  margin: auto;
  width: 320px;
  height: 240px;
<div class="hcenter">Horizontally centered text</div>

On the contrary, I thought that CSS can't handle vertical centering (at least in a cross-browser compatible way) and a quick Google session ended fruitless as well. Instead, I wrote a small script to programmatically center the div inside the window. It took a couple of revisions to support resizing, eliminate flickering, ensure cross-browser compatibility, etc. but eventually I got it right.

Today though, I rediscovered an old trick:

.center {
  position: absolute;
  width: 320px;
  height: 240px;
  top: 50%;
  left: 50%;
  margin-top: -120px;
  margin-left: -160px;
<div class="center">Horizontal and vertical centered text is possible.</div>


I ♥

by gmosx, at 27 Sep 2010

A few days ago, Joyent unveiled the public beta of their NodeJS-based platform-as-a-service contender. Well, this service rocks! From the great domain name to the RESTful procurement/management API and the git-powered deployment, everything radiates coolness.

Even though I posted my hearts to the API end-point (/♥ !!), I haven't received any coupons in return. So there is no review for you. However, the elegant simplicity of the API (combined with the clean-slate design of the underlying NodeJS infrastructure) lights my geeky heart (pun intended).

I am not a NodeJS fan-boy. These days I am evaluating Java/GWT (so far I am positively surprised but I 'll reserve my final judgement for a future post). So, you understand, like everyone who feels overwhelmed by the complexity of the Java ecosystem, I can appreciate a refreshingly simple alternative.

Subscribe to this blog