Sunday, February 28, 2010

Google app engine

An interesting read on when big table is better than RDBMS :http://highscalability.com/how-i-learned-stop-worrying-and-love-using-lot-disk-space-scale
An interesting post on full text search is here But its not so reliable.

An attempt to run few web service using spring 3 is here :
http://jshoutbox.appspot.com/




Friday, February 26, 2010

Spring 3 samples

A good collection can be found here : https://src.springsource.org/svn/spring-samples/

Spring 3 with JSON (lib jackson) here
Another useful link : http://springbyexample.org/



Monday, February 22, 2010

linux - the difference between hard and soft links

Follow http://linuxgazette.net/105/pitcher.html By Lew Pitcher Thanks to Lew Pitcher. Very well explained..

Saturday, February 20, 2010

tabbed ms dos/putty console

Are you tired of keeping multiple dos/console tabs open (like me .... :D ..... phew!!)
This is quite useful for programmers I think:
Refer for details:
http://www.downloadsquad.com/2006/07/05/console-tabbed-command-prompt-for-windows

To download an opensource tabbed console(support dos, cygwin,etc) follow :
http://sourceforge.net/projects/console/files/

For remote connecting to linux, there is Putty Connection manager. My favourite.. Maybe console developers can learn from them.


Monday, February 15, 2010

SVNKit - subversion online?

* Pure java implementation of subversion client.

Why it is of interest??
Imagine you want to maintain templates in your subversion as well as make it available to the live web application. There is some effort in creating the template, testing it and then syncing it over to the live application..

If we can get the subversion online then this can be done pretty easily saving the sync effort. Pretty much like a CMS.

Java example API usage  http://svnkit.com/feed/ExamplesList.html
Architecture : http://www.svnkit.com/documentation.html

Maven dependency:
    <dependency>
        <groupId>com.svnkit</groupId>
        <artifactId>svnkit</artifactId>
        <version>1.1.0</version>
    </dependency>




Saturday, February 13, 2010

setting up a static ip with SKY broadband

Setting up a static ip on SKY broadband
  • log into the router
  • Navigate to LAN IP SET UP under advanced settings.
  • Click add under address reservation
  • On the screen that appears choose the device you want to give a fixed IP to
  • Select with the radio button to the left
  • Change the IP if you want/need to
  • Click add
  • Click cancel to return to the main screen
  • Click apply
  • Go to WAN setup and setup this IP (which you want to make public)
  • Go to whatismyip.com to get your public ip..
  • Thats it you got a public IP.
Note: going public will make your PC available to anyone...beware

Thursday, February 11, 2010

Virtualization with sun virtualbox


Windows xp crashed again. Luckily I had the stable ubuntu still running..
Its the nth time its happening. Is there a solution at all for windows sh** .


Well I came across Sun VirtualBox and got windows xp running from Ubuntu in just a few clicks and keystrokes.. The clicks are below:

1. From ubuntu download http://www.virtualbox.org/wiki/Downloads 
2. Install virtualBox
3. From command prompt type in VirtualBox to get the virtual box window.
4.  Follow this video http://www.youtube.com/watch?v=ch8X86R6d-g
5. Put xp cd and create a  new instance of virtualbox.
5. Read this for details : http://www.virtualbox.org/manual/UserManual.html#id2495036
6. Thats it you got windows xp running from Ubuntu..

To share a drive across virtual machines you just have to map the drive.

From your host machine(ubuntu) type in console
$ VBoxManage sharedfolder add "Windows XP" -name "fun" -hostpath "/media/fun"

Then from windows command prompt type net use p: \\vboxsvr\fun
Voila you got your shared drive on p:

Whats more !! have fun with virtualization...
Thanks to this thread http://ubuntuforums.org/showthread.php?t=367155
Still cant get drive access? follow this http://ubuntuforums.org/archive/index.php/t-627847.html

The satan windows can now run under the sane hands of ubuntu...lol



 




spring 2.5.6 performance monitoring

