Friday, October 24, 2008

Windows Boot Screen

So many times I have wanted to see why my windows is booting so slowly. What drivers are causing problems... Well msconfig has a nice feature to disable the eye candy bootup and just show what drivers are being loaded!!
on Windows XP open msconfig and go to the BOOT.INI tab and check on the /SOS checkbox. The next time you bootup, it will show what drivers are being loaded.


On Vista go to the Boot tab and check on the OS bootinformation check box to do the same.




Read more about "Windows Boot Screen"!

Friday, July 18, 2008

rxvt on cygwin

rxvt is so much better than the dumb command prompt style shell you get with default cygwin.

Remember to choose rxvt when installing cygwin. Then create a shortcut with the following command

C:\cygwin\bin\rxvt.exe -fg green -bg black -fn "Lucida Console-14" -e bash --login -i


Read more about "rxvt on cygwin"!

Friday, June 20, 2008

Manage directory navigation with pushd and popd

UNIX supports a wide variety of directory-navigation tools. Two good tools are pushd and popd.

You're certainly aware that the cd command changes your current directory. What happens if you have several directories to navigate, but you want to be able to quickly return to a location? The pushd and popd commands create a virtual directory stack, with the pushd command changing your current directory and storing it on the stack, and the popd command removing the directory from the top of the stack and returning you to that location. You can use the dirs command to display the current directory stack without pushing or popping a new directory. Listing below shows how you can use the pushd and popd commands to quickly navigate the directory tree.


$ pushd .
~ ~
$ pushd /etc
/etc ~ ~
$ pushd /var
/var /etc ~ ~
$ pushd /usr/local/bin
/usr/local/bin /var /etc ~ ~
$ dirs
/usr/local/bin /var /etc ~ ~
$ popd
/var /etc ~ ~
$ popd
/etc ~ ~
$ popd
~ ~
$ popd


The pushd and popd commands also support parameters to manipulate the directory stack. Using the +n or -n parameter, where n is a number, you can rotate the stack left or right, as shown below


$ dirs
/usr/local/bin /var /etc ~ ~
$ pushd +1
/var /etc ~ ~ /usr/local/bin
$ pushd -1
~ /usr/local/bin /var /etc ~



Read more about "Manage directory navigation with pushd and popd"!

Reuse previous arguments

Here is another great tip from IBM. I love this. The !$ command returns the last argument used with a command. But what happens if you have a command that used arguments and you want to reuse just one of them?

The !:1 operator returns the argument used in a command. The example in Listing 3 shows how you can use this operator in combination with the !$ operator. In the first command, a file is renamed to a more meaningful name, but to preserve use of the original file name, a symbolic link is created. The file kxp12.c is renamed in a more readable manner, then the link command is used to create a symbolic link back to the original file name, in case it's still used elsewhere. The !$ operator returns the file_system_access.c argument, and the !:1 operator returns the kxp12.c argument, which is the first argument of the previous command.


$ mv kxp12.c file_system_access.c
$ ln –s !$ !:1



Read more about "Reuse previous arguments"!

Use history expansion

This post is from Unix tips from IBM. What happens if you're using the same file name for a series of commands? Well, there's a shortcut that can quickly retrieve the last file name you used.

What happens if you're using the same file name for a series of commands? Well, there's a shortcut that can quickly retrieve the last file name you used. As shown below, the !$ command returns the file name that the previous command used. The file this-is-a-long-lunch-menu-file.txt is searched for occurrences of the word pickles. After searching, the vi command is used to edit the this-is-a-long-lunch-menu-file.txt file without the need for retyping the file name. You use the bang, or exclamation point (!), to access the history, and the dollar sign ($) returns the last field of the previous command. It's a great tool if you are using long file names repeatedly.


$ grep pickles this-is-a-long-lunch-menu-file.txt
pastrami on rye with pickles and onions
$ vi !$



Read more about "Use history expansion"!

Thursday, April 17, 2008

A Comparison of Oracle's DATE and TIMESTAMP Datatypes

Nice article on oracle DATE and TIMESTAMP's. Good place to go for quick reference.

Just go either here or here to read in detail.

Read more about "A Comparison of Oracle's DATE and TIMESTAMP Datatypes"!

Friday, April 04, 2008

Maven: a lot better then Ant

