<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-34806632</id><updated>2012-02-10T19:29:14.611+05:30</updated><category term='Service Oriented Architecture - Bringing Versatility to Business'/><category term='Visual Studio'/><category term='Multi Module Assemblies'/><category term='Synchronous and Asynchronous Database Replication - An Application Framework'/><category term='Cloud Computing'/><category term='Regular Expressions'/><category term='VirtualBox'/><category term='GlassFish'/><category term='SQL Server'/><category term='Hibernate'/><category term='Globalized Solutions - Breaking the Barriers of Language'/><category term='Chromium OS'/><category term='Remote Debugging'/><category term='Unicode Compression'/><category term='RockMelt'/><category term='F#'/><category term='Windows'/><category term='msbuild'/><category term='Java'/><category term='NetBeans'/><category term='HCL Me X1'/><category term='TVP Vs XML'/><category term='Programming With Qt'/><category term='C#'/><category term='Windows Phone 7'/><category term='SCSU'/><category term='Google Buzz API'/><category term='ORM'/><category term='Indian Movies At Oscars'/><category term='ADO.NET Entity Framework'/><category term='Solaris'/><category term='Vocabulary'/><category term='VB.Net'/><category term='Android'/><category term='.NET'/><category term='Java 2 Micro Edition'/><title type='text'>My Tech Blog - Gautam</title><subtitle type='html'>This is my first blog. Hope you find it interesting. This blog is dedicated to technology.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default?start-index=101&amp;max-results=100'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>112</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-34806632.post-468453043678894033</id><published>2011-11-27T19:42:00.001+05:30</published><updated>2011-11-27T20:08:33.928+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><category scheme='http://www.blogger.com/atom/ns#' term='HCL Me X1'/><title type='text'>Backup &amp; Restore HCL Me X1</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;If you are planning to experiment with any Android phone/tablet, the first thing you would like to do is take a backup of it just in case things get messy. Typically in such situations you would like to take a backup of not only the user-data but also the operating system.&lt;br /&gt;&lt;br /&gt;In this post I will be discussing on how to create a backup and restore the backup. You don’t need to root your device for this since adb already has root access in HCL Me X1. But you will need &lt;b&gt;fastboot&lt;/b&gt; which can be obtained by compiling the Android source code.&lt;br /&gt;&lt;br /&gt;Remember that the source code can be built only on a Linux distribution, so make sure you have one (I would recommend Ubuntu 11.10). fastboot will be available at &lt;b&gt;&amp;lt;source_code_dir&amp;gt;/out/host/linux-x86/bin/fastboot&lt;/b&gt; after the compilation. If you don’t want to compile the source, you can try a compiled version of fastboot from the link specified at the end of the post; I built it on Ubuntu 11.10.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;b&gt;&lt;u&gt;Replacing the Recovery Image&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Before replacing the recovery image, create a backup of it in case you want to revert it back. Open the shell of the device using &lt;b&gt;adb shell&lt;/b&gt;. Find the mount-point of the recovery image using &lt;b&gt;cat /proc/mtd&lt;/b&gt;. There will be an entry like - &lt;b&gt;mtd6: 00a00000 00200000 "recovery"&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The recovery image can be created by reading the contents of the recovery mount-point and writing it into a file. This can be done using the following command - &lt;b&gt;cat /dev/mtd/mtd6 &gt; /sdcard/recovery.img&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The recovery image is written to the sdcard in this case, you can redirect it anywhere you want to. The recovery image can be flashed back using fastboot. For this you have to boot the device into the bootloader using &lt;b&gt;adb reboot-bootloader&lt;/b&gt;. The image can be flashed using the following command - &lt;b&gt;fastboot flash recovery recovery.img&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;You can backup other mount points like system, userdata, etc. using this method but it's a lot easier to do so using the ClockworkMod’s Recovery Image. You can download it from the link specified at the end of the post. Flash it using the same fastboot command as above.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Creating a Backup&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Reboot the device into the ClockworkMod's recovery mode using &lt;b&gt;adb reboot recovery&lt;/b&gt;. This console has options to backup and restore the operating system. However it does this using the sdcard, so make sure you have one in the device before you proceed.&lt;br /&gt;&lt;br /&gt;From the recovery console, select &lt;b&gt;Backup and Restore &amp;gt; Backup&lt;/b&gt;. After a series of messages the ROM will be backed up.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Restoring a Backup&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;From the recovery console, select &lt;b&gt;Backup and Restore &amp;gt; Restore&lt;/b&gt;. Select the backup you want to restore. After a series of messages the ROM will be restored.&lt;br /&gt;&lt;br /&gt;In case you are looking for the stock ROM you can find it &lt;a href="https://docs.google.com/open?id=0B6bFa1maIHJdNGFiOWQ1NjQtOTk0NC00MzA1LTgyYjUtODBkZjcyNmZiYTM5"&gt;here&lt;/a&gt;. It's not the exact stock ROM but an unrooted factory reseted ROM. And the original recovery image, ClockworkMod’s recovery image and the compiled version of fastboot is available &lt;a href="https://docs.google.com/open?id=0B6bFa1maIHJdNjg2ZDkzNTMtMzQ3NS00YzM2LTg2YjItNmRmMjQ3OTM4ODdh"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-468453043678894033?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/468453043678894033/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=468453043678894033' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/468453043678894033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/468453043678894033'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2011/11/backup-restore-hcl-me-x1.html' title='Backup &amp; Restore HCL Me X1'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-3696708858004530631</id><published>2011-11-19T18:40:00.001+05:30</published><updated>2011-11-19T20:23:36.895+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><category scheme='http://www.blogger.com/atom/ns#' term='HCL Me X1'/><title type='text'>Rooting &amp; Unrooting HCL Me X1</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Android is primarily an operating system based on the Linux kernel. So similar to other Linux based operating systems Android has a special user account known as the root or super-user. Unlike other user accounts which have limited control over the operating system this account has complete access to the system.&lt;br /&gt;&lt;br /&gt;However several (almost every) carriers and manufacturers don’t allow users to access this account mainly due to security concerns. Few carriers and manufacturers also do this because they don’t want users to access features for free when they can sell them :). Rooting is a process that allows users of phones/tablets to gain this privileged control (the root access). Here is an article with the &lt;a href="http://www.addictivetips.com/mobile/top-10-reasons-to-root-your-android-phone-2/"&gt;Top 10 Reasons To Root Your Android Phone&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Though rooting your device is not illegal it might void the warranty of the device. So think twice (make that trice) before rooting your device and make sure you have a good reason to do so. Read these articles on &lt;a href="http://androidandme.com/2009/09/hacks/why-not-everyone-should-root-their-android-phones/"&gt;The dangers of rooting your Android phone&lt;/a&gt; and &lt;a href="http://droidlessons.com/what-is-rooting-on-android-the-advantages-and-disadvantages/"&gt;What is Rooting on Android? The Advantages and Disadvantages&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The process of rooting a device changes from device to device. It usually involves using an exploit to either gain temporary root access or to flash a custom recovery image to attain permanent root access. There are popular exploits like GingerBreak, psneuter, etc. and applications like GingerBreak.apk, SuperOneClick, etc. for rooting a device.&lt;br /&gt;&lt;br /&gt;If you have read the articles and still want to go ahead let me remind you once again that trying to root your device might brick the device. &lt;b&gt;I am not responsible if you brick your device, so proceed at your own risk&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;b&gt;&lt;u&gt;Rooting the Device&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;You don’t require any exploit or any application to root HCL Me X1 and in-fact vulnerabilities like GingerBreak have already been patched. However it is possible to root the device using the adb shell so make sure you have the Android Debug Bridge (ADB) on your system.&lt;br /&gt;&lt;br /&gt;Connect the device through the USB and open the shell using &lt;b&gt;adb shell&lt;/b&gt; at the command prompt. If you are seeing the # here then that indicates that your adb shell has root access. Instead if you are seeing a $ this process won’t work for your device. Please put in a comment if you see $ so that me and the other readers know that HCL has changed something.&lt;br /&gt;&lt;br /&gt;Typically in most of the devices the adb shell does not have root access. However looks like the Android build of Me X1 isn’t a production build. Not sure if this was done knowingly or unknowingly by HCL but either way the tablet has root access through the adb shell. You can confirm this by trying one of these -&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Type &lt;b&gt;adb root&lt;/b&gt; at the command prompt, it will show you a message stating that &lt;b&gt;adb is already running as root&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Type &lt;b&gt;getprop ro.secure&lt;/b&gt; at the adb shell, it shows &lt;b&gt;0&lt;/b&gt;&lt;/li&gt;&lt;li&gt;The ro.secure property can also be examined from the &lt;b&gt;/default.prop&lt;/b&gt;. If this is 0 then it indicates that the adb will login as root by default. Note that this file cannot be changed since it’s a part of the ramdisk&lt;/li&gt;&lt;/ul&gt;Though the adb shell has root access, the su command which is used in Linux doesn’t work in Android since there is no su binary in Android. Download the su binary and the Superuser application from &lt;a href="http://forum.xda-developers.com/showthread.php?t=682828"&gt;here&lt;/a&gt; (&lt;a href="https://docs.google.com/open?id=0B6bFa1maIHJdZjM3ZmYyYmUtZmVkNC00ZDk0LWE1ZGQtNjJjYjI0NTI1M2U3"&gt;backup&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;There are two steps for rooting the device -&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Copying the su binary to the /system/bin directory&lt;/li&gt;&lt;/ol&gt;Since this directory is on the Android PATH, applications will be able to call su directly. However since the /system is a read-only file system (type &lt;b&gt;mount&lt;/b&gt; at the adb shell to check this), the file cannot be directly copied. Push the su binary from the system/bin directory in the zip to a temporary folder of the device (like /data/local/tmp) using &lt;b&gt;adb push&lt;/b&gt;. However note that the su binary does not work directly from this directory since applications on the /data file system do not have the setuid bit on. Remount the /system with read-write capabilities with the &lt;b&gt;mount -o remount -rw -t yaffs2 /dev/block/mtdblock2 /system&lt;/b&gt; command (check the actual device mount-point using mount). Copy the su binary to /system/bin and set the permissions of the binary using &lt;b&gt;chmod 4777 su&lt;/b&gt;.&lt;br /&gt;&lt;ol start="2"&gt;&lt;li&gt;Install the Superuser.apk from the system/app directory of the zip&lt;/li&gt;&lt;/ol&gt;Install the application using &lt;b&gt;adb install&lt;/b&gt; or transfer the file to the sdcard and install it from there. The Superuser application intercepts the calls made to the su binary and informs the user about the usage so that unauthorized applications cannot attain root access.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Unrooting the Device&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;To unroot the device, uninstall the Superuser.apk and delete the su binary from the /system/bin directory.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-3696708858004530631?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/3696708858004530631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=3696708858004530631' title='22 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/3696708858004530631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/3696708858004530631'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2011/11/rooting-unrooting-hcl-me-x1.html' title='Rooting &amp; Unrooting HCL Me X1'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>22</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-2011412702204761532</id><published>2011-11-04T01:20:00.001+05:30</published><updated>2011-11-04T01:20:40.714+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>A Primer To Android Development</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;As most of you know, Android is a mobile operating system initially developed by Android Inc. and presently being developed by the Open Handset Alliance led by Google. Android consists of a modified Linux kernel and software built on the &lt;a href="http://harmony.apache.org/"&gt;Apache Harmony&lt;/a&gt; framework (an open source Java implementation). The best thing I like about the Android platform is its versioning. The code names are released in alphabetic order of dessert items - Cupcake, Donut, Éclair, Froyo, Gingerbread, Ice Cream Sandwich and Jelly Bean.&lt;br /&gt;&lt;br /&gt;I am a newbie myself when it comes to Android, so the past few days I was trying to understand the various development models of Android. During my search I came across several good tutorials. This blog post is primarily to consolidate these tutorials for beginners like me.&lt;br /&gt;&lt;br /&gt;Android, like most open source Operating Systems allows developers to look at development from two different perspectives - working on Android (Application development) and working with Android (Operating System development, not possible with proprietary Operating Systems). Google understands this and therefore has two different sites for Android developers - &lt;a href="http://developer.android.com/index.html"&gt;Android Developers&lt;/a&gt; (has the Android SDK to build applications) and &lt;a href="http://source.android.com/index.html"&gt;Android Open Source Project&lt;/a&gt; (has the Android source code).&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;b&gt;&lt;u&gt;Android Developers&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The Android Developers site provides various Development Kits to create applications for the Android platform. The Android SDK allows developers to write applications for the Android platform in a slightly modified version of Java which runs on a virtual machine called Dalvik.&lt;br /&gt;&lt;br /&gt;The Android SDK can be installed by following the instructions specified here - &lt;a href="http://developer.android.com/sdk/installing.html"&gt;Installing the SDK&lt;/a&gt;. And in case you want to start programming right away, here’s a classic &lt;a href="http://developer.android.com/resources/tutorials/hello-world.html"&gt;Hello World&lt;/a&gt; tutorial.&lt;br /&gt;&lt;br /&gt;The Java APIs are pretty much what most developers use. However there might be situations where you would like to harness the true potential of the underlying Linux kernel through a low level language like C. Android does allow developers to do that but they cannot call the C binary directly as an application, they will need to go through Java with the JNI (Java Native Interface). This methodology of development is supported by the NDK (Native Development Kit).&lt;br /&gt;&lt;br /&gt;The Android NDK can be installed by following the instructions specified here - &lt;a href="http://developer.android.com/sdk/ndk/index.html"&gt;Installing the NDK&lt;/a&gt;. The NDK does come with the &lt;a href="http://developer.android.com/sdk/ndk/overview.html#samples"&gt;Hello World&lt;/a&gt; example but it isn’t as easy as the regular one.&lt;br /&gt;&lt;br /&gt;The most useful tool Android provides developers with is the &lt;a href="http://developer.android.com/guide/developing/tools/adb.html"&gt;Android Debug Bridge&lt;/a&gt;. It is a command line utility that supports several commands like pulling/pushing files to and fro the device, installing applications, etc. This is one tool that every Android developer will have to use irrespective of whether he is developing applications or playing with the source code. Please note that the adb is part of “Platform Tools” which can be installed through the Android SDK Manager. If you stuck trying to install adb, read &lt;a href="http://www.addictivetips.com/mobile/what-is-adb-and-how-to-install-it-android/"&gt;this&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Android Open Source Project&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The Android Open Source Project site provides access to the source code of Android. A majority of the operating system infrastructure of Android is distributed under the &lt;a href="http://en.wikipedia.org/wiki/Apache_License"&gt;Apache License&lt;/a&gt; and the core kernel is licensed under the &lt;a href="http://en.wikipedia.org/wiki/GNU_General_Public_License"&gt;GPLv2 License&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Certain developers use the Android Open Source Project to find vulnerabilities in the Android operating system and exploit them to execute tasks which cannot be done normally like attaining root access. Examples of these exploits are GingerBreak, psneuter, etc. Typically these vulnerabilities are patched for security reasons.&lt;br /&gt;&lt;br /&gt;A majority of developers use the Android Open Source Project to modify and customize the operating system to create custom images. Several vendors add device drivers for their hardware and install pre-release applications to the operating system before flashing it onto the device. There have also been situations wherein vendors have customized the UI to suit their product lines before flashing.&lt;br /&gt;&lt;br /&gt;You can obtain the complete source of the Android operating system by &lt;a href="http://source.android.com/source/downloading.html"&gt;Downloading the Source Tree&lt;/a&gt;. There is an awesome tutorial on building Android 2.3.7 on Ubuntu 11.10 (64 bit) &lt;a href="http://www.tuxtopia.nl/2011/10/20/guide-building-android-2-3-7-on-ubuntu-11-10-64-bit/"&gt;here&lt;/a&gt;. Even though the AOSP site specifies instructions on compiling the code, they are a bit outdated so visit the above link if you are stuck anywhere.&lt;br /&gt;&lt;br /&gt;Underneath the layers of application frameworks, Android is primarily a Linux kernel and therefore is built on a C library. Unlike the traditional Linux based operating systems, Android uses a custom tiny libc called bionic. C programs can be written in an Linux environment running on x86/x64 architectures and cross compiled to Android running on ARM by linking Bionic to gcc. &lt;a href="http://android-dls.com/wiki/index.php?title=Compiling_for_Android"&gt;Here&lt;/a&gt; is an excellent tutorial which shows you exactly that. The compiled code can be run using adb shell. However note that codes compiled this way aren’t recommended to be used with Java applications, the NDK should be used instead.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-2011412702204761532?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/2011412702204761532/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=2011412702204761532' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/2011412702204761532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/2011412702204761532'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2011/11/primer-to-android-development.html' title='A Primer To Android Development'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-1672337551816163753</id><published>2011-10-30T13:05:00.000+05:30</published><updated>2011-11-10T23:03:02.277+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><category scheme='http://www.blogger.com/atom/ns#' term='HCL Me X1'/><title type='text'>HCL Me X1 - A Customers Review</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;HCL Me X1 is HCL Technologies latest tablet and is one of the cheapest tablets available in India priced at Rs. 10,490. HCL released the X1 on October 14th. This is HCLs third tablet in the Me Series after the AE7-A1 and AM7-A1. I ordered the tablet on 19th through the &lt;a href="http://www.hclstore.in/Products/HCL-Handheld-Devices-Tablet-PCs/HCL/HCL-ME-Tablet-X1/pid-502255.aspx"&gt;HCL Store&lt;/a&gt; and received it this Tuesday. The entire week I have been toying with the tablet and here are my initial impressions on the Me X1.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-iuShQX1BHtE/Tqz6UhqGXUI/AAAAAAAACWk/xYdR_xRaZQE/s1600/109+HCL+ME+X1+-+A+Customers+Review+01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-iuShQX1BHtE/Tqz6UhqGXUI/AAAAAAAACWk/xYdR_xRaZQE/s1600/109+HCL+ME+X1+-+A+Customers+Review+01.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;This is my first Android tablet (my first Android device in fact) and one of the main reasons I bought the tab was to put up with the Android craze and have my share of fun with the Android platform. So expect to see several posts on the Android platform and the HCL Me X1 on this blog :).&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;I have been researching Android budget tablets for quite some time and finally decided to get myself the Me X1 (The Lenovo IdeaPad A1 was another option but decided to go with Me X1 after Lenovo priced it at Rs. 15000). Before going deeper into the review let me start by saying that the HCL Me X1 is a good tablet from a price to performance perspective and does a decent job in gaming, music and movies.&lt;br /&gt;&lt;br /&gt;The specifications of the HCL Me X1 can be found &lt;a href="http://www.hclstore.in/Products/HCL-Handheld-Devices-Tablet-PCs/HCL/HCL-ME-Tablet-X1/pid-502255.aspx"&gt;here&lt;/a&gt;. Though HCL hasn’t specified the actual Application Processor they are using, it is expected to be the &lt;a href="http://www.marvell.com/application-processors/armada-600/assets/armada610_pb.pdf"&gt;Marvell ARMADA 610&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;As evident from the above specifications, the HCL Me X1 doesn’t have a SIM card slot and so doesn’t support 3G directly. However it does support 3G through a USB dongle. This wasn’t much of an issue for me since I was planning to use my Nokia X6 as a WiFi hotspot (haven’t tried this yet). The touch responsiveness of the device is good and Gingerbread performs well on the device thanks to the 1 GHz processor.&lt;br /&gt;&lt;br /&gt;However the HCL Me X1 does have its shortcomings,&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A major drawback of the Me X1 is that it doesn’t have the Android Market on it. Whatever HCL may say, its App Store is no match to the Android Market&lt;/li&gt;&lt;li&gt;The device works for around 6-8 hours (usage + standby) with a single charge. I wasn’t satisfied with this as my Nokia X6 gives me much more than this. However benchmarking a tablet to a phone isn’t correct&lt;/li&gt;&lt;li&gt;The display would have been better if it was a slightly brighter&lt;/li&gt;&lt;/ul&gt;The biggest weakness of HCL is their delivery service. When most online sites ship within 2-3 days, HCL as a policy takes a minimum of 7 to 10 days to ship the product. However they sent me the devices in 7 days when I pestered them a lot. In fact I would recommend people to buy the device at a local Sangeetha store where you can get it immediately. On the other hand their customer care was good, especially the Live Chat, they answered a lot of questions and followed up on phone as well.&lt;br /&gt;&lt;br /&gt;I think the biggest technical improvement opportunities the Me X1 has are the integration of the Android Market and getting out an Ice Cream Sandwich as soon as possible. This should attract more customers towards the product.&lt;br /&gt;&lt;br /&gt;Before I wrap up, here are some excellent reviews on the tablet which helped me take a decision on the purchase -&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://arpandeb.com/10/2011/tech/hcl-me-x1-review-of-the-tablet-and-rooting-guide-hands-on-video-and-photographs.html"&gt;Arpan Deb’s review on the HCL Me X1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.viduba.com/video:QdlTYZFMwN3VGpEWPRlSqRmMOZzVR1TP"&gt;iGyaan’s video review on the HCL Me X1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://technopundit.com/hcl-me-x1-tablet-to-buy-or-not-to-buy/"&gt;HCL Me X1 – To Buy or Not To Buy&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;u&gt;Update 2011/11/10&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;After several discussions at arpandeb, we finally concluded that the actual Application Processor being used is the &lt;a href="http://www.telechips.com/eng/Product/mobile_pro09.asp"&gt;Telechips TCC 88xx&lt;/a&gt;. We also found striking similarities between HCL Me X1 and &lt;a href="http://www.cobyusa.com/?p=prod&amp;prod_num_id=10576&amp;pcat_id=3001"&gt;Coby Kyros MID7022&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-1672337551816163753?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/1672337551816163753/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=1672337551816163753' title='41 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/1672337551816163753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/1672337551816163753'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2011/10/hcl-me-x1-customers-review.html' title='HCL Me X1 - A Customers Review'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-iuShQX1BHtE/Tqz6UhqGXUI/AAAAAAAACWk/xYdR_xRaZQE/s72-c/109+HCL+ME+X1+-+A+Customers+Review+01.jpg' height='72' width='72'/><thr:total>41</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-4256356490656359582</id><published>2011-10-16T19:45:00.001+05:30</published><updated>2011-10-16T20:11:11.433+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Regular Expressions'/><title type='text'>Named Groups In Regular Expressions - Java 7</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;One of the new features added in Java 7 was the introduction of named groups in regular expressions through the &lt;a href="http://download.oracle.com/javase/7/docs/api/java/util/regex/package-summary.html"&gt;java.util.regex&lt;/a&gt; package. This article covers the various features of named groups in regular expressions and their syntax in Java.&lt;br /&gt;&lt;br /&gt;Parts of a Regular Expression can be grouped together by placing them inside round brackets. A major advantage of grouping is that various regex operators can be applied to these groups. Grouping is also useful for back-referencing a match. This allows developers to write regular expressions involving complex repetition patterns more easily.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;The value of the captured group can be retrieved directly or be referenced in replacement patterns for changing the format of an input string. Though Java supported Regular Expressions and Grouping through the java.util.regex package from Java 1.4, it was limited to numbered groups.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://docs.google.com/leaf?id=0B6bFa1maIHJdMzljZWZmZjktZGZhNy00NDJjLWEyZmItZTEyNzU1NjMwNjFi"&gt;Here’s&lt;/a&gt; an example showing how numbered groups can be used in Java. To read more about Grouping and Backreferences, check &lt;a href="http://www.regular-expressions.info/brackets.html"&gt;this&lt;/a&gt; out.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-8RH1jDPLlV0/Tprlt5E8DSI/AAAAAAAACWI/IsxuDRgRnno/s1600/108+Named+Groups+In+Regular+Expressions+-+Java+7+01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-8RH1jDPLlV0/Tprlt5E8DSI/AAAAAAAACWI/IsxuDRgRnno/s320/108+Named+Groups+In+Regular+Expressions+-+Java+7+01.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Parallel to numbered groups exists named groups. Named groups do not change the underlying concept of grouping and back-referencing but provide more readability to the regular expressions and make back-referencing easier for developers since remembering names is easier than remembering the relative position of a group.&lt;br /&gt;&lt;br /&gt;Named groups are already present in languages like Perl, Python and .NET but wasn’t available to Java prior to Java 7. Well, better late than never.&lt;br /&gt;&lt;br /&gt;The newly added RegEx constructs in Java 7 are as follows -&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;(?&amp;lt;name&amp;gt;) defines a named group "name"&lt;/li&gt;&lt;li&gt;\\k&amp;lt;name&amp;gt; back-references a named group "name"&lt;/li&gt;&lt;li&gt;${name} can be used to reference a captured group in a replacement string&lt;/li&gt;&lt;li&gt;group(String name) returns the value of the captured group&lt;/li&gt;&lt;/ul&gt;&lt;a href="https://docs.google.com/leaf?id=0B6bFa1maIHJdZjBjMTgwZmUtYjZhOC00YzIyLWFlZWItOTNiODBjMDk0MmNm"&gt;Here’s&lt;/a&gt; an example showing how named groups can be used in Java 7. To read more about Named Groups, check &lt;a href="http://www.regular-expressions.info/named.html"&gt;this&lt;/a&gt; out.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-qwhxw1r6qFY/TprmDiCR0II/AAAAAAAACWQ/n7ZjgfZqW5o/s1600/108+Named+Groups+In+Regular+Expressions+-+Java+7+02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-qwhxw1r6qFY/TprmDiCR0II/AAAAAAAACWQ/n7ZjgfZqW5o/s320/108+Named+Groups+In+Regular+Expressions+-+Java+7+02.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;However if you are using Java 7, I would strongly recommend using the java.util.regex package but if you are using a Java version older than 7, there are other alternatives available for named groups in Java like &lt;a href="http://code.google.com/p/named-regexp/"&gt;Named-RegExp&lt;/a&gt; and &lt;a href="http://jregex.sourceforge.net/"&gt;JRegex&lt;/a&gt;. These alternatives were highly recommended by other developers at &lt;a href="http://stackoverflow.com/questions/415580/regex-named-groups-in-java"&gt;stack overflow&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-4256356490656359582?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/4256356490656359582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=4256356490656359582' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/4256356490656359582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/4256356490656359582'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2011/10/named-groups-in-regular-expressions.html' title='Named Groups In Regular Expressions - Java 7'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-8RH1jDPLlV0/Tprlt5E8DSI/AAAAAAAACWI/IsxuDRgRnno/s72-c/108+Named+Groups+In+Regular+Expressions+-+Java+7+01.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-184986740767628097</id><published>2011-07-28T09:38:00.002+05:30</published><updated>2011-07-28T09:40:10.739+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Remote Debugging'/><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>Remote Debugging Java Applications</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;After my previous article about &lt;a href="http://gautam-m.blogspot.com/2011/07/remote-debugging-net-applications.html"&gt;Remote Debugging .NET Applications&lt;/a&gt; using Visual Studio 2010, I was curious to see how Remote Debugging works for Java Applications. This blog post covers Remote Debugging Java Applications using NetBeans 7.0.&lt;br /&gt;&lt;br /&gt;The basic concepts of Remote Debugging are the same for .NET and Java but the process of setting up the host and remote computers varies between Visual Studio and NetBeans. Similar to the .NET application used in the previous post, the screen shots correspond to a simple Java application which would popup a MessageDialog on a button click. Get the code &lt;a href="https://docs.google.com/viewer?a=v&amp;pid=explorer&amp;chrome=true&amp;srcid=0B6bFa1maIHJdZmEyMTEyZTItMTVkMy00NTAzLWE1ZDgtZWY2YTA0Mzk2ZjEw&amp;hl=en_US"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-8smqfYpw96k/TjDbChu8qAI/AAAAAAAACUc/5A5oQSLsYb4/s1600/107+Remote+Debugging+Java+Applications+01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://3.bp.blogspot.com/-8smqfYpw96k/TjDbChu8qAI/AAAAAAAACUc/5A5oQSLsYb4/s200/107+Remote+Debugging+Java+Applications+01.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-4rMw34EwHmk/TjDbDrhMO1I/AAAAAAAACUg/AxGXmoWqJNI/s1600/107+Remote+Debugging+Java+Applications+02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://2.bp.blogspot.com/-4rMw34EwHmk/TjDbDrhMO1I/AAAAAAAACUg/AxGXmoWqJNI/s200/107+Remote+Debugging+Java+Applications+02.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-_DoBZLY6pgU/TjDbEe69r3I/AAAAAAAACUk/c6AyEEUePcw/s1600/107+Remote+Debugging+Java+Applications+03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://4.bp.blogspot.com/-_DoBZLY6pgU/TjDbEe69r3I/AAAAAAAACUk/c6AyEEUePcw/s200/107+Remote+Debugging+Java+Applications+03.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-W05UlZiePg0/TjDbFBW_XqI/AAAAAAAACUo/LHvZ46e8Iqs/s1600/107+Remote+Debugging+Java+Applications+04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://3.bp.blogspot.com/-W05UlZiePg0/TjDbFBW_XqI/AAAAAAAACUo/LHvZ46e8Iqs/s200/107+Remote+Debugging+Java+Applications+04.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Before configuring the host and remote computers, it is vital to understand the Java Platform Debugger Architecture (JPDA). JPDA provides the infrastructure you need to build end-user debugger applications for the Java Platform. It includes the following APIs broken into three layers -&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;Java Debug Interface (JDI)&lt;/i&gt;, a high-level Java programming language interface including support for remote debugging&lt;/li&gt;&lt;li&gt;&lt;i&gt;Java Debug Wire Protocol (JDWP)&lt;/i&gt;, which defines the format of information and requests transferred between the process being debugged and the debugger front end&lt;/li&gt;&lt;li&gt;&lt;i&gt;JVM Tools Interface (JVM TI)&lt;/i&gt;, which is a low-level native interface that defines the services a JVM provides for tools such debuggers and profilers&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-7wMdIv54Mj8/TjDbFun_uYI/AAAAAAAACUs/xjZFFbMQL_w/s1600/107+Remote+Debugging+Java+Applications+05.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="228" src="http://1.bp.blogspot.com/-7wMdIv54Mj8/TjDbFun_uYI/AAAAAAAACUs/xjZFFbMQL_w/s320/107+Remote+Debugging+Java+Applications+05.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;&lt;u&gt;Configuring the Remote Computer&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Run the Java application using the &lt;i&gt;-Xdebug&lt;/i&gt; and &lt;i&gt;-Xrunjdwp&lt;/i&gt; options from the command line.&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;java -Xdebug -Xrunjdwp:transport=dt_socket,address=6000,server=y -jar RemoteDebugging.jar&lt;/i&gt;&lt;/blockquote&gt;Here’s a description of the options of the java command -&lt;br /&gt;&lt;br /&gt;&lt;table border="2" cellpadding="4"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&lt;center&gt;&lt;b&gt;Option&lt;/b&gt;&lt;/center&gt;&lt;/td&gt; &lt;td&gt;&lt;center&gt;&lt;b&gt;Description&lt;/b&gt;&lt;/center&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;center&gt;-Xdeubg&lt;/center&gt;&lt;/td&gt; &lt;td&gt;Enables debugging support in the VM&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;center&gt;-Xrunjdwp&lt;/center&gt;&lt;/td&gt; &lt;td&gt;Loads in-process debugging libraries and specifies the kind of connection to be made&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;The -Xrunjdwp option has several sub options. Here are the descriptions of the ones that are used above - &lt;br /&gt;&lt;br /&gt;&lt;table border="2" cellpadding="4"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&lt;center&gt;&lt;b&gt;Option&lt;/b&gt;&lt;/center&gt;&lt;/td&gt; &lt;td&gt;&lt;center&gt;&lt;b&gt;Description&lt;/b&gt;&lt;/center&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;center&gt;transport&lt;/center&gt;&lt;/td&gt; &lt;td&gt;Name of the transport to user in connecting to debugger application&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;center&gt;address&lt;/center&gt;&lt;/td&gt; &lt;td&gt;Transport address for the connection&lt;br /&gt;&lt;br /&gt;If server=n, attempt to attach to debugger application at this address&lt;br /&gt;If server=y, listen for a connection at this address&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;center&gt;server&lt;/center&gt;&lt;/td&gt; &lt;td&gt;If y, listen for a debugger application to attach&lt;br /&gt;If n, attach to the debugger application at the specified address&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;By default the application starts in suspended mode. In suspended mode the application waits for a debugger to attach itself to the server at the specified port before the application starts.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Configuring the Host Computer&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The host computer is the system running NetBeans 7.0. Open the code of the application in NetBeans and select &lt;i&gt;"Attach Debugger"&lt;/i&gt;. Specify the Connector as &lt;i&gt;SocketAttach&lt;/i&gt;, the &lt;i&gt;Host&lt;/i&gt; as the hostname of the remote system and the &lt;i&gt;Transport&lt;/i&gt; and &lt;i&gt;Port&lt;/i&gt; as specified above.&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Oq8P3O4iSPQ/TjDbGeqrghI/AAAAAAAACUw/BLQw1-cUdXs/s1600/107+Remote+Debugging+Java+Applications+06.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://3.bp.blogspot.com/-Oq8P3O4iSPQ/TjDbGeqrghI/AAAAAAAACUw/BLQw1-cUdXs/s200/107+Remote+Debugging+Java+Applications+06.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-kkbZWsscULs/TjDbHAc3OpI/AAAAAAAACU0/q1Pd197KSV4/s1600/107+Remote+Debugging+Java+Applications+07.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://3.bp.blogspot.com/-kkbZWsscULs/TjDbHAc3OpI/AAAAAAAACU0/q1Pd197KSV4/s200/107+Remote+Debugging+Java+Applications+07.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-sGgt72wQYVI/TjDbII7A7tI/AAAAAAAACU4/QWbYMyE-giQ/s1600/107+Remote+Debugging+Java+Applications+08.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://1.bp.blogspot.com/-sGgt72wQYVI/TjDbII7A7tI/AAAAAAAACU4/QWbYMyE-giQ/s200/107+Remote+Debugging+Java+Applications+08.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-rsXlb2mJ12c/TjDbJLII6vI/AAAAAAAACU8/58TAJjWWedM/s1600/107+Remote+Debugging+Java+Applications+09.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://1.bp.blogspot.com/-rsXlb2mJ12c/TjDbJLII6vI/AAAAAAAACU8/58TAJjWWedM/s200/107+Remote+Debugging+Java+Applications+09.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Specify the breakpoints in the code and they would hit appropriately. There are two major bottlenecks in Remote Debugging -&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The code from which the executable was built should be available at the time of debugging&lt;/li&gt;&lt;li&gt;Applications cannot be configured for Remote Debugging at runtime. The -Xdebug option must be specified at the instantiation of the application, making debugging live production code difficult&lt;/li&gt;&lt;/ul&gt;Before I conclude, here’s an article from OTN (Oracle Technology Network) on the &lt;a href="http://download.oracle.com/javase/6/docs/technotes/guides/jpda/"&gt;Java Platform Debugger Architecture&lt;/a&gt;. Visit it if you would like a deeper insight into Java Debugging. The schematic of the JPDA is from a weblog, check it out &lt;a href="http://manikandanmv.wordpress.com/2009/09/24/debugging-java-applications-with-netbeans/"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-184986740767628097?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/184986740767628097/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=184986740767628097' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/184986740767628097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/184986740767628097'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2011/07/remote-debugging-java-applications.html' title='Remote Debugging Java Applications'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-8smqfYpw96k/TjDbChu8qAI/AAAAAAAACUc/5A5oQSLsYb4/s72-c/107+Remote+Debugging+Java+Applications+01.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-8396869119142502344</id><published>2011-07-18T01:06:00.004+05:30</published><updated>2011-07-28T09:39:45.337+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Remote Debugging'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>Remote Debugging .NET Applications</title><content type='html'>From the past few days I have been stuck in resolving a bug which cropped up in one of my applications after it went to Production. The worst part was that it was a machine-specific issue and we couldn’t reproduce it in any of our development systems. While trying to find a solution for this, I came across the concept of Remote Debugging.&lt;br /&gt;&lt;br /&gt;Remote debugging is debugging a remotely running application through a development environment running on a system other than the one running the app. This is done by connecting the remote system to the system containing the development environment (in turn the debugger) through Sockets. Theoretically this is achieved in two steps -&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The remote computer would open a socket and listen to debug instructions through it. These instructions are feed to the application that is being debugged and the application responds appropriately&lt;/li&gt;&lt;li&gt;The debugger would connect to the socket opened by the remote system and send instructions through it&lt;/li&gt;&lt;/ul&gt;&lt;a name='more'&gt;&lt;/a&gt;Remote debugging can be used in many live situations. Examples include -&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Debugging a machine specific issue which can’t be reproduced on systems running the development environment (my exact requirement :))&lt;/li&gt;&lt;li&gt;Debugging applications which can run only on the server machine due to dependent third party libraries that cannot be used in the development machine&lt;/li&gt;&lt;/ul&gt;In this blog post, I will be focusing on Remote Debugging .NET applications through Visual Studio 2010. The screen shots correspond to a simple .NET application which would popup a MessageBox on a button click. Get the code &lt;a href="https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B6bFa1maIHJdNGRiZWY3ZDMtNDBlMi00ZGM0LTgyNTYtYmFjZDA2MzM1NDM5&amp;amp;hl=en_US"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-kxESvaUGcZ8/TiMuz9Wr5xI/AAAAAAAACRE/XJtbSu3iiBI/s1600/106+Remote+Debugging+.NET+Applications+01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://3.bp.blogspot.com/-kxESvaUGcZ8/TiMuz9Wr5xI/AAAAAAAACRE/XJtbSu3iiBI/s200/106+Remote+Debugging+.NET+Applications+01.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-IzXsmCfHPHA/TiMu04VtUTI/AAAAAAAACRI/KD83WwKLF0c/s1600/106+Remote+Debugging+.NET+Applications+02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://2.bp.blogspot.com/-IzXsmCfHPHA/TiMu04VtUTI/AAAAAAAACRI/KD83WwKLF0c/s200/106+Remote+Debugging+.NET+Applications+02.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-VB1crmdaHh4/TiMu1xkZwGI/AAAAAAAACRM/AzKeKoq_Dto/s1600/106+Remote+Debugging+.NET+Applications+03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://1.bp.blogspot.com/-VB1crmdaHh4/TiMu1xkZwGI/AAAAAAAACRM/AzKeKoq_Dto/s200/106+Remote+Debugging+.NET+Applications+03.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-0qsTSQTpNpQ/TiMu2pLETRI/AAAAAAAACRQ/IgbPBenz0Oc/s1600/106+Remote+Debugging+.NET+Applications+04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://1.bp.blogspot.com/-0qsTSQTpNpQ/TiMu2pLETRI/AAAAAAAACRQ/IgbPBenz0Oc/s200/106+Remote+Debugging+.NET+Applications+04.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;b&gt;&lt;u&gt;Configuring the Host Computer&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The host computer is the computer containing the development environment. This is the system running Visual Studio 2010. To enable Remote Debugging, make sure the following ports are open on the host computer -&lt;br /&gt;&lt;br /&gt;&lt;table border="2" cellpadding="4"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&lt;center&gt;&lt;b&gt;Ports&lt;/b&gt;&lt;/center&gt;&lt;/td&gt; &lt;td&gt;&lt;center&gt;&lt;b&gt;Protocol&lt;/b&gt;&lt;/center&gt;&lt;/td&gt; &lt;td&gt;&lt;center&gt;&lt;b&gt;Description&lt;/b&gt;&lt;/center&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;center&gt;135&lt;/center&gt;&lt;/td&gt; &lt;td&gt;&lt;center&gt;TCP&lt;/center&gt;&lt;/td&gt; &lt;td&gt;Required&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;center&gt;500, 4500&lt;/center&gt;&lt;/td&gt; &lt;td&gt;&lt;center&gt;UDP&lt;/center&gt;&lt;/td&gt; &lt;td&gt;Required if your domain policy requires network communication to be performed through IPSec&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;IPSec (Internet Protocol Security) is a protocol suite for securing IP communications authenticating and encrypting each IP packet of a communication session. Read more about IPSec &lt;a href="http://en.wikipedia.org/wiki/IPsec"&gt;here&lt;/a&gt;. However I am not going cover IPSec in this post.&lt;br /&gt;&lt;br /&gt;You can check if the ports are open by using the &lt;i&gt;telnet&lt;/i&gt; command at command prompt (&lt;i&gt;telnet&lt;/i&gt; isn’t installed by default on Windows 7. Install it from the &lt;i&gt;"Turn Windows features on or off"&lt;/i&gt; section in the Control Panel).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Configuring the Remote Computer&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;To configure the remote system for debugging, either download and install the &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=475"&gt;Microsoft Visual Studio 2010 Remote Debugger&lt;/a&gt; or copy the folder &lt;i&gt;Remote Debugger&lt;/i&gt; from the Visual Studio install path, which is typically &lt;i&gt;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE&lt;/i&gt;. The Remote Debugger is available for three configurations – x86, x64 and ia64.&lt;br /&gt;&lt;br /&gt;Visual Studio takes the .pdb files for debugging from the remote system for managed code. So copy the .pdb from the &lt;i&gt;bin/Debug&lt;/i&gt; folder of the project to the remote system. Put this folder on share so that Visual Studio can access it later.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-a4RxKHMkiBo/TiMu3hIjkgI/AAAAAAAACRU/Nz0NBkx_vwI/s1600/106+Remote+Debugging+.NET+Applications+05.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://2.bp.blogspot.com/-a4RxKHMkiBo/TiMu3hIjkgI/AAAAAAAACRU/Nz0NBkx_vwI/s200/106+Remote+Debugging+.NET+Applications+05.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-AOh2aCB23BU/TiMu4n4JI7I/AAAAAAAACRY/GlGvrem_sVc/s1600/106+Remote+Debugging+.NET+Applications+06.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://4.bp.blogspot.com/-AOh2aCB23BU/TiMu4n4JI7I/AAAAAAAACRY/GlGvrem_sVc/s200/106+Remote+Debugging+.NET+Applications+06.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;To enable Remote Debugging, make sure the following ports are open on the remote computer -&lt;br /&gt;&lt;br /&gt;&lt;table border="2" cellpadding="4"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&lt;center&gt;&lt;b&gt;Ports&lt;/b&gt;&lt;/center&gt;&lt;/td&gt; &lt;td&gt;&lt;center&gt;&lt;b&gt;Protocol&lt;/b&gt;&lt;/center&gt;&lt;/td&gt; &lt;td&gt;&lt;center&gt;&lt;b&gt;Description&lt;/b&gt;&lt;/center&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;center&gt;135, 139, 445&lt;/center&gt;&lt;/td&gt; &lt;td&gt;&lt;center&gt;TCP&lt;/center&gt;&lt;/td&gt; &lt;td&gt;Required&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;center&gt;137, 138&lt;/center&gt;&lt;/td&gt; &lt;td&gt;&lt;center&gt;UDP&lt;/center&gt;&lt;/td&gt; &lt;td&gt;Required&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;center&gt;500, 4500&lt;/center&gt;&lt;/td&gt; &lt;td&gt;&lt;center&gt;UDP&lt;/center&gt;&lt;/td&gt; &lt;td&gt;Required if your domain policy requires network communication to be performed through IPSec&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;center&gt;80&lt;/center&gt;&lt;/td&gt; &lt;td&gt;&lt;center&gt;TCP&lt;/center&gt;&lt;/td&gt; &lt;td&gt;Required for Web Server debugging&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;That’s it; both the host and remote computers are up and ready for Remote Debugging.&lt;br /&gt;&lt;br /&gt;Start the application on the remote system if it isn’t running already. Also start the Visual Studio Remote Debugging Monitor on the remote system using the &lt;i&gt;msvsmon.exe&lt;/i&gt; from the appropriate configuration folder in the Remote Debugger directory (The screenshot uses the x86 version).&lt;br /&gt;&lt;br /&gt;Open the code in Visual Studio on the host system and select &lt;i&gt;"Attach to Process"&lt;/i&gt;. Typically Visual Studio identifies the .pdb file of the remote system if it can. If it doesn’t, open the &lt;i&gt;Modules&lt;/i&gt; screen from &lt;i&gt;Debug -&amp;gt; Windows -&amp;gt; Modules&lt;/i&gt;.  Check the &lt;i&gt;Symbol Status&lt;/i&gt; of the .exe file which is being debugged and if it shows &lt;i&gt;"Cannot find or open the PDB file"&lt;/i&gt; right-click on it and select &lt;i&gt;"Load Symbols From"&lt;/i&gt; and specific the share path through the &lt;i&gt;"Symbol Path"&lt;/i&gt;.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-rbyG9Z2UUyk/TiMu577pAYI/AAAAAAAACRc/LBbdBVwrjmo/s1600/106+Remote+Debugging+.NET+Applications+07.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://4.bp.blogspot.com/-rbyG9Z2UUyk/TiMu577pAYI/AAAAAAAACRc/LBbdBVwrjmo/s200/106+Remote+Debugging+.NET+Applications+07.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-60NEF5DqQJA/TiMu6zAshYI/AAAAAAAACRg/nR2CK2S7d7A/s1600/106+Remote+Debugging+.NET+Applications+08.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://1.bp.blogspot.com/-60NEF5DqQJA/TiMu6zAshYI/AAAAAAAACRg/nR2CK2S7d7A/s200/106+Remote+Debugging+.NET+Applications+08.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-_oaQEzAz0ts/TiMu8Mmtt_I/AAAAAAAACRk/7_Ry0RO7zvU/s1600/106+Remote+Debugging+.NET+Applications+09.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://4.bp.blogspot.com/-_oaQEzAz0ts/TiMu8Mmtt_I/AAAAAAAACRk/7_Ry0RO7zvU/s200/106+Remote+Debugging+.NET+Applications+09.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-7-bIwWJzM_U/TiMu9BoX0_I/AAAAAAAACRo/4_qX228rbH4/s1600/106+Remote+Debugging+.NET+Applications+10.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://1.bp.blogspot.com/-7-bIwWJzM_U/TiMu9BoX0_I/AAAAAAAACRo/4_qX228rbH4/s200/106+Remote+Debugging+.NET+Applications+10.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Specify the breakpoints in the code and they would hit appropriately. There are two major bottlenecks in Remote Debugging -&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The code from which the executable was built should be available at the time of debugging&lt;/li&gt;&lt;li&gt;The above mentioned ports should be open for debugging. Most of the developers wouldn’t have administrative privileges on the client systems, so they would require people with sufficient privileges to open up these ports. However several organizations wouldn’t prefer opening up ports for incoming connections&lt;/li&gt;&lt;/ul&gt;Before I conclude, here’s an article from MSDN on how to &lt;a href="http://msdn.microsoft.com/en-us/library/bt727f1t%28v=VS.100%29.aspx"&gt;Set Up Remote Debugging&lt;/a&gt;. Visit it if you would like a deeper insight into Remote Debugging.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-8396869119142502344?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/8396869119142502344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=8396869119142502344' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/8396869119142502344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/8396869119142502344'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2011/07/remote-debugging-net-applications.html' title='Remote Debugging .NET Applications'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-kxESvaUGcZ8/TiMuz9Wr5xI/AAAAAAAACRE/XJtbSu3iiBI/s72-c/106+Remote+Debugging+.NET+Applications+01.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-4357828979906379838</id><published>2011-06-11T23:10:00.003+05:30</published><updated>2011-07-10T23:34:32.492+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='TVP Vs XML'/><title type='text'>TVPs Vs XML - An Analysis Through .NET</title><content type='html'>A common requirement of .NET applications that connect to databases like SQL Server is passing Lists and Arrays to the database server. Since most of these databases are relational, transferring these Lists of Objects isn’t really straight-forward.&lt;br /&gt;&lt;br /&gt;One way of passing these objects would be to send individual properties of these Objects to the database server, one object at a time. Obviously this is highly inefficient. Understanding this, various database management systems have provided various approaches to achieve this.&lt;br /&gt;&lt;br /&gt;There are two ways of passing such content to SQL Server –&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;Generating an XML from the List and passing it as a parameter&lt;/li&gt;&lt;li&gt;Creating a Data Table from the List and passing it as a Table Valued Parameter&lt;/li&gt;&lt;/ol&gt;Passing Lists and Arrays as XML to SQL Server has been a common approach since SQL Server 2000. From SQL Server 2008, Microsoft introduced a new way of passing Lists and Arrays – Table Valued Parameters.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;In this post, I will be evaluating the performance statistics of XML and TVP though a .NET application. I will be doing this through the &lt;b&gt;RetrieveStatistics&lt;/b&gt; method of the &lt;b&gt;SqlConnection&lt;/b&gt; class. This method retrieves the statistics of an operation through an &lt;b&gt;IDictionary&lt;/b&gt; which contains various performance metrics.&lt;br /&gt;&lt;br /&gt;This happens only when the &lt;b&gt;StatisticsEnabled&lt;/b&gt; property is set to true before executing the query/stored procedure. These metrics can be reset using the &lt;b&gt;ResetStatistics&lt;/b&gt; method of the &lt;b&gt;SqlConnection&lt;/b&gt; class. Here’s a typical usage of this method –&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-opouYG_6FiQ/Thnoz-w_0FI/AAAAAAAACFw/Q5KNFg0dVuM/s1600/105+TVPs+Vs+XML+-+An+Analysis+Through+.NET+01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/-opouYG_6FiQ/Thnoz-w_0FI/AAAAAAAACFw/Q5KNFg0dVuM/s320/105+TVPs+Vs+XML+-+An+Analysis+Through+.NET+01.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;The dictionary contains several provider statistics. There are 18 values that can be obtained from the Microsoft SQL Server provider. A detailed analysis of the metrics that can be obtained from the dictionary is available here - &lt;a href="http://msdn.microsoft.com/en-us/library/7h2ahss8%28v=vs.80%29.aspx"&gt;http://msdn.microsoft.com/en-us/library/7h2ahss8(v=vs.80).aspx&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The .NET application that is being used in this post to compare the performance of TVP and XML captures these 18 metrics into an object. However the final analysis focuses on three of these properties – Execution Time, Bytes Sent and Bytes Received.&lt;br /&gt;&lt;br /&gt;The application primarily inserts records into a table. The number of records and the value of the records are decided by the application. To understand the effect of load, the numbers of records are raised from 25 to 2500 in gradual steps of 25. For an accurate measurement each step is repeated for 25 times and an average of the metrics obtained is considered.&lt;br /&gt;&lt;br /&gt;Here are the graphs obtained for Execution Time, Bytes Sent and Bytes Received –&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Execution Time (Records on X-Axis and Time on Y-Axis)&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-j8WB1M82RMQ/Thno1Z_2IEI/AAAAAAAACF0/TlYTXUBXL9c/s1600/105+TVPs+Vs+XML+-+An+Analysis+Through+.NET+02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" src="http://3.bp.blogspot.com/-j8WB1M82RMQ/Thno1Z_2IEI/AAAAAAAACF0/TlYTXUBXL9c/s320/105+TVPs+Vs+XML+-+An+Analysis+Through+.NET+02.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Bytes Sent (Records on X-Axis and Bytes on Y-Axis)&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-IPwvviO46Oo/Thno2pAe50I/AAAAAAAACF4/QcPJY67kF4k/s1600/105+TVPs+Vs+XML+-+An+Analysis+Through+.NET+03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" src="http://3.bp.blogspot.com/-IPwvviO46Oo/Thno2pAe50I/AAAAAAAACF4/QcPJY67kF4k/s320/105+TVPs+Vs+XML+-+An+Analysis+Through+.NET+03.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;i&gt;Note – The Bytes Sent for OpenXML and Nodes are almost the same.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Sent Received (Records on X-Axis and Bytes on Y-Axis)&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-6uZ9qvpe7O8/Thno3ZIjwVI/AAAAAAAACF8/xpymZJ9INbs/s1600/105+TVPs+Vs+XML+-+An+Analysis+Through+.NET+04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" src="http://1.bp.blogspot.com/-6uZ9qvpe7O8/Thno3ZIjwVI/AAAAAAAACF8/xpymZJ9INbs/s320/105+TVPs+Vs+XML+-+An+Analysis+Through+.NET+04.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;i&gt;Note – The Bytes Received for TVP and Nodes are the same.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The observations that I could conclude are as follows –&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;The execution time for TVP is less than XML (Using OpenXML took more time than Nodes). The execution time of OpenXML was far higher than TVP&lt;/li&gt;&lt;li&gt;The bytes sent for XML was higher than for TVP. This is probably due to the XML tags that had to be added for the transfer&lt;/li&gt;&lt;li&gt;The bytes received in all the three cases were constant irrespective to the bytes sent. Though the number of bytes received for TVP and Nodes was the same, the number of bytes for OpenXML was slightly higher. This might be due to the procedure calls of sp_xml_preparedocument and sp_xml_removedocument&lt;/li&gt;&lt;/ul&gt;On a whole, TVPs look more promising than XML. However this was a very preliminary test and the actual results might vary in live environments.&lt;br /&gt;&lt;br /&gt;The SQL scripts and the Visual Studio project used in this post can be found &lt;a href="https://docs.google.com/leaf?id=0B6bFa1maIHJdYWNjZTNmMTMtZjM0YS00ZmU4LWI5NmYtOTRmY2U3YjA3YWRl&amp;amp;hl=en_US"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-4357828979906379838?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/4357828979906379838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=4357828979906379838' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/4357828979906379838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/4357828979906379838'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2011/06/tvps-vs-xml-analysis-through-net.html' title='TVPs Vs XML - An Analysis Through .NET'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-opouYG_6FiQ/Thnoz-w_0FI/AAAAAAAACFw/Q5KNFg0dVuM/s72-c/105+TVPs+Vs+XML+-+An+Analysis+Through+.NET+01.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-6762196334452282005</id><published>2011-03-22T00:53:00.003+05:30</published><updated>2011-07-10T23:40:44.664+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='VB.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='F#'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Multi Module Assemblies'/><category scheme='http://www.blogger.com/atom/ns#' term='msbuild'/><title type='text'>Compiling Visual Basic, C# &amp; F# Code Into A Single DLL Using msbuild</title><content type='html'>Recently I had a requirement in which a C# file had to be included in a VB.Net project. I knew I couldn’t add the file directly to the project, so I cut over the C# file to VB.Net. At first this seemed pretty obvious since Visual Studio maps every project to a programming language and uses an appropriate compiler to compile the files in the project.&lt;br /&gt;&lt;br /&gt;But giving it a deeper thought, I felt something didn’t fit the picture. Every project, rather every file that we compile using the .NET Framework generates Common Intermediate Language which is used by the Common Language Runtime. It is because of this CIL that we have language interoperability in .NET. So theoretically speaking, code written in different languages should be able to exist in a single assembly.&lt;br /&gt;&lt;br /&gt;Though I couldn’t find a way to directly add a C# file into a VB.Net project, I found a way to create a DLL from compiled VB.Net and C# code through a concept of the .NET framework called &lt;b&gt;Multi Module Assemblies&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;In .NET, the minimum unit of deployment is an assembly; Dynamic Link Libraries (DLLs), Executables (.exe), etc. are all assemblies. An assembly can contain multiple files like resource files, the manifest, etc. It can contain files of another type called &lt;b&gt;&lt;i&gt;netmodules&lt;/i&gt;&lt;/b&gt;. A netmodule is a unit of compilation. It cannot be deployed directly but can be linked into an assembly. netmodules written in different .NET languages can be linked into a single assembly.&lt;br /&gt;&lt;br /&gt;Unfortunately Visual Studio wasn’t built for Multi Module Assemblies, hence there’s no way to create a netmodule from a project in Visual Studio. However &lt;b&gt;msbuild&lt;/b&gt; allows us to create a netmodule from a project. There are typically three changes that have to be done to the .proj files (.fsproj, .vbproj, .csproj, etc.) for msbuild to generate a netmodule –&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;Changing the OutputType to Module. Visual Studio doesn’t recognize this output type, so even when you change this in the .proj files, Visual Studio won’t be able to show it in the Project Properties.&lt;/li&gt;&lt;li&gt;Exclude the AssemblyInfo file from the project. netmodules aren’t supposed to have an application manifest. If they do, the linker won’t be able to resolve which application manifest should be used when we are building an assembly from multiple netmodules.&lt;/li&gt;&lt;li&gt;If one netmodule is dependent on another netmodule, a reference to the dependent module should be specified using the AddModules XML node in the .proj file. Similar to DLLs, netmodules cannot be circularly referenced.&lt;/li&gt;&lt;/ol&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-lvAuc_CzymA/ThnqTBFwghI/AAAAAAAACGA/MStBF7dVeR8/s1600/104+Compiling+Visual+Basic%252C+C%2523+%2526+F%2523+Code+Into+A+Single+DLL+Using+msbuild+01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-lvAuc_CzymA/ThnqTBFwghI/AAAAAAAACGA/MStBF7dVeR8/s320/104+Compiling+Visual+Basic%252C+C%2523+%2526+F%2523+Code+Into+A+Single+DLL+Using+msbuild+01.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Once the .proj file has been modified, the project can be built using msbuild. If the project is a part of a solution, building the solution will create a netmodule for this project – &lt;b&gt;msbuild &lt;i&gt;solution_path&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Once the netmodules are created using msbuild, a DLL can be created from them using the Assembly Linker of the .NET framework - &lt;b&gt;al /t:library /out:&lt;i&gt;"path_to_dll" path_to_netmodules&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;With this we have a DLL which contains all the netmodules bundled into one assembly. To understand this better, let’s consider an example – I have three projects, one in F#, VB.Net and in C# under a solution called MultiLanguage.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-vf2cSOTt-BA/ThnqUa27ycI/AAAAAAAACGE/gbSt1jWR6tA/s1600/104+Compiling+Visual+Basic%252C+C%2523+%2526+F%2523+Code+Into+A+Single+DLL+Using+msbuild+02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-vf2cSOTt-BA/ThnqUa27ycI/AAAAAAAACGE/gbSt1jWR6tA/s320/104+Compiling+Visual+Basic%252C+C%2523+%2526+F%2523+Code+Into+A+Single+DLL+Using+msbuild+02.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;The .fsproj, .vbproj and .csproj have to be changed as mentioned above. From the netmodules obtained from msbuild, the DLL can be created using the assembly linker.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-UH78nN0EwT0/ThnqVuMeNaI/AAAAAAAACGI/pxHV4mrgU_A/s1600/104+Compiling+Visual+Basic%252C+C%2523+%2526+F%2523+Code+Into+A+Single+DLL+Using+msbuild+03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/-UH78nN0EwT0/ThnqVuMeNaI/AAAAAAAACGI/pxHV4mrgU_A/s320/104+Compiling+Visual+Basic%252C+C%2523+%2526+F%2523+Code+Into+A+Single+DLL+Using+msbuild+03.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;The sample solution and the build script can be downloaded from &lt;a href="https://docs.google.com/leaf?id=0B6bFa1maIHJdZWQ3ZmQ5NzMtMTJkNi00NzdiLThmYzQtNDRiMWUzYjcyNzA2&amp;hl=en_US"&gt;here&lt;/a&gt;. I automated the .proj changes using &lt;b&gt;Microsoft’s Build Engine API&lt;/b&gt;. You can give it a try &lt;a href="https://docs.google.com/leaf?id=0B6bFa1maIHJdODhmYjBlNWYtZmQ4ZC00OWU2LWIyYTUtOWUwMmNhNjk5Nzhj&amp;hl=en_US"&gt;here&lt;/a&gt;; it takes the .sln file as an input and modifies all the projects in the solution to generated netmodules.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-6762196334452282005?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/6762196334452282005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=6762196334452282005' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/6762196334452282005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/6762196334452282005'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2011/03/compiling-visual-basic-c-f-code-into.html' title='Compiling Visual Basic, C# &amp; F# Code Into A Single DLL Using msbuild'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-lvAuc_CzymA/ThnqTBFwghI/AAAAAAAACGA/MStBF7dVeR8/s72-c/104+Compiling+Visual+Basic%252C+C%2523+%2526+F%2523+Code+Into+A+Single+DLL+Using+msbuild+01.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-5037570250735386777</id><published>2011-03-13T23:20:00.006+05:30</published><updated>2011-07-10T23:44:03.700+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Phone 7'/><title type='text'>Windows Phone 7 - Hello World!</title><content type='html'>Ever since Nokia announced its partnership with Microsoft and made Windows Phone 7 its primary smartphone operating system, I anxiously wanted to give it a spin. So in this post, I am going to start by setting up a development environment for Windows Phone 7 followed by a simple Hello World example.&lt;br /&gt;&lt;br /&gt;Windows Phone 7 is primarily a successor of the Windows Mobile Platform (the last one in the line being Windows Mobile 6.5). It’s a major revamp in Microsoft’s Mobile strategy in terms of its application development model.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Windows Phone 7 no longer supports unmanaged code (Win32 and C++ are gone). It is purely built on Managed Code covering Silverlight, XNA and the .NET Framework (Programming Languages include C# and VB.Net). Here’s a nice article on Windows Phone 7 application development model - &lt;a href="http://blogs.msdn.com/b/abhinaba/archive/2010/03/13/windows-phone-7-series-programming-model.aspx"&gt;http://blogs.msdn.com/b/abhinaba/archive/2010/03/13/windows-phone-7-series-programming-model.aspx&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;To get started with Windows Phone 7 development, download the &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=04704ACF-A63A-4F97-952C-8B51B34B00CE"&gt;Windows Phone Developer Tools RTW (Release To Web)&lt;/a&gt;. It includes the following tools –&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;Visual Studio 2010 Express for Windows Phone&lt;/li&gt;&lt;li&gt;Windows Phone Emulator Resources&lt;/li&gt;&lt;li&gt;Silverlight 4 Tools for Visual Studio&lt;/li&gt;&lt;li&gt;XNA Game Studio 4.0&lt;/li&gt;&lt;li&gt;Microsoft Expression Blend for Windows Phone&lt;/li&gt;&lt;/ol&gt;If you are already using a higher version of Visual Studio or Expression Studio, this toolkit will install extensions to the existing IDEs. The release is also available as an .iso image. Though the Windows Phone 7 toolkit comes equipped with Expression Blend, for most of the basic applications the design mode of Visual Studio should be sufficient.&lt;br /&gt;&lt;br /&gt;To get a hands-on experience with Windows Phone 7, let’s take a simple application which accepts a username and greets him/her in the next page. The best part of Windows Phone 7 development is that it is pretty much in the lines of other Visual Studio project types we are familiar with like the Windows Forms Applications, WPF Applications and ASP.Net Applications where in the UI can be created easily using the designer and the business logic is maintained in a code beside event driven model in another .cs or .vb file depending on the programming language.&lt;br /&gt;&lt;br /&gt;As already mentioned, Windows Phone 7 is built on Silverlight and thereby every screen has a corresponding XAML (eXtensible Markup Language) page, each having its own code file. Movement between these XAML pages is made possible through an instance of a NavigationService class for every page.&lt;br /&gt;&lt;br /&gt;There are three important methods provided by NavigationService – Navigate, GoForward and GoBack. Navigate takes a Uri instance specifying the URI location and loads the XAML page specified.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NavigationService.Navigate(new Uri(“/NamePage.xaml”, UriKind.Relative));&lt;br /&gt;&lt;br /&gt;GoBack and GoForward loads the previous and next pages respectively.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NavigationService.GoBack();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NavigationService..GoForward();&lt;br /&gt;&lt;br /&gt;Parameters can be passed across XAML pages by appending them to the URL and retrieving them using the QueryString property of the NavigationContext object. This concept of Windows Phone 7 was very surprising. Since Mobile Applications are very similar to Windows Applications, passing parameters through URLs like Web Applications looked a bit off-track.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NavigationService.Navigate(new Uri(“/NamePage.xaml?name=” + name, UriKind.Relative));&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; string name = NavigationContext.QueryString[“name”];&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-OGzJajVYL8o/ThnrWu1WULI/AAAAAAAACGM/BLcVrsIVIsM/s1600/103+Windows+Phone+7+-+Hello+World%2521+01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://4.bp.blogspot.com/-OGzJajVYL8o/ThnrWu1WULI/AAAAAAAACGM/BLcVrsIVIsM/s200/103+Windows+Phone+7+-+Hello+World%2521+01.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-dDxmv4UjD3g/ThnrXVOI-QI/AAAAAAAACGQ/IEdn4ONfnUA/s1600/103+Windows+Phone+7+-+Hello+World%2521+02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://1.bp.blogspot.com/-dDxmv4UjD3g/ThnrXVOI-QI/AAAAAAAACGQ/IEdn4ONfnUA/s200/103+Windows+Phone+7+-+Hello+World%2521+02.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Download the example code &lt;a href="https://docs.google.com/leaf?id=0B6bFa1maIHJdMjRiMjQ5NmMtMzQyNS00OWMxLWIxZGItN2Y2MmNmYTJlYzUw&amp;amp;hl=en_US"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-5037570250735386777?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/5037570250735386777/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=5037570250735386777' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/5037570250735386777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/5037570250735386777'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2011/03/windows-phone-7-hello-world.html' title='Windows Phone 7 - Hello World!'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-OGzJajVYL8o/ThnrWu1WULI/AAAAAAAACGM/BLcVrsIVIsM/s72-c/103+Windows+Phone+7+-+Hello+World%2521+01.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-8340313946338899693</id><published>2011-01-30T22:46:00.005+05:30</published><updated>2011-07-10T23:53:35.090+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='ADO.NET Entity Framework'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><category scheme='http://www.blogger.com/atom/ns#' term='ORM'/><title type='text'>Introducing ADO.NET Entity Framework</title><content type='html'>This is the third and final part of my ORM series in which I am going to introduce the ADO.NET Entity Framework, an in-built Object Relational Mapping model of the .NET Framework.&lt;br /&gt;&lt;br /&gt;Similar to the previous post, this one also covers the same four principles –&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Configuring a .NET project for the ADO.NET Entity Framework&lt;/li&gt;&lt;li&gt;Inserting data from Objects directly&lt;/li&gt;&lt;li&gt;Retrieving data using Object Lists and LINQ&lt;/li&gt;&lt;li&gt;Changing the Database Management System&lt;/li&gt;&lt;/ul&gt;&lt;a name='more'&gt;&lt;/a&gt;Though the screen-shots and the example codes emphasize on C#, the principles are same for all the .NET languages.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Requirements to run the example in this article – Visual C# Express, SQL Server Express and MySQL. Download Visual C# Express &lt;a href="http://www.microsoft.com/express/Downloads/"&gt;here&lt;/a&gt;, SQL Server Express &lt;a href="http://www.microsoft.com/express/Database/"&gt;here&lt;/a&gt; and MySQL &lt;a href="http://dev.mysql.com/downloads/"&gt;here&lt;/a&gt;.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Configuring a .NET project for the ADO.NET Entity Framework&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;To configure a .NET project to work with the ADO.NET Entity Framework, an Entity Data Model is added to the project. The Entity Data Model is primarily a schematic representation of the database tables stored as a XML file. Each of these tables is converted into a class and foreign key relationships between these tables are maintained as Lists inside the objects.&lt;br /&gt;&lt;br /&gt;Visual Studio provides a Wizard to create Entity Data Models. Right click on the project and select &lt;i&gt;New Item&lt;/i&gt; from the &lt;i&gt;Add&lt;/i&gt; menu. Choose the &lt;i&gt;ADO.NET Entity Data Model&lt;/i&gt;  template from the chooser. There are two approaches available to build the Entity Data Model – &lt;b&gt;Database First Approach&lt;/b&gt; and the &lt;b&gt;Model First Approach&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;In the Database First Approach, the Entity Data Model is generated from existing table structures. The wizard allows the developer to setup a connection by providing the Database Server name and the Database name. The wizard also allows developers to choose tables, views and stored procedure that are to be a part of the Entity Data Model.&lt;br /&gt;&lt;br /&gt;In the Model First Approach, the Entity Data Model is created from scratch and the database tables are generated based on this model.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-UIdPLACAx6M/ThnsPEIQDkI/AAAAAAAACGU/yTl9OuBPQvs/s1600/102+Introducing+ADO.NET+Entity+Framework+01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://4.bp.blogspot.com/-UIdPLACAx6M/ThnsPEIQDkI/AAAAAAAACGU/yTl9OuBPQvs/s200/102+Introducing+ADO.NET+Entity+Framework+01.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Rauks8qJj5o/ThnsQbVegKI/AAAAAAAACGY/3yh4NjUxVhA/s1600/102+Introducing+ADO.NET+Entity+Framework+02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://3.bp.blogspot.com/-Rauks8qJj5o/ThnsQbVegKI/AAAAAAAACGY/3yh4NjUxVhA/s200/102+Introducing+ADO.NET+Entity+Framework+02.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-EWtIVB4_qPI/ThnsRKEwBeI/AAAAAAAACGc/wwGPi3rczZc/s1600/102+Introducing+ADO.NET+Entity+Framework+03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://3.bp.blogspot.com/-EWtIVB4_qPI/ThnsRKEwBeI/AAAAAAAACGc/wwGPi3rczZc/s200/102+Introducing+ADO.NET+Entity+Framework+03.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-zW0g5PkvDYc/ThnsR0CC_vI/AAAAAAAACGg/vM44zNgzQes/s1600/102+Introducing+ADO.NET+Entity+Framework+04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://2.bp.blogspot.com/-zW0g5PkvDYc/ThnsR0CC_vI/AAAAAAAACGg/vM44zNgzQes/s200/102+Introducing+ADO.NET+Entity+Framework+04.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Once the wizard completes, a designer opens up which shows a schematic representation of the generated .edmx file. This file contains the table mappings as a XML along with a code behind file (.Designder.cs extension) for the auto-generated classes corresponding to the tables. However a drawback with the Entity Data Model is that it combines all the classes into a single file which makes manual maintainence a little difficult.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-KLAiC23f-Bg/ThnsTYwDehI/AAAAAAAACGk/Js02BvTJNb4/s1600/102+Introducing+ADO.NET+Entity+Framework+05.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://1.bp.blogspot.com/-KLAiC23f-Bg/ThnsTYwDehI/AAAAAAAACGk/Js02BvTJNb4/s200/102+Introducing+ADO.NET+Entity+Framework+05.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-SwH-lDOAfbs/ThnsUNqlgLI/AAAAAAAACGo/7WrFvoiCTNs/s1600/102+Introducing+ADO.NET+Entity+Framework+06.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://1.bp.blogspot.com/-SwH-lDOAfbs/ThnsUNqlgLI/AAAAAAAACGo/7WrFvoiCTNs/s200/102+Introducing+ADO.NET+Entity+Framework+06.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;I used the Database First approach to create the sample application to insert and retrieve data. You can get the MySQL and SQL Server scripts along with the Visual Studio solution &lt;a href="https://docs.google.com/leaf?id=0B6bFa1maIHJdOGVkYjNmN2EtNDI3Mi00Y2JkLTgxNDQtMzJmMjQ3NTYxMzRh&amp;hl=en_US"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Inserting data from Objects directly&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;The Entity Model generates a class which inherits from ObjectContext. This class acts as a data manager to connect to the Database Management System to retrieve, insert, update and delete records.&lt;br /&gt;&lt;br /&gt;ADO.NET Entity Framework maintains the records of the table as a List of objects. To insert new records into the table, create new objects, add them to the appropriate lists and then save the changes using a ObjectContext instance. The following piece of code shows how objects can be persisted –&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; using (Context context = new Context())&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Create the object&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; context.Objects.Add(object);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; context.SaveChanges();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&lt;br /&gt;ADO.NET Entity Framework does a wonderful job while storing objects with foreign key dependencies. These dependencies are maintained as lists inside objects and while storing these records, the appropriate identity keys are inserted into the child tables. However this feature is limited to a few DBMS like SQL Server.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Retrieving data using LINQ and Object Lists&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;The ADO.NET Entity Framework retrieves data from the back-end tables in the form of object lists. So accessing records is as simple as iterating through these lists.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; using (Context context = new Context())&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foreach (Object object in context.Objects)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // use the object appropriately&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&lt;br /&gt;Since data retrieval is in the form of lists, developers can piggy-back on an other .NET framework feature – LINQ (Language Integrated Query). LINQ makes conditional querying of data a lot easier.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; using (Context context = new Context())&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var objects = &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; from object in context.Objects&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; where “condition”&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; select object;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // use the objects&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-UETdHRpf--g/ThnsVGRUTaI/AAAAAAAACGs/BST7X15-nG4/s1600/102+Introducing+ADO.NET+Entity+Framework+07.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://2.bp.blogspot.com/-UETdHRpf--g/ThnsVGRUTaI/AAAAAAAACGs/BST7X15-nG4/s200/102+Introducing+ADO.NET+Entity+Framework+07.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;u&gt;&lt;b&gt;Changing the Database Management System&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Before changing the DBMS of the Entity Model, it is important to understand how the ADO.NET Entity Framework stores the connection strings and the mapping between classes and the back-end tables. The connection string is stored in the App.Config file of the project and the table mappings are stored as a XML in the form of the .edmx file as mentioned earlier.&lt;br /&gt;&lt;br /&gt;Unfortunately the ADO.NET Entity Framework slightly varies it’s implementation with the DBMS. Because of this modifying the XML manually isn’t easy. For Example, ADO.NET Entity Framework does not support foreign key constraints in the form of lists for DBMS like MySQL.&lt;br /&gt;&lt;br /&gt;The sample application contains another Entity Model which connects to a MySQL Server containing similar tables. To use MySQL with the ADO.NET Entity Framework, an connector is needed. The &lt;i&gt;MySQL Connector/NET&lt;/i&gt; is available &lt;a href="http://dev.mysql.com/downloads/connector/net/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-6yJ-uCx1O7w/ThnsWB4FAnI/AAAAAAAACGw/VeSr4ziVp8k/s1600/102+Introducing+ADO.NET+Entity+Framework+08.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://4.bp.blogspot.com/-6yJ-uCx1O7w/ThnsWB4FAnI/AAAAAAAACGw/VeSr4ziVp8k/s200/102+Introducing+ADO.NET+Entity+Framework+08.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-vcy0iNXAio0/ThnsXUKzI6I/AAAAAAAACG0/kB-d7AHoZX0/s1600/102+Introducing+ADO.NET+Entity+Framework+09.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://3.bp.blogspot.com/-vcy0iNXAio0/ThnsXUKzI6I/AAAAAAAACG0/kB-d7AHoZX0/s200/102+Introducing+ADO.NET+Entity+Framework+09.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="2"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-z2ltTwcbPGY/ThnsYboReUI/AAAAAAAACG4/reRL841kP7s/s1600/102+Introducing+ADO.NET+Entity+Framework+10.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://2.bp.blogspot.com/-z2ltTwcbPGY/ThnsYboReUI/AAAAAAAACG4/reRL841kP7s/s200/102+Introducing+ADO.NET+Entity+Framework+10.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-8340313946338899693?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/8340313946338899693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=8340313946338899693' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/8340313946338899693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/8340313946338899693'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2011/01/introducing-adonet-entity-framework.html' title='Introducing ADO.NET Entity Framework'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-UIdPLACAx6M/ThnsPEIQDkI/AAAAAAAACGU/yTl9OuBPQvs/s72-c/102+Introducing+ADO.NET+Entity+Framework+01.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-6329399225413329511</id><published>2011-01-05T00:37:00.002+05:30</published><updated>2011-07-11T00:13:03.060+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='ORM'/><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>Introducing Hibernate In Java Using NetBeans</title><content type='html'>In one of my recent posts, I introduced the theoretical topic of Object-Relational Mapping (ORM) - &lt;a href="http://gautam-m.blogspot.com/2010/11/object-relation-mapping.html"&gt;http://gautam-m.blogspot.com/2010/11/object-relation-mapping.html&lt;/a&gt;. In this post I am going to take a step forward and introduce Hibernate – an open source Java persistence framework from JBoss.&lt;br /&gt;&lt;br /&gt;This post covers four basic principles of Hibernate – &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Configuring a Java project for Hibernate&lt;/li&gt;&lt;li&gt;Inserting data using Object Persistence&lt;/li&gt;&lt;li&gt;Retrieving data using Hibernate Query Language (HQL)&lt;/li&gt;&lt;li&gt;Changing the database configuration to connect to another DBMS&lt;/li&gt;&lt;/ul&gt;&lt;a name='more'&gt;&lt;/a&gt;Though the post and screen-shots emphasize on NetBeans, the concept  is the same for all IDEs. Hibernate configuration files can definitely be written without an IDE but make sure all the required class libraries are properly referenced.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Requirements to run the example in the article – NetBeans, MySQL, JavaDB, Java and Hibernate. Java can be downloaded &lt;a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html"&gt;here&lt;/a&gt;, installing the &lt;a href="http://netbeans.org/downloads/"&gt;All NetBeans&lt;/a&gt; package will cover JavaDB and Hibernate and MySQL can be downloaded &lt;a href="http://dev.mysql.com/downloads/"&gt;here&lt;/a&gt;.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Configuring a Java project for Hibernate&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;The crux of Hibernate is the creation and usage of configuration files. There are three types of configuration files which are to be setup for Hibernate –&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The .cfg.xml file – this is the main configuration file which contains information about the database like the URL, the driver, the username and password, etc. Hibernate can optimize it’s behavior depending on the DBMS being used. To facilitate this, a property called Dialect is specified. However this is an optional property as Hibernate can deduce this depending on the JDBC metadata returned by the driver&lt;/li&gt;&lt;li&gt;The .reveng.xml file – this file holds the data corresponding to the schemas and tables being utilized by Hibernate in the application&lt;/li&gt;&lt;li&gt;The .hbm.xml – these files maps POJOs (Plain Old Java Objects) to the table schemas of the database&lt;/li&gt;&lt;/ol&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-qB5IEXvsSck/ThnxAKSrUEI/AAAAAAAACG8/3YKrfWdb22c/s1600/101+Introducing+Hibernate+In+Java+Using+NetBeans+01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://1.bp.blogspot.com/-qB5IEXvsSck/ThnxAKSrUEI/AAAAAAAACG8/3YKrfWdb22c/s200/101+Introducing+Hibernate+In+Java+Using+NetBeans+01.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-qLYrlX7M6Vs/ThnxA0NuUqI/AAAAAAAACHA/_a70aPAqHeA/s1600/101+Introducing+Hibernate+In+Java+Using+NetBeans+02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://1.bp.blogspot.com/-qLYrlX7M6Vs/ThnxA0NuUqI/AAAAAAAACHA/_a70aPAqHeA/s200/101+Introducing+Hibernate+In+Java+Using+NetBeans+02.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="2"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-O_5GQmo5-wQ/ThnxB2ipLaI/AAAAAAAACHE/yyRLp14eYuo/s1600/101+Introducing+Hibernate+In+Java+Using+NetBeans+03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://4.bp.blogspot.com/-O_5GQmo5-wQ/ThnxB2ipLaI/AAAAAAAACHE/yyRLp14eYuo/s200/101+Introducing+Hibernate+In+Java+Using+NetBeans+03.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Typically one .cfg.xml and one .reveng.xml exist for a project and one .hbm.xml exists for each table (mapped to a class). The .hbm.xml maps the object properties to the table columns. It is possible to add new properties to the class which have no effect on the backend tables.&lt;br /&gt;&lt;br /&gt;To create these files in a NetBeans project, select &lt;i&gt;New File&lt;/i&gt; and select the following &lt;i&gt;File Types&lt;/i&gt; from the &lt;i&gt;Hibernate &lt;/i&gt;category –&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Hibernate Configuration Wizard&lt;/li&gt;&lt;li&gt;Hibernate Reverse Engineering Wizard&lt;/li&gt;&lt;li&gt;Hibernate Mapping Files and POJOs from Database&lt;/li&gt;&lt;/ol&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-uhcGFYMPbIg/ThnxC83kPDI/AAAAAAAACHI/weo0F5pgI-M/s1600/101+Introducing+Hibernate+In+Java+Using+NetBeans+04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://2.bp.blogspot.com/-uhcGFYMPbIg/ThnxC83kPDI/AAAAAAAACHI/weo0F5pgI-M/s200/101+Introducing+Hibernate+In+Java+Using+NetBeans+04.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-hMPJgHnzgUM/ThnxD0f8R7I/AAAAAAAACHM/-h81wWGGXio/s1600/101+Introducing+Hibernate+In+Java+Using+NetBeans+05.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://3.bp.blogspot.com/-hMPJgHnzgUM/ThnxD0f8R7I/AAAAAAAACHM/-h81wWGGXio/s200/101+Introducing+Hibernate+In+Java+Using+NetBeans+05.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="2"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-BXCfO8pD0ZI/ThnxEltKIMI/AAAAAAAACHQ/KgIwPbFneMQ/s1600/101+Introducing+Hibernate+In+Java+Using+NetBeans+06.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://1.bp.blogspot.com/-BXCfO8pD0ZI/ThnxEltKIMI/AAAAAAAACHQ/KgIwPbFneMQ/s200/101+Introducing+Hibernate+In+Java+Using+NetBeans+06.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Follow the wizards to complete the configuration setup. I used MySQL and JavaDB as my DBMS to create a sample application to insert and retrieve data. You can get the MySQL  and JavaDB scripts along with the NetBeans project &lt;a href="https://docs.google.com/leaf?id=0B6bFa1maIHJdZmQyNWMxMjAtODRmMC00ZTYzLWJmM2ItMDE5NzEwZDRlYmZh&amp;hl=en_US"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Inserting data using Object Persistence&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Inserting data is a cake-walk in Hibernate. All that is there to do is to create the object and store the object data in the database tables using the &lt;i&gt;save &lt;/i&gt;method of a &lt;i&gt;SessionFactory &lt;/i&gt;object. The following piece of code persists the object data –&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SessionFactory sessionFactory = &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new Configuration().configure().buildSessionFactory();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Session session = sessionFactory.openSession();&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Create the object&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; session.save(object);&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Retrieving data using Hibernate Query Language (HQL)&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Retrieving data is done through a query language designed for Hibernate called the &lt;i&gt;Hibernate Query Language&lt;/i&gt;. HQL is a Object-Oriented Query Language and is very much similar to the traditional SQL we use. The beauty of HQL is that the result of the query is returned as a list of objects rather than as a ResultSet. These objects can be used directly in the code without any overheads. HQL is very wide topic, so I am going to skip the details here but there are several tutorials available for HQL on the Internet. The &lt;i&gt;createQuery &lt;/i&gt;method of the above &lt;i&gt;Session &lt;/i&gt;object is used along with the &lt;i&gt;list &lt;/i&gt;method of the &lt;i&gt;Query &lt;/i&gt;object to get the objects –&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Query query = session.createQuery(queryString);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (Object object : query.list()) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // cast and use the object appropriately&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Changing the database configuration to connect to another DBMS&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;The best feature of Hibernate according to me is it’s ability to change a DBMS without any change to the application code. To change the DBMS, open the Hibernate Configuration File (typically hibernate.cfg.xml) and change the dialect, driver class, connection URL, username and password to the values corresponding to the new DBMS.&lt;br /&gt;&lt;br /&gt;These changes can be done either through the design view or directly on the XML.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-bVwhcYqAbno/ThnxFwEa_AI/AAAAAAAACHU/5jsb-EHd52o/s1600/101+Introducing+Hibernate+In+Java+Using+NetBeans+07.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://4.bp.blogspot.com/-bVwhcYqAbno/ThnxFwEa_AI/AAAAAAAACHU/5jsb-EHd52o/s200/101+Introducing+Hibernate+In+Java+Using+NetBeans+07.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-1p-EzvOqOKk/ThnxGr4GRoI/AAAAAAAACHY/dZwsNnIAvbA/s1600/101+Introducing+Hibernate+In+Java+Using+NetBeans+08.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://1.bp.blogspot.com/-1p-EzvOqOKk/ThnxGr4GRoI/AAAAAAAACHY/dZwsNnIAvbA/s200/101+Introducing+Hibernate+In+Java+Using+NetBeans+08.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-6329399225413329511?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/6329399225413329511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=6329399225413329511' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/6329399225413329511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/6329399225413329511'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2011/01/introducing-hibernate-in-java-using.html' title='Introducing Hibernate In Java Using NetBeans'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-qB5IEXvsSck/ThnxAKSrUEI/AAAAAAAACG8/3YKrfWdb22c/s72-c/101+Introducing+Hibernate+In+Java+Using+NetBeans+01.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-3193905723502533297</id><published>2010-11-15T00:52:00.002+05:30</published><updated>2011-07-11T00:19:09.636+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='RockMelt'/><title type='text'>RockMelt - Will Melt Your Heart</title><content type='html'>In my previous post I said I would be writing about Hibernate in this article, however I made an exception to write about a new browser I just started using – RockMelt. RockMelt is a social media web browser developed by Tim Howes and Eric Vishria and backed by Netscape founder Marc Andreessen.&lt;br /&gt;&lt;br /&gt;It wouldn’t be an overstatement if I say that it will melt your heart, especially if you’re into social networking and particular a regular Facebook user like me. Here’s how RockMelt looks like –&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-sAo4ccUSYQs/ThnzQN7PbHI/AAAAAAAACHc/q_rKBLus9pY/s1600/100+RockMelt+-+Will+Melt+Your+Heart+01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-sAo4ccUSYQs/ThnzQN7PbHI/AAAAAAAACHc/q_rKBLus9pY/s320/100+RockMelt+-+Will+Melt+Your+Heart+01.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a name='more'&gt;&lt;/a&gt;By this time, I guess most of you must have realized that it looks pretty much like Google Chrome. In fact it is more-or-less Chrome itself. Developers who have been interested in Google Chrome would have heard about Google’s Chromium project – the open source project from which Chrome was born. Chromium was the parent of browsers like Nickel and now RockMelt.&lt;br /&gt;&lt;br /&gt;However RockMelt was built to target a specific crowd – the Social Networking generation, especially users of Facebook and Twitter. Let me highlight a few features of RockMelt which I found interesting –&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Friends Strip&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;RockMelt integrated Facebook’s chat application directly into the browser as a strip running in the left side. The chat UI is pretty impressive; in fact it is as good as Google Talk. The best part is that each chat window now runs as a desktop app independently of the browser allowing users to use chat windows individually like Google Talk.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-BrTABnuW4w4/ThnzRP09SqI/AAAAAAAACHg/0Hwjn_pTzrw/s1600/100+RockMelt+-+Will+Melt+Your+Heart+02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-BrTABnuW4w4/ThnzRP09SqI/AAAAAAAACHg/0Hwjn_pTzrw/s320/100+RockMelt+-+Will+Melt+Your+Heart+02.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;&lt;u&gt;Status Updates&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Updating your status in Facebook is just a click away from any site. With RockMelt, you need not actually go to Facebook to change your status or share a link. The browser itself allows you to do it.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-3g5lq8NLUDA/ThnzSONmhWI/AAAAAAAACHk/ZAchWHY1fAQ/s1600/100+RockMelt+-+Will+Melt+Your+Heart+03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/-3g5lq8NLUDA/ThnzSONmhWI/AAAAAAAACHk/ZAchWHY1fAQ/s320/100+RockMelt+-+Will+Melt+Your+Heart+03.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-4sLKnoZ7aJo/ThnzTAH0JCI/AAAAAAAACHo/FpyPRZfhGpg/s1600/100+RockMelt+-+Will+Melt+Your+Heart+04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-4sLKnoZ7aJo/ThnzTAH0JCI/AAAAAAAACHo/FpyPRZfhGpg/s320/100+RockMelt+-+Will+Melt+Your+Heart+04.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;&lt;u&gt;RSS Feeds&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The best thing I liked about RockMelt was its integration of RSS/ATOM feeds with the browser itself. Though many browsers manage feeds, nothing can beat this. The integration of the feeds as a strip to the right is really awesome. By default, feeds of Twitter and Facebook are built into the browser. Feeds from other sites like Gmail and Blogs can be added easily.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-hfWQ0lbVjEA/ThnzT6TjzhI/AAAAAAAACHs/UQw05mLVg5Q/s1600/100+RockMelt+-+Will+Melt+Your+Heart+05.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-hfWQ0lbVjEA/ThnzT6TjzhI/AAAAAAAACHs/UQw05mLVg5Q/s320/100+RockMelt+-+Will+Melt+Your+Heart+05.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-9DqJmByuoZo/ThnzVZV74QI/AAAAAAAACHw/4Zpne3y8nPs/s1600/100+RockMelt+-+Will+Melt+Your+Heart+06.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-9DqJmByuoZo/ThnzVZV74QI/AAAAAAAACHw/4Zpne3y8nPs/s320/100+RockMelt+-+Will+Melt+Your+Heart+06.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;For people who use browsers only for surfing the web and reading articles, these changes won’t be much and the regular Chrome browser should be enough. But people who are into Networking, Blogging, etc. will find it exciting and might enjoy it.&lt;br /&gt;&lt;br /&gt;RockMelt was released a few days back and is presently “By Invitation” only and if you are interested, you should register yourselves here for an early access – &lt;a href="http://www.rockmelt.com/"&gt;http://www.rockmelt.com/&lt;/a&gt;. Lucky I got an invitation from one of my friends :). So if you want to try it, either register at the mentioned site or catch hold of a friend who already has an invitation :D.&lt;br /&gt;&lt;br /&gt;Know more about RockMelt straight from the horse’s mouth –&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/bAPKPhoTqFY?fs=1&amp;amp;hl=en_US"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/bAPKPhoTqFY?fs=1&amp;amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;I will back on Hibernate and ADO.NET Entity Framework in my next two posts. Until then Happy Facebooking and Happy Twittering :).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-3193905723502533297?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/3193905723502533297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=3193905723502533297' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/3193905723502533297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/3193905723502533297'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2010/11/rockmelt-will-melt-your-heart.html' title='RockMelt - Will Melt Your Heart'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-sAo4ccUSYQs/ThnzQN7PbHI/AAAAAAAACHc/q_rKBLus9pY/s72-c/100+RockMelt+-+Will+Melt+Your+Heart+01.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-4306120696269800447</id><published>2010-11-12T00:24:00.006+05:30</published><updated>2011-07-11T00:22:09.715+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ORM'/><title type='text'>Object-Relational Mapping</title><content type='html'>Over the years we have seen a paradigm shift in Programming Languages from the traditional Procedural programming approach to an Object-Oriented approach. However Databases have changed very little in terms of their fundamental principle – Set Theory. Databases are and have been Relational almost from their advent. Most of the Database Management Systems which we use like MySQL, Microsoft SQL Server and Oracle are Relational to a very large extent. Though there have been approaches like Object-Relational DBMS and Hierarchical DBMS, they have rarely been adopted in production environments.&lt;br /&gt;&lt;br /&gt;This article focuses on creating a relationship between Object-Oriented Programming Languages and Relational Databases through a concept called Object-Relation Mapping. This article will be followed by two related articles – &lt;i&gt;Using Hibernate in Java with NetBeans&lt;/i&gt; and &lt;i&gt;Using ADO.NET Entity Framework in .NET (C#) with Visual Studio&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Before jumping into ORM, here are two common concepts which most of you must be familiar with –&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Class &lt;/b&gt;– A class is a construct that is used as a blueprint (or template) to create objects of that class. A class defines the properties that each and every object possesses.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Table Schema&lt;/b&gt; – A table schema primarily defines the fields and relationships of a table. A table contains records which have the same structure.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Observing closely, we can notice that these two definitions are pretty similar. Both of them talk about a template which multiple instances follow (objects in OO and records in DBMS). Both of them talk about fields (properties) these instances possess.&lt;br /&gt;&lt;br /&gt;This similarity is the basis of ORM. Table Schemas of Relational Databases correspond to Classes in an Object Oriented Programming Language and Records of these tables correspond to instances of the Classes (Objects).&lt;br /&gt;&lt;br /&gt;Consider an example of a Student table in a Database created with the following schema –&lt;br /&gt;&lt;br /&gt;CREATE TABLE Student_tbl&lt;br /&gt;(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;StudentId INT PRIMARY KEY,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Name VARCHAR(MAX),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Age INT &lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;This table can be translated into a Class with the following structure –&lt;br /&gt;&lt;br /&gt;class Student&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Int32 StudentId;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String Name;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Int32 Age;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Each record of the Student_tbl will be an object of the Student class.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-HzEFq7GYeKg/Thn0uLZuaQI/AAAAAAAACH0/Xe56W6NHFv8/s1600/099+Object-Relational+Mapping+01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="275" src="http://4.bp.blogspot.com/-HzEFq7GYeKg/Thn0uLZuaQI/AAAAAAAACH0/Xe56W6NHFv8/s320/099+Object-Relational+Mapping+01.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;There are several free and commercial packages for Object Oriented languages that perform Object Relational Mapping. Most of these packages incorporate advanced features like –&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Automating the class generation process from the Database Schemas&lt;/li&gt;&lt;li&gt;Maintaining foreign key dependencies using Lists&lt;/li&gt;&lt;li&gt;Generating identity keys while inserting records and using these keys in subsequent insertions as foreign keys if required&lt;/li&gt;&lt;li&gt;Creating methods for retrieving data and saving data directly as objects&lt;/li&gt;&lt;/ul&gt;The major advantages of ORM lie in –&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Minimal database dependency – most of the ORM packages use a concept called ‘Dialect’ to identify the DBMS the application is connecting to. So changing the dialect when the DBMS is changed is sufficient for the application to run. No application code has to be changed&lt;/li&gt;&lt;li&gt;ORM reduces the amount of code that needs to be written by a developer&lt;/li&gt;&lt;/ul&gt;However it is often argued that ORM packages don’t perform efficiently during bulk deletions and with joins. So generally it is recommended to check if there a hit in the efficiency of the application when ORM tools are introduced, especially when complex operations are involved.&lt;br /&gt;&lt;br /&gt;Though ORM is a simple concept, it’s a rapidly over-shadowing the traditional database connectivity models in Object Oriented Programming Languages like Java and C#. In my next post, I will be introducing Hibernate – an ORM package for Java and in the subsequent post I will introduce the ADO.NET Entity Framework – an ORM package for .NET.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-4306120696269800447?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/4306120696269800447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=4306120696269800447' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/4306120696269800447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/4306120696269800447'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2010/11/object-relation-mapping.html' title='Object-Relational Mapping'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-HzEFq7GYeKg/Thn0uLZuaQI/AAAAAAAACH0/Xe56W6NHFv8/s72-c/099+Object-Relational+Mapping+01.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-6662062642617631238</id><published>2010-09-26T21:20:00.004+05:30</published><updated>2011-07-11T00:26:09.692+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unicode Compression'/><category scheme='http://www.blogger.com/atom/ns#' term='SCSU'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Standard Compression Scheme For Unicode (SCSU) - Java &amp; .NET Implementations</title><content type='html'>In the previous article, I introduced the compression techniques available in SQL Server and highlighted the Unicode Data Compression feature of SQL Server 2008 R2. This post will cover the algorithm used by SQL Server for Unicode compression.&lt;br /&gt;&lt;br /&gt;The Java and .NET (C#) implementations of the algorithm have been attached to the post. They have been built as Class Libraries to support reusability.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;u&gt;&lt;i&gt;&lt;b&gt;Standard Compression Scheme for Unicode&lt;/b&gt;&lt;/i&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;As evident from the post title, the algorithm used in Unicode Data Compression is the Standard Compression Scheme for Unicode (SCSU). SCSU is a technical standard for reducing the number of bytes needed to represent Unicode text. It encodes a sequence of Unicode characters as a compressed stream of bytes. It is independent of the character encoding scheme of Unicode and can be used for UTF-8, UTF-16 and UTF-32.&lt;br /&gt;&lt;br /&gt;I am not going to explain the entire SCSU algorithm here but you can get its specifications from the &lt;a href="http://unicode.org/reports/tr6/"&gt;Unicode Consortium&lt;/a&gt;. The SCSU algorithm processes input text in terms of their Unicode code points. A very important aspect of SCSU is that if the compressed data consists of the same sequence of bytes, it represents the same sequence of characters. However, the reserve isn’t true; there are multiple ways of compressing a character sequence.&lt;br /&gt;&lt;br /&gt;Applications/Organizations using SCSU –&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Symbian OS uses SCSU to serialize strings.&lt;/li&gt;&lt;li&gt;The first draft of SCSU was released by Reuters, a news service and former financial market data provider. Reuters is believed to use SCSU internally.&lt;/li&gt;&lt;li&gt;As already mentioned, SQL Server 2008 R2 uses SCSU to compress Unicode text.&lt;/li&gt;&lt;/ul&gt;To be honest, SCSU has not been a major success. There are very few applications which need to compress Unicode Data using a special compression scheme. In certain situations, especially when the text contains characters from multiple character sets, the compressed text can end up being larger in size than the uncompressed one. &lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;i&gt;&lt;b&gt;SQL Server and SCSU&lt;/b&gt;&lt;/i&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;SQL Server stores data in the compressed format only if it occupies lesser space than the original data. Moreover there must be at least three consecutive characters from the same code page for the algorithm to be triggered.&lt;br /&gt;&lt;br /&gt;A major issue with the implementation is determining whether the stored text is in compressed or uncompressed format. To resolve this issue, SQL Server makes sure that the compressed data contains an odd number of bytes and adds special case characters whenever required.&lt;br /&gt;&lt;br /&gt;The SQL Server implementation details are from a &lt;a href="http://blogs.msdn.com/b/sqlcat/archive/2010/03/03/sql-server-2008-r2-unicode-compression-what-happens-in-the-background.aspx"&gt;blog post&lt;/a&gt; by Peter Scharlock, a SQL Server Senior Program manager.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;i&gt;&lt;b&gt;SCSU Implementation&lt;/b&gt;&lt;/i&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Though the specifications of SCSU are pretty compressive and a sample Java implementation is available at the Unicode Consortium, the implementation isn’t reusable as it is built as a Console App.&lt;br /&gt;&lt;br /&gt;Using the specification and the sample Java implementation, I built a similar implementation as a Class Library to encourage reuse. The implementation is available in two languages – Java and C#.&lt;br /&gt;&lt;br /&gt;The Java implementation is made available as a NetBeans project and the .NET implementation is made available as a Visual Studio solution. The implementations come along with a sample Front End which uses the corresponding Class Library.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-C_TIA41bnNw/Thn1Prtgb3I/AAAAAAAACH4/jJK-Y7-WWgE/s1600/098+Standard+Compression+Scheme+For+Unicode+%2528SCSU%2529+-+Java+%2526+.NET+Implementations+01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/-C_TIA41bnNw/Thn1Prtgb3I/AAAAAAAACH4/jJK-Y7-WWgE/s320/098+Standard+Compression+Scheme+For+Unicode+%2528SCSU%2529+-+Java+%2526+.NET+Implementations+01.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;If you are planning to modify the source code of the implementations, please keep these points in mind –&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The .NET implementation differs from the Java implementation on a basic fact that the byte in Java is signed and the byte in .NET is unsigned. sbyte is available in .NET but using byte is more comfortable.&lt;/li&gt;&lt;li&gt;Both the implementations have been tested for UTF-16 Little Endian encoding schemes. Since the default behavior of a Unicode character in Java is Big Endian, a few tweaks have been implemented.&lt;/li&gt;&lt;/ul&gt;&lt;u&gt;&lt;i&gt;&lt;b&gt;Example&lt;/b&gt;&lt;/i&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;To check the integrity of the SCSU implementations, a sample text file contains text from German, Russian and Japanese (the same text available at the SCSU specifications site) is taken and verified if the compressed text is as expected. The size of the file was compressed from 274 bytes to about 199 bytes.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-pbjFor7qdjM/Thn1RD1ew-I/AAAAAAAACH8/lLWDMcjJZmc/s1600/098+Standard+Compression+Scheme+For+Unicode+%2528SCSU%2529+-+Java+%2526+.NET+Implementations+02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://1.bp.blogspot.com/-pbjFor7qdjM/Thn1RD1ew-I/AAAAAAAACH8/lLWDMcjJZmc/s200/098+Standard+Compression+Scheme+For+Unicode+%2528SCSU%2529+-+Java+%2526+.NET+Implementations+02.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-guJ5BshVOhI/Thn1SUjVDtI/AAAAAAAACIA/dG0lI5ABKDA/s1600/098+Standard+Compression+Scheme+For+Unicode+%2528SCSU%2529+-+Java+%2526+.NET+Implementations+03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://3.bp.blogspot.com/-guJ5BshVOhI/Thn1SUjVDtI/AAAAAAAACIA/dG0lI5ABKDA/s200/098+Standard+Compression+Scheme+For+Unicode+%2528SCSU%2529+-+Java+%2526+.NET+Implementations+03.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;The source code of the Java and .NET implementations can be found &lt;a href="https://docs.google.com/leaf?id=0B6bFa1maIHJdYjUxMzhlZWUtZjkzMS00Y2M5LWJjMmEtNWQyYTRmMTBjYmM1&amp;hl=en_US"&gt;here&lt;/a&gt;. If you find any bugs, please let me know and I will make the necessary modifications.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-6662062642617631238?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/6662062642617631238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=6662062642617631238' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/6662062642617631238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/6662062642617631238'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2010/09/standard-compression-scheme-for-unicode.html' title='Standard Compression Scheme For Unicode (SCSU) - Java &amp; .NET Implementations'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-C_TIA41bnNw/Thn1Prtgb3I/AAAAAAAACH4/jJK-Y7-WWgE/s72-c/098+Standard+Compression+Scheme+For+Unicode+%2528SCSU%2529+-+Java+%2526+.NET+Implementations+01.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-4197322020431963280</id><published>2010-09-17T18:31:00.013+05:30</published><updated>2011-07-11T00:34:26.883+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unicode Compression'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Unicode Data Compression In SQL Server 2008 R2</title><content type='html'>SQL Server 2008 R2 was released a few months back and one of the features I found interesting was its ability to compress Unicode data. In this post, I will be introducing the various compression options available in SQL Server and towards the end I will emphasize a sample analysis used to estimate the efficiency of Unicode Data Compression and the Compression-Ratio improvements of SQL Server 2008 R2 over SQL Server 2008.&lt;br /&gt;&lt;br /&gt;In my next post, I will emphasize on the actual algorithm used by SQL Server to achieve this compression and will provide the Java and .NET implementations of the algorithm.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;u&gt;&lt;i&gt;&lt;b&gt;Compression Techniques in SQL Server&lt;/b&gt;&lt;/i&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;In computer science, compression is the process of encoding information in fewer bits than an un-encoded representation would use. The compression techniques available in SQL Server can be broadly categorized into two types depending on the way they are architected – &lt;b&gt;Data Compression&lt;/b&gt; and &lt;b&gt;Backup Compression&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Data compression occurs at runtime, the data is stored in a compressed form to reduce the disk-space occupied by a database. On the other hand, backup compression occurs only at the time of a backup and uses a proprietary compression technique. Backup compression can be used on a database that has already undergone data compression, but the savings might not be significant.&lt;br /&gt;&lt;br /&gt;Data compression is again of two types – &lt;b&gt;Row level Data Compression&lt;/b&gt; and &lt;b&gt;Page level Data Compression&lt;/b&gt;. Row level compression primarily turns fixed-length data-types into variable data-types, thereby saving space. It also ignores zero and null values saving additional space. Because of this, more number of rows can be accommodated in a single data page. Page level compression initially performs Row Level compression and adds two additional compression features – &lt;b&gt;Prefix&lt;/b&gt; and &lt;b&gt;Dictionary Compression&lt;/b&gt;. As evident, page level compression offers better space saving than row level compression.&lt;br /&gt;&lt;br /&gt;Though compression can provide significant space saving, it can also cause severe performance issues if misused. For further reading on compression, refer “&lt;a href="http://www.bradmcgehee.com/2010/03/an-introduction-to-data-compression-in-sql-server-2008/"&gt;An Introduction to Data Compression in SQL Server 2008&lt;/a&gt;”.&lt;br /&gt;&lt;br /&gt;As the name suggests, Unicode Data Compression comes under Data Compression, and to be more specific it’s a part of Row-level Compression.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;i&gt;&lt;b&gt;Sample Analysis&lt;/b&gt;&lt;/i&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Microsoft had promising stats on the Unicode Data Compression in SQL Server 2008 R2, going up to a 50% space savings on a few character sets like Hindi, German, etc. So I decided to give it a try myself.&lt;br /&gt;&lt;br /&gt;Being from India, I decided to test the compression ratios for Hindi text. I created a randomizer in C# (.NET) to generate random text from a few Hindi phrases obtained from &lt;a href="http://www.linguanaut.com/english_hindi.htm"&gt;Linguanaut&lt;/a&gt;. The program generates 1.5 million random Hindi strings and writes them into a temporary file which is Bulk Inserted into a table.&lt;br /&gt;&lt;br /&gt;To check the improvement of SQL Server 2008 R2 over SQL Server 2008 in terms of Data Compression, two separate instances of SQL Server were established on the same system configuration (Intel Core 2 Quad and 4 GB RAM). Both the instances had the same schemas for the databases and the tables. The Randomizer and the Schemas + Bulk Insert scripts are attached below.&lt;br /&gt;&lt;br /&gt;A major drawback of Unicode Data Compression in SQL Server 2008 R2 was that it couldn’t be applied on columns of the data type NTEXT and NVARCHAR(MAX) and to highlight this we used two different tables, one using NTEXT and another using NVARCHAR(250).&lt;br /&gt;&lt;br /&gt;Here is a quick reference table of the compression-ratios obtained in the analysis –&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;table border="2" cellpadding="4"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&lt;/td&gt; &lt;td&gt;&lt;center&gt;&lt;b&gt;SQL Server 2008&lt;/b&gt;&lt;/center&gt;&lt;/td&gt; &lt;td&gt;&lt;center&gt;&lt;b&gt;SQL Server 2008 R2&lt;/b&gt;&lt;/center&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;center&gt;&lt;b&gt;NTEXT&lt;/b&gt;&lt;/center&gt;&lt;/td&gt; &lt;td&gt;&lt;center&gt;98.24%&lt;/center&gt;&lt;/td&gt; &lt;td&gt;&lt;center&gt;98.25%&lt;/center&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;center&gt;&lt;b&gt;NVARCHAR(250)&lt;/b&gt;&lt;/center&gt;&lt;/td&gt; &lt;td&gt;&lt;center&gt;95.68%&lt;/center&gt;&lt;/td&gt; &lt;td&gt;&lt;center&gt;57.78%&lt;/center&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/center&gt;&lt;br /&gt;From the above table, we can observe the compression-ratio for Unicode Data in SQL Server 2008 R2 is around 57% (nearly the space saving mentioned by Microsoft). However in all the other cases, we can observe that the saving savings is almost negligible. For space savings of other character sets refer “&lt;a href="http://msdn.microsoft.com/en-us/library/ee240835.aspx"&gt;Unicode Compression (MSDN)&lt;/a&gt;”.&lt;br /&gt;&lt;br /&gt;Get the Visual Studio Solution of the Randomizer and the Database Scripts &lt;a href="https://docs.google.com/leaf?id=0B6bFa1maIHJdOTljMGUzNWMtZDY3Mi00NTUzLWJmZWMtODZkYzZhMGI1ZWUw&amp;amp;hl=en_US"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;i&gt;&lt;b&gt;SQL Server 2008 R2 Screen Shots&lt;/b&gt;&lt;/i&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-I_7u5wcRa4o/Thn2MKVraRI/AAAAAAAACIE/UA2AOzIzBX8/s1600/097+Unicode+Data+Compression+In+SQL+Server+2008+R2+01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://1.bp.blogspot.com/-I_7u5wcRa4o/Thn2MKVraRI/AAAAAAAACIE/UA2AOzIzBX8/s200/097+Unicode+Data+Compression+In+SQL+Server+2008+R2+01.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Yxxs4tuV370/Thn2NVq9-oI/AAAAAAAACII/Jg41Rn-2CJo/s1600/097+Unicode+Data+Compression+In+SQL+Server+2008+R2+02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://4.bp.blogspot.com/-Yxxs4tuV370/Thn2NVq9-oI/AAAAAAAACII/Jg41Rn-2CJo/s200/097+Unicode+Data+Compression+In+SQL+Server+2008+R2+02.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="2"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-mfMqvaL_A2w/Thn2OnM0kDI/AAAAAAAACIM/8_O1C2xHaKA/s1600/097+Unicode+Data+Compression+In+SQL+Server+2008+R2+03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://4.bp.blogspot.com/-mfMqvaL_A2w/Thn2OnM0kDI/AAAAAAAACIM/8_O1C2xHaKA/s200/097+Unicode+Data+Compression+In+SQL+Server+2008+R2+03.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;u&gt;&lt;i&gt;&lt;b&gt;SQL Server 2008 Screen Shots&lt;/b&gt;&lt;/i&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-qEbPy14uJRs/Thn2P5K-TgI/AAAAAAAACIQ/BjELsRcagIA/s1600/097+Unicode+Data+Compression+In+SQL+Server+2008+R2+04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://4.bp.blogspot.com/-qEbPy14uJRs/Thn2P5K-TgI/AAAAAAAACIQ/BjELsRcagIA/s200/097+Unicode+Data+Compression+In+SQL+Server+2008+R2+04.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-T0afwfqD33k/Thn2RQtqymI/AAAAAAAACIU/uYF2c4QLwDA/s1600/097+Unicode+Data+Compression+In+SQL+Server+2008+R2+05.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://2.bp.blogspot.com/-T0afwfqD33k/Thn2RQtqymI/AAAAAAAACIU/uYF2c4QLwDA/s200/097+Unicode+Data+Compression+In+SQL+Server+2008+R2+05.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-4197322020431963280?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/4197322020431963280/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=4197322020431963280' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/4197322020431963280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/4197322020431963280'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2010/09/unicode-data-compession-in-sql-server.html' title='Unicode Data Compression In SQL Server 2008 R2'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-I_7u5wcRa4o/Thn2MKVraRI/AAAAAAAACIE/UA2AOzIzBX8/s72-c/097+Unicode+Data+Compression+In+SQL+Server+2008+R2+01.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-8324997307354496234</id><published>2010-08-22T11:49:00.002+05:30</published><updated>2011-07-11T00:37:08.616+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>Creating A Bootable Windows 7 USB Flash Drive</title><content type='html'>In this post, I am going to emphasize on how to create a bootable USB drive with the Windows 7 installer. It’s a pretty simple and straight-forward process. There are several advantages of doing this –&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Installing Windows 7 on computers without an Optical CD/DVD Drive. Many of the new laptops/desktops come without the CD/DVD drive. Using a bootable USB is very helpful here.&lt;/li&gt;&lt;li&gt;Installing from the USB drive is typically faster than installing from a DVD drive.&lt;/li&gt;&lt;li&gt;OS disc images (.iso, .nrg) need not be burned onto a CD/DVD to use them. You can make a bootable USB drive from the image and install the OS from the USB.&lt;/li&gt;&lt;/ul&gt;There are two phases involved in the process – “Formatting the USB drive” and “Copying the installation files and making it bootable”.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;u&gt;&lt;i&gt;&lt;b&gt;Formatting the USB drive&lt;/b&gt;&lt;/i&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;I am using the Diskpart command line utility in the following steps to format the USB drive. I guess even the Right-click and Format option can be used, but I haven’t tried it. If you get into any trouble using the Format from the Right-click menu, put in a comment and I will look into it.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-3--jurKpsDo/Thn4J_KN7BI/AAAAAAAACIY/h2XmJHbxEZI/s1600/096+Creating+A+Bootable+Windows+7+USB+Flash+Drive+01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/-3--jurKpsDo/Thn4J_KN7BI/AAAAAAAACIY/h2XmJHbxEZI/s320/096+Creating+A+Bootable+Windows+7+USB+Flash+Drive+01.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Open the command prompt as an Administrator.&lt;/li&gt;&lt;li&gt;Start the DiskPart utility by typing in “diskpart”. This will show a list of all the drives connected to the system. Identify the disk corresponding to the USB drive.&lt;/li&gt;&lt;li&gt;Select the USB drive using the “select ###” command.&lt;/li&gt;&lt;li&gt;Clean it using the “clean” command.&lt;/li&gt;&lt;li&gt;Create a primary partition on the USB using the “create partition primary” command. This is where we will be copying the installation files.&lt;/li&gt;&lt;li&gt;Select the partition using the “select partition 1” command.&lt;/li&gt;&lt;li&gt;Make it active by typing “active”.&lt;/li&gt;&lt;li&gt;Format the drive and create an NTFS filesystem on it using the “format fs=ntfs”command.&lt;/li&gt;&lt;li&gt;Assign a drive letter to the USB disk using the “assign” command.&lt;/li&gt;&lt;li&gt;Exit the DiskPart utility using the “exit” command.&lt;/li&gt;&lt;/ol&gt;The USB is now formatted and is ready for the transfer.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;i&gt;&lt;b&gt;Copying the installation files and making it bootable&lt;/b&gt;&lt;/i&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;The following steps are the crux of the process.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-3wDlJNhZUzI/Thn4KymYGWI/AAAAAAAACIc/FTw-jU1-etw/s1600/096+Creating+A+Bootable+Windows+7+USB+Flash+Drive+02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/-3wDlJNhZUzI/Thn4KymYGWI/AAAAAAAACIc/FTw-jU1-etw/s320/096+Creating+A+Bootable+Windows+7+USB+Flash+Drive+02.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Insert the Windows 7 DVD.&lt;/li&gt;&lt;li&gt;Navigate to the boot directory of the DVD.&lt;/li&gt;&lt;li&gt;There is a utility “Bootsect” which comes bundled in the Windows 7 DVD. This does the entire work for us.&lt;/li&gt;&lt;li&gt;Run the utility from the command line and specify the drive letter of the USB drive. bootsect.exe /NT60 X:&lt;/li&gt;&lt;li&gt;The utility adds the appropriate boot-code to the USB drive.&lt;/li&gt;&lt;li&gt;Copy the contents of the DVD onto the USB drive.&lt;/li&gt;&lt;/ol&gt;That’s it, reboot the system, make sure that the USB boot is given the highest priority and the installation starts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-8324997307354496234?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/8324997307354496234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=8324997307354496234' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/8324997307354496234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/8324997307354496234'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2010/08/creating-bootable-windows-7-usb-flash.html' title='Creating A Bootable Windows 7 USB Flash Drive'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-3--jurKpsDo/Thn4J_KN7BI/AAAAAAAACIY/h2XmJHbxEZI/s72-c/096+Creating+A+Bootable+Windows+7+USB+Flash+Drive+01.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-8006134982941552915</id><published>2010-07-10T17:12:00.003+05:30</published><updated>2011-11-07T14:59:05.895+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Buzz API'/><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>Integrating OACurl With A Java Desktop Application</title><content type='html'>In my previous post, I introduced the Google Buzz API and the technologies surrounding it. In this post, I will be emphasizing on how to integrate OACurl with a Java Desktop Application to make the authentication process simpler. Before I continue, let me categorical state that this method is good for small student projects; but for serious production applications, OACurl integration isn’t a good option.&lt;br /&gt;&lt;br /&gt;OACurl is primarily an OAuth aware wrapper around the popular cURL command line utility. If you are wondering what cURL is, it is a software project providing a library and command-line tool for transferring data using various protocols like HTTP, FTP, HTTPS, LDAP, IMAP, POP3, etc. The beauty of cURL is that it simplifies the process of data transfer using these protocols to a very large extent. OACurl is an extension to this utility which supports OAuth, the authentication/authorization protocol of the Google Buzz API. OACurl provides an easy way to experiment with the Buzz API.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Before I start with OACurl Integration, let’s see how we can connect a desktop application to the Google Buzz API without OACurl. As I mentioned in the previous post, the OAuth token request and authorization process takes place through a Web Browser. So the desktop application should open the Browser and allow Google to verify the user credentials. Then Google issues an authorized token to a Callback URL as specified by the application. This has to be detected by the application and it has to regain focus. For a more detailed view on this, check out – &lt;a href="http://code.google.com/apis/accounts/docs/OAuthForInstalledApps.html"&gt;http://code.google.com/apis/accounts/docs/OAuthForInstalledApps.html&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The biggest challenge in this process is that in devices like Gaming Consoles, Set-top Boxes, where a Web Browser isn’t available the entire procedure goes haywire. Google is working on a solution for this, until then we have to adjust with the Web Browser technique.&lt;br /&gt;&lt;br /&gt;OACurl is a pretty easy tool to work with. It is available as a Java Archive with multiple classes for various operations like Logging in, Fetching data from URLs, etc. To use OACurl directly from the command-line, refer &lt;a href="http://code.google.com/apis/buzz/v1/oacurl.html"&gt;http://code.google.com/apis/buzz/v1/oacurl.html&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;To use OACurl within a Java Desktop Application, add a reference to the jar file from your project. Now there are two classes which do the entire thing for us – Fetch and Login. Both of them contain a main method; actually it is these classes that are being used in the URL mentioned above. But instead of using classes from the command-line, we will directly call the main method in them from our Java program.&lt;br /&gt;&lt;br /&gt;A bit of reverse engineering makes it clear that the flags like “-buzz”, “-X”, “POST”, etc. are being sent as command line arguments. So we can create a String array of these flags and sent it to the main method.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; com.google.oacurl.Login.main (new String[] { “-buzz” });&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; com.google.oacurl.Fetch.main (new String[] { “-X”, “POST”, URL });&lt;br /&gt;&lt;br /&gt;The main methods push the output content to the default output stream as specified by System.out. By default, this is the user screen. If we want to use this output, we can transfer this output into a temporary file and read from this file.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; File temp = File.createTempFile (“output”, null);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; PrintStream output = new PrintStream (temp);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.setOut (output);&lt;br /&gt;&lt;br /&gt;Similarly, the main methods read the input from the default input stream as specified by System.in. By default, this is the keyboard. If we have to send our input, we can create a temporary file, write the content into it and make the file the default input stream.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; File temp = File.createTempFile (“output”, null);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Write into the file&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; PrintWriter writer = new PrintWriter (temp);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.setIn (writer);&lt;br /&gt;&lt;br /&gt;This way, we can use the Google Buzz API within our Java Desktop Application without having to worry anything about the authorization process. Developers curious to know how this works can explore the OACurl project hosted on Google Code at &lt;a href="http://code.google.com/p/oacurl/"&gt;http://code.google.com/p/oacurl/&lt;/a&gt;. The complete source code of the Login and Fetch classes as well as the Callback Server and other classes is available at the link.&lt;br /&gt;&lt;br /&gt;Before I wind up, &lt;a href="https://docs.google.com/leaf?id=0B6bFa1maIHJdZDUzZTRmMTUtMGVlMC00NDQwLTgyN2UtYjU0Mjk3NzZmZDI1&amp;hl=en_US"&gt;here&lt;/a&gt; is a small project developed in NetBeans which reads the latest buzz and publishes buzz content.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-zI8SEHsBeQQ/Thn4rIuyZ1I/AAAAAAAACIg/QsWZIp_TdbY/s1600/095+Integrating+OACurl+With+A+Java+Desktop+Application+01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-zI8SEHsBeQQ/Thn4rIuyZ1I/AAAAAAAACIg/QsWZIp_TdbY/s320/095+Integrating+OACurl+With+A+Java+Desktop+Application+01.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-74HcprEtOFs/Thn4ruf8ySI/AAAAAAAACIk/oZb-5M4yyUI/s1600/095+Integrating+OACurl+With+A+Java+Desktop+Application+02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-74HcprEtOFs/Thn4ruf8ySI/AAAAAAAACIk/oZb-5M4yyUI/s320/095+Integrating+OACurl+With+A+Java+Desktop+Application+02.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-LyWU3GPLXYM/Thn4sKLGIUI/AAAAAAAACIo/vcJuXLRa1HQ/s1600/095+Integrating+OACurl+With+A+Java+Desktop+Application+03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="108" src="http://1.bp.blogspot.com/-LyWU3GPLXYM/Thn4sKLGIUI/AAAAAAAACIo/vcJuXLRa1HQ/s320/095+Integrating+OACurl+With+A+Java+Desktop+Application+03.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-8006134982941552915?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/8006134982941552915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=8006134982941552915' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/8006134982941552915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/8006134982941552915'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2010/07/integrating-oacurl-with-java-desktop.html' title='Integrating OACurl With A Java Desktop Application'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-zI8SEHsBeQQ/Thn4rIuyZ1I/AAAAAAAACIg/QsWZIp_TdbY/s72-c/095+Integrating+OACurl+With+A+Java+Desktop+Application+01.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-4153967297294133293</id><published>2010-06-26T14:49:00.005+05:30</published><updated>2010-11-17T10:34:44.845+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Buzz API'/><title type='text'>The Google Buzz API</title><content type='html'>It’s been a month Google released their Buzz API at Google I/O and I have been dying ever since to write an article on it. Finally got an opportunity today and really hope that the posts live up to my expectation :).&lt;br /&gt;&lt;br /&gt;In this post, I am going to introduce the Google Buzz API and the technologies surrounding it like OAuth, REST, AtomPub and JSON. And in my next post, I will be emphasizing on how to integrate OACurl, an OAuth wrapper, with a simple Java Desktop Application. Most of the information in this post is pretty basic and if you are comfortable with these technologies, I would recommend you to skip the post.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;strong&gt;&lt;u&gt;&lt;em&gt;Google Buzz&lt;/em&gt;&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Google Buzz is a social networking and messaging tool from Google, designed to be integrated into Gmail. Google Buzz was an attempt by Google to compete with micro-blogging services like Twitter. After the release of the Buzz API, it has been well received both as a platform and as a service.&lt;br /&gt;&lt;br /&gt;The Google Buzz API revolves around two main concepts – Authentication which is done through Open Authorization (OAuth) and Service Usage which is managed using the REST architecture with data formats like XML (through AtomPub) and JSON.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;&lt;em&gt;Authentication&lt;/em&gt;&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;OAuth is an open standard that allows users to share their private resources like photos, videos, etc. stored on one site with another site without having to hand out their username and password. It works through the exchange of tokens which provides access to a specific site for specific resources for a defined duration.&lt;br /&gt;&lt;br /&gt;Most of Google Data APIs like the Google Calendar Data API, Blogger Data API, Google Contacts Data API, etc. use OAuth for authentication. The authentication process is done through a Web Browser for web applications as well as desktop applications using the APIs. A browser pops up and users are authenticated with respect to their usernames and passwords directly by Google and then the control is returned back to the application which can proceed accordingly.&lt;br /&gt;&lt;br /&gt;A major disadvantage of this process is that a web-browser should be available for authentication even for desktop applications.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;&lt;em&gt;Service Usage&lt;/em&gt;&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Data transfer for the Buzz API is done primarily on the basis of REST (Representational State Transfer). It is a style of software architecture for distributed hypermedia systems such as the World Wide Web. The crux of REST is that is uses the basic HTTP methods like GET, POST, etc. for resource manipulation (getting a resource, saving a resource, etc.)&lt;br /&gt;&lt;br /&gt;Google Buzz API returns data in two formats – XML and JSON. XML is sent in the form of AtomPub. AtomPub (also known as APP) stands for Atom Publishing Protocol. It is a HTTP-based protocol for creating and updating web resources. It uses an XML language known as the “Atom Syndication Format” (ASF) and is very popular for web feeds. The Atom Syndication Format and AtomPub form the Atom Standard. The ASF is primarily an XML format with tags like &lt;em&gt;feeds&lt;/em&gt;, &lt;em&gt;links&lt;/em&gt;, etc.&lt;br /&gt;&lt;br /&gt;Google Buzz API can also return back data in the form of JSON. JSON, standing for JavaScript Object Notation, is an open standard designed for human-readable interchange. Despite its strong relationship to JavaScript, it is language-independent with parsers available for almost every language.&lt;br /&gt;&lt;br /&gt;The major reason for Google Buzz API to offer JSON besides ATOM was that JSON parsing is comparatively faster than XML parsing in JavaScript. So in web applications which might pull data from the Google Buzz API using JavaScript and AJAX, JSON parsing will be a major performance gain.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;&lt;em&gt;A Quick Example&lt;/em&gt;&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Navigate to &lt;a href="https://www.googleapis.com/buzz/v1/activities/userId/@public"&gt;https://www.googleapis.com/buzz/v1/activities/&lt;em&gt;userId&lt;/em&gt;/@public&lt;/a&gt; to see your latest public buzzes in the ATOM format and to &lt;a href="https://www.googleapis.com/buzz/v1/activities/userId/@public?alt=json"&gt;https://www.googleapis.com/buzz/v1/activities/&lt;em&gt;userId&lt;/em&gt;/@public?alt=json&lt;/a&gt; to see them in the JSON format.&lt;br /&gt;&lt;br /&gt;There are several URLs like these available at the Google Buzz API site - &lt;a href="http://code.google.com/apis/buzz/v1/using_rest.html"&gt;http://code.google.com/apis/buzz/v1/using_rest.html&lt;/a&gt;. However most of them require authentication before they show the results, which means that without authorization by OAuth, a URL based mechanism will not fetch the data.&lt;br /&gt;&lt;br /&gt;To know your userId, you can do the following steps –&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Login to GMail and go to the Buzz tab.&lt;/li&gt;&lt;li&gt;Click on your name which is displayed at the upper-left corner of the Buzz tab.&lt;/li&gt;&lt;li&gt;The last handle (the string after the last /) is your userId.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-4153967297294133293?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/4153967297294133293/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=4153967297294133293' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/4153967297294133293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/4153967297294133293'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2010/06/google-buzz-api.html' title='The Google Buzz API'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-3823017664589014610</id><published>2010-06-19T21:14:00.006+05:30</published><updated>2011-07-11T00:43:49.518+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>NetBeans 6.9 - The JavaFX Composer Rocks</title><content type='html'>NetBeans 6.9 has finally been released a few days back, June 15th 2010 to be exact. It was a very special release in the NetBeans community as this was the first major revision after Oracle’s acquisition of Sun Microsystems this January. Check out the release notes at &lt;a href="http://netbeans.org/community/releases/69/relnotes.html"&gt;http://netbeans.org/community/releases/69/relnotes.html&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Along with NetBeans, a minor revision of GlassFish, GlassFish 3.0.1 has also been released. The minor revision contains several bug fixes and the GlassFish Server Open Source Edition 3.0.1 has been integrated with NetBeans 6.9.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;There are several new features which been added to NetBeans this time, like the support for Zend Framework on PHP, Ruby on Rails 3.0 Beta support, Spring Framework 3.0, JavaFX SDK 1.3, CSS Refactoring and  Code Completion, support for JDK 7 and several other features. The complete feature enhancement list is available at &lt;a href="http://wiki.netbeans.org/NewAndNoteworthy69"&gt;http://wiki.netbeans.org/NewAndNoteworthy69&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;But personally, I felt the best feature addition to NetBeans this time was the JavaFX Composer. For people who are new to JavaFX, it is a Java platform for creating and delivering Rich Internet Applications (RIA) that can run across a wide variety of connected devices like computers (as browser-based and desktop applications), mobile phones, TV set-top boxes, gaming consoles and Blu-ray players.&lt;br /&gt;&lt;br /&gt;The JavaFX Composer is a visual layout tool similar to Project Matisse for Swing. Initially released as a plugin for NetBeans 6.8, it has now been completely incorporated into NetBeans 6.9. The primary features of the JavaFX Composer are –&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Visual editor for a form-like UI using components&lt;/li&gt;&lt;li&gt;Dynamic design editing based on states&lt;/li&gt;&lt;li&gt;Data access to Web Services, databases and local storage&lt;/li&gt;&lt;li&gt;Support for JavaFX binding&lt;/li&gt;&lt;li&gt;Simple animation editor&lt;/li&gt;&lt;li&gt;Multi-screen-size editing&lt;/li&gt;&lt;/ul&gt;Create a new JavaFX project using the JavaFX Composer by navigating to File, New Project and choosing a JavaFX Desktop Business Application or a JavaFX Mobile Business Application under the JavaFX category depending on the requirement. Give a project name and the UI editor opens for creating the UI from the JavaFX components.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-AnYNIaxPYpo/Thn5bOVAmhI/AAAAAAAACIs/PEmJlFlKUVw/s1600/093+NetBeans+6.9+-+The+JavaFX+Composer+Rocks+01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-AnYNIaxPYpo/Thn5bOVAmhI/AAAAAAAACIs/PEmJlFlKUVw/s320/093+NetBeans+6.9+-+The+JavaFX+Composer+Rocks+01.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Drag and drop components from the palette and create the user-interface as you want. Here’s a small echo application which echoes what has been typed in the text-box. To be honest, this is my first application in JavaFX and I could finish it by typing only a single line of code and that too a JOptionPane.showMessageDialog and I had help from the auto-complete feature of NetBeans for this :), rest of the work was done the JavaFX composer. That actually reflects the ease of development which the composer and NetBeans are driving. On a whole, a big thumps-up for the JavaFX composer and the entire NetBeans development team for integrating this into the IDE.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-bPXYjpZA4pU/Thn5cWrQ7gI/AAAAAAAACIw/lH8MFrGRw6M/s1600/093+NetBeans+6.9+-+The+JavaFX+Composer+Rocks+02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-bPXYjpZA4pU/Thn5cWrQ7gI/AAAAAAAACIw/lH8MFrGRw6M/s320/093+NetBeans+6.9+-+The+JavaFX+Composer+Rocks+02.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-zWpGxjkb1m4/Thn5cs5hSqI/AAAAAAAACI0/n5BwxebpkRM/s1600/093+NetBeans+6.9+-+The+JavaFX+Composer+Rocks+03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/-zWpGxjkb1m4/Thn5cs5hSqI/AAAAAAAACI0/n5BwxebpkRM/s320/093+NetBeans+6.9+-+The+JavaFX+Composer+Rocks+03.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Download the project &lt;a href="https://docs.google.com/leaf?id=0B6bFa1maIHJdMGZmMjU2MzgtZWE0MC00YTFhLTg1YTItZDkwNmUzZmVjNTg2&amp;hl=en_US"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you give the JavaFX Composer a try, check out the huge arsenal of features which the palette possesses like Shapes, Effects, Charts, etc. You will definitely love them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-3823017664589014610?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/3823017664589014610/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=3823017664589014610' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/3823017664589014610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/3823017664589014610'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2010/06/netbeans-69-javafx-composer-rocks.html' title='NetBeans 6.9 - The JavaFX Composer Rocks'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-AnYNIaxPYpo/Thn5bOVAmhI/AAAAAAAACIs/PEmJlFlKUVw/s72-c/093+NetBeans+6.9+-+The+JavaFX+Composer+Rocks+01.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-1353337828975753747</id><published>2010-05-17T19:13:00.011+05:30</published><updated>2010-11-17T11:28:23.646+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cloud Computing'/><title type='text'>Cloud Computing Portal For SMEs - Curtain Raiser</title><content type='html'>As our final year project, me and two of my classmates (A. Raghuveer and G. Nishanth) are working on a project (Cloud Computing Portal for SMEs) under the domain of Cloud Computing.&lt;br /&gt;&lt;br /&gt;In this blog-post, I will be introducing the domain of Cloud Computing and give a small overview of our project. In a few days, I will be unveiling the code along the documentation at – &lt;a href="http://cloud-smes.appspot.com/"&gt;http://cloud-smes.appspot.com/&lt;/a&gt;, so keep checking this space for more updates.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Here’s a short video about the project –&lt;br /&gt;&lt;br /&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/SWm0YggehH0&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/SWm0YggehH0&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;i&gt;&lt;b&gt;Cloud Computing&lt;/b&gt;&lt;/i&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Cloud Computing is a paradigm in the field of computing. Technically, Cloud Computing is defined as –&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;“A computing capability that provides an abstraction between the computing resource and its underlying technical architecture, enabling convenient on-demand network access to a shared pool of configurable resources that can be rapidly  provisioned and released with minimal management effort or service provider interaction.”&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;From a customer’s perspective, Cloud Computing is a cost-effective solution offering flexibility in usage at low investment costs. From a vendor’s perspective, Cloud Computing helps in reducing the operational costs of a data-center with a high degree of customizability. Cloud Computing allows vendors to reach more and more customers with a low cost of delivery.&lt;br /&gt;&lt;br /&gt;Cloud Computing is mainly built on its delivery mechanisms which define the service being provided by an application running in a Cloud Computing environment. There are hundreds of delivery mechanisms available like Infrastructure as a Service (IaaS), Platform as a Service (PaaS), Software as a Service (SaaS), and Data as a Service (DaaS).&lt;br /&gt;&lt;br /&gt;Advantages of Cloud Computing include Reduced Costs, Increased Storage, High Levels of Automation, Flexibility, More Mobility, etc.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;i&gt;&lt;b&gt;Cloud Computing Portal for SMEs&lt;/b&gt;&lt;/i&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Small and Medium Enterprises (SMEs) are companies whose headcount or turnover falls below certain limits. In most economies smaller enterprises are greater in number. In many sectors, SMEs are responsible for driving innovation and competition. In India, the Micro and Small Enterprises sector plays a pivotal role in the overall industrial economy of the country.&lt;br /&gt;&lt;br /&gt;Every organization consists of several applications like –&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Financial Accounting&lt;/li&gt;&lt;li&gt;HR Payroll&lt;/li&gt;&lt;li&gt;Inventory Control&lt;/li&gt;&lt;li&gt;Management Systems&lt;/li&gt;&lt;/ul&gt;Every organization makes a certain investment in its core infrastructure for these applications and for scalability and expandability of this infrastructure; Cloud Computing Centers are viable solutions.&lt;br /&gt;&lt;br /&gt;This approach is very useful in high-risk SMEs where the requirements are high, stability is low and sustenance is risky. This methodology allows such organizations to outsource their mundane housekeeping tasks to Cloud Computing Centers and pay as per their usage. This reduces their initial investments for hardware and software, minimizing their risk. As time progresses and things stabilize in the organization, situation can compare the available options and proceed accordingly.&lt;br /&gt;&lt;br /&gt;Cloud Computing Centers benefit from the fact that they leverage their hardware and software across multiple SMEs. With appropriate planning, the breakeven point can be reached easily and as time progresses the center can profit from such a venture.&lt;br /&gt;&lt;br /&gt;Understanding this potential market, the project concentrates on SMEs by providing them with business applications on demand. These applications form a web portal, which is distributed across multiple Cloud Computing environments to avoid vendor lock-in.&lt;br /&gt;&lt;br /&gt;The applications covered as a part of the project are –&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Self-Managed Repository&lt;/li&gt;&lt;li&gt;Name Finder&lt;/li&gt;&lt;li&gt;Knowledge Management System&lt;/li&gt;&lt;li&gt;Sales Management System&lt;/li&gt;&lt;li&gt;Appraisal Management System&lt;/li&gt;&lt;/ol&gt;These applications are the primary requirements of any organization, irrespective of its sector – Education, IT, Banking, Automobiles, etc. and every organization needs them for its proper functioning.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-1353337828975753747?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/1353337828975753747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=1353337828975753747' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/1353337828975753747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/1353337828975753747'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2010/05/cloud-computing-portal-for-smes-curtain.html' title='Cloud Computing Portal For SMEs - Curtain Raiser'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-2511968938164722790</id><published>2010-04-08T12:36:00.012+05:30</published><updated>2011-07-11T00:52:24.815+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Chromium OS'/><category scheme='http://www.blogger.com/atom/ns#' term='VirtualBox'/><title type='text'>Running Chromium OS In VirtualBox</title><content type='html'>If you would like to try Chromium OS without disturbing your system or without going through the trouble of downloading the source code and building it, this blog-post is for you. &lt;br /&gt;&lt;br /&gt;The Chromium OS has been built and bundled as a VMWare image (.vmdk). This image can be used with VMWare workstation, but this piece of software isn’t free. So in this blog-post I will be targeting the free virtualization application – VirtualBox. &lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Oracle VM VirtualBox is an x86 virtualization software package originally created by a German software company Innotek, purchased by Sun Microsystems and now being developed by Oracle Corporation as a part of its family of virtualization products. Download VirtualBox from &lt;a href="http://www.virtualbox.org/wiki/Downloads"&gt;http://www.virtualbox.org/wiki/Downloads&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Download the VMWare image of Chromium OS as a zip file at - &lt;a href="http://uploading.com/files/ff856c8d/chrome-os-0.4.22.8-gdgt.vmdk.zip"&gt;http://uploading.com/files/ff856c8d/chrome-os-0.4.22.8-gdgt.vmdk.zip&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Extract the VMWare disk image from the zip using a compression utility like WinZip, WinRar or IzArc. Fortunately .vmdk images can be used in VirtualBox without any prerequisites, so we don’t need a VMWare workstation to use the image.&lt;br /&gt;&lt;br /&gt;I couldn’t find a proper .vdi image when writing this article. If you find one, please post a link in the comments section. Either way, the series of steps will still be the same. &lt;br /&gt;&lt;br /&gt;The following steps will get Chromium OS running in VirtualBox as a Virtual Machine. &lt;br /&gt;&lt;ol&gt;&lt;li&gt;Start VirtualBox&lt;/li&gt;&lt;li&gt;Create a new Virtual Machine&lt;/li&gt;&lt;li&gt;Name the Virtual machine as Chromium OS and select the operating system type as Other/Unknown&lt;/li&gt;&lt;li&gt;Allocate certain RAM for the operating system to run&lt;/li&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-LYTZtwjK8YI/Thn6lObdYrI/AAAAAAAACI4/xOfcjl1544I/s1600/091+Running+Chromium+OS+In+VirtualBox+01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://1.bp.blogspot.com/-LYTZtwjK8YI/Thn6lObdYrI/AAAAAAAACI4/xOfcjl1544I/s200/091+Running+Chromium+OS+In+VirtualBox+01.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-kXeI5PXoMDc/Thn6l6KsmNI/AAAAAAAACI8/kkhfGq2Y270/s1600/091+Running+Chromium+OS+In+VirtualBox+02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://4.bp.blogspot.com/-kXeI5PXoMDc/Thn6l6KsmNI/AAAAAAAACI8/kkhfGq2Y270/s200/091+Running+Chromium+OS+In+VirtualBox+02.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-66y_s0CFxcA/Thn6mdR3XgI/AAAAAAAACJA/IQldsaQ8XFY/s1600/091+Running+Chromium+OS+In+VirtualBox+03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://1.bp.blogspot.com/-66y_s0CFxcA/Thn6mdR3XgI/AAAAAAAACJA/IQldsaQ8XFY/s200/091+Running+Chromium+OS+In+VirtualBox+03.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-riaY385jUUQ/Thn6nIIyBtI/AAAAAAAACJE/9wP4PLz1f_g/s1600/091+Running+Chromium+OS+In+VirtualBox+04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://3.bp.blogspot.com/-riaY385jUUQ/Thn6nIIyBtI/AAAAAAAACJE/9wP4PLz1f_g/s200/091+Running+Chromium+OS+In+VirtualBox+04.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;li&gt;Use the existing available hard-disk (the image which we have just downloaded)&lt;/li&gt;&lt;li&gt;The Virtual Media Manager ups on clicking the button beside the drop-down list&lt;/li&gt;&lt;li&gt;Add the image file which was obtained after extraction&lt;/li&gt;&lt;li&gt;The new image becomes the hard-disk for the virtual machine now&lt;/li&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-2KE_GJrfzok/Thn6oEL2j6I/AAAAAAAACJI/x_6gq7uGO-4/s1600/091+Running+Chromium+OS+In+VirtualBox+05.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://2.bp.blogspot.com/-2KE_GJrfzok/Thn6oEL2j6I/AAAAAAAACJI/x_6gq7uGO-4/s200/091+Running+Chromium+OS+In+VirtualBox+05.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-kvSNrR2iwh8/Thn6o14Mc6I/AAAAAAAACJM/hLbNjn2AGLs/s1600/091+Running+Chromium+OS+In+VirtualBox+06.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://3.bp.blogspot.com/-kvSNrR2iwh8/Thn6o14Mc6I/AAAAAAAACJM/hLbNjn2AGLs/s200/091+Running+Chromium+OS+In+VirtualBox+06.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-5L88773ugbg/Thn6pmxGOuI/AAAAAAAACJQ/nHj41z96-iI/s1600/091+Running+Chromium+OS+In+VirtualBox+07.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://4.bp.blogspot.com/-5L88773ugbg/Thn6pmxGOuI/AAAAAAAACJQ/nHj41z96-iI/s200/091+Running+Chromium+OS+In+VirtualBox+07.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-OPUeJW995Ro/Thn6qV99ejI/AAAAAAAACJU/mg6IYwt4Mes/s1600/091+Running+Chromium+OS+In+VirtualBox+08.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://1.bp.blogspot.com/-OPUeJW995Ro/Thn6qV99ejI/AAAAAAAACJU/mg6IYwt4Mes/s200/091+Running+Chromium+OS+In+VirtualBox+08.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;li&gt;Click on Finish to complete the process&lt;/li&gt;&lt;li&gt;You can now see a new virtual machine docked on the right-hand panel of the window&lt;/li&gt;&lt;li&gt;Double-click on the VM and Chromium OS boots up&lt;/li&gt;&lt;li&gt;Login using your Gmail username and password&lt;/li&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-l30BDu2Pd5Y/Thn6rI4fGXI/AAAAAAAACJY/8YqDu2zbaqE/s1600/091+Running+Chromium+OS+In+VirtualBox+09.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://3.bp.blogspot.com/-l30BDu2Pd5Y/Thn6rI4fGXI/AAAAAAAACJY/8YqDu2zbaqE/s200/091+Running+Chromium+OS+In+VirtualBox+09.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-uoSHKLcX4fo/Thn6r4rSAUI/AAAAAAAACJc/Ead8xOdZP0g/s1600/091+Running+Chromium+OS+In+VirtualBox+10.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://4.bp.blogspot.com/-uoSHKLcX4fo/Thn6r4rSAUI/AAAAAAAACJc/Ead8xOdZP0g/s200/091+Running+Chromium+OS+In+VirtualBox+10.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-mMkdAgLNjfo/Thn6stPDtQI/AAAAAAAACJg/Ewbo4Dtjnz0/s1600/091+Running+Chromium+OS+In+VirtualBox+11.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://1.bp.blogspot.com/-mMkdAgLNjfo/Thn6stPDtQI/AAAAAAAACJg/Ewbo4Dtjnz0/s200/091+Running+Chromium+OS+In+VirtualBox+11.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-XcCrnVB0Kuo/Thn6tLtQ6ZI/AAAAAAAACJk/evSZHddldVY/s1600/091+Running+Chromium+OS+In+VirtualBox+12.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://1.bp.blogspot.com/-XcCrnVB0Kuo/Thn6tLtQ6ZI/AAAAAAAACJk/evSZHddldVY/s200/091+Running+Chromium+OS+In+VirtualBox+12.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/ol&gt;That’s it, Chromium OS is up and ready. Explore it!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-2511968938164722790?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/2511968938164722790/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=2511968938164722790' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/2511968938164722790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/2511968938164722790'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2010/04/running-chromium-os-in-virtualbox.html' title='Running Chromium OS In VirtualBox'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-LYTZtwjK8YI/Thn6lObdYrI/AAAAAAAACI4/xOfcjl1544I/s72-c/091+Running+Chromium+OS+In+VirtualBox+01.jpg' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-4671324490607509800</id><published>2010-04-08T12:14:00.008+05:30</published><updated>2011-07-11T00:53:51.554+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Chromium OS'/><title type='text'>Chromium OS</title><content type='html'>Chromium OS is the open source development version of the Google’s Chrome OS. The source code of Chrome OS was released on November 19th, 2009 under the BSD license as Chromium OS.&lt;br /&gt;&lt;br /&gt;Chromium OS aims to build an operating system that provides a fast, simple and more secure computing experience for people who spend most of their time on the web. It targets to build a powerful platform for developing a new generation of web applications.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Chromium OS is the name of the project and Google Chrome OS is the name of the product. But the developer builds are still termed as the Chromium OS.&lt;br /&gt;&lt;br /&gt;But the advent of the Chrome OS has led to a bigger question – Do we really need a new Operating System? More specifically – Why Google Chrome OS?&lt;br /&gt;&lt;br /&gt;The traditional boot-up process that we go through everyday involves a series of steps like –&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Loading the BIOS&lt;/li&gt;&lt;li&gt;Hardware detection&lt;/li&gt;&lt;li&gt;Loading and starting the Boot-loader&lt;/li&gt;&lt;li&gt;Loading and starting the Kernel&lt;/li&gt;&lt;li&gt;Starting the OS primitives&lt;/li&gt;&lt;li&gt;Running the startup applications&lt;/li&gt;&lt;/ul&gt;Even the fastest computer in the world takes about 45 seconds for this to happen.&lt;br /&gt;&lt;br /&gt;This was the focal point of Google while building the Chromium OS. For millions of naïve users who use their netbooks/laptops mostly for internet, 45 seconds is a lot of waiting time. Google plans to make the web browser the Operating System for fast boot-up and this OS is the Chromium OS. In fact Google is claiming a 7 second boot-up for the Chrome OS and in certain instances the boot-up time has been as low as 3-4 seconds.&lt;br /&gt;&lt;br /&gt;The Chrome OS hasn’t been released yet and the expected release date of the Chrome OS is late 2010 or early 2011. But technical enthusiasts can still get first impressions through the open-source Chromium OS project.&lt;br /&gt;&lt;br /&gt;Google Chrome OS is built on the Linux kernel and is expected to be free on release, but then what’s the economy model of Google? – Chrome pushes Google web applications like Google Docs, Google Calendar, Picassa, Youtube, etc. The major revenue stream of Google is through its advertisements. More users of Google applications will yield more revenue to Google through advertisements.&lt;br /&gt;&lt;br /&gt;All the applications utilized by the Chorme OS are cloud based applications. A major drawback is the customer trust on Google. All our documents – text docs, spreadsheets, and presentations are all on the Google cloud. How can an individual be sure that his documents are secure from unprivileged users? The recent crash of Gmail has strengthened the apprehension and has caused a panic about the cloud based OS of Google.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;&lt;u&gt;Major Drawbacks&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Google is considering Chrome OS as a companion device. It is assuming that every user will have another work-station at their disposal&lt;/li&gt;&lt;li&gt;Vague support for working offline. Google is planning to provide a little support through Google Gears and local caches, but every the idea has to be solidified&lt;/li&gt;&lt;li&gt;Android applications are incompatible with Chrome OS&lt;/li&gt;&lt;li&gt;Chrome OS requires internet access for everything&lt;/li&gt;&lt;li&gt;Every application which users desire cannot be integrated into the cloud&lt;/li&gt;&lt;li&gt;Browser lock-in. No other browser can be used expect for Google Chrome&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;&lt;u&gt;The Brighter Side&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Speedy boot-up&lt;/li&gt;&lt;li&gt;Security by default&lt;/li&gt;&lt;li&gt;Support for both x86 and ARM architectures&lt;/li&gt;&lt;li&gt;Several applications are available by default like Google Docs and Microsoft Office Live&lt;/li&gt;&lt;li&gt;No need to install anything. Just plug-n-play&lt;/li&gt;&lt;/ul&gt;On a whole, Google has created a lot of buzz about its new Operating System. Let’s wait and watch. I recently was a part of a presentation around the Chromium OS – check it out &lt;a href="https://docs.google.com/leaf?id=0B6bFa1maIHJdMWM5YzllMTAtMDU2MS00ZDkyLTgxMDItZDRkM2QwNzhkMThk&amp;hl=en_US"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you would like to try out Chromium OS for yourself, either follow the build instructions at &lt;a href="http://www.chromium.org/chromium-os"&gt;http://www.chromium.org/chromium-os&lt;/a&gt; (or) check out my next post – Running Chromium OS in VirtualBox.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-4671324490607509800?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/4671324490607509800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=4671324490607509800' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/4671324490607509800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/4671324490607509800'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2010/04/chromium-os.html' title='Chromium OS'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-2616232499572839454</id><published>2010-02-28T10:55:00.008+05:30</published><updated>2011-07-11T00:57:15.091+05:30</updated><title type='text'>Passing Functions To Functions In C++, C# &amp; Java</title><content type='html'>Before I start the article, I admit I used the word “Function” a little loosely in the title. Functions are available in C++, but in C# and Java it would be more appropriate to call them methods of a class because of the Object Oriented approach followed by these languages.&lt;br /&gt;&lt;br /&gt;There are a lot of situations where we write modules such that other developers have the flexibility to fine-tune them to meet their requirements. Assume we are writing a module (function/method) wherein a function/method will be called in the middle of its execution but we don’t know the implementation of this function/method nor its actual name. Wouldn’t it nice if we could just leave the implementation of the function/method to the developer who will be using the module?&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;This is exactly what I target in this blog-post. The article will give a quick overview of how to pass a function (actually a reference to a function) to another function in C++; how to create and use delegates in C#; and finally how to simulate a similar effect in Java which has neither pointers nor delegates.&lt;br /&gt;&lt;br /&gt;To help the readers understand the concept better, I will be taking a simple example here. In the example, there is an addition module which takes three arguments – two integers and a function/method which is the display routine. It’s not a real-world example as I could have just returned the sum back.&lt;br /&gt;&lt;br /&gt;An apt real-world example for this approach would a customized sort routine which takes a function/method which can be used as a comparator for the sort. I will leave it to the users to think of more complex situations where such an approach will be beneficial.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold; text-decoration: underline;"&gt;Function Pointers in C++&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A Function Pointer is a pointer in C/C++ which points to a function. When dereferenced, a function pointer will result in the execution of the function it points to. A function pointer is defined as –&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;return_type (*function_name)(argument_list)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;An important point that is to be noticed here is that the signature of the function to which the pointer can point to has to be declared in the declaration of the pointer. Once that is done, it can be assigned to any function which follows that signature.&lt;br /&gt;&lt;br /&gt;Here is an example C++ program which uses function pointers –&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Go9FbDTL8DM/Thn8iyhKrwI/AAAAAAAACJo/eUafmtgRAh0/s1600/089+Passing+Functions+To+Functions+In+C%252B%252B%252C+C%2523+%2526+Java+01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-Go9FbDTL8DM/Thn8iyhKrwI/AAAAAAAACJo/eUafmtgRAh0/s320/089+Passing+Functions+To+Functions+In+C%252B%252B%252C+C%2523+%2526+Java+01.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Function pointers play a very important in Callback layered architectures. For example, function pointers can be used to register a function with an event handler.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold; text-decoration: underline;"&gt;Delegates in C#&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A delegate is a type that references to a method. When a method is assigned to a delegate, the delegate behaves exactly like the method. A delegate in C# is defined as –&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;access_modfier delegate return_type delegate_name(argument_list)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Similar to Function Pointers in C/C++, the method signature has to be specified in the definition of the delegate. But unlike function pointers, delegates are type safe. This is because since Function Pointers are basically pointers, even an improper assignment will not raise any error until it’s too late. On the other hand delegates are associated with the signature specified and any wrong assignment will lead to a compilation error.&lt;br /&gt;&lt;br /&gt;Another important feature of delegates is that delegates can be chained together. That is, multiple functions can be executed when the delegate is called. This is done through + and - operations on delegates. Here is how the syntax looks –&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;delegate_name reference_name;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;reference_name = method1_name;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;reference_name += method2_name;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now when reference_name is called, both method1_name and method2_name are executed one after another.&lt;br /&gt;&lt;br /&gt;Delegates also allow methods to be passed to other methods using lambda expressions, which can be written in the method call itself. Go through the following example which shows how to use delegates for method passing and how lambda expressions are useful –&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-nah9nWLfkTY/Thn8j4nJmlI/AAAAAAAACJs/DYV6R5l5SzU/s1600/089+Passing+Functions+To+Functions+In+C%252B%252B%252C+C%2523+%2526+Java+02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/-nah9nWLfkTY/Thn8j4nJmlI/AAAAAAAACJs/DYV6R5l5SzU/s320/089+Passing+Functions+To+Functions+In+C%252B%252B%252C+C%2523+%2526+Java+02.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Delegates are very useful in event handling, for defining callback methods like a customized sort, etc.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold; text-decoration: underline;"&gt;Simulation Using Interfaces in Java&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ok, now coming to the fun part. How can I get the same effect in Java which has neither Function Pointers nor Delegates?&lt;br /&gt;&lt;br /&gt;The approach which have discussed above can be simulated in Java using single method Interfaces. The single method interface can be implemented and the class can become an argument of the method. The concrete class passed to the method is used to call the one and only method of the interface.&lt;br /&gt;&lt;br /&gt;However, there are three major drawbacks in this –&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Every developer using the method is forced to create a class implementing the interface&lt;/li&gt;&lt;li&gt;The name of the function is fixed, the implementation will change but not its name&lt;/li&gt;&lt;li&gt;We are not passing the method anymore but instead passing an object which has the required method&lt;/li&gt;&lt;/ol&gt;Similar to C#, the interface implementation can be done in-line to the method call using anonymous classes.&lt;br /&gt;&lt;br /&gt;Here is a Java program which achieves the same result as the above two examples –&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Nl7zQYQGfSg/Thn8k0urgqI/AAAAAAAACJw/WD0QvNSVEaE/s1600/089+Passing+Functions+To+Functions+In+C%252B%252B%252C+C%2523+%2526+Java+03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-Nl7zQYQGfSg/Thn8k0urgqI/AAAAAAAACJw/WD0QvNSVEaE/s320/089+Passing+Functions+To+Functions+In+C%252B%252B%252C+C%2523+%2526+Java+03.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;As we know, C# was heavily influenced by Java. So, almost everything that we can do in Java can be done in C#. The interface technique discussed for Java can also be applied in C#, but I guess it’s more easy to use Delegates for such a requirement than creating Interfaces.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-2616232499572839454?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/2616232499572839454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=2616232499572839454' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/2616232499572839454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/2616232499572839454'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2010/02/passing-functions-to-functions-in-c-c.html' title='Passing Functions To Functions In C++, C# &amp; Java'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-Go9FbDTL8DM/Thn8iyhKrwI/AAAAAAAACJo/eUafmtgRAh0/s72-c/089+Passing+Functions+To+Functions+In+C%252B%252B%252C+C%2523+%2526+Java+01.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-8228323963534578731</id><published>2010-01-11T10:08:00.022+05:30</published><updated>2011-07-11T01:04:55.553+05:30</updated><title type='text'>Deploying Servlets &amp; JSPs</title><content type='html'>Java Servlets &amp;amp; JavaServer Pages (JSPs) form the backbone of Web Application Development in Java. Java Servlet Technology and JSP are a part of the Java Platform, Enterprise Edition (JEE). The latest release of JEE (version 6), which was released a few days ago supports Servlets 3.0 and JSP 2.2. I am not going to emphasize the changes made in these versions here, but a quick Google search should give you an idea on the enhancements made.&lt;br /&gt;&lt;br /&gt;A Java Servlet is primarily a class which conforms to the Java Servlet API, a protocol by which a Java class may respond to HTTP requests. A servlet may be used to add dynamic content to a Web Server using the Java platform. The generated content is commonly HTML, but may also be other data such as XML, etc. Similar non-Java technologies are CGI and ASP.NET.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;JSP is a server side technology similar to that of Servlets. Like Servlets, it is also used to create dynamically generated web pages with HTML, XML, etc. in response to Web client requests. Architecturally, JSP may be viewed as a high-level abstraction of Java Servlets.&lt;br /&gt;&lt;br /&gt;Though Servlets and JSPs are used to achieve the same goal, they were designed for two different profiles – developers and designers respectively. A well designed JSP may serve dynamic content using Java without any actual Java code in the JSP; this is achieved using other technologies of Java EE like Expression Language, Custom Tags, etc. Such a model was built to help Web page designers, who are good at HTML, build JSP pages without any need to understand the Java code involved. The developers can support these designers by building custom tags, developing the servlets in patterns like MVC, etc. If you are new to the world of Web Application Development in Java, this concept may seem a little overwhelming in the beginning, but as time progress you will understand this approach better.&lt;br /&gt;&lt;br /&gt;To accept HTTP request and to give the users the required responses, a web/app server is used. A web server primarily accepts request and gives responses along with optional data content like images, etc. An extension to the web server is the app server. An app server can also expose business logic and business processes for third-party applications. Further, app servers have features like transaction management, security, etc. Apache Tomcat is a popular web server with Tomcat as the servlet container and GlassFish is a popular app server. Servlets and JSPs have to be deployed on these servers for the outside world to communicate with them. This post will be covering both these servers.&lt;br /&gt;&lt;br /&gt;In this blog-post, I will be covering only the deployment phase of Servlets and JSPs. It is assumed that the reader is comfortable with Java and is well acquitted with the basics of JSPs and Servlets. I won’t be explaining any code in this post as most of it is self-explanatory.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;i&gt;Software needed – &lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Java EE 6 (&lt;a href="http://java.sun.com/javaee/downloads/index.jsp"&gt;http://java.sun.com/javaee/downloads/index.jsp&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Apache Tomcat 6.0.20 (&lt;a href="http://tomcat.apache.org/download-60.cgi"&gt;http://tomcat.apache.org/download-60.cgi&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;GlassFish v3 (&lt;a href="https://glassfish.dev.java.net/downloads/v3-final.html"&gt;https://glassfish.dev.java.net/downloads/v3-final.html&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;Note – Installing Java EE 6 will also install GlassFish v3.&lt;br /&gt;&lt;br /&gt;To help the readers get a better understanding of the entire process, I will be developing a simple Hello World Application with a Hello World JSP and a Hello World Servlet here.&lt;br /&gt;&lt;br /&gt;Here are the source codes of the JSP and the Servlet –&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-F6Faz7pjGyU/Thn993gDxlI/AAAAAAAACJ0/U1_n73CNmvM/s1600/088+Deploying+Servlets+%2526+JSPs+01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/-F6Faz7pjGyU/Thn993gDxlI/AAAAAAAACJ0/U1_n73CNmvM/s320/088+Deploying+Servlets+%2526+JSPs+01.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-jFA2EG0CZOw/Thn9-VD2IxI/AAAAAAAACJ4/qJLY3b9qtvg/s1600/088+Deploying+Servlets+%2526+JSPs+02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/-jFA2EG0CZOw/Thn9-VD2IxI/AAAAAAAACJ4/qJLY3b9qtvg/s320/088+Deploying+Servlets+%2526+JSPs+02.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Compile the servlet using the javax.servlet.jar available in glassfishV3\glassfish\modules directory, which is obtained after installing JEE 6 with the following command –&lt;br /&gt;&lt;br /&gt;&lt;b&gt;javac HelloWorld.java –classpath &lt;/b&gt;&lt;i&gt;&lt;b&gt;install_path&lt;/b&gt;&lt;/i&gt;&lt;b&gt;\ glassfishV3\glassfish\modules\javax.servlet.jar&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;i&gt;Understanding the directory structure&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Every web application has a typical directory structure. The JSPs and Servlets along with the required descriptors have to be placed in this directory structure. I will emphasize this structure using the Hello World example. The structure is as follows –&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Y98fDaWvs7w/Thn9-te4rxI/AAAAAAAACJ8/c1mHLVynWFg/s1600/088+Deploying+Servlets+%2526+JSPs+03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-Y98fDaWvs7w/Thn9-te4rxI/AAAAAAAACJ8/c1mHLVynWFg/s1600/088+Deploying+Servlets+%2526+JSPs+03.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;Any file/folder present in the root of the Web Application (like helloWorld.jsp) here is directly available to the client. Even folders present here (except WEB-INF and META-INF) are available directly to the users.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Iw-sBn1gSuQ/Thn9--h6bJI/AAAAAAAACKA/-EhDDD6L6uc/s1600/088+Deploying+Servlets+%2526+JSPs+04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-Iw-sBn1gSuQ/Thn9--h6bJI/AAAAAAAACKA/-EhDDD6L6uc/s1600/088+Deploying+Servlets+%2526+JSPs+04.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;The root also contains a directory called the WEB-INF. This is a required directory and contains three important sub-folders – classes, lib and tags. Every web application also has a deployment descriptor (web.xml). This is also placed here.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-oKcvA46ROUw/Thn9_CrUS3I/AAAAAAAACKE/epFCcHYSxWg/s1600/088+Deploying+Servlets+%2526+JSPs+05.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-oKcvA46ROUw/Thn9_CrUS3I/AAAAAAAACKE/epFCcHYSxWg/s1600/088+Deploying+Servlets+%2526+JSPs+05.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;The classes directory contains the .class files. The servlet class files are also placed here (like HelloWorld.class).&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-pyR_ybKBKxE/Thn9_iI8qII/AAAAAAAACKI/BgTYpht_6as/s1600/088+Deploying+Servlets+%2526+JSPs+06.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-pyR_ybKBKxE/Thn9_iI8qII/AAAAAAAACKI/BgTYpht_6as/s1600/088+Deploying+Servlets+%2526+JSPs+06.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;The lib directory contains any external JAR files that are used in the web application. In this example we have no files in this directory.&lt;br /&gt;&lt;br /&gt;The tags directory contains the TLD along the .tag files. As this is an introductory example, we will keep this directory empty. If there are any custom tags being developed in the web application, they should be placed here.&lt;br /&gt;&lt;br /&gt;The deployment descriptor defines the mapping between the servlet name and the servlet class.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-5o_VgO69l20/Thn-AJqMJ6I/AAAAAAAACKM/VDxK_8l7yGU/s1600/088+Deploying+Servlets+%2526+JSPs+07.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-5o_VgO69l20/Thn-AJqMJ6I/AAAAAAAACKM/VDxK_8l7yGU/s320/088+Deploying+Servlets+%2526+JSPs+07.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Download the entire application &lt;a href="https://docs.google.com/leaf?id=0B6bFa1maIHJdNjQ1ZWNhYjItMDQyMS00ZDY1LWFlYzAtMzNkOGNlNmZlMTIx&amp;hl=en_US"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;i&gt;Deploying the application in Apache Tomcat&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Copy the directory HelloWorldApplication built in the above step to the webapps directory of Tomcat i.e. &lt;i&gt;&lt;b&gt;install_path&lt;/b&gt;&lt;/i&gt;&lt;b&gt;\Apache Software Foundation\Tomcat 6.0\webapps&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Start Tomcat from &lt;i&gt;&lt;b&gt;install_path&lt;/b&gt;&lt;/i&gt;&lt;b&gt;\Apache Software Foundation\Tomcat 6.0\bin\tomcat6.exe&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;To view the JSP page, type &lt;a href="http://localhost:8080/HelloWorldApplication/HelloWorld.jsp"&gt;http://localhost:8080/HelloWorldApplication/HelloWorld.jsp&lt;/a&gt; in the browser and to view the servlet page type &lt;a href="http://localhost:8080/HelloWorldApplication/HelloWorld"&gt;http://localhost:8080/HelloWorldApplication/HelloWorld&lt;/a&gt; in the browser.&lt;br /&gt;&lt;br /&gt;Shut down tomcat6.exe to stop the server.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;i&gt;Deploying the application in GlassFish V3&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Start GlassFish using &lt;i&gt;&lt;b&gt;install_path&lt;/b&gt;&lt;/i&gt;&lt;b&gt;\glassfishV3\glassfish\bin\startserv.bat&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Open &lt;a href="http://localhost:4848/"&gt;http://localhost:4848/&lt;/a&gt; in the browser.&lt;br /&gt;&lt;br /&gt;Login with the admin password and navigate to Applications Task in the left-side panel. Click on deploy and select “Local Packaged Directory” and specify the directory built above.&lt;br /&gt;&lt;br /&gt;Select the type as “Web Application” and click on “Deploy”.&lt;br /&gt;&lt;br /&gt;To view the JSP page, type &lt;a href="http://localhost:8080/HelloWorldApplication/HelloWorld.jsp"&gt;http://localhost:8080/HelloWorldApplication/HelloWorld.jsp&lt;/a&gt; in the browser and to view the servlet page type &lt;a href="http://localhost:8080/HelloWorldApplication/HelloWorld"&gt;http://localhost:8080/HelloWorldApplication/HelloWorld&lt;/a&gt; in the browser.&lt;br /&gt;&lt;br /&gt;Stop GlassFish using &lt;i&gt;&lt;b&gt;install_path&lt;/b&gt;&lt;/i&gt;&lt;b&gt;\glassfishV3\glassfish\bin\stopserv.bat&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;That’s it. We have written a web application and deployed it on Apache Tomcat and GlassFish. Still there is one more catch – what if I have to move the web application from one physical server to another physical server? Do I have to build the directory structure again? Well look for the solution in my next blog-post – Building Java Web Archives (WARs).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-8228323963534578731?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/8228323963534578731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=8228323963534578731' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/8228323963534578731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/8228323963534578731'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2010/01/deploying-servlets-jsps.html' title='Deploying Servlets &amp; JSPs'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-F6Faz7pjGyU/Thn993gDxlI/AAAAAAAACJ0/U1_n73CNmvM/s72-c/088+Deploying+Servlets+%2526+JSPs+01.jpg' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-2958685943902755433</id><published>2009-12-16T09:27:00.013+05:30</published><updated>2011-07-11T23:06:43.205+05:30</updated><title type='text'>Remote Desktop Services Using RDP</title><content type='html'>If you love the data on your desktop, and want it on the move, then this blog-post is for you. In this post, I will emphasize the Remote Desktop Protocol (RDP) of Microsoft using the Remote Desktop Services/Terminal Services.&lt;br /&gt;&lt;br /&gt;Remote Desktop Protocol (RDP) is primarily a proprietary protocol developed by Microsoft, which focuses on providing user with a graphical interface to another computer.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Notable features of RDP include -&lt;br /&gt;&lt;ul&gt;&lt;li&gt;32-bit color support&lt;/li&gt;&lt;li&gt;A 128-bit encryption algorithm and protection from vulnerabilities like the man-in-the-middle&lt;/li&gt;&lt;li&gt;Audio redirection&lt;/li&gt;&lt;li&gt;File System Redirection&lt;/li&gt;&lt;li&gt;Port Redirection&lt;/li&gt;&lt;li&gt;Support for Aero Glass Theme and ClearType font smoothing technology&lt;/li&gt;&lt;li&gt;Support for Transport Layer Security&lt;/li&gt;&lt;li&gt;Multiple monitor support&lt;/li&gt;&lt;/ul&gt;Remote Desktop Services, formerly known as Terminal Services, is one of the components of Microsoft Windows that allow a user to access applications and data on a remote computer over the network. It is built on the RDP protocol.&lt;br /&gt;&lt;br /&gt;The RDP Desktop Services segregates the systems into two groups – the servers and the clients. RDP Servers and Clients exist for several versions of Microsoft Windows, Linux, UNIX, Mac OS X, etc.&lt;br /&gt;&lt;br /&gt;This article will focus on configuring both, the RDP Servers and RDP Clients. The configuration steps mentioned here are restricted to the Windows line of Operating Systems – XP, Vista, etc; and for illustration purposes, I will be using Windows 7 as my server and Windows XP running on VirtualBox as my client.&lt;br /&gt;&lt;br /&gt;Besides Windows, RDP servers are available for the UNIX Operating System in the form of several open-source projects. UNIX based RDP clients also exist, like the rdesktop.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Configuring RDP Servers&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;A RDP server is the heart of the RDP protocol. Once a system has been configured as a RDP server, any user with sufficient privileges can log into the system from any terminal and perform his/her tasks.&lt;br /&gt;&lt;br /&gt;Configuring the RDP Server on Windows 7 involves the following steps –&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Right-click &lt;b&gt;Computer&lt;/b&gt; and select &lt;b&gt;Properties&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Click on &lt;b&gt;Remote Settings&lt;/b&gt; link present in the left panel&lt;/li&gt;&lt;li&gt;If you want to allow connections from any version of Remote Desktop, select the second option. This is a &lt;b&gt;less secure&lt;/b&gt; configuration. However this will allow users from other versions of Windows and UNIX to connect to the system. Eg. if a system with Windows 7 has been setup as a server, this option will allow older versions of Windows like XP and 2K to access it&lt;/li&gt;&lt;li&gt;On the other hand if you are sure that you want users to connect from the same version of Remote Desktop, select the third option. This is a &lt;b&gt;more secure&lt;/b&gt; configuration&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;&lt;u&gt;Configuring RDP Clients&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Once the server has been setup, any RDP Client can hook up to it from any system connected to it in the network.&lt;br /&gt;&lt;br /&gt;Establishing a connection to a RDP Server from a system running Windows XP involves the following steps –&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Go to &lt;b&gt;All Programs -&amp;gt; Accessories -&amp;gt; Remote Desktop Connection&lt;/b&gt;&lt;/li&gt;&lt;li&gt;If the RDP Server has a computer name, enter the name. Else enter the &lt;b&gt;IP address&lt;/b&gt; of the RDP Server&lt;/li&gt;&lt;li&gt;Login with the proper &lt;b&gt;username and password&lt;/b&gt;; and you are ready to work&lt;/li&gt;&lt;li&gt;At the end, remember to &lt;b&gt;log off&lt;/b&gt; and not shut down, because shutting the system down would require a physical startup the next time whereas logging in again can be done remotely&lt;/li&gt;&lt;/ol&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-oGTt5a7g7Nk/ThsyQKKLckI/AAAAAAAACKQ/A7lf0dC4x84/s1600/087+Remote+Desktop+Services+Using+RDP+01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-oGTt5a7g7Nk/ThsyQKKLckI/AAAAAAAACKQ/A7lf0dC4x84/s320/087+Remote+Desktop+Services+Using+RDP+01.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-xT0lRyh1FNs/ThsyRC9DAiI/AAAAAAAACKU/5mddmBH-HKw/s1600/087+Remote+Desktop+Services+Using+RDP+02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-xT0lRyh1FNs/ThsyRC9DAiI/AAAAAAAACKU/5mddmBH-HKw/s320/087+Remote+Desktop+Services+Using+RDP+02.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Remember – According the EULA of Microsoft Windows, only a single user can use the copy of Windows at a time. So there can be only one RDP Client active for a particular RDP Server. If another RDP Client logs in, the existing user will prompted to log off.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Facts and Features of RDP&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;RDP uses presentation virtualization to enable a much better end-user experience, scalability and bandwidth experience. RDP plugs into the Windows graphics system the same way a real display driver does, expect that, instead of being a driver for a physical video card, RDP is a virtual display driver&lt;/li&gt;&lt;li&gt;RDP usage of bandwidth is far less than expected. This is important as bandwidth is a very big constraint in networking. However, the bandwidth usage varies from the application to application being used. Eg. A slideshow in PowerPoint will drive more bandwidth than a simple movement of the mouse&lt;/li&gt;&lt;li&gt;RDP can be tuned as per the requirements of the user. Factors like user-experience can be compromised to reduce the usage of bandwidth. RDP can be configured to give better performance too&lt;/li&gt;&lt;li&gt;Color depths have no effect on the user-experience of RDP. Though the initial versions only supported 8bpp (bits per pixel), the newer versions support 32bpp, and in fact Aero needs 32bpp to function properly&lt;/li&gt;&lt;li&gt;RDP is highly secure as it supports strong encryption and uses Keberos or TLS/SSL for authentication&lt;/li&gt;&lt;li&gt;RDP is not only used in Remote Desktop Services, it is used in several applications like Windows Media Center Extenders (including Xbox 360), Windows Live Mesh, etc.&lt;/li&gt;&lt;li&gt;The RDP protocol is completely publicly documented. To understand the internal working of RDP, you can visit - &lt;a href="http://msdn.microsoft.com/en-us/library/cc240445(PROT.10).aspx"&gt;http://msdn.microsoft.com/en-us/library/cc240445(PROT.10).aspx&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Well that’s it for a simple RDP Server-Client setup. Do check back soon for my next article on Windows Meeting Space, which is another part of the Remote Desktop Services using the RDP.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-2958685943902755433?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/2958685943902755433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=2958685943902755433' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/2958685943902755433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/2958685943902755433'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/12/remote-desktop-services-using-rdp.html' title='Remote Desktop Services Using RDP'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-oGTt5a7g7Nk/ThsyQKKLckI/AAAAAAAACKQ/A7lf0dC4x84/s72-c/087+Remote+Desktop+Services+Using+RDP+01.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-4090829180826256036</id><published>2009-12-03T09:50:00.008+05:30</published><updated>2011-07-11T23:14:13.796+05:30</updated><title type='text'>Reset Linux Root Password Using The GRUB</title><content type='html'>Before I start the central aspect of this article - resetting the Linux root password, let me quickly introduce you to boot loaders and the GRUB.&lt;br /&gt;&lt;br /&gt;A boot sequence is the initial set of operations that the computer performs when the power of a computer is switched on. A boot loader typically loads the main Operating System for the computer.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;A computer’s central processor can only execute program code found in the Read-Only-Memory (ROM) and Random-Access-Memory (RAM). However, when the computer is switched on, it does not have an Operating System in its ROM or RAM. So a computer initially executes a small program stored in a ROM, which in-turn loads the required code and data into the RAM for execution.&lt;br /&gt;&lt;br /&gt;This small program which performs this process is known as a bootstrap loader, bootstrap or a boot loader. This program is generally not the Operating System, but a miniature program which will load the required Operating System into the RAM from the non-volatile storage.&lt;br /&gt;&lt;br /&gt;There are several popular boot loaders used today – GRUB, BOOTMGR, LILO and NTLDR. The GNU GRUB (GNU GRand Unified Bootloader) is a boot loader package from the GNU Project and is one of the most popular boot loaders available today. LILO (LInux LOader) is a generic boot loader for Linux. NTLDR (NT Loader) is the boot loader for all releases of Microsoft’s Windows NT Operating System. In later versions of Windows like Vista and Windows 7, NTLDR was replaced by the Windows Boot Manager (BOOTMGR).&lt;br /&gt;&lt;br /&gt;In this article, we restrict ourselves to the GRUB loader. Typically, a few dual-boot environments and a few Linux based Operating Systems use the GRUB as their boot loader. Here is a screen-shot of the GRUB loader of Red Hat Enterprise Linux 5 –&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-QJQ7BeeeJvM/Ths2GVSJkDI/AAAAAAAACKY/TWhnO-yOaDo/s1600/086+Reset+Linux+Root+Password+Using+The+GRUB+01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/-QJQ7BeeeJvM/Ths2GVSJkDI/AAAAAAAACKY/TWhnO-yOaDo/s320/086+Reset+Linux+Root+Password+Using+The+GRUB+01.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;There are many scenarios where we might need to reset the root password of our Linux system. Consider you have been assigned to a Linux system to work with and the previous owner forgot to give you the root password; maybe you are in the middle of an important project and you don’t have the root password of the system when you need it urgently and the worst part – the system administrator is not in sight; or maybe you just forgot it. The possibilities are limitless.&lt;br /&gt;&lt;br /&gt;But remember, before you attempt to change or replace the password of any machine, make sure you have the necessary permissions from the management authorizing it. If not, it can be mistaken as an attempt to hack into the machine, which is not ethical.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Start the system, when the selection screen comes up, navigate to the line for Linux and press ‘e’&lt;/li&gt;&lt;li&gt;Now, select the entry that begins with the word – ‘kernel’ and again press ‘e’&lt;/li&gt;&lt;li&gt;Append ‘single’ to the end of the existing line. Make sure there is a space between the existing content and ‘single’&lt;/li&gt;&lt;li&gt;Press ‘b’ to boot into Linux as the root&lt;/li&gt;&lt;/ul&gt;You are now in the special mode called the “Single-User Mode”.&lt;br /&gt;&lt;br /&gt;If prompted for the root password here, restart the system and in the previous step, append ‘init=/bin/bash’ after ‘single’&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Use ‘passwd’ to specify the new root password&lt;/li&gt;&lt;/ul&gt;I am sure that reading this procedure would have caused apprehensions in the minds of several readers about the security of their systems. Using this method, anybody can hack your system. So if you want to be careful and avoid such situations, you will need to restrict any modifications to the GRUB. This can be done by protecting the GRUB by using a password.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Open the shell prompt and login as the root&lt;/li&gt;&lt;li&gt;Use the ‘grub-md5-crypt’ command to get the MD5 hash of your GRUB password&lt;/li&gt;&lt;li&gt;Open ‘/boot/grub/grub.conf’ and add ‘password -md5 &amp;lt;hash&amp;gt;’ below the timeout field&lt;/li&gt;&lt;li&gt;Save and exit&lt;/li&gt;&lt;/ul&gt;From next time, if you want to edit the GRUB, you will have to press ‘p’ followed by the GRUB password. The downside of this is that there is an extra password for you to remember. Well, accessibility has always been a trade-off in security.&lt;br /&gt;&lt;br /&gt;Note – Changing passwords of a system without proper permissions is unethical and illegal, which may lead to legal complications. So always follow a proper authorization channel before changing the passwords.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-4090829180826256036?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/4090829180826256036/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=4090829180826256036' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/4090829180826256036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/4090829180826256036'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/12/reset-linux-root-password-using-grub.html' title='Reset Linux Root Password Using The GRUB'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-QJQ7BeeeJvM/Ths2GVSJkDI/AAAAAAAACKY/TWhnO-yOaDo/s72-c/086+Reset+Linux+Root+Password+Using+The+GRUB+01.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-2886443556007530022</id><published>2009-09-23T23:47:00.009+05:30</published><updated>2011-07-11T23:16:01.970+05:30</updated><title type='text'>Three Years Of Vivacious Blogging</title><content type='html'>It’s been three years I started this blog and wrote my first article.&lt;br /&gt;&lt;br /&gt;With a great apprehension on my mind whether I can write public articles or not, I took a bold step and began my online endeavor on 21st September 2006. To describe my blogging experience till today in one line, I would call it a “Roller Coaster Ride” – filled with twists and twirls, but on a whole, exciting and exuberant.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Like any blogger, my biggest question was “What to write in my blog?” Initially I was clueless and wrote all kinds of articles ranging from my personal experiences to casual stories. But as time progressed I realized my strength and decided to make this a technical web-log. (Yes, I know I am violating my principle with this blog-post :P).&lt;br /&gt;&lt;br /&gt;From then my life became simpler and the number of my blog-posts increased. As time progressed, several technical topics like “Play-Station Emulators”, “The Towers of Hanoi” and “w32.USBWorm” were emphasized in my blog. My blog became a focus point of various presentations I gave in these years. Presentations like “Service Oriented Architecture”, “Globalised Solutions” and “Programming with Qt” were highlighted.&lt;br /&gt;&lt;br /&gt;As time moved on, I became the Sun Campus Ambassador of my college. Then I started a new blog at &lt;a href="http://blogs.sun.com/gautam/"&gt;http://blogs.sun.com/gautam/&lt;/a&gt;. I stuck to my resolution of making this a technical blog and continued my technical articles here and wrote my personal experiences in the other blog. Topics like “NetBeans” and “OpenSolaris” became a part of my blog after this.&lt;br /&gt;&lt;br /&gt;On a whole, there are 85 blog-posts on this blog and 22 blog-posts on my Sun blog till date.&lt;br /&gt;&lt;br /&gt;I am sure a lot of you are thinking “Who visits this blog?” I also used to contemplate over this question a lot. Then on 8th September 2009 I took a daring decision, decided to track my blog and signed up at Google Analytics. I was shocked by the results. From September 8th to September 23rd (16 days), my blog had 470 visits with 761 page-views. The visitors had a massive geographical diversity, spread across 42 countries, 112 cities and covering all the continents. As Google Analytics results cannot be displayed, I put a ClustrMap here for the visitors to see, so do check it out if you would like to view the regional diversity of the visitors of the blog.&lt;br /&gt;&lt;br /&gt;If you are a blogger like me, do sign-up for Google Analytics, you will be surprised by the results. For more details have a look at my previous post.&lt;br /&gt;&lt;br /&gt;During these three years I was fortunate to see the blogs of several of my friends come up and it was very exciting to read their magnificent articles. So I decided to create a network of these blogs here, do check them out after you finish reading this article.&lt;br /&gt;&lt;br /&gt;It would be inappropriate to end this blog-post without thanking everybody who encouraged me to start this blog and contributed to this blog with their constant feedback and guidance.&lt;br /&gt;&lt;br /&gt;Thanking them from the bottom of my heart and hoping more and more blog-posts come up here, Adios, Au Revoir, Sayonara and Good bye till my next blog-post.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-brf9IvyMnAc/Ths2x3qyNLI/AAAAAAAACKc/wk2jiv6TrfI/s1600/085+Three+Years+Of+Vivacious+Blogging+01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-brf9IvyMnAc/Ths2x3qyNLI/AAAAAAAACKc/wk2jiv6TrfI/s1600/085+Three+Years+Of+Vivacious+Blogging+01.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-2886443556007530022?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/2886443556007530022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=2886443556007530022' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/2886443556007530022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/2886443556007530022'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/09/three-years-of-vivacious-blogging.html' title='Three Years Of Vivacious Blogging'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-brf9IvyMnAc/Ths2x3qyNLI/AAAAAAAACKc/wk2jiv6TrfI/s72-c/085+Three+Years+Of+Vivacious+Blogging+01.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-8563675939342191152</id><published>2009-09-17T21:32:00.008+05:30</published><updated>2010-11-17T16:45:43.962+05:30</updated><title type='text'>Web Analytics - Boosting Performance</title><content type='html'>Every web-site/blog has visitors. Understanding the regional spread of these visitors and analyzing which articles (pages, products, etc.) bring in more visitors (customers), is vital for improving the business of the web-store or attracting more visitors to the blog/web-site.&lt;br /&gt;&lt;br /&gt;In this blog-post we are going to emphasis two popular web-site tracking tools – ClustrMaps and Google Analytics. In the next few sections I will refer blogs and web-stores as also web-sites. The principle is same for all of these.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;&lt;u&gt;Google Analytics&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Google Analytics is a brilliant innovation from labs of Google. It helps you analyze the traffic feed of your web-site in various perspectives. As Google describes it –&lt;br /&gt;&lt;br /&gt;“Google Analytics is the enterprise-class web analytics solution that gives you rich insights into your web-site traffic and marketing effectiveness”&lt;br /&gt;&lt;br /&gt;It has some really cool features that a web-site manager would love. There are four major components on Google Analytics –&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Visitors Overview&lt;/u&gt; – This component keeps track of every visitor that visits your web-site. It provides complete information on the number of visits, number of absolute unique visits, page-views, total time spent by visitors on the site and a percentage of new visits. One important parameter it keeps track of is the bounce rate. Bounce Rate is a measure to see how appealing the web-page was for the visitors. High percentages of bounce rate indicate the visitors moved out of the web-site quickly. It maintains complete information of the browsers used by the visitors and their connection speed.&lt;br /&gt;&lt;br /&gt;The geographical aspect of the visitor overview is marvelous. It shows a comprehensive analysis of the visitor’s geographical location. It pin-points the city from where a visitor has come.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Traffic Sources Overview&lt;/u&gt; – This component gives an overview of the sources of the traffic. It also provides a report on the sites which led the visitors to your web-site. For people targeting search engines, it provides a comprehensive analysis of the keywords which led the people to the web-site.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Content Overview&lt;/u&gt; – This component provides a detailed analysis of individual pages viewed by the visitors. It provides us with the total number of page-views, unique page-views and the bounce rate. It also provides us with the list of the pages which brought in the most visitors. It also shows us how many times each component of the web-site was clicked and the navigation patterns of the visitors.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Goals Overview&lt;/u&gt; – This component helps us to understand our objectives and keep a track of how far we have reached them. Goals can be setup with respect to every traceable unit of the blog like the page views, keyword patterns, etc.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;u&gt;Signing Up for Google Analytics&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So if you are excited by these features and would like to add Google Analytics support to your web-site, follow these steps –&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Go to &lt;a href="http://www.google.com/analytics/sign_up.html"&gt;http://www.google.com/analytics/sign_up.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Sign in with your Google account&lt;/li&gt;&lt;li&gt;Sign up for Google Analytics by providing the URL of your web-site and few other details&lt;/li&gt;&lt;li&gt;After filling in the form, you will be provided with a JavaScript code snippet. Copy this code to your web-site. For blogger, paste the code before the closing head tag in the Edit HTML component of the layout tab.&lt;/li&gt;&lt;li&gt;After a few hours, if the process was carried out properly the Google Analytics service will be running on your web-site. You can view the status by signing in at the Google Analytics web-site.&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;&lt;u&gt;ClustrMaps&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Google Analytics is good for analyzing your web-site behind the screen. But it does not allow visitors to see the geographical diversity of the other visitors. So if you are interested in showing the visitor count along with their geographical location to the public, go for ClustrMaps.&lt;br /&gt;&lt;br /&gt;To register your web-site with ClustrMaps, follow these steps –&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Go to &lt;a href="http://www.clustrmaps.com/"&gt;http://www.clustrmaps.com/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Provide the URL of your web-site and give your email id.&lt;/li&gt;&lt;li&gt;Select the style which suits your web-site.&lt;/li&gt;&lt;li&gt;Copy the code which is provided to your web-site.&lt;/li&gt;&lt;/ol&gt;Well that’s it for this post. Hope this post helps in increasing the visitors to your web-site. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-8563675939342191152?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/8563675939342191152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=8563675939342191152' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/8563675939342191152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/8563675939342191152'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/09/web-analytics-boosting-performance.html' title='Web Analytics - Boosting Performance'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-8190850180415755331</id><published>2009-09-16T19:33:00.006+05:30</published><updated>2011-07-11T23:20:00.272+05:30</updated><title type='text'>Symbian Operating System</title><content type='html'>The Symbian Operating System is an embedded Operating System developed by Symbian Ltd. It was built primarily for the ARM processor architecture. Though Symbian isn't completely open sourced, parts of its code-base have been made public.&lt;br /&gt;&lt;br /&gt;I recently gave a presentation on this and the topics covered were –&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The Symbian Foundation and a brief history about it&lt;/li&gt;&lt;li&gt;The notable features of the Symbian Operating System&lt;/li&gt;&lt;li&gt;The Operating System structure&lt;/li&gt;&lt;li&gt;Memory management&lt;/li&gt;&lt;li&gt;Process and thread management&lt;/li&gt;&lt;li&gt;Issues related to security and malware&lt;/li&gt;&lt;li&gt;The success stories of the Symbian OS&lt;/li&gt;&lt;li&gt;Application development in Symbian using Symbian C++ and Java ME&lt;/li&gt;&lt;/ul&gt;&lt;a name='more'&gt;&lt;/a&gt;Download the presentation &lt;a href="https://docs.google.com/leaf?id=0B6bFa1maIHJdYTc4YjFkZjAtYWQ3OC00ODM2LWFkZTktMTU2NzIzNTU2M2M1&amp;hl=en_US"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The presentation was followed by two demos – one covering Symbian C++ and the other covering Java ME. The software used in the demos –&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Active Perl 5.6&lt;/li&gt;&lt;li&gt;Symbian SDKs&lt;/li&gt;&lt;li&gt;Java Development Kit 6.0&lt;/li&gt;&lt;li&gt;Carbide.c++ 2.0&lt;/li&gt;&lt;li&gt;NetBeans 6.7.1&lt;/li&gt;&lt;li&gt;Sun Java Wireless Toolkit&lt;/li&gt;&lt;/ul&gt;Download the installation guides for these software &lt;a href="https://docs.google.com/leaf?id=0B6bFa1maIHJdNzU3ODUxOGYtMmI4Ni00MDA2LTk0MjgtOTYwN2M0OGY4ODcz&amp;hl=en_US"&gt;here&lt;/a&gt;. (They contain screen-shots which are self-explanatory). Download screen-shots for the Hello World demos &lt;a href="https://docs.google.com/leaf?id=0B6bFa1maIHJdNDIzYTA1NTUtMjM3MS00NjVmLTg0NjQtN2YwZGJmY2RhMzc0&amp;hl=en_US"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Visit the Symbian foundation web-site at &lt;a href="http://www.symbian.org/"&gt;http://www.symbian.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If any discrepancies are found in the presentation or in any one of the guides, please post the problem in the comments section.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-8190850180415755331?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/8190850180415755331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=8190850180415755331' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/8190850180415755331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/8190850180415755331'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/09/symbian-operating-system-is-embedded.html' title='Symbian Operating System'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-5734111196284429466</id><published>2009-07-22T00:42:00.008+05:30</published><updated>2011-07-11T23:22:21.321+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Synchronous and Asynchronous Database Replication - An Application Framework'/><title type='text'>Synchronous And Asynchronous Database Replication - Resources</title><content type='html'>Check out the dedicated web page of "Synchronous and Asynchronous Database Replication - An Application Framework" at &lt;a href="http://mysql-clustering.appspot.com/"&gt;http://mysql-clustering.appspot.com/&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;The project is a part of MySQL Forge at &lt;a href="http://forge.mysql.com/projects/project.php?id=348"&gt;http://forge.mysql.com/projects/project.php?id=348&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Download the entire project &lt;a href="https://docs.google.com/leaf?id=0B6bFa1maIHJdNmVjNzA5NWQtMDU4NC00YjYwLTliMmItODY3YjMwZDNjNDhl&amp;hl=en_US"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-5734111196284429466?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/5734111196284429466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=5734111196284429466' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/5734111196284429466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/5734111196284429466'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/07/synchronous-and-asynchronous-database_8592.html' title='Synchronous And Asynchronous Database Replication - Resources'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-9196299932557273540</id><published>2009-07-22T00:32:00.008+05:30</published><updated>2010-11-17T19:32:16.308+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Synchronous and Asynchronous Database Replication - An Application Framework'/><title type='text'>Synchronous And Asynchronous Database Replication - Project Technology Summary</title><content type='html'>The demo framework not only showcases the MySQL capability but also demonstrates a variety of Sun Technologies and Industry Standard Interfaces.&lt;br /&gt;&lt;br /&gt;The implementation has been modular so that the demo can be downsized but still the features can be demonstrated. &lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;The various components that have been utilized are listed below -&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Hardware – Intel Quad Core Desktop with 4GB RAM&lt;/li&gt;&lt;li&gt;Virtualization – Sun VirtualBox &lt;/li&gt;&lt;li&gt;Operating Systems – Windows Vista, Windows Server 2003, Fedora Linux, OpenSolaris&lt;/li&gt;&lt;li&gt;Database – MySQL&lt;/li&gt;&lt;li&gt;Web Servers – GlassFish and Internet Information Services&lt;/li&gt;&lt;li&gt;IDEs – NetBeans and Microsoft Visual Studio&lt;/li&gt;&lt;li&gt;Web Service Layer – Java API for XML Web Services&lt;/li&gt;&lt;li&gt;Front End GUI - Java Swing, HTML, JavaScript, Visual Web Java Server Faces, Java Micro Edition, C# and ASP.NET&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-9196299932557273540?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/9196299932557273540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=9196299932557273540' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/9196299932557273540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/9196299932557273540'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/07/synchronous-and-asynchronous-database_2501.html' title='Synchronous And Asynchronous Database Replication - Project Technology Summary'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-122671573617411200</id><published>2009-07-22T00:28:00.012+05:30</published><updated>2010-11-17T19:41:10.462+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Synchronous and Asynchronous Database Replication - An Application Framework'/><title type='text'>Synchronous And Asynchronous Database Replication - Project Approach</title><content type='html'>As per the advice of Sun Team, the project has been implemented in a staggered model as outlined below with a use case that covered a Telephone Enterprise Customer Database wherein each Customer is uniquely identified by phone number (country code + phone number) -&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;strong&gt;&lt;u&gt;Database Administration&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;This Phase covered the Hardware Setup, Operating System Setup, and Installation of MySQL. The major focus during this phase was to setup Replication features of MySQL using two different approaches – Asynchronous and Synchronous.&lt;br /&gt;&lt;br /&gt;Both the replication approaches were implemented against two MySQL engines – InnoDB and MyISAM.&lt;br /&gt;&lt;br /&gt;Implementation and comprehensive testing was performed at this stage which also covered failures of databases and scalability under the available hardware configuration.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Business Logic Development&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;This Phase covered the business logic requirement where the stress and focus was on standard database interfaces. The demo implemented Hibernate, an ORM model and JDBC to connect to MySQL database.&lt;br /&gt;&lt;br /&gt;The connection to the database using these technologies is achieved through a Web Services layer. CRUD functionality has been implemented using Web Services.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Graphical User Interface Development&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The focus of this phase is to demonstrate how an end-user application would interact with MySQL database using the Web Service Layer. The demo implemented various client-side GUIs in the form of front-end technologies like Java Swing, Visual Web Java Server Faces (JSF), Java Micro Edition and ASP.NET.&lt;br /&gt;&lt;br /&gt;Exhaustive test cases have been written to demonstrate the functionality covering both success and failure situations.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-122671573617411200?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/122671573617411200/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=122671573617411200' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/122671573617411200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/122671573617411200'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/07/synchronous-and-asynchronous-database_5916.html' title='Synchronous And Asynchronous Database Replication - Project Approach'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-878373450214767520</id><published>2009-07-22T00:03:00.014+05:30</published><updated>2011-07-11T23:30:07.393+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Synchronous and Asynchronous Database Replication - An Application Framework'/><title type='text'>Synchronous And Asynchronous Database Replication - Project Design</title><content type='html'>&lt;b&gt;&lt;u&gt;Project Goals&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The goal of the project is to provide a snapshot capability for three types of audience -&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;i&gt;Database Administrators&lt;/i&gt; - Installation, Replication and Clustering of MySQL databases both in standalone and virtualized Operating System Environments covering Windows, Linux and Solaris.&lt;/li&gt;&lt;li&gt;&lt;i&gt;Business Logic Developers&lt;/i&gt; - CRUD (Create, Retrieve, Update, Delete) operations using Web Services to interact with the MySQL database adopting JDBC and Hibernate interfaces.&lt;/li&gt;&lt;li&gt;&lt;i&gt;Client Side GUI Developers&lt;/i&gt; - Provide sample codes to access and implement data management through above Web Services. The Client interfaces are diversified covering J2ME, JSF, Java Swing, and ASP.net to demonstrate the versatility of the seamless interface to MySQL database.&lt;/li&gt;&lt;/ol&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;b&gt;&lt;u&gt;Project Architecture&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The project as depicted below implements the Model-View-Controller (MVC) architectural pattern, with the database layer representing the model, the business logic layer representing the controller and the font-end GUI representing the view.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Un1KmtyrGHY/Ths5AdVWiwI/AAAAAAAACKg/RZBpJhrs6sI/s1600/079+Synchronous+And+Asynchronous+Database+Replication+-+Project+Design+01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/-Un1KmtyrGHY/Ths5AdVWiwI/AAAAAAAACKg/RZBpJhrs6sI/s320/079+Synchronous+And+Asynchronous+Database+Replication+-+Project+Design+01.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-xbb5zhQayUI/Ths5A77gsJI/AAAAAAAACKk/PbYJ-CvdxX0/s1600/079+Synchronous+And+Asynchronous+Database+Replication+-+Project+Design+02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://1.bp.blogspot.com/-xbb5zhQayUI/Ths5A77gsJI/AAAAAAAACKk/PbYJ-CvdxX0/s320/079+Synchronous+And+Asynchronous+Database+Replication+-+Project+Design+02.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-878373450214767520?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/878373450214767520/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=878373450214767520' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/878373450214767520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/878373450214767520'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/07/synchronous-and-asynchronous-database_22.html' title='Synchronous And Asynchronous Database Replication - Project Design'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-Un1KmtyrGHY/Ths5AdVWiwI/AAAAAAAACKg/RZBpJhrs6sI/s72-c/079+Synchronous+And+Asynchronous+Database+Replication+-+Project+Design+01.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-6096116988477472388</id><published>2009-07-21T23:53:00.008+05:30</published><updated>2010-11-17T19:59:28.529+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Synchronous and Asynchronous Database Replication - An Application Framework'/><title type='text'>Synchronous And Asynchronous Database Replication - Project Backdrop</title><content type='html'>&lt;strong&gt;&lt;u&gt;Industry Association Program&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;To provide students with an exposure to industry practices and work environment, Osmania University started the Industry Association Program (IAP), as a part of the curriculum, wherein the third year students are encouraged to work in a professional organization.&lt;br /&gt;&lt;br /&gt;As a part of IAP, we (J. Kamala Ramya, K. Laxman Bharadwaj and me) had been assigned to Sun Microsystems Inc.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;strong&gt;&lt;u&gt;Organization Profile&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Sun Microsystems Inc. is a multi-national vendor of several software and hardware products. The Headquarters of Sun Microsystems is at Santa Clara, California, United States. It has branches in several countries covering APAC, America and Europe.&lt;br /&gt;&lt;br /&gt;Its contribution to the field of hardware has been marvelous, especially with the SPARC architecture.&lt;br /&gt;&lt;br /&gt;Sun has several software products to its credit, which include Solaris, Star Office, VirtualBox, MySQL, etc. The most significant contribution of Sun Microsystems to the field of computers and electronics has been the “Java programming language”, which is widely used in several devices, which include computers and mobile phones.&lt;br /&gt;&lt;br /&gt;Sun is a big supporter of Open Systems and is one of the major contributors of Open Source Software.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Project Identification&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Our initial interactions with Sun Team was to identity a task which would benefit Sun as an organization and for us to improve capability and be industry ready after our BE course.&lt;br /&gt;&lt;br /&gt;After evaluating various product lines and discussions with Sun Team, a decision was made in concurrence with Sun Team to focus on a Demo Framework which would showcase MySQL capabilities and how it would interface with various layers in a typical application environment.&lt;br /&gt;&lt;br /&gt;After the $1 billion acquisition of MySQL, Sun has been actively propagating the product to its clients. It was felt that a demo framework encompassing standard frontend interfaces, standard database interfaces and standard database functionality would help the clients to make a knowledgeable assessment of the product.&lt;br /&gt;&lt;br /&gt;The demo suite proposed was expected to cover the replication features of MySQL to demonstrate how MySQL can fit in a complete commercial application involving various layers like – Databases, Business Logic and GUI.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-6096116988477472388?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/6096116988477472388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=6096116988477472388' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/6096116988477472388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/6096116988477472388'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/07/synchronous-and-asynchronous-database.html' title='Synchronous And Asynchronous Database Replication - Project Backdrop'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-1186454209671250796</id><published>2009-07-21T22:11:00.004+05:30</published><updated>2010-11-17T20:02:46.849+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Globalized Solutions - Breaking the Barriers of Language'/><title type='text'>Globalized Solutions - Summary</title><content type='html'>For every new program that is being developed fresh, it is recommended that it should follow the MVC pattern and that it satisfies the criteria for an internationalized program. Going forward, internationalization is an unspoken requirement that every application in global markets should satisfy.&lt;br /&gt;&lt;br /&gt;Using translation and transliteration features to the maximum reduces the requirement of a language expert and there-by obtain project profitability.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Whichever project is being worked upon, development, migration, enhancement or QA, thinking of ways to apply the concept of Globalization will improve the robustness of the application.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-1186454209671250796?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/1186454209671250796/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=1186454209671250796' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/1186454209671250796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/1186454209671250796'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/07/internationalization-summary.html' title='Globalized Solutions - Summary'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-7612480289758100032</id><published>2009-07-21T22:10:00.004+05:30</published><updated>2010-11-17T20:05:00.497+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Globalized Solutions - Breaking the Barriers of Language'/><title type='text'>Database Internationalization</title><content type='html'>Besides GUI, an application has two other parts – Business Logic and Persistence. Typically the Business Logic is isolated and no language changes would be required. For globalized applications, the Persistence is typically a database like Oracle, MySQL, IBM DB2, Microsoft SQL Server etc.&lt;br /&gt;&lt;br /&gt;The advancements in Databases Technologies have simplified the support for multi-languages. Most of the databases today support internationalization using Unicode characters. Restrictions on the languages that can be a part of the database can also be imposed. However the availability of this restriction is dependent on the DBMS being used.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Each database management system provides its own procedure to implement this multi-lingual data processing on their database but many times a language parameter setup during installation would suffice.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-7612480289758100032?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/7612480289758100032/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=7612480289758100032' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/7612480289758100032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/7612480289758100032'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/07/database-internationalization.html' title='Database Internationalization'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-4412564619380713846</id><published>2009-07-21T22:07:00.009+05:30</published><updated>2010-11-17T20:14:48.070+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Globalized Solutions - Breaking the Barriers of Language'/><title type='text'>Translation And Transliteration</title><content type='html'>Though not directly a part of internationalization, translation and transliteration provide the basis for I18n.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;strong&gt;&lt;u&gt;Translation&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Translation is the process of converting a fragment of text from one language to another language. Translation is done by either by human translators, or by translators which involve artificial intelligence. In applications where perfect translation is required, human translators are employed.&lt;br /&gt;&lt;br /&gt;However in applications where perfection of translation is not the at-most priority, AI translators are used. Examples of such translators include, Yahoo Babel Fish and Google Translate.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Transliteration&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Transliteration is the practice of transcribing a word or text written in one writing system into another writing system. In the case of I18n, this provides a method of converting the keyboard language to a desired language.&lt;br /&gt;&lt;br /&gt;Popular sites like Orkut make use of this service to create messages in languages like Hindi, Telugu, Tamil, etc. Several services related to translations and transliterations are available on the internet. In fact, Google provides APIs to directly implement these features in our applications.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Usage&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;If there is an existing product where a locale change is required and it does not follow the MVC structure, the developer can use the concepts of translation and transliteration and there-by migrate the application to the required locale. The language part is then reviewed by a language expert.&lt;br /&gt;&lt;br /&gt;Even during internationalization, the resources bundles can be created for various languages using these concepts and they can then be offered to review by a language expert. These concepts are also useful when developers are interacting with users who do not know English through mails or documents to get an initial feel of the requirements.&lt;br /&gt;&lt;br /&gt;Support for a product can also be made cost effective where the user logs issues in native language and the person supporting can understand the issue at high level using translation concepts. Reducing the time requirement of language expert is a significant cost saving in projects as these experts charge very high.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-4412564619380713846?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/4412564619380713846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=4412564619380713846' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/4412564619380713846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/4412564619380713846'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/07/translation-and-transliteration.html' title='Translation And Transliteration'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-7227588584405025947</id><published>2009-07-21T22:05:00.003+05:30</published><updated>2010-11-17T20:17:08.362+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Globalized Solutions - Breaking the Barriers of Language'/><title type='text'>Internationalizing Mobiles Using J2ME</title><content type='html'>Unlike desktop applications and web application, mobile applications cannot utilize resource bundles. Internationalizing mobile applications follows a slightly different approach.&lt;br /&gt;&lt;br /&gt;In such devices, internationalization is achieved using a user-defined resource class. This class holds all the strings required by the application in various languages. Depending on the locale, the required set of strings is returned to the main application, and that application in-turn displays the locale-specific content.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Generally the resource class obtains the locale of the mobile device and returns the locale-specific set of strings to the main application. However the languages supported by the mobile-device are entirely device-dependent. So there is a huge possibility that the internationalization efforts may not be completely perceptible in all the targeted mobile devices.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-7227588584405025947?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/7227588584405025947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=7227588584405025947' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/7227588584405025947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/7227588584405025947'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/07/internationalizing-mobiles-using-j2me.html' title='Internationalizing Mobiles Using J2ME'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-3553520742383910608</id><published>2009-07-21T21:58:00.013+05:30</published><updated>2011-07-11T23:36:31.962+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Globalized Solutions - Breaking the Barriers of Language'/><title type='text'>Internationalizing Web Applications</title><content type='html'>There are two important ways of internationalizing Web Applications – Using Resource Bundles and Using locale specific JSP pages. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Using resource bundles&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Internationalization can be achieved by using resource bundles in Web Applications like Java Server Pages with the Java Server Faces framework. In such applications, the resource bundles created are similar to those created in the desktop applications. To use these resource bundles, they are registered with the web application in the form of a JSF config file with the required XML content.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-hlUU5TAUF9k/Ths6au2MYXI/AAAAAAAACKo/xo9317WaSkM/s1600/073+Internationalizing+Web+Applications+01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="102" src="http://3.bp.blogspot.com/-hlUU5TAUF9k/Ths6au2MYXI/AAAAAAAACKo/xo9317WaSkM/s320/073+Internationalizing+Web+Applications+01.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;b&gt;&lt;u&gt;Using locale specific JSP pages&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Another way to achieve internationalization is to use different sets of JSP pages for different languages. This method mainly maintains a mirror copy for each of the language and, the locale specific JSP set is sent to the client on demand. However this method would result in more number of JSP pages but would provide greater customizability.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-BF5SseYizDY/Ths6bHq_xjI/AAAAAAAACKs/8Sy_3gsYwiI/s1600/073+Internationalizing+Web+Applications+02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="145" src="http://3.bp.blogspot.com/-BF5SseYizDY/Ths6bHq_xjI/AAAAAAAACKs/8Sy_3gsYwiI/s320/073+Internationalizing+Web+Applications+02.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-3553520742383910608?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/3553520742383910608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=3553520742383910608' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/3553520742383910608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/3553520742383910608'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/07/internationalizing-web-applications.html' title='Internationalizing Web Applications'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-hlUU5TAUF9k/Ths6au2MYXI/AAAAAAAACKo/xo9317WaSkM/s72-c/073+Internationalizing+Web+Applications+01.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-7847003389862454911</id><published>2009-07-21T21:48:00.011+05:30</published><updated>2011-07-13T10:28:26.855+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Globalized Solutions - Breaking the Barriers of Language'/><title type='text'>Internationalizing Java Desktop And Console Applications</title><content type='html'>Internationalizing a Java application mainly uses the concept of resource bundles. The User-Interface code interacts with the resource bundles to extract the required information, thereby forming the User-Interface on the screen in the desired language.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;The various message labels, messages in dialog boxes, button text, etc. are to be translated to make these components for a non-English speaker. So these strings are separated from the program into a central external repository. These repositories are called as resource bundles in Java. They contain the appropriate content for the text messages in various languages for the targeted locales.&lt;br /&gt;&lt;br /&gt;These resource bundles many contain icons, pictures, actual UI elements like menus and buttons and even new window layouts, besides messages and other user-visible strings.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-N5sAw7KLiso/Th0l2ShFWOI/AAAAAAAACQ4/jHNCgrJQUzI/s1600/072+Internationalizing+Java+Desktop+And+Console+Applications+01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="170" src="http://3.bp.blogspot.com/-N5sAw7KLiso/Th0l2ShFWOI/AAAAAAAACQ4/jHNCgrJQUzI/s320/072+Internationalizing+Java+Desktop+And+Console+Applications+01.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;The resource bundles are a collection of properties files. A properties file exists for each locale targeted by the application. A properties file consists of key-value pairs. As the language changes, the key does not change, but the value changes. The components in the User-Interface code are referenced by the keys of the properties file. So as the language changes, the UI code need not be modified, the application will find the required properties file and use the corresponding value for each instance of the key in the program. The properties files of the resource bundle follow a naming convention which is of the form – bundle-name_language_country-code.&lt;br /&gt;&lt;br /&gt;E.g. consider a file which uses a key called greeting to welcome a user&lt;br /&gt;For English the properties file would contain greeting = hello&lt;br /&gt;For French the properties file would contain greeting = bonjure&lt;br /&gt;&lt;br /&gt;So whenever the programmer wishes to welcome the user, the greeting key might may be used. If the locale is set to English (United States), “hello” is displayed. Else if the locale is set to French (France), “bonjure” is displayed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-7847003389862454911?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/7847003389862454911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=7847003389862454911' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/7847003389862454911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/7847003389862454911'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/07/internationalizing-java-desktop-and.html' title='Internationalizing Java Desktop And Console Applications'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-N5sAw7KLiso/Th0l2ShFWOI/AAAAAAAACQ4/jHNCgrJQUzI/s72-c/072+Internationalizing+Java+Desktop+And+Console+Applications+01.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-8792521538862606299</id><published>2009-07-21T21:47:00.004+05:30</published><updated>2010-11-17T21:29:42.776+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Globalized Solutions - Breaking the Barriers of Language'/><title type='text'>Internationalization Support In Java</title><content type='html'>The entire Java platform is internationalized. Java provides an extensive library of classes and functions to help in internationalizing programs. Built-in I18n for Java comes with support for over 70 languages. I18n support comes for free or at very little cost.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;All text in a running Java program is Unicode. Unicode was a brave effort to create a single character set that included every reasonable writing system. As a result the Unicode character set has support for almost every language script used in today’s world. Using this Unicode character set, Java provides a platform for Internationalization.&lt;br /&gt;&lt;br /&gt;In Java the primitive type char is a single Unicode character. Similarly a String is a collection of these Unicode characters. All internal processing on text assumes the text to be in Unicode format.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-8792521538862606299?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/8792521538862606299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=8792521538862606299' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/8792521538862606299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/8792521538862606299'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/07/internationalization-support-in-java.html' title='Internationalization Support In Java'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-6465814822289616674</id><published>2009-07-21T21:24:00.015+05:30</published><updated>2011-07-11T23:34:58.255+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Globalized Solutions - Breaking the Barriers of Language'/><title type='text'>Globalized Solutions - Basic Application Structure</title><content type='html'>Any application can be divided into three primary components – Front End, Business Logic and Persistence.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-JtcmiQBBoV8/Ths7N0DVjLI/AAAAAAAACKw/Qbtiz2IJGVo/s1600/070+Globalized+Solutions+-+Basic+Application+Structure+01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="42" src="http://2.bp.blogspot.com/-JtcmiQBBoV8/Ths7N0DVjLI/AAAAAAAACKw/Qbtiz2IJGVo/s320/070+Globalized+Solutions+-+Basic+Application+Structure+01.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Internationalization primarily applies to the front end GUI and back-end data persistence. Business Logic need not be modified during the localization of the application. In frameworks like MVC, Struts, Spring, the business logic is completely separated from the GUI and in such frameworks, internationalization is easily implementable.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-6465814822289616674?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/6465814822289616674/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=6465814822289616674' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/6465814822289616674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/6465814822289616674'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/07/globalized-solutions-basic-application.html' title='Globalized Solutions - Basic Application Structure'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-JtcmiQBBoV8/Ths7N0DVjLI/AAAAAAAACKw/Qbtiz2IJGVo/s72-c/070+Globalized+Solutions+-+Basic+Application+Structure+01.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-900275813662706555</id><published>2009-07-21T21:21:00.004+05:30</published><updated>2010-11-17T21:45:14.720+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Globalized Solutions - Breaking the Barriers of Language'/><title type='text'>Internationalizing Programs</title><content type='html'>An internationalized program has the following characteristics –&lt;br /&gt;&lt;ul&gt;&lt;li&gt;With the addition of localized data, the same executable can run worldwide.&lt;/li&gt;&lt;li&gt;Textual elements, such as status messages and the GUI component labels are not hardcoded in the program. Instead they are stored outside the source code and retrieved dynamically.&lt;/li&gt;&lt;li&gt;Support for new languages does not require recompilation.&lt;/li&gt;&lt;li&gt;Culturally dependent data, such as dates and currencies, appear in formats that conform to the end user’s region and language.&lt;/li&gt;&lt;li&gt;It can be localized quickly.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-900275813662706555?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/900275813662706555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=900275813662706555' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/900275813662706555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/900275813662706555'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/07/internationalizing-programs.html' title='Internationalizing Programs'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-6928249423730349445</id><published>2009-07-21T21:10:00.010+05:30</published><updated>2011-07-11T23:39:02.523+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Globalized Solutions - Breaking the Barriers of Language'/><title type='text'>Globalization Terms</title><content type='html'>The most commonly used buzz-words in the Globalization market are Globalization, Translation and Localization and Internationalization. This article demystifies these terms.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-xWnEj7_pBYw/Ths8Eh6OC4I/AAAAAAAACK0/tgZauTTUpyY/s1600/068+Globalization+Terms+01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="152" src="http://3.bp.blogspot.com/-xWnEj7_pBYw/Ths8Eh6OC4I/AAAAAAAACK0/tgZauTTUpyY/s320/068+Globalization+Terms+01.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;b&gt;&lt;u&gt;Globalization [G11n]&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Globalization addresses the business issues associated with making a product global. In the globalization of high-tech products, this involves integrating localization throughout a company, after proper internationalization and product design. This also involves marketing, sales, and support in the world market.&lt;br /&gt;&lt;br /&gt;Globalization is mainly realized at the architecture level. There are two ways of achieving globalization – Internationalization and Localization.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Translation [T9n]&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Translation is the process of converting text in one language to text in another language.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Localization [L10n]&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Localization involves taking a product and making it linguistically and culturally appropriate to the target locale (country / region and language) where it will be used and sold.&lt;br /&gt;&lt;br /&gt;Localization involves two operations – Translation and Engineering. This process primarily focuses on translating the various locale-specific data, like pictures, colors, text, etc. and then making required changes in the application code to meet the requirements of the locale.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Internationalization [I18n]&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Internationalization, on the other hand, is the process of generalizing a product so that it can handle multiple language and cultural conventions without the need for re-design. It guides the developers to write program code with anticipation of locale change.&lt;br /&gt;&lt;br /&gt;Internationalization takes place at the level of program design and document development. This is achieved by the concept of resource bundles. This approach is primarily driven by MVC architectures. The focus is on separating the GUI so that the multi-language support is easily implemented while keeping the Business Logic and Persistence as standard for a variety of users. Today Internationalization capability for any solution that is being developed is a mandated requirement.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Acronym Rules&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Following the standard rules for abbreviating these words, the following acronyms will be used for the above terms in the rest of the series.&lt;br /&gt;&lt;br /&gt;Globalization – G11n&lt;br /&gt;Translation – T9n&lt;br /&gt;Localization – L10n&lt;br /&gt;Internationalization – I18n&lt;br /&gt;&lt;br /&gt;These acronyms are built using a simple philosophy. The acronym consists of the first letter and the last letter with the number of characters between them as a numeral. &lt;br /&gt;Eg. Consider Internationalization. It starts with I, ends with n and has 18 characters between I and n. So it is abbreviated as I18n.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-6928249423730349445?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/6928249423730349445/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=6928249423730349445' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/6928249423730349445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/6928249423730349445'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/07/globalization-terms.html' title='Globalization Terms'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-xWnEj7_pBYw/Ths8Eh6OC4I/AAAAAAAACK0/tgZauTTUpyY/s72-c/068+Globalization+Terms+01.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-3362231668459781952</id><published>2009-07-21T21:08:00.004+05:30</published><updated>2010-11-17T22:37:21.487+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Globalized Solutions - Breaking the Barriers of Language'/><title type='text'>Application Developers And Globalized Applications</title><content type='html'>Considering the factors mentioned in the previous blog posts, it is evident that organizations will focus on people with globalized application development or management skills. Hence it is very important that the developer community is enabled with this skill.&lt;br /&gt;&lt;br /&gt;Requirements in future could be to globalize an existing product or develop new product for a global market. The subsequent posts provide the various facets of globalized applications leveraging the skills that are already known to the developer community.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-3362231668459781952?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/3362231668459781952/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=3362231668459781952' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/3362231668459781952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/3362231668459781952'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/07/application-developers-and-globalized.html' title='Application Developers And Globalized Applications'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-4002020477094903971</id><published>2009-07-21T20:48:00.011+05:30</published><updated>2011-07-11T23:45:35.431+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Globalized Solutions - Breaking the Barriers of Language'/><title type='text'>The Case For Globalized Solutions</title><content type='html'>Globalized Solutions are becoming more important today due to some of the key trends like GDP by Region, World Population Distribution and Increased Investment in Emerging Markets. This post will emphasize the effect of these trends on Globalization.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;b&gt;&lt;u&gt;GDP by Region&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-5wSkyZxLh4U/Ths9cPu_E8I/AAAAAAAACK4/mh_93wNPC1A/s1600/066+The+Case+For+Globalized+Solutions+01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="288" src="http://2.bp.blogspot.com/-5wSkyZxLh4U/Ths9cPu_E8I/AAAAAAAACK4/mh_93wNPC1A/s320/066+The+Case+For+Globalized+Solutions+01.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Here is a graph of the world GDP distribution. As evident from the graph, though North America is the largest part, it is still only a third of the entire GDP. The other markets like European Union, Japan, China together form a large chunk of the GDP graph. People in these countries obviously don’t speak English natively. Even small percentage penetration into these markets can improve margins significantly for companies.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;World Population Distribution&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Bi7UeuyLjEA/Ths9cozvJ-I/AAAAAAAACK8/VlPzTZAyxDg/s1600/066+The+Case+For+Globalized+Solutions+02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="243" src="http://1.bp.blogspot.com/-Bi7UeuyLjEA/Ths9cozvJ-I/AAAAAAAACK8/VlPzTZAyxDg/s320/066+The+Case+For+Globalized+Solutions+02.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Here is a graph of the world population distribution. Notice how radically the ranking change from the GDP graph.&lt;br /&gt;&lt;br /&gt;Observe that more than half of the world’s population is in Asia, where a large chunk of non-English speaking population exists. China is fully dominated by Chinese language. India is dominated by multiplicity of languages each having a potential business opportunity.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Increased Investment in Emerging Markets&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Many companies are creating business units around emerging markets like China and India as they see their future business coming from these markets. There is a significant push in these countries to modernize right now and this is moving at a significant pace.&lt;br /&gt;&lt;br /&gt;Several real-life examples can be seen like - Usage of Mobile devices, Usage of Bank ATMs etc. As one can see today ATMs in India offer solution using Local Language / English. Mobile companies are offering solutions that allow messages to be sent in different local languages.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Emerging Markets – As good as Developed Countries&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Business conglomerates, similar to developed countries are evolving in emerging markets. Companies like Bharti Airtel, Vodafone, BSNL are comparable to Verizon, AT&amp;amp;T etc, Banks like ICICI, SBI are no smaller than Bank of America, Citibank etc. Retail channels like Reliance Fresh, Future Bazaar, etc are similar to Wal-Mart, Radio Shack etc. Similar situations exist in China. In addition many of the multinational organizations are setting up operations in emerging markets. However customer reach can increase in these markets if offerings are expanded in different local languages.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-4002020477094903971?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/4002020477094903971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=4002020477094903971' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/4002020477094903971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/4002020477094903971'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/07/case-for-globalized-solutions.html' title='The Case For Globalized Solutions'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-5wSkyZxLh4U/Ths9cPu_E8I/AAAAAAAACK4/mh_93wNPC1A/s72-c/066+The+Case+For+Globalized+Solutions+01.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-126473384498521324</id><published>2009-07-21T20:43:00.003+05:30</published><updated>2010-04-03T07:14:14.549+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Globalized Solutions - Breaking the Barriers of Language'/><title type='text'>Globalized Solutions - Introduction</title><content type='html'>In order to manage the impact of economic recession and stay profitable, many software organizations today are looking at expanding their offerings beyond the traditional US markets. Emphasis on reaching customers across the globe especially those who are located in emerging markets like European Union, China, India etc. is gaining momentum. One of the main criteria in reaching to these markets is to understand their culture and deliver products in their native language. Organizations are evaluating at models and methodologies to enhance their existing and futuristic solution portfolios to cater the global audience.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-126473384498521324?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/126473384498521324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=126473384498521324' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/126473384498521324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/126473384498521324'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/07/globalized-solutions-introduction.html' title='Globalized Solutions - Introduction'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-5974246012078833871</id><published>2009-07-21T20:37:00.010+05:30</published><updated>2011-07-11T23:48:45.332+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Globalized Solutions - Breaking the Barriers of Language'/><title type='text'>Globalized Solutions - Breaking The Barriers Of Language</title><content type='html'>Many Software Organizations today are looking at expanding their product sales, solutions and services towards emerging markets. Instead of relying on only the traditional US markets essentially dominated by the English language, companies have increased their focus on expanding business in language sensitive countries like European Union, China, India etc., One of the main criteria in reaching to these markets is to understand their culture and deliver products in their native language.&lt;br /&gt;&lt;br /&gt;In such a scenario and also in falling job markets, specialized skills become important and knowledge of Internationalization of Applications would be one such key skill. This series of blog posts provides approaches for quick learning and building this capability.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Various techniques like Translation and Internationalization are applied with respect to communication, document reading and Application Development.&lt;br /&gt;&lt;br /&gt;Internationalization provides a mechanism of simplifying the requirement of locale-specific applications, without losing the existing big English speaking markets like US, UK, etc. Developers can leverage programming languages like Java which internally support Internationalization for various desktop, web and mobile applications.&lt;br /&gt;&lt;br /&gt;View the paper &lt;a href="https://docs.google.com/viewer?a=v&amp;pid=explorer&amp;chrome=true&amp;srcid=0B6bFa1maIHJdYjNiM2MyNmUtNzA2ZC00MWFkLWFjOGQtODZiOTNkYTljMjc0&amp;hl=en_US"&gt;here&lt;/a&gt; and the presentation &lt;a href="https://docs.google.com/leaf?id=0B6bFa1maIHJdMWFmZTU2ODEtN2M2OC00ZWQ3LWI3ZjYtMjYyNTY0ZGRkYjdk&amp;hl=en_US"&gt;here&lt;/a&gt;. Download the sample applications &lt;a href="https://docs.google.com/leaf?id=0B6bFa1maIHJdNjg5MTNiMzUtMWYzMi00ZDU4LWFhMzMtMDNiMjI4MGJlOGI2&amp;hl=en_US"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-5974246012078833871?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/5974246012078833871/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=5974246012078833871' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/5974246012078833871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/5974246012078833871'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/07/globalized-solutions-breaking-barriers.html' title='Globalized Solutions - Breaking The Barriers Of Language'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-1401077675567758327</id><published>2009-02-23T13:53:00.030+05:30</published><updated>2011-07-12T00:07:56.847+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Service Oriented Architecture - Bringing Versatility to Business'/><title type='text'>SOA Live Demo - Web Services</title><content type='html'>Download the source codes from &lt;a href="https://docs.google.com/leaf?id=0B6bFa1maIHJdZDU1YmMwNzMtNzQyMi00NzcwLWIzY2MtMTE5OTYzMmY2ODJk&amp;hl=en_US"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Requirements - Java Development Kit, NetBeans 6.5, GlassFish v2, Visual Studio 2008, Internet Information Services.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Follow the below steps to get the projects running in Java and .NET Environments. There are four projects in the download archive - Palindrome_WebService, Palindrome_Java, Palindrome_JSP and Palindrome_J2ME.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Open the downloaded projects (Palindrome_WebService, Palindrome_Java, Palindrome_JSP and Palindrome_J2ME) in NetBeans 6.5.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-xRWNkZ9hK80/Ths_G2uQvDI/AAAAAAAACLA/gW6oXXiu0Yc/s1600/063+SOA+Live+Demo+-+Web+Services+01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://2.bp.blogspot.com/-xRWNkZ9hK80/Ths_G2uQvDI/AAAAAAAACLA/gW6oXXiu0Yc/s200/063+SOA+Live+Demo+-+Web+Services+01.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;The Palindrome_WebService project has the source code for the web service. Deploy it in GlassFish.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-h_nMheosmsY/Ths_Htisu7I/AAAAAAAACLE/uZetg9W-DNc/s1600/063+SOA+Live+Demo+-+Web+Services+02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://1.bp.blogspot.com/-h_nMheosmsY/Ths_Htisu7I/AAAAAAAACLE/uZetg9W-DNc/s200/063+SOA+Live+Demo+-+Web+Services+02.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;The Web Service can be tested by a built-in Web Service tester of NetBeans/GlassFish. The tester gives the method parameters and return values, along with the request and response SOAP messages.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-zlTKga4bzbw/Ths_Hw3sebI/AAAAAAAACLI/l-ABaEvX2gY/s1600/063+SOA+Live+Demo+-+Web+Services+03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://2.bp.blogspot.com/-zlTKga4bzbw/Ths_Hw3sebI/AAAAAAAACLI/l-ABaEvX2gY/s200/063+SOA+Live+Demo+-+Web+Services+03.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-fNZX5ERMWhE/Ths_IWedkrI/AAAAAAAACLM/Q4ujTIycoF8/s1600/063+SOA+Live+Demo+-+Web+Services+04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://3.bp.blogspot.com/-fNZX5ERMWhE/Ths_IWedkrI/AAAAAAAACLM/Q4ujTIycoF8/s200/063+SOA+Live+Demo+-+Web+Services+04.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;This Web Service can be hooked to a Java client with a GUI. Open the Palindrome_Java project and run it.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-9qnCc6aCrnY/Ths_Ix2E8LI/AAAAAAAACLQ/8vOtGu0wlqU/s1600/063+SOA+Live+Demo+-+Web+Services+05.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://3.bp.blogspot.com/-9qnCc6aCrnY/Ths_Ix2E8LI/AAAAAAAACLQ/8vOtGu0wlqU/s200/063+SOA+Live+Demo+-+Web+Services+05.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-AcuTcycSaU0/Ths_JRXsdRI/AAAAAAAACLU/wrAWlrxkQyg/s1600/063+SOA+Live+Demo+-+Web+Services+06.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://2.bp.blogspot.com/-AcuTcycSaU0/Ths_JRXsdRI/AAAAAAAACLU/wrAWlrxkQyg/s200/063+SOA+Live+Demo+-+Web+Services+06.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="2"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-VlAmlNnxZWs/Ths_KAvjEmI/AAAAAAAACLY/d04CPsDAxJw/s1600/063+SOA+Live+Demo+-+Web+Services+07.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://4.bp.blogspot.com/-VlAmlNnxZWs/Ths_KAvjEmI/AAAAAAAACLY/d04CPsDAxJw/s200/063+SOA+Live+Demo+-+Web+Services+07.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Similarly, the Web Service can be also used in a JSP page. Open the Palindrome_JSP project and run it.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-3gp6tdIri58/Ths_KnMWywI/AAAAAAAACLc/PVjjF93eVGw/s1600/063+SOA+Live+Demo+-+Web+Services+08.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://3.bp.blogspot.com/-3gp6tdIri58/Ths_KnMWywI/AAAAAAAACLc/PVjjF93eVGw/s200/063+SOA+Live+Demo+-+Web+Services+08.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-USNDE6fQ5MM/Ths_LPGYuwI/AAAAAAAACLg/IOxvCntRaPE/s1600/063+SOA+Live+Demo+-+Web+Services+09.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://1.bp.blogspot.com/-USNDE6fQ5MM/Ths_LPGYuwI/AAAAAAAACLg/IOxvCntRaPE/s200/063+SOA+Live+Demo+-+Web+Services+09.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-1vnqyEMQCh0/Ths_Lbu-N7I/AAAAAAAACLk/4jMMD75veyI/s1600/063+SOA+Live+Demo+-+Web+Services+10.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://1.bp.blogspot.com/-1vnqyEMQCh0/Ths_Lbu-N7I/AAAAAAAACLk/4jMMD75veyI/s200/063+SOA+Live+Demo+-+Web+Services+10.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-VQ598mPOjQY/Ths_L1iO7LI/AAAAAAAACLo/0oHUKtiRUjk/s1600/063+SOA+Live+Demo+-+Web+Services+11.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://4.bp.blogspot.com/-VQ598mPOjQY/Ths_L1iO7LI/AAAAAAAACLo/0oHUKtiRUjk/s200/063+SOA+Live+Demo+-+Web+Services+11.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;The Web Service can also be used in a J2ME mobile device. Open the Palindrome_J2ME project and run it.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-qaZDs1i1gXg/Ths_Md5XASI/AAAAAAAACLs/QLCmQPchY1U/s1600/063+SOA+Live+Demo+-+Web+Services+12.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://1.bp.blogspot.com/-qaZDs1i1gXg/Ths_Md5XASI/AAAAAAAACLs/QLCmQPchY1U/s200/063+SOA+Live+Demo+-+Web+Services+12.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-fNCk9_CVdhY/Ths_NLXPRRI/AAAAAAAACLw/VPI9Q1-9MO0/s1600/063+SOA+Live+Demo+-+Web+Services+13.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://3.bp.blogspot.com/-fNCk9_CVdhY/Ths_NLXPRRI/AAAAAAAACLw/VPI9Q1-9MO0/s200/063+SOA+Live+Demo+-+Web+Services+13.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="2"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-QAL6RD3bdY4/Ths_NkFEySI/AAAAAAAACL0/J5hJwU1uPY4/s1600/063+SOA+Live+Demo+-+Web+Services+14.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://2.bp.blogspot.com/-QAL6RD3bdY4/Ths_NkFEySI/AAAAAAAACL0/J5hJwU1uPY4/s200/063+SOA+Live+Demo+-+Web+Services+14.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;All these projects are primarily implementations of Java. However this Java Web Service can also be connected to an entirely new language (if it has XML support). Open the remaining projects from the downloaded archive (Palindrome_CSharp and Palindrome_ASP.NET) in Visual Studio.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-2-Yyf8-XIf8/Ths_OKyzvVI/AAAAAAAACL4/Ar-A50SjnYs/s1600/063+SOA+Live+Demo+-+Web+Services+15.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://3.bp.blogspot.com/-2-Yyf8-XIf8/Ths_OKyzvVI/AAAAAAAACL4/Ar-A50SjnYs/s200/063+SOA+Live+Demo+-+Web+Services+15.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;Consider a C# client which accesses the Java Web Service. Open the Palindrome_CSharp project in Visual Studio and run it. Remember GlassFish needs to be up and running with the Web Service deployed, for this to work.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-C4PtHMUwmE4/Ths_OnoDzfI/AAAAAAAACL8/AOnTyMJZ9UM/s1600/063+SOA+Live+Demo+-+Web+Services+16.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://4.bp.blogspot.com/-C4PtHMUwmE4/Ths_OnoDzfI/AAAAAAAACL8/AOnTyMJZ9UM/s200/063+SOA+Live+Demo+-+Web+Services+16.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-R9J3nhfxoaE/Ths_PAYAvRI/AAAAAAAACMA/2rS7VGuL-dw/s1600/063+SOA+Live+Demo+-+Web+Services+17.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://3.bp.blogspot.com/-R9J3nhfxoaE/Ths_PAYAvRI/AAAAAAAACMA/2rS7VGuL-dw/s200/063+SOA+Live+Demo+-+Web+Services+17.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Finally consider an ASP.NET page, using C# hosted on IIS, accessing the Java Web Service hosted on GlassFish. Open the Palindrome_ASP.NET project in Visual Studio and run it to achieve this.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-smBV2GHxudg/Ths_P33T6XI/AAAAAAAACME/8ifg8ogcEjo/s1600/063+SOA+Live+Demo+-+Web+Services+18.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://4.bp.blogspot.com/-smBV2GHxudg/Ths_P33T6XI/AAAAAAAACME/8ifg8ogcEjo/s200/063+SOA+Live+Demo+-+Web+Services+18.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-SNcoEbX2CDw/Ths_QSiDRCI/AAAAAAAACMI/A237yvKtJFg/s1600/063+SOA+Live+Demo+-+Web+Services+19.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://1.bp.blogspot.com/-SNcoEbX2CDw/Ths_QSiDRCI/AAAAAAAACMI/A237yvKtJFg/s200/063+SOA+Live+Demo+-+Web+Services+19.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-I9i0257-sQ0/Ths_QvfUPkI/AAAAAAAACMM/DJ6v15w-TrA/s1600/063+SOA+Live+Demo+-+Web+Services+20.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://1.bp.blogspot.com/-I9i0257-sQ0/Ths_QvfUPkI/AAAAAAAACMM/DJ6v15w-TrA/s200/063+SOA+Live+Demo+-+Web+Services+20.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-3mTGWF3XIUg/Ths_RJECMNI/AAAAAAAACMQ/y0Iv9PONuZE/s1600/063+SOA+Live+Demo+-+Web+Services+21.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://1.bp.blogspot.com/-3mTGWF3XIUg/Ths_RJECMNI/AAAAAAAACMQ/y0Iv9PONuZE/s200/063+SOA+Live+Demo+-+Web+Services+21.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Well, that's it. So we have used a Java Web Service in a Java client, JSP page, J2ME mobile device, C# console application and in an ASP.NET page.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-1401077675567758327?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/1401077675567758327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=1401077675567758327' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/1401077675567758327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/1401077675567758327'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/02/soa-live-demo-web-services.html' title='SOA Live Demo - Web Services'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-xRWNkZ9hK80/Ths_G2uQvDI/AAAAAAAACLA/gW6oXXiu0Yc/s72-c/063+SOA+Live+Demo+-+Web+Services+01.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-86958556179459752</id><published>2009-02-23T12:49:00.021+05:30</published><updated>2011-07-12T00:16:38.508+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Service Oriented Architecture - Bringing Versatility to Business'/><title type='text'>SOA Live Demo - Java Native Interface</title><content type='html'>Download the source codes from &lt;a href="https://docs.google.com/leaf?id=0B6bFa1maIHJdZGRkYTFlNDUtZDdlZC00MTczLWJiMWEtZGNkOGZmMGRmMmRk&amp;hl=en_US"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Requirements - Java Development Kit and Visual Studio.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;This article focuses on how to connect a C++ Dynamic Link Library to a Java program using the Java Native Interface. To run a C++ function in a Java program, we would require the C++ function to be in a DLL and this DLL to be loaded at run-time into the memory by the Java program.&lt;br /&gt;&lt;br /&gt;Load the library from the Java program using the full path with the load function or let the JVM load the DLL using the system path with the loadLibrary function.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;The C++ function is declared native in the Java program. Compile the file to generate the class file using the javac command.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-5U6f_1wxa3E/ThtDUUc1wiI/AAAAAAAACMU/zOFuELBbYK4/s1600/062+SOA+Live+Demo+-+Java+Native+Interface+01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://1.bp.blogspot.com/-5U6f_1wxa3E/ThtDUUc1wiI/AAAAAAAACMU/zOFuELBbYK4/s200/062+SOA+Live+Demo+-+Java+Native+Interface+01.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;Create a C++ header for the native function using the javah command on the generated class file. A declaration for the function is generated following the syntax java_&amp;lt;class&amp;gt;_&amp;lt;function&amp;gt;. &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Nlf2I14_UeM/ThtDU4gVz_I/AAAAAAAACMY/WrCztqCOJ7c/s1600/062+SOA+Live+Demo+-+Java+Native+Interface+02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://3.bp.blogspot.com/-Nlf2I14_UeM/ThtDU4gVz_I/AAAAAAAACMY/WrCztqCOJ7c/s200/062+SOA+Live+Demo+-+Java+Native+Interface+02.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;Create a new project to generate the DLL in Visual C++. The project consists of the header generated from the previous step, a C++ file using the function declaration generated in the header and a header consisting of the required function that is to be used in the Java program. A DLL is generated from this project.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-YOL33H2_RHw/ThtDVLW05eI/AAAAAAAACMc/2NwRWo9agkU/s1600/062+SOA+Live+Demo+-+Java+Native+Interface+03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://1.bp.blogspot.com/-YOL33H2_RHw/ThtDVLW05eI/AAAAAAAACMc/2NwRWo9agkU/s200/062+SOA+Live+Demo+-+Java+Native+Interface+03.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-TPBl22QLAlk/ThtDVl3UFkI/AAAAAAAACMg/ff563jZ4L_Q/s1600/062+SOA+Live+Demo+-+Java+Native+Interface+04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://3.bp.blogspot.com/-TPBl22QLAlk/ThtDVl3UFkI/AAAAAAAACMg/ff563jZ4L_Q/s200/062+SOA+Live+Demo+-+Java+Native+Interface+04.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Any C++ application can be created normally which uses the existing function.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-DWGsd0Nc6Ag/ThtDWZGoadI/AAAAAAAACMk/0m513uWWxyY/s1600/062+SOA+Live+Demo+-+Java+Native+Interface+05.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://2.bp.blogspot.com/-DWGsd0Nc6Ag/ThtDWZGoadI/AAAAAAAACMk/0m513uWWxyY/s200/062+SOA+Live+Demo+-+Java+Native+Interface+05.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-eFGI6XVZMGU/ThtDW6blk2I/AAAAAAAACMo/1syTBcAfgd0/s1600/062+SOA+Live+Demo+-+Java+Native+Interface+06.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://3.bp.blogspot.com/-eFGI6XVZMGU/ThtDW6blk2I/AAAAAAAACMo/1syTBcAfgd0/s200/062+SOA+Live+Demo+-+Java+Native+Interface+06.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Copy the DLL generated from Visual Studio to the path specified in the Java application and run the Java program using the java command.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-OP4JZbIhDE8/ThtDXuzXSsI/AAAAAAAACMs/lVTnoCeS5IQ/s1600/062+SOA+Live+Demo+-+Java+Native+Interface+07.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://2.bp.blogspot.com/-OP4JZbIhDE8/ThtDXuzXSsI/AAAAAAAACMs/lVTnoCeS5IQ/s200/062+SOA+Live+Demo+-+Java+Native+Interface+07.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;As a result, the same function was used in a C++ program as well as in a Java program.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-86958556179459752?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/86958556179459752/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=86958556179459752' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/86958556179459752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/86958556179459752'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/02/soa-live-demo-java-native-interface.html' title='SOA Live Demo - Java Native Interface'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-5U6f_1wxa3E/ThtDUUc1wiI/AAAAAAAACMU/zOFuELBbYK4/s72-c/062+SOA+Live+Demo+-+Java+Native+Interface+01.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-2409594931298181794</id><published>2009-02-23T12:28:00.011+05:30</published><updated>2010-11-21T01:03:37.910+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Service Oriented Architecture - Bringing Versatility to Business'/><title type='text'>SOA - Adapters, Benefits And The Future</title><content type='html'>&lt;b&gt;&lt;u&gt;SOA Adapters&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Adapters are interfaces to connect to heterogeneous systems. Several vendors provide adapter solutions for creating web services around existing applications. Typical adapter solutions cover Database adapters, File (Local, FTP) adapters, ERP Application adapters, Polling adapters, etc.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;b&gt;&lt;u&gt;Benefits Of SOA&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;SOA offers business solutions across platforms&lt;/li&gt;&lt;li&gt;It is location independent&lt;/li&gt;&lt;li&gt;Search and connectivity to other services is dynamic&lt;/li&gt;&lt;li&gt;Enhances reliability&lt;/li&gt;&lt;li&gt;Leverages existing development skills&lt;/li&gt;&lt;li&gt;Enhances ability to quickly meet customer demands&lt;/li&gt;&lt;li&gt;Lower costs associated with acquisition of technology&lt;/li&gt;&lt;li&gt;Leverages existing investments&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;&lt;u&gt;What's Next?&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;SOA and BPEL&lt;/li&gt;&lt;li&gt;SOA Implementation using JBI and OpenESB&lt;/li&gt;&lt;li&gt;SOA Integration Scenarios&lt;/li&gt;&lt;li&gt;SOA and Integration Patterns/Frameworks&lt;/li&gt;&lt;li&gt;Security, Scalability and Reliability of SOA Solutions&lt;/li&gt;&lt;li&gt;Sun, IBM and Microsoft, etc., specific SOA offerings&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-2409594931298181794?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/2409594931298181794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=2409594931298181794' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/2409594931298181794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/2409594931298181794'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/02/soa-adapters-benefits-and-future.html' title='SOA - Adapters, Benefits And The Future'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-3529988655084011535</id><published>2009-02-23T12:17:00.008+05:30</published><updated>2010-11-21T11:45:03.950+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Service Oriented Architecture - Bringing Versatility to Business'/><title type='text'>Organizational Approach To SOA</title><content type='html'>SOA plays an important role in organizations. If an organization is starting fresh in terms of IT solutions, it can implement the concept of SOA directly.&lt;br /&gt;&lt;br /&gt;The challenge comes up in those organizations that have existing applications and these applications being heterogeneous in nature. A typical organization can have ERP applications (SAP, Oracle), Java applications, .NET applications and LAMP applications. To avoid complex maintenance activities and address future requirements, organizations are taking the following steps –&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;ul&gt;&lt;li&gt;Detailed study of applications&lt;/li&gt;&lt;li&gt;Creating services of common nature around these applications&lt;/li&gt;&lt;li&gt;Implementing new applications around these services as a SOA model&lt;/li&gt;&lt;/ul&gt;One of the key aspects on which organizations focus in terms of services is the Governance. Primary objective of SOA governance is tracking all the available services and ensuring controlled creation and avoiding duplicates. Typical organizations classify their services into &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Intranet (for internal usage)&lt;/li&gt;&lt;li&gt;Extranet (for the outside world, like Suppliers, Consumers, Banks, etc.)&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-3529988655084011535?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/3529988655084011535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=3529988655084011535' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/3529988655084011535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/3529988655084011535'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/02/organizational-approach-to-soa.html' title='Organizational Approach To SOA'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-3051815089374762035</id><published>2009-02-23T11:45:00.015+05:30</published><updated>2011-07-12T00:20:07.595+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Service Oriented Architecture - Bringing Versatility to Business'/><title type='text'>Composite Services Using SOA</title><content type='html'>Services are generally created from scratch or are formed from existing services. One of the key concepts of SOA is the creation of composite services.&lt;br /&gt;&lt;br /&gt;SOA facilitates reuse of existing services to provide complex services, thereby avoiding redundancy of a particular service.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;b&gt;&lt;u&gt;Case Study&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Consider an educational institute with these existing services -&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Given a minimum aggregate score, a list of all student IDs is generated&lt;/li&gt;&lt;li&gt;Given a student ID, the students name is generated&lt;/li&gt;&lt;li&gt;Given a department name, a set of all Student IDs belonging to that department is returned&lt;/li&gt;&lt;/ol&gt;Now consider the demand for two additional services -&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Given a minimum aggregate score, a list of all student names is needed&lt;/li&gt;&lt;li&gt;Given a particular department, a list of all student names is to be generated&lt;/li&gt;&lt;/ol&gt;The required services can be obtained from existing services as follows -&lt;br /&gt;&lt;ol&gt;&lt;li&gt;From the first service, a list of student IDs is generated and each ID is fed to the second service to obtain the composite service&lt;/li&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-09reZ7DEG_Q/ThtFmvOCmnI/AAAAAAAACMw/gRGkJye8VJg/s1600/059+Composite+Services+Using+SOA+01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="59" src="http://3.bp.blogspot.com/-09reZ7DEG_Q/ThtFmvOCmnI/AAAAAAAACMw/gRGkJye8VJg/s320/059+Composite+Services+Using+SOA+01.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;li&gt;Similarly, the next composite service is obtained by obtaining the student list from the third service and feeding them to the second service&lt;/li&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Ax9qwuBmqEw/ThtFnSHOWjI/AAAAAAAACM0/pKZDMIzobRQ/s1600/059+Composite+Services+Using+SOA+02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="60" src="http://2.bp.blogspot.com/-Ax9qwuBmqEw/ThtFnSHOWjI/AAAAAAAACM0/pKZDMIzobRQ/s320/059+Composite+Services+Using+SOA+02.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-3051815089374762035?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/3051815089374762035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=3051815089374762035' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/3051815089374762035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/3051815089374762035'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/02/composite-services-using-soa.html' title='Composite Services Using SOA'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-09reZ7DEG_Q/ThtFmvOCmnI/AAAAAAAACMw/gRGkJye8VJg/s72-c/059+Composite+Services+Using+SOA+01.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-8679568413447737220</id><published>2009-02-23T11:03:00.017+05:30</published><updated>2011-07-12T21:55:46.509+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Service Oriented Architecture - Bringing Versatility to Business'/><title type='text'>SOA - The Web Services Model</title><content type='html'>The latest trends of SOA follow the Web Services model for implementing the Service Providers. However, the first question which arises here is - "What's a Web Service?"&lt;br /&gt;&lt;br /&gt;According to W3C, A Web Service is a software system designed to support inter-operable machine-to-machine interaction over a network. A Web Service has an interface described in machine-processable format, specifically WSDL (Web Service Description Language). The services provided by the Service Providers are maintained as a list by a Service Broker which interacts with Service Providers and Service Consumers using UDDI (Universal Description Discovery and Integration) Inquiry and Publish.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Other systems interact with the Web Service as prescribed by its description using SOAP (Simple Object Access Protocol), typically conveyed using HTTP requests with XML serialization.&lt;br /&gt;&lt;br /&gt;A typical Web Service is implemented as -&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-wvK_It0BtkE/Thx1MPXg9hI/AAAAAAAACM4/KYdWkeanqwk/s1600/058+SOA+-+The+Web+Services+Model+01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="205" src="http://2.bp.blogspot.com/-wvK_It0BtkE/Thx1MPXg9hI/AAAAAAAACM4/KYdWkeanqwk/s320/058+SOA+-+The+Web+Services+Model+01.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;The Service Providers are generally Java Web Services or .NET Web Services.&lt;br /&gt;&lt;br /&gt;The Service Consumers can be implemented in -&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Java, JSP and J2ME (using NetBeans)&lt;/li&gt;&lt;li&gt;C# and ASP.NET (using Visual Studio)&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-uzwqxGbp7X4/Thx1OH-bI8I/AAAAAAAACM8/67jeXoIzWK0/s1600/058+SOA+-+The+Web+Services+Model+02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="104" src="http://4.bp.blogspot.com/-uzwqxGbp7X4/Thx1OH-bI8I/AAAAAAAACM8/67jeXoIzWK0/s320/058+SOA+-+The+Web+Services+Model+02.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;The Service Consumers can actually be written in any language which can understand XML and interact through SOAP messages.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-8679568413447737220?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/8679568413447737220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=8679568413447737220' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/8679568413447737220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/8679568413447737220'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/02/soa-web-services-model.html' title='SOA - The Web Services Model'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-wvK_It0BtkE/Thx1MPXg9hI/AAAAAAAACM4/KYdWkeanqwk/s72-c/058+SOA+-+The+Web+Services+Model+01.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-7121565592350897503</id><published>2009-02-23T10:47:00.007+05:30</published><updated>2011-07-12T22:08:29.342+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Service Oriented Architecture - Bringing Versatility to Business'/><title type='text'>SOA - The Simplified Model</title><content type='html'>For several college students and graduates, the concept of SOA can be well comprehended with traditionally taught languages in several of the educational institutes – C++ and Java. A C++ function can be created to provide a service, and this function (service) can be used in a C++ program as well as in a Java program.&lt;br /&gt;&lt;br /&gt;In terms of SOA, a C++ service is being utilized by a C++ consumer as well as a Java consumer.&lt;br /&gt;&lt;br /&gt;The C++ function can be used in a Java function using the Java Native Interface (JNI). The JNI is a programming framework that allows Java code running in the Java virtual machine to call libraries written in other languages, such as C, C++ and Assembly.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;JNI allows Java developers to add functionality to their Java applications that the Java API can't provide. It is used in time critical calculations or operations where the native code is faster than the JVM code.&lt;br /&gt;&lt;br /&gt;The SOA model using JNI can be represented as follows -&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-tPepzKeRYN0/Thx4b0_thMI/AAAAAAAACNA/Okffcw0mOJQ/s1600/057+SOA+-+The+Simplified+Model+01.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="109" src="http://3.bp.blogspot.com/-tPepzKeRYN0/Thx4b0_thMI/AAAAAAAACNA/Okffcw0mOJQ/s320/057+SOA+-+The+Simplified+Model+01.gif" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-7121565592350897503?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/7121565592350897503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=7121565592350897503' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/7121565592350897503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/7121565592350897503'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/02/soa-simplified-model.html' title='SOA - The Simplified Model'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-tPepzKeRYN0/Thx4b0_thMI/AAAAAAAACNA/Okffcw0mOJQ/s72-c/057+SOA+-+The+Simplified+Model+01.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-8277294538453272667</id><published>2009-02-23T10:01:00.013+05:30</published><updated>2011-07-12T22:20:17.732+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Service Oriented Architecture - Bringing Versatility to Business'/><title type='text'>The Philosophy Of SOA</title><content type='html'>SOA is not a product; instead it is an architectural approach for building solutions. SOA is primarily a concept of Service Providers and Service Consumers. SOA refers to the architectural style in which Service Consumers use the services offered by Service Providers. The essence of SOA lies in consumer centric behavior, and in ensuring that services can be located dynamically on need basis.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;In any application, there are three parts – Front End, Business Logic and Persistence. In SOA they are mapped as below –&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-tufr9LG-cSY/Thx7NqOHNcI/AAAAAAAACNU/t736R4kg1q4/s1600/056+The+Philosophy+Of+SOA+01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="88" src="http://1.bp.blogspot.com/-tufr9LG-cSY/Thx7NqOHNcI/AAAAAAAACNU/t736R4kg1q4/s320/056+The+Philosophy+Of+SOA+01.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;While SOA concepts are reasonably simple to understand and apply, they require a phased roadmap which takes some time. The vital starting phase of SOA is not technology but identifying the business-specific services in an organization.&lt;br /&gt;&lt;br /&gt;Services are generally provided using concepts like -&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Functions&lt;/li&gt;&lt;li&gt;APIs&lt;/li&gt;&lt;li&gt;Components&lt;/li&gt;&lt;li&gt;Web Services&lt;/li&gt;&lt;/ul&gt;The first three concepts, stated above are language dependent to a very large extent. However Web Services provide a language independent approach, and are one of the most popular approaches for SOA in today’s world.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-8277294538453272667?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/8277294538453272667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=8277294538453272667' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/8277294538453272667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/8277294538453272667'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/02/philosophy-of-soa.html' title='The Philosophy Of SOA'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-tufr9LG-cSY/Thx7NqOHNcI/AAAAAAAACNU/t736R4kg1q4/s72-c/056+The+Philosophy+Of+SOA+01.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-6713492686480012745</id><published>2009-02-22T22:36:00.010+05:30</published><updated>2011-07-12T22:23:57.127+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Service Oriented Architecture - Bringing Versatility to Business'/><title type='text'>Service Oriented Architecture - Bringing Versatility To Business</title><content type='html'>According to a survey, a search made in Google for SOA would yield about 8 million entries. This clearly emphasizes the popularity and demand for SOA in today’s IT market.&lt;br /&gt;&lt;br /&gt;Judging this huge demand for SOA, I decided to take up a short series of blog articles about SOA and how SOA can be implemented as a programmer.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Here are a few topics the subsequent blog-posts are going to cover -&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The Philosophy of SOA&lt;/li&gt;&lt;li&gt;SOA - The Simplified Model&lt;/li&gt;&lt;li&gt;SOA - The Web Services Model&lt;/li&gt;&lt;li&gt;Composite services using SOA&lt;/li&gt;&lt;li&gt;Organizational approach to SOA&lt;/li&gt;&lt;li&gt;SOA Adapters&lt;/li&gt;&lt;/ul&gt;Finally, these are the live models that will be implemented -&lt;br /&gt;&lt;ul&gt;&lt;li&gt;JNI&lt;/li&gt;&lt;li&gt;Web Services&lt;/li&gt;&lt;/ul&gt;The presentation has been uploaded &lt;a href="https://docs.google.com/leaf?id=0B6bFa1maIHJdMTYxYzk5YzUtMTg5Ni00ZGI2LTg4ODctOGFmODJkNDAxZDhi&amp;hl=en_US"&gt;here&lt;/a&gt; and abstract has been uploaded &lt;a href="https://docs.google.com/viewer?a=v&amp;pid=explorer&amp;chrome=true&amp;srcid=0B6bFa1maIHJdYTQyMTk0YWItY2ExMC00ZDdiLWEyMjAtZjZlNWMzZThjN2Nm&amp;hl=en_US"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The Web Services source codes are available &lt;a href="https://docs.google.com/leaf?id=0B6bFa1maIHJdMWNiZTk5NTAtYjBjOC00MjkyLWI5YzItNTMxOTU1NmNhMzYw&amp;hl=en_US"&gt;here&lt;/a&gt; and the JNI source codes are available &lt;a href="https://docs.google.com/leaf?id=0B6bFa1maIHJdYWI5ZTYxYTEtNDQyNi00NDU2LTkxNmEtNTFiZmU2ZGNkZGJh&amp;hl=en_US"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-6713492686480012745?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/6713492686480012745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=6713492686480012745' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/6713492686480012745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/6713492686480012745'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/02/service-oriented-architecture-bringing.html' title='Service Oriented Architecture - Bringing Versatility To Business'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-3513763031490459312</id><published>2009-01-31T16:31:00.015+05:30</published><updated>2010-11-21T19:25:56.564+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='GlassFish'/><title type='text'>PHP In GlassFish</title><content type='html'>GlassFish is an App Server written in Java. So GlassFish does most of its work with the help of Java Servlets.&lt;br /&gt;&lt;br /&gt;GlassFish does not have built-in support for PHP. Actually it can support PHP if a Java implementation of PHP exists for GlassFish. This was made available by Quercus Caucho at &lt;a href="http://quercus.caucho.com/"&gt;http://quercus.caucho.com/&lt;/a&gt;. Download the binaries and source of Quercus from the site.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Assuming that GlassFish is installed and its directory path is represented as “glassfish”, proceed with the following steps -&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Extract the contents of the archive downloaded from the Quercus Caucho website&lt;/li&gt;&lt;li&gt;Copy quercus.jar, resin-util.jar and script-10.jar from the WEB-INF/lib directory which is obtained from extracting the zip file to glassfish/lib directory&lt;/li&gt;&lt;li&gt;Open the file glassfish/domains/domain1/config/default-web.xml and add the following lines&lt;br /&gt;&lt;br /&gt;&amp;lt;servlet&amp;gt;&lt;br /&gt;&amp;lt;servlet-name&amp;gt;Quercus Servlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&amp;lt;servlet-class&amp;gt;com.caucho.quercus.servlet.QuercusServlet&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;&amp;lt;init-param&amp;gt;&lt;br /&gt;&amp;lt;param-name&amp;gt;ini-file&amp;lt;/param-name&amp;gt;&lt;br /&gt;&amp;lt;param-value&amp;gt;WEB-INF/php.ini&amp;lt;/param-value&amp;gt;&lt;br /&gt;&amp;lt;/init-param&amp;gt;&lt;br /&gt;&amp;lt;/servlet&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;&amp;lt;servlet-name&amp;gt;Quercus Servlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&amp;lt;url-pattern&amp;gt;*.php&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Though the above lines of code seem to very complex, they can be simply interpreted as follows -&lt;br /&gt;&lt;br /&gt;The first set of code indicates that there is a servlet available under the name Quercus Servlet and the second set of code indicates that the servlet is to be run whenever a file with php extension is encountered&lt;/li&gt;&lt;/ol&gt;That’s it, restart GlassFish and it should be now be compatible to understand PHP.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-3513763031490459312?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/3513763031490459312/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=3513763031490459312' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/3513763031490459312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/3513763031490459312'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/01/php-in-glassfish.html' title='PHP In GlassFish'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-6924633934131661327</id><published>2009-01-31T16:10:00.014+05:30</published><updated>2011-07-12T22:47:50.893+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>Configuring C, C++ In NetBeans 6.5</title><content type='html'>In Linux and Solaris NetBeans 6.5 configures itself using the gcc/g++ compiler which is available in several flavors of Linux to run C/C++ programs. However, in Windows, there isn’t any C/C++ compiler pre-installed, so we need to manually install a C/C++ compiler and configure NetBeans 6.5 with the compiler.&lt;br /&gt;&lt;br /&gt;To achieve this, we use Cygwin – A Linux like environment for Windows. It contains several popular tools like gcc, g++, gmake, gdb, etc. Cygwin can be downloaded and installed from &lt;a href="http://www.cygwin.com/"&gt;http://www.cygwin.com/&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Once the setup file is downloaded from the above mentioned site, it can be run as a normal .exe file. Cygwin supports three installation types -&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Online installation&lt;/li&gt;&lt;li&gt;Downloading the installation files without actual installation&lt;/li&gt;&lt;li&gt;Offline installation form a local directory&lt;/li&gt;&lt;/ul&gt;Mention the directory path for the installation files. Also mention the directory where the downloaded files were placed. Offline install requires the packages to be downloaded and stored as a directory. The installer will collect information from the parse-file and list all the packages that are available for install. In online install, this will list all the packages that are available to be downloaded and installed.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-aoANdAYVK7I/Thx-Fo9j5cI/AAAAAAAACNY/GSVhySxYFmc/s1600/053+Configuring++C%252C+C%252B%252B+In+NetBeans+6.5+01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="160" src="http://2.bp.blogspot.com/-aoANdAYVK7I/Thx-Fo9j5cI/AAAAAAAACNY/GSVhySxYFmc/s200/053+Configuring++C%252C+C%252B%252B+In+NetBeans+6.5+01.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-wtp2ArhY-Nk/Thx-GDDOHTI/AAAAAAAACNc/cyzVJoaBHY4/s1600/053+Configuring++C%252C+C%252B%252B+In+NetBeans+6.5+02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="160" src="http://1.bp.blogspot.com/-wtp2ArhY-Nk/Thx-GDDOHTI/AAAAAAAACNc/cyzVJoaBHY4/s200/053+Configuring++C%252C+C%252B%252B+In+NetBeans+6.5+02.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-m2cq_FoP0xg/Thx-G6SsfDI/AAAAAAAACNg/3KaPuuQCE2I/s1600/053+Configuring++C%252C+C%252B%252B+In+NetBeans+6.5+03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="160" src="http://1.bp.blogspot.com/-m2cq_FoP0xg/Thx-G6SsfDI/AAAAAAAACNg/3KaPuuQCE2I/s200/053+Configuring++C%252C+C%252B%252B+In+NetBeans+6.5+03.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-DJZwclHAyQM/Thx-Hehd0mI/AAAAAAAACNk/H4f7cSh-wI0/s1600/053+Configuring++C%252C+C%252B%252B+In+NetBeans+6.5+04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="160" src="http://1.bp.blogspot.com/-DJZwclHAyQM/Thx-Hehd0mI/AAAAAAAACNk/H4f7cSh-wI0/s200/053+Configuring++C%252C+C%252B%252B+In+NetBeans+6.5+04.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;The installer will collect information from the parse-file and list all the packages that are available for install. In online install, this will list all the packages that are available to be downloaded and installed. Select the required packages to be installed and proceed. After some time, the installation completes.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Sa302nrLjq0/Thx-Hz51mwI/AAAAAAAACNo/7NmDvf_xOjA/s1600/053+Configuring++C%252C+C%252B%252B+In+NetBeans+6.5+05.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="160" src="http://3.bp.blogspot.com/-Sa302nrLjq0/Thx-Hz51mwI/AAAAAAAACNo/7NmDvf_xOjA/s200/053+Configuring++C%252C+C%252B%252B+In+NetBeans+6.5+05.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-enf8a-sVcdo/Thx-Ic98NeI/AAAAAAAACNs/6L-38BDxy7U/s1600/053+Configuring++C%252C+C%252B%252B+In+NetBeans+6.5+06.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="160" src="http://3.bp.blogspot.com/-enf8a-sVcdo/Thx-Ic98NeI/AAAAAAAACNs/6L-38BDxy7U/s200/053+Configuring++C%252C+C%252B%252B+In+NetBeans+6.5+06.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="2"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-eTJm6TK3ZyM/Thx-I3En-0I/AAAAAAAACNw/eJ3dLXiPPY0/s1600/053+Configuring++C%252C+C%252B%252B+In+NetBeans+6.5+07.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="160" src="http://4.bp.blogspot.com/-eTJm6TK3ZyM/Thx-I3En-0I/AAAAAAAACNw/eJ3dLXiPPY0/s200/053+Configuring++C%252C+C%252B%252B+In+NetBeans+6.5+07.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Once Cygwin is installed, NetBeans automatically recognizes it and configures its C/C++ compilers. However if it does automatically recognize Cygwin, go to Tools-&amp;gt;Options. Under the C/C++ tab, set in the parameters by mentioning the path of the base directory (the bin directory of cygwin), C compiler (gcc), C++ compiler (g++), make command and the gdb command.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Tco4xYzq5vI/Thx-Jh7FeoI/AAAAAAAACN0/VVGEitWmz9Q/s1600/053+Configuring++C%252C+C%252B%252B+In+NetBeans+6.5+08.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="160" src="http://3.bp.blogspot.com/-Tco4xYzq5vI/Thx-Jh7FeoI/AAAAAAAACN0/VVGEitWmz9Q/s200/053+Configuring++C%252C+C%252B%252B+In+NetBeans+6.5+08.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;That’s all; NetBeans is now configured to run your C/C++ programs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-6924633934131661327?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/6924633934131661327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=6924633934131661327' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/6924633934131661327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/6924633934131661327'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/01/configuring-c-c-in-netbeans-65.html' title='Configuring C, C++ In NetBeans 6.5'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-aoANdAYVK7I/Thx-Fo9j5cI/AAAAAAAACNY/GSVhySxYFmc/s72-c/053+Configuring++C%252C+C%252B%252B+In+NetBeans+6.5+01.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-6495302391669744517</id><published>2009-01-31T15:25:00.011+05:30</published><updated>2011-07-12T22:59:04.711+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>NetBeans 6.5 Installation</title><content type='html'>Installation of NetBeans 6.5 requires Java Development Kit 5 or Java Development Kit 6 as a pre-requisite. You can download the required JDK from &lt;a href="http://java.sun.com/javase/downloads/"&gt;http://java.sun.com/javase/downloads/&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The installation procedure of NetBeans is the same in Windows, Linux and Solaris. Since NetBeans is written in Java, it is platform-independent and the installation User-Interface is also same in any operating system. NetBeans 6.5 is available as binaries for all the three Operating Systems – Windows, Linux and Solaris. Download it from &lt;a href="http://www.netbeans.org/"&gt;http://www.netbeans.org/&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Start the installation by either double-clicking the .exe file in Windows or running the .sh file in Linux and Solaris from the Terminal. This starts the GUI based installation of NetBeans 6.5. Initially it takes a few seconds to configure the installer. The best part of NetBeans is its flexibility. It allows the user to install whatever is required, instead of installing everything. There are few runtimes which are selected by default.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-1NDZxLO-28I/ThyCLZpwCHI/AAAAAAAACN4/5vUAeZjjccg/s1600/052+NetBeans+6.5+Installation+01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="160" src="http://2.bp.blogspot.com/-1NDZxLO-28I/ThyCLZpwCHI/AAAAAAAACN4/5vUAeZjjccg/s200/052+NetBeans+6.5+Installation+01.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-JfrvzF5apX0/ThyCL_nixUI/AAAAAAAACN8/sLRVRvnHSx0/s1600/052+NetBeans+6.5+Installation+02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="160" src="http://3.bp.blogspot.com/-JfrvzF5apX0/ThyCL_nixUI/AAAAAAAACN8/sLRVRvnHSx0/s200/052+NetBeans+6.5+Installation+02.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Click on the customize button to select the runtimes which you need. The customize button also gives brief information about each component which is being installed. Also the GlassFish app-server and the Apache Tomcat web-server can also be installed as a part of NetBeans. Accept the license agreement.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-5bPbK7TSph8/ThyCMugl7xI/AAAAAAAACOA/PvegFAlOVGI/s1600/052+NetBeans+6.5+Installation+03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="160" src="http://1.bp.blogspot.com/-5bPbK7TSph8/ThyCMugl7xI/AAAAAAAACOA/PvegFAlOVGI/s200/052+NetBeans+6.5+Installation+03.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-UpEgdHaf4OM/ThyCNJGKzrI/AAAAAAAACOE/-VT7hLs0pYk/s1600/052+NetBeans+6.5+Installation+04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="160" src="http://2.bp.blogspot.com/-UpEgdHaf4OM/ThyCNJGKzrI/AAAAAAAACOE/-VT7hLs0pYk/s200/052+NetBeans+6.5+Installation+04.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Specify the installation directory of NetBeans. Also specify the directory where JDK is installed, the JDK directory is generally recognized by the installer itself. If you customized the installer to install GlassFish v2, the installer will prompt for the required parameters for GlassFish v2. These include the directory path, the admin username and password and the 3 ports – HTTP, HTTPS and admin. All these parameters are initialized to their default values.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-PgTE-irZTCw/ThyCN07VyTI/AAAAAAAACOI/HSLiF9VpAfE/s1600/052+NetBeans+6.5+Installation+05.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="160" src="http://3.bp.blogspot.com/-PgTE-irZTCw/ThyCN07VyTI/AAAAAAAACOI/HSLiF9VpAfE/s200/052+NetBeans+6.5+Installation+05.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-mW0gBnPy0LA/ThyCOVuWrYI/AAAAAAAACOM/9PhnQJzgH-Q/s1600/052+NetBeans+6.5+Installation+06.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="160" src="http://2.bp.blogspot.com/-mW0gBnPy0LA/ThyCOVuWrYI/AAAAAAAACOM/9PhnQJzgH-Q/s200/052+NetBeans+6.5+Installation+06.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Similarly, if you customized the installer for GlassFish v3, specify its directory path. Also, if you customized the installer for Apache Tomcat, specify its directory path.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-io-5aFHl5Bw/ThyCR6gJmXI/AAAAAAAACOQ/l4YOEWtgMrM/s1600/052+NetBeans+6.5+Installation+07.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="160" src="http://2.bp.blogspot.com/-io-5aFHl5Bw/ThyCR6gJmXI/AAAAAAAACOQ/l4YOEWtgMrM/s200/052+NetBeans+6.5+Installation+07.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-xr31vmW8GzY/ThyCSlT0NKI/AAAAAAAACOU/CnkIwANGg8k/s1600/052+NetBeans+6.5+Installation+08.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="160" src="http://1.bp.blogspot.com/-xr31vmW8GzY/ThyCSlT0NKI/AAAAAAAACOU/CnkIwANGg8k/s200/052+NetBeans+6.5+Installation+08.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;The installer finally gives a summary of all the components which are to be installed, if you are satisfied with the customized components, start the installation. The installation will take some time depending on your system configuration and the components which are being installed.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-dVSFjNCt3Cg/ThyCTZf-VUI/AAAAAAAACOY/DuDZWaGROek/s1600/052+NetBeans+6.5+Installation+09.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="160" src="http://3.bp.blogspot.com/-dVSFjNCt3Cg/ThyCTZf-VUI/AAAAAAAACOY/DuDZWaGROek/s200/052+NetBeans+6.5+Installation+09.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-W5KwVu8RPAQ/ThyCT6-snUI/AAAAAAAACOc/Qbzli7nxHhE/s1600/052+NetBeans+6.5+Installation+10.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="160" src="http://1.bp.blogspot.com/-W5KwVu8RPAQ/ThyCT6-snUI/AAAAAAAACOc/Qbzli7nxHhE/s200/052+NetBeans+6.5+Installation+10.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Once the installation is complete, the installer will prompt you for registration. It is recommended that users register as there are a lot of offers available for registered users. However the choice of registration is left to the users. That’s it, NetBeans 6.5 is up and ready to use.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-fu_kKwEKtR4/ThyCUW5ceOI/AAAAAAAACOg/nkGk_CMlmqk/s1600/052+NetBeans+6.5+Installation+11.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="160" src="http://2.bp.blogspot.com/-fu_kKwEKtR4/ThyCUW5ceOI/AAAAAAAACOg/nkGk_CMlmqk/s200/052+NetBeans+6.5+Installation+11.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-xZEn3vzGdp4/ThyCVCceb5I/AAAAAAAACOk/8O_1yc8KfEk/s1600/052+NetBeans+6.5+Installation+12.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="160" src="http://1.bp.blogspot.com/-xZEn3vzGdp4/ThyCVCceb5I/AAAAAAAACOk/8O_1yc8KfEk/s200/052+NetBeans+6.5+Installation+12.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="2"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-R7eZ9Di6ecg/ThyCVzOpOjI/AAAAAAAACOo/KiagmQIobBI/s1600/052+NetBeans+6.5+Installation+13.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="160" src="http://3.bp.blogspot.com/-R7eZ9Di6ecg/ThyCVzOpOjI/AAAAAAAACOo/KiagmQIobBI/s200/052+NetBeans+6.5+Installation+13.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-6495302391669744517?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/6495302391669744517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=6495302391669744517' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/6495302391669744517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/6495302391669744517'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/01/netbeans-65-installation.html' title='NetBeans 6.5 Installation'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-1NDZxLO-28I/ThyCLZpwCHI/AAAAAAAACN4/5vUAeZjjccg/s72-c/052+NetBeans+6.5+Installation+01.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-1210943809955824531</id><published>2009-01-31T12:59:00.018+05:30</published><updated>2011-07-12T23:11:19.382+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='VirtualBox'/><category scheme='http://www.blogger.com/atom/ns#' term='Solaris'/><title type='text'>Run OpenSolaris 2008.05 In VirtualBox</title><content type='html'>This article emphasizes on how to load the OpenSolaris 2008.05 VDI image which was distributed as a part of a resource DVD distributed for college students by Sun Microsystems Inc.&lt;br /&gt;&lt;br /&gt;The article is broken down into two parts - Installing VirtualBox and Loading the VDI image in VirtualBox.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;b&gt;&lt;u&gt;Installing VirtualBox&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;VirtualBox is available in two versions on the resource DVD – 1.6 and 2.0. To install version 1.6 follow these steps -&lt;br /&gt;&lt;ul&gt;&lt;li&gt;For Windows go to virtualbox → 1.6 → win32 → (depending on your processor) amd64 / x86&lt;/li&gt;&lt;li&gt;For Linux go to virtualbox → 1.6 → linux → (depending on your linux flavor) select the required package&lt;/li&gt;&lt;li&gt;For Mac OS X go to virtualbox → 1.6 → macosx → run the file present in the directory&lt;/li&gt;&lt;/ul&gt;To install version 2.0 follow these steps -&lt;br /&gt;&lt;ul&gt;&lt;li&gt;For Linux go to virtualbox → 2.0 → linux → (depending on your processor) amd64 / x86&lt;/li&gt;&lt;li&gt;For OpenSolaris go to virtualbox → 2.0 → OpenSolaris → (depending on your processor) amd64 / x86&lt;/li&gt;&lt;/ul&gt;The installation is simple and is similar to the other software that we generally install.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Configuring OpenSolaris 2008.05 in VirtualBox&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Copy the “OpenSolaris_2008.05.vdi.gz” file from the opensolaris directory of the DVD and copy it to your hard-disk (This step isn’t necessary but will reduce the time taken for extraction of the final image).&lt;br /&gt;&lt;br /&gt;Extract the contents of the file to a directory of your choice using software like Winzip (or) Winrar (or) IZArc.&lt;br /&gt;&lt;br /&gt;You will get an *.vdi image which is nearly 8 GB in size (Caution – make sure your partition isn’t a FAT32 partition, as the extraction will be terminated at around 4GB if it is a FAT32 partition). Start VirtualBox by selecting Start → Programs → Sun xVM VirtualBox → VirtualBox. Select New Icon on the screen, a wizard will open which will guide you through the creation of the virtual Operating System, click on Next.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-1m0UgUPOCYM/ThyEsX7TrjI/AAAAAAAACOs/TDdPl79pWcw/s1600/051+Run+OpenSolaris+2008.05+In+VirtualBox+01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://2.bp.blogspot.com/-1m0UgUPOCYM/ThyEsX7TrjI/AAAAAAAACOs/TDdPl79pWcw/s200/051+Run+OpenSolaris+2008.05+In+VirtualBox+01.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-dMz-TecbFaw/ThyEtGJCKjI/AAAAAAAACOw/37TAYgJzdt8/s1600/051+Run+OpenSolaris+2008.05+In+VirtualBox+02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://3.bp.blogspot.com/-dMz-TecbFaw/ThyEtGJCKjI/AAAAAAAACOw/37TAYgJzdt8/s200/051+Run+OpenSolaris+2008.05+In+VirtualBox+02.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Type a name for the Operating system; it can be any name, no restrictions. Also select the type of the OS that is being used. In this case OpenSolaris. Specify the memory which you want to provide to the new Operating System. Remember your present Operating System is still running, so split the total available RAM accordingly so that both the Operating systems can work comfortably.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-YFk4vAnE4_I/ThyEtyQi-VI/AAAAAAAACO0/yJmymQ9VNZA/s1600/051+Run+OpenSolaris+2008.05+In+VirtualBox+03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://1.bp.blogspot.com/-YFk4vAnE4_I/ThyEtyQi-VI/AAAAAAAACO0/yJmymQ9VNZA/s200/051+Run+OpenSolaris+2008.05+In+VirtualBox+03.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-MmyqaE6JJYQ/ThyEunr5XXI/AAAAAAAACO4/0GlRhCuSwos/s1600/051+Run+OpenSolaris+2008.05+In+VirtualBox+04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://4.bp.blogspot.com/-MmyqaE6JJYQ/ThyEunr5XXI/AAAAAAAACO4/0GlRhCuSwos/s200/051+Run+OpenSolaris+2008.05+In+VirtualBox+04.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Next you will be prompted for a hard-disk to work with, select existing there. A screen, called the virtual disk manager, will appear where we are supposed to add our OpenSolaris image. Click on “Add”, then browse through the folders and select the *.vdi OpenSolaris image (i.e. the extracted image). A new entry will be in the added in the virtual disk manager. Click on that entry and then click on Select.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-bh_H8sSBC1E/ThyEvNEC-2I/AAAAAAAACO8/Xfqhjjxj3pc/s1600/051+Run+OpenSolaris+2008.05+In+VirtualBox+05.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://1.bp.blogspot.com/-bh_H8sSBC1E/ThyEvNEC-2I/AAAAAAAACO8/Xfqhjjxj3pc/s200/051+Run+OpenSolaris+2008.05+In+VirtualBox+05.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-US00f1n3kkg/ThyEv-FoIKI/AAAAAAAACPA/Q5R6FW0LP9s/s1600/051+Run+OpenSolaris+2008.05+In+VirtualBox+06.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://1.bp.blogspot.com/-US00f1n3kkg/ThyEv-FoIKI/AAAAAAAACPA/Q5R6FW0LP9s/s200/051+Run+OpenSolaris+2008.05+In+VirtualBox+06.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;The screen will come back to the hard-disk point. Now go to the next step. Finally a consolidated sheet of the selected options will appear. Select “Finish” here. Now as you can see there is a new Operating System waiting, under the name of OpenSolaris. Double click on it to get OpenSolaris working.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-TYdpZnL16cM/ThyEwRIWNWI/AAAAAAAACPE/-r3X8ieJa0o/s1600/051+Run+OpenSolaris+2008.05+In+VirtualBox+07.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://2.bp.blogspot.com/-TYdpZnL16cM/ThyEwRIWNWI/AAAAAAAACPE/-r3X8ieJa0o/s200/051+Run+OpenSolaris+2008.05+In+VirtualBox+07.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-SWJFhscb6as/ThyEwxZHZ8I/AAAAAAAACPI/6Dc4ttOWvh4/s1600/051+Run+OpenSolaris+2008.05+In+VirtualBox+08.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://2.bp.blogspot.com/-SWJFhscb6as/ThyEwxZHZ8I/AAAAAAAACPI/6Dc4ttOWvh4/s200/051+Run+OpenSolaris+2008.05+In+VirtualBox+08.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-1210943809955824531?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/1210943809955824531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=1210943809955824531' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/1210943809955824531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/1210943809955824531'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/01/run-opensolaris-200805-in-virtualbox.html' title='Run OpenSolaris 2008.05 In VirtualBox'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-1m0UgUPOCYM/ThyEsX7TrjI/AAAAAAAACOs/TDdPl79pWcw/s72-c/051+Run+OpenSolaris+2008.05+In+VirtualBox+01.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-7874401323752698116</id><published>2009-01-31T10:58:00.013+05:30</published><updated>2010-11-21T22:53:59.750+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Solaris'/><title type='text'>PPPOE Internet Configuration For OpenSolaris 2008.05</title><content type='html'>One of the first things I had to learn when I moved from Windows to OpenSolaris was to get my Internet up and running. I had an Airtel broadband connection which followed the PPPOE (Point to Point Protocol Over Ethernet) network protocol. I had to experiment a bit and due time got a proper process established for network configuration. So if you are also planning to setup a broadband connection in OpenSolaris, edit the following files accordingly -&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;strong&gt;&lt;u&gt;/etc/ppp/pppoe.if&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;INTERFACE&lt;/span&gt;&lt;br /&gt;And reboot.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;/etc/ppp/peers/&lt;span style="color:#009900;"&gt;ISP&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;sppptun ( what device to use )&lt;br /&gt;plugin pppoe.so ( initialize the )&lt;br /&gt;connect “usr/lib/inet/pppoec &lt;span style="color:#009900;"&gt;INTERFACE&lt;/span&gt;” ( connect string )&lt;br /&gt;persist ( if the connection dies, bring it back )&lt;br /&gt;user “&lt;span style="color:#009900;"&gt;USERNAME&lt;/span&gt;” ( username )&lt;br /&gt;noauth ( do not make the other side authenticate itself )&lt;br /&gt;noipdefault ( let them give you what IP they want to give you )&lt;br /&gt;noccp ( no compression )&lt;br /&gt;novj ( no compression )&lt;br /&gt;noaccomp ( no compression )&lt;br /&gt;nopcomp ( no compression )&lt;br /&gt;defaultroute ( add an appropriate default route )&lt;br /&gt;usepeerdns ( for dns )&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;/etc/ppp/chap-secrets&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;“&lt;span style="color:#009900;"&gt;USERNAME&lt;/span&gt;” * “&lt;span style="color:#009900;"&gt;PASSWORD&lt;/span&gt;”&lt;br /&gt;Remember these are tabs and not spaces.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;/etc/ppp/pap-secrets&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;“&lt;span style="color:#009900;"&gt;USERNAME&lt;/span&gt;” * “&lt;span style="color:#009900;"&gt;PASSWORD&lt;/span&gt;”&lt;br /&gt;Remember these are tabs and not spaces.&lt;br /&gt;&lt;br /&gt;Check your work by executing the following command at the terminal -&lt;br /&gt;&lt;br /&gt;sppptun query&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Sample Output&lt;/u&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;INTERFACE&lt;/span&gt;:pppoe&lt;br /&gt;&lt;span style="color:#009900;"&gt;INTERFACE&lt;/span&gt;:pppoed&lt;br /&gt;&lt;br /&gt;Execute the following set of commands to finalize the procedure -&lt;br /&gt;&lt;br /&gt;rm /etc/resolv.conf ( remove the resolv.conf file from /etc )&lt;br /&gt;link /etc/ppp/resolv.conf /etc/resolv.conf ( instead link the resolv.conf from /etc/ppp to the one in /etc )&lt;br /&gt;vi /etc/nsswitch.conf ( make sure “hosts” and “ipnodes” resolve through “files dns” )&lt;br /&gt;&lt;br /&gt;Start the internet connection by the following commands -&lt;br /&gt;&lt;br /&gt;/etc/init.d/pppd start&lt;br /&gt;/usr/bin/pppd call &lt;span style="color:#009900;"&gt;ISP&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Remember many of these files require root privileges, so login as super user using the su command.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;INTERFACE&lt;/span&gt; is found out from ifconfig from the terminal.  &lt;em&gt;Eg. e100g0&lt;/em&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;ISP&lt;/span&gt; is the service provider you are connected to. &lt;em&gt;Eg. airtel&lt;/em&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;USERNAME&lt;/span&gt; is the user name with which you login. &lt;em&gt;Eg. 04040142943@touchtel.india&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-7874401323752698116?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/7874401323752698116/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=7874401323752698116' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/7874401323752698116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/7874401323752698116'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2009/01/pppoe-internet-configuration-for.html' title='PPPOE Internet Configuration For OpenSolaris 2008.05'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-10444788924441081</id><published>2008-11-18T22:14:00.012+05:30</published><updated>2011-07-12T23:17:51.358+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Solaris'/><title type='text'>Triple Boot A System - Windows, Fedora, OpenSolaris</title><content type='html'>Install Windows on the system by creating a primary partition (termed C, also known as hda0 for Linux). Then create an extended partition where you can then split it into logical drives (like D, E, F, etc. - the entire extended primary partition is recognized as hda1 in Linux).&lt;br /&gt;&lt;br /&gt;Next Install Fedora 9 taking care that the MBR is installed at the first location of its corresponding drive (hda2, as hda2 is the newly created primary partition).&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-7cVHmirpWBE/ThyIlhzbk8I/AAAAAAAACPM/HxGwROu6NYM/s1600/049+Triple+Boot+A+System+-+Windows%252C+Fedora%252C+OpenSolaris+01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://1.bp.blogspot.com/-7cVHmirpWBE/ThyIlhzbk8I/AAAAAAAACPM/HxGwROu6NYM/s320/049+Triple+Boot+A+System+-+Windows%252C+Fedora%252C+OpenSolaris+01.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a name='more'&gt;&lt;/a&gt;Note - This is a reference image and the name of the drive, sda1 may vary.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;This is taken care during the installation where we have a choice either to install the MBR at the first location of the hard disk, or at the first location of the Fedora partition; select the later&lt;/li&gt;&lt;li&gt;Fedora creates the swap partition also as a primary partition, so avoid swap as Windows can recognize only three primary partitions (Windows C + Fedora hda2 + Fedora swap) and we won’t be left with another primary partition to install OpenSolaris. Else create the swap partition of the Linux as an extended partition&lt;/li&gt;&lt;li&gt;Now don’t get panicked if Fedora doesn’t load, just keep on going because we have not allowed Fedora to update the MBR&lt;/li&gt;&lt;/ul&gt;Install OpenSolaris 2008.05 on the system, and complete the installation without any hassles on another primary partition (hda3).&lt;br /&gt;&lt;br /&gt;Boot the Solaris and got to /rpool/boot/grub/menu.lst, this is a privileged file and it requires to be logged in as the root.&lt;br /&gt;&lt;br /&gt;Add these lines to the grub of Solaris at the end of the file - &lt;br /&gt;&lt;br /&gt;title Fedora&lt;br /&gt;root(hd0, 2)&lt;br /&gt;chainloader +1&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-sJHaP0MOy8A/ThyImdKwDLI/AAAAAAAACPQ/B-B4pGk0A1Y/s1600/049+Triple+Boot+A+System+-+Windows%252C+Fedora%252C+OpenSolaris+02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="201" src="http://2.bp.blogspot.com/-sJHaP0MOy8A/ThyImdKwDLI/AAAAAAAACPQ/B-B4pGk0A1Y/s320/049+Triple+Boot+A+System+-+Windows%252C+Fedora%252C+OpenSolaris+02.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-10444788924441081?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/10444788924441081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=10444788924441081' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/10444788924441081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/10444788924441081'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2008/11/triple-boot-system-windows-fedora.html' title='Triple Boot A System - Windows, Fedora, OpenSolaris'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-7cVHmirpWBE/ThyIlhzbk8I/AAAAAAAACPM/HxGwROu6NYM/s72-c/049+Triple+Boot+A+System+-+Windows%252C+Fedora%252C+OpenSolaris+01.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-3669842216022210097</id><published>2008-09-05T19:16:00.013+05:30</published><updated>2011-07-12T23:25:12.379+05:30</updated><title type='text'>Google Chrome - First Impressions</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-NL3Z8smB1So/ThyJjaQ-UKI/AAAAAAAACPU/rVxrFm10Y9A/s1600/048+Google+Chrome+-+First+Impressions+01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-NL3Z8smB1So/ThyJjaQ-UKI/AAAAAAAACPU/rVxrFm10Y9A/s1600/048+Google+Chrome+-+First+Impressions+01.png" /&gt;&lt;/a&gt;&lt;/div&gt;As many of you have already heard about it, Google has finally released its own web browser. Google Chrome is a free and open source web browser developed by Google. A Beta version of Chrome was released 3 days ago i.e. on 2nd September 2008. &lt;a href="http://www.google.com/chrome/index.html?hl=en&amp;amp;brand=CHMG&amp;amp;utm_source=en-hpp&amp;amp;utm_medium=hpp&amp;amp;utm_campaign=en"&gt;Download It From Here&lt;/a&gt;&lt;a href="http://www.google.com/chrome/index.html?hl=en&amp;amp;brand=CHMG&amp;amp;utm_source=en-hpp&amp;amp;utm_medium=hpp&amp;amp;utm_campaign=enhere"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The Android team of Goggle played a significant role in the development of Chrome. Chrome fared well in Acid1 and Acid2 tests but couldn't clear the Acid3 test and scored an overall rating of 78/100 which is far higher than Internet Explorer 7 and Firefox 3.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Chrome uses the WebKit rendering engine and it was primarily assembled from 26 different code libraries from Google and other third parties such as Netscape.&lt;br /&gt;&lt;br /&gt;Well let us see a few important features of Chrome in the following sections&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Security&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Chrome primarily maintains security in the form of two blacklists - one for phishing and the other for malware. Further each tab in Chrome is sandboxed into its own process to avoid offensive activities of one tab on another, such as a malware in one tab accessing the credit card number in another tab.&lt;br /&gt;&lt;br /&gt;A private web browsing feature call Incognito mode is provided as well. This mode prevents the browser from storing any history information or cookies from the websites visited.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Speed&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Main focus on speed was made in the JavaScript Virtual Machine. A new engine named the V8 JavaScript Engine was developed with features such as Hidden Class Transitions, Dynamic Code Generation and Precise Garbage Collection.&lt;br /&gt;&lt;br /&gt;Tests have shown that with the help of V8 JavaScript Engine Chrome performs faster than all its other competitors.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Stability&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Following a lot of study, Chrome was implemented as a multithreaded browser with a multiprocessing architecture. It should be noted that all the existing web browser implementations are inherently single-threaded.&lt;br /&gt;&lt;br /&gt;A separate process is allocated for each tab and for each plug-in, so that even if an attacker gains access to one tab, he won’t be able to access the others at once, causing failure to his motives.&lt;br /&gt;&lt;br /&gt;However the pop-ups are restricted to their tab scope, they won’t appear outside the tab unless dragged by the user. And a separate process isn't allocated for the popup.&lt;br /&gt;&lt;br /&gt;Further Chrome features a process management utility called the Task Manager which allows people to see which websites are using the most memory and identify the plug-ins which are exploiting the system resources. And terminate them if necessary.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;User Interface&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The main UI consists of the traditional buttons like the back, forward, bookmark, go, refresh and cancel buttons. The Minimize, Maximize and Close buttons look similar to Vista.&lt;br /&gt;&lt;br /&gt;The entire UI is based on the WebKit rendering engine with features such as auto complete for the URL box.&lt;br /&gt;&lt;br /&gt;Besides these Chrome concentrates on the developer too, with features such as&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Show Source - A common utility to show the HTML code of the web page&lt;/li&gt;&lt;li&gt;JavaScript Debugger - Used to debug the JavaScript if any bugs are present&lt;/li&gt;&lt;li&gt;JavaScript Console - A JavaScript console where commands can be written and executed&lt;/li&gt;&lt;li&gt;Task Manager - Shows the allocation of resources&lt;/li&gt;&lt;/ul&gt;Further movement of tabs between different instances of Chrome is also possible. Of course relative positioning of the tabs is also possible.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Inspect Element&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Well this is a feature in Chrome which I found useful being a web developer. Right click any part of the screen and select inspect element, a screen pop-ups called the Inspector with the page layout.&lt;br /&gt;&lt;br /&gt;You can explore the CSS, DOM and HTML and other stuffs here. Also, on the lower left corner, there's an icon named Show Console. Click on this and it brings up a console where you can type commands and the DOM elements and nodes and other stuff.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-yK0S021eOSk/ThyJka_MH8I/AAAAAAAACPY/LRaCZzNGiU8/s1600/048+Google+Chrome+-+First+Impressions+02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="120" src="http://1.bp.blogspot.com/-yK0S021eOSk/ThyJka_MH8I/AAAAAAAACPY/LRaCZzNGiU8/s200/048+Google+Chrome+-+First+Impressions+02.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-xFSTtZHg4uY/ThyJkwbX-aI/AAAAAAAACPc/7Ajz_mIw30s/s1600/048+Google+Chrome+-+First+Impressions+03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="121" src="http://2.bp.blogspot.com/-xFSTtZHg4uY/ThyJkwbX-aI/AAAAAAAACPc/7Ajz_mIw30s/s200/048+Google+Chrome+-+First+Impressions+03.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Besides these you can edit the web page offline using the Inspector with a little knowledge of HTML and DOM. Here is a small example where I could change the web page offline using the Inspector.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-FgW5BFB_-Fk/ThyJljfdQCI/AAAAAAAACPg/1yGf0sCgYgE/s1600/048+Google+Chrome+-+First+Impressions+04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="120" src="http://1.bp.blogspot.com/-FgW5BFB_-Fk/ThyJljfdQCI/AAAAAAAACPg/1yGf0sCgYgE/s200/048+Google+Chrome+-+First+Impressions+04.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-47FWaSxci9g/ThyJmsTsf0I/AAAAAAAACPk/aIxCpgEqRAA/s1600/048+Google+Chrome+-+First+Impressions+05.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="120" src="http://3.bp.blogspot.com/-47FWaSxci9g/ThyJmsTsf0I/AAAAAAAACPk/aIxCpgEqRAA/s200/048+Google+Chrome+-+First+Impressions+05.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Chrome has a hidden feature which actually invokes the pipes screensaver present in Windows XP in the web browser. Check it out yourselves by entering about:internets at the URL Box.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-LaqKEOQQLQ4/ThyJnfF9yeI/AAAAAAAACPo/sy2GfLKP6mQ/s1600/048+Google+Chrome+-+First+Impressions+06.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://4.bp.blogspot.com/-LaqKEOQQLQ4/ThyJnfF9yeI/AAAAAAAACPo/sy2GfLKP6mQ/s200/048+Google+Chrome+-+First+Impressions+06.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;Well that’s it. I recommend you to download Chrome and do try it out. It might make an impression on you. And before I end &lt;a href="http://books.google.com/books?id=8UsqHohwwVYC&amp;amp;printsec=frontcover#PPT1,M1"&gt;here&lt;/a&gt; is the comic book released by Google on its Chrome release.&lt;br /&gt;&lt;br /&gt;Will Google Chrome affect the usage of Microsoft Internet Explorer? That's a question we all have to wait and see!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-3669842216022210097?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/3669842216022210097/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=3669842216022210097' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/3669842216022210097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/3669842216022210097'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2008/09/google-chrome-first-impressions.html' title='Google Chrome - First Impressions'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-NL3Z8smB1So/ThyJjaQ-UKI/AAAAAAAACPU/rVxrFm10Y9A/s72-c/048+Google+Chrome+-+First+Impressions+01.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-7890865224430438370</id><published>2008-08-05T10:54:00.012+05:30</published><updated>2011-07-12T23:30:03.027+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming With Qt'/><title type='text'>Qt - Conclusion</title><content type='html'>&lt;b&gt;&lt;u&gt;Strengths of Qt&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The resource editor of Qt is very powerful. The message loop of Qt can be coded manually, unlike several other widget toolkits. It has a powerful layout manager to simplify work.&lt;br /&gt;&lt;br /&gt;Qt consists of several powerful features such as Controls, XML, Regular Expressions, Platform Independence, Template classes, memory management, Network API, Database API, OpenGL API. It also has a very good documentation, both online and offline.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;b&gt;&lt;u&gt;Future of Qt&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Qt aims at further simplification of UI designing for various platforms. It is now concentrating on extending itself to embedded systems such as mobile phones and PDAs.&lt;br /&gt;&lt;br /&gt;Better services are expected for music, video, television, imaging, games and business mobility for mobile devices with the help of Qt. Better cross-platform independence is to be achieved and further extension of Qt into other languages is expected.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Qt Designer&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Qt Designer is a GUI based Qt programming tool to make UI programming simpler. It is based on the concept of dialogs which is further built on XML.&lt;br /&gt;&lt;br /&gt;Several looks can be previewed using it like Motif, Windows, etc. Simplifies the concept of Signals And Slots using GUI. Supports creation of complex widgets and user-defined slots.&lt;br /&gt;&lt;br /&gt;Download the entire presentation &lt;a href="https://docs.google.com/leaf?id=0B6bFa1maIHJdOTQyYTI2NGYtZTI5Mi00NmFhLWE0MDMtZGIxYmFhMjAzOGQ5&amp;hl=en_US"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;b&gt;Code Less ...&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Create More ...&lt;/b&gt;&lt;b&gt;&lt;br /&gt;Deploy Everywhere ...&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-BlzZesKuB7k/ThyK5F308RI/AAAAAAAACPs/PuZDoYdOCu8/s1600/047+Qt+-+Conclusion+01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-BlzZesKuB7k/ThyK5F308RI/AAAAAAAACPs/PuZDoYdOCu8/s1600/047+Qt+-+Conclusion+01.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-7890865224430438370?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/7890865224430438370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=7890865224430438370' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/7890865224430438370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/7890865224430438370'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2008/08/qt-conclusion.html' title='Qt - Conclusion'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-BlzZesKuB7k/ThyK5F308RI/AAAAAAAACPs/PuZDoYdOCu8/s72-c/047+Qt+-+Conclusion+01.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-5613746016075618297</id><published>2008-08-05T10:32:00.011+05:30</published><updated>2011-07-12T23:33:46.604+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming With Qt'/><title type='text'>Qt - Gaming In Qt</title><content type='html'>The previous article covered a simple GUI application, let’s extend this concept to a game, written completely in Qt. Here is the screen-shot of the game. This game is popularly known as "&lt;b&gt;Pocket Tanks&lt;/b&gt;" in the gaming market.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-5kWiuepRfDU/ThyL8xR4qWI/AAAAAAAACPw/C7X4ngtkeqE/s1600/046+Qt+-+Gaming+In+Qt+01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/-5kWiuepRfDU/ThyL8xR4qWI/AAAAAAAACPw/C7X4ngtkeqE/s320/046+Qt+-+Gaming+In+Qt+01.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a name='more'&gt;&lt;/a&gt;I won’t be explaining the entire code here, but let me give you a description about it. Like before, lets first split the entire setup into simpler components.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Three buttons – Quit, Shoot, New Game&lt;/li&gt;&lt;li&gt;Two LCD Numbers – Hits, Shots Left&lt;/li&gt;&lt;li&gt;Two LCD Numbers connected to sliders – Angle, Force&lt;/li&gt;&lt;li&gt;A Screen consisting of a cannon, wall and a brick&lt;/li&gt;&lt;/ul&gt;Download the source &lt;a href="https://docs.google.com/leaf?id=0B6bFa1maIHJdNzI4ODQ2MjYtYzgyZC00MDUwLTliMmQtOWRkMjYzOTNmYjVk&amp;hl=en_US"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;First let’s construct the complex widget – LCD Range where a LCD Number is connected to a slider. A LCD Number is created and a slider is also created with specifying a certain range. These two are connected by generating a signal from slider that the value has changed to the LCD Number slot display.&lt;br /&gt;&lt;br /&gt;Two of these complex widgets are created – Angle and Force.&lt;br /&gt;&lt;br /&gt;Now let’s design the gaming area itself. Here we will be using a very powerful tool known as the QPainter. It provides us with tool for drawing almost anything, lines, arcs, circles, etc.&lt;br /&gt;&lt;br /&gt;The wall and the brick are rectangles each with their own dimensions and color. Now comes the cannon, we use a circle here with a rectangle covering a part of it corresponding to the angle. As the angle varies, the position of the rectangle will also vary. Also the brick is placed at a random to make the game more challenging.&lt;br /&gt;&lt;br /&gt;Once the UI is done the next step is building the AI (Artificial Intelligence) for the game. Going back to physics, for a body projected at a certain angle, the following formulae exist&lt;br /&gt;&lt;br /&gt;Vx = V * cos(angle)&lt;br /&gt;Vy = V * sin(angle)&lt;br /&gt;X = x + Vx*t&lt;br /&gt;Y = y + Vy*t – ½*g*t*t&lt;br /&gt;&lt;br /&gt;where,&lt;br /&gt;&lt;br /&gt;Vx – starting velocity in x- direction&lt;br /&gt;Vy – starting velocity in y- direction&lt;br /&gt;X – position in x direction of the cannon-ball after a time t from firing&lt;br /&gt;Y – position in y direction of the cannon-ball after a time t from firing&lt;br /&gt;g – acceleration due to gravity&lt;br /&gt;&lt;br /&gt;Now these objects are placed properly and set as the main widget to the application. Compile it and run it. That’s it, happy gaming.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-5613746016075618297?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/5613746016075618297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=5613746016075618297' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/5613746016075618297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/5613746016075618297'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2008/08/qt-gaming-in-qt.html' title='Qt - Gaming In Qt'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-5kWiuepRfDU/ThyL8xR4qWI/AAAAAAAACPw/C7X4ngtkeqE/s72-c/046+Qt+-+Gaming+In+Qt+01.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-5198348093248704330</id><published>2008-08-05T10:12:00.013+05:30</published><updated>2011-07-12T23:37:31.880+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming With Qt'/><title type='text'>Qt - A Simple Example</title><content type='html'>Enough of the theory; let’s get into the action. Here is a sample window which will take a name and displaying a message. Before we get into the coding part, it is more important to analyze how the window works.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-hLzUSitE6BI/ThyM5l0n-cI/AAAAAAAACP0/ISmvIurjXF8/s1600/045+Qt+-+A+Simple+Example+01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/-hLzUSitE6BI/ThyM5l0n-cI/AAAAAAAACP0/ISmvIurjXF8/s320/045+Qt+-+A+Simple+Example+01.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Basically this window can be broken down into 4 components&lt;br /&gt;&lt;ol&gt;&lt;li&gt;A Text Label&lt;/li&gt;&lt;li&gt;A Text Field&lt;/li&gt;&lt;li&gt;A Button&lt;/li&gt;&lt;li&gt;A Message Box&lt;/li&gt;&lt;/ol&gt;Now let’s see how the system works. A user keys in his name, then clicks the button, once the button is clicked a message box appears which reads from the text field and displays a message. Download the source from &lt;a href="https://docs.google.com/leaf?id=0B6bFa1maIHJdODZjOTRlMzQtZjI2My00YjE0LTk4OGItNzFiNjFhOGRhMWU1&amp;hl=en_US"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Primarily an application is created from the QApplication class, and then a complex widget is created and assigned as the main widget of the application and then is displayed after resizing it.&lt;br /&gt;&lt;br /&gt;As there are many simple widgets in the application, a complex widget is created from them, and then set to the application. Here the class ComplexBox represents the complex widget. Remember every widget is derived from the QWidget class.&lt;br /&gt;&lt;br /&gt;Firstly the components are to be created and then placed on the screen; this is done by using a layout, namely the grid layout. Where the component is placed based on the co-ordinates of the layout. For example the text label is placed at position (1, 1) extending to (1, 2), that is it occupies 2 columns and 1 row starting from (1,1). Similarly all the other components are placed.&lt;br /&gt;&lt;br /&gt;Next we have the inter-actions between various components. As we can see, clicking the button leads to display of the message. This is the perfect situation of an action listener; this is implemented in Qt by a signal-slot relationship. The signal and the slot are primarily functions. Here the signal is generated by a pre-defined signal called the clicked() of the button, as a result an action is performed by the call() slot of the ComplexBox object itself. As seen the slot is declared in the header.&lt;br /&gt;&lt;br /&gt;That’s it; our first Qt program is over. Run these commands to compile it&lt;br /&gt;&lt;br /&gt;qmake –project&lt;br /&gt;qmake&lt;br /&gt;make&lt;br /&gt;./dir-name&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-5198348093248704330?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/5198348093248704330/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=5198348093248704330' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/5198348093248704330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/5198348093248704330'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2008/08/qt-simple-example.html' title='Qt - A Simple Example'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-hLzUSitE6BI/ThyM5l0n-cI/AAAAAAAACP0/ISmvIurjXF8/s72-c/045+Qt+-+A+Simple+Example+01.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-288154051520713051</id><published>2008-08-05T09:43:00.005+05:30</published><updated>2011-07-09T23:38:51.319+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming With Qt'/><title type='text'>Qt - Programming In Qt</title><content type='html'>The primary prerequisite of learning Qt is &lt;b&gt;C++&lt;/b&gt;. As already stated that Qt builds on the libraries of C++, it is vital to know the concepts of C++ like classes; private, protected and public members; inheritance, etc.&lt;br /&gt;&lt;br /&gt;Like any traditional C++ program, the execution of a Qt program also starts from the function main(). A few enhancements do exist for Qt such as &lt;b&gt;Signals And Slots&lt;/b&gt;. These are primarily responsible to establish connectivity between various widgets of the application.&lt;br /&gt;&lt;br /&gt;Every Qt program consists of an application and several widgets built inside it.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;b&gt;&lt;u&gt;Main Classes of Qt&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Qt is based on widgets and intercommunication. A widget is any component with which a user can interact. It can be a button, a text box, anything. Complex widgets can be created from simpler ones.&lt;br /&gt;&lt;br /&gt;Like any GUI toolkit, even Qt has several predefined widgets, namely QPushButton, QRadioButton, QCheckBox, QLabel, QLineEdit, QLCDNumber, QSlider, etc.&lt;br /&gt;&lt;br /&gt;An entire list of Qt classes can be found in the help documentation of Qt, under the section Qt’s classes.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Writing A Program&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The primary steps to be followed while writing a program are&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Define the problem properly&lt;/li&gt;&lt;li&gt;Make sure what the widgets used will be, and how they are interconnected&lt;/li&gt;&lt;/ul&gt;Every Qt program is an application and is created from &lt;b&gt;QApplication&lt;/b&gt; class. Further widgets are created and are attached to this application. And later the application is displayed. Generally simpler widgets are combined to form a complex widget, which is then used in the program.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-288154051520713051?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/288154051520713051/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=288154051520713051' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/288154051520713051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/288154051520713051'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2008/08/qt-programming-in-qt.html' title='Qt - Programming In Qt'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-1203762887860802863</id><published>2008-08-05T09:34:00.007+05:30</published><updated>2011-07-12T23:40:45.146+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming With Qt'/><title type='text'>Qt - Introduction To KDE</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-S5jB2pkWXzY/ThyN1kj-g4I/AAAAAAAACP4/kU3T0Y0hx48/s1600/043+Qt+-+Intoduction+To+KDE+01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/-S5jB2pkWXzY/ThyN1kj-g4I/AAAAAAAACP4/kU3T0Y0hx48/s200/043+Qt+-+Intoduction+To+KDE+01.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;KDE stands for &lt;b&gt;K Desktop Environment&lt;/b&gt;. Qt can be significantly experienced on a KDE desktop. The Qt toolkit was used for the KDE project. Every window available on the KDE desktop is a part of the Qt design.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;Actually KDE is primarily built on several technologies such as&lt;/div&gt;&lt;ol&gt;&lt;li&gt;KHTML- an HTML engine&lt;/li&gt;&lt;li&gt;Plasma - desktop and panel widget engine&lt;/li&gt;&lt;li&gt;Phonon - multimedia framework&lt;/li&gt;&lt;li&gt;Solid - device integration framework&lt;/li&gt;&lt;/ol&gt;On top of this the entire UI is built on the technology of &lt;b&gt;KDELibs&lt;/b&gt;, which is in turn built on Qt.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-1203762887860802863?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/1203762887860802863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=1203762887860802863' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/1203762887860802863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/1203762887860802863'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2008/08/qt-intoduction-to-kde.html' title='Qt - Introduction To KDE'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-S5jB2pkWXzY/ThyN1kj-g4I/AAAAAAAACP4/kU3T0Y0hx48/s72-c/043+Qt+-+Intoduction+To+KDE+01.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-3774749095697091617</id><published>2008-08-05T09:16:00.007+05:30</published><updated>2011-07-12T23:44:18.037+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming With Qt'/><title type='text'>Qt - Introduction And Working</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-3lZxS8ypP0Y/ThyOmkiRdyI/AAAAAAAACP8/ksdeTVcNiAk/s1600/042+Qt+-+Introduction+And+Working+01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/-3lZxS8ypP0Y/ThyOmkiRdyI/AAAAAAAACP8/ksdeTVcNiAk/s200/042+Qt+-+Introduction+And+Working+01.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;Qt is a cross-platform application development framework, widely used for the development of GUI and non-GUI programs. Originally Qt was developed by a Norwegian company, &lt;b&gt;Trolltech&lt;/b&gt;. It is presently being acquired by&lt;b&gt; Nokia&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Examples of GUI applications using Qt are the VLC Media Player, Opera, Adobe Photoshop Album, Google Earth, Mathematica, etc. Non GUI applications include console tools and servers.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Qt is primarily based on C++ with several non-standard extensions. That is Qt was built by modifying the traditional C++ so as to achieve easier GUI programming. It uses an additional preprocessor that converts this code into standard C++ code before compilation.&lt;br /&gt;&lt;br /&gt;Notably, Qt isn’t restricted to UNIX, it is also extended to various platforms such as Windows (98, NT, ME, 2000), Macintosh (Mac OS X). Further, Qt can be used in several programming languages such as Ada (QtAda), C# (Qyoto), Java (Qt Jambi), Ruby (RubyQt) and several others. Qt is also available for embedded systems such as cell-phones, PDA’s and others under the name of Qtopia.&lt;br /&gt;&lt;br /&gt;Coming to the working of Qt, Qt uses the native APIs of the underlying platform so as to draw the Qt controls, achieving platform independence. It also offers SQL database access, XML parsing and threads management.&lt;br /&gt;&lt;br /&gt;Further a new concept was introduced to C++ on a whole, which was that of intercommunication, under the name of &lt;b&gt;Signals and Slots&lt;/b&gt;. This was possible with a tool known as the Meta Object Compiler. This tool handles the mechanism of signals and slots, run-time type information and dynamic property system. However this concept has been greatly criticized for the absence of type safety.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-3774749095697091617?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/3774749095697091617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=3774749095697091617' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/3774749095697091617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/3774749095697091617'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2008/08/qt-introduction-and-working.html' title='Qt - Introduction And Working'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-3lZxS8ypP0Y/ThyOmkiRdyI/AAAAAAAACP8/ksdeTVcNiAk/s72-c/042+Qt+-+Introduction+And+Working+01.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-4847214855637415644</id><published>2008-08-05T08:58:00.007+05:30</published><updated>2011-07-10T00:12:39.379+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming With Qt'/><title type='text'>Qt - UI (User-Interface) Designing</title><content type='html'>Technically UI design refers to the design of computers, applications and websites with the focus on the users experience and interaction. There are several tools for UI design.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Windows API&lt;/b&gt; specific to only Microsoft Windows. This is achieved by primarily including “windows.h” and using its functions to create windows&lt;/li&gt;&lt;li&gt;&lt;b&gt;Java and Swing.&lt;/b&gt; The Swing package of Java can be used to create any UI required. However the entire Swing package is based on Java, and to run any of these windows, a JVM is required&lt;/li&gt;&lt;/ul&gt;Coming to UNIX, several toolkits have been designed for the X Window System. The most popular of them being -&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;GTK+&lt;/b&gt;, standing for “The GIMP Toolkit” – Examples of applications using this is the GIMP, Terminal and others&lt;/li&gt;&lt;li&gt;&lt;b&gt;Qt&lt;/b&gt;, pronounced as cute&lt;/li&gt;&lt;/ul&gt;The &lt;b&gt;KDE&lt;/b&gt; desktop environment is built on Qt. And the &lt;b&gt;GNOME (GNU Object Model Environment)&lt;/b&gt; desktop environment is built on GTK+.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-4847214855637415644?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/4847214855637415644/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=4847214855637415644' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/4847214855637415644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/4847214855637415644'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2008/08/qt-ui-user-interface-designing.html' title='Qt - UI (User-Interface) Designing'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-7897790475293892082</id><published>2008-07-23T01:07:00.015+05:30</published><updated>2011-07-12T23:45:21.873+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='VirtualBox'/><title type='text'>VirtualBox</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-XGLOLTLH4Ak/ThyPKfBczjI/AAAAAAAACQA/yl0thuUgGQc/s1600/040+VirtualBox+01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-XGLOLTLH4Ak/ThyPKfBczjI/AAAAAAAACQA/yl0thuUgGQc/s1600/040+VirtualBox+01.png" /&gt;&lt;/a&gt;&lt;/div&gt;VirtualBox is an x86 virtualization package originally created by &lt;b&gt;Innotek&lt;/b&gt;, and now being developed by &lt;b&gt;Sun Microsystems&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;VirtualBox helps us to load and run an operating system on an existing operating system. The operating system on which VirtualBox is installed is called the host OS, and the OS running on the host with the help of VirtualBox is called the guest.&lt;br /&gt;&lt;br /&gt;For example, consider a machine with the Windows XP operating system loaded on it, VirtualBox can be installed on this, and another OS, such as Fedora or Solaris can be loaded via the VirtualBox. Here Windows XP is the host OS and the other OS (Fedora, Solaris) becomes the guest.&lt;br /&gt;&lt;br /&gt;A free copy of VirtualBox can be downloaded from &lt;a href="http://www.virtualbox.org/wiki/Downloads"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Further VirtualBox manages the guest OS on the host OS using the concept of a Virtual Machine. Well here comes the tricky part, any OS requires primarily three things.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A Processor to run the various tasks&lt;/li&gt;&lt;li&gt;A memory unit, commonly known as the RAM&lt;/li&gt;&lt;li&gt;Some storage space, basically available on the hard disk&lt;/li&gt;&lt;/ul&gt;Whenever a guest OS is installed on a host, the VirtualBox takes care that the guest receives these three resources whenever the OS runs.&lt;br /&gt;&lt;br /&gt;VirtualBox manages the processor, without any user-interference, however coming to the RAM and the Storage Space, user discretion is required, as we will be seeing a little latter.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Steps for starting up a virtual OS&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Create a new VM using Machine-&amp;gt;New or the New icon available on the screen.&lt;br /&gt;&lt;br /&gt;Follow the wizard, which will be first asking for the name and type of the OS being installed, this will entirely depend on guest OS which you will be installing.&lt;br /&gt;&lt;br /&gt;Next the amount of RAM to be reserved for the operating system will be asked, this will depend on your machine and how much you would like to spare.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Remember!&lt;/i&gt;&lt;/b&gt; The RAM which is reserved here will not be available to the host, when the guest is running. That is if you reserve 512 MB from a 2 GB RAM, the available RAM to the host will be only 1.5 GB as long as the guest is running, however this will be returned once the guest is closed.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Caution!!!&lt;/i&gt;&lt;/b&gt; Your host will also be requiring memory while the guest is running, never lower the RAM for the host significantly, this will lead to insufficient memory for the host, and as a result it might lead to errors.&lt;br /&gt;&lt;br /&gt;Now comes the best part that VirtualBox has to offer. It allows us to create a virtual hard-disk, more specifically reserve some space on our hard-disk for the guest OS. Here an &lt;b&gt;*.vdi&lt;/b&gt; image will be created at the specified place.&lt;br /&gt;&lt;br /&gt;Here an existing *.vdi can be mounted by clicking the Existing button and then adding it to the list via the Add button and then Select it.&lt;br /&gt;&lt;br /&gt;Or a new *.vdi image can be created by clicking the New button. The wizard will ask you whether a static image or a dynamic image is to be created. A static image is one where the entire memory is allocated at one go, whereas on the other a dynamic image is one where a maximum amount is specified, but the size increases as the data is added onto the guest OS. For example consider 25 GB is allocated for the guest. In static the entire 25 GB will be a single *.vdi image, where as in dynamic the basic installation will take some space, and latter as files are added the size will increase.&lt;br /&gt;&lt;br /&gt;And don’t forget to mention where you want the image to be, otherwise it will written onto a default directory. Here dynamic memory occupies only required amount of space, and is beneficial if you a normal user and if you are not sure how much you will using, as the host will lose the space which is not being used by the guest if created statically.&lt;br /&gt;&lt;br /&gt;Once you finish this you will taken back with the new hard-disk selected. Finally click Finish, and you will be able to see your image on the left-hand side of the screen. Now right-click the image on the left and select Start, or left-click and click the Start button.&lt;br /&gt;&lt;br /&gt;Next it will ask you for the media type, where you can you either give an *.iso image or a CD/DVD/Floppy to load from. And then continue the regular process of installing the Operating System.&lt;br /&gt;&lt;br /&gt;Once the installation is completed, you can turn on the guest OS by starting it as told above, and shut it down normally as done in that OS.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Important Tips after Installation&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Once the VM is setup, the RAM occupied can be changed by right-clicking the image on the left hand side, and selecting Settings and changing the RAM accordingly. You can change the focus of the mouse and the sensitivity of the keyboard from the guest to the host by using the right-ctrl key.&lt;br /&gt;&lt;br /&gt;The next important thing is to establish a connection between the guest and the host. This is done primarily by creating a shared folder. Before we create a shared folder, certain software called the VBoxGuestAdditions is to be installed. This is done by starting the OS, Devices-&amp;gt;Mount CD/DVD-ROM and select VBoxGuestAdditions from the drop down menu, it is present there by default, otherwise search for it on your host. Immediately you will a CD available on your guest and install the appropriate executable for your guest. Next go to Devices-&amp;gt;Shared Folder, add the folder to be shared between the guest and host to the machine folders. Then click Ok. That’s it, a shared folder is created. Search for it on your guest and you will find it in no time. For Example a shared folder in a UNIX type OS will be available in /mnt of the root. However this might vary from guest to guest.&lt;br /&gt;&lt;br /&gt;Another way of achieving connectivity is via a pen drive. Once the pen drive is connected it will be automatically detected by the host. To gain access of the USB drive from the host, firstly go to the Settings menu of your guest OS. There from the USB tab Enable USB Controller. Now filters may be added for easy recognition of the USB drive. Now start the VM. From the Devices-&amp;gt;USB menu, select the required USB drive, the required drivers will be installed on the host the first time it is done, and the USB drive will be available on the guest after some time. The USB drive may be removed from the guest by going back to Devices-&amp;gt;USB and deselecting the USB.&lt;br /&gt;&lt;br /&gt;I think these points are sufficient for a beginner to VirtualBox, however more advanced features can be easily explored by putting in a little effort.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-7897790475293892082?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/7897790475293892082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=7897790475293892082' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/7897790475293892082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/7897790475293892082'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2008/07/virtual-box.html' title='VirtualBox'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-XGLOLTLH4Ak/ThyPKfBczjI/AAAAAAAACQA/yl0thuUgGQc/s72-c/040+VirtualBox+01.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-1379519241203006198</id><published>2008-06-10T17:18:00.003+05:30</published><updated>2011-07-10T00:50:06.209+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 2 Micro Edition'/><title type='text'>Java 2 Micro Edition - Conclusion</title><content type='html'>&lt;b&gt;&lt;u&gt;The Good&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;J2ME is small, actually very small; writing programs for devices with very limited memory capabilities has been made into a reality by J2ME. J2ME allows the programmer to customize his program to the utmost possibility, right from the configuration he wants to work with to the very profile he is using.&lt;br /&gt;&lt;br /&gt;Further, the future versions of the KVM will have the capabilities of integrating the present programs with further memory hungry operations.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;b&gt;&lt;u&gt;The Bad&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The very strength of J2ME is its biggest weakness. In order to make the KVM small, a lot of compromises had to be made in the Java language itself. Writing complex programs for J2ME requires higher skill and technique than writing one for computers and servers.&lt;br /&gt;&lt;br /&gt;Further because of the configurations and profiles, the basic fundamental principle of portability had to be compromised. That is, a program written for a particular profile is portable with other devices following the same profile.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Future Of J2ME&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;J2ME is still in its blooming stages, and definitely the platform will be evolving. Many more configurations and profiles will be introduced. Further several technologies, such as Jini (network architecture for distributed systems), will arise with the help of J2ME, improving the capabilities of the mobile devices. Needless to say there will be many more devices following the J2ME technology in future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-1379519241203006198?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/1379519241203006198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=1379519241203006198' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/1379519241203006198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/1379519241203006198'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2008/06/java-2-micro-edition-conclusion.html' title='Java 2 Micro Edition - Conclusion'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-1706668205128123915</id><published>2008-06-10T17:00:00.018+05:30</published><updated>2011-07-12T23:48:10.456+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 2 Micro Edition'/><title type='text'>Java 2 Micro Edition - Case Study</title><content type='html'>Extending one’s knowledge of Java to J2ME is very easy. Every program in J2ME is called a midlet and extends from the midlet class. Here is a sample program in NetBeans using the CLDC configuration and the MIDP 2.0 profile.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-_xkBXlDtdK0/ThyPeNrIhCI/AAAAAAAACQE/T9heOC-sn-U/s1600/038+Java+2+Micro+Edition+-+Case+Study+01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://4.bp.blogspot.com/-_xkBXlDtdK0/ThyPeNrIhCI/AAAAAAAACQE/T9heOC-sn-U/s200/038+Java+2+Micro+Edition+-+Case+Study+01.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-JJI0ggnNNYY/ThyPfpBxZdI/AAAAAAAACQI/MqhZT-VBdtE/s1600/038+Java+2+Micro+Edition+-+Case+Study+02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://1.bp.blogspot.com/-JJI0ggnNNYY/ThyPfpBxZdI/AAAAAAAACQI/MqhZT-VBdtE/s200/038+Java+2+Micro+Edition+-+Case+Study+02.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;As evident from the screen-shots, the constructors in both the programs are very much similar. A few differences exist in the both such as the import statements in J2ME where two packages - midlet and lcdui are imported. Further an alert object is constructed to display the message.&lt;br /&gt;&lt;br /&gt;Three important functions are present in every J2ME program. They are -&lt;br /&gt;&lt;br /&gt;&lt;table align="center" border="1" cellpadding="3"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td&gt;startApp&lt;/td&gt; &lt;td&gt;Called whenever the application is started&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;pauseApp&lt;/td&gt; &lt;td&gt;Called whenever the application is paused&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;destroyApp&lt;/td&gt; &lt;td&gt;Called whenever the application is terminated&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-4gR3o_kv-4o/ThyPgRbyxeI/AAAAAAAACQM/-bC5HYW7QO0/s1600/038+Java+2+Micro+Edition+-+Case+Study+03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="120" src="http://1.bp.blogspot.com/-4gR3o_kv-4o/ThyPgRbyxeI/AAAAAAAACQM/-bC5HYW7QO0/s200/038+Java+2+Micro+Edition+-+Case+Study+03.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-wMSzAxfBQHE/ThyPhg024gI/AAAAAAAACQQ/o1tjOHsWpsM/s1600/038+Java+2+Micro+Edition+-+Case+Study+04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="150" src="http://4.bp.blogspot.com/-wMSzAxfBQHE/ThyPhg024gI/AAAAAAAACQQ/o1tjOHsWpsM/s200/038+Java+2+Micro+Edition+-+Case+Study+04.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-1706668205128123915?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/1706668205128123915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=1706668205128123915' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/1706668205128123915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/1706668205128123915'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2008/06/java-2-micro-edition-case-study.html' title='Java 2 Micro Edition - Case Study'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-_xkBXlDtdK0/ThyPeNrIhCI/AAAAAAAACQE/T9heOC-sn-U/s72-c/038+Java+2+Micro+Edition+-+Case+Study+01.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-3715517249362327437</id><published>2008-06-10T16:49:00.005+05:30</published><updated>2011-07-10T02:02:27.755+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 2 Micro Edition'/><title type='text'>Java 2 Micro Edition - Profiles</title><content type='html'>A Profile primarily defines the type of device supported. Profiles are built on top of configurations, since they are specific to the memory available. They add an additional layer on the top of the configuration layer providing APIs for a specific class of devices.&lt;br /&gt;&lt;br /&gt;Profiles are specific to the configurations selected. For different configurations, different profiles are available.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;b&gt;&lt;u&gt;CDC Configuration&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;For CDC configuration, a foundation profile is available, which is primarily a skeleton profile over which we can create our own profile.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;CLDC Configuration - MIDP, KJava And Doja&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;For the CLDC configuration, predefined profiles such as MIDP, KJava and Doja are available. The KJava profile is one of the popular profiles for the Palm OS. It consists of Sun specific APIs. Further it's not a standard J2ME profile.&lt;br /&gt;&lt;br /&gt;The Doja profile is another popular profile, though not widely used in our mobiles; it is a rapidly growing profile, because of its simple user interface and as it easy to understand. This profile is popularly used in &lt;b&gt;Japan&lt;/b&gt; for their local cellular phone companies. However its influence on the entire mobile network is still a long way ahead.&lt;br /&gt;&lt;br /&gt;The most popular profile used these days in the Mobile Information Device Profile (MIDP). It is mainly based on the CLDC configuration and is widely used in cellular phones and pagers.  Currently there are two versions of MIDP that are available for programming - MIDP 1.0 and MIDP 2.0. Mainly the differences between these two profiles are the fact that the MIDP 2.0 has extended features when compared to MIDP 1.0 such as audio and 2D gaming. On the other hand MIDP 1.0 has greater portability when compared to MIDP 2.0. Many of the cellular phone brands such as Nokia, LG, Samsung, and Motorola use these profiles.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-3715517249362327437?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/3715517249362327437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=3715517249362327437' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/3715517249362327437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/3715517249362327437'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2008/06/java-2-micro-edition-profiles.html' title='Java 2 Micro Edition - Profiles'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-4564375468891405813</id><published>2008-06-10T16:40:00.004+05:30</published><updated>2011-07-10T02:14:00.909+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 2 Micro Edition'/><title type='text'>Java 2 Micro Edition - Configurations</title><content type='html'>Configurations define the basic run-time environment as a set of core classes. They add the classes required for the program to be compatible with the virtual machine.&lt;br /&gt;&lt;br /&gt;J2ME has two main configurations – &lt;b&gt;Connected Limited Device Configuration&lt;/b&gt; (CLDC) and &lt;b&gt;Connected Device Configuration&lt;/b&gt; (CDC). These configurations actually specify the main type of the device, which defines how much memory is available for the operations to be performed.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;CLDC requires less memory whereas CDC requires at least 2MB of memory to perform its computations. The CLDC configuration consists of classes and a set of libraries more specific to the mobile devices. The CDC configuration is basically a stripped down version of J2SE with the CLDC classes added to this.&lt;br /&gt;&lt;br /&gt;The CLDC configuration is supported by KVM and the CDC configuration is supported by CVM. Configurations decide whether optional features such as multi dimensional arrays, threads, JNI and others have to be included or not.&lt;br /&gt;&lt;br /&gt;CLDC configuration is used when the memory available is low, such as the case of PDAs and cell phones. CDC configuration is used when the memory available is more than 2MB but less than that available on our computers, such as the case of set-top boxes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-4564375468891405813?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/4564375468891405813/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=4564375468891405813' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/4564375468891405813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/4564375468891405813'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2008/06/java-2-micro-edition-configurations.html' title='Java 2 Micro Edition - Configurations'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-7020351865664599126</id><published>2008-06-10T16:34:00.003+05:30</published><updated>2011-07-10T02:26:12.020+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 2 Micro Edition'/><title type='text'>Java 2 Micro Edition - Virtual Machines</title><content type='html'>A virtual machine is the immediate layer overlying the operating system and is mainly responsible for running any program written in Java. This is the main reason that codes written in Java are highly portable. The virtual machine interprets the Java byte-code and converts into native system calls. Further as every program runs in the confinement of the virtual machine, no penetration is possible into the operation system, reducing the risk of viruses.&lt;br /&gt;&lt;br /&gt;J2ME offers two different virtual machines, namely CVM (for higher end mobile devices) and KVM (for lower end mobile devices). CVM is used for devices which have higher memory capabilities and which are closer to computers whereas KVM is used for devices which have lower memory capabilities, such as mobile phones. KVM and CVM are primarily nothing but the subset of JVM. They can be thought as just shrunken versions of the JVM and are more specific to J2ME.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-7020351865664599126?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/7020351865664599126/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=7020351865664599126' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/7020351865664599126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/7020351865664599126'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2008/06/java-2-micro-edition-virtual-machines.html' title='Java 2 Micro Edition - Virtual Machines'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-2015692816634202293</id><published>2008-06-10T16:02:00.010+05:30</published><updated>2011-07-12T23:50:30.873+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 2 Micro Edition'/><title type='text'>Java 2 Micro Edition - An Overview</title><content type='html'>Mobile devices have become a part and parcel of almost everybody’s life. By mobile devices, we don’t mean just our cell phones, but also devices such as pagers, personal digital assistants (PDA’s) and small retail terminals (devices such as set-top boxes).&lt;br /&gt;&lt;br /&gt;To use these devices more effectively and more efficiently, programming was introduced into these devices. Every mobile device has a basic operating system which co-ordinates the various tasks to be performed by the device itself. Examples of these operating systems are the Symbian operating system, Windows operating system, Linux operating systems and many others. Many of the primitive models had a PROM built in them, instead of an operating system, so as to start the mobile device without any hassles.&lt;br /&gt;&lt;br /&gt;Different file formats have been developed for these mobile devices. Many of these are basic extensions of a high level language so as to perform properly even at the availability of less memory. Examples of this are the &lt;b&gt;*.sis&lt;/b&gt; and &lt;b&gt;*.sisx &lt;/b&gt;file formats which are basic extensions of C, &lt;b&gt;*.jar&lt;/b&gt; and &lt;b&gt;*.jad&lt;/b&gt; which are basic extensions of the Java 2 Standard Edition.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;u&gt;&lt;b&gt;Bringing J2ME Into The Picture&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;One of the popular languages used in the development of these mobile programs is Java, more specifically the Micro Edition of Java called &lt;b&gt;J2ME&lt;/b&gt;. As known, Java is divided into three segments J2SE, J2EE and J2ME, while the former two are used for servers and higher end computers, J2ME is used for mobile devices.&lt;br /&gt;&lt;br /&gt;At first J2ME was intended as a platform for game development, but now-a-days J2ME is used for developing almost every kind of application. Following the fundamental principle of Java, J2ME also follows the principle of &lt;b&gt;"Write Once Run Anywhere (WORA)"&lt;/b&gt; to a large extent. Also the security of these programs is high as it runs in the confinement of the virtual machine itself. Further the possible users of this technology are estimated to be very high, making it popular as a whole.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;J2ME Architecture&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;J2ME runs mainly on virtual machines, which actually runs the Java byte code on the device. Before the implementation of any byte code, every program written in J2ME should specify its configuration and its profile. They are layers immediately above the virtual machine layer, as shown in the figure. These layers form the very bone structure of the J2ME program and selecting these layers properly in the key of writing a suitable program for a particular device. The first and foremost layer is the Operating System layer which co-ordinates the tasks of the entire device itself.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-aGg8FU595hc/ThyQOaUTQxI/AAAAAAAACQU/MRQKwwOj_1k/s1600/034+Java+2+Micro+Edition+-+An+Overview+01.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="193" src="http://2.bp.blogspot.com/-aGg8FU595hc/ThyQOaUTQxI/AAAAAAAACQU/MRQKwwOj_1k/s200/034+Java+2+Micro+Edition+-+An+Overview+01.gif" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-2015692816634202293?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/2015692816634202293/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=2015692816634202293' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/2015692816634202293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/2015692816634202293'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2008/06/introduction-to-mobile-programming.html' title='Java 2 Micro Edition - An Overview'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-aGg8FU595hc/ThyQOaUTQxI/AAAAAAAACQU/MRQKwwOj_1k/s72-c/034+Java+2+Micro+Edition+-+An+Overview+01.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-1702976842587334077</id><published>2007-10-03T20:03:00.002+05:30</published><updated>2011-07-10T11:05:45.464+05:30</updated><title type='text'>Hidden Files Not Shown</title><content type='html'>This is another problem associated with the w32.USBWorm seen in the previous post. Sometimes this problem occurs even independently, without any association to the mentioned virus. This is basically due to a wrong registry key value.&lt;br /&gt;&lt;br /&gt;The following steps have to be taken so as to restore hidden files and folders.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Go to Start --&amp;gt; Run, then type Regedit&lt;/li&gt;&lt;li&gt;Navigate to the registry folder HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL&lt;/li&gt;&lt;li&gt;Find a key called ChekedValue&lt;/li&gt;&lt;li&gt;Double click CheckedValue key and modify it to 1. This is to show all the hidden files&lt;/li&gt;&lt;/ol&gt;Now you should be able to view all the hidden files, and also to alter its status from folder options.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-1702976842587334077?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/1702976842587334077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=1702976842587334077' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/1702976842587334077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/1702976842587334077'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2007/10/hidden-files-not-shown.html' title='Hidden Files Not Shown'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-9095852995927687305</id><published>2007-10-03T19:53:00.007+05:30</published><updated>2011-07-10T11:18:32.429+05:30</updated><title type='text'>Removing Orkut Hater - w32.USBWorm</title><content type='html'>&lt;blockquote&gt;&lt;i&gt;I don't hate Mozilla but use IE or else&lt;br /&gt;Use Internet Explorer U Dope&lt;br /&gt;Orkut is banned you fool, The administrators didn't write this program guess who did?? MUHAHAHA!!&lt;/i&gt;&lt;/blockquote&gt;These are not any statements to encourage the use of IE or defame Orkut, but the indications of a virus infected machine, yes Virus. This virus is basically a malware named as &lt;b&gt;w32.USBWorm&lt;/b&gt; and spreads primarily through pen drives. Well on the brighter side, this virus is a decent one and does not affect any of your files or damage your system.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Now coming to its removal, unfortunately many of the anti-virus software today are not in a position to detect this virus. So it has to be removed manually, the following steps have to be followed for its removal,&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Press CTRL+ALT+DEL and go to processes tab&lt;/li&gt;&lt;li&gt;Look for svchost.exe under the image name. There will be many but look for the ones which have your username under the username&lt;/li&gt;&lt;li&gt;Press DEL to kill these files. It will give you a warning, Press yes&lt;/li&gt;&lt;li&gt;Repeat for more svchost.exe files with your username and repeat. Do not kill svchost.exe with system, local service or network service!&lt;/li&gt;&lt;li&gt;Now open My Computer&lt;/li&gt;&lt;li&gt;In the address bar, type C:\heap41a and press enter. It is a hidden folder, and is not visible by default&lt;/li&gt;&lt;li&gt;Delete all files here&lt;/li&gt;&lt;li&gt;Now go to Start --&amp;gt; Run and type Regedit&lt;/li&gt;&lt;li&gt;Go to the menu Edit --&amp;gt; Find&lt;/li&gt;&lt;li&gt;Type "heap41a" here and press enter. You will get something like this "[winlogon] C:\heap41a\svchost.exe C:\heap(some number)\std.txt"&lt;/li&gt;&lt;li&gt;Select that and Press DEL. It will ask "Are you sure you want to delete this value", click Yes&lt;/li&gt;&lt;li&gt;Now close the registry editor&lt;/li&gt;&lt;/ol&gt;Now the virus is gone. But be sure to delete the autorun.inf file and any folder whose name ends with .exe in the pen drive.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-9095852995927687305?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/9095852995927687305/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=9095852995927687305' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/9095852995927687305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/9095852995927687305'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2007/10/removing-orkut-hater-w32usbworm.html' title='Removing Orkut Hater - w32.USBWorm'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-3509897612199659078</id><published>2007-07-05T17:07:00.002+05:30</published><updated>2011-07-10T11:32:51.562+05:30</updated><title type='text'>Download Your Favorite Videos</title><content type='html'>Every day, we see thousands of videos being uploaded in many of the video hosting sites like &lt;a href="http://www.dailymotion.com/us"&gt;Dailymotion&lt;/a&gt;, &lt;a href="http://youtube.com/"&gt;Youtube&lt;/a&gt;, &lt;a href="http://www.veoh.com/"&gt;Veoh&lt;/a&gt;. These sites are very interesting as there is something in every genre - Science and Technology, Gaming, Music.&lt;br /&gt;&lt;br /&gt;In fact any video can be found with a proper search. However a small problem exists with these videos, they can be seen but cannot be downloaded straight from the website as there is no download facility in most of these sites. So the storage of our favorite videos is not possible. But as usual, there is always a solution to a problem.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Let me explain this with an example. Consider this video, It is from Dailymotion from the games genre. It is the preview of the latest &lt;a href="http://www.dailymotion.com/video/x24o4k_need-for-speed-prostreet-teaser"&gt;Need For Speed game - The Prostreet&lt;/a&gt; (I know I can embed the video here, but I want you to go to the original site).&lt;br /&gt;&lt;br /&gt;Now, you can see the video being buffered so that it can be viewed; scroll down a bit in the page. Here two important links will be given. One is the permanent link and the other is the embeddable player. The embeddable player code can be copied into an html page for the video to be embedded onto the webpage. However we are aiming to save it on our system. This is now possible with a few websites that help us to download video content. A few of them are &lt;a href="http://keepvid.com/"&gt;KeepVid&lt;/a&gt;, &lt;a href="http://clipnabber.com/"&gt;ClipNabber&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Consider I am downloading from ClipNabber. I paste the permanent link in the space given there, which is right below the logo and click the download button. Now scroll on the same page a bit, and just after the logo you will find a "download link" button. Click on that and select save, select the folder where it is required and the job is done. The video will be stored in the computer. Whatever maybe the format of the downloaded video, change the extension of the file to .flv. You will need &lt;a href="http://www.download.com/FLV-Player/3000-2139_4-10505954.html"&gt;Flash Player&lt;/a&gt; to play files with this format.&lt;br /&gt;&lt;br /&gt;Better players can be found with a little bit effort. The beauty of the flv format is its small size, that is in this example 45 seconds of video was only of about 1.5 MB, which is very less when compared to other formats. This video can be converted into other formats with the help of video converters also if required.&lt;br /&gt;&lt;br /&gt;This solves a large part of our initial problem, but not the entire problem. That is because this works with videos that are available directly without any registration. Now what if a registration is required, we cannot use any of these sites for download. Generally registration is required for some websites and a few videos of the above-mentioned sites. However this problem was solved by the latest version of Real Player that was released. This player can download video that can be watched by us. For example, if there was a video which can viewed only after registering, all we have to do is register and go to the video, immediately a small pop up will appear above the video saying "Download this video using Real Player". Click on this and the video will be downloaded on to the system. However &lt;a href="http://www.softpedia.com/get/Multimedia/Video/Video-Players/RealPlayer.shtml"&gt;Real Player 11&lt;/a&gt; is still a beta version and its limitations cannot be told yet.&lt;br /&gt;&lt;br /&gt;Before I conclude this article, I would like people to know that this article is not for supporting piracy, but only for videos which have proper rights. After all an original will always be an original.&lt;br /&gt;&lt;br /&gt;Have fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-3509897612199659078?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/3509897612199659078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=3509897612199659078' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/3509897612199659078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/3509897612199659078'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2007/07/download-your-favorite-videos.html' title='Download Your Favorite Videos'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-4363184633568372696</id><published>2007-05-12T18:28:00.006+05:30</published><updated>2011-07-10T12:06:58.255+05:30</updated><title type='text'>Thermoelectric Power</title><content type='html'>The &lt;b&gt;Seebeck Effect&lt;/b&gt; is the conversion of temperature differences directly into electricity. In other words, it is the generation of electricity in a circuit containing two different metals, or semiconductors, by keeping the junctions between them at different temperatures. This effect is due to two effects - Charge Carrier Diffusion and Phonon Drag. This principle is used in thermal diodes and thermoelectric generators.&lt;br /&gt;&lt;br /&gt;The &lt;b&gt;Seebeck Voltage&lt;/b&gt; is the voltage produced between the two junctions of a ferrite material, when they are maintained at two different temperatures. This voltage is produced due to the fact that when two junctions are two different temperatures, the majority charge carriers (holes/electrons) are diffused from the surface having high temperature to a surface having relatively low temperature.&lt;br /&gt;&lt;br /&gt;This voltage can be mathematically expressed as &lt;b&gt;V = (integral)(T1 to T2) [SB(T) - SA(T)]dT&lt;/b&gt; where SA and SB are Seebeck coefficients of two different metals A and B, T1 and T2 are temperatures of hot and cold junctions. Generally, &lt;b&gt;V = (SB - SA)(T2 - T1)&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;The term &lt;b&gt;Thermoelectric Power&lt;/b&gt; is a misnomer since it measures the voltage in response to temperature rather than power. It is also known as Seebeck coefficient. It is defined as the open circuit voltage produced between two points on a conductor, where a uniform temperature difference of 1K exists between those points. It is a measure of the magnitude of an induced thermoelectric voltage in response to a temperature difference across that material. It has units of V/K. It is also a measure of entropy per charge carrier in the material.&lt;br /&gt;&lt;br /&gt;Mathematically it is represented as &lt;b&gt;S = Thermoelectric Voltage / Temperature Difference&lt;/b&gt;. In terms of electric field, it is written as &lt;b&gt;S = E / Temperature Gradient&lt;/b&gt;. If m is the Thompson coefficient of an material, then &lt;b&gt;S = (integral) [m / T]dT&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Thermoelectric power determines the efficiency of a thermoelectric material. More the Seebeck coefficient better is the efficiency. Materials with high Seebeck coefficient are Bismuth Telluride and Uranium Dioxide.&lt;br /&gt;&lt;br /&gt;One of the important applications of Seebeck coefficient is the determination of &lt;b&gt;Fermi Energy Gap&lt;/b&gt;. For a n-type semiconductor, &lt;b&gt;QT = Eg - Ef + 2KT&lt;/b&gt; and for a p-type semiconductor, &lt;b&gt;QT = Ef - 2KT&lt;/b&gt; where,&lt;br /&gt;Q - Seebeck coefficient&lt;br /&gt;Eg - Energy gap of the ferrite semiconductor&lt;br /&gt;Ef - Height of fermi energy level from the top of the filled valency band&lt;br /&gt;2KT - the term, which accounts for the transfer of KE of the ferrite to a cold one&lt;br /&gt;&lt;br /&gt;For certain materials, the conduction takes place in exceedingly narrow bands or in localized levels, so the KE term can be neglected, so for a n-type semiconductor, &lt;b&gt;Ef = Eg - QT&lt;/b&gt; and for a p-type semiconductor, &lt;b&gt;Ef = QT&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Another important application of the Seeback coefficient is the determination of &lt;b&gt;Carrier Concentration&lt;/b&gt;. In the case of low mobility semiconductors such as ferrites, the activation energy is often associated with the mobility of charge carriers. They are considered as localized at the ions or vacant sites and the conduction occurs via a hopping type process, which implies a thermally activated electronic mobility. In such cases, it is appropriate to consider small polarons as charge carriers rather than electrons or holes. Further, it is known that the concentration (n) is given by &lt;b&gt;Q = - (K/e) [ lnb(N-n)/n + St/K ]&lt;/b&gt; where,&lt;br /&gt;St - Entropy transport term, which is negligible for ferrite materials&lt;br /&gt;N - density of states or number of available sites&lt;br /&gt;K - Boltzmann constant&lt;br /&gt;e - electronic charge&lt;br /&gt;b - degeneracy factor which includes both spin and orbital degeneracy and its value is taken as 1&lt;br /&gt;&lt;br /&gt;Considering &lt;b&gt;n &amp;lt;&amp;lt; N&lt;/b&gt;, we can reduce the above formula to &lt;b&gt;n = N exp (Q e/K)&lt;/b&gt;. If V is the volume of the sample and the value of K/e is found to be 86.4, so we get &lt;b&gt;n = N/V exp (Q / 86.4)&lt;/b&gt;. In the case of ferrites having exceedingly narrow bands or localized levels, the value of N, the density of states can be taken as 10^(22) cm^(-3).&lt;br /&gt;&lt;br /&gt;In the case of n-type semiconductor material, the hot junction becomes positively charged, as it loses some of its electrons. The cold surface of the semi conductor becomes negatively charged due to the diffusion of free electrons from the hot portion. Conversely in a p-type semiconductor, the hot surface becomes negative, and the cold one positive. Thus the type of conduction in a given semi conducting material can be determined from the sign of the thermo emf.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-4363184633568372696?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/4363184633568372696/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=4363184633568372696' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/4363184633568372696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/4363184633568372696'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2007/05/thermoelectric-power.html' title='Thermoelectric Power'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-234249704614273460</id><published>2007-04-22T21:40:00.001+05:30</published><updated>2011-07-10T12:13:06.104+05:30</updated><title type='text'>Solar Cells</title><content type='html'>A solar cell or photovoltaic cell is a device that converts light energy into electrical energy. Sometimes the term solar cell is reserved for devices intended specifically to capture energy from sunlight, while the term photovoltaic cell is used when the light source is unspecified.&lt;br /&gt;&lt;br /&gt;Fundamentally, the device needs to fulfill only two functions - &lt;b&gt;Photogeneration of Charge Carriers&lt;/b&gt; (electrons and holes) in a light-absorbing material, and &lt;b&gt;Separation of the Charge Carriers&lt;/b&gt; to a conductive contact that will transmit the electricity. This conversion is called the photovoltaic effect, and the field of research related to solar cells is known as photovoltaics.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Solar cells have many applications. They have long been used in situations where electrical power from the grid is unavailable, such as in remote area power systems, Earth-orbiting satellites and space probes, consumer systems, e.g. handheld calculators or wrist watches, remote radiotelephones and water pumping applications. More recently, they are starting to be used in assemblies of solar modules (photovoltaic arrays) connected to the electricity grid through an inverter, often in combination with a net metering arrangement. Solar cells are regarded as one of the key technologies towards a sustainable energy supply.&lt;br /&gt;&lt;br /&gt;Thin-film solar cells use less than 1% of the raw material (silicon or other light absorbers) compared to wafer based solar cells, leading to a significant price drop per kWh. There are many research groups around the world actively researching different thin-film approaches and/or materials, however it remains to be seen if these solutions can generate the same space-efficiency as traditional silicon processing.&lt;br /&gt;&lt;br /&gt;One particularly promising technology is crystalline silicon thin films on glass substrates. This technology makes use of the advantages of crystalline silicon as a solar cell material, with the cost savings of using a thin-film approach. Another interesting aspect of thin-film solar cells is the possibility to deposit the cells on all kind of materials, including flexible substrates (PET, for example), which opens a new dimension for new applications.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-234249704614273460?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/234249704614273460/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=234249704614273460' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/234249704614273460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/234249704614273460'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2007/04/solar-cells.html' title='Solar Cells'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-4524342438421725742</id><published>2007-04-22T21:20:00.001+05:30</published><updated>2011-07-10T12:23:12.285+05:30</updated><title type='text'>Gas Sensors</title><content type='html'>Gas sensors interact with a gas to initiate the measurement of its concentration. The gas sensor then provides output to a gas instrument to display the measurements. Common gases measured by gas sensors include Ammonia, Aerosols, Arsine, Bromine, Carbon Dioxide, Carbon Monoxide, Chlorine, Chlorine Dioxide, Diborane, Dust, Fluorine, Germane, Halocarbons or Refrigerants, Hydrocarbons, Hydrogen, Hydrogen Chloride, Hydrogen Cyanide, Hydrogen Fluoride, Hydrogen Selenide, Hydrogen Sulfide, Mercury Vapor, Nitrogen Dioxide, Nitrogen Oxides, Nitric Oxide, Organic Solvents, Oxygen, Ozone, Phosphine, Silane, Sulfur Dioxide, and Water Vapour.&lt;br /&gt;&lt;br /&gt;Important measurement specifications to consider when looking for gas sensors include the response time, the distance, and the flow rate. The response time is the amount of time required from the initial contact with the gas to the sensors processing of the signal. Distance is the maximum distance from the leak or gas source that the sensor can detect gases. The flow rate is the necessary flow rate of air or gas across the gas sensor to produce a signal.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Gas sensors can output a measurement of the gases detected in a number of ways. These include percent LEL, percent volume, trace, leakage, consumption, density, and signature or spectra. The lower explosive limit (LEL) or lower flammable limit (LFL) of a combustible gas is defined as the smallest amount of the gas that will support a self-propagating flame when mixed with air (or oxygen) and ignited. In gas-detection systems, the amount of gas present is specified in terms of % LEL: 0% LEL being a combustible gas-free atmosphere and 100% LEL being an atmosphere in which the gas is at its lower flammable limit. The relationship between % LEL and % by volume differs from gas to gas. Also called volume percent or percent by volume, percent volume is typically only used for mixtures of liquids. Percent by volume is simply the volume of the solute divided by the sum of the volumes of the other components multiplied by 100%. Trace gas sensors given in units of concentration: ppm. Leakage is given as a flow rate like ml/min. Consumption may also be called respiration. Given in units of ml/L/hr. Density measurements are given in units of density: mg/m^3. A signature or spectra measurement is a spectral signature of the gases present; the output is often a chromatogram.&lt;br /&gt;&lt;br /&gt;Common outputs from gas sensors include analog voltage, pulse signals, analog currents and switch or relays. Operating parameters to consider for gas sensors include operating temperature and operating humidity.&lt;br /&gt;&lt;br /&gt;Copper Oxide (CuO) thin films were deposited using a reactive DC sputtering method for gas sensor applications. The structure of the films determined by means of an X-Ray diffraction method indicates that the phase of Copper Oxide can be synthesized in the total pressure and temperature ranges of 6-8.5 mbar and 151-192 °C, respectively. The resistivity of the film synthesized at a substrate temperature of 192 °C increases from 0.104 to 0.51 Ohm-m after absorbing Carbon Dioxide gas at 135 °C. The gas sensitivity of the film synthesized at the substrate temperature of 192 °C increases up to 5.1 in the presence of Carbon Dioxide gas at 160 °C. The gas sensitivity in the presence of Nitrogen gas reaches only 1.43 even at 200 °C.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-4524342438421725742?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/4524342438421725742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=4524342438421725742' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/4524342438421725742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/4524342438421725742'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2007/04/gas-sensors.html' title='Gas Sensors'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-4201912124425513607</id><published>2007-03-27T17:29:00.004+05:30</published><updated>2011-07-10T12:50:05.310+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Indian Movies At Oscars'/><title type='text'>Indian Movies At Oscars - Case Studies</title><content type='html'>In the previous articles we have discussed the Expectations, Causes of Failure and the Importance of Oscars. This post covers a few case studies, which could not make a successful performance at the Oscars in the past.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Mother India (1957)&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Produced and Directed by Mehboob Khan, Mother India is perhaps the ultimate tribute to womanhood. Why Mother India couldn't make it at the Oscars -&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The length of the movie&lt;/li&gt;&lt;li&gt;Apartheid was on a high during that time, which might have been another cause of failure&lt;/li&gt;&lt;/ul&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;b&gt;&lt;u&gt;Salaam Bombay! (1988)&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Produced and Directed by Mira Nair, Salaam Bombay chronicles the day-to-day life of children living on the streets of Mumbai. All the children acting in the movie were real street children, given proper training for the movie. Why Salaam Bombay! couldn't make it at the Oscars -&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The cast was totally unknown&lt;/li&gt;&lt;li&gt;The movie was not properly marketed, especially in India, which retarded it's promotion in the Oscars&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;u&gt;Lagaan: Once Upon A Time In India (2001)&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Produced by Aamir Khan and directed by Ashutosh Gowariker, Lagaan is probably one of India's finest movie, mixing the British rule with Cricket. Though it was a splendid movie, it lost to “No Man’s Land”, dealing with two wounded soldiers caught in the no man’s land. Why Lagaan couldn't make it at the Oscars -&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The movie was taken at a time when the British ruled India; the movie had nothing to do with the present times, which became a important cause of its failure&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;u&gt;Rang De Basanti (2006)&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Though this movie was not even nominated to the Oscars, let us even consider why it could not succeed. Produced and Directed by Rakeysh Omprakash Mehta, Rang De Basanti is one of the movies, which inspired the youth of the country to a large extent. The entire movie moves in and out of the time of freedom struggle and portraits many freedom fighters. Why Rang De Basanti couldn't make it at the Oscars -&lt;br /&gt;&lt;ul&gt;&lt;li&gt;As already said, the movie moves in and out of the past. Though the concept was good, it created a huge confusion among the viewers at times, which as a result led to its failure&lt;/li&gt;&lt;/ul&gt;These were a few movies that we can discuss now, though there are other movies still left for discussion, there's no point in doing that now. Let's move ahead and hope that we can create a movie that will put the Indian culture in front of the world, and thus succeed in getting an Oscar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-4201912124425513607?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/4201912124425513607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=4201912124425513607' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/4201912124425513607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/4201912124425513607'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2007/03/indian-movies-at-oscars-case-studies.html' title='Indian Movies At Oscars - Case Studies'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-5470768460155346748</id><published>2007-03-27T17:12:00.002+05:30</published><updated>2011-07-10T13:13:54.995+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Indian Movies At Oscars'/><title type='text'>Indian Movies At Oscars - Importance Of Oscars</title><content type='html'>&lt;b&gt;&lt;u&gt;What makes Oscars important for Indian movies?&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;To achieve international appreciation&lt;/li&gt;&lt;li&gt;To increase the market of Indian films worldwide&lt;/li&gt;&lt;li&gt;As we deserve it&lt;/li&gt;&lt;/ul&gt;We all know that winning an academy award is nothing but achieving international appreciation so it’s important for us to win it to prove ourselves.&lt;br /&gt;&lt;br /&gt;And by winning this award the range of market, for our films increases, which make the film, do well at box office. And this means the producer wouldn’t be at loss due to the lack of non-commercial elements in his movie.&lt;br /&gt;&lt;br /&gt;The important thing is that we deserve the academy award for our films, there is no doubt that some discrimination towards Indian films exists otherwise it’s ridiculous that we haven’t won it till now even though decades have passed since its inception.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;b&gt;&lt;u&gt;Do we really need an Academy award?&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;As it’s just a normal award like any other&lt;/li&gt;&lt;li&gt;As we have a national award which is more important&lt;/li&gt;&lt;li&gt;As we already have a huge market for our films in abroad&lt;/li&gt;&lt;/ul&gt;We unnecessarily think about an award which is not for us and not given by someone who could understand our culture, emotions and feelings so why should we give it importance moreover we have won lots of appreciation for our films in other film festivals like Cannes film festival.&lt;br /&gt;&lt;br /&gt;We do have a national award, which is more important for us, rather than a award which doesn’t belong to us. As many of Indian people are staying abroad, because of them there is already a huge market existing worldwide for Indian movies this is the reason for Indian movies doing well at abroad.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Does the hype created by media for Oscar’s necessary?&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Every year when the ad’s for Oscars starts in television channels the media starts creating hype for it and gives it more importance than our national awards. They never telecast the national awards ceremony but they do it for academy awards. It’s the media, which is creating an unnecessary discussion about the awards and they even mention every time that we weren’t nominated even after knowing the reasons.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-5470768460155346748?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/5470768460155346748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=5470768460155346748' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/5470768460155346748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/5470768460155346748'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2007/03/indian-movies-at-oscars-importance-of.html' title='Indian Movies At Oscars - Importance Of Oscars'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-2324191953932218290</id><published>2007-03-27T17:00:00.003+05:30</published><updated>2011-07-10T13:35:12.752+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Indian Movies At Oscars'/><title type='text'>Indian Movies At Oscars - Causes Of Failure</title><content type='html'>&lt;ul&gt;&lt;li&gt;Politics in Indian selection committee&lt;/li&gt;&lt;li&gt;Differences between local film industries here&lt;/li&gt;&lt;li&gt;A good number of films being produced yearly&lt;/li&gt;&lt;li&gt;Most of the movies being the remakes of English ones&lt;/li&gt;&lt;li&gt;Less number of movies produced for the sake of human values&lt;/li&gt;&lt;/ul&gt;To explain the above terms briefly, let’s talk about the politics in Indian selection, we actually have a selection committee in India to select a movie among the Indian movies to send as the Indian entry to the Oscars. The committee consists of the members coming from different territories of India and they support the films of their region without looking for standards and the film from a region with more number of members will be selected irrespective of the standards. Due to this reason the film "Water" has been nominated for Oscars as a Canadian entry though being an Indian film.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Differences between the Indian film industries imply that we have many languages here in our country and each language has its own film industry. Most of the people abroad think that Indian films implies Hindi films but the actual fact is we have here films being produced in more than 25 languages and equal importance not being given to the films of all languages, every year it’s only a Hindi film that’s being selected as the Indian entry.&lt;br /&gt;&lt;br /&gt;Yearly thousands of films are being produced in India and not even one film is being nominated for Oscars. Our films are not nominated at least for alternate years or at least for once in five years. From this we can understand the standard of our film making.&lt;br /&gt;&lt;br /&gt;Another main reason is that famous English flicks inspire many of our films. Many of the Indian movies suffer the tag of plagiarism. Most of the popular Hindi and Telugu movies are remakes of a foreign movies or an English itself. A few of them are Josh (West Side Story), Shakti (Not Without My Daughter), Jism (Double Indemnity), Koi Mil Gaya (Extra Terrestrial). We cannot blame anyone for this fact since; it would be ridiculous if a foreign award was to be given to movie which itself is a copy of a foreign movie.&lt;br /&gt;&lt;br /&gt;Here in India, films are produced to just entertain the people rather than for the sake of human values. The reason for this is that people here don’t show much interest towards a movie with less dose of entertainment and more of message or other stuff and due to this the films made for values doesn’t do well at the box office.&lt;br /&gt;&lt;br /&gt;Non-realistic approach of a film implies the way we show certain things in our movies that doesn’t take place in real life. For example in an English if an actor flies in air or some thing he is shown as if he has super powers whereas in our movies the hero himself who is meant to be a common man has all the powers of a superman. Even in English they make films based on just imagination but not real but they give all the appropriate conditions to make that look true but here in our films a mother could know whatever happens to his son who is miles far away from her, we call it emotion or sentiment and they call it rubbish. But we can’t help it as our films are based on our culture and for the sake of Oscars we can’t change it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34806632-2324191953932218290?l=gautam-m.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gautam-m.blogspot.com/feeds/2324191953932218290/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34806632&amp;postID=2324191953932218290' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/2324191953932218290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34806632/posts/default/2324191953932218290'/><link rel='alternate' type='text/html' href='http://gautam-m.blogspot.com/2007/03/main-reasons-for-indian-movies-failing.html' title='Indian Movies At Oscars - Causes Of Failure'/><author><name>Gautam Muduganti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-BTaKTOI3cw0/Thnidws0pII/AAAAAAAACDM/7QRsEh9aXFc/s220/Bourne%2BUltimatum%2BEffect.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34806632.post-6057408198730216238</id><published>2007-03-27T16:56:00.006+05:30</published><updated>2011-07-10T16:10:49.124+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Indian Movies At Oscars'/><title type='text'>Indian Movies At Oscars - Expectations Of The Jury</title><content type='html'>&lt;b&gt;&lt;u&gt;Previous Oscar Winners&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The Oscar is a distant dream for the country's top award-winning filmmakers, but as thought it is not that we have never got an Oscar award.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;Bhanu Athaiya (1982)&lt;/i&gt; is the first Indian to get an Oscar. She received the Costume Design Award for her movie Ghandhi&lt;/li&gt;&lt;li&gt;&lt;i&gt;Satyajit Ray (1992)&lt;/i&gt; got an Oscar in the Lifetime Achievement Category&lt;/li&gt;&lt;/ul&gt;However these awards are customarily thought to be some sort of consolation.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;b&gt;&lt;u&gt;What does the jury expect from a movie?&lt;/u&gt;&lt;/b&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;A &lt;i&gt;Good Script&lt;/i&gt; is something which properly conveys the message that the director imagines in his mind&lt;/li&gt;&lt;li&gt;&lt;i&gt;Realistic Approach&lt;/i&gt; in the sense to approach the script in most common way as if the story happened really and what if it happens really and all those cases which may take place if the story of the script is real&lt;/li&gt;&lt;li&gt;&lt;i&gt;Natural Way of Taking&lt;/i&gt; is to shoot the scenes so that the viewers feel that they were real&lt;/li&gt;&lt;li&gt;A &lt;i&gt;Good Cast&lt;/i&gt; is very necessary as they should suit the characters of the film and should enact them properly&lt;/li&gt;&lt;li&gt;&lt;i&gt;Proper publicity&lt;/i&gt; is t
