<?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-7085579632481333717</id><updated>2024-09-13T00:45:40.677-07:00</updated><category term="Development tool"/><category term="Java"/><category term="Clear Case"/><category term="Flex"/><category term="JVM"/><category term="Linux"/><category term="Soft links"/><category term="TCP repair"/><category term="Telecom"/><category term="Thread"/><category term="Voice"/><category term="Weblogic"/><category term="failure"/><category term="hyerpjaxb"/><category term="jaxb persistence"/><category term="maven build"/><category term="unix"/><category term="unlocker"/><category term="unresolved variables"/><category term="user impersonation"/><title type='text'>My Tech Logs...</title><subtitle type='html'>while(true){ coding... }</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sundarrajanm.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085579632481333717/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://sundarrajanm.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Sundar</name><uri>http://www.blogger.com/profile/17560998208413749840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfTkFSe5eYWRaGoMxfh9ttmiAsWFtzunzY7zekE5slTQFsDJODA0ZGP4jT-P9pf2sJnUECncL6E1K2A2JpHkfbSnraNECZaX_1Zne2ZivTGcr5NVlayIkeTOVaxZ2UTw/s220/Me.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>17</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7085579632481333717.post-3598667580255030531</id><published>2014-05-17T22:30:00.000-07:00</published><updated>2014-05-17T22:30:00.899-07:00</updated><title type='text'>Unit Testing - Cheat Sheet</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
This page has been written just to summarize the key statements around unit testing learnt from the book - Effective Unit Testing - a guide for Java developers.&lt;br /&gt;
&lt;br /&gt;
It should act as a refresher (at least for me) whenever the page is skimmed through.&lt;br /&gt;
&lt;br /&gt;
Tests help us,&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;catch mistakes&lt;/li&gt;
&lt;li&gt;shape our design to actual use&lt;/li&gt;
&lt;li&gt;avoid gold-plating by being explicit about what the required behavior is.&lt;/li&gt;
&lt;/ul&gt;
The biggest value of writing a test lies not in the resulting test case but what we learning from writing it. &lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://sundarrajanm.blogspot.com/feeds/3598667580255030531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sundarrajanm.blogspot.com/2014/05/unit-testing-cheat-sheet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085579632481333717/posts/default/3598667580255030531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085579632481333717/posts/default/3598667580255030531'/><link rel='alternate' type='text/html' href='http://sundarrajanm.blogspot.com/2014/05/unit-testing-cheat-sheet.html' title='Unit Testing - Cheat Sheet'/><author><name>Sundar</name><uri>http://www.blogger.com/profile/17560998208413749840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfTkFSe5eYWRaGoMxfh9ttmiAsWFtzunzY7zekE5slTQFsDJODA0ZGP4jT-P9pf2sJnUECncL6E1K2A2JpHkfbSnraNECZaX_1Zne2ZivTGcr5NVlayIkeTOVaxZ2UTw/s220/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085579632481333717.post-7428547443665258364</id><published>2014-05-11T02:57:00.001-07:00</published><updated>2014-05-11T02:57:25.667-07:00</updated><title type='text'>Clean Code - Cheat sheet</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Pretty impressed after going through the book - &lt;i&gt;&lt;b&gt;&quot;Clean code: A handbook of Agile Software Craftsmanship&quot;&lt;/b&gt;&lt;/i&gt;. Thought of jotting down some of the key points, just so that it helps myself to revive the tips often.&lt;br /&gt;
&lt;br /&gt;
Meaningful names for variables&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Use intention revealing names.&lt;/li&gt;
&lt;li&gt;Avoid magic numbers (constants) and disinformation (misleading names).&lt;/li&gt;
&lt;li&gt;Make meaning distinctions (do not use klass because class cannot be used).&lt;/li&gt;
&lt;li&gt;Use pronounceable names, not short-cuts (dmy - date month year).&lt;/li&gt;
&lt;li&gt;Use searching unique names. Do not use single letter variable names that is hard to search uniquely.&lt;/li&gt;
&lt;li&gt;Don&#39;t use member prefixes like m_ or s_ as modern editors are good enough to differentiate them with coloring and formatings.&lt;/li&gt;
&lt;li&gt;Class names should be nouns and Method names should be verbs.&lt;/li&gt;
&lt;/ol&gt;
&amp;nbsp;Functions:&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Be small. Break it down as small as possible, may be 2 or 3 or 4 lines.&lt;/li&gt;
&lt;li&gt;Should do just one thing and do it really well.&lt;/li&gt;
&lt;li&gt;One level of abstraction per function.&lt;/li&gt;
&lt;li&gt;The StepDown rule.&lt;/li&gt;
&lt;li&gt;Number of arguments should not be more than 3. Zero arguments are the best. More arguments should ideally be extracted into a object with properties.&lt;/li&gt;
&lt;li&gt;Avoid boolean arguments, as they are going to make the implementation bigger.&lt;/li&gt;
&lt;li&gt;Prefer exceptions to return codes.&lt;/li&gt;
&lt;li&gt;Error handing itself is one thing. &lt;/li&gt;
&lt;li&gt;Don&#39;t repeat yourself.&lt;/li&gt;
&lt;/ol&gt;
Comments:&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Don&#39;t comment bad code, rather rewrite it.&lt;/li&gt;
&lt;li&gt;If you comment, accept that you failed to express yourself in the code.&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Why comments are bad - they become stale and old and finally lie about the code that is around.&lt;/li&gt;
&lt;li&gt;Required or relevant comments are those - Legal comments, informative, explanation of intent, Warnings, clarifications, Amplifications, TODOs and Javadocs&lt;/li&gt;
&lt;li&gt;Bad comments - mumbling, redundant, misleading, mandated, journel comments, noisy comments, last but not least - commented out code.&lt;/li&gt;
&lt;/ol&gt;
Formatting:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://sundarrajanm.blogspot.com/feeds/7428547443665258364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sundarrajanm.blogspot.com/2014/05/clean-code-cheat-sheet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085579632481333717/posts/default/7428547443665258364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085579632481333717/posts/default/7428547443665258364'/><link rel='alternate' type='text/html' href='http://sundarrajanm.blogspot.com/2014/05/clean-code-cheat-sheet.html' title='Clean Code - Cheat sheet'/><author><name>Sundar</name><uri>http://www.blogger.com/profile/17560998208413749840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfTkFSe5eYWRaGoMxfh9ttmiAsWFtzunzY7zekE5slTQFsDJODA0ZGP4jT-P9pf2sJnUECncL6E1K2A2JpHkfbSnraNECZaX_1Zne2ZivTGcr5NVlayIkeTOVaxZ2UTw/s220/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085579632481333717.post-5214470599112857815</id><published>2013-05-21T00:49:00.001-07:00</published><updated>2013-05-21T00:50:30.716-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Clear Case"/><title type='text'>Clear Case History Browser Blank Issue</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
This has been an intermittent issue in Windows 2003 Clear Case Source Control Version: 7.1.1.0.&lt;br /&gt;
&lt;br /&gt;
Of late I have been using clear case and ended up into this issue. Figured out the solution through google search. So, thought of blogging it for my own reference later.&lt;br /&gt;
&lt;br /&gt;
Original post is here: &lt;a href=&quot;http://www-01.ibm.com/support/docview.wss?uid=swg21123280&quot;&gt;http://www-01.ibm.com/support/docview.wss?uid=swg21123280&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Pasting the solution below which works for me always whenever I run into this issue:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;wordwrap&quot;&gt;
&lt;b&gt;Note:&lt;/b&gt; The 
following directions require you to edit the registry using the Windows 
Registry Editor. However, editing the Windows Registry incorrectly can 
cause serious problems that may require you to reinstall your operating 
system. Use Registry Editor at your own risk. Before proceeding review 
the Microsoft KB article, &lt;a href=&quot;http://support.microsoft.com/kb/256986/EN-US/&quot;&gt;KB256986&lt;/a&gt; - Description of the Microsoft Windows Registry.&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Open registry editor (&lt;b&gt;Start &amp;gt; Run&lt;/b&gt; and type &lt;i&gt;regedt32&lt;/i&gt;).&lt;br /&gt; &lt;br /&gt; &lt;/li&gt;
&lt;li&gt;Navigate to the registry key &lt;tt&gt;HKEY_CURRENT_USER\Software\Atria\ClearCase\CurrentVersion&lt;br /&gt; &lt;br /&gt; &lt;/tt&gt; &lt;/li&gt;
&lt;li&gt;Delete the key &lt;tt&gt;Rational ClearCase History Browser&lt;br /&gt; &lt;br /&gt; &lt;/tt&gt; &lt;/li&gt;
&lt;li&gt;Close Registry editor.&lt;br /&gt; &lt;br /&gt; &lt;/li&gt;
&lt;li&gt;Open History Browser and check the display.&lt;br /&gt; &lt;br /&gt; &lt;b&gt;Note:&lt;/b&gt; When the above registry key is deleted &lt;tt&gt;clearhistory.exe&lt;/tt&gt; rebuilds the registry key with its original defaults.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;ibm-domino-rtf&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;ibm-domino-rtf&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;ibm-domino-rtf&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://sundarrajanm.blogspot.com/feeds/5214470599112857815/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sundarrajanm.blogspot.com/2013/05/clear-case-history-browser-blank-issue.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085579632481333717/posts/default/5214470599112857815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085579632481333717/posts/default/5214470599112857815'/><link rel='alternate' type='text/html' href='http://sundarrajanm.blogspot.com/2013/05/clear-case-history-browser-blank-issue.html' title='Clear Case History Browser Blank Issue'/><author><name>Sundar</name><uri>http://www.blogger.com/profile/17560998208413749840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfTkFSe5eYWRaGoMxfh9ttmiAsWFtzunzY7zekE5slTQFsDJODA0ZGP4jT-P9pf2sJnUECncL6E1K2A2JpHkfbSnraNECZaX_1Zne2ZivTGcr5NVlayIkeTOVaxZ2UTw/s220/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085579632481333717.post-6738389632002641051</id><published>2012-06-03T01:43:00.000-07:00</published><updated>2013-09-19T05:34:38.662-07:00</updated><title type='text'>Using sipP 3.2 and Cygwin on Windows 2003</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;b&gt;For the not-aware:&lt;/b&gt; sipP is popular SIP traffic generation tool and Cygwin is a linux emulation software on Windows.&lt;b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Downloads:&amp;nbsp; &lt;/b&gt;&lt;a href=&quot;http://sourceforge.net/projects/sipp/files/sipp/3.2/sipp-win32-3.2-setup.exe/download&quot; target=&quot;_blank&quot;&gt;sipP&lt;/a&gt;, &lt;a href=&quot;http://cygwin.com/setup.exe&quot; target=&quot;_blank&quot;&gt;Cygwin&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Recently, I wanted to generate a controlled SIP traffic and so tried this combination. However, noted that by default Sipp (I used version 3.2) doesn&#39;t work properly with Cygwin latest release. The reason is obvious that the binaries and dlls of sipP 3.2 are not compatible with cgywin internals and so it fails. &lt;br /&gt;
&lt;br /&gt;
The good news is Sipp comes along with all the required cygwin binaries/dlls that it needs and so one simple workaround was to just copy the DLLs from sipp root folder to Cgywin bin folder. There were 8 DLLs that need to be copied in this manner. And then Yes, it started to work like a charm!&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://sundarrajanm.blogspot.com/feeds/6738389632002641051/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sundarrajanm.blogspot.com/2012/06/using-sipp-32-and-cygwin-on-windows.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085579632481333717/posts/default/6738389632002641051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085579632481333717/posts/default/6738389632002641051'/><link rel='alternate' type='text/html' href='http://sundarrajanm.blogspot.com/2012/06/using-sipp-32-and-cygwin-on-windows.html' title='Using sipP 3.2 and Cygwin on Windows 2003'/><author><name>Sundar</name><uri>http://www.blogger.com/profile/17560998208413749840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfTkFSe5eYWRaGoMxfh9ttmiAsWFtzunzY7zekE5slTQFsDJODA0ZGP4jT-P9pf2sJnUECncL6E1K2A2JpHkfbSnraNECZaX_1Zne2ZivTGcr5NVlayIkeTOVaxZ2UTw/s220/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085579632481333717.post-3080577893082712861</id><published>2012-04-19T10:51:00.001-07:00</published><updated>2012-04-19T10:51:09.667-07:00</updated><title type='text'>Great Indian Developer Summit - 2012, at IISc, Bangalore</title><content type='html'>&lt;div class=&#39;posterous_autopost&#39;&gt;&lt;p&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;strong&gt;Great Indian Developer Summit - 2012, at IISc, Bangalore&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Wow. What an experience today, first of its kind for me at IISc. Felt really proud of seeing a lot of pratical real brains in action at the dias; Practitioners from google, thoughworks, redhat, GrapeCity, GS, IBM etc and much more...&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;From checking in to the auditorium at 8:15am till checking out at 7pm, it was a packed up schedule. Had a good chance to attend the sessions from top notch Java evangelists from the Software Devleopment Industry. Though every session was special in its own style, I personally felt that the most welcomed and impecable sessions were unianimously from Dr. Venkat Subramaniam, founder of Agile Developer, Inc - Excellent Speech!&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Be it - Java 7, Lambda expressions, Concurrency with Clozure or the Scala language - he was the best! I really had a bunch of take aways from this summit, which will surely make an impact in the way we have fun with programming.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Looking forward to attend/listen to more sessions from @venkat_s.&lt;/strong&gt;&lt;/p&gt;  &lt;p /&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sundarrajanm.blogspot.com/feeds/3080577893082712861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sundarrajanm.blogspot.com/2012/04/great-indian-developer-summit-2012-at.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085579632481333717/posts/default/3080577893082712861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085579632481333717/posts/default/3080577893082712861'/><link rel='alternate' type='text/html' href='http://sundarrajanm.blogspot.com/2012/04/great-indian-developer-summit-2012-at.html' title='Great Indian Developer Summit - 2012, at IISc, Bangalore'/><author><name>Sundar</name><uri>http://www.blogger.com/profile/17560998208413749840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfTkFSe5eYWRaGoMxfh9ttmiAsWFtzunzY7zekE5slTQFsDJODA0ZGP4jT-P9pf2sJnUECncL6E1K2A2JpHkfbSnraNECZaX_1Zne2ZivTGcr5NVlayIkeTOVaxZ2UTw/s220/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085579632481333717.post-4680337773567026370</id><published>2011-06-28T10:58:00.001-07:00</published><updated>2011-06-28T11:02:47.705-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Thread"/><title type='text'>Advanced Java Multi-threading - Gotchas around thread-safety!</title><content type='html'>&lt;div class=&quot;posterous_autopost&quot;&gt;Went through the initial pages from the book &lt;b&gt;Java Concurreny in Practice -&lt;/b&gt; &lt;b&gt;Brian Goetz &lt;/b&gt;and found it awesome. Thought of sharing some key learnings...&lt;p&gt;&lt;b&gt;1. A Java Class is said to be threadsafe&lt;/b&gt;, if it behaves the same way in both single and multi threaded environment. &lt;/p&gt;&lt;p&gt; &lt;b&gt;2. A Java Class should always be designed by keeping &quot;multi-threaded issues&quot; in  mind,&lt;/b&gt; as these days, the Java Class hardly work in Single threaded environment. When a class is being called by a framework, it is most likely invoked by a thread. A typical example is a TimerTask invoked by Timer.&lt;/p&gt;&lt;p&gt; &lt;b&gt;3. Stateless objects are always thread safe.&lt;/b&gt; By stateless objects we mean those objects of classes which do not have any instance variables defined to hold the state of the object. The objects of these classes are always thread-safe, because there is no data to share between threads.&lt;/p&gt;&lt;p&gt; &lt;b&gt;4. What are class invariants?&lt;/b&gt;&lt;br /&gt;The states of objects that have some relationship to each other all the time. Say, for example, if there are two instance variables inside an object which are related like dateOfBirth and Age, then whenever dateOfBirth gets updated, the age should be updated atomically. The class invariants here are dateOfBirth and age and these must always be protected within a critical section.&lt;/p&gt;&lt;p&gt; &lt;b&gt;5. What is reentrancy? &lt;/b&gt;&lt;br /&gt;The intrinsic locks (the object locks) is acquired on a per-thread basis, as opposed to, a per-invocation basis in posix threads. The default locking behavior of pthreads (posix threads) mutexes are on per-invocation basis. The JVM associates a counter with the thread and whenever the thread which already acquired the lock tries to grab the same lock again, the JVM allows the thread to proceed further, after incrementing the associated counter. This is defined as reentrant.&lt;/p&gt;&lt;p&gt; &lt;b&gt;6. Significance of volatile variables.&lt;/b&gt;&lt;br /&gt;In multi-processor/multi-core CPU hardware, there are optimizations to temporarily store data in CPU cache or registers for a while, before updating the in-memory location. For a thread to always make sure that, it reads the most recent value of a shared data, mark it as volatile. So that, the underlying optimizations on locality of references are turned off. &lt;/p&gt;&lt;p&gt; &lt;b&gt;7. Immutable objects are always thread safe. &lt;/b&gt;The objects whose state cannot be changed after construction are said to be immutable. When a state cannot be modified, it is always thread-safe.&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sundarrajanm.blogspot.com/feeds/4680337773567026370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sundarrajanm.blogspot.com/2011/06/advanced-java-multi-threading-gotchas.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085579632481333717/posts/default/4680337773567026370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085579632481333717/posts/default/4680337773567026370'/><link rel='alternate' type='text/html' href='http://sundarrajanm.blogspot.com/2011/06/advanced-java-multi-threading-gotchas.html' title='Advanced Java Multi-threading - Gotchas around thread-safety!'/><author><name>Sundar</name><uri>http://www.blogger.com/profile/17560998208413749840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfTkFSe5eYWRaGoMxfh9ttmiAsWFtzunzY7zekE5slTQFsDJODA0ZGP4jT-P9pf2sJnUECncL6E1K2A2JpHkfbSnraNECZaX_1Zne2ZivTGcr5NVlayIkeTOVaxZ2UTw/s220/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085579632481333717.post-8055573026591735845</id><published>2011-06-21T08:14:00.001-07:00</published><updated>2011-06-28T11:03:32.322-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Telecom"/><category scheme="http://www.blogger.com/atom/ns#" term="Voice"/><title type='text'>Fundamentals of Telecom and Voice - Made easy</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot; class=&quot;posterous_autopost&quot;&gt;Have started to work on a new domain - &lt;b&gt;&quot;The Voice Technology&quot;&lt;/b&gt; and eventually started logging all the relevant technical stuffs that are found useful.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;1. What is frequency?&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;According to International System of Units, the frequency is measured in hertz and is defined as the number of cycles per second of a periodic phenomenon.&lt;/p&gt;&lt;p&gt;&lt;b&gt;2. What is an Audio Frequency (Audible frequency)?&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;An audible frequency is a periodic vibration that is audible to average human ears. It is always between 20hz and 20KHz.&lt;/p&gt;&lt;p&gt;&lt;b&gt;3. What is (voice) signal Processing?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;When a system or a process is operating or analysing the (voice) signals in either discrete or continuous time to perform useful operations on those signals, it can be called as (voice) signal processing.&lt;/p&gt;&lt;p&gt;&lt;b&gt;4. What is Bandwidth?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Bandwidth has a significance difference in definition and understanding in analog and digital world. Let&#39;s define as below.&lt;/p&gt;&lt;p&gt;&lt;b&gt;5. What is Analog Bandwidth?&lt;/b&gt;&lt;/p&gt;&lt;p&gt; It is a measure of the range of signal frequencies that a system can process or a transmission line can carry. It is measured in hertz.&lt;/p&gt;&lt;p&gt;&lt;b&gt;6. What is Digital Bandwidth?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;It is the rate of data (binary digits) transfer or throughput of the communication endpoint, measured in bits per second.&lt;/p&gt;&lt;p&gt; &lt;b&gt;7. What is a Voice signal &amp;amp; the significance of Nyquist Rate in voice processing?&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;In physical forms, the voice is defined as vibration of air on the continuous-time plane. This signal can be sampled into discrete-time plane for processing or storing in digitized form. The digitized signal can be &quot;fully&quot; converted back to continuous-time plane for signal reproduction as &quot;original&quot;. This is possible only when the sampling rate exceeds twice the maximum frequency in the &quot;original&quot; signal on continuous-time plane. This signal is said to be a band limiting signal and the associated sampling rate is defined as Nyquist Rate.&lt;/p&gt;&lt;p&gt; &lt;b&gt;8. What is a voice channel?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;The analog bandwidth of a Voice signal is roughly 4khz, and those used in telephony systems varies between 300hz and 3300hz. So, when we convert these signals into the discrete-time plane, we should ideally sample them at 8khz (as per the Nyquist Rate). This means every sample is taken at 125 micro secs (1/8000) in the continuous-time plane. So, if 256 level is used to represent a sample, i.e. 8 bits, then 8000 samples per second will result in transmitting 64000 bits per second. A voice channel on the telecommunications domain requires a channel bandwidth of 64kbps.&lt;/p&gt;&lt;p&gt; &lt;b&gt;9. What is multiplexing?&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;It is a concept of using a single/same carrier for multiple (voice) channels. In the analog world, multiplexing is performed by dividing the channel based on frequencies (FDM). On the other hand, multiplexing in the digitized world is performed by divided the carrier into multiple channels by time (TDM) .&lt;/p&gt;&lt;p&gt; &lt;b&gt;10. What is a T1 carrier line?&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;As an example, for a 1.5Mbps telephone carrier, 24 voice channels (1500/64 = 24) can be multiplexed. This is nothing but a classical T1 line. A typical T1 frame has 193 bits (24 channels * 8bit) / 125uSec. A TDM network, in general, will be implemented with transmission technologies like X.25, Frame Relay, IDN, ISDN and SONET.&lt;/p&gt;&lt;p&gt; Thanks for reading &lt;a href=&quot;http://sundarrajanm.blogspot.com/2011/06/fundamentals-of-telecom-and-voice-made.html&quot;&gt;Part 1&lt;/a&gt; &lt;/p&gt;&lt;div class=&quot;p_embed p_image_embed&quot;&gt; &lt;img alt=&quot;330&quot; src=&quot;http://posterous.com/getfile/files.posterous.com/msundarrajan/wflHXDn8i6PkY8PTIwdVcSXCUmqQufDqELYRB9K4rVPlszHxhoRByeN7tRuL/330.gif&quot; height=&quot;12&quot; width=&quot;12&quot; /&gt; &lt;/div&gt; .&lt;br /&gt;The subsequent posts will have more in-detail information about various aspects of the voice technology... Thank you!&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sundarrajanm.blogspot.com/feeds/8055573026591735845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sundarrajanm.blogspot.com/2011/06/fundamentals-of-telecom-and-voice-made.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085579632481333717/posts/default/8055573026591735845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085579632481333717/posts/default/8055573026591735845'/><link rel='alternate' type='text/html' href='http://sundarrajanm.blogspot.com/2011/06/fundamentals-of-telecom-and-voice-made.html' title='Fundamentals of Telecom and Voice - Made easy'/><author><name>Sundar</name><uri>http://www.blogger.com/profile/17560998208413749840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfTkFSe5eYWRaGoMxfh9ttmiAsWFtzunzY7zekE5slTQFsDJODA0ZGP4jT-P9pf2sJnUECncL6E1K2A2JpHkfbSnraNECZaX_1Zne2ZivTGcr5NVlayIkeTOVaxZ2UTw/s220/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085579632481333717.post-5790537185769936934</id><published>2011-06-10T03:24:00.000-07:00</published><updated>2011-06-10T03:39:23.718-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Development tool"/><category scheme="http://www.blogger.com/atom/ns#" term="Weblogic"/><title type='text'>Low disk space in windows (having weblogic server)...</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;Of late, I found that - suddenly my windows operating system started warning me about the low disk space. I had atleast 50Gig space free for sure. I had no clue of what is clogging my hard drive and the only clue is it&#39;s a development box. When I was badly in need for a tool, which can walk through my hard drive and give me a easy report of what is occupying my disc ,the most space, I stumbled upon this open source tool - &lt;a href=&quot;http://windirstat.info/&quot;&gt;WinDirStat&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The tool gives exactly what I needed. It runs over the hard drive and computes a clear report of which file/folder is occupying the most disc space. Check the below snapshot.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi07elp5wXj66u2RvuwfsJShOrHBMBLIW0NcnHU6la4Py63X_I9-1dMAXWUE1_mqTEYBXqTS37IZenRqtKrMGVHCR7WJTxmLSiMCLGDKo6k0fDhK_UBLNA2CzSkDV-Z3XSbLXm-L9a5jFg/s1600/windirstat.jpg&quot;&gt;&lt;img style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 242px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi07elp5wXj66u2RvuwfsJShOrHBMBLIW0NcnHU6la4Py63X_I9-1dMAXWUE1_mqTEYBXqTS37IZenRqtKrMGVHCR7WJTxmLSiMCLGDKo6k0fDhK_UBLNA2CzSkDV-Z3XSbLXm-L9a5jFg/s320/windirstat.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5616537679642579218&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Problem on my PC:&lt;/span&gt; The data source configured on my weblogic server was pointing to a Oracle DB server which is heavily loaded and not responding. The server log on which the data source was targeted started growing slowly due to this issue&#39;s stack trace and bloated so high - 50Gig in a matter of 2 days (very surprising) . After bringing down the server and pruning the log files, the issue got resolved.&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sundarrajanm.blogspot.com/feeds/5790537185769936934/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sundarrajanm.blogspot.com/2011/06/low-disk-space-in-windows-having.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085579632481333717/posts/default/5790537185769936934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085579632481333717/posts/default/5790537185769936934'/><link rel='alternate' type='text/html' href='http://sundarrajanm.blogspot.com/2011/06/low-disk-space-in-windows-having.html' title='Low disk space in windows (having weblogic server)...'/><author><name>Sundar</name><uri>http://www.blogger.com/profile/17560998208413749840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfTkFSe5eYWRaGoMxfh9ttmiAsWFtzunzY7zekE5slTQFsDJODA0ZGP4jT-P9pf2sJnUECncL6E1K2A2JpHkfbSnraNECZaX_1Zne2ZivTGcr5NVlayIkeTOVaxZ2UTw/s220/Me.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi07elp5wXj66u2RvuwfsJShOrHBMBLIW0NcnHU6la4Py63X_I9-1dMAXWUE1_mqTEYBXqTS37IZenRqtKrMGVHCR7WJTxmLSiMCLGDKo6k0fDhK_UBLNA2CzSkDV-Z3XSbLXm-L9a5jFg/s72-c/windirstat.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085579632481333717.post-196808647362906549</id><published>2011-06-09T05:22:00.000-07:00</published><updated>2011-06-09T06:37:23.567-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="JVM"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Soft links"/><title type='text'>Issue with linux softlink which is part of a running JVM&#39;s classpath...</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;We observed a strange problem with Weblogic JVM in 10.3.2 version:&lt;br /&gt;&lt;br /&gt;1) We&#39;re adding the following as classpath during the cluster/server startup. Please note that, &quot;config&quot; below is a symbolic link and this gets into the Weblogic JVM&#39;s classpath.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;/mydrive/myfolder/myprojects/project/config&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;    config -&amp;gt; project-1.1/config &lt;/code&gt;&lt;br /&gt;&lt;br /&gt;2) The application is deployed and it works fine.&lt;br /&gt;&lt;br /&gt;3) During the next release of the application, the &quot;config&quot; symbolic link used in the JVM classpath has been changed as below and the old project folder was removed. &lt;span style=&quot;color: rgb(255, 0, 0); font-weight: bold;&quot;&gt;(THIS IS THE ISSUE)&lt;/span&gt;.&lt;br /&gt;&lt;code&gt;    config -&amp;gt; project-1.2/config  &lt;/code&gt;&lt;br /&gt;&lt;br /&gt;4) Now the newly deployed application is trying to come up to ACTIVE state. As part of initializing the app, it reads a properties file from the classpath (which is supposed to be referenced through the config soft link in the classpath).&lt;br /&gt;&lt;br /&gt;5) At this stage, the Weblogic JVM is still holding the softlink reference to the previous deployment folder which NO MORE EXISTS. I verified this with a sample program and have described about it further below.&lt;br /&gt;&lt;br /&gt;6) As a result, the application throws FileNotFoundException.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 102, 255); font-weight: bold;&quot;&gt;More experiments:&lt;/span&gt;&lt;br /&gt;I tried a simple experiment to reproduce this issue with a standalone JVM...&lt;br /&gt;&lt;br /&gt;1) Create a folder: /mydrive/myfolder/myprojects/project.&lt;br /&gt;2) Create two subfolders: project1 and project2.&lt;br /&gt;3) Each folder must have config directory within itself and config folder should contain test.props with their own contents.&lt;br /&gt;4) Create a config softlink at the base folder (/mydrive/myfolder/myprojects/project) to either project1/config or project2/config.&lt;br /&gt;5) Create a Java file which will try to read the property file from the classpath (&quot;test.props&quot;) and wait for a user input. And after user input is read, it should again read the same properties file.&lt;br /&gt;6) After successfully compiling the program, run the program like: java -cp &quot;/mydrive/myfolder/myprojects/project/config:.&quot; JavaFile&lt;br /&gt;7) You will see the program reads the correct property file as pointed out through the softlink and waits for user input.&lt;br /&gt;8) Now, on another terminal switch the config softlink to point to the other project&#39;s config folder, while the JVM is running on another terminal waiting for user input.&lt;br /&gt;9) If you give &#39;Enter&#39; on the waiting java process, it will READ again the test.props file AFRESH. But this time you can SEE IT STILL READS THE SAME OLD PROPERTY FILE AND NOT THE NEW ONE POINTED BY SOFTLINK.&lt;br /&gt;10) If you had deleted the old projectX folder, instead of just changing the softlink as above, you will get null for the resource - test.props, which encounters just the same scenario as we observed in our application on Weblogic.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold; color: rgb(0, 153, 0);&quot;&gt;Bottom Line:&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic; color: rgb(102, 255, 255);&quot;&gt;Never change a softlink that is part of a running JVM&#39;s classpath. This includes not just the soft link (versioned or non-versioned), but also the softlink contents. Instead add the PARENT FOLDER of the softlink in the JVM classpath, so that any changes to the softlink or contents of the softlink are decoupled from the running JVM.&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sundarrajanm.blogspot.com/feeds/196808647362906549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sundarrajanm.blogspot.com/2011/06/issue-with-linux-softlink-which-is-part.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085579632481333717/posts/default/196808647362906549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085579632481333717/posts/default/196808647362906549'/><link rel='alternate' type='text/html' href='http://sundarrajanm.blogspot.com/2011/06/issue-with-linux-softlink-which-is-part.html' title='Issue with linux softlink which is part of a running JVM&#39;s classpath...'/><author><name>Sundar</name><uri>http://www.blogger.com/profile/17560998208413749840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfTkFSe5eYWRaGoMxfh9ttmiAsWFtzunzY7zekE5slTQFsDJODA0ZGP4jT-P9pf2sJnUECncL6E1K2A2JpHkfbSnraNECZaX_1Zne2ZivTGcr5NVlayIkeTOVaxZ2UTw/s220/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085579632481333717.post-6350286217776218775</id><published>2011-06-09T04:44:00.000-07:00</published><updated>2011-06-09T05:22:00.580-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Flex"/><title type='text'>Difference in compiled binary between Flex Mojo Build &amp; Eclipse Build</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Problem:&lt;/span&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;I&#39;ve been working on a Flex Project for sometime and came across this issue after maveniz&#39;ing our project with Flex-Mojos. The issue was, for some reasons, the UI misbehaved with maven build - the Panels were not laid out as intended and the UI seems to have broken in the maven build. However, the same code works perfectly fine when built through Eclipse.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Analysis and Solution:&lt;/span&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;We first verified whether the SWC dependencies used in both the build methods are just same or not. Once this step was through, as a next step, we wanted to make sure whether the compiler arguments/options are the same. But surprisingly they were not the same.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;The &lt;a href=&quot;http://repository.sonatype.org/content/sites/flexmojos-site/4.0-alpha-3/compile-swf-mojo.html&quot;&gt;sonatype flexmojo-site&lt;/a&gt; gave conclusive documentation about adding the various possible maven flex mojo compiler configurations.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Our eclipse flex compiler configuration looks like below:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhu5TFowVvR37cHR6JKzFqbWau_QLXIULqDXwiOlcnc3E1Sqa3UlePVfJ67qRJXYoGS27gti1L3daXGKq3r5H9xtv3v14dEbyFCoaRIEoBRsDIRjWXMuLJdbgk3c0ghMkt598tjA6Sjuf0/s1600/snap.JPG&quot;&gt;&lt;img style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 218px; height: 320px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhu5TFowVvR37cHR6JKzFqbWau_QLXIULqDXwiOlcnc3E1Sqa3UlePVfJ67qRJXYoGS27gti1L3daXGKq3r5H9xtv3v14dEbyFCoaRIEoBRsDIRjWXMuLJdbgk3c0ghMkt598tjA6Sjuf0/s320/snap.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5616188146940413778&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;We later found that adding the following under &lt;code&gt;&amp;lt;configuration&amp;gt;&lt;/code&gt;&lt;configuration&gt; &lt;configuration&gt; section made our eclipse configs and maven configs looking same and that has resolved the issue.&lt;/configuration&gt;&lt;/configuration&gt;&lt;br /&gt;&lt;configuration&gt;&lt;/configuration&gt;&lt;/div&gt;&lt;configuration&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/configuration&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;configuration&gt;&lt;code&gt;                    &amp;lt;keepAllTypeSelectors&amp;gt;true&amp;lt;/keepAllTypeSelectors&lt;/code&gt;&lt;/configuration&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;configuration&gt;&lt;code&gt;                    &amp;lt;accessible&amp;gt;true&amp;lt;/accessible&amp;gt;&lt;/code&gt;&lt;/configuration&gt;&lt;br /&gt;&lt;configuration&gt;&lt;code&gt;                    &amp;lt;strict&amp;gt;true&amp;lt;/strict&amp;gt;&lt;/code&gt;&lt;/configuration&gt;&lt;br /&gt;&lt;configuration&gt;&lt;code&gt;&lt;/code&gt;&lt;/configuration&gt;&lt;/div&gt;&lt;configuration&gt;&lt;br /&gt;&lt;/configuration&gt;</content><link rel='replies' type='application/atom+xml' href='http://sundarrajanm.blogspot.com/feeds/6350286217776218775/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sundarrajanm.blogspot.com/2011/06/difference-in-compiled-binary-between.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085579632481333717/posts/default/6350286217776218775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085579632481333717/posts/default/6350286217776218775'/><link rel='alternate' type='text/html' href='http://sundarrajanm.blogspot.com/2011/06/difference-in-compiled-binary-between.html' title='Difference in compiled binary between Flex Mojo Build &amp; Eclipse Build'/><author><name>Sundar</name><uri>http://www.blogger.com/profile/17560998208413749840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfTkFSe5eYWRaGoMxfh9ttmiAsWFtzunzY7zekE5slTQFsDJODA0ZGP4jT-P9pf2sJnUECncL6E1K2A2JpHkfbSnraNECZaX_1Zne2ZivTGcr5NVlayIkeTOVaxZ2UTw/s220/Me.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhu5TFowVvR37cHR6JKzFqbWau_QLXIULqDXwiOlcnc3E1Sqa3UlePVfJ67qRJXYoGS27gti1L3daXGKq3r5H9xtv3v14dEbyFCoaRIEoBRsDIRjWXMuLJdbgk3c0ghMkt598tjA6Sjuf0/s72-c/snap.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085579632481333717.post-3729957525471525041</id><published>2011-06-08T04:02:00.000-07:00</published><updated>2011-06-08T04:17:17.064-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Development tool"/><category scheme="http://www.blogger.com/atom/ns#" term="unlocker"/><title type='text'>Unlocker 1.9.1 - FileHippo.com</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;I personally found the Unlocker tool very useful while performing the day-to-day software development/debugging activities...&lt;br /&gt;&lt;br /&gt;When we have multiple applications running in parallel and when we have to delete/rename a particular file, we often hit the famous windows error:&lt;br /&gt;&lt;br /&gt;&quot;It is being used by another person or a program.&lt;br /&gt;Close any programs that might be using the file and try again&quot; !!&lt;br /&gt;&lt;br /&gt;At times, we will not be able to figure the exact application that&#39;s having the handle to the file being modified. It&#39;s so frustrating that sometimes even after closing all the foreground applications/processes, we still get this error. The reason can be quite obvious that there is some process still running in the background with an open file handle to this file. In such scenarios, this tool comes very handy and as the icon of this tool describes, this will work like a magic wand. The moment we hit the error, the Unlocker freeware automatically catches the error and displays a meaning message and some interactive controls to take decisions. We can either unlock the handle through this tool or just ignore it as the situation demands...&lt;br /&gt;&lt;br /&gt;A must tool for developers working on Windows Operating System - &lt;a href=&quot;http://www.filehippo.com/download_unlocker/9641/&quot;&gt;Download Unlocker 1.9.1 - FileHippo.com&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sundarrajanm.blogspot.com/feeds/3729957525471525041/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sundarrajanm.blogspot.com/2011/06/unlocker-191-filehippocom.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085579632481333717/posts/default/3729957525471525041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085579632481333717/posts/default/3729957525471525041'/><link rel='alternate' type='text/html' href='http://sundarrajanm.blogspot.com/2011/06/unlocker-191-filehippocom.html' title='Unlocker 1.9.1 - FileHippo.com'/><author><name>Sundar</name><uri>http://www.blogger.com/profile/17560998208413749840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfTkFSe5eYWRaGoMxfh9ttmiAsWFtzunzY7zekE5slTQFsDJODA0ZGP4jT-P9pf2sJnUECncL6E1K2A2JpHkfbSnraNECZaX_1Zne2ZivTGcr5NVlayIkeTOVaxZ2UTw/s220/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085579632481333717.post-6824194746109234691</id><published>2011-06-08T01:56:00.001-07:00</published><updated>2011-06-08T04:18:22.076-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Development tool"/><title type='text'>tail -f for windows</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;Have often found people using TextPad, Notepad++ or EditPlus to view the running logs on Windows Platform. The approach lurks, as the application drives the page refresh in a user interactive manner. The user has to confirm everytime to reload the file when it gets updated.&lt;br /&gt;&lt;br /&gt;There is a project at sourceforge called &lt;a href=&quot;http://tailforwin32.sourceforge.net/&quot;&gt;Tail for Win32&lt;/a&gt; that comes to our rescue.&lt;br /&gt;&lt;br /&gt;It&#39;s a win32 application and has a nice UI to load the log files. It just mimics the unix command: &lt;code&gt;tail -f &amp;lt;logfile&amp;gt; &lt;/code&gt;[a non-user-interactive view of running logs]&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sundarrajanm.blogspot.com/feeds/6824194746109234691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sundarrajanm.blogspot.com/2011/06/tail-f-for-windows.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085579632481333717/posts/default/6824194746109234691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085579632481333717/posts/default/6824194746109234691'/><link rel='alternate' type='text/html' href='http://sundarrajanm.blogspot.com/2011/06/tail-f-for-windows.html' title='tail -f for windows'/><author><name>Sundar</name><uri>http://www.blogger.com/profile/17560998208413749840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfTkFSe5eYWRaGoMxfh9ttmiAsWFtzunzY7zekE5slTQFsDJODA0ZGP4jT-P9pf2sJnUECncL6E1K2A2JpHkfbSnraNECZaX_1Zne2ZivTGcr5NVlayIkeTOVaxZ2UTw/s220/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085579632481333717.post-5047997283274563410</id><published>2011-06-07T06:00:00.001-07:00</published><updated>2011-06-08T04:20:12.545-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="hyerpjaxb"/><category scheme="http://www.blogger.com/atom/ns#" term="jaxb persistence"/><title type='text'>Relational persistance with Jaxb objects!</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;Found this very interesting - HyperJaxb3...&lt;br /&gt;&lt;br /&gt;The typical scenario of usage is: &lt;span style=&quot;font-weight: bold;&quot;&gt;Schema-driven XML-object-relational database &lt;/span&gt;persistence using Java.&lt;br /&gt;&lt;br /&gt;With hyperjaxb3, once can just persist the data from XML document instances to Relational databases with very minimum and generic ORM coding in Java. In a nutshell, the XJB (XML-Java Binding) file contains the JAXB/ORM configuration and along with XSD file, hyperjaxb creates the respective Java files (during the build time) with necessary JPA annotations for ORM. So, for the programmers, now we already have a bunch of business domain objects that are JPA compliant ready with zero-coding. These can be readily used with some underlying JPA providers, to have an abstract persistence logic defined before hitting the actual RDBMS. More info available here at &lt;a href=&#39;http://confluence.highsource.org/display/HJ3/Home&#39;&gt;Hyperjaxb3 Confluence&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sundarrajanm.blogspot.com/feeds/5047997283274563410/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sundarrajanm.blogspot.com/2011/06/relational-persistance-with-jaxb.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085579632481333717/posts/default/5047997283274563410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085579632481333717/posts/default/5047997283274563410'/><link rel='alternate' type='text/html' href='http://sundarrajanm.blogspot.com/2011/06/relational-persistance-with-jaxb.html' title='Relational persistance with Jaxb objects!'/><author><name>Sundar</name><uri>http://www.blogger.com/profile/17560998208413749840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfTkFSe5eYWRaGoMxfh9ttmiAsWFtzunzY7zekE5slTQFsDJODA0ZGP4jT-P9pf2sJnUECncL6E1K2A2JpHkfbSnraNECZaX_1Zne2ZivTGcr5NVlayIkeTOVaxZ2UTw/s220/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085579632481333717.post-5731464849221537085</id><published>2011-06-06T07:11:00.000-07:00</published><updated>2011-06-06T07:33:36.716-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="failure"/><category scheme="http://www.blogger.com/atom/ns#" term="maven build"/><category scheme="http://www.blogger.com/atom/ns#" term="unresolved variables"/><title type='text'>Maven build failure due to unresolved custom variables</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;The traditional maven build runs as: &quot;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_0&quot;&gt;mvn&lt;/span&gt; clean install&quot;. However, With a multiple module project structure, there is caveat to this approach.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-weight: bold; color: rgb(204, 0, 0);&quot;&gt;Problem:&lt;/span&gt; The maven local &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_1&quot;&gt;respository&lt;/span&gt; contains the parent and child artifacts with their corresponding POM files. If the parent project used a custom variable say &quot;release.number&quot; which gets used in the child project, then &quot;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_2&quot;&gt;mvn&lt;/span&gt; install&quot; would flush the POM file &quot;as is&quot; into the local repository, along with the built artifact for both parent and child. Now, down the line if any new project adds a dependency to the child project&#39;s artifact, then at the build time of the new project, the &quot;release.number&quot; referenced in the child dependency (that was supposed to be initialized in the parent POM file) remains unresolved.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-weight: bold; color: rgb(0, 153, 0);&quot;&gt;Solution:&lt;/span&gt; This is because the POM file residing in the maven repository is only meant to dictate the group id, artifact id, version number etc, of the dependency and nothing  more that that. So, the variables&#39; value which is dynamic in nature will remain unresolved, as it is not participating in component build anymore. The solution (that I can think of for now) to this kind of problem is, to flush the &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_3&quot;&gt;artificat&lt;/span&gt; into the local repository in offline and not during the &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_4&quot;&gt;artificat&lt;/span&gt; build time. This can be done using the below &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_5&quot;&gt;mvn&lt;/span&gt; command:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_6&quot;&gt;mvn&lt;/span&gt; install:install-file -Dfile=your-artifact-1.0.jar \&lt;br /&gt;[-&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_7&quot;&gt;DpomFile&lt;/span&gt;=your-pom.&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_8&quot;&gt;xml&lt;/span&gt;] \&lt;br /&gt;[-&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_9&quot;&gt;Dsources&lt;/span&gt;=&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_10&quot;&gt;src&lt;/span&gt;.jar] \&lt;br /&gt;[-&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_11&quot;&gt;Djavadoc&lt;/span&gt;=&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_12&quot;&gt;apidocs&lt;/span&gt;.jar] \&lt;br /&gt;[-DgroupId=org.some.group] \&lt;br /&gt;[-&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_13&quot;&gt;DartifactId&lt;/span&gt;=your-artifact] \&lt;br /&gt;[-&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_14&quot;&gt;Dversion&lt;/span&gt;=1.0] \&lt;br /&gt;[-&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_15&quot;&gt;Dpackaging&lt;/span&gt;=jar] \&lt;br /&gt;[-&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_16&quot;&gt;Dclassifier&lt;/span&gt;=sources] \&lt;br /&gt;[-&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_17&quot;&gt;DgeneratePom&lt;/span&gt;=true] \&lt;br /&gt;[-&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_18&quot;&gt;DcreateChecksum&lt;/span&gt;=true]&lt;br /&gt;&lt;br /&gt;Courtesy: http://maven.apache.org/plugins/maven-install-plugin/usage.html&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;This command doesn&#39;t take any &lt;span class=&quot;blsp-spelling-corrected&quot; id=&quot;SPELLING_ERROR_19&quot;&gt;mandatory&lt;/span&gt; pom.&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_20&quot;&gt;xml&lt;/span&gt;. Using -&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_21&quot;&gt;DpomFile&lt;/span&gt; parameter is optional, so please ignore it to &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_22&quot;&gt;addresss&lt;/span&gt; this kind of a scenario. Rather, use -&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_23&quot;&gt;DgeneratePom&lt;/span&gt;=true parameter which creates a POM file automatically, based on the other supplied parameters to the command.&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sundarrajanm.blogspot.com/feeds/5731464849221537085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sundarrajanm.blogspot.com/2011/06/maven-build-failure-due-to-unresolved.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085579632481333717/posts/default/5731464849221537085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085579632481333717/posts/default/5731464849221537085'/><link rel='alternate' type='text/html' href='http://sundarrajanm.blogspot.com/2011/06/maven-build-failure-due-to-unresolved.html' title='Maven build failure due to unresolved custom variables'/><author><name>Sundar</name><uri>http://www.blogger.com/profile/17560998208413749840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfTkFSe5eYWRaGoMxfh9ttmiAsWFtzunzY7zekE5slTQFsDJODA0ZGP4jT-P9pf2sJnUECncL6E1K2A2JpHkfbSnraNECZaX_1Zne2ZivTGcr5NVlayIkeTOVaxZ2UTw/s220/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085579632481333717.post-6518514189037656924</id><published>2011-06-03T06:49:00.001-07:00</published><updated>2011-06-03T07:04:31.039-07:00</updated><title type='text'>Avoiding recurring POM downloads during maven build...</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;We might often end up in seeing the maven build trying to download poms for many of the dependencies, even if the dependent artifact is available in local repository.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;This is a side effect of improper installation of maven dependency artifact.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;We generally try to install a maven dependency manually as:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;mvn install:install-file -Dfile=your-artifact-1.0.jar \&lt;br /&gt;                       [-DpomFile=your-pom.xml] \&lt;br /&gt;                       [-Dsources=src.jar] \&lt;br /&gt;                       [-Djavadoc=apidocs.jar] \&lt;br /&gt;                       [-DgroupId=org.some.group] \&lt;br /&gt;                       [-DartifactId=your-artifact] \&lt;br /&gt;                       [-Dversion=1.0] \&lt;br /&gt;                       [-Dpackaging=jar] \&lt;br /&gt;                       [-Dclassifier=sources] \&lt;br /&gt;                       [-DgeneratePom=true] \&lt;br /&gt;                       [-DcreateChecksum=true]&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 153, 0);&quot;&gt;Courtesy: http://maven.apache.org/plugins/maven-install-plugin/usage.html&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Since many of the parameters are optional, we tend to avoid -DgeneratePom option. When -DgeneratePom is not given, the manual dependency installation into the local repository will not have an associated pom generated with it. This is the root cause of your build always trying to download certain poms and there by increasing your build time. The solution is just to add -DgeneratePom=true while doing maven dependency installation.&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sundarrajanm.blogspot.com/feeds/6518514189037656924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sundarrajanm.blogspot.com/2011/06/avoiding-recurring-pom-downlaods-during.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085579632481333717/posts/default/6518514189037656924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085579632481333717/posts/default/6518514189037656924'/><link rel='alternate' type='text/html' href='http://sundarrajanm.blogspot.com/2011/06/avoiding-recurring-pom-downlaods-during.html' title='Avoiding recurring POM downloads during maven build...'/><author><name>Sundar</name><uri>http://www.blogger.com/profile/17560998208413749840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfTkFSe5eYWRaGoMxfh9ttmiAsWFtzunzY7zekE5slTQFsDJODA0ZGP4jT-P9pf2sJnUECncL6E1K2A2JpHkfbSnraNECZaX_1Zne2ZivTGcr5NVlayIkeTOVaxZ2UTw/s220/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085579632481333717.post-4615593460254004386</id><published>2009-10-20T01:06:00.000-07:00</published><updated>2011-06-08T23:17:39.805-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="TCP repair"/><title type='text'>TCP/IP stack repair options for use with Windows XP with SP2.</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;In general, the TCP/IP stack and the windows sockets registry might get disturbed due to some trojan virus or malwares. Though you remove these malicious programs, you might still be left behind with the aftermath caused by these programs - unresolved. The following tip makes sure that the tcp stack and the windows networking registry are reverted back to their OEM defaults... Make sure to remove all the malwares before testing this tip...&lt;br /&gt;&lt;br /&gt;Windows -&amp;gt; Start -&amp;gt; Run -&amp;gt; CMD (to open a command prompt)&lt;br /&gt;&lt;br /&gt;Reset WINSOCK entries to installation defaults:&lt;br /&gt;&amp;gt; netsh winsock reset catalog&lt;br /&gt;&lt;br /&gt;Reset TCP/IP stack to installation defaults.&lt;br /&gt;&amp;gt; netsh int ip reset reset.log&lt;br /&gt;&lt;br /&gt;Reboot the machine and you are done!&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sundarrajanm.blogspot.com/feeds/4615593460254004386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sundarrajanm.blogspot.com/2009/10/tcpip-stack-repair-options-for-use-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085579632481333717/posts/default/4615593460254004386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085579632481333717/posts/default/4615593460254004386'/><link rel='alternate' type='text/html' href='http://sundarrajanm.blogspot.com/2009/10/tcpip-stack-repair-options-for-use-with.html' title='TCP/IP stack repair options for use with Windows XP with SP2.'/><author><name>Sundar</name><uri>http://www.blogger.com/profile/17560998208413749840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfTkFSe5eYWRaGoMxfh9ttmiAsWFtzunzY7zekE5slTQFsDJODA0ZGP4jT-P9pf2sJnUECncL6E1K2A2JpHkfbSnraNECZaX_1Zne2ZivTGcr5NVlayIkeTOVaxZ2UTw/s220/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085579632481333717.post-2780795883865476875</id><published>2009-10-17T06:32:00.000-07:00</published><updated>2011-06-08T23:18:26.636-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="unix"/><category scheme="http://www.blogger.com/atom/ns#" term="user impersonation"/><title type='text'>A sample user impersonation on unix using setuid</title><content type='html'>&lt;code&gt;/* include required header files */&lt;br /&gt;&lt;br /&gt;&lt;stdio.h&gt;&lt;stdlib.h&gt;&lt;sys.h&gt;&lt;unistd.h&gt;int main()&lt;br /&gt;{&lt;br /&gt;setuid( 32033 );&lt;br /&gt;system( &quot;/test/run.sh&quot; );&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt; shell script is run with a different effective&lt;br /&gt; user id than the executor if this binary is being&lt;br /&gt; set uid&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/unistd.h&gt;&lt;/sys.h&gt;&lt;/stdlib.h&gt;&lt;/stdio.h&gt;&lt;/code&gt;</content><link rel='replies' type='application/atom+xml' href='http://sundarrajanm.blogspot.com/feeds/2780795883865476875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sundarrajanm.blogspot.com/2009/10/sample-user-impersonation-on-unix-using.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085579632481333717/posts/default/2780795883865476875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085579632481333717/posts/default/2780795883865476875'/><link rel='alternate' type='text/html' href='http://sundarrajanm.blogspot.com/2009/10/sample-user-impersonation-on-unix-using.html' title='A sample user impersonation on unix using setuid'/><author><name>Sundar</name><uri>http://www.blogger.com/profile/17560998208413749840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfTkFSe5eYWRaGoMxfh9ttmiAsWFtzunzY7zekE5slTQFsDJODA0ZGP4jT-P9pf2sJnUECncL6E1K2A2JpHkfbSnraNECZaX_1Zne2ZivTGcr5NVlayIkeTOVaxZ2UTw/s220/Me.jpg'/></author><thr:total>0</thr:total></entry></feed>