A Malayalam language text editor for MS DOS/Windows console

A console driven malayalam language editor. Serves as a reference to basics of bit mapping. Suits as a high school project or mid term project for undergraduate courses.

Download : Code | Windows Binaries

Note: Given on as is basis (written by author during high school – 1999 to 2001). Uses plain array as the character buffer – using a linked list would make it faster and can help reduce the flicker. Last successful compilation done almost a decade before.

If you want to create your own font for other languages, heres how –

  1. Make a cross reference of characters and the ascii of the keyboard button to relate that to.
  2. Get a “square line” book. ( one we used for doing maths at lower primary school)
  3. Reserve each page for each character.
  4. On a page outline a rectangle having 16 squares horizontally and 10 squares vertically.
  5. Draw each character inside the above rectangle.
  6. Mark “1”s in all squares where the character’s edges pass through. ( the blank boxes can be imagined as  zeroes). Now each character can be seen as 10 lines each having 16 ones or zeroes. This is the bitmap of the character, to be entered in the font-maker later.
  7. Do the above in a new page for each of the characters in the serial order defined in the cross reference.
  8. Compile and run fntmaker.cpp. Give any name for font file when prompted. Add each character as 10 lines of 1s and 0s (using the interactive menu).
  9. Compile and run refmkr.cpp. Give any name for the reference file when prompted. Enter each of the character to ascii mapping created in step 1.
  10. Rename the font file to font1 and ascii-to-character reference file to ref.

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.