1. update the applicationContext.xml as below:

 <!--  Performance monitoring. Log level should be set to TRACE to monitor the performance.  -->
    <aop:config>
           <aop:advisor pointcut="execution(* com.pkg..*.*(..))" advice-ref="performanceMonitor"/>
    </aop:config>
    <bean id="performanceMonitor" class="org.springframework.aop.interceptor.PerformanceMonitorInterceptor"/>

2. Modify log4j.properties as below:
log4j.logger.org.springframework.aop.interceptor.PerformanceMonitorInterceptor=TRACE

3. The following pom configuration is necessary
<!-- monitor performance dependencies -->
        <dependency>
          <groupId>aspectj</groupId>
          <artifactId>aspectjweaver</artifactId>
          <version>1.5.4</version>
        </dependency>
        <dependency>
            <groupId>cglib</groupId>
            <artifactId>cglib</artifactId>
            <version>2.2</version>
        </dependency>

<!-- Spring dependencies -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring</artifactId>
            <version>2.5.6</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>2.5.6</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>2.5.6</version>
        </dependency>

4. You will see the logs as below
TRACE - StopWatch 'com.xyz.dao.procedure.StoredProcedureFactory.getStoredProcedure': running time (millis) = 31
......


Wednesday, February 10, 2010

Spring annotations with spring-mock gotchas

Spring version used: Spring 2.5.6 but spring-mock2.0 (as that's the latest version for mock)

Problem: Junits do not run from dos(when using spring-mock) . Throws  weird exceptions:
java.lang.NoSuchMethodError:springframework.core.annotation.AnnotationUtils.findAnnotationDeclaringClass(Ljava/lang/Class;Ljava/lang/Class; org.)

The cause: spring-mock 2.0 tries to load spring2.0 jars into classpath screwing up junits run using spring annotations.

Solution:  Tried excluding all the spring-mock dependencies. This should have ideally worked. But I was not able to get it exclude it ...dont know could be a  maven version bug?? Hence had to modify the local pom.xml of spring-mock and removed all spring 2.0 dependencies. Put it into our local maven mirror(archiva).

How did i find this out: By using mvn -X test one can see all the jars loaded in classpath
Details: See a similar problem well explained here




Friday, February 5, 2010

Oracle thin vs OCI(type II/thick) drivers

1. Thin drivers are type 4 and pure java implementations.
Remember to uses classes12.jar instead of ojdbc14 when working with CLOBs.. Or else it throws this
weird exception:
java.sql.SQLException: ORA-00600: internal error code, arguments: [kolaHashFind:hash table], [], [], [], [], [], [], []



2. OCI drivers are thick drivers(type II) and use native libraries to interact with oracle db server.
Usually required when we need to work with XMLType to the oracle db server.


For XMLType its more complicated as it expects xdb.jar and oci jar (ojdbc5.jar i think).

OCI could be a pain:
Check http://myjdbc.tripod.com/basic/jdbcoci.html

I think there could be compatibility issues with OCI esp. as the client driver should match the oracle server version installed. Well that's a guess, will find out and post more here...

The exceptions that were faced with oci driver are below:
java.lang.UnsatisfiedLinkError: no ocijdbc10 in java.library.path >> Guess: must be missing a native dll. does it mean u need a oracle client 10 ?
java.lang.UnsatisfiedLinkError: no ocijdbc11 in java.library.path >> Guess: must be missing a native dll. does it mean u need a oracle client 11 ?
java.lang.NoClassDefFoundError: oracle/jdbc/oci8/OCIDBAccess
java.lang.NoClassDefFoundError: oracle/xml/parser/v2/XMLParseException
>> occurs when we need to work with XMLType found in xdb.jar which in turn depends on xmlparserv2.jar from oracle...


This is such a pain esp. with cryptic clues what oracle gives.. Oracle DB is good but why are the jdbc clients so bad.. There are so many distributions of oracle driver and the jar names are so confusing..overall we spend lot of time sorting out jdbc drivers of oracle during development i think.. Oracle jdbc folks are u listening....if yes clean up the crap and keep it simple silly...



IMPORTANT:
On different oracle jdbc bundles. Must read: