Wednesday, December 28, 2005

Know how exactly the credit card system works

Wanna know how exactly the credit card system works?

Priya:
I want to buy a Sony digital camera costing Rs.20,000, but I don?t have any cash right now.

Raj:
Why don?t you use your ICICI Bank credit card? Never heard them say ? Hum Hain Na ??

Priya:
I am quite skeptic about using these cards. I pay using the card, get a bill after 30 days and pay after another 20 days.

This is a maximum of 50 days interest free loan. Why does any bank do it?

If I borrow Rs.20,000 on personal loan at 11%.
Interest to be paid for 50 days = Rs. 20,000 * 11% * (50/365) = Rs. 301.40.

Here the bank is giving me a loan without interest when I use the credit card. Something is wrong somewhere!

Raj:
Well? let me tell you how it works when you use your card to pay for the camera.

  • You present your ICICI Bank credit card ? a VISA card.
  • Sony World swipes your card on a machine provided by Citibank. Lets call Citibank ? the acquirer bank and the process of Sony World swiping the card on that machine ? requesting authorization .
  • Citibank communicates with the card issuer ? ICICI Bank through VISA Network to check if the card is valid and has the required credit limit.
  • ICICI Bank reviews and approves / declines which is communicated back to Sony World.
  • You sign a receipt called Sales Draft given by Citibank. This is the obligation on your part to pay the money to ICICI Bank. Data on this receipt can be captured electronically and transmitted.



At the end of day or at the end of some period Sony World chooses:
  • Sony World submits the receipt you signed to Citibank who pays Sony World the money. Sony World pays Citibank a fee called Merchant Discount . Let us say this is 6% of the sale value = 6% * 20,000 = Rs. 1200
  • Citibank sends the receipt electronically to a Visa data center which in turn sends it to ICICI Bank.
  • ICICI Bank transfers the money to a settlement bank which in turn transfers the funds to Citibank.
  • Citibank pays ICICI Bank an Interchange Fee of 4% of the sale value = 4% * 20,000 = Rs. 800
  • 20 to 50 days later ICICI Bank gets the money from you ? and you don?t pay the interest!!



Priya:
Interesting! So Sony World pays more than the interest that I should have paid for the loan that I take. I, as a cardholder have the following benefits

1.        Convenience of not having to carry cash.
2.        Credit availability ? free of interest.


However what benefits does Sony World get for paying so much money? Isn?t it more profitable for them to take cash? They can save as much as Rs.1200.

Raj:
Certainly. Some retail outlets offer you discounts if you pay by cash, don?t they?

However when you don?t count the money that you are spending, you tend to buy more! Cards encourage this ? called impulse purchase .

If you did not have access to credit, you would not have bought the camera this month ? or may be not any time soon either. By accepting cards, the merchant is actually extending you credit at the risk of the card issuer. He pays money to the banks to carry that risk.

Priya:
So ICICI Bank uses this money to pay back to us when they announce 5% cash back. They insist that the Sales draft that I sign at the retailer should also be from ICICI Bank. This means they are saving on the Interchange Fee and also pay me a part of the Merchant Discount that they get.

Raj:
Exactly! If you have noticed, ICICI Bank gives you the cash back in the next credit card statement. They keep the ?cash back? money for a maximum of 60 days before passing on a part to you. This accrues them interest too.

Say if ICICI Bank earns an interest of 6% per annum for the cash they carry ? they get Rs.1000 * 6% * (60/365) = Rs. 10

That is not huge, but money nevertheless. And when you consider that almost everyone in this city shops with a credit card these days, it is a big sum.

Priya:
And that also explains why banks tie up with petrol pumps ? like ICICI Bank has tied up with HPCL and I could re-fuel there without having to pay the fuel surcharge of 2.5%. The card issuer and the acquiring bank is the same and that saves interchange fees.

Raj:
Good! You seem to have figured out how it all works! Let me summarize:




Priya: Sooper! Toh ab shopping chalein??
Lets not miss the Namma Bengaluru Shopping Festival!


All the numbers used to explain concepts in this article must be treated only as an example.

Merchant Discounts may vary from bank to bank. Interchange Fee is regulated by VISA and MasterCard.

