<?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:blogger='http://schemas.google.com/blogger/2008' 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-7160536626427299882</id><updated>2024-09-08T05:48:22.412-07:00</updated><category term="Java"/><category term="TDD"/><category term="BHO"/><category term="Browser helper objects"/><category term="Bulk Data"/><category term="C++ Debugging"/><category term="Cloud"/><category term="Code Standards"/><category term="Compiler"/><category term="Data Structures"/><category term="Dependency injection"/><category term="Distributed Computing"/><category term="Fault Tolerance"/><category term="FreeMarker"/><category term="Graphs"/><category term="Groovy"/><category term="HDFS"/><category term="Hadoop"/><category term="IE"/><category term="Java Decompilation"/><category term="Kata"/><category term="Managed Debugging"/><category term="Map Reduce"/><category term="On Demand"/><category term="Open Source"/><category term="Parallel Development"/><category term="Reflection"/><category term="SOS"/><category term="Server Side Programming"/><category term="Synchronization"/><category term="ThoughtMakers"/><category term="Trees"/><category term="Volatile"/><category term="Web Debugging"/><category term="attributes"/><category term="chrome."/><category term="concurrent"/><category term="constructor"/><category term="debug tool"/><category term="fiddler"/><category term="firefox"/><category term="http"/><category term="https"/><category term="methods"/><category term="microsoft"/><category term="protocols"/><category term="super class"/><category term="synchronized"/><title type='text'>ThoughtMakers</title><subtitle type='html'>Thank you for visiting our official blog. Here, you will find various interesting articles which our experts contribute. These articles are a result of research, challenges faced, and deep knowledge in the areas of expertise.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://thoughtmakers.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7160536626427299882/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://thoughtmakers.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>ThoughtMakers</name><uri>http://www.blogger.com/profile/17288143280260173062</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7160536626427299882.post-4414248059718625297</id><published>2012-06-21T09:07:00.000-07:00</published><updated>2012-06-21T09:07:39.008-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Dependency injection"/><category scheme="http://www.blogger.com/atom/ns#" term="TDD"/><title type='text'>Dependency Injection</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
I came across this problem when I was writing code for my
product. We follow Test Driven Development as it suites our process. Well there
are lots of benefits that you can get from Test Driven Development; I won’t dig
deeper into that. But I faced lots of problems trying to adhere to this coding
practice.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
I had implemented this new interface and a private class that
implements this interface. This new class was singleton. &amp;nbsp;&amp;nbsp;Now the
methods in this interface are used across many classes in many projects in the production
code, all these classes are Unit tested. Since they unit tested, changing the
code in these classes make things messier. But I had to take the pain of
modifying the production code as well as the Unit test projects. But the tests
still kept failing. &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
All I was trying to do is create a new interface pointer,
and then use it across the class. I created this new interface pointer in the
constructor of the classes that use this singleton class.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
In the test class I was creating the interface pointer in
the setup method of the class that use the singleton, but all the test cases were
failing when I tried to call the interface’s methods in the test cases. The failed
reason was null pointer. Now I couldn’t understand the reason for being null as
the interface pointer is created in the setup method and setup method is
definitely called every time.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
One fine day I found out the actual root cause, the manner
in which the interface pointer was getting created and passed was wrong. Since
the new class was singleton, the object creation took place only when the
production code was run, generally when you run the test cases the production code
won’t get executed, hence the interface pointer was turning out to be null.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
The solution for this is &lt;b&gt;Dependency Injection&lt;/b&gt;. Since the test classes depended on the classes
that used the new class and interface pointer was getting created in the
constructor, I had to pass this pointer to the test cases. For the test cases
to pass, I had to write a separate constructor with an extra parameter i.e.
interface pointer. I am INJECTING the interface pointer so that the test cases ‘that
DEPEND on it won’t fail.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
So now in the test class, in the setup method, every time I created
the production class’s object, I passed the interface’s pointer. After taking
the pain of changing the code (again!), I finally managed to make the test
cases pass.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtmakers.blogspot.com/feeds/4414248059718625297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thoughtmakers.blogspot.com/2012/06/dependency-injection.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7160536626427299882/posts/default/4414248059718625297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7160536626427299882/posts/default/4414248059718625297'/><link rel='alternate' type='text/html' href='http://thoughtmakers.blogspot.com/2012/06/dependency-injection.html' title='Dependency Injection'/><author><name>ThoughtMakers</name><uri>http://www.blogger.com/profile/17288143280260173062</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7160536626427299882.post-2338479531220699195</id><published>2012-06-21T03:07:00.003-07:00</published><updated>2012-06-21T03:08:23.832-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="concurrent"/><category scheme="http://www.blogger.com/atom/ns#" term="Synchronization"/><category scheme="http://www.blogger.com/atom/ns#" term="synchronized"/><category scheme="http://www.blogger.com/atom/ns#" term="Volatile"/><title type='text'>Synchronization in Java</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Trebuchet MS&#39;, sans-serif;&quot;&gt;Synchronization refers to keeping multiple blocks in coherence with each other. The block that is surrounded by keyword &lt;u&gt;synchronized&lt;/u&gt;&amp;nbsp;can only be accessed by one entity at a time. When the entity requests access to the synchronized block and is granted access, a lock is set on the block. The lock gets released only when the entity that acquired the lock releases it. Synchronization is a must for mutual exclusion. In Java, implementing Synchronization is relatively simple compared to other programming languages.&amp;nbsp;&lt;span style=&quot;background-color: white;&quot;&gt;Synchronization in Java very important since Java supports multi-threading where multiple threads run in parallel to complete program execution.&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;In a&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;multi-threaded&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&amp;nbsp;environment java object&amp;nbsp;&lt;i&gt;synchronization or class sync becomes very important&lt;/i&gt;.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Trebuchet MS&#39;, sans-serif;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Trebuchet MS&#39;, sans-serif;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;Synchronization in Java is possible by using&lt;b&gt;&lt;i&gt;&amp;nbsp;java keyword &quot;synchronized&quot;&lt;/i&gt;&lt;/b&gt;&amp;nbsp;and&amp;nbsp;&lt;b&gt;&lt;i&gt;&quot;volatile”&lt;/i&gt;&lt;/b&gt;. Concurrent access of objects in Java introduces to kind of errors: thread interference and memory consistency errors and to avoid these errors you need to properly synchronize your java object to allow mutual exclusive access of critical section to two threads.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Trebuchet MS&#39;, sans-serif;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Trebuchet MS&#39;, sans-serif;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;Sample snippet for Synchronization in Java:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Trebuchet MS&#39;, sans-serif;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;font-size: small;&quot;&gt;
&lt;span style=&quot;font-size: 8pt;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;b&gt;public class Count&lt;/b&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;font-size: small;&quot;&gt;
&lt;span style=&quot;font-size: 8pt;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;private static int count = 0;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;font-size: small;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;font-size: small;&quot;&gt;
&lt;span style=&quot;font-size: 8pt;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;public&amp;nbsp;&lt;b&gt;static synchronized&lt;/b&gt;&amp;nbsp;int getCount(){&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;font-size: small;&quot;&gt;
&lt;span style=&quot;font-size: 8pt;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; return count;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;font-size: small;&quot;&gt;
&lt;span style=&quot;font-size: 8pt;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;font-size: small;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;font-size: small;&quot;&gt;
&lt;span style=&quot;font-size: 8pt;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;public&amp;nbsp;&lt;b&gt;synchoronized&amp;nbsp;&lt;/b&gt;setCount(int count){&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;font-size: small;&quot;&gt;
&lt;span style=&quot;font-size: 8pt;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; this.count = count;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;font-size: small;&quot;&gt;
&lt;span style=&quot;font-size: 8pt;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;font-size: small;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;font-size: small;&quot;&gt;
&lt;span style=&quot;font-size: 8pt;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &#39;Trebuchet MS&#39;, Verdana, Arial, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtmakers.blogspot.com/feeds/2338479531220699195/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thoughtmakers.blogspot.com/2012/06/synchronization-in-java.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7160536626427299882/posts/default/2338479531220699195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7160536626427299882/posts/default/2338479531220699195'/><link rel='alternate' type='text/html' href='http://thoughtmakers.blogspot.com/2012/06/synchronization-in-java.html' title='Synchronization in Java'/><author><name>ThoughtMakers</name><uri>http://www.blogger.com/profile/17288143280260173062</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7160536626427299882.post-247817530228092064</id><published>2012-06-20T09:22:00.000-07:00</published><updated>2012-06-20T09:24:34.911-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="http"/><category scheme="http://www.blogger.com/atom/ns#" term="https"/><category scheme="http://www.blogger.com/atom/ns#" term="protocols"/><title type='text'>Asynchronous Pluggable Protocols</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
There are times in everyone’s life where you would have thought
about customizing things that you are forced to use the pre-defined one. A
custom made browser, an extension that you can call your own, your own IDE (Interface
Development Environment) and so on.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
If you have thought about creating your very own protocol on the
line of http, https, etc. you have come to the right place.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
You can create your own protocols and name it whatever you like,
myprotocol, tiger, etc. and use the custom protocol in a similar way as http –
tiger://google.com. &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Microsoft provides an excellent way to help you create your own
protocols. Enter Asynchronous Pluggable Protocols. Asynchronous Pluggable
Protocols helps developers to create their own protocols; MIME filters that work
with Microsoft’s Internet Explorer from version 4.0 and above.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
You need to implement the IInterProtocolInfo interface for this
purpose. Override the methods provided by this interface. One of the methods is
ParseUrl; use this method to parse the URL, whether you are interested in
processing it further. &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/aa767875(v=vs.85).aspx&quot;&gt;ParseUrl&lt;/a&gt;
has the following form.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt; word-break: break-all;&quot;&gt;
&lt;span style=&quot;font-size: 10pt;&quot;&gt;HRESULT&amp;nbsp;ParseUrl(&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt; word-break: break-all;&quot;&gt;
&lt;span style=&quot;font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
LPCWSTR&amp;nbsp;pwzUrl,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt; word-break: break-all;&quot;&gt;
&lt;span style=&quot;font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
PARSEACTION&amp;nbsp;ParseAction,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt; word-break: break-all;&quot;&gt;
&lt;span style=&quot;font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
DWORD&amp;nbsp;dwParseFlags,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt; word-break: break-all;&quot;&gt;
&lt;span style=&quot;font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
LPWSTR&amp;nbsp;pwzResult,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt; word-break: break-all;&quot;&gt;
&lt;span style=&quot;font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
DWORD&amp;nbsp;cchResult,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt; word-break: break-all;&quot;&gt;
&lt;span style=&quot;font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
DWORD&amp;nbsp;*pcchResult,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt; word-break: break-all;&quot;&gt;
&lt;span style=&quot;font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
DWORD&amp;nbsp;dwReserved&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt; word-break: break-all;&quot;&gt;
&lt;span style=&quot;font-size: 10pt;&quot;&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
The most important parameter is PARSEACTION, your methods needs to
include switch case for each of the &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ms775138(v=vs.85).aspx&quot;&gt;PARSEACTIONS&lt;/a&gt;.
&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
The next important method is QueryInfo method. Use this method to
decide which URL you wish to mark secured and others that you want to mark
insecure so that the users of your application are notified about the same. &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/aa767876(v=vs.85).aspx&quot;&gt;QueryInfo&lt;/a&gt;
has the following form&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt; word-break: break-all;&quot;&gt;
&lt;span style=&quot;font-size: 10pt;&quot;&gt;HRESULT&amp;nbsp;QueryInfo(&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt; word-break: break-all;&quot;&gt;
&lt;span style=&quot;font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
LPCWSTR&amp;nbsp;pwzUrl,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt; word-break: break-all;&quot;&gt;
&lt;span style=&quot;font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
QUERYOPTION&amp;nbsp;OueryOption,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt; word-break: break-all;&quot;&gt;
&lt;span style=&quot;font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
DWORD&amp;nbsp;dwQueryFlags,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt; word-break: break-all;&quot;&gt;
&lt;span style=&quot;font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
LPVOID&amp;nbsp;pBuffer,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt; word-break: break-all;&quot;&gt;
&lt;span style=&quot;font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
DWORD&amp;nbsp;cbBuffer,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt; word-break: break-all;&quot;&gt;
&lt;span style=&quot;font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
DWORD&amp;nbsp;*pcbBuf,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt; word-break: break-all;&quot;&gt;
&lt;span style=&quot;font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
DWORD&amp;nbsp;dwReserved&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt; word-break: break-all;&quot;&gt;
&lt;span style=&quot;font-size: 10pt;&quot;&gt;);&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;pre style=&quot;word-break: break-all;&quot;&gt;&lt;span style=&quot;font-family: Calibri, sans-serif;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;word-break: break-all;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; white-space: normal;&quot;&gt;Here the important parameter is &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ms775139(v=vs.85).aspx&quot; target=&quot;_blank&quot;&gt;QUERYOPTION&lt;/a&gt;. If you want your URL to pass through the IE security filter, then return TRUE for QUERY_CAN_NAVIGATE and QUERY_IS_SECURE.&lt;/span&gt;
&lt;/pre&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtmakers.blogspot.com/feeds/247817530228092064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thoughtmakers.blogspot.com/2012/06/asynchronous-pluggable-protocols.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7160536626427299882/posts/default/247817530228092064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7160536626427299882/posts/default/247817530228092064'/><link rel='alternate' type='text/html' href='http://thoughtmakers.blogspot.com/2012/06/asynchronous-pluggable-protocols.html' title='Asynchronous Pluggable Protocols'/><author><name>ThoughtMakers</name><uri>http://www.blogger.com/profile/17288143280260173062</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7160536626427299882.post-1700116005977897171</id><published>2012-06-20T03:37:00.001-07:00</published><updated>2012-06-20T03:37:49.551-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cloud"/><category scheme="http://www.blogger.com/atom/ns#" term="Compiler"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="On Demand"/><category scheme="http://www.blogger.com/atom/ns#" term="Open Source"/><category scheme="http://www.blogger.com/atom/ns#" term="ThoughtMakers"/><title type='text'>Java Online Compiler</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
It&#39;s the On Demand day for us all today. So, we here at ThoughtMakers decided to come up with something that can benefit the Open Source community at the same time related to On Demand. So, here we are &amp;nbsp;with this cool&amp;nbsp;&lt;u style=&quot;font-weight: bold;&quot;&gt;Compile On Demand Java tool.&lt;/u&gt;&amp;nbsp;We&#39;ve hosted this on our ThoughtMakers website. So how does it work?&lt;br /&gt;
&lt;br /&gt;
Well, the user just writes his code in the template we&#39;ve provided and once done, clicks on &quot;Compile&quot;. Our backend systems pulls the code and does what it has to do and streams the result over the browser and there you got the executed program.&lt;br /&gt;
&lt;br /&gt;
So, how did we complete the jig-saw? Well, firstly, the HTML that posts contents to the backend server. The backend server reads the entire content which is the code and saves it locally making up a java file. The backend logic also knows to call system commands as batches and compiles the newly saved java file. Any error encountered is returned as stream and the same is given back to the user as html content. If all goes well and compilation is a success, the same is executed again by calling system commands as batches and the same is given back to the user as html.&lt;br /&gt;
&lt;br /&gt;
Simple? Yes. Useful to the Community. Open Source it all.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thank you folks.&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtmakers.blogspot.com/feeds/1700116005977897171/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thoughtmakers.blogspot.com/2012/06/java-online-compiler.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7160536626427299882/posts/default/1700116005977897171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7160536626427299882/posts/default/1700116005977897171'/><link rel='alternate' type='text/html' href='http://thoughtmakers.blogspot.com/2012/06/java-online-compiler.html' title='Java Online Compiler'/><author><name>ThoughtMakers</name><uri>http://www.blogger.com/profile/17288143280260173062</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7160536626427299882.post-1772147682198255367</id><published>2012-06-19T05:36:00.000-07:00</published><updated>2012-06-19T05:38:11.489-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="attributes"/><category scheme="http://www.blogger.com/atom/ns#" term="constructor"/><category scheme="http://www.blogger.com/atom/ns#" term="debug tool"/><category scheme="http://www.blogger.com/atom/ns#" term="methods"/><category scheme="http://www.blogger.com/atom/ns#" term="Reflection"/><category scheme="http://www.blogger.com/atom/ns#" term="super class"/><title type='text'>Fundas using Reflection</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Reflection is one of the most powerful features in Java Programming language. You must be familiar with Object Oriented programming where you create blueprints called classes and make objects out of them, call instance methods using those objects or call static methods using the class.&lt;br /&gt;
&lt;br /&gt;
Using Reflection, you can create objects from outside the class&#39;s namespace. In simple terms, you can create objects at runtime. Hypothetically, if at compile time there was a code to find out the number of objects for the class and if reflection&#39;s used, this code would fail. Reflection is so powerful that you would be able to hack into the class&#39;s methods and attributes. Below is a sample snippet which demonstrates Reflection&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #cccccc; font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;try&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #cccccc; font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #cccccc; font-family: &#39;Courier New&#39;, Courier, monospace; text-align: right;&quot;&gt;Class c = Class.forName(&quot;classname&quot;); &amp;nbsp; &amp;nbsp; // Class handler&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #cccccc; font-family: &#39;Courier New&#39;, Courier, monospace; text-align: right;&quot;&gt;Field f = c.getField(&quot;fieldname&quot;); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Get the field&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #cccccc; font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Method m[] = c.getDeclaredMethods(); &amp;nbsp; &amp;nbsp;// Get all methods&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #cccccc; font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;}catch(Exception ex)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #cccccc; font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #cccccc; font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;ex.printStackTrace();&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #cccccc; font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
The above was just a sample of Reflection&#39;s capabilities. For design a comprehensive Debugging tool, the best approach to go for is Reflection. This is because as an ideal case, a debugger must see the code from outside it&#39;s domain.&lt;br /&gt;
&lt;br /&gt;
Reflection is also used to get all implemented Interfaces, finding out the superclass of a given class, getting information about constructors and much more.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtmakers.blogspot.com/feeds/1772147682198255367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thoughtmakers.blogspot.com/2012/06/fundas-using-reflection.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7160536626427299882/posts/default/1772147682198255367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7160536626427299882/posts/default/1772147682198255367'/><link rel='alternate' type='text/html' href='http://thoughtmakers.blogspot.com/2012/06/fundas-using-reflection.html' title='Fundas using Reflection'/><author><name>ThoughtMakers</name><uri>http://www.blogger.com/profile/17288143280260173062</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7160536626427299882.post-752216005276243308</id><published>2012-06-19T02:08:00.000-07:00</published><updated>2012-06-19T02:08:15.015-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="chrome."/><category scheme="http://www.blogger.com/atom/ns#" term="fiddler"/><category scheme="http://www.blogger.com/atom/ns#" term="firefox"/><category scheme="http://www.blogger.com/atom/ns#" term="IE"/><category scheme="http://www.blogger.com/atom/ns#" term="Web Debugging"/><title type='text'>Web Debugging using Fiddler.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Most of my day to day work involves working on Web Browsers
(IE, Firefox, Chrome, etc). Many a times I am concerned over the data that is
being transmitted from and to the Web browser. Sometime it becomes pain to
figure the actual root cause of some issues related to Web browsers(Security issues, etc).&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
One of the tools that really help in indentifying the
traffic from your web browser is Fiddler. Fiddler is web debugging tool that
helps in identifying the information transmitted to and from the web browser. At
runtime the traffic from WinINet’s HTTP(s) stack can be automatically directed
through fiddler. All you have to do is start your fiddler, launch your web
browser and then switch over to the fiddler to enjoy the transmission of the
data over the net.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
It can also be extended using .Net. So you can have your
very own web debugger which you can play around with.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Enough said, try the fiddler &lt;a href=&quot;http://www.fiddler2.com/fiddler2/&quot;&gt;here&lt;/a&gt;. Enjoy web debugging.&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtmakers.blogspot.com/feeds/752216005276243308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thoughtmakers.blogspot.com/2012/06/web-debugging-using-fiddler.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7160536626427299882/posts/default/752216005276243308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7160536626427299882/posts/default/752216005276243308'/><link rel='alternate' type='text/html' href='http://thoughtmakers.blogspot.com/2012/06/web-debugging-using-fiddler.html' title='Web Debugging using Fiddler.'/><author><name>ThoughtMakers</name><uri>http://www.blogger.com/profile/17288143280260173062</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7160536626427299882.post-2545223836778421129</id><published>2012-06-18T05:18:00.001-07:00</published><updated>2012-06-18T05:18:54.048-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Bulk Data"/><category scheme="http://www.blogger.com/atom/ns#" term="Distributed Computing"/><category scheme="http://www.blogger.com/atom/ns#" term="Fault Tolerance"/><category scheme="http://www.blogger.com/atom/ns#" term="Hadoop"/><category scheme="http://www.blogger.com/atom/ns#" term="HDFS"/><category scheme="http://www.blogger.com/atom/ns#" term="Map Reduce"/><title type='text'>Use Case for Hadoop</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Well friends, Hadoop as we all know is a wonderful framework for handling bulk data. For those of you who haven&#39;t heard about Hadoop, here&#39;s a head&#39;s up about it:&lt;br /&gt;
&lt;span style=&quot;background-color: white; font-family: arial; font-size: 12px;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; font-family: arial; font-size: 12px;&quot;&gt;&lt;b&gt;Hadoop is a distributed system framework for handling huge amounts of data and is highly scalable. The scalability is the result of a Self-Healing High Bandwith Clustered Storage , known by the acronym of HDFS (Hadoop Distributed File System) and a specific fault-tolerant Distributed Processing, known as MapReduce.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; font-family: arial; font-size: 12px;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;Enough said, I had a use case to extract huge amounts of data in the form of IP Addresses. I had to crawl large number of sites and extract some data out of them. I thought why not use a distributed framework like that of Hadoop for accomplishing this task. Thank you Hadoop. You solved my problem quite easily without much of an effort. Friends, I tell you - Hadoop is a great way of leveraging the power of Distributed Systems.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;PS: I love you HADOOP!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; font-family: arial; font-size: 12px;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtmakers.blogspot.com/feeds/2545223836778421129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thoughtmakers.blogspot.com/2012/06/use-case-for-hadoop.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7160536626427299882/posts/default/2545223836778421129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7160536626427299882/posts/default/2545223836778421129'/><link rel='alternate' type='text/html' href='http://thoughtmakers.blogspot.com/2012/06/use-case-for-hadoop.html' title='Use Case for Hadoop'/><author><name>ThoughtMakers</name><uri>http://www.blogger.com/profile/17288143280260173062</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7160536626427299882.post-706340434734622913</id><published>2012-06-18T03:45:00.000-07:00</published><updated>2012-06-18T03:45:14.208-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="BHO"/><category scheme="http://www.blogger.com/atom/ns#" term="Browser helper objects"/><category scheme="http://www.blogger.com/atom/ns#" term="microsoft"/><title type='text'>Browser Helper Objects: An introduction</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Browser Helper Objects commonly called as BHO are, as name
suggests, objects or components that helps you to utilize the browsers
capabilities. It’s basically a dll (Dynamic Linked Library) that gets
registered into your system, of course with your permission.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
It’s basically a add-in to your browser. The most common
browser helper object is the Google toolbar in Internet Explorer. You can
search your queries directly from the toolbar. BHOs are used extensively by the
marketing folks to pull in the advertisers. What they actually do is create
BHOs that can track the traffic in one site. This piece of information is very
useful for the advertisers looking for the users to a particular website. &amp;nbsp;They can track the information such as the
kind of users, what they are interested in and so on.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
There are lots of such BHOs today, collecting, tracking one
information or the other. &amp;nbsp;Despite of being
so helpful, a few can be malicious as well. Some BHOs gets installed in your
system and then can take advantage of your browsing data. For example some BHOs
are mainly interested in bank sites, where in the BHOs trap the user’s credentials
and send it across to its owner/s.&amp;nbsp; I think
you would know the rest of the story!&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
The BHO api (application programming interface) exposes loop
holes and hooks that allows these malicious BHOs to access the page’s DOM
(Document Object Model) which facilitates the BHO to control the page
navigation&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Microsoft provides apis for creating your &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/bb250436(v=vs.85).aspx&quot;&gt;own&lt;/a&gt;
BHO.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
In order to make sure your system does not fall prey to
these malicious BHOs, you need to make sure you permit only trusted installations
on your system.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Remember &lt;i&gt;&lt;u&gt;SECURITY &lt;/u&gt;&lt;/i&gt;is incomplete without “&lt;i&gt;U&lt;/i&gt;”….&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtmakers.blogspot.com/feeds/706340434734622913/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thoughtmakers.blogspot.com/2012/06/browser-helper-objects-introduction.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7160536626427299882/posts/default/706340434734622913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7160536626427299882/posts/default/706340434734622913'/><link rel='alternate' type='text/html' href='http://thoughtmakers.blogspot.com/2012/06/browser-helper-objects-introduction.html' title='Browser Helper Objects: An introduction'/><author><name>ThoughtMakers</name><uri>http://www.blogger.com/profile/17288143280260173062</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7160536626427299882.post-7624303736846521397</id><published>2012-06-17T23:08:00.000-07:00</published><updated>2012-06-17T23:08:08.728-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="FreeMarker"/><category scheme="http://www.blogger.com/atom/ns#" term="Groovy"/><category scheme="http://www.blogger.com/atom/ns#" term="Parallel Development"/><category scheme="http://www.blogger.com/atom/ns#" term="Server Side Programming"/><title type='text'>Power of Groovy and FreeMarker</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Here I will tell you folks how Groovy and FreeMarker can be used to reduce the software turn around to a great extent. While working on enterprise applications, for coming up with your business logic you&#39;d most probably work on technologies like Java, C++ or even Python. After building the logic, for the view part you would probably work on some GUI based languages for rendering the view. So, if you&#39;re responsible for developing both the Business layer and the View, you&#39;d need to first build the business layer and then the view. It&#39;s not a parallel process. Yet another case would be you would only design the business layer and the UI programmers would design the view. In this case, the UI Programmers are still dependent on you. So, only after the Business layer development is complete will the UI programmers start building the view. Again, this is not a parallel development.&amp;nbsp;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Now pitches in Groovy and FreeMarker. Groovy is best suited for Java programmers as it drills down to a .class on compilation. It&#39;s got the power of both scripting and server side programming. FreeMarker is a template engine which renders wonderful view. So, here&#39;s the thing - The Server side programmers would develop their business logic at the same time while the UI Programmers develop their view. This enables parallel development. It reduces the total time for software produce to almost 50% less than what it used to be in earlier scenarios.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Try out &lt;a href=&quot;http://groovy.codehaus.org/Download&quot; target=&quot;_blank&quot;&gt;Groovy &lt;/a&gt;and &lt;a href=&quot;http://freemarker.sourceforge.net/freemarkerdownload.html&quot; target=&quot;_blank&quot;&gt;FreeMarker &lt;/a&gt;and let me know if you like it and concur to the above.&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtmakers.blogspot.com/feeds/7624303736846521397/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thoughtmakers.blogspot.com/2012/06/power-of-groovy-and-freemarker.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7160536626427299882/posts/default/7624303736846521397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7160536626427299882/posts/default/7624303736846521397'/><link rel='alternate' type='text/html' href='http://thoughtmakers.blogspot.com/2012/06/power-of-groovy-and-freemarker.html' title='Power of Groovy and FreeMarker'/><author><name>ThoughtMakers</name><uri>http://www.blogger.com/profile/17288143280260173062</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7160536626427299882.post-7571424976488691812</id><published>2012-06-17T04:58:00.004-07:00</published><updated>2012-06-17T23:23:04.441-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C++ Debugging"/><category scheme="http://www.blogger.com/atom/ns#" term="Managed Debugging"/><category scheme="http://www.blogger.com/atom/ns#" term="SOS"/><title type='text'>Managed Debugging</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;Debugging is a process of analysing the dumps of the
application. Dumps can be of different types-crash, hang, etc. &amp;nbsp;This debugging plays a major role in support of
any product that any company ships. This also helps in determining the further improvements
in the code base for future releases.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Debugging can be of two types-unmanaged and managed. Unmanaged
is the one which involves the application written in unmanaged language for
example C++ or VC++. Managed code on the hand involves the applications written
in managed code-all supporting the .Net framework(C#, VB, etc.) &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Unlike unmanaged debugging which involves analysing the dump
files written in unmanaged code(C, C++), managed debugging is relatively easy.
Most of the work will be done for you by the CLR (Common Language Runtime). Even
the crashes, hangs are very limited in case of the managed application. Thanks
to the CLR and the efficient Garbage collector provided by the .Net framework.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
WinDbg is the tool that I generally use for debugging the crash,
hang dumps. For managed debugging you will have to load the symbols first. You
can do this using the following command.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;&lt;i&gt;&lt;span style=&quot;background-color: white; color: #8eb4e3; font-size: 14pt; line-height: 115%;&quot;&gt;.sympath SRV*D:\symbols*http://msdl.microsoft.com/download/symbols&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
This will load the Microsoft symbols. &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Next process is to load the extension that provides the
commands for managed debugging. This extension is called&lt;span class=&quot;MsoHyperlink&quot;&gt; &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/bb190764.aspx&quot;&gt;SOS&lt;/a&gt;&lt;/span&gt;. To
load the extension use the following command&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;&lt;i&gt;&lt;span style=&quot;background-color: white; color: #8eb4e3; font-size: 14pt; line-height: 115%;&quot;&gt;.loadby sos mscorwks&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
This will load the SOS extension. From now on you can use
the command provided by the SOS for analysing the dump files. &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
You can find the commands &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/bb190764.aspx&quot;&gt;here&lt;/a&gt;.&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtmakers.blogspot.com/feeds/7571424976488691812/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thoughtmakers.blogspot.com/2012/06/managed-debugging.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7160536626427299882/posts/default/7571424976488691812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7160536626427299882/posts/default/7571424976488691812'/><link rel='alternate' type='text/html' href='http://thoughtmakers.blogspot.com/2012/06/managed-debugging.html' title='Managed Debugging'/><author><name>ThoughtMakers</name><uri>http://www.blogger.com/profile/17288143280260173062</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7160536626427299882.post-6564531448406456015</id><published>2012-06-17T01:27:00.002-07:00</published><updated>2012-06-17T01:27:52.561-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java Decompilation"/><title type='text'>Save your code from Java Decompilation</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;I took a break from the core, bottom-most almost hardware types kind of code - You know what I mean, to a little bit of securing my Java code. I used to work on a framework which was written in Java - A good one - robust, fast, highly scalable and even light. The problem with that framework was that it could easily be hacked - I mean decompiled. So, what I&#39;ve seen many doing is, they rip code from such amazing frameworks and ship it as their own. I know it&#39;s not ethical but that&#39;s what happens many of times. So, how do you save yourself from such cheap yet&amp;nbsp;occurring incidents of Java Code Decompilation?&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Of course from a bird&#39;s eye view, there needs to be some sort of locking implemented on your code or even encryption may be. To go about protecting your Java source code, we need&amp;nbsp;&lt;span style=&quot;background-color: white; line-height: 18px;&quot;&gt;obfuscators which helps us solve our problem. Obfuscators are good but really suck sometimes from the point of view of optimization. It&#39;s terrible that you write super optimized code and then pass it through some sorta machine and then it&#39;s all gone. It becomes junk again. So, while saving your code from decompilation, please do ensure that you&#39;re using the write obfuscator which still keeps your code optimized.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; line-height: 18px;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; line-height: 18px;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;One another solution to protect your source code is to use Encrypted Jar Files. Well, I would not use this as a first option because of the process involved in encryption and decryption which is expensive. But well, this is a solution to save your code too!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; line-height: 18px;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; line-height: 18px;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; line-height: 18px;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Third option would be to compile your code directly to Platform specific Assembly. This destroys the entire motive of Java - Platform Independent.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; line-height: 18px;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; line-height: 18px;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;My Advice - Use a good obfuscator. Choose it wisely.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; line-height: 18px;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; line-height: 18px;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;line-height: 18px;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Here is&amp;nbsp;&lt;a href=&quot;http://www.zelix.com/&quot; target=&quot;_blank&quot;&gt;Zelix Obfuscator&lt;/a&gt;&amp;nbsp;which is good. Try it. Do some trials on various obfuscators and choose one which matches your code environment.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 14px; line-height: 18px;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, &#39;Liberation Sans&#39;, &#39;DejaVu Sans&#39;, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 14px; line-height: 18px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtmakers.blogspot.com/feeds/6564531448406456015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thoughtmakers.blogspot.com/2012/06/save-your-code-from-java-decompilation.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7160536626427299882/posts/default/6564531448406456015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7160536626427299882/posts/default/6564531448406456015'/><link rel='alternate' type='text/html' href='http://thoughtmakers.blogspot.com/2012/06/save-your-code-from-java-decompilation.html' title='Save your code from Java Decompilation'/><author><name>ThoughtMakers</name><uri>http://www.blogger.com/profile/17288143280260173062</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7160536626427299882.post-4380746140947374595</id><published>2012-06-02T10:38:00.000-07:00</published><updated>2012-06-17T23:09:28.260-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Code Standards"/><category scheme="http://www.blogger.com/atom/ns#" term="Kata"/><category scheme="http://www.blogger.com/atom/ns#" term="TDD"/><title type='text'>Improve Coding standards using Coding Kata</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Improve Coding standards using Coding Kata&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;a href=&quot;http://en.wikipedia.org/wiki/Kata&quot;&gt;Kata&lt;/a&gt; means “form”
in Japanese. Coding Kata is an approach where in you improve your coding
standards, style, etc. by continuously working on a given problem. I know it is
difficult to find time in your daily work routine, but trust me this will
improve your coding to a great extent. (Try to find at least 1 hour per week
for this, which would suffice).&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Kata is generally used in Karate.&amp;nbsp; Karate has set of Kata. Kata are basically
set of kicks and punches that you perform in a pattern. Idea behind this is to
develop the pattern so thoroughly that, in emergencies you use technique to
save yourself effectively.&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Similar to the karate, we use Kata in day to day
programming. What you actually do is, follow certain standards, styles on a day
to day basis so that you become thorough with this. Practice makes perfect. More
you practice more thorough you become with this. When you face a real life
problem, code automatically flows through you. And mind you, the code will be
of good quality.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
In order to learn or use TDD, we make use of Kata. The
principle behind this is, you need to code the Test before coding the actual
production code. Firstly, you will write failing test (what scenarios my code
might fail) and then write the passing test (all success scenarios).&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
You start developing the test project. Gradually adding code
to the production project that makes this test pass.&amp;nbsp; Eventually you will end up in the production
code which is perfect (well almost!). &amp;nbsp;For example start with simple problems, for
instance, Stack. Every week you try to improve the Stack. You should delete the
previous week’s code and start afresh.&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Using TDD in your day to day work improves efficiency and
makes the code more maintainable.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtmakers.blogspot.com/feeds/4380746140947374595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thoughtmakers.blogspot.com/2012/06/improve-coding-standards-using-coding.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7160536626427299882/posts/default/4380746140947374595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7160536626427299882/posts/default/4380746140947374595'/><link rel='alternate' type='text/html' href='http://thoughtmakers.blogspot.com/2012/06/improve-coding-standards-using-coding.html' title='Improve Coding standards using Coding Kata'/><author><name>ThoughtMakers</name><uri>http://www.blogger.com/profile/17288143280260173062</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7160536626427299882.post-4815723415691278545</id><published>2012-06-02T09:47:00.000-07:00</published><updated>2012-06-17T23:10:01.672-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Data Structures"/><category scheme="http://www.blogger.com/atom/ns#" term="Graphs"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Trees"/><title type='text'>Data Structures with Java</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;


Data Structures with Java&lt;/h2&gt;
&lt;div&gt;
Today, I tried exploring the world of data structures using Java; it&#39;s time complexity, JVM&#39;s behavior when it comes to core dumps (as against c++). I found a very interesting part. I found that though there is no complexity of use of pointers in Java, it is very advantageous to use pointers while implementing non-linear data structures like Trees and Graphs.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
So, here&#39;s the question - How do I use simple, powerful language like Java but yet get the advantages of C++&#39;s time optimization capabilities? One approach towards this is to use the Java&#39;s Native API. Though this still has overheads of two stack calls (One to load the library and the other to call the native function), I feel this approach is far better than actually implementing the data structure algorithm in Java.&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtmakers.blogspot.com/feeds/4815723415691278545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thoughtmakers.blogspot.com/2012/06/data-structures-with-java-today-i-tried.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7160536626427299882/posts/default/4815723415691278545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7160536626427299882/posts/default/4815723415691278545'/><link rel='alternate' type='text/html' href='http://thoughtmakers.blogspot.com/2012/06/data-structures-with-java-today-i-tried.html' title='Data Structures with Java'/><author><name>ThoughtMakers</name><uri>http://www.blogger.com/profile/17288143280260173062</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>