<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5832422668171716781</id><updated>2012-02-16T01:36:39.510-08:00</updated><category term='SQL'/><category term='collaborative filtering'/><category term='BMC'/><category term='Big Data Analytics'/><category term='recommendation engines'/><category term='ITSM'/><category term='Driver Script'/><category term='ITSM 7.6'/><category term='NoSQL'/><category term='Flytxt'/><category term='Developer Studio'/><category term='Hive'/><category term='Pig'/><category term='virtual drive'/><category term='AR Server 7.5'/><category term='ARSystem'/><category term='Oozie'/><category term='virtual filesystem'/><category term='Remedy 7.5'/><category term='Remedy'/><category term='Hadoop'/><category term='Jobin Wilson'/><category term='HBase'/><category term='machine learning'/><category term='ITSM 7.5'/><category term='Service Call'/><category term='Mahout'/><category term='Yahoo'/><category term='BMC Remedy'/><category term='gmail drive'/><category term='Cassandra'/><title type='text'>Jobin's Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jobinwilson.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5832422668171716781/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://jobinwilson.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jobin Wilson</name><uri>http://www.blogger.com/profile/09143313848947681331</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.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>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5832422668171716781.post-2718993593578116407</id><published>2011-09-13T04:24:00.000-07:00</published><updated>2011-10-18T07:16:45.618-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='recommendation engines'/><category scheme='http://www.blogger.com/atom/ns#' term='Mahout'/><category scheme='http://www.blogger.com/atom/ns#' term='machine learning'/><category scheme='http://www.blogger.com/atom/ns#' term='collaborative filtering'/><category scheme='http://www.blogger.com/atom/ns#' term='Hadoop'/><title type='text'>Slides from Flytxt Dev2Dev Big Data Workshop II conducted at Technopark,Trivandrum on 13/9/2011</title><content type='html'>&lt;strong style="display: block; margin: 12px 0pt 4px;"&gt;&lt;a href="http://www.slideshare.net/jobinwilson/recommendation-engines-matching-items-to-users" title="Recommendation engines : Matching items to users" target="_blank"&gt;Recommendation engines : Matching items to users&lt;/a&gt;&lt;/strong&gt; &lt;iframe src="http://www.slideshare.net/slideshow/embed_code/9237406" marginwidth="0" marginheight="0" width="425" frameborder="0" height="355" scrolling="no"&gt;&lt;/iframe&gt; &lt;div style="width: 425px;" id="__ss_9237406"&gt;&lt;div style="padding: 5px 0pt 12px;"&gt; View more &lt;a href="http://www.slideshare.net/" target="_blank"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/jobinwilson" target="_blank"&gt;jobinwilson&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();}   catch(e) {}" href="http://2.bp.blogspot.com/-JSgyBnWiCPk/Tp2Jo2KPt9I/AAAAAAAAARg/ZyDTuWHEIzs/s1600/07_small.jpg"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 320px; height: 229px;" src="http://2.bp.blogspot.com/-JSgyBnWiCPk/Tp2Jo2KPt9I/AAAAAAAAARg/ZyDTuWHEIzs/s320/07_small.jpg" alt="" id="BLOGGER_PHOTO_ID_5664835241128212434" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5832422668171716781-2718993593578116407?l=jobinwilson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jobinwilson.blogspot.com/feeds/2718993593578116407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5832422668171716781&amp;postID=2718993593578116407' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5832422668171716781/posts/default/2718993593578116407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5832422668171716781/posts/default/2718993593578116407'/><link rel='alternate' type='text/html' href='http://jobinwilson.blogspot.com/2011/09/presentation-from-flytxt-dev2dev-big.html' title='Slides from Flytxt Dev2Dev Big Data Workshop II conducted at Technopark,Trivandrum on 13/9/2011'/><author><name>Jobin Wilson</name><uri>http://www.blogger.com/profile/09143313848947681331</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-JSgyBnWiCPk/Tp2Jo2KPt9I/AAAAAAAAARg/ZyDTuWHEIzs/s72-c/07_small.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5832422668171716781.post-3415671683055275410</id><published>2011-08-30T08:18:00.000-07:00</published><updated>2011-08-30T08:20:27.147-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cassandra'/><category scheme='http://www.blogger.com/atom/ns#' term='NoSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='HBase'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Choosing your database – SQL or NoSQL?</title><content type='html'>&lt;div style="text-align: justify;"&gt;Lots of discussions are coming up lately on management of data in the  traditional SQL-RDBMS way versus the emerging NoSQL way. As application  designers, developers and architects, how do we choose which way to go?  This is a common dilemma these days when the scale of applications as  well as data volumes are ever increasing and processing terabytes of  data have become common enough.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What exactly is the  difference between SQL &amp;amp; NoSQL?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The major  differences are in the data access patterns and data organization.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;NoSQL  databases&lt;/strong&gt; allow a restricted predefined data access pattern.  The basic philosophy here is that ultimately my application is the best  judge to decide how to manipulate my data and I don’t want some blackbox  like a query optimizer sitting inside my database to decide how my  application should retrieve or manipulate my data. e.g HBase can be used  more as a distributed persistent key value store where in my access  pattern is well defined and very simple - I can look up based on a key  and retrieve all/some values. So what I get is scalability and  performance which are predictable. The price I have to pay is that I  won’t get flexible arbitrary data access patterns with my favorite SQL  queries. So it is a trade-off, I get more power and as always, power  comes with a lot of responsibilities – you need to take care of a lot of  things at the application level that your RDBMS would have silently  done for you. NoSQL databases also give you the flexibility to store  semi-structured or  un-structured data and you are free to think beyond  the conventional ‘tables’ with ‘rows’ and ‘columns’.&lt;br /&gt;&lt;br /&gt;A few  examples for NoSQL databases are HBase, Cassandra, Hypertable, CouchDB  ,MongoDB etc&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;SQL databases&lt;/strong&gt; need you to make some  assumptions on your data access patterns based on which predefined  optimizations like indexes are built. But if you ask me if we know  exactly the data access pattern, I would say no.But definitely we have  some idea about potential access patterns (e.g I would know which would  be my primary key, foreign key etc.).The executions of queries are  controlled by the database engine and programmers would have very  limited control over it. So this is again a trade-off, I get simplicity,  data normalization, data integrity and an ‘easy to work with’ language  (SQL) but when it comes to scalability beyond a limit, it would be an  issue. Another advantage I have is that it is very easy to comprehend a  relational table since it is nothing but a simple structure with ‘rows’  and ‘columns’.&lt;br /&gt;&lt;br /&gt;A few examples for SQL databases are Oracle,  MySQL, PostgreSQL, Sybase etc&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Ok now, why don’t you just  tell me which one I should pick?&lt;/strong&gt;&lt;br /&gt;Just because Google,  facebook, LinkedIn and other web companies do something doesn’t mean  that you need to do the same. Just because there is too much buzz about  something, it doesn’t mean that it would magically solve all your  problems.&lt;br /&gt;&lt;br /&gt;The key aspect is &lt;strong&gt;&lt;em&gt;your problem&lt;/em&gt;&lt;/strong&gt;.  What you choose depends up on what problem you are trying to solve.  Depending on your specific situation, SQL, NoSQL or even a hybrid  solution supporting both might be appropriate .All I can say is that  neither SQL or NoSQL are silver bullets. Sleep over your problems and  choose wisely…Or ask others who have faced similar problems (it is very  likely that problems we face are faced by someone else as well)-I have  seen that this technique attest works  &lt;img src="http://www.flytxt.com/community/Smileys/default/wink.gif" alt=";)" title="Wink" class="smiley" /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5832422668171716781-3415671683055275410?l=jobinwilson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jobinwilson.blogspot.com/feeds/3415671683055275410/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5832422668171716781&amp;postID=3415671683055275410' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5832422668171716781/posts/default/3415671683055275410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5832422668171716781/posts/default/3415671683055275410'/><link rel='alternate' type='text/html' href='http://jobinwilson.blogspot.com/2011/08/choosing-your-database-sql-or-nosql.html' title='Choosing your database – SQL or NoSQL?'/><author><name>Jobin Wilson</name><uri>http://www.blogger.com/profile/09143313848947681331</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5832422668171716781.post-2017233431747204844</id><published>2011-03-15T01:26:00.000-07:00</published><updated>2011-04-01T06:17:08.557-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flytxt'/><category scheme='http://www.blogger.com/atom/ns#' term='Jobin Wilson'/><category scheme='http://www.blogger.com/atom/ns#' term='Big Data Analytics'/><category scheme='http://www.blogger.com/atom/ns#' term='Hadoop'/><title type='text'>Harnessing Hadoop For Big Data Analytics</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-EUvZAwVmuXs/TZXQQ75zxyI/AAAAAAAAAQg/M1CbN5Sw7gw/s1600/Hadoop%2BEvent.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px; height: 214px;" src="http://2.bp.blogspot.com/-EUvZAwVmuXs/TZXQQ75zxyI/AAAAAAAAAQg/M1CbN5Sw7gw/s320/Hadoop%2BEvent.jpg" alt="" id="BLOGGER_PHOTO_ID_5590603501826983714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="width: 425px;" id="__ss_7254756"&gt; &lt;strong style="margin: 12px 0pt 4px; display: block;"&gt;&lt;a href="http://www.slideshare.net/jobinwilson/harnessing-hadoop-for-big-data-analytics-v01" title="Harnessing hadoop for big data analytics v0.1"&gt;Harnessing hadoop for big data analytics v0.1&lt;/a&gt;&lt;br /&gt;&lt;/strong&gt;Posted the slides from the session on big data analytics using hadoop.The session was conducted at Travancore Hall,Technopark Trivandrum&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.thehindubusinessline.com/todays-paper/tp-others/tp-states/article1518273.ece"&gt;http://www.thehindubusinessline.com/todays-paper/tp-others/tp-states/article1518273.ece&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;object id="__sse7254756" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=harnessinghadoopforbigdataanalyticsv0-1-110313232150-phpapp02&amp;amp;stripped_title=harnessing-hadoop-for-big-data-analytics-v01&amp;amp;userName=jobinwilson"&gt; &lt;param name="allowFullScreen" value="true"&gt; &lt;param name="allowScriptAccess" value="always"&gt; &lt;embed name="__sse7254756" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=harnessinghadoopforbigdataanalyticsv0-1-110313232150-phpapp02&amp;amp;stripped_title=harnessing-hadoop-for-big-data-analytics-v01&amp;amp;userName=jobinwilson" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt; &lt;/object&gt; &lt;div style="padding: 5px 0pt 12px;"&gt; View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/jobinwilson"&gt;jobinwilson&lt;/a&gt; &lt;/div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5832422668171716781-2017233431747204844?l=jobinwilson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jobinwilson.blogspot.com/feeds/2017233431747204844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5832422668171716781&amp;postID=2017233431747204844' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5832422668171716781/posts/default/2017233431747204844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5832422668171716781/posts/default/2017233431747204844'/><link rel='alternate' type='text/html' href='http://jobinwilson.blogspot.com/2011/03/harnessing-hadoop-for-big-data.html' title='Harnessing Hadoop For Big Data Analytics'/><author><name>Jobin Wilson</name><uri>http://www.blogger.com/profile/09143313848947681331</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-EUvZAwVmuXs/TZXQQ75zxyI/AAAAAAAAAQg/M1CbN5Sw7gw/s72-c/Hadoop%2BEvent.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5832422668171716781.post-3422699013148008332</id><published>2010-10-10T03:46:00.000-07:00</published><updated>2010-10-10T07:50:15.529-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oozie'/><category scheme='http://www.blogger.com/atom/ns#' term='Pig'/><category scheme='http://www.blogger.com/atom/ns#' term='Yahoo'/><category scheme='http://www.blogger.com/atom/ns#' term='Hive'/><category scheme='http://www.blogger.com/atom/ns#' term='Hadoop'/><title type='text'>Workflow Solutions for Big Data Analytics - Can Oozie help?</title><content type='html'>&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="--"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-qformat:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin-top:0in;  mso-para-margin-right:0in;  mso-para-margin-bottom:10.0pt;  mso-para-margin-left:0in;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:minor-fareast;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p style="text-align: justify;" class="MsoNormal"&gt;A common pattern that we see in Big Data Analytics is that we are essentially operating on huge data pipelines which consume some input files (may be web logs/application logs etc) and do some heavy processing to generate insights that we store in an output file(s)/data store. Another data pipeline may consume this and generate even further insights.&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;The key points to note are&lt;br /&gt;&lt;br /&gt;1.The data volume would be huge (would be in GBs/TBs)&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;2.We have many input sources from which this data will be arriving / needs to be extracted (push/pull)&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;3.We need to maintain some kind of a repository/warehouse which could be leveraged to consistently maintain the incoming data files, store intermediate/final results of our analytic processing&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;4.Analytics operations should be considered like "jobs" with an ETL nature&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;5.We would need some kind of an orchestration mechanism to manage the inter-dependencies  of jobs &amp;amp; trigger jobs based on the availability of data, provide scheduling capabilities &amp;amp; recovery mechanisms etc.&lt;br /&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;Didn’t we discuss about these points in our last week's architectural meeting???-Well, these points sound familiar and we can easily look at it as a common challenge faced in a lot of big data analytics solutions.&lt;br /&gt;&lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;Our Big Data solution stack may have hadoop, pig, hive ,custom map reduce jobs in java or we might use hadoop streaming etc..but the major problem still exists - Who will orchestrate my process flows which generates insights?&lt;br /&gt;&lt;br /&gt;Wait...did you say process flow? Where did the "flow thingy" come from? I thought I could write a map-reduce program to do my analytics...Is that not the case? Well ,you can definitely write map-reduce programs, but an optimal way would be to leverage the higher level abstractions that already make your job easy in which ever stages you could use them. For instance I could use hive queries to quickly aggregate some data or use a pig script to do some input transformation .All these would get converted to map-reduce under the hood. Another reason why you can perceive it as a flow is because there will be a sequence of well defined steps that will take in data from a source, do some processing &amp;amp; feed it into a sink - A classic data pipe line.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;You will see that lot of these steps will follow a common pattern and if we could have abstractions like “actions” which define each of this steps(what they do &amp;amp; which abstraction they use to complete the step) &amp;amp; link them as an sequence of steps, our job is done. A flow could be represented using xml and the abstractions for actions could be “pig action”, “file system action”, “map-reduce java action”, ”ssh action” etc&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;Looking from the above perspective, Yahoo’s &lt;a href="http://yahoo.github.com/oozie/"&gt;Oozie&lt;/a&gt; (which is a workflow system for hadoop ) sounds promising.It has been around for almost a year and now there is a V2 version of it which has introduced a concept of “coordinator jobs” which exactly solves the scheduling &amp;amp; dependency management. The system is exposed via APIs and webservices&lt;span style=""&gt;  &lt;/span&gt;&amp;amp; is deployed inside a tomcat.It provides an extjs based console also to monitor jobs.It also provides a command line based client.I saw a presentation on Oozie from hadoop summit 2010 &amp;amp; it seems to have addressed a lot of common pain points. &lt;a href="http://developer.yahoo.com/blogs/ydn/posts/2010/08/workflow_on_hadoop/"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;a href="http://developer.yahoo.com/blogs/ydn/posts/2010/08/workflow_on_hadoop/"&gt;http://developer.yahoo.com/blogs/ydn/posts/2010/08/workflow_on_hadoop/&lt;/a&gt;&lt;/p&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;I have started playing with &lt;a href="http://yahoo.github.com/oozie/releases/2.2.0/"&gt;Oozie 2.2.0&lt;/a&gt; this weekend .I will be posting the findings from my experiments soon. I did face some challenges in getting Oozie 2.2.0 installed on my hadoop cluster and in configuring mysql as the Oozie persistence mechanism. Since I couldn’t get a binary distribution from github, I started off by building a copy myself. Even after &lt;span style=""&gt; &lt;/span&gt;injecting extjs2.2  which it uses for rendering the console,I couldn’t get the Oozie web console working....Then firebug came to rescue, the problem was that RowExpander.js was being searched in the extjs home folder,but this script was located in the examples folder. I copied it over &amp;amp; repackaged oozie.war &amp;amp; it started working. I will be publishing a post with details on getting around the issues soon.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;May be the issues are addressed in&lt;a href="http://github.com/downloads/yahoo/oozie/oozie-2.2.2-distro.tar.gz/qr_code"&gt; Oozie 2.2.2&lt;/a&gt; &amp;amp; they have a distro available for download &lt;span style=""&gt; &lt;/span&gt;&amp;amp; we might not have to build it from source code.I am yet to try it out…&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5832422668171716781-3422699013148008332?l=jobinwilson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jobinwilson.blogspot.com/feeds/3422699013148008332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5832422668171716781&amp;postID=3422699013148008332' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5832422668171716781/posts/default/3422699013148008332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5832422668171716781/posts/default/3422699013148008332'/><link rel='alternate' type='text/html' href='http://jobinwilson.blogspot.com/2010/10/workflow-solutions-for-big-data.html' title='Workflow Solutions for Big Data Analytics - Can Oozie help?'/><author><name>Jobin Wilson</name><uri>http://www.blogger.com/profile/09143313848947681331</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5832422668171716781.post-7559932764725510148</id><published>2010-05-04T06:57:00.000-07:00</published><updated>2010-05-04T07:15:11.367-07:00</updated><title type='text'>Adding HSQLDB Plugin to Eclipse</title><content type='html'>i wanted to play a little bit with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;HSQLDB&lt;/span&gt; and i thought it might be a good idea to add &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;HSQLDB&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Plugin&lt;/span&gt; to my eclipse so that i can use it more seamlessly while i try out stuff in my java code from eclipse.The main advantage is that the footprint of the DB is so small and no complex installation is there.It &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;doesn't&lt;/span&gt; consume much resources &amp;amp; is good enough while experimenting things in a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;dev&lt;/span&gt; box.&lt;br /&gt;I thought of keeping some quick pointers here.&lt;br /&gt;&lt;br /&gt;1.Download  &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;HSQLDB&lt;/span&gt; from &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;sourceforge&lt;/span&gt; &lt;a href="http://sourceforge.net/projects/hsqldb/"&gt;http://sourceforge.net/projects/hsqldb/&lt;/a&gt;&lt;br /&gt;2.Download &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;HSQLDBPlugin&lt;/span&gt; from &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;sourceforge&lt;/span&gt; &lt;a href="http://sourceforge.net/projects/hsqldb-plugin/files/"&gt;http://sourceforge.net/projects/hsqldb-plugin/files/&lt;/a&gt;&lt;br /&gt;3.Unzip the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;HSQLDBPlugin&lt;/span&gt; zip,you will get two folders &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;hsqldb&lt;/span&gt;.core and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;hsqldb&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;ui&lt;/span&gt;&lt;br /&gt;4.Copy both the folders into ECLIPSE_HOME/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;plugins&lt;/span&gt; folder&lt;br /&gt;5.Navigate to ECLIPSE_HOME/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;plugins&lt;/span&gt;/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;hsqldb&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;ui&lt;/span&gt; folder from command prompt/shell&lt;br /&gt;6.run the command &lt;span style="font-style: italic;"&gt;jar &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;cvf&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;ui&lt;/span&gt;.jar -C bin .&lt;/span&gt; (note the ending dot,denotes the current folder).This command will generate &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;ui&lt;/span&gt;.jar&lt;br /&gt;7.restart eclipse&lt;br /&gt;&lt;br /&gt;Once we follow these steps,we will see a new link named "Add Database Engine Nature" appear in the right click menu of the eclipse project&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qQYitih7xGc/S-ArTVqRjBI/AAAAAAAAAOg/7OcZhILMGuU/s1600/Add+Databse+Engine+Nature.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 277px; height: 320px;" src="http://1.bp.blogspot.com/_qQYitih7xGc/S-ArTVqRjBI/AAAAAAAAAOg/7OcZhILMGuU/s320/Add+Databse+Engine+Nature.JPG" alt="" id="BLOGGER_PHOTO_ID_5467417558859746322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Clicking on this menu will then show up various options for starting/stopping/starting database manager etc&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5832422668171716781-7559932764725510148?l=jobinwilson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jobinwilson.blogspot.com/feeds/7559932764725510148/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5832422668171716781&amp;postID=7559932764725510148' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5832422668171716781/posts/default/7559932764725510148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5832422668171716781/posts/default/7559932764725510148'/><link rel='alternate' type='text/html' href='http://jobinwilson.blogspot.com/2010/05/adding-hsqldb-plugin-to-eclipse.html' title='Adding HSQLDB Plugin to Eclipse'/><author><name>Jobin Wilson</name><uri>http://www.blogger.com/profile/09143313848947681331</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_qQYitih7xGc/S-ArTVqRjBI/AAAAAAAAAOg/7OcZhILMGuU/s72-c/Add+Databse+Engine+Nature.JPG' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5832422668171716781.post-4751363176633176186</id><published>2010-01-31T13:12:00.000-08:00</published><updated>2010-01-31T13:44:28.407-08:00</updated><title type='text'>Remedy:Open Window action (Dialog) displaying the form in a bigger size on a midtier</title><content type='html'>Sometimes you might have observed that in an activelink open window action(dialog) displays it as a bigger dialog on a browser.In the user tool the form is opened in the correct size (rendered based on the size of the components on the form).Even after removing the fields from view,the   form-still  gets scroll bars and a bigger sized window .Adding a few more fields below the form grows the form size is even bigger.Removing the newly added fields is also resulting in the same bigger sized form.&lt;br /&gt;&lt;br /&gt;Solution:&lt;br /&gt;Need to just do a small setting so that the form would be rendered in the required size on midtier as well.&lt;br /&gt;&lt;br /&gt;In Developer studio,go to "Layout" menu and choose "Show Actual View Size" (short cut is CTRL+ALT+M) and adjust the view size as needed.&lt;br /&gt;Save the form after your changes,flush the midtier cache&lt;br /&gt;&lt;br /&gt;You should see the form in the appropriate size now&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5832422668171716781-4751363176633176186?l=jobinwilson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jobinwilson.blogspot.com/feeds/4751363176633176186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5832422668171716781&amp;postID=4751363176633176186' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5832422668171716781/posts/default/4751363176633176186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5832422668171716781/posts/default/4751363176633176186'/><link rel='alternate' type='text/html' href='http://jobinwilson.blogspot.com/2010/01/remedyopen-window-action-dialog.html' title='Remedy:Open Window action (Dialog) displaying the form in a bigger size on a midtier'/><author><name>Jobin Wilson</name><uri>http://www.blogger.com/profile/09143313848947681331</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5832422668171716781.post-1464623619393276958</id><published>2009-10-25T05:45:00.000-07:00</published><updated>2009-10-25T06:58:46.894-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Remedy'/><category scheme='http://www.blogger.com/atom/ns#' term='ITSM 7.6'/><category scheme='http://www.blogger.com/atom/ns#' term='ARSystem'/><category scheme='http://www.blogger.com/atom/ns#' term='ITSM'/><category scheme='http://www.blogger.com/atom/ns#' term='ITSM 7.5'/><category scheme='http://www.blogger.com/atom/ns#' term='BMC Remedy'/><title type='text'>10 Things I Wish I Knew About ITSM when i got started</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;When someone gets started with ITSM,there are a few points/concepts which if clear would make life much easy :-).There are couple of reasons for this -something which you think is a 'customization' that needs to be built,might be already existing in some form or the other or even there could be some existing functionality that would help you to build your customization very easily or even understanding them would help you to know in detail about how the product behaves&lt;br /&gt;&lt;br /&gt;The points below were consolidated so that it can benefit everyone who works on BMC Remedy ITSM.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;1.Multi-tenancy&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;In the BMC Remedy ITSM applications, the multi-tenancy feature is available for Data segregation based on company. Access to data is controlled by a user’s access to a company.&lt;br /&gt;(reading up a little bit about field 112 would be helpful as-well).&lt;br /&gt;This feature is enabled from Application Administration Console&gt;Custom Configuration&gt;Foundation&gt;Advanced Options&gt;System Configuration Settings-System Settings&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;2.Restricted and Unrestricted access  &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;This is related to multi-tenancy &amp;amp; for restricting data access of individuals to only companies that are relevant for them.Unrestricted users can access data for all companies based on there application permissions (Say a Global Support Manager).This is configured from People form’s Login/Access Tab.Check “Unrestricted Access” for granting such an access to a user.For restricting access to specific companies, add them into “Access Restrictions” Table&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;3.ITSM in a DSO environment &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ITSM Installer now provides more support for DSO  (7.5.xx onwards).Another good thing about the installer is that it is consolidated (ServiceDesk,Change Management &amp;amp; Asset Management) &amp;amp; runs on multiple platforms (InstallAnywhere based).Enable user defined prefix from SYS:System Settings.The 'Custom prefixes' are one of the most important aspects of a DSO enabled environment for ITSM.Update SHR:SchemaNames in the other server for appropriate application prefix (user defined prefix).Update field default for field ID 1 to match the prefix setup in above step.For additional information,refer ITSM-DSO-Enablement.doc&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;4.ITSM plug-ins&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;Another common query is regarding the plugins used by ITSM.Below is a list of few important ones&lt;br /&gt;4.1ARDBC Plugin : Provides Overview console functionality, a view of work assigned across multiple applications. Query on the Vendor form triggers the plug-in&lt;br /&gt;&lt;br /&gt;4.2Command Automation Interface (CAI) – libcaieventcmd/caiventcmd.dll :Primarily used by Requestor Console ,SRMS,TMS etc. CAI subsystem provides a common infrastructure that can be shared across applications for integration. It is a filter API plug-in&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;DVF Plug-ins&lt;/span&gt; (&lt;/span&gt; These are for data visualization to provide graphical representation of data)&lt;br /&gt;&lt;br /&gt;1.Task Viewer – Provides a graphical representation of tasks, task groups and their sequencing&lt;br /&gt;2.Change/Release Calendar – Provides a calendar representation of changes/releases within  the Organization.This is very important for scheduling changes /releases. Similar to outlook calendar view&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;5.Approval mapping &amp;amp; Integration with approval server &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;in ITSM,there is tight integration with approval server.Applications like change management have this integration because critical changes done to the production infrastructure needs to be following the approval process of the enterprise so that sufficient "what-if" scenarios can be thought about &amp;amp; appropriate sign-offs can be obtained.&lt;br /&gt;&lt;br /&gt;Approval Mappings for Change Management Application is done from Application Administration Console&gt;Custom Configuration&gt;Change Management&gt;Approval&gt; Approval Mappings&lt;br /&gt;&lt;br /&gt;Approval Process Configuration is done from Application Administration console&gt;Custom Configuration&gt;Foundation&gt;Advanced Options&gt;Approval Process Configuration&lt;br /&gt;&lt;br /&gt;The approval processes that are configured  can be based on CI (Configuration Item) and IA (Impacted Area)&lt;br /&gt;&lt;br /&gt;Approval Rules involved in these processes can be viewed/customized from the form AP:Administration console&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;6.Risk Management &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Risk assessment within change management helps to achieve greater productivity by combining qualitative and quantitative criteria for assessing the risk level associated with a change.The computed risk value can be selected, based on answers to a series of predefined questions.Derived risk factors are based on the historical performance of different aspects of a change. For all configured derived risks, a cumulative performance rating is stored&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;7.Release Manifest &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;The Release manifest defines the content of the Release.The manifest can consist of Activities and/or Change Requests.Manifest is used to provide a consolidated view needed to drive completion of the Changes and the Activities required to Close the Release.&lt;br /&gt;&lt;br /&gt;Milestones are used to provide grouping mechanism to identify key points within in the Release process.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;8.ITSM Notifications&lt;br /&gt;&lt;/span&gt;&lt;/span&gt; Notifications are very important from the application's perspective because they keep key people informed&lt;br /&gt;&lt;br /&gt;You can customize an individual’s notification preferences. Notification preferences vary by module&lt;br /&gt;&lt;br /&gt;User Level - General preferences - They are configured in Notifications tab in people form&lt;br /&gt;Configurable from the Notification tab of Application Rules&lt;br /&gt;&lt;br /&gt;Notifications are Message Tag/Event DrivenYou can customize your own notification messages from the SYS:Notification Messages form. The SYS:Notification Messages form contains the notification text for each event.&lt;br /&gt;&lt;br /&gt;Notification Message Tag is used by the notification workflow to identify the specific message to be sent. Each notification event can be associated with several notification messages.&lt;br /&gt;formed on what is going on.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;9.Impact Analysis&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Change Impact Management: Thre are ways of Automated, intelligent and accurate change impact assessment  to pro-actively determine impact to Services and mitigate risk of implementing a Change Request .When touching a CI it is difficult to understand the impact of the change: Atrium Impact Simulator -Provides “what if” CI impact analysis for ITSM applications.Higher level of service assurance can be provided before planning or approving changes to the production environment.This will reduce possible change collisions-(using Collision Detection functionality)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;10.Integration with external apps – Web service &amp;amp; interface forms&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;Integration with external apps can be esility done with Web service &amp;amp; interface forms&lt;br /&gt;Web services allow third-party integration tools to create, modify and query requests&lt;br /&gt;&lt;br /&gt;They are built on top of Application Interface forms which has the Ability to Create requests, specify templates and associations.We can query and modify relationships and work info entries etc associated with a request&lt;br /&gt;&lt;br /&gt;e.g. for a webservice is RMS_ReleaseInterface_Create_WS&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5832422668171716781-1464623619393276958?l=jobinwilson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jobinwilson.blogspot.com/feeds/1464623619393276958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5832422668171716781&amp;postID=1464623619393276958' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5832422668171716781/posts/default/1464623619393276958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5832422668171716781/posts/default/1464623619393276958'/><link rel='alternate' type='text/html' href='http://jobinwilson.blogspot.com/2009/10/10-things-i-wish-i-knew-about-itsm-when.html' title='10 Things I Wish I Knew About ITSM when i got started'/><author><name>Jobin Wilson</name><uri>http://www.blogger.com/profile/09143313848947681331</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5832422668171716781.post-1959786079768863866</id><published>2009-10-07T04:27:00.000-07:00</published><updated>2009-10-07T05:20:52.975-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Remedy'/><category scheme='http://www.blogger.com/atom/ns#' term='Driver Script'/><category scheme='http://www.blogger.com/atom/ns#' term='ARSystem'/><category scheme='http://www.blogger.com/atom/ns#' term='Developer Studio'/><category scheme='http://www.blogger.com/atom/ns#' term='Remedy 7.5'/><title type='text'>Changing the State of a Remedy Deployable Application Programmatically to “Production”</title><content type='html'>Recently there was a query on changing the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;deployable&lt;/span&gt; application state to ‘Production” &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;programmatically&lt;/span&gt; (using Driver script/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;API&lt;/span&gt; etc)&lt;br /&gt;&lt;p&gt;The challenge was that there was a new &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Deployable&lt;/span&gt; application “My &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Deployable&lt;/span&gt; App” that was made by a &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_5"&gt;colleague&lt;/span&gt; which he was deploying using the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;rik&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;loadapp&lt;/span&gt; command with in a batch file. He was also importing &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;ARX&lt;/span&gt; records corresponding to the roles to group mapping for his new application into the "Roles" from. The application &amp;amp; roles got created and mappings with group was also correct, but the application State was “Maintenance” and he wanted to set it to “Production” automatically without any user intervention or without using Developer Studio&lt;br /&gt;&lt;/p&gt;&lt;a href="http://1.bp.blogspot.com/_qQYitih7xGc/SsyF_8KLgCI/AAAAAAAAAMU/MbM1TkvA594/s1600-h/deployable+app.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5389830187582717986" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 451px; CURSOR: hand; HEIGHT: 258px" alt="" src="http://1.bp.blogspot.com/_qQYitih7xGc/SsyF_8KLgCI/AAAAAAAAAMU/MbM1TkvA594/s320/deployable+app.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;Solution:&lt;br /&gt;By default, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;deployable&lt;/span&gt; applications are imported in the Maintenance state. When  an application is in the Maintenance state, only members of the Administrator group have permissions to use it. This is AR System behaviour by design,but &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;ARsystem&lt;/span&gt; does allow you to change it using &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;API&lt;/span&gt; calls (which &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;Devstudio&lt;/span&gt; does when you &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_13"&gt;change&lt;/span&gt; the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;dropdown&lt;/span&gt; value)&lt;br /&gt;&lt;br /&gt;To change the state of the application, we can use driver command “&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;sas&lt;/span&gt;” which stands for set application status. Below is a useful driver script snippet to change the status of the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;deployable&lt;/span&gt; application to “Production”&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;init&lt;/span&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;sas&lt;/span&gt;&lt;br /&gt;My &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;Deployable&lt;/span&gt; Application&lt;br /&gt;Production&lt;br /&gt;term&lt;br /&gt;q&lt;br /&gt;&lt;br /&gt;There is also a “gas” command that stands for get application status which can be used to retrieve the status of a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;deployable&lt;/span&gt; application&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5832422668171716781-1959786079768863866?l=jobinwilson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jobinwilson.blogspot.com/feeds/1959786079768863866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5832422668171716781&amp;postID=1959786079768863866' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5832422668171716781/posts/default/1959786079768863866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5832422668171716781/posts/default/1959786079768863866'/><link rel='alternate' type='text/html' href='http://jobinwilson.blogspot.com/2009/10/changing-state-of-remedy-deployable.html' title='Changing the State of a Remedy Deployable Application Programmatically to “Production”'/><author><name>Jobin Wilson</name><uri>http://www.blogger.com/profile/09143313848947681331</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_qQYitih7xGc/SsyF_8KLgCI/AAAAAAAAAMU/MbM1TkvA594/s72-c/deployable+app.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5832422668171716781.post-6198944588756426141</id><published>2009-03-30T03:28:00.000-07:00</published><updated>2009-03-31T01:32:45.227-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Remedy'/><category scheme='http://www.blogger.com/atom/ns#' term='AR Server 7.5'/><category scheme='http://www.blogger.com/atom/ns#' term='ARSystem'/><category scheme='http://www.blogger.com/atom/ns#' term='BMC'/><category scheme='http://www.blogger.com/atom/ns#' term='Remedy 7.5'/><category scheme='http://www.blogger.com/atom/ns#' term='Service Call'/><title type='text'>"Service Call" feature in Remedy 7.5</title><content type='html'>Service Call is one of the cool features of ARSystem available from the 7.1.00 release itself. It allows applications to execute workflows asynchronously (without getting/updating/deleting requests).&lt;br /&gt;&lt;br /&gt;Okay, but what is the big deal in that? Let me explain…Imagine you have some filters which you wish should get fired as soon as some of your activelinks get executed. but for your filter to get fired, usually you need to perform some get/update/delete operations on some requests(to make the execution options “Modify”/”Submit”/”Delete”/”GetEntry” trigger the filter)….The Service Call can be your best friend in such a situation.&lt;br /&gt;&lt;br /&gt;Let me explain with a more practical example. Imagine, on your “Window Loaded” there are some 10 odd activelinks which do some setfield action in which the data source is some other forms. The server roundtrips for each of these setfield actions can result in some delay over a big WAN. You can use a service call to optimize this situation. Get all your values in one single “Service Call”.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_qQYitih7xGc/SdDC0VuOVuI/AAAAAAAAALs/HXvx6AVE8y0/s1600-h/pic1.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5318965364364564194" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand; HEIGHT: 167px" alt="" src="http://2.bp.blogspot.com/_qQYitih7xGc/SdDC0VuOVuI/AAAAAAAAALs/HXvx6AVE8y0/s320/pic1.jpg" border="0" /&gt;&lt;/a&gt; So how can you do all that?..very simple..as the concept of “Callback” ,it is the same here..(Of course I know you have coded in a lot of programming languages).The Activelink which gets called on your “Window Loaded” event notifies a filter which gets fired on “Service” action&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_qQYitih7xGc/SdDClnX2xfI/AAAAAAAAALk/j8F4MYoFtlw/s1600-h/pic1.jpg"&gt;&lt;/a&gt;&lt;br /&gt;The activelink can perform this notification by invoking the Service action. It needs to give an input mapping and an output mapping. The values that are specified in the input mapping gets passed to the filter. In turn the output mapping receives the values that the filter reads and keeps in the transaction.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_qQYitih7xGc/SdDDdd6Q5RI/AAAAAAAAAL0/u-g6nObnyGk/s1600-h/pic2.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5318966070937183506" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand; HEIGHT: 254px" alt="" src="http://4.bp.blogspot.com/_qQYitih7xGc/SdDDdd6Q5RI/AAAAAAAAAL0/u-g6nObnyGk/s320/pic2.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;So in short,the flow is like this&lt;br /&gt;&lt;br /&gt;Activelink -&gt; Notify Filter (using Service Action) and pass the required values (Input Mapping)&lt;br /&gt;&lt;br /&gt;Filter – Perform the actual operation (do all the required setfields)&lt;br /&gt;&lt;br /&gt;Filter - &gt;Pass back the values to the Activelink as mentioned in the output mapping (similar to callback)&lt;br /&gt;&lt;br /&gt;There are options to dynamically specify the server name and the form name at runtime as well. The good part is that the service action can be invoked from Activelinks, Filters and Escalations&lt;br /&gt;&lt;br /&gt;The Service active link action executes an internal AR System service or an&lt;br /&gt;external web service. ARServiceEntry C API function implements the Service active link action&lt;br /&gt;&lt;br /&gt;More details on this feature can be obtained from BMC Remedy Action Request System 7.5.00&lt;br /&gt;Workflow Objects Guide,BMC Remedy Action Request System&lt;br /&gt;Version 7.1.00 – whats new pdf and the C API Reference guide .I am intentionally not duplicating the same data here as I am sure you will be having those pdfs. Searching for “Service Action” will take you to the description.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;I found the Service Call functionality very usefull and was able to leverage it for improving application perfomance across WAN&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5832422668171716781-6198944588756426141?l=jobinwilson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jobinwilson.blogspot.com/feeds/6198944588756426141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5832422668171716781&amp;postID=6198944588756426141' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5832422668171716781/posts/default/6198944588756426141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5832422668171716781/posts/default/6198944588756426141'/><link rel='alternate' type='text/html' href='http://jobinwilson.blogspot.com/2009/03/service-call-feature-in-remedy-75.html' title='&quot;Service Call&quot; feature in Remedy 7.5'/><author><name>Jobin Wilson</name><uri>http://www.blogger.com/profile/09143313848947681331</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_qQYitih7xGc/SdDC0VuOVuI/AAAAAAAAALs/HXvx6AVE8y0/s72-c/pic1.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5832422668171716781.post-5700918496061965585</id><published>2008-03-09T05:14:00.001-07:00</published><updated>2009-03-31T01:36:58.847-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gmail drive'/><category scheme='http://www.blogger.com/atom/ns#' term='virtual filesystem'/><category scheme='http://www.blogger.com/atom/ns#' term='virtual drive'/><title type='text'>How do i convert my email account(with a lot of storage space :-P ) as a filesystem like the GMail Drive?</title><content type='html'>&lt;div align="justify"&gt;Well,many people thought about doing this from the very day they saw the below line at the &lt;a href="http://gmail.com/"&gt;gmail&lt;/a&gt; homepage&lt;br /&gt;&lt;span style="color:#000000;"&gt;"Lots of space Over 2757.272164 megabytes (and counting) of free storage so you'll never need to delete another message."&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Now that the gmail storage has multiplied( 6501.217310 ...),the interest of people has also grown towards the concept.Many competitors also started providing huge email storage. One significant point to note is that you can convert any email account into a file system.Think about it for a while...Think about SMTP,MIME,IMAP &amp;amp; POP3 ..if you are familiar with those,you got the answer!!!. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Wait,think about what happens when you send an email to your self with a file as an attachment.&lt;br /&gt;of course i agree that there will be an attachment size limitation.Suppose if a software automatically splits your file and sends multiple mails to your own account and retrieves them in a nice fashion and displays it to you in an explorer like window or like a FS mounted to your *nix box ???gotcha..cool idea!!! &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;It all started when Richard Jones thought about a &lt;a href="http://richard.jones.name/google-hacks/gmail-filesystem/gmail-filesystem.html"&gt;Gmail Filesystem &lt;/a&gt;and implemented it in Python.It is a mountable Linux filesystem which uses your Gmail account as its storage medium. it uses the &lt;a href="http://fuse.sourceforge.net/"&gt;FUSE&lt;/a&gt; userland filesystem infrastructure to help provide the filesystem, and &lt;a href="http://libgmail.sourceforge.net/"&gt;libgmail&lt;/a&gt; to communicate with Gmail.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;A lot of other libraries and applications also came up on similar lines.Let me list out a few of them here.It will definitely benefit you if you are a developer. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;a href="http://libgmail.sourceforge.net/"&gt;libgmail&lt;/a&gt; - A Python based API for Gmail Access&lt;br /&gt;&lt;a href="http://www.holovaty.com/blog/archive/2004/06/18/1751"&gt;gmail.py&lt;/a&gt; - A Python API for Gmail Access.&lt;br /&gt;&lt;a href="http://gmail-lite.sourceforge.net/wordpress/index.php/about/libgmailer/"&gt;libgmailer&lt;/a&gt; - A Php-based API for the Gmail Access. Requires the php CURL extension.&lt;br /&gt;&lt;a href="http://sourceforge.net/projects/gmail-api"&gt;Gmail API&lt;/a&gt; - A .Net Library for Gmail Access&lt;br /&gt;&lt;a href="http://jgmail.sourceforge.net/"&gt;jGmail API&lt;/a&gt; - A Java based Library for Gmail Access &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;The discussion wont be complete with out mentioning &lt;a href="http://www.viksoe.dk/code/gmail.htm"&gt;GMail Drive Shell Extension&lt;/a&gt; by bjarke.&lt;br /&gt;It creates a virtual filesystem on top of your Google Gmail account and enables you to save and retrieve files stored on your Gmail account directly from inside Windows Explorer. GMail Drive literally adds a new drive to your computer under the My Computer folder, where you can create new folders, copy and drag'n'drop files to it.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;If you are a windows C++ developer,he has some C++ source code and code snippets for various programming libraries for you.Have a look at &lt;a href="http://www.viksoe.dk/"&gt;http://www.viksoe.dk/&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;It is also nice to have a look at the &lt;a href="http://www.dodgermath.com/datavault/web/default.php"&gt;gVault&lt;/a&gt;,a java implementation of a Gmail based cryptographic network file system.It was designed by a few guys from University of California, Irviney, Brigham Young Universityz, University of Bologna, Italy.They have also provided a nice pdf explaining their design &amp;amp; implemenation &lt;a href="http://www.ics.uci.edu/~rjammala/gVault.pdf"&gt;http://www.ics.uci.edu/~rjammala/gVault.pdf&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;Even i have come up with a generalized design &amp;amp; implementation of a mail file system utilizing any email account that supports IMAP &amp;amp; SMTP.It is basically is a windows shell name space extension allowing the users to have a virtual drive. It appears as a local hard disk drive &amp;amp; enables the user to use the standard Windows desktop file copy and paste commands to transfer files.When the user creates a new file inside the Virtual Drive(when he does a copy &amp;amp; paste), it generates an e-mail and sends it to the users inbox. The e-mail appears in the normal Inbox folder when using the normal webmail interface, and the file is attached as an e-mail attachment. The subject line will be having a special keyword "[MAILDRIVE]&lt;virtualdrive&gt;" for optimizing search. It periodically checks the mail account to see if new files have arrived and to rebuild the virtual drive's directory structures.It also provides access to the virtual drive from multiple systems simultaneously providing functionalities of a fileserver.The meta data about each file is also maintained inside the email.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5832422668171716781-5700918496061965585?l=jobinwilson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jobinwilson.blogspot.com/feeds/5700918496061965585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5832422668171716781&amp;postID=5700918496061965585' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5832422668171716781/posts/default/5700918496061965585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5832422668171716781/posts/default/5700918496061965585'/><link rel='alternate' type='text/html' href='http://jobinwilson.blogspot.com/2008/03/how-do-i-convert-my-email-accountwith.html' title='How do i convert my email account(with a lot of storage space :-P ) as a filesystem like the GMail Drive?'/><author><name>Jobin Wilson</name><uri>http://www.blogger.com/profile/09143313848947681331</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5832422668171716781.post-859477712726327864</id><published>2008-03-07T07:40:00.000-08:00</published><updated>2008-03-09T04:26:33.087-07:00</updated><title type='text'>how do i combine multiple pdf files into one?</title><content type='html'>Well,for combining multiple &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;pdf&lt;/span&gt;&lt;/span&gt; files into one,as usual there are two &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;approaches&lt;/span&gt; that i can suggest&lt;br /&gt;1.The easy way in which you &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;don't&lt;/span&gt; have to worry about too much of internal details&lt;br /&gt;There is a nice little utility called &lt;a href="http://www.pdfhacks.com/pdftk"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;pdftk&lt;/span&gt;&lt;/a&gt; (the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;pdf&lt;/span&gt; toolkit) which allows you to manipulate &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;pdf&lt;/span&gt; files in a variety of ways(like merging files,repairing &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_4"&gt;corrupted&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;pdfs&lt;/span&gt;,update &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;pdf&lt;/span&gt; &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_7"&gt;meta data&lt;/span&gt; etc).&lt;br /&gt;You can download the utility from the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;url&lt;/span&gt; &lt;a href="http://www.pdfhacks.com/pdftk/#packages"&gt;http://www.pdfhacks.com/pdftk/#packages&lt;/a&gt;&lt;br /&gt;download is &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_9"&gt;available&lt;/span&gt; for windows also.For &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;ubuntu&lt;/span&gt;,you can also use apt to get it installed&lt;br /&gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_11"&gt;from&lt;/span&gt; your terminal,type &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;sudo&lt;/span&gt; apt-get install gs &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;pdftk&lt;/span&gt;.Once it is &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_14"&gt;installed&lt;/span&gt; you can issue the command as shown in the below example&lt;br /&gt;&lt;span style="color:#33ccff;"&gt;jobinwl@jobinwl-laptop:/media/sda1/videooutput/pscan$ &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;pdftk&lt;/span&gt; 1.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;pdf&lt;/span&gt; 2.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;pdf&lt;/span&gt; 3.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;pdf&lt;/span&gt; 4. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;pdf&lt;/span&gt; 5.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;pdf&lt;/span&gt; 6.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;pdf&lt;/span&gt; 7.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;pdf&lt;/span&gt; 8.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;pdf&lt;/span&gt; 9.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;pdf&lt;/span&gt; 10.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;pdf&lt;/span&gt; 11.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;pdf&lt;/span&gt; 12.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;pdf&lt;/span&gt; 13.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;pdf&lt;/span&gt; 14.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;pdf&lt;/span&gt; 15.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;pdf&lt;/span&gt; 16.p &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;df&lt;/span&gt; 17.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;pdf&lt;/span&gt; 18.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;pdf&lt;/span&gt; 19.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;pdf&lt;/span&gt; 20.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;pdf&lt;/span&gt; 21.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;pdf&lt;/span&gt; cat output /home/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_37"&gt;jobinwl&lt;/span&gt;/Desktop/full.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_38"&gt;pdf&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;it will combine all the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_39"&gt;pdfs&lt;/span&gt; into one single file called full.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_40"&gt;pdf&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;2.The &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;programmatic&lt;/span&gt; way in which you have a full control over the process&lt;br /&gt;Let us see how to make a little utility program to get this done.Since &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_41"&gt;pdf&lt;/span&gt; files are involved,we will be using the&lt;a href="http://www.lowagie.com/iText/"&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_42"&gt;iText&lt;/span&gt; &lt;/a&gt;java library(assuming we are making it in java,there is also a .Net implementation of the same called &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_43"&gt;iTextSharp&lt;/span&gt;). i am sure you must have heard about &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_44"&gt;iText&lt;/span&gt;...it is an awesome java library that helps you to do a lot of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_45"&gt;pdf&lt;/span&gt; related operations like dynamic &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_46"&gt;pdf&lt;/span&gt; creation or manipulation&lt;br /&gt;source code is &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_47"&gt;available&lt;/span&gt; here :&lt;a href="http://docs.google.com/Doc?id=dr47ftb_2gsmgm5zs"&gt;http://docs.google.com/Doc?id=dr47ftb_2gsmgm5zs&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5832422668171716781-859477712726327864?l=jobinwilson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jobinwilson.blogspot.com/feeds/859477712726327864/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5832422668171716781&amp;postID=859477712726327864' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5832422668171716781/posts/default/859477712726327864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5832422668171716781/posts/default/859477712726327864'/><link rel='alternate' type='text/html' href='http://jobinwilson.blogspot.com/2008/03/how-do-i-combine-multiple-pdf-files.html' title='how do i combine multiple pdf files into one?'/><author><name>Jobin Wilson</name><uri>http://www.blogger.com/profile/09143313848947681331</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5832422668171716781.post-1934720213095255240</id><published>2008-03-06T21:38:00.000-08:00</published><updated>2008-03-07T01:00:22.217-08:00</updated><title type='text'>How do i reduce the size of my executable?</title><content type='html'>&lt;div align="left"&gt;One of my firends asked this question to me over email.I thought it would be great to answer it here so that it will help many others with similar queries.&lt;/div&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;div align="left"&gt;The size of an executable depends on a lot of factors like the compiler,linker &amp;amp; libraries that you use,the operating system on which these tools run,the format of the binary(say exe,dll or PE (Portable Executable) in general for windows,ELF for *nix etc).Most compilers provide you "compiler switches" which helps you to specify a lot of settings like even howmuch debugging info you want to keep in the final executable. The structure of PE &amp;amp; ELF binaries are described &lt;a href="http://www.acm.uiuc.edu/sigmil/RevEng/ch08.html"&gt;here&lt;/a&gt; Now let us deal with some scenareos &lt;/div&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;div align="left"&gt;1.Imagine you want an "easy solution" to compress the executable with out worrying much about the internal structure of an executable. Great,have a look &lt;a href="http://en.wikipedia.org/wiki/UPX"&gt;UPX (Ultimate Packer for eXecutables).&lt;/a&gt;A great opensource tool avilable at &lt;a href="http://upx.sourceforge.net/"&gt;http://upx.sourceforge.net/&lt;/a&gt; .It helps to compress many executable formats.(works with windows,linux etc).Just &lt;a href="http://upx.sourceforge.net/#abstract"&gt;download&lt;/a&gt; the utility &amp;amp; run it along with your executable name and approptiate switches.I will give you an example below. Assume you have a 32 bit exe called myprog.exe on a windows machine &amp;amp; you have UPX,run it as shown below C:\Jobin\Personal\setups\upx302w\upx302w&gt;upx- 9 -o Compressed.exe myprog.exe &lt;/div&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;div align="left"&gt;Ultimate Packer for eXecutables&lt;/div&gt;&lt;div align="left"&gt;Copyright (C) 1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007&lt;/div&gt;&lt;div align="left"&gt;UPX 3.02w Markus Oberhumer, Laszlo Molnar &amp;amp; John Reiser Dec 16th 2007&lt;br /&gt;File size Ratio Format Name&lt;/div&gt;&lt;div align="left"&gt;-------------------- ------ ----------- ----------- &lt;/div&gt;&lt;div align="left"&gt;2720039 -&gt; 2565927 94.33% win32/pe Compressed.exe&lt;br /&gt;Packed 1 file.&lt;br /&gt;&lt;br /&gt;2. Imagine your compiler is VC++ 6.0, and you want to use appropriate compiler switches and libraries to get your executable size less.&lt;br /&gt;Well, this is the programmers way...great to know you are interested in reading this.If you remember those good old days when you worked on Turbo C/C++, you had something called as memory models(Tiny,Small,Medium etc).Also think about those 64K segments(CS,DS etc)...those near, far &amp;amp; huge pointers??? Remembering them?If you remember them, then you know how to play around with the compiler switches &amp;amp; memory models. otherwise let me take you to a crisp document which explains it step by step. Just have a look at &lt;a href="http://www.hailstorm.net/papers/smallwin32.htm#smallapps"&gt;http://www.hailstorm.net/papers/smallwin32.htm#smallapps&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3.I want to still reduce the size of my executable verymuch,can you tell me any other way?&lt;br /&gt;Well,As i mentioned earlier,your executable size is dependent on your compiler,linker,libraries etc.so to have the least size,you need to stay more closer to the CPU :-P&lt;br /&gt;Imagine you wanted to print out the letter "A" from your program..you write the code as below&lt;br /&gt;#include "stdio.h"&lt;stdio.h&gt;&lt;br /&gt;int main(void)&lt;br /&gt;{&lt;br /&gt;printf("A");&lt;br /&gt;return 0;&lt;br /&gt;}&lt;br /&gt;Compile it &amp;amp; look at its size..huge??? that is exactly what I was telling you&lt;br /&gt;insted,go to your command prompt and do as shown below&lt;br /&gt;H:\&gt;debug-a 100 &lt;/div&gt;&lt;div align="left"&gt;138C:0100 mov ah,02 &lt;/div&gt;&lt;div align="left"&gt;138C:0102 mov dl,41 &lt;/div&gt;&lt;div align="left"&gt;138C:0104 int 21 &lt;/div&gt;&lt;div align="left"&gt;138C:0106 int 20 &lt;/div&gt;&lt;div align="left"&gt;138C:0108 &lt;/div&gt;&lt;div align="left"&gt;-g &lt;/div&gt;&lt;div align="left"&gt;A&lt;/div&gt;&lt;div align="left"&gt;Program terminated normally&lt;/div&gt;&lt;div align="left"&gt;-r cx &lt;/div&gt;&lt;div align="left"&gt;CX 0000:08 &lt;/div&gt;&lt;div align="left"&gt;-n out.com &lt;/div&gt;&lt;div align="left"&gt;-w&lt;/div&gt;&lt;div align="left"&gt;Writing 00008 bytes &lt;/div&gt;&lt;div align="left"&gt;-q &lt;/div&gt;&lt;div align="left"&gt;H:\&gt;dir *.com&lt;/div&gt;&lt;div align="left"&gt;Volume in drive H is users Volume Serial Number is 0002-6F60&lt;/div&gt;&lt;div align="left"&gt;Directory of H:\&lt;/div&gt;&lt;div align="left"&gt;03/07/2008 12:32 PM 8 OUT.COM &lt;/div&gt;&lt;div align="left"&gt;1 File(s) 8 bytes 0 Dir(s) 881,819,648 bytes free &lt;/div&gt;&lt;div align="left"&gt;H:\&gt;out&lt;/div&gt;&lt;div align="left"&gt;A &lt;/div&gt;&lt;div align="left"&gt;H:\&gt; &lt;/div&gt;&lt;div align="left"&gt;Got it? Just in 8 bytes you printed out "A"...gr8!!! so if you want smaller sized exe,write your code in Assembly. I am sure it can be a debatable suggestion .You may ask me who the hell writes code in asm today??? all I have to say is that any someone might ,depending on their needs. If you decided to try your hands on assembly, you may find &lt;a href="http://nasm.sourceforge.net/"&gt;NASM&lt;/a&gt; handy and open source .Have more queries???shoot a mail to me or post a comment,i will be happy to help you out..have a good day!!!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5832422668171716781-1934720213095255240?l=jobinwilson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jobinwilson.blogspot.com/feeds/1934720213095255240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5832422668171716781&amp;postID=1934720213095255240' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5832422668171716781/posts/default/1934720213095255240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5832422668171716781/posts/default/1934720213095255240'/><link rel='alternate' type='text/html' href='http://jobinwilson.blogspot.com/2008/03/how-do-i-reduce-size-of-my-executable.html' title='How do i reduce the size of my executable?'/><author><name>Jobin Wilson</name><uri>http://www.blogger.com/profile/09143313848947681331</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5832422668171716781.post-5724838490626723310</id><published>2008-03-06T03:24:00.000-08:00</published><updated>2008-03-07T01:01:39.950-08:00</updated><title type='text'>Inaugural post...walking backwards in space-time</title><content type='html'>Destiny, If such a thing exists, takes us to where ever we are destined to be!!!&lt;br /&gt;&lt;br /&gt;In this little space down here, I am going to write on what ever that i am interested in, aspiring for and working on. I love to colaborate and share thoughts and ideas to the very community which inspired me and motivated me to work on making these digital creatures do amazing things...I am dedicating this blog to all those great minds ,who had spent their entire life for transforming computing into what it is today .I still remember those days when I sat in front of a green monitor with a blinking A:\&gt; after to booting DOS from a &lt;a href="http://en.wikipedia.org/wiki/Floppy_disk#The_5.C2.BC-inch_minifloppy_.285.25-inch_floppy.29"&gt;5.25" floppy&lt;/a&gt; &amp;amp; putting another working disk to do some &lt;a href="http://en.wikipedia.org/wiki/GW-BASIC"&gt;GW BASIC &lt;/a&gt;programs. Kudos to all of you and your great efforts because of which I have&lt;a href="http://en.wikipedia.org/wiki/Ubuntu_(Linux_distribution)"&gt; ubuntu&lt;/a&gt; running on my PC and i am able to publish this post now...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5832422668171716781-5724838490626723310?l=jobinwilson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jobinwilson.blogspot.com/feeds/5724838490626723310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5832422668171716781&amp;postID=5724838490626723310' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5832422668171716781/posts/default/5724838490626723310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5832422668171716781/posts/default/5724838490626723310'/><link rel='alternate' type='text/html' href='http://jobinwilson.blogspot.com/2008/03/inaugural-postwalking-backwards-in.html' title='Inaugural post...walking backwards in space-time'/><author><name>Jobin Wilson</name><uri>http://www.blogger.com/profile/09143313848947681331</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
