Thursday, December 10, 2009

Ph.D. info

Well, this is a collection of articles / write ups etc. which I found / got from friends while gathering information about Ph.D. Hope this will be useful for others.

You and your research - Must read

The Ph.D. experience - Again, a must read

Another nice talk

Saturday, August 29, 2009

Inserting into mysql table from Java code

This post gives sample implementation of an interface which will insert records in a given table.

Assumptions:
1. mysql_connector driver is in build path
2. List of records is built off line.
3. Database connection is already made.

Procedure:
As shown in the snippet of code, the method takes 5 parameters, as mentioned in the comment.
/**
* @param tableName name of the table
* @param numValues number of values to insert < = num columns
* @param dataTypes their datatypes (string, int etc)
* @param columnNames column names to add values for
* @param values actual values in same sequence
*/
public void insertIntoDb(String tableName,
int numValues,
ArrayList_of_String dataTypes,
ArrayList_of_String columnNames,
ArrayList_of_ArrayList_of_String values) {


One you have a list of column names, you can easuly concatenate them to form a string say,
String col = "(col1, col2, col3)";


Similarly, for values, using numValues, you can easily form a string say,
String val = "(?, ?, ?)";


Once this is done, make a query string like:
String query = "insert into " + tableName + " " + col + " values " + val + ";";


This will form a quert string similar to following:
"insert into myTable (name, id) values (?, ?);"


Then, write a loop which will iterate through the given ArrayList of values (actual records) and using PreparedStatement interface, fill in the values for '?' in the query string. Here you will use dataTypes provided; for example, if the corresponding data type is "string", write:
cs.setString(index_of_corresponding_?, current);


else for "integer", write:
cs.setInt(index_of_corresponding_?, Integer.parseInt(current));


where "current" is the current piece of text that you can get from ArrayList of records i.e. values.

You can verify whether your final prepared statement is correctly built, using toString() method for PreparedStatement interface. It will show something like:
"objectID1: insert into myTable (name, id) values ('abc', 1);"
"objectID2: insert into myTable (name, id) values ('xyz', 2);"


Then invoke executeQuery() method of the interface PreparedStatement which will actually insert these records in the table.

Easy!! No? :)

Friday, August 28, 2009

Select k records randomly from n records in Java

Assume a situation wherein you have an array of records, let them be anything varying from marks (integers), names (string), student information (user defined class object), or ANYTHING ARBITRARY which derives itself from Java's object. Suppose, you have such n records, each with an identifier say, 1 to n, such that you have then stored in array of any form in Java.

Now, suppose you want to chose k random records from this array, this is how you proceed.

Procedure:
Given n, generate a random permutation of {1, 2, ... n} as {1', 2', ... , n'} and pick first k numbers from the permuted array.
For example, say you want to pick 3 numbers randomly from 8, s.t. n = 8, k = 3.
1. {1, ... 8} ===> {2,3,1,7,6,4,8,5} ===> {2,3,1}
2. {1, ... 8} ===> {8,4,3,1,6,5,7,2} ===> {8,4,3}
Thus, once you have k such indexes, you just need to probe your original array with these indexes and get corresponding k random records.

The Java code snippet is as shown:






The output as expected is :
randomly selecting 3 out of them
1 a
7 g
5 e
randomly selecting 5 out of them
6 f
5 e
7 g
8 h
2 b



I needed this for:
I had to partition dataset containing some @1,000 records, for cross-validation. It is a method of training a classifier when you have small number of training records. In this, you will first decide how many folds of dataset you want to make, say 5-fold, then 1,000 records will be partitioned in the ration 4 : 1 such that every time 4/5 th of the data records will be used for training and remaining 1/5 th for testing (validating in this case). Thus, I needed to randomly pick 4/5 * 1000 of my records every time, for which I wrote above piece of code.

Note 1: Not listing the code, but adding image so that, whoever wants to try it, will actually type in the things, and thus they will never forget the trick! :)
Note 2: Reference - Weka software

Friday, January 25, 2008

Snoring

During lunch, my friend was telling about her roommate and was laughing on the fact that she snores. I also snore. Obviously I felt bad. She was indirectly laughing at me. Since childhood I have been observing my father snoring and always thought of finding out the reasons behind the same. I thought now is the time because I myself is facing the same problem. Google-d for some information and this is just the compilation of what I found.
Last few months, I have realized that I snore. I happens sometimes during deep sleep, sometimes just after I go to bed. Most of the time its winter or my throat has some problem, whenever i snore. Normally it happens that I myself awake after some time I have been snoring and then I realize that I was snoring. I also noticed that whenever I am awake after snoring, I am sleeping on my back. I have never noticed myself getting awake due to snoring, when I am sleeping on my side. All this made sense after I read Google-d results.
Main reasons of snoring are:
  1. Throat weakness causing the throat to close during sleep
  2. Mispositioned jaw, often caused by tension in muscles
  3. Fat gathering in and around the throat (tonsil problems, may be)
  4. Obstruction in the nasal passageway
  5. Obesity
A very good article about snoring, its reasons and treatments can be found at http://www.hinduonnet.com/thehindu/mag/2004/11/07/stories/2004110700350600.htm

The reasons numbered 1 and 2 ask for sleeping at the side to prevent the tongue from blocking the throat. Thats the reason I notice myself awake after snoring when I am sleeping on my back more than when I am sleeping on my side. Reason 4 might focus on the case that during winter I notice myself snoring. Reason 5 is directly applicable to me!
Reason 1, 2 and 5 are applicable to my father as well, who snores.

As known effects of snoring can be told as restlessness, hypertension (which may lead to heart-attack in very few cases), increased day time sleep, depression. (I go through almost all of these!)

A huge and useful information can also be found at my favorite wikipedia.. http://en.wikipedia.org/wiki/Snoring

As said in Hindu article, Snoring is no longer a laughing matter. It may lead to serious disease.

Wednesday, January 16, 2008

carbon trading

I had heard this term.. of course without knowing the meaning.. During "Applied Economics" (!!) lecture, Sir explained it.. As follows:

Lets assume for a certain area, air pollution restrictions are laid.. in a sense.. no factory should emit (say) 100 units of carbon (carbon- in a sense, pollution causing element). Lets say in that area, there are 2 companies A and B.. A's factory is controlling its emission to say 80 units of carbon.. Then they are given a sort of "carbon saver" certificate, indication of "they are carbon savers" That certificate is considered of having a value. Because, if suppose company B's factory is not able to control their emission to 100, say they emit 120 amount of carbon.. they can acquire (may be, actually BUY) this "carbon saver" certificate from company A!! sort of license.. to emit higher amount of carbon.. So that total level of carbon in that area is kept constant (120 + 80) as well as because company A has saved carbon, they are given reward while company B which could not save carbon, is - in a sense - penalized.

Cool information.. isn't it?