Search This Blog

Monday, June 27, 2011

java.math.BigDecimal the difference between setScale and round

One pitfall within BigDecimal I guess is the round method within BigDecimal. Lets assume the following code samples:

BigDecimal smallNumber = new BigDecimal("0.01234");
smallNumber.round(new MathContext(2, RoundingMode.HALF_UP)));
Result   = 0.012
smallNumber.setScale(2, RoundingMode.HALF_UP));
Result   = 0.01

BigDecimal number = new BigDecimal("1.01234");
number.round(new MathContext(2, RoundingMode.HALF_UP))); 
Result   = 1.0
number.setScale(2, RoundingMode.HALF_UP));
Result   = 1.01


So calling round with a MathContext of 2 doesn't alway round to a precision of 2 digits overall. It depends on the number you're trying to round. Reading the JDK docs you will find

".... In general the rounding modes and precision setting determine how operations return results with a limited number of digits when the exact result has more digits (perhaps infinitely many in the case of division) than the number of digits returned. First, the total number of digits to return is specified by the MathContext's precision setting; this determines the result's precision. The digit count starts from the leftmost nonzero digit of the exact result. The rounding mode determines how any discarded trailing digits affect the returned result. ..."

Oops, that is something you have to keep in mind when using round within BigDecimal. So if you really want to achieve a "real" rounding operation on a BigDecimal you should use setScale.

Wednesday, June 15, 2011

JOIN ON multiple conditions

If you want to write an sql join on more than one condition you have to keep in mind that the from clause could just have one condition. Example:

SELECT  * FROM person p, accounts a
  LEFT JOIN preferences  pref ON pref.id = p.pref_id AND pref.name = 'glue'

 will fail, but this

SELECT  * FROM person p
  LEFT JOIN preferences  pref ON pref.id = p.pref_id AND pref.name = 'glue'
  LEFT JOIN accounts a   ON a.id = p.account_id AND a.name = 'snoop'

will work.

Monday, February 21, 2011

Manual DVD eject MACOSX

if the DVD icon in Finder is gone you could use

drutil eject

within a terminal.

Wednesday, February 16, 2011

Creation and usage of SSH Identity Files for OpenSSH or SFTP

Here is a quick step by step list how to setup an use an identity file with SSH or SFTP


1. Create a private and a public key with 
    ssh-keygen -t dsa

2. Now you should have something like 
   id_dsa and id_dsa.pub

3. Add the content of the public key file id_dsa.pub to the users .ssh/authorized_keys file folder on the host you want to connect with 
   cat id_dsa.pub >> .ssh/authorized_keys

4. Now you should be ready to connect to the host with i.e.
             sftp -o IdentityFile=id_dsa user@host
     ssh  -i id_dsa user@host


Thursday, February 3, 2011

HTC Desire HD und die gelben Bilder

Falls ihr euch über die gelblichen Bilder von eurem HTC Desire HD wundert, dann geht einfach mal in das Menu der Kamera Anwendung. Dort befindet sich der Menupunkt Weissabgleich. Hier ist per Default Tageslicht eingestellt. Stellt es mal auf Auto. Das wirkt Wunder :-)

Wednesday, June 2, 2010

Command prompt from here

Well sometimes I need a cmd right from the directory in the explorer within Windows. Microsoft offered the so called MS Powertoys, which have had a feature called command prompt from here. What that does was just a simple registry entry, which added an entry to the folder context menu. If you want to have such an extension you could easily add the following to your registry:



[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\command prompt]
@="Devenv from here"


[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\command prompt\command]
@="C:\\bin\\devenv.cmd %L"

(Just paste the lines above into a file with a .reg extension and click on it)

Now you could create a file called C:\bin\devenv.cmd and add you favorite Path extensions or variables. After adding the two entries to your registry you will see a new entry when you right click on a folder "Devenv from here".

Tuesday, April 20, 2010

Eclipse Galileo 3.5.1 Index Problems

After a while working with eclipse Galileo SR1 the startup of the IDE slows down. Beside this I frequently got an error like that:

Class file name must end with .class

To fix this I've done the following:
  1. Close Eclipse
  2. Delete /.metadata/.plugins/org.eclipse.jdt.core/*.index
  3. Delete /.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt
  4. Start Eclipse again
The eclipse bug list mentioned the behaviour in defect 286379 fixed for Milestone 3.6 M3.