<?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-17674281</id><updated>2011-04-21T12:00:56.833-07:00</updated><category term='DLL'/><category term='BLOSXOM'/><category term='InstallShield'/><category term='VB.NET'/><category term='ClearCase'/><category term='OOAD'/><category term='IIS'/><category term='Version Control and Change Management'/><category term='Deployment'/><title type='text'>Bits N Bytes</title><subtitle type='html'>This blog will have my notes, links to and excerpts from articles related to software design, development, methodologies and project management.

&lt;br&gt;&lt;br&gt; Notes to myself, my learnings...Techie, but not necessarily geeky stuff ;)</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://bitsnbytestogo.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17674281/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://bitsnbytestogo.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Akira</name><uri>http://www.blogger.com/profile/15918355748743200254</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://photos1.blogger.com/hello/83/8816/640/GoForTheSun.0.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-17674281.post-2894049445497942603</id><published>2008-04-14T13:38:00.000-07:00</published><updated>2008-04-14T17:06:14.893-07:00</updated><title type='text'>WILL CODE FOR FREE</title><content type='html'>&lt;p class="MsoNormal" style="text-align: justify;"&gt;No it’s not just a catchy title; I mean it. I WILL code for FREE. I am broadly available and would like to volunteer for software projects that will utilize my education/skills/experience or enable me to learn new technologies.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;Why do I want to do this?&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;      &lt;ul style="margin-top: 0in;" type="disc"&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;I have a professional degree and want to put it to      good use. Under normal circumstances I would have resorted to seeking      employment. Unfortunately, my VISA status does not allow me to work and hence      the altruistic tone.&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;I fear I will get rusty by the time I am legally      allowed to seek employment. I believe that can be avoided by contributing      my skills towards some real world projects. &lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b&gt;Why should you consider me?&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;/p&gt;    &lt;ul style="margin-top: 0in;" type="disc"&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;I will cost you nothing, since you don’t have to pay      me.&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;I have a Bachelors degree in Electronics Engineering      and a Masters degree in Computer Engineering from a &lt;st1:country-region&gt;&lt;st1:place&gt;US&lt;/st1:place&gt;&lt;/st1:country-region&gt;      university.&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;I have experience (4 years) developing software for diverse      domains such as Automotive, Industrial Automation, and Finance.&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;I’ve had the privilege of dabbling with various software      tools and technologies. I am good with VB.NET, Perl, InstallShield, and      different Rational Tools.&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;I enjoy learning and have a short learning curve for      new technologies and industry domains. I am open to re-tooling myself. &lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;I like interacting with people. I am considered to be      a good team player but I also work well independently with minimum      supervision.&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;I am perseverant and take my work seriously. I      possess good communication skills.&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;I have exposure to working in multi-cultural work      environments and experience with global engineering.&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;I am well versed with SDLC processes, standards and      tools.&lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;o:p&gt;&lt;/o:p&gt;That's it for here. If I seem like a person that you could use or need more information, please &lt;a href="mailto:spark_msk@yahoo.com?subject=Re:WILL%20CODE%20FOR%20FREE"&gt;email me &lt;/a&gt;. I would love to hear from you.  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;Thank you for your time and consideration.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17674281-2894049445497942603?l=bitsnbytestogo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbytestogo.blogspot.com/feeds/2894049445497942603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17674281&amp;postID=2894049445497942603' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17674281/posts/default/2894049445497942603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17674281/posts/default/2894049445497942603'/><link rel='alternate' type='text/html' href='http://bitsnbytestogo.blogspot.com/2008/04/will-code-for-free.html' title='WILL CODE FOR FREE'/><author><name>Akira</name><uri>http://www.blogger.com/profile/15918355748743200254</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://photos1.blogger.com/hello/83/8816/640/GoForTheSun.0.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17674281.post-9159705737598010981</id><published>2007-08-17T09:25:00.000-07:00</published><updated>2008-04-14T13:35:44.335-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='ClearCase'/><title type='text'>MERGE WOES WITH .resx FILES</title><content type='html'>&lt;p class="western" style="margin-bottom: 0in;" align="justify"&gt;A few days back, I undertook the task of revamping the GUI of the application that I maintain. The application’s code has been written using VB.NET and Rational ClearCase (2003.06.10+) is the version control/change management tool for the same.&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0in;" align="justify"&gt;&lt;br /&gt;A branch (let’s call it &lt;i&gt;GUI branch&lt;/i&gt;) was created off the main branch. The GUI enhancements were performed on this &lt;i&gt;GUI branch&lt;/i&gt;. This involved addition of some new controls, changing the properties of some existing controls for one of the form &lt;i&gt;(frmMain.vb)&lt;/i&gt; files in the project. After the ‘new and improved’ GUI was given a green, I was faced with the task of merging the &lt;i&gt;GUI branch&lt;/i&gt; code with the main branch.&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0in;" align="justify"&gt;&lt;br /&gt;When I attempted to merge the files from &lt;i&gt;GUI branch&lt;/i&gt; to main, I received a message to the effect - &lt;i&gt;some of the conflicts could not be resolved by ClearCase, pl. do so via manual merge.&lt;/i&gt; The said message was received for the files &lt;i&gt;frmMain.vb&lt;/i&gt; (code file) and &lt;i&gt;frmMain.resx&lt;/i&gt; (resource file that is automatically generated by .NET). The conflicts in the code file I could resolve, but the .resx file had a large number of conflicts to be resolved (100+). I did complete the manual merge, but obviously I was not sure what I was doing.&lt;br /&gt;&lt;br /&gt;Having completed the merge manually I was left w/ code that crashed on execution. That’s when I started searching the Internet high and dry for possible pointers to solving the problem I was facing. I was confident of finding abundant literature on the subject since what I had attempted to do wasn’t anything other-worldly, besides the tools involved were prominent too. I was surprised at not finding much help on the subject. Just as I was about to abandon my search and consider myself ClearCase cursed, I came across &lt;a href="http://www-1.ibm.com/support/docview.wss?uid=swg21256807"&gt;this&lt;/a&gt; article.&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0in; text-align: justify;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;div style="text-align: justify;"&gt;I decided to give KDiff3 a try. On comparing the two .resx files that I was trying to merge I noticed that some of the merge conflicts were due to the insertion of new tags in the middle of one of the files. Clearly if these tags were moved to the end, some of the merge conflicts would disappear. &lt;/div&gt; &lt;p class="western" style="margin-bottom: 0in;" align="justify"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0in;" align="justify"&gt;Unlike ClearCase the merge conflicts in KDiff3 appeared simple to understand and thus resolve. I completed the manual merge of the .resx files via KDiff3. I used KDiff3 as a stand-alone tool and the process was clumsy (copying the .resx files to be merged on my local drive, merging and copying the result to the ClearCase repository). But I got my code to work and was able ship the build! KDiff3 has won my trust.&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0in;" align="justify"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0in;" align="justify"&gt;I must admit that I have not given enough thought about reconfiguring the default IBM® Rational® ClearCase® XML type manager to use KDiff3 when using ClearCase diff merge tools. Whether I will do that sometime soon, is doubtful (for reasons not worth mentioning here). However I wanted to document this mental note here.&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0in;" align="justify"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0in;" align="justify"&gt;To those of you who have come across situations like this and have figured out a work-around; I would like to hear from you.  &lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0in;" align="justify"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0in;" align="justify"&gt;Another approach that I took to solving this problem was to see if the .resx file would be generated automatically at compile time if it was deleted. In spite of the online reading and hands-on tweaks with .resx files, my understanding of them is still very hazy. Any pointers to understanding resx files will also be greatly appreciated.&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0in;" align="justify"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0in;" align="justify"&gt;On that note…. Tschuss erstmal!&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0in;" align="justify"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&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/17674281-9159705737598010981?l=bitsnbytestogo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbytestogo.blogspot.com/feeds/9159705737598010981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17674281&amp;postID=9159705737598010981' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17674281/posts/default/9159705737598010981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17674281/posts/default/9159705737598010981'/><link rel='alternate' type='text/html' href='http://bitsnbytestogo.blogspot.com/2007/08/merge-woes-with-resx-files.html' title='MERGE WOES WITH .resx FILES'/><author><name>Akira</name><uri>http://www.blogger.com/profile/15918355748743200254</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://photos1.blogger.com/hello/83/8816/640/GoForTheSun.0.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17674281.post-474075119091514924</id><published>2007-02-02T04:23:00.001-08:00</published><updated>2007-02-02T04:40:54.156-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB.NET'/><title type='text'>Of TreeView Nodes and their Fonts</title><content type='html'>&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="text-align: justify;" class="MsoNormal"&gt;If you ever happen to change (upgrade) the font (increase font size or make the font bold) of a node (&lt;span style=""&gt;Class TreeNode&lt;/span&gt;) in the TreeView (&lt;span style=""&gt;System.Windows.Forms.TreeView&lt;/span&gt;) and run your program, you will be sorry because the label of your node gets clipped!&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;The only way to work around this is apparently to set the font of your TreeView to the worst case condition; i.e. if you want to make some of the nodes bold then set the font to be bold. Change the font (from Bold to Regular) of the nodes when you actually add the nodes to the treeview.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;Here is a quick example -&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new; color: rgb(255, 255, 255);"&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: green;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: green;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: green;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;blockquote style="color: rgb(153, 255, 153);"&gt;&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;'Windows form designer generated code&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;'TreeView Initialization. I only want the root node to be bold, but I set the default FontStyle to Bold&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&lt;/span&gt;Me.tvwItems.Font = New System.Drawing.Font _&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;Private Sub AddNodestoTreeView()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;        &lt;/span&gt;'Create font object to change FontStyle of the nodes other than the root node&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;        &lt;/span&gt;Dim Font As Font&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;        &lt;/span&gt;Font = New Font(tvwItems.Font, FontStyle.Regular)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;       'Child nodes added&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;       &lt;/span&gt;'Change FontStyle for the nodes other than the root node&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;        &lt;/span&gt;CurNode.NodeFont = Font&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;End Sub&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;span style="color: rgb(255, 255, 255);font-family:courier new;" &gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;I’d appreciate your inputs on smarter workarounds to this.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;TIA!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17674281-474075119091514924?l=bitsnbytestogo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbytestogo.blogspot.com/feeds/474075119091514924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17674281&amp;postID=474075119091514924' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17674281/posts/default/474075119091514924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17674281/posts/default/474075119091514924'/><link rel='alternate' type='text/html' href='http://bitsnbytestogo.blogspot.com/2007/02/of-treeview-nodes-and-their-fonts_02.html' title='Of TreeView Nodes and their Fonts'/><author><name>Akira</name><uri>http://www.blogger.com/profile/15918355748743200254</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://photos1.blogger.com/hello/83/8816/640/GoForTheSun.0.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17674281.post-6771780676416380329</id><published>2007-02-01T05:34:00.000-08:00</published><updated>2008-12-09T07:45:23.150-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Version Control and Change Management'/><category scheme='http://www.blogger.com/atom/ns#' term='ClearCase'/><title type='text'>A Case for ClearCase</title><content type='html'>&lt;b style=""&gt;&lt;span style="font-size:18;"&gt;&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;&lt;span style="font-size:18;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;I think I am beginning to like &lt;a href="http://en.wikipedia.org/wiki/Clearcase"&gt;ClearCase&lt;/a&gt;; it is - smart enough to do the things that I want it to do, ‘not-so-simple’ that I take its rate its simplicity as dumbness and cryptic enough to have me spend hours researching to find a solution when I am stuck. I quite enjoy the digging it requires me to do; hopefully it is the learning curve that I am slowly conquering. The journey hasn’t been smooth, just when I think things are rolling, I am faced with a quirky problem. I probably should have documented my notes much earlier, for better clarity and accuracy, oh well; here they are for your consumption anyway.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;I use Rational ClearCase Explorer 2003.06.10+. I use ClearCase as the version control and change management solution for my VS.NET projects.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;ADDING A VS.NET PROJECT TO SOURCE CONTROL – &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ol style="text-align: justify;"&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;This is &lt;a href="http://www-1.ibm.com/support/docview.wss?rs=0&amp;uid=swg21129529"&gt;THE &lt;/a&gt;recommended way to add .NET project to source control. &lt;/li&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;If a project has already been added to source control through some other method, then it is advisable to change the source control mechanism ASAP. To do so select the solution/project in the .NET explorer and click on &lt;span style="font-style: italic;"&gt;File-&gt; Change Source Control&lt;/span&gt;. In the window that appears select the rows and click Bind. The Connected column status for each row should appear checked and the Status column should display Valid after a successful Bind operation. &lt;/li&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;The .suo and .vbproj files will NOT be added to source control if the recommended method of adding to source control is followed. These defaults should not be changed.&lt;/li&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;Some ClearCase specific files will be added to ClearCase after this operation. It should be ensured that these files are not moved or deleted. &lt;/li&gt;&lt;/ol&gt;        &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;The next thing that you need to know to use ClearCase is writing config. specs. Unfortunately, I have not found a comprehensive guide that helps with writing config. specs. Do you know of any? Pl. point if you do…&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;THE EARLY HURDLES - &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt; &lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CgeqRiMI5is/RcH0F6TYL-I/AAAAAAAAAA4/q-A8Q9GXIlk/s1600-h/NotTrusted.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_CgeqRiMI5is/RcH0F6TYL-I/AAAAAAAAAA4/q-A8Q9GXIlk/s200/NotTrusted.bmp" alt="" id="BLOGGER_PHOTO_ID_5026567041509240802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt; &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;If you are working with a dynamic view you are likely to view the error above. To get past this hurdle, you will need to change the security settings of your machine. Alternatively you could switch to snapshot views. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span style="font-size:11;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span style="font-size:11;"&gt;CHANGING SECURITY SETTINGS OF YOUR MACHINE&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span style="font-size:11;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;!--[if !supportLists]--&gt;&lt;ul&gt;&lt;li&gt;Start the .NET Configuration 1.1 tool&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;blockquote&gt;&lt;li style="text-align: justify;"&gt;Double click on Mscorcfg.msc in &lt;i style=""&gt;C:\WINDOWS\Microsoft.&lt;st1:stockticker st="on"&gt;NET&lt;/st1:stockticker&gt;\Framework\V1.1.4322&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;Double click on Microsoft .NET Framework 1.1 Configuration by going to &lt;i style=""&gt;Start-&gt;Control Panel-&gt;Administrative Tools&lt;/i&gt;.&lt;/li&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;ul&gt;&lt;li style="text-align: justify;"&gt;Click on Runtime Security Policy.&lt;span style=""&gt;  &lt;/span&gt;Then click on Increase Assembly Trust.&lt;span style=""&gt;  &lt;/span&gt;Select “Make changes to this computer” and click next.&lt;span style=""&gt;  &lt;/span&gt;Browse to &lt;i style=""&gt;&lt;your&gt;.&lt;/your&gt;&lt;/i&gt;&lt;span style=""&gt;  &lt;/span&gt;Click on open.&lt;span style=""&gt;  &lt;/span&gt;Click next.&lt;span style=""&gt;  &lt;/span&gt;Move arrow to Full Trust.&lt;span style=""&gt;  &lt;/span&gt;Click next.&lt;span style=""&gt;  &lt;/span&gt;Click Finish.&lt;span style=""&gt;  &lt;/span&gt;Select “Adjust Zone Security”.&lt;span style=""&gt;  &lt;/span&gt;Select “Make changes to this computer” and click next.&lt;span style=""&gt;  &lt;/span&gt;My Computer and Local Intranet should have Full Trust selected.&lt;span style=""&gt;  &lt;/span&gt;Click Next.&lt;span style=""&gt;  &lt;/span&gt;Click Finish.&lt;span style=""&gt;  &lt;/span&gt;Exit window.&lt;span style=""&gt;  &lt;/span&gt;Restart computer.&lt;/li&gt;&lt;/ul&gt;        &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:11;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;If not done correctly, you might get rid of the above mentioned error, but your code will break on you with the exception below. Time to re-trace steps and make sure security settings are set correctly. (To be honest, I don’t recollect the exact sequence of operations that led to this error.)&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CgeqRiMI5is/RcH0PaTYL_I/AAAAAAAAABA/82CIOKR2GkU/s1600-h/SecurityException.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_CgeqRiMI5is/RcH0PaTYL_I/AAAAAAAAABA/82CIOKR2GkU/s200/SecurityException.bmp" alt="" id="BLOGGER_PHOTO_ID_5026567204717998066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;ACCESS DENIED ERROR –&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;To fix this, you will need to download and install the hotfix says &lt;a href="http://support.microsoft.com/kb/875516/"&gt;Microsoft&lt;/a&gt;. &lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;If you are a command-line person, you will probably like to execute ClearCase Commands by clicking - &lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;i style=""&gt;Start-&gt;Run-&gt;&lt;/i&gt;cmd &lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;Hit Enter&lt;/p&gt; &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CgeqRiMI5is/RcHze6TYL8I/AAAAAAAAAAo/7UqmrknG6LU/s1600-h/cmd.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_CgeqRiMI5is/RcHze6TYL8I/AAAAAAAAAAo/7UqmrknG6LU/s200/cmd.bmp" alt="" id="BLOGGER_PHOTO_ID_5026566371494342594" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;LINKS –&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=""&gt;&lt;/span&gt;  &lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;a href="http://www.agsrhichome.bnl.gov/Controls/doc/ClearCaseEnv/5.0/ccase_all/ccref/cleartool.html%20"&gt;ClearCase Commands1&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;a href="http://www.yolinux.com/TUTORIALS/ClearcaseCommands.html"&gt;ClearCase Commands2&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;a href="http://techpubs.sgi.com/library/dynaweb_docs/0620/SGI_Developer/books/ClrC_CG/sgi_html/ch01.html%20"&gt;ClearCase Book&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;a href="http://www-1.ibm.com/support/docview.wss?rs=984&amp;amp;uid=swg21129630"&gt;VS.NET metadata files&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17674281-6771780676416380329?l=bitsnbytestogo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbytestogo.blogspot.com/feeds/6771780676416380329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17674281&amp;postID=6771780676416380329' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17674281/posts/default/6771780676416380329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17674281/posts/default/6771780676416380329'/><link rel='alternate' type='text/html' href='http://bitsnbytestogo.blogspot.com/2007/02/case-for-clearcase.html' title='A Case for ClearCase'/><author><name>Akira</name><uri>http://www.blogger.com/profile/15918355748743200254</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://photos1.blogger.com/hello/83/8816/640/GoForTheSun.0.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_CgeqRiMI5is/RcH0F6TYL-I/AAAAAAAAAA4/q-A8Q9GXIlk/s72-c/NotTrusted.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17674281.post-113885367639138135</id><published>2006-02-01T20:13:00.000-08:00</published><updated>2006-02-02T03:32:27.830-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BLOSXOM'/><category scheme='http://www.blogger.com/atom/ns#' term='IIS'/><title type='text'>How To: Setup a blog with limited access (GO BLOSXOM!)</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Mood:&lt;/b&gt; Monday Blues&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;Scene1:&lt;/b&gt; Monday morning at work. I need to get feedback about a product from users and domain experts. This feedback will determine (to an extent) the direction in which my project moves. So w/ a cup of hot coffee, I try to get my brain to wake up and think of how I can accomplish the task at hand. I know what I want; something that is far-reaching, simple yet secure. The coffee works and a couple of solutions come to mind. I try to analyze them but each solution seems to have some or the other drawback. Here are some of the options that I toyed around with -&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;ol style="margin-top: 0in;" start="1" type="1"&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;Meet-up in person…..sounds like a good idea to have      the company buy me lunch! Nah, but this is not a far-reaching solution. I      might end-up meeting only a handful of people. So DELETE it.&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;Creating a web-page with the desired UI. (You don’t      have to be a rocket scientist to figure that out….) Great! But who is      going to do it and how much time will it take and all the resource issues      and yess dealing w/ the red-tape. DITCH.&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;Create a new wiki-page and ship the link. People can      edit the page and post their feedback, comments. Umm….simple for me but      maybe not so simple my target audience. BACKUP PLAN.&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;Blog….Coolest and neatest. All I need to worry about      is the IP and security issues and these ARE the major issues. WAY TO GO &lt;b style=""&gt;&lt;i style=""&gt;iff&lt;/i&gt;&lt;/b&gt;      I can control and limit the access to this blog and also have control over      where the content is saved.&lt;/li&gt;&lt;/ol&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;And so I begin my quest for such a &lt;a href="http://software.newsforge.com/article.pl?sid=05/08/30/1657214&amp;from=rss"&gt;blog&lt;/a&gt; provider! After about an hour of googling I stumble upon this &lt;a href="http://blogging.typepad.com/how_to_blog/2004/08/creating_a_priv.html"&gt;post &lt;/a&gt;.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;Mood: &lt;/b&gt;Excited&lt;b style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;Scene2: &lt;/b&gt;&lt;st1:city st="on"&gt;&lt;st1:place st="on"&gt;Eureka&lt;/st1:place&gt;&lt;/st1:city&gt;! I see a ray of hope in &lt;a href="http://www.blosxom.com/"&gt;Blosxom &lt;/a&gt; and eagerly plunge into its documentation. After some reading, I am 50% convinced that this might work and decide to give it a shot. I plan to try my hand at it for about a day, see what results I get and then make a decision.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;Mood:&lt;/b&gt; Jubilant. Professional decorum prevented me from doing a victory dance.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;Scene3: &lt;/b&gt;Proudly showing off my piece of work to colleagues, etc; receive appreciative comments, questions, “I-am-impressed-but-don’t-want-to-sing-praises” expressions, etc. Getting this blog up and running was a fun learning experience. Learnt some, refreshed some about Perl, CGI scripts, IIS and HTML.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;Mood:&lt;/b&gt; Anticipating&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;Scene3:&lt;/b&gt; The next step before I actually use this for its intended purpose is of course to get the BOSS’S approval; me waiting for the same.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;HOW I DID IT&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ol style="margin-top: 0in;" start="1" type="1"&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;Installed the “for everyone” version of &lt;a href="http://www.blosxom.com/downloads.html"&gt;Blosxom&lt;/a&gt; (V2.0)      to run on my windows box.&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;Downloaded and installed the MSI for Windows of      &lt;a href="http://www.blogger.com/%20http://activestate.com/Products/Download/Download.plex?id=ActivePerl"&gt;ActivePerl&lt;/a&gt;.&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;Installed &lt;a href="http://www.microsoft.com/windows2000/en/server/help/default.asp?url=/windows2000/en/server/help/iint1.htm?id=4642"&gt;IIS &lt;/a&gt; on my Windows box. (OS -Windows XP      Professional). I host(IIS) my blog locally, so, all the content, including comments are saved on my machine.&lt;br /&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;Enabled the comments and comments count feature for      my blog using the &lt;a href="http://www.nukekiller.net/pollxn/"&gt;pollxn&lt;/a&gt; plugin and pollxn’s plugin for Blosxom. With this, I can have my audience provide me feedback.&lt;br /&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;I am using anonymous authentication method (default). &lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;Customized the look and feel of my blog using simple templates from the blosxom site.&lt;/li&gt;&lt;/ol&gt;      &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;b style=""&gt;SEE, I TOLD YOU SO&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;ol style="margin-top: 0in;" start="1" type="1"&gt;&lt;li&gt;&lt;b style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/b&gt;Follow instructions. They help. &lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;Knowing perl helps, but you will do fine if you don’t. &lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;Was a wee bit disappointed when I read the “Blosxom for windows – Coming soon”, after spending some time reading the documentation and getting all excited. Don’t worry. The “everyone” version works fine w/ windows. &lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;Windows XP Pro. does not have IIS installed by      default. I had assumed it was. &lt;span style=""&gt; &lt;/span&gt;I      was surprised that my machine did not have the Inetpub and wwwroot folders      and went ahead and created them. Very soon I realized the mystery behind      their absence; these folders are created during IIS installation.&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;I had hoped to use the &lt;a href="http://www.blosxom.com/plugins/authentication/login.htm"&gt;login&lt;/a&gt; plugin to have user      authentication for my blog. But decided to skip that since my machine      would be accessible only within my company domain and that was what I      wanted.&lt;/li&gt;&lt;/ol&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17674281-113885367639138135?l=bitsnbytestogo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbytestogo.blogspot.com/feeds/113885367639138135/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17674281&amp;postID=113885367639138135' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17674281/posts/default/113885367639138135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17674281/posts/default/113885367639138135'/><link rel='alternate' type='text/html' href='http://bitsnbytestogo.blogspot.com/2006/02/how-to-setup-blog-with-limited-access.html' title='How To: Setup a blog with limited access (GO BLOSXOM!)'/><author><name>Akira</name><uri>http://www.blogger.com/profile/15918355748743200254</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://photos1.blogger.com/hello/83/8816/640/GoForTheSun.0.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17674281.post-113816476736142766</id><published>2006-01-24T20:52:00.000-08:00</published><updated>2007-04-23T04:45:48.260-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='InstallShield'/><category scheme='http://www.blogger.com/atom/ns#' term='Deployment'/><title type='text'>Deploying VS.NET applications</title><content type='html'>&lt;p class="MsoNormal" style="text-align: justify;"&gt;This post aims at documenting my learnings during the deployment of a VB.NET application using the setup and deployment wizard in VS.NET (Version 2003). &lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;&lt;span style="text-transform: uppercase;font-size:14;" &gt;To InstallShield or not is the question!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;I had used InstallShield for deploying my VB 6.0 application&lt;/p&gt;  &lt;ul style="margin-top: 0in;" type="disc"&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;I had looked at the setup and deployment wizard of VB      6.0 and thought it sucked. I thought it was too primitive.&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;I had the .MSI file of the previous version and      realized that some quick modifications to this MSI and I would have the      installer for the new version.&lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;Taking the path of minimum effort, I chose InstallShield at that time. ;)&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;So when faced with the task of deploying my VB.NET application, I was in a dilemma whether to use InstallShield or the setup and deployment of VS.NET. After playing around with VS.NET’s setup and deployment wizard and inputs from a colleague, I decided that VS.NET it was! InstallShield has a lot of advanced functionalities but VS.NET had everything I needed. Besides I remember reading somewhere that being 3&lt;sup&gt;rd&lt;/sup&gt; party products InstallShield etc do not guarantee correct deployment.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;&lt;span style="font-size:14;"&gt;ORCA&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;Orca is a database table editor for creating and editing Windows Installer packages and merge modules. Trying to understand each and every table of an installer in detail is like experiencing an information avalanche (for me) and so I restricted myself to studying this information as and when and as much needed. Having ORCA definitely helps.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;Apparently some customizations for the installer can be done via ORCA alone. For ex. Asynchronous behavior between the installer and program launch after installation can be achieved by changing the Type entry for hex value row in the CustomAction table from 1554 to 1746. This does work, however what I would really like is that, the program should launch after I click the Close button on the installer i.e. the installer is DONE.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;Remember that the changes you make via ORCA will be gone every time you build your Installer project. So don’t forget to redo the ORCA edits!&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;&lt;span style="font-size:14;"&gt;WISH&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;I keep tweaking my code and thus need to remove and add the EXE to the installer project every time I generate a new EXE. Bad thing w/ this is that I need to re-exclude some files in the dependencies list, re-create all the shortcuts that I have created (because they reference the old EXE), and re-assign all the icon files. What is worse is that the project compiles even if I miss out on one of these and I discover the problem in the form of a non-informative error code, when I run the install. :( How I wish there was an option where by one could just refresh the EXE! (Maybe there is and just that I haven’t discovered it yet)&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;&lt;span style="font-size:14;"&gt;WATCH OUT&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;Renaming a Custom Action = BAAD!&lt;/li&gt;&lt;li&gt;A “Just me” install will not uninstall an “Everyone” install.&lt;/li&gt;&lt;/ul&gt;    &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;&lt;span style="font-size:14;"&gt;STILL SEEKING SOLUTIONS&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ol style="margin-top: 0in;" start="1" type="1"&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;Launching program after Installer has completed      installation.&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;Installing the .NET framework on the m/c during      installation if it is not found.&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;Having the “Would you like to launch &lt;installed&gt;program name..”      dialog at the end of the installation as per the norm. The Install      sequence has 3 phases Install, Progress and End. The wizard disallows any      dialogs after the Finish dialog. So even if I place the dialog just before      the Finish dialog, the custom action responsible for launching the program      runs before this Finish dialog and hence does not work out as I would like      it to. As of now, I have my custom dialog somewhere in the Install      sequence after the Read Me dialog (very weird!).&lt;/installed&gt;&lt;/li&gt;&lt;/ol&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;&lt;span style="font-size:14;"&gt;TROUBLESHOOTING&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;When faced with an aborted install and a message box with a “not-so-helpful” error code, try running the installer w/ the log option. The log file will hopefully have the clue to all your miseries.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;code&gt;&lt;i style=""&gt;&lt;span style="font-size:10;"&gt;msiexec /I "installer.msi" /l*v "nameoflogfile"&lt;o:p&gt;&lt;/o:p&gt;&lt;/logfile.log&gt;&lt;/nameoflogfile&gt;&lt;/path&gt;&lt;/installer.msi&gt;&lt;/span&gt;&lt;/i&gt;&lt;/code&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;code&gt;&lt;span style="font-size:10;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;Don’t fret if nothing works….because there is always GOOGLE and all the good people in the internet community who share and help! :)&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;&lt;span style="font-size:14;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;&lt;span style="text-transform: uppercase;font-size:14;" &gt;useful links&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;  &lt;/p&gt;&lt;ul style="margin-top: 0in;" type="disc"&gt;&lt;li class="MsoNormal" style=""&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vsintro7/html/vborideploymentinvisualstudio.asp"&gt;MSDN      links to Setup and Deployment using VS.NET&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;ul&gt;&lt;li&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;a href="http://www.c-sharpcorner.com/Code/2003/April/SetupProjects.asp"&gt;Setup      projects article&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;ul style="margin-top: 0in;" type="disc"&gt;&lt;li class="MsoNormal" style=""&gt;&lt;a href="http://www.simple-talk.com/2005/04/25/getting-started-with-setup-projects/"&gt;Getting      started with setup projects&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.simple-talk.com/2005/06/07/visual-studio-setup/"&gt;VS.NET      Setup project 2&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style="margin-top: 0in;" type="disc"&gt;&lt;li class="MsoNormal" style=""&gt;&lt;a href="http://www.simple-talk.com/2005/07/18/updates-to-setup-projects/"&gt;VS.NET      Setup project 3&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://community.installshield.com/"&gt;InstallShield      Forum&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;br /&gt;&lt;b style=""&gt;&lt;span style="text-transform: uppercase;font-size:14;" &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;a name="vborideploymentinvisualstudio"&gt;&lt;/a&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vsintro7/html/vborideploymentinvisualstudio.asp"&gt; &lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17674281-113816476736142766?l=bitsnbytestogo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbytestogo.blogspot.com/feeds/113816476736142766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17674281&amp;postID=113816476736142766' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17674281/posts/default/113816476736142766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17674281/posts/default/113816476736142766'/><link rel='alternate' type='text/html' href='http://bitsnbytestogo.blogspot.com/2006/01/deploying-vsnet-applications.html' title='Deploying VS.NET applications'/><author><name>Akira</name><uri>http://www.blogger.com/profile/15918355748743200254</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://photos1.blogger.com/hello/83/8816/640/GoForTheSun.0.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17674281.post-112963486745750831</id><published>2005-10-18T04:24:00.000-07:00</published><updated>2005-10-19T03:30:36.143-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DLL'/><title type='text'>DLL Fundas</title><content type='html'>&lt;p class="MsoNormal" style="text-align: justify;"&gt;Excerpts from various articles related to DLLs and Registry.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;DLLs Vs EXEs&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;Even though DLLs and applications are both executable program modules, they differ in several ways. To the end-user, the most obvious difference is that DLLs are not programs that can be directly executed. From the system's point of view, there are two fundamental differences between applications and DLLs: &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;• An application can have multiple instances of itself running in the system simultaneously, whereas a DLL can have only one instance.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;• An application can own things such as a stack, global memory, file handles, and a message queue, but a DLL cannot. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;DLL BASICS&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;• Each DLL has a set of classes. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;• Each class has its own set-up functions and sub-routines. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;• Public functions can be accessed outside of the DLL. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;• Private function cannot be accessed outside of the DLL. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;Use the following command to register a DLL&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;i style=""&gt;regsvr32 path\DLLName.dll&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;A message will tell you if it was successfully registered. If the registration did not work, make certain that you typed in the path and file name correctly.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;To unregister&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;i style=""&gt;regsvr32 /u path\DLLName.dll&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;When a program installs a library (DLL or OCX) file the program's install routine will typically "register" the file with the system. This process tells the system the libraries in the file are available for more than one program to use. (Some DLL or OCX files are self-registering.)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;COM class or Component Object Class (coclass)&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;(from the Platform SDK: COM / COM Class Objects and CLSIDs)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;"A COM server is implemented as a COM class. A COM class is an implementation of a group of interfaces in code executed whenever you interact with a given object.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;There is an important distinction between a C++ class and a COM class. In C++, a class is a type. A COM class is simply a definition of the object, and carries no type, although a C++ programmer might implement it using a C++ class. COM is designed to allow a class to be used by different applications, including applications written without knowledge of that particular class's existence. Therefore, class code for a given type of object exists either in a dynamic linked library (DLL) or in another application (EXE)."&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;COM object&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;A COM object is an instance of a COM Class at the runtime.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;COM class object or Class Factory&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;(from the Platform SDK: COM / COM Class Objects and CLSIDs)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;"The basic way to create an instance of a class (COM Class) is through a COM class object. This is simply an intermediate object that supports functions common to creating new instances (COM Object) of a given class (COM Class)."&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;COM component&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;COM component refers to a binary module, such as a DLL or an Executable. After registering, a component will expose one or more COM Class Object (or Object Factory).&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;Type Library&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;Type libraries contain the specification (metadata) for one or more COM elements, including classes, interfaces, enumerations, and more. These files are stored in a standard binary format. A type library can be a stand-alone file with the .tlb filename extension, or it can be stored as a resource in an executable file, which can have a .ocx, .dll, or .exe file name extension.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;COM IDs &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;In COM world, you have to identify different pieces such as coclasses, interfaces, type libraries, applications, etc. These pieces must be unique in the world.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;COM uses the Globally Unique IDentifier (GUID) to define these different IDs.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;In an Interface Definition Language (IDL) file, you have to use the attribute uuid that stands for Universally Unique IDentifier. A UUID and a GUID are equivalent.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;So, what is a GUID? A GUID is a 128-bit number, usually represented in hexadecimal, which is guaranteed "to be unique across space and time". For example, the following number is a GUID:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=""&gt; &lt;/span&gt;{60B4140E-B0A7-4540-B744-7E1A944E8C78}&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;COM borrows this identify system to the Distributed Computing Environment (DCE) naming scheme. The DCE RPC system uses UUIDs.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;The main COM IDs are:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=""&gt;    &lt;/span&gt;* LIBID: the Type Library ID, based on GUID.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=""&gt;    &lt;/span&gt;* APPID: the Application ID, based on GUID.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=""&gt;    &lt;/span&gt;* CLSID: the COM Class ID, based on GUID.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=""&gt;    &lt;/span&gt;* IID: the Interface ID, based on GUID.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=""&gt;    &lt;/span&gt;* PROGID: the Program ID, based on a text string. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;Class registration and file extension informations are stored under the HKEY_LOCAL_MACHINE\Software\Classes key.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;Hope this information helps you stay away from DLL Hell!&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b&gt;Some Resources&lt;/b&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;a href = "http://www.codeproject.com/com/mmtopo_comid.asp"&gt;COM Objects and Registry in a NutShell&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17674281-112963486745750831?l=bitsnbytestogo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbytestogo.blogspot.com/feeds/112963486745750831/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17674281&amp;postID=112963486745750831' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17674281/posts/default/112963486745750831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17674281/posts/default/112963486745750831'/><link rel='alternate' type='text/html' href='http://bitsnbytestogo.blogspot.com/2005/10/dll-fundas.html' title='DLL Fundas'/><author><name>Akira</name><uri>http://www.blogger.com/profile/15918355748743200254</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://photos1.blogger.com/hello/83/8816/640/GoForTheSun.0.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17674281.post-112953785421337905</id><published>2005-10-17T00:25:00.000-07:00</published><updated>2005-10-17T01:30:54.226-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OOAD'/><title type='text'>Designing Reusable Classes</title><content type='html'>&lt;p class="MsoNormal" style="text-align: justify;"&gt;Excerpts from the article &lt;a href="http://www.laputan.org/drc/drc.html"&gt;Designing Reusable Classes.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="text-align: justify;"&gt;Attributes of object-oriented languages promote reusable software. Data abstraction encourages modular systems that are easy to understand. Inheritance allows subclasses to share methods defined in superclasses, and permits programming-by-difference. Polymorphism makes it easier for a given component to work correctly in a wide range of new contexts. The combination of these features makes the design of object-oriented systems quite different from that of conventional systems.&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;As with any design task, designing reusable classes requires judgement, experience, and taste. However, this paper has organized many of the design techniques that are widely used within the object-oriented programming community so that new designers can acquire those skills more quickly.&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;An abstract class never has instances, only its subclasses have instances. The roots of class hierarchies are usually abstract classes, while the leaf classes are never abstract. Abstract classes usually do not define any instance variables. However, they define methods in terms of a few undefined methods that must be implemented by the subclasses.&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;A class that is not abstract is &lt;i&gt;concrete&lt;/i&gt;. In general, it is better to inherit from an abstract class than from a concrete class. A concrete class must provide a definition for its data representation, and some subclasses will need a different representation. Since an abstract class does not have to provide a data representation, future subclasses can use any representation without fear of conflicting with the one that they inherited.&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;The top of a large class hierarchy should almost always be an abstract class, so the experienced programmer will then try to reorganize the class hierarchy and find the abstract class hidden in the concrete class. The result will be a new abstract class that can be reused many times in the future.&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;Object-oriented design starts with objects. Booch suggests that the designer start with a natural language description of the desired system and use the nouns as a starting point for the classes of objects to be designed [Booch 1986]. Each verb is an operation, either one implemented by a class (when the class is the direct object) or one used by the class (when the class is the subject). The resulting list of classes and operations can be used as the start of the design process.&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;It can be difficult to decide whether an operation should be implemented as a method in a class or as a separate class. Halbert and O'Brien discuss this problem at length [Halbert &amp; O'Brien 1987]. In general, there is no absolute way to decide, but positive answers to the following questions all indicate that a new class should be created. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;ol start="1" type="1"&gt; &lt;li class="MsoNormal" style=""&gt;Is the operation a meaningful      abstraction? &lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Is the operation likely to be      shared by several classes?&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Is the operation complex?&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Does the operation make      little use of the representation of its operands?&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Will relatively few users of      the class want to use the operation?&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt; &lt;/ol&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;It can also be difficult to decide which class should implement an operation. Operations with several arguments can frequently be implemented as methods in the classes of any of its arguments. The rules listed above can also be used to make this decision. For example, if an operation does not send messages to an object or access its instance variables then it should not be in the object's class.&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;&lt;b&gt;&lt;span style="font-family:Arial;"&gt;Rules for Finding Abstract Classes &lt;/b&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;&lt;a name="Rule5"&gt;&lt;b&gt;Rule 5:&lt;/b&gt; &lt;i&gt;Class hierarchies should be deep and narrow. &lt;/i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/a&gt;&lt;/p&gt;   &lt;p style="text-align: justify;"&gt;&lt;span style=""&gt;A well developed class hierarchy should be several layers deep. A shallow class hierarchy is evidence that change is needed, but does not give any idea how to make that change.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p style="text-align: justify;"&gt;&lt;span style=""&gt;An obvious way to make a new superclass is to find some sibling classes that implement the same message and try to migrate the method to a common superclass. Of course, the classes are likely to provide different methods for the message, but it is often possible to break a method into pieces and place some of the pieces in the superclass and some in the subclasses. &lt;/span&gt;&lt;p&gt;&lt;a name="Rule6"&gt;&lt;b&gt;Rule 6:&lt;/b&gt; &lt;i&gt;The top of the class hierarchy should be abstract.&lt;/i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/a&gt;&lt;/p&gt;&lt;span style=""&gt;&lt;/span&gt;  &lt;p style="text-align: justify;"&gt;&lt;a name="Rule7"&gt;&lt;b&gt;Rule 7:&lt;/b&gt; &lt;i&gt;Minimize accesses to variables. &lt;/i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/a&gt;&lt;/p&gt;   &lt;p style="text-align: justify;"&gt;&lt;span style=""&gt;Since one of the main differences between abstract and concrete classes is the presence of data representation, classes can be made more abstract by eliminating their dependence on their data representation. One way this can be done is to access all variables by sending messages. The data representation can be changed by redefining the accessing messages. &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p style="text-align: justify;"&gt;&lt;a name="Rule8"&gt;&lt;b&gt;Rule 8:&lt;/b&gt; &lt;i style=""&gt;Subclasses should be specializations. &lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;   &lt;p style="text-align: justify;"&gt;&lt;span style=""&gt;There are several different ways that inheritance can be used [Halbert &amp; O'Brien 1987]. &lt;i&gt;Specialization&lt;/i&gt; is the ideal that is usually described, where the elements of the subclass can all be thought of as elements of the superclass. Usually the subclass will not redefine any of the inherited methods, but will add new methods. An important special case of specialization is making &lt;i&gt;concrete classes&lt;/i&gt;. Since an abstract class is not executable, making a subclass of an abstract class is different from making a subclass of a concrete class. The abstract class requires its subclasses to define certain operations, so making a concrete class is similar to filling in the blanks in a program template. An abstract class may define some operations in an overly general fashion, and the subclass may have to redefine them. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p style="text-align: justify;"&gt;&lt;span style=""&gt;In the middle of a project, it may be useful for a designer to make subclasses that are not specializations of their superclasses. If the superclasses are poorly designed, it might take a great deal of work to determine the proper design of the class hierarchy. It is better to forge ahead and then to later reorganize the classes. Thus, a subclass might be more general than its superclass or might have little relationship to its superclass other than borrowing code from it.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;span style=""&gt;&lt;/span&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17674281-112953785421337905?l=bitsnbytestogo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbytestogo.blogspot.com/feeds/112953785421337905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17674281&amp;postID=112953785421337905' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17674281/posts/default/112953785421337905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17674281/posts/default/112953785421337905'/><link rel='alternate' type='text/html' href='http://bitsnbytestogo.blogspot.com/2005/10/designing-reusable-classes.html' title='Designing Reusable Classes'/><author><name>Akira</name><uri>http://www.blogger.com/profile/15918355748743200254</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://photos1.blogger.com/hello/83/8816/640/GoForTheSun.0.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17674281.post-112894038117608763</id><published>2005-10-10T16:02:00.000-07:00</published><updated>2005-10-10T04:03:12.910-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OOAD'/><title type='text'>Encapsulating Information Hiding</title><content type='html'>I came across an excellent article that helps us see the difference between Encapsulation and Information hiding; 2 OO terms that are often synonymously used. Here is the URL for the article.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-05-2001/jw-0518-encapsulation.html"&gt; Encapsulation is not information hiding&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Below are excerpts from the article; things that I would like to keep in mind when I kick off a new OO implementation project.&lt;br /&gt;&lt;br /&gt;• &lt;span style="font-weight: bold;"&gt;Encapsulation &lt;/span&gt;is a language construct that facilitates the bundling of data with the methods operating on that data.&lt;br /&gt;&lt;br /&gt;• &lt;span style="font-weight: bold;"&gt;Information hiding&lt;/span&gt; is a design principle that strives to shield client classes from the internal workings of a class.&lt;br /&gt;&lt;br /&gt;• Encapsulation facilitates, but does not guarantee, information hiding.&lt;br /&gt;&lt;br /&gt;•&lt;span style="font-weight: bold;"&gt; Encapsulation rule 1:&lt;/span&gt; Place data and the operations that perform on that data in the same class.&lt;br /&gt;&lt;br /&gt;• &lt;span style="font-weight: bold;"&gt;Encapsulation rule 2:&lt;/span&gt; Use responsibility-driven design to determine the grouping of data and operations into classes.&lt;br /&gt;&lt;br /&gt;•&lt;span style="font-weight: bold;"&gt; Information hiding rule 1:&lt;/span&gt; Don't expose data items.&lt;br /&gt;&lt;br /&gt;• &lt;span style="font-weight: bold;"&gt;Information hiding rule 2:&lt;/span&gt; Don't expose the difference between stored data and derived data.&lt;br /&gt;&lt;br /&gt;•&lt;span style="font-weight: bold;"&gt; Information hiding rule 3:&lt;/span&gt; Don't expose a class's internal structure.&lt;br /&gt;&lt;br /&gt;•&lt;span style="font-weight: bold;"&gt; Information hiding rule 4:&lt;/span&gt; Don't expose implementation details of a class.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17674281-112894038117608763?l=bitsnbytestogo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbytestogo.blogspot.com/feeds/112894038117608763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17674281&amp;postID=112894038117608763' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17674281/posts/default/112894038117608763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17674281/posts/default/112894038117608763'/><link rel='alternate' type='text/html' href='http://bitsnbytestogo.blogspot.com/2005/10/encapsulating-information-hiding.html' title='Encapsulating Information Hiding'/><author><name>Akira</name><uri>http://www.blogger.com/profile/15918355748743200254</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://photos1.blogger.com/hello/83/8816/640/GoForTheSun.0.jpg'/></author><thr:total>0</thr:total></entry></feed>
