Tuesday, June 27, 2006

Adobe Reader can READ

This time I got a mail saying the above subject. I can't believe it. I tried and it worked...
But it is only for windows. :(

Short cut keys for making Adobe to Read a pdf file for you:

Ctrl+shift+b - to hear the entire Document
Ctrl+shift+v - to hear the page
Ctrl+shift+c - to resume
Ctrl+shift+e - to stop

There are lot of ways to make people lazy... This is one among them...
Just kidding. :) :)

Joining lines in sed

I copied some text from a web page. I wanted to print the doc. It was pre aligned. When I copied it to my word processor, it was not aligned properly and it ate up lot of space. I wanted to combine the lines to a single paragraph. Since Im not much familier with the word processor, I decided to use sed. After googling, I found

sed -e :a -e '$!N;s/\n\([a-zA-Z]\)/\1/;ta' -e 'P;D'

Done...

Friday, May 05, 2006

CAT or REDIRECT

Today I had a strange problem. Let me explain...

I want to read a property file and assign values to variables.
My code was like cat prop_file | while read line ; do value=$line; done
print $value


Guess the output I got !!!!
Output: (Nothing) :(

I and my collegue fought for a looooooooooooooooooooooooong time. Then he asked me to use as follows. Modify the code as:
while read line ; do value=$line; done
print $value


and asked it to run as ./myfile.sh prop_file
Hurraaaaaaaaaaaaaaaaaaaaayyyyyyyyyyy!!!!!!!!!!!!!!
I got the output.

Reason: After some trials he told me that the reason might be: The cat might spawn a new shell and execute the entire while loop inside the shell. So the value might not persist after the end of while.

And this entry is dedicated to Vaidhy (my collegue) ... :) Thanks Vaidhy...

Thursday, March 23, 2006

Recording in VIM

Today I had to do something like moving a text following a pattern to a next line.

Eg: sometext; othertext

I didn't wanted to go through all the lines individually and move it
to next line. At that time, I heard something called as "recording"
from one of my friends. As per that I did the following and I felt in
very deeeeeeeeeeeeeeeeeep love with VIM.

  • Entered recording mode by pressing "q" followed by a letter say "a"
  • Then searched for ";" using "/" and then went to insert mode
  • Inserted a new line and then moved down to next line.
  • Pressed "q" again to quit recording mode.
  • Then pressed "@a" and it replaced the first occurance of the pattern to next line.
  • To repeat 10 times, I used "10@a"
Once we are in recording mode, vim stores all the key strokes with the name we give. Then replays all the actions when we use "@". Similar to "play" in a tape recorder.
The number (10) indicates the number of times to replay.

Really a nice feature of VIM...

Thursday, February 23, 2006

Tips

From today, I like to add new some useful tips that I came across in "Tips" title.

  • Check Folder size in Unix thru console : du -h
  • Check disk free space in Unix thru console : df -h
  • List all open ports : nmap -sT < host name >
  • Read file contents through bash : cat file.lst |while read line; do echo "${line}"; done
  • We know that top gives the information about the CPU, MEMORY usage of a process in a Linux Box. For Solaris, we have prstat command. This gives the similar information.
  • Setting priority for a process in Linux : nice -n -20 <command>. Starts the "command" with highest priority. 19 is the lowest priority.
  • Setting priority for a running process : renice <priority> -p <pid>
  • Listing directory structure in tree format (I stole it from a website ;) ) : ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'

List will grow as and when I learn new things... :)


Monday, January 02, 2006

Creating Shared Libraries using GCC

I have used a lot of shared libraries. Then thought of building one with gcc. Before building, I thought that it will be difficult thing to do. After creating one, I felt like "Is that all we have to do ?????". I followed the steps:
  • Created a function in a file (myshared.c) without a main() function.

  • Compiled it with -enable-shared option and renamed to libmyshared.so. Thatz all. I have created a shared library.

  • For using it, I updated the LD_LIBRARY_PATH to the location where the .so is present. The other option is to run ldconfig.

  • To use it, I used gcc -lmyshared myfile.c.
    • -l option searches for libmyshared.so in the library path.
    • myfile.c is the one that uses the function that I have created in the myshared.c
  • Done.....

Thursday, November 24, 2005

Cache-Busting with Javascript

Got an opportunity to work with Javascript. On reading, got this information.

What it is?

As we all know, when we are browsing the pages fetched by the browser will be stored in the browser's cache. If we want to get the page from the server and not from the cache, using Javascript, it is very simple. Just add a random key-value pair to the URL. This should be unique for each request.

How to do?
Set your request URL as :
URL +"?rand=" + (Math.random() * 99999999);

How it works?

I assume that, the browser MAY maintain a key-value pair (Something like a HashTable), that contains the "URL of the requested page" as the key and the "contents of the page" as its value. So when a request is made, it first checks its cache and if it finds a page it returns it, else fetches from the server. In our case, since random() generates different values for each call, the browser will assume that this is a new request for a page and fetches it from the server. This in no way affect the server. Since the server may not know about the additional parameter, it will discard the variable.

Wednesday, November 09, 2005

printf(_"string") - What does that "_" mean?

Most of us might have encountered a code like the one mentioned above. What does this mean? Goooogling gave me its meaning.

Actually, a macro by name _(str) will be defined as follows:
#define _(str) gettext(str)

What gettext() does?

The gettext function translates the "str" from the natural language message into the user's language by looking up the translation in a message catalog.
From this, what I understand is, suppose I am using Latin language in my machine. And the string "str" is in English. So whenever printing, the gettext() translates English to Latin gives it to printf(). So I'll be seeing the messages in Latin.

Hope Microsoft also uses a similar kind of macro "_T" for displaying strings in multi-byte format.

Wednesday, October 05, 2005

Retrieve deleted mails in Microsoft Outlook

Today I SHIFT + Deleted all my mails from Outlook 2000 by mistake. I somewhere read that there is a way to recover the deleted mails. I Gooooooogled for sometime and I got a page that told me how to retrieve SHIFT + Deleted mails. As per that, I did the following steps.
  • I downloaded XVI32 and Hexadecimal editor.
  • Opened the "Personal Folders.pst" file with that.
  • Replaced some characters with space and saved the file. (Corrupted the existing pst file. Hopefully the headers)
  • Ran "scanpst.exe" on that file. (Comes with Windows. Recovers a corrupted pst file.)
  • Started outlook.
Wooooooooooooooooooooow.... All my mails were back in my Inbox.

Thursday, September 22, 2005

Is BMTC paying their conductors???????????

I am staying in Bangalore for the past 1 year and travelling in BMTC frequently for the past 6 months. I can count the number of times I got tickets from the conductors when I am going to office. My bus fare is Rs 3. When I give the amount, they will return me Re. 1. without giving me the ticket. Whenever I ask for ticket, the conductors will shake their head in such a way that it is not a problem. Or they will murmer something. (It is obvious that they are non-parlimentary).
Since I don't know Kannada, I am unable to argue with them for getting the ticket. Luckily???? or Unluckily checking inspectors never came into the busses at these times.

Lets do a simple calculation....

Assume that a conductor gets a minimum of
Rs. 60/- like this per day and there are 50 such conductors.
So the Govt. looses Rs 3000/- per day and for a month it is Rs. 90,000/-.

I am sure that the above amount is definitely less than the original amount. This money can be saved and the bus fare can be reduced a bit which will be helpful for thousands of people travelling allover Bangalore.

Will concerned people look into this??????