Eclipse fails to start up in Ubuntu after installing Oracle Java

Problem: Eclipse fails to start, with message –

Reason: Tries to find these libraries in the corresponding location for OpenJDK.

Fix:
In terminal,sudo gedit/etc/eclipse.ini
Append line (VM args section being last): -Djava.library.path=/usr/lib/jni
Save close the file.
Eclipse should launch successfully now.

Install LAMP on Ubuntu 12.04 LTS

To install LAMP server on Ubuntu –

On terminal, do –

Test Apache

Go to URL http://localhost/ in the browser. The message “It Works!” should be displayed.

Test PHP

Add the line :

Save and close the file

Got to the URL http://localhost/testphp.php in the browser. The php status page should be displayed.

Test MySql

Open MySQL monitor In the terminal with the following command –

Provide the username ( and password when prompted) which you had set during the setup above.
The program should advance to display the “msql>” prompt.
Close mysql monitor by command exit.

Fix : Ubuntu Boot error – Boot device not found (after partitioning)

Problem: Ubuntu gives the message “Boot device not found” after partitioning using Gparted (done from a usb instance).

Reason : Unknown. Could be that no partition was mapped to /boot.

Fix: Open terninal – Run these commands

  1. sudo mkdir /media/fix
  2. sudo mount /dev/sda2 /media/fix(replace /dev/sda2 by your drive name.)
  3. sudo chroot /media/fix su
  4. apt-get update
  5. apt-get upgrade

Reference: Zee’s 6 Step Ubuntu Fix

School TimeTable Creator

School timetable creator is a program to create Timetables for schools written in C++. The features are –

  1. Allows for manual setting of class teachers.
  2. Checks whether there are enough number of teachers to teach each subject before running timetable creation routines.
  3. Creates timetables in 5 seconds in most of the cases.
  4. Default date provided for testing straightaway.
  5. Common periods like MPT, CCA are supported.
The method followed is as follows –
  1. The subject list created according to the probability of occurrence of each subject. This subject list is used to distribute subjects to time slots, in accordance with teacher and subject level constraints.
  2. In case of a no go using above step, a subject swap is tried within same day.
  3. In case of a no go using above step, a subject swap is tried from a previous day.
  4. A recursive swap of time slots is done where an available teacher is introduced to the chain of swaps which solves the current conflict.

This can be a good project for high school/undergraduate course in Computer science. Please find the code here.

Hibernate calls hang after giving message “opening JDBC connection”

Bug: Hibernate calls hang after giving the message “opening JDBC connection” in the logs. No exception/error message is thrown.

Reason: Connection timeout not set for the connection pooled datasource.

Solution: Set connection timeout for the datasource. In case of a basic datasource (apache), add and set property maxwait to the number of microseconds after which a timeout error is to be thrown.

Hibernate Gives Connection Pool Error: Timeout waiting for idle object

Bug: Hibernate connection times out (after the maxWait duration set for the datasource), and gives error message in the log – “Timeout waiting for idle object”

Reason: Some operations were done using Hibernate session instead of Spring HibernateTemplate ; which were obtained using HibernateTemplate.getSession() function, and were not released by calling the HibernateTemplate.releaseSession();

Solution: Call this.releaseSession() from inside a spring-hibernateDao after the db operations. (ideally in a finally block).

ClassCastException for same class on slim3 for Google App Engine

Bug: A class cast exception like the following is thrown – class x.y.z.MyClass cannot be cast to class x.y.z.MyClass

Reason: The class loaders for both these class instances are different. One of the classloader is the usual one used by AppEngine JVM, while other one is used by the hot reloader.

Solution: Remove the Filter and Filter-Mapping for HotReloadingFilter from web.xml.

jqGrid cell data disappears on clicking other cells

Bug: jqGrid cell data in a previously edited cell disappears on editing other rows. This usually occurs after a cell or row value is edited programmatically.

Reason: A cell could not reset its DOM to display mode from Edit mode.

Fix:  Fix is to restore an edited row/cell before doing further operations on its event handler functions ( like launching a new dialog to put in some processed value back to it using script).

UTF-8 encoding on J2EE

A 3 step method to apply UTF-8 encoding to J2EE applications.

1. Add the following directives to the page included in ALL jsps.

This will add request headers and meta-tags to every page served which will tell the browser that the page is utf-8 encoded.

2. Add a filter at server side to encode the request body received to UTF-8. A spring UTF-8 encoder (available in org.springframework.web*.jar of spring 3 distribution) if used, will have the following changes in web.xml:

3. Tell the container that the URLs too are to be encoded in UTF-8. In tomcat, this is done by adding the attribute URIEncoding=UTF-8 to the connector tag in server.xml. Else, this can also be done by setting useBodyEncodingForURI=true in the connector tag. This will tell the connector to use the same encoding used for the request body (set to UTF-8 in the previous steps.) This will make sure that the parameters received via GET requests too are properly understood by the application.

AirRaid

An MS DOS game where you shoot opponent fighter plane and save yourself from incoming missiles 😉

Download code here.

(Note/Disclaimer : Last successful compilation of most of the programs in this category were done from 2000 to 2002.)