Skip to main content

Posts

Showing posts from 2011

Blackberry backup Parser

I have published this extractor to help people to develop both open source and commercial solution which involves reading Blackberry backup extraction. This extractor retrieves BB phone backups (Contacts and SMS) into CSV file. Share your comments, feedback and Questions, I'm listening :-) To download the binary and source, please access- http://code.google.com/p/ipd-extractor/

Its about Bytes in Java

I have seen people struggle in handling data in Java when it reaches at the byte level. As Java doesn't support any concept of Un-signed data type, so it makes things more complex. So thought lets share my understanding. Java stores negative values in 2's complement format and to get absolute value of any negative number you need to type cast variable with higher byte value datatype. In simple word, to get absolute value of -ve byte data type variable it need to type cast/upgrade to some other date type (e.g. short/int) having more number of bytes and. Example, byte mSample = 142 ; If you print its value, it will show -114 . So, why does the JVM shows -114 ? Binary of 142 : 1 0 0 0 1 1 1 0 . The left most bit is Signed bit, so JVM considers this number as -ve value and converts it into 2's Complement, which means, 0 1 1 1 0 0 1 0 = - 114. So, its simple, right ? So, to get absolute value of mSample , we need to type cast it to higher byte enabled data type

Excel Column Sequence Algorithm

One of my friend came up with a question..."How do you find out the sequence of MS Excel column ?", lets put this in an another way, If I tell you one Excel Sheet column sequence e.g. ABA how do you find out the index of the column e.g. AA is 27th column, AB is 28th column. So, I thought to put this as an Algo; with this if you have any sequence, you will be able to compute the column number- Column Number = Alphabet Seq Number (right most) + Alphabet Seq Number * 26 + Alphabet Seq Number * (26*26) + .......... + Alphabet Seq Number (left most) * (p-1 times multiplication of 26) Where, Alphabet Seq Number = 1-26, (A = 1 and Z = 26) p = number of Alphabets in the Column Sequence e.g. for "ABC", p = 3. Here  is C at position 1, B at 2 and A at 3. So, with the above formula, Column number for ABC = C + B * 26 + A * (26 * 26)   = 3 + 2 * 26 + 1* (26*26) = 731 So, what about doing the reverse i.e. generate the sequence from column number. To

What WebView can do in Android ?

Well, the answer is, WebView can help to create wonderful Mobile UI without the pain of Android's Layouts. Sometime simple is not that simple! Before even I know about WebView, to me Android's XML based UI option was the simplest in the world. But Android can go beyond that....It provides the amazing WebView which lets you to develop UI in World's most simple language i.e. HTML/JavaScript. So, simple can be that simple ..what do you think :-) As I'll move on and start describing more about WebView, probably few questions already started hovering.... How do I call my Android Activity or Java classes from my WebView ? or How do I call a JavaScript method from my Android Activity ? These are valid questions and answer is, both of them are possible with WebView and I'll explain both of them. So, its cool right!! WebView is the same programming construct which runs behind Android's browser. So " ideally " you can run everything on WebView which you

Multi-Threaded Execution Control

In this tutorial I'll explain mechanism to control multiple thread execution sequence. To explain the concept, I'll consider a sample execution scenario where a set of operations execute in sequence, but each operation runs in different threads. Lets consider content download scenario, Login to the Content Server -> Browse Content -> Download Content. 3 Threads will execute each of these operations and these operations are inter dependent and will follow the order, login - browse - download . Let's jump into the implementation, we'll have Synchronized blocks for 3 different functions and we'll do thread execution control using wait()/notifyAll() methods. To determine the order of execution we'll use one variable state which can hold 3 different values- Login , Browse and Download . Synchronization blocks will be locked with a Private Object lock. This is more effective and fail pro