Maven is a software tool for Java project management and build automation similar in functionality to the Apache Ant. Now a days a lot of open source java project are using Maven.
Some of the main features are:-

  • Making the build process easy and it is network-ready
  • A way to share JARs across several projects
  • Providing guidelines for best practices development i.e. to write unit test
  • Creates common configuration for eclipse for users of same project.
  • more...
To get started go here http://maven.apache.org/guides/getting-started/index.html
also checkout http://en.wikipedia.org/wiki/Apache_Maven


A sample web project would look like
/project-name
/project-name/src/main/java
/project-name/src/main/resources
/project-name/src/test/java
/project-name/src/test/resources
/project-name/pom.xml
/project-name/src/main/webapp/project-name/src/main/webapp/WEB-INF

Some of the commands i use

mvn eclipse:eclipse
mvn clean
mvn install
more ...


Read more about "Maven: a lot better then Ant"!

Continuous integration

Continuous integration describes a set of software
engineering practices that speed up the delivery of software by decreasing ntegration times -Wikipedia


This is a cool concept to use which helps faster development and minimize bugs. Some of the key features are:-

  • Maintain a code repository
  • Automate the build
  • Make your build self-testing
  • Everyone commits every day
  • Keep the build fast
  • Test in a clone of the production environment
  • Make it easy to get the latest deliverables
  • Everyone can see the results of the latest build
  • Automate Deployment

For more details checkout http://en.wikipedia.org/wiki/Continuous_integration

For java developers i would recommend Hudson since its feature rich and Free!



Read more about "Continuous integration"!

Eclipse and ANT build problem with jdk1.3

You can't do an ANT build inside eclipse if your chosen jdk is 1.3. Here is a the error message you get...


BUILD FAILED
java.lang.NoClassDefFoundError: org/xml/sax/SAXException
at org.apache.tools.ant.ProjectHelper.getProjectHelper(ProjectHelper.java:228)
at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.parseBuildFile(InternalAntRunner.java:189)
at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.run(InternalAntRunner.java:400)
at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.main(InternalAntRunner.java:137)



nice little trick to fix that...

Inside Eclipse Go to Window->Preferences...->Ant->Runtime

In the classpath tab, add a new entry to the Ant Home Entries to the xerces jar file inside your eclipse/pluggins folder. In my case the file was org.apache.xerces_2.8.0.v200705301630.jar.

Now go ahead an run your build again successfully :)

update: When I updated my eclipse to 3.4, this again stopped working for me. The above fix did not work.I then saw a mailing list where the user executed the ant script by right clicking the ant script and choosing Run->Ant build..

Now change the JRE it runs in. It should be set to the option which says "Run in the same JRE as the workspace"

The mailing list thread is here

Read more about "Eclipse and ANT build problem with jdk1.3"!

How to use Read more!

Write your header message...

<span class="fullpost">Keep other stuff within your span tags</span>

I did this from here!

Only thing left to do is to enable or disable the "Read more!" which shows up at the bottom of each post!
Read more about "How to use Read more!"!

Replace ROOT context in tomcat without deleting or replacing the ROOT directory

This is a neat trick. At least it works in tomcat-4.1.24.


The first part to this trick is to know you can deploy a war file to the webapps in tomcat without adding the context in the server.xml of your tomcat installation. Suppose the name of your war file is HelloWorld.war, create an xml file called HelloWorld.xml and add the context snippet you would have added to the server.xml file to HelloWorld.xml. Now deploy both HelloWorld.war and HelloWorld.xml to the webapps folder. Voila! Your web application should now work.

The second part is to make your webapplication be the ROOT context. The ROOT context by default is the Tomcat welcome page. One way of doing this would be to just delete everything under ROOT and deploy your application in there. Well there is another way... In your Context file, just leave the path empty. Here is an example of the contents of the context file for HelloWorld.war without any resources:

<context path="" docbase="HelloWorld.war" debug="0" reloadable="true" crosscontext="true" />

That should do it.. Just bring up Tomcat and enter your url in your favourite browser.


Read more about "Replace ROOT context in tomcat without deleting or replacing the ROOT directory"!

Redirect stdout and stderr to same file

I keep forgetting the correct syntax....

% script 2>& logfile
Read more about "Redirect stdout and stderr to same file"!