QOTD

Quote of the Day

Being called very, very difficult is the beginning of success.
Until you've called very, very difficult you're really nobody at all. - Bette Davis


Regards
RK

Monday, December 26, 2005

QOTD

Quote of the Day:

During my eighty-seven years I have witnessed a whole succession of technological revolutions.
But none of them has done away with the need for character in the individual or the ability to think. - Bernard Baruch

Regards
RK

Friday, December 23, 2005

Oracle On-line Resources


Just follow the link....
       
http://www.rittman.net/archives/000814.html

You can find many on-line resources on this page.

Regards

RK

A competitor to Google !!


Hi All,

check out this link


http://beta.previewseek.com/

Superb Search Engine! I was really impressed.

Also preview seek is more intelligent than google! You type 'Mercury' in
google and it will also show you results of Planet mercury even if you
are looking for info on the element called Mercury. Where as in PreviewSeek
first you get different categories of mercury (Planet, Element and what
not!) and from there you can proceed only into that category. Even a
search for DSC 80, a sony digi cam gave astonishing result sets with
also categories on left side to preview its reviews or to buy it.

Good luck Preview Seek, check it out at beta.previewseek.com. Note that
it is still in beta!



Regards
RK

QOTD

Quote of the Day:

Words are one of our chief means of adjusting to all the situations of life.
The better control we have of our words, the more successful our adjustment will be....
- Bergan Evans


Have a great day....

Regards
RK

Thursday, December 22, 2005

QOTD

Quote of the Day:

Through perseverance many people win success out of what seemed destined to be certain failure.
- Benjamin Disraeli



Have a great day....

Regards
RK

Wednesday, December 21, 2005

Fw: 2 way mirrors


HI All,

Have you seen recent advertisement of M/S SAINT GOBAIN GLASSES shown in TELEVISION'S - Then you must have known about 2 Way mirror)


How to determine if a mirror is 2 way or not (Not a Joke!)?

Not to scare you, but to make sure that you aware. Many of the Hotels and Textile showrooms cheat the customers this way & watch privately.


HOW TO DETECT A 2-WAY MIRROR?

When we visit toilets, bathrooms, hotel rooms, changing rooms, etc.,
How many of you know for sure that the seemingly ordinary mirror hanging on the wall is a real mirror, or actually a 2-way mirror i.e., they can
see you, but you can't see them. There have been many cases of people installing 2-way mirrors in female changing rooms or bathroom or bedrooms.
It is very difficult to positively identify the surface by just looking at it. So, how do we determine with any amount of certainty what type of
mirror we are looking at?


CONDUCT THIS SIMPLE TEST:

Place the tip of your fingernail against the reflective surface and if there is a GAP between your fingernail and the image of the nail,
then it is a GENUINE mirror.

However, if your fingernail DIRECTLY TOUCHES the image of your nail, then BEWARE, IT IS A 2-WAY MIRROR! (There is someone seeing you from the
other side). So remember, every time you see a mirror, do the "fingernail test." It doesn't cost you anything. It is simple to do.

This is a really good thing to do. The reason there is a gap on a real mirror, is because the silver is on the back of the mirror UNDER the glass.
Whereas with a two-way mirror, the silver is on the surface. Keep it in mind! Make sure and check every time you enter in hotel rooms. May be someone is making a film on you.

Ladies:
Share this with your friends.
Men:
Share this with your sisters, wives, daughters, friends, colleagues, etc.
Pass this message to all Ur friends in the Contacts


Regards
RK

What is RSS


XML.com 
Published on XML.com http://www.xml.com/pub/a/2002/12/18/dive-into-xml.html
See this if you're having trouble printing code examples

 

What is RSS?
By
Mark Pilgrim
RSS is a format for syndicating news and the content of news-like sites, including major news sites like Wired, news-oriented community sites like Slashdot, and personal weblogs. But it's not just for news. Pretty much anything that can be broken down into discrete items can be syndicated via RSS: the "recent changes" page of a wiki, a changelog of CVS checkins, even the revision history of a book. Once information about each item is in RSS format, an RSS-aware program can check the feed for changes and react to the changes in an appropriate way.

