Thursday, May 27, 2010

Recommended Car Dealers in Chennai

If you ever plan to buy used cars in Chennai then choose any of the following dealers.

  • Automart India Limited4/9, Nungambakkam, Chennai, Tamil Nadu 600006044 28227863
  • T S Mahalingam & SonsNo. 240, Royapettah High Road, Royapettah, Chennai, Tamil Nadu 600014 044 22442525
  • S R Finance For Immediate Response Contact - 9841 777 111
  • Cars & Caars53/11, Pillaiyar Koil Street, Kodambakkam, Chennai, Tamil nadu 600024
  • Super Cars1, A-Block, Chamiers Road, Nandanam, Chennai, Tamil nadu 600035044 24340152
  • Excel Marketing4th Floor, Peters Road, Royapettah, Chennai, Tamil nadu 600014044 28413090
  • Sun CarsIi Floor, Kasturba Nagar, 3rd Cross, Chennai, Tamil nadu 600020
  • UshaacarsHabibullah Rd, Thyagaraya Nagar, Chennai, Tamil Nadu 600017044 28340400  – 09841050625 – 044 28340399 (Fax) – 09841020625 (Mobile)
  • Concorde Motors LtdVelachery Road, Guindy, Chennai, Tamil Nadu044 22354014 Contact Number :       044 64541912
  • Grace Cars3, Pondy Bazar, Muthukrishnan Street, Behind Naidu Hall, T Nagar, Chennai, Tamil nadu 600017 044 28158933
  • Tata Car Sales803, Anna Salai, Opposite Lic Building, Chennai, Tamil Nadu 600002 044 28412892
  • Gvk Reddy & Sons20, T Nagar, Chennai, Tamil Nadu 600017 044 24337123
  • Anwar Forex Pvt LtdNo 18-A, Periyar Road, T Nagar, Chennai, Tamil nadu 600017 09840711007
  • India Auto Center (P) Ltd.12/28, Dr Sadasivam St, Thyagaraya Nagar, Chennai, Tamil Nadu 600017044 4202 5897 – 09994475991 (Mobile)
  • Car-Trade114/86, Drrksalai,, Mylapore, Chennai, Tamil Nadu 600004 044 28114789
  • Chennai Motors36, SH 113, Kodambakkam, Chennai, Tamil Nadu 600034044 24726555  – 09841023456  – 09841311111 (Mobile)
  • Jeejaycars2nd Main Rd, Velachery, Chennai, Tamil Nadu 600042044 4233 4041  – 09841097179  (Mobile)

Thursday, May 13, 2010

Google to Launch E-book Store

A credible threat to Amazon and Apple in the race to become the predominant electronic bookseller!

Google is planning to launch its own e-book store this summer, setting the scene for an all-out war with Apple and Amazon over the future of the digital book market.

Speaking at a panel discussion held by Random House today, Chris Palma, Google's manager for strategic partner development, said Google Editions would launch in June or July, offering digital versions of the titles on its book search service. The company says the e-books will work across multiple devices and unlike the e-books of iPad and Kindle, any device with a browser will be able to view the books. Customers with a Google account will be able to access the service.

Readers will be able to buy digital copies they find through Google's book search function and book retailers will be able to sell Google Editions on their own sites, getting most of the revenue from sales. Google Editions will be browser based, offering the latest digital books without locking customers to a specific device.

A Google spokesman said its plans had been in the pipeline for some time. "We've consistently maintained that we're committed to helping our partners find more ways to make their books accessible and available for purchase online, and we've been sharing details with our partner publishers for some time now. We hope to launch this to consumers in 2010."

Google joins the fray as the e-book market looks set to be the latest to be transformed by the internet, following on from music and films. Wholesale revenues from e-book sales in the US tripled in the third quarter of 2009 to $46.4m (£30.6m), from $13.9m during the same period in the previous year.

Google Books, formerly known as Google Print, was launched in 2004 but put on hold a year later when the Authors Guild of America and Association of American Publishers sued over alleged "massive copyright infringement".

Its attempt to create a vast digital library has raised anti-trust and copyright concerns. Earlier this year, the US justice department said the "plan still confers significant and possibly anti-competitive advantages on Google as a single entity".

But analysts say the arrival of e-book reading devices has been a shot in the arm for the book industry. The Kindle has been a hit, selling 2.4m units, and has a market share of 55%, according to Forrester, the market research company.

Apple said this week it has sold 1m iPads so far. Prices for the iPad begin at $499 and it is more expensive than a Kindle, which begins at $259. However, the iPad can also be used to surf the net, play films and store music.

Source: Guardian.Co.Uk

Go to and Request a CD to get your free copy of Ubuntu. It is totally FREE and no hidden cost.

Spread the love for Open Source.

PS: Do not Request for it if you are not going to use it. Let us not waste the resource, please! :)

I do not know why but I feel so “C++” today (This is the first time I am using C++ as a verb haha) and hence this knowledge share… :)

If you are a C++ programmer, you must know that it is not advisable to overload Virtual Functions even though the compiler will not complain.

… But why?

Look at the below sample code:

using std::cout;
class Base {
    virtual void foo(int f) {
        cout << f;
    virtual void foo(double f) {
        cout << f;
class Derived : public Base {
    void foo(int f) {
        cout << f;
int main() {
    Derived *d = new Derived;
    Base *b = d;
    cout << "Calling Base foo(double) through Base\n";
    b->foo(3.14); // Base Class foo(double) is called
    cout << "Calling Base foo(double) through Derived\n";
    d->foo(3.14);//Derived Class foo(int) is called
    delete b;

THiNK 1: What will happen if you try to overload Pure Virtual Functions in the Derived Class? Will my below code compile? Try it :)

using namespace std;
class base
virtual void foo()=0; //Pure virtual function

class Derived : public Base
void foo(int f) //Pure virtual function overloaded
{cout << f;}

int main()
Derived *dObj = new Derived();
Base *bObj = dObj;
dObj->foo(2); //What will happen?
bObj->foo(2); //What will happen?
return 0;

NOTE: While all pure virtual functions MUST NOT have a function body, Pure Virtual Destructor MUST have! Also, Pure Virtual Destructors NEED NOT be overridden in the derived class. As a proof, the below code will compile and link fine…

class AbstractBase {
  virtual ~AbstractBase() = 0; //Pure Virtual Destructor and hence AbstractBase is an Abstract Class
AbstractBase::~AbstractBase() {} // Implementation of Pure Virtual Destructor
class Derived : public AbstractBase {};
// No overriding of destructor necessary
int main() { Derived d; } 

Here are some of the major differences between Virtual and Pure Virtual Functions

Virtual Functions
  • Virtual functions have a function body.
  • Overriding can be done by the virtual functions. (Optional)
  • It is define as : virtual int myfunction();

Pure Virtual Functions
  • Pure virtual functions have no function body.
  • Overriding is must in pure virtual functions. (Must)
  • It is define as : virtual int myfunction() = 0;
  • A class is called as "abstract class" when it has at least one pure virtual function.
  • You can not create instance of "abstract class", rather you have to inherit the "abstract class" and overload all pure virtual function


Last weekend my FireNookz’ (desktop) HDD crashed and I had a chance to install RHEL 5 in my system. After a long time I was trying to mess with some of the UNIX commands. I am not that expert in SED and AWK however I can survive and I am still learning though… I shall also share a “Practically Useful GREP Commands” as soon as possible but for now… Here are few commands which every UNIX professional may find useful.


1. Display specific lines (based on line number) of a file using sed command

Syntax: $ sed -n -e Xp -e Yp FILENAME

sed : sed command, which will print all the lines by default.
-n : Suppresses output.
-e CMD : Command to be executed
Xp: Print line number X
Yp: Print line number Y
FILENAME : name of the file to be processed.

Example: $ sed -n -e 120p -e 145p -e 1050p /var/log/syslog

2. Viewing the content of var/log/cron from line number 101 to 110.

Syntax: sed -n M,Np FILENAME

M – Starting line number
N – Ending line number

Example: $ sed -n 101,110p /var/log/cron

3. Display first N lines of a file using head command

Syntax: head -n N FILENAME

Example: $ head -n 15 /var/log/maillog

4. Ignore last N lines of a file using head command and show only the remaining lines from the top of file.

Syntax: head -n -N FILENAME

Example: $ head -n -250 /var/log/secure

5. Display last N lines of the file using tail command

Syntax: tail -n N FILENAME

Example: $ tail -n 50 /var/log/messages

6. Ignore first N-1 lines of the file using tail command and show only the remaining of the lines.

Syntax: tail -n +N FILENAME

Example: $ tail -n +5 /etc/xinetd.conf

7. View growing log file in real time using tail command

Syntax: tail -f FILENAME

Example: $ tail -f /var/log/syslog

8. Display specific lines (based on line number) of a file using head and tail command

The example below will display line numbers 101 – 110 of /var/log/anaconda.log file

M – Starting line number
N – Ending line number

Syntax: cat file | tail -n +N | head -n (M-N+1)

Example: $ cat /var/log/anaconda.log | tail -n +101 | head -n 10

cat : prints the whole file to the stdout.
tail -n +101 : ignores lines upto the given line number, and then start printing lines after the given number.
head -n 10 : prints the first 10 line, that is 101 to 110 and ignores the remaining lines.

9. Display lines matching a pattern, and few lines following the match.
The following example displays the line that matches “Initializing CPU” from the /var/log/dmesg and 5 lines immediately after this match.
# grep "Initializing CPU#1" /var/log/dmesg
Initializing CPU#1
[Note: The above shows only the line matching the pattern]
# grep -A 5 "Initializing CPU#1" dmesg
Initializing CPU#1
Calibrating delay using timer specific routine.. 3989.96 BogoMIPS (lpj=1994982)
CPU: After generic identify, caps: bfebfbff 20100000 00000000 00000000
CPU: After vendor identify, caps:  bfebfbff 20100000 00000000 00000000
monitor/mwait feature present.
CPU: L1 I cache: 32K, L1 D cache: 32K
[Note: The above shows the line and 5 lines after the pattern matching]
Viewing N lines after the match with -A option.
Viewing N lines before the match with -B option.
Viewing N lines around the match with -C option.

10. Displaying specific bytes from a file.

Display first 40 bytes from syslog.
$ head -c40 /var/log/syslog

Display last 30 bytes from syslog.
$ tail -c30 /var/log/syslog

11. Viewing compressed log files

The following example explains how to display either the top 40 or the last 30 bytes of a file.

# Display the first N lines of a compressed file.
$ zcat file.gz | head -250

# Display the last N lines of a compressed file.
$ zcat file.gz | tail -250

# Ignoring the last N lines of a compressed file.
$ zcat file.gz | head -n -250

# Ignoring the first N lines of a compressed file.
$ zcat file.gz | tail -n +250

# Viewing the lines matching the pattern
$ zcat file.gz | grep -A2 'error'

# Viewing particular range of lines identified by line number.
$ zcat file.gz | sed -n -e 45p -e 52p

Happy Learning!