RSS-aware programs called news aggregators are popular in the weblogging community. Many weblogs make content available in RSS. A news aggregator can help you keep up with all your favorite weblogs by checking their RSS feeds and displaying new items from each of them.

A brief history

But coders beware. The name "RSS" is an umbrella term for a format that spans several different versions of at least two different (but parallel) formats. The original RSS, version 0.90, was designed by Netscape as a format for building portals of headlines to mainstream news sites. It was deemed overly complex for its goals; a simpler version, 0.91, was proposed and subsequently dropped when Netscape lost interest in the portal-making business. But 0.91 was picked up by another vendor, UserLand Software, which intended to use it as the basis of its weblogging products and other web-based writing software.

In the meantime, a third, non-commercial group split off and designed a new format based on what they perceived as the original guiding principles of RSS 0.90 (before it got simplified into 0.91). This format, which is based on RDF, is called RSS 1.0. But UserLand was not involved in designing this new format, and, as an advocate of simplifying 0.90, it was not happy when RSS 1.0 was announced. Instead of accepting RSS 1.0, UserLand continued to evolve the 0.9x branch, through versions 0.92, 0.93, 0.94, and finally 2.0.

What a mess.

So which one do I use?

That's 7 -- count 'em, 7! -- different formats, all called "RSS". As a coder of RSS-aware programs, you'll need to be liberal enough to handle all the variations. But as a content producer who wants to make your content available via syndication, which format should you choose?


What does RSS look like?

Imagine you want to write a program that reads RSS feeds, so that you can publish headlines on your site, build your own portal or homegrown news aggregator, or whatever. What does an RSS feed look like? That depends on which version of RSS you're talking about. Here's a sample RSS 0.91 feed (adapted from XML.com's RSS feed):

<rss version="0.91">
 <channel>
   <title>XML.com</title>
   <link>http://www.xml.com/</link>
   <description>XML.com features a rich mix of information and services for the XML community.</description>
   <language>en-us</language>
   <item>
     <title>Normalizing XML, Part 2</title>
     <link>http://www.xml.com/pub/a/2002/12/04/normalizing.html</link>
     <description>In this second and final look at applying relational normalization techniques to W3C XML Schema data modeling, Will Provost discusses when not to normalize, the scope of uniqueness and the fourth and fifth normal forms.</description>
   </item>
   <item>
     <title>The .NET Schema Object Model</title>
     <link>http://www.xml.com/pub/a/2002/12/04/som.html</link>
     <description>Priya Lakshminarayanan describes in detail the use of the .NET Schema Object Model for programmatic manipulation of W3C XML Schemas.</description>
   </item>
   <item>
     <title>SVG's Past and Promising Future</title>
     <link>http://www.xml.com/pub/a/2002/12/04/svg.html</link>
     <description>In this month's SVG column, Antoine Quint looks back at SVG's journey through 2002 and looks forward to 2003.</description>
   </item>
 </channel>
</rss>

Simple, right? A feed comprises a channel, which has a title, link, description, and (optional) language, followed by a series of items, each of which have a title, link, and description.

Now look at the RSS 1.0 version of the same information:

<rdf:RDF
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns="http://purl.org/rss/1.0/"
 xmlns:dc="http://purl.org/dc/elements/1.1/"
>
 <channel rdf:about="http://www.xml.com/cs/xml/query/q/19">
   <title>XML.com</title>
   <link>http://www.xml.com/</link>
   <description>XML.com features a rich mix of information and services for the XML community.</description>
   <language>en-us</language>
   <items>
     <rdf:Seq>
       <rdf:li rdf:resource="http://www.xml.com/pub/a/2002/12/04/normalizing.html"/>
       <rdf:li rdf:resource="http://www.xml.com/pub/a/2002/12/04/som.html"/>
       <rdf:li rdf:resource="http://www.xml.com/pub/a/2002/12/04/svg.html"/>
     </rdf:Seq>
   </items>
 </channel>
 <item rdf:about="http://www.xml.com/pub/a/2002/12/04/normalizing.html">
   <title>Normalizing XML, Part 2</title>
   <link>http://www.xml.com/pub/a/2002/12/04/normalizing.html</link>
   <description>In this second and final look at applying relational normalization techniques to W3C XML Schema data modeling, Will Provost discusses when not to normalize, the scope of uniqueness and the fourth and fifth normal forms.</description>
   <dc:creator>Will Provost</dc:creator>
   <dc:date>2002-12-04</dc:date>    
 </item>
 <item rdf:about="http://www.xml.com/pub/a/2002/12/04/som.html">
   <title>The .NET Schema Object Model</title>
   <link>http://www.xml.com/pub/a/2002/12/04/som.html</link>
   <description>Priya Lakshminarayanan describes in detail the use of the .NET Schema Object Model for programmatic manipulation of W3C XML Schemas.</description>
   <dc:creator>Priya Lakshminarayanan</dc:creator>
   <dc:date>2002-12-04</dc:date>    
 </item>
 <item rdf:about="http://www.xml.com/pub/a/2002/12/04/svg.html">
   <title>SVG's Past and Promising Future</title>
   <link>http://www.xml.com/pub/a/2002/12/04/svg.html</link>
   <description>In this month's SVG column, Antoine Quint looks back at SVG's journey through 2002 and looks forward to 2003.</description>
   <dc:creator>Antoine Quint</dc:creator>
   <dc:date>2002-12-04</dc:date>    
 </item>
</rdf:RDF>

Quite a bit more verbose. People familiar with RDF will recognize this as an XML serialization of an RDF document; the rest of the world will at least recognize that we're syndicating essentially the same information. In fact, we're including a bit more information: item-level authors and publishing dates, which RSS 0.91 does not support.


by Mark Pilgrim

Despite being RDF/XML, RSS 1.0 is structurally similar to previous versions of RSS -- similar enough that we can simply treat it as XML and write a single function to extract information out of either an RSS 0.91 or RSS 1.0 feed. However, there are some significant differences that our code will need to be aware of:
1.        The root element is rdf:RDF instead of rss. We'll either need to handle both explicitly or just ignore the name of the root element altogether and blindly look for useful information inside it.
2.        RSS 1.0 uses namespaces extensively. The RSS 1.0 namespace is http://purl.org/rss/1.0/, and it's defined as the default namespace. The feed also uses http://www.w3.org/1999/02/22-rdf-syntax-ns# for the RDF-specific elements (which we'll simply be ignoring for our purposes) and http://purl.org/dc/elements/1.1/ (Dublin Core) for the additional metadata of article authors and publishing dates.

We can go in one of two ways here: if we don't have a namespace-aware XML parser, we can blindly assume that the feed uses the standard prefixes and default namespace and look for item elements and dc:creator elements within them. This will actually work in a large number of real-world cases; most RSS feeds use the default namespace and the same prefixes for common modules like Dublin Core. This is a horrible hack, though. There's no guarantee that a feed won't use a different prefix for a namespace (which would be perfectly valid XML and RDF). If or when it does, we'll miss it.

If we have a namespace-aware XML parser at our disposal, we can construct a more elegant solution that handles both RSS 0.91 and 1.0 feeds. We can look for items in no namespace; if that fails, we can look for items in the RSS 1.0 namespace. (Not shown, but RSS 0.90 feeds also use a namespace, but not the same one as RSS 1.0. So what we really need is a list of namespaces to search.)
3.        Less obvious but still important, the item elements are outside the channel element. (In RSS 0.91, the item elements were inside the channel. In RSS 0.90, they were outside; in RSS 2.0, they're inside. Whee.) So we can't be picky about where we look for items.
4.        Finally, you'll notice there is an extra items element within the channel. It's only useful to RDF parsers, and we're going to ignore it and assume that the order of the items within the RSS feed is given by their order of the item elements.

But what about RSS 2.0? Luckily, once we've written code to handle RSS 0.91 and 1.0, RSS 2.0 is a piece of cake. Here's the RSS 2.0 version of the same feed:

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
 <channel>
   <title>XML.com</title>
   <link>http://www.xml.com/</link>
   <description>XML.com features a rich mix of information and services for the XML community.</description>
   <language>en-us</language>
   <item>
     <title>Normalizing XML, Part 2</title>
     <link>http://www.xml.com/pub/a/2002/12/04/normalizing.html</link>
     <description>In this second and final look at applying relational normalization techniques to W3C XML Schema data modeling, Will Provost discusses when not to normalize, the scope of uniqueness and the fourth and fifth normal forms.</description>
     <dc:creator>Will Provost</dc:creator>
     <dc:date>2002-12-04</dc:date>    
   </item>
   <item>
     <title>The .NET Schema Object Model</title>
     <link>http://www.xml.com/pub/a/2002/12/04/som.html</link>
     <description>Priya Lakshminarayanan describes in detail the use of the .NET Schema Object Model for programmatic manipulation of W3C XML Schemas.</description>
     <dc:creator>Priya Lakshminarayanan</dc:creator>
     <dc:date>2002-12-04</dc:date>    
   </item>
   <item>
     <title>SVG's Past and Promising Future</title>
     <link>http://www.xml.com/pub/a/2002/12/04/svg.html</link>
     <description>In this month's SVG column, Antoine Quint looks back at SVG's journey through 2002 and looks forward to 2003.</description>
     <dc:creator>Antoine Quint</dc:creator>
     <dc:date>2002-12-04</dc:date>    
   </item>
 </channel>
</rss>

As this example shows, RSS 2.0 uses namespaces like RSS 1.0, but it's not RDF. Like RSS 0.91, there is no default namespace and items are back inside the channel. If our code is liberal enough to handle the differences between RSS 0.91 and 1.0, RSS 2.0 should not present any additional wrinkles.

How can I read RSS?

Now let's get down to actually reading these sample RSS feeds from Python. The first thing we'll need to do is download some RSS feeds. This is simple in Python; most distributions come with both a URL retrieval library and an XML parser. (Note to Mac OS X 10.2 users: your copy of Python does not come with an XML parser; you will need to install PyXML first.)

from xml.dom import minidom
import urllib

def load(rssURL):
 return minidom.parse(urllib.urlopen(rssURL))

This takes the URL of an RSS feed and returns a parsed representation of the DOM, as native Python objects.

The next bit is the tricky part. To compensate for the differences in RSS formats, we'll need a function that searches for specific elements in any number of namespaces. Python's XML library includes a getElementsByTagNameNS which takes a namespace and a tag name, so we'll use that to make our code general enough to handle RSS 0.9x/2.0 (which has no default namespace), RSS 1.0 and even RSS 0.90. This function will find all elements with a given name, anywhere within a node. That's a good thing; it means that we can search for item elements within the root node and always find them, whether they are inside or outside the channel element.

DEFAULT_NAMESPACES = \
 (None, # RSS 0.91, 0.92, 0.93, 0.94, 2.0
 'http://purl.org/rss/1.0/', # RSS 1.0
 'http://my.netscape.com/rdf/simple/0.9/' # RSS 0.90
 )

def getElementsByTagName(node, tagName, possibleNamespaces=DEFAULT_NAMESPACES):
 for namespace in possibleNamespaces:
   children = node.getElementsByTagNameNS(namespace, tagName)
   if len(children): return children
 return []

Finally, we need two utility functions to make our lives easier. First, our getElementsByTagName function will return a list of elements, but most of the time we know there's only going to be one. An item only has one title, one link, one description, and so on. We'll define a first function that returns the first element of a given name (again, searching across several different namespaces). Second, Python's XML libraries are great at parsing an XML document into nodes, but not that helpful at putting the data back together again. We'll define a textOf function that returns the entire text of a particular XML element.

def first(node, tagName, possibleNamespaces=DEFAULT_NAMESPACES):
 children = getElementsByTagName(node, tagName, possibleNamespaces)
 return len(children) and children[0] or None

def textOf(node):
 return node and "".join([child.data for child in node.childNodes]) or ""

That's it. The actual parsing is easy. We'll take a URL on the command line, download it, parse it, get the list of items, and then get some useful information from each item:

DUBLIN_CORE = ('http://purl.org/dc/elements/1.1/',)

if __name__ == '__main__':
 import sys
 rssDocument = load(sys.argv[1])
 for item in getElementsByTagName(rssDocument, 'item'):
   print 'title:', textOf(first(item, 'title'))
   print 'link:', textOf(first(item, 'link'))
   print 'description:', textOf(first(item, 'description'))
   print 'date:', textOf(first(item, 'date', DUBLIN_CORE))
   print 'author:', textOf(first(item, 'creator', DUBLIN_CORE))
   print

Running it with our sample RSS 0.91 feed prints only title, link, and description (since the feed didn't include any other information on dates or authors):

$ python rss1.py http://www.xml.com/2002/12/18/examples/rss091.xml.txt
title: Normalizing XML, Part 2
link: http://www.xml.com/pub/a/2002/12/04/normalizing.html
description: In this second and final look at applying relational normalization techniques to W3C XML Schema data modeling, Will Provost discusses when not to normalize, the scope of uniqueness and the fourth and fifth normal forms.
date:
author:

title: The .NET Schema Object Model
link: http://www.xml.com/pub/a/2002/12/04/som.html
description: Priya Lakshminarayanan describes in detail the use of the .NET Schema Object Model for programmatic manipulation of W3C XML Schemas.
date:
author:

title: SVG's Past and Promising Future
link: http://www.xml.com/pub/a/2002/12/04/svg.html
description: In this month's SVG column, Antoine Quint looks back at SVG's journey through 2002 and looks forward to 2003.
date:
author:

For both the sample RSS 1.0 feed and sample RSS 2.0 feed, we also get dates and authors for each item. We reuse our custom getElementsByTagName function, but pass in the Dublin Core namespace and appropriate tag name. We could reuse this same function to extract information from any of the basic RSS modules. (There are a few advanced modules specific to RSS 1.0 that would require a full RDF parser, but they are not widely deployed in public RSS feeds.)

Here's the output against our sample RSS 1.0 feed:

$ python rss1.py http://www.xml.com/2002/12/18/examples/rss10.xml.txt
title: Normalizing XML, Part 2
link: http://www.xml.com/pub/a/2002/12/04/normalizing.html
description: In this second and final look at applying relational normalization techniques to W3C XML Schema data modeling, Will Provost discusses when not to normalize, the scope of uniqueness and the fourth and fifth normal forms.
date: 2002-12-04
author: Will Provost

title: The .NET Schema Object Model
link: http://www.xml.com/pub/a/2002/12/04/som.html
description: Priya Lakshminarayanan describes in detail the use of the .NET Schema Object Model for programmatic manipulation of W3C XML Schemas.
date: 2002-12-04
author: Priya Lakshminarayanan

title: SVG's Past and Promising Future
link: http://www.xml.com/pub/a/2002/12/04/svg.html
description: In this month's SVG column, Antoine Quint looks back at SVG's journey through 2002 and looks forward to 2003.
date: 2002-12-04
author: Antoine Quint

Running against our sample RSS 2.0 feed produces the same results.

This technique will handle about 90% of the RSS feeds out there; the rest are ill-formed in a variety of interesting ways, mostly caused by non-XML-aware publishing tools building feeds out of templates and not respecting basic XML well-formedness rules. Next month we'll tackle the thorny problem of how to handle RSS feeds that are almost, but not quite, well-formed XML.

Related resources

XML.com Copyright © 1998-2005 O'Reilly Media, Inc.

QOTD


Quote of the Day:

The secret of success is constancy of purpose. - Benjamin Disraeli


Have a good Day

Regards
RK

Tuesday, December 20, 2005

Welcome to my Blog


Hi All,
Welcome to my TechGallery.
Here I would like to put some tech realted stuff, personality development related and other cool stuff, so that this blog would be useful not just for techies but also for non-techies and for people who are looking for some good non techincal blogs, which are useful for their 'real' personality development.
I would also like to put some funny and entertianing stuff here.
I'm a fan of Vivekananda, a modern philosopher from India.
I would also like to put some stuff related to Hindu mythology, because I love Hinduism and its mythology.
Hope this could be a good blog with support form all of you.
Hope and wish this will be a successful and a useful blog to all.

Also I would like to contribute to this blog by placing one quote per day.

So, come let's share and grow together....

Cheers
RK
"Known is a drop, unknown is an ocean"