<?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-7085941</id><updated>2012-01-13T08:49:30.748-08:00</updated><title type='text'>Experience in C++, C#, Java and Process : Living in Montreal</title><subtitle type='html'>* What is my technical experience as a software developer
&lt;p&gt;
* What I have learned in the software business 
&lt;/p&gt;
&lt;p&gt;
* Where I am heading to in my career
&lt;/p&gt;
&lt;p&gt;
* How to process in a project
&lt;/p&gt;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://billibit.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://billibit.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Joe</name><uri>http://www.blogger.com/profile/04618327687649458144</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>31</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7085941.post-2222497210565891157</id><published>2011-05-11T14:56:00.000-07:00</published><updated>2011-05-13T13:41:17.029-07:00</updated><title type='text'>ZT 评论：中国会不会有Linkedin</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 宋体, arial, sans-serif; font-size: 12px; line-height: 21px; "&gt;&lt;div class="hd" style="margin-top: 0px; margin-right: auto; margin-bottom: 0px; margin-left: auto; padding-top: 22px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 588px; overflow-x: visible; overflow-y: visible; zoom: 1; text-align: center; clear: both; position: relative; z-index: 3; "&gt;&lt;h1 style="margin-top: 0px; margin-right: 0px; margin-bottom: 6px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 26px; font-weight: 800; color: rgb(0, 0, 0); font-family: 宋体, arial; font-style: normal; font-variant: normal; line-height: 30px; "&gt;&lt;a href="http://tech.qq.com/a/20110512/000030.htm"&gt;http://tech.qq.com/a/20110512/000030.htm&lt;/a&gt;&lt;/h1&gt;&lt;h1 style="margin-top: 0px; margin-right: 0px; margin-bottom: 6px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 26px; font-weight: 800; color: rgb(0, 0, 0); font-family: 宋体, arial; font-style: normal; font-variant: normal; line-height: 30px; "&gt;评论：中国会不会有Linkedin&lt;/h1&gt;&lt;div class="titBar" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 0px; padding-left: 5px; width: 578px; overflow-x: visible; overflow-y: visible; zoom: 1; position: relative; "&gt;&lt;div class="info" style="margin-top: 0px; margin-right: auto; margin-bottom: 0px; margin-left: auto; padding-top: 0px; padding-right: 80px; padding-bottom: 0px; padding-left: 0px; color: rgb(126, 126, 126); height: 16px; "&gt;&lt;span class="pubTime"&gt;2011年05月12日05:02&lt;/span&gt;&lt;span class="infoCol" style="padding-right: 19px; "&gt;&lt;span class="where" style="padding-left: 19px; color: rgb(126, 126, 126); "&gt;第一财经网站&lt;/span&gt;&lt;span class="auth" style="color: rgb(126, 126, 126); padding-left: 19px; "&gt;魏武挥&lt;/span&gt;&lt;/span&gt;&lt;span class="infoComm"&gt;&lt;a href="http://comment5.tech.qq.com/comment.htm?site=tech&amp;amp;id=28578315" id="cmt_1" target="_blank" style="color: rgb(11, 59, 140); text-decoration: none; "&gt;我要评论&lt;span class="num" style="color: rgb(51, 51, 51); "&gt;(&lt;em id="comNum" style="font-style: normal; font-weight: normal; color: rgb(204, 0, 0); "&gt;0&lt;/em&gt;)&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="fontSize" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; float: right; color: rgb(126, 126, 126); position: absolute; right: 0px; top: -3px; "&gt;字号：&lt;span class="small" title="切换到小字体" id="fontSmall" style="font-family: 'Times New Roman', arial; cursor: pointer; font-weight: bold; font-size: 10px; color: rgb(102, 102, 102); padding-right: 3px; padding-left: 3px; "&gt;T&lt;/span&gt;|&lt;span class="big" title="切换到大字体" id="fontBig" style="font-family: 'Times New Roman', arial; cursor: pointer; font-weight: bold; font-size: 13px; color: rgb(11, 59, 140); padding-left: 3px; padding-right: 3px; "&gt;T&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="bd" style="margin-top: 0px; margin-right: auto; margin-bottom: 0px; margin-left: auto; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 588px; overflow-x: visible; overflow-y: visible; zoom: 1; clear: both; position: relative; z-index: 2; "&gt;&lt;div class="Line" style="margin-top: 18px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; height: 1px; font-size: 0px; border-top-width: 1px; border-top-style: solid; border-top-color: rgb(229, 229, 229); "&gt;&lt;/div&gt;&lt;div id="Cnt-Main-Article-QQ" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 20px; padding-left: 0px; font-size: 14px; "&gt;&lt;p style="margin-top: 20px; margin-right: auto; margin-bottom: 0px; margin-left: auto; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 25px; text-indent: 2em; "&gt;本周，Linkedin已经为自己的IPO做了定价，区间在32~35美元，预期募集资金2.71亿美元，估值在30亿~33亿美元。这个所谓主打高端人群，74%会员受过高等教育，被誉为“职场SNS”的网络公司，拥有1亿用户，2010年营收2.43亿美元，利润1500多万美元。据公司声称，在Linkedin上，有200万个公司页面，73%的财富100强公司用过它的招聘解决方案，世界500强则全数成为它的会员。至于搜索各种人士：一年20亿次的搜索规模。&lt;/p&gt;&lt;p style="margin-top: 20px; margin-right: auto; margin-bottom: 0px; margin-left: auto; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 25px; text-indent: 2em; "&gt;Linkedin是2002年创办的，根据C2C(copy to China)的中国网络传统，2004年国内就有一个名为若邻的网站，并得到维众的投资(该公司成功投资了分众)。但这个网站的发展一度相当迟滞，甚至还出现过创始人出局的状况。今天更有了一些模仿者，比如刚刚上市的人人，就搞了一个经纬网，目标也是职场人群。&lt;/p&gt;&lt;p style="margin-top: 20px; margin-right: auto; margin-bottom: 0px; margin-left: auto; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 25px; text-indent: 2em; "&gt;但就笔者个人而言，相当看淡职场SNS在中国的发展。因为职场SNS的重要作用：找工作以及找人才，在中国文化土壤上，很难长出参天大树来。&lt;/p&gt;&lt;p style="margin-top: 20px; margin-right: auto; margin-bottom: 0px; margin-left: auto; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 25px; text-indent: 2em; "&gt;早期找工作，在网络上更多的是招聘类网站，比如前程、智联之类。这类网站的特点有二：其一相对低端化，主要供具体执行层面的岗位应聘以及应届毕业生海投使用。其二则呈现出广告化态势，很多企业并无真实招人需求，弄个logo上去当广告做了。这类网站后面还有跟随者，最近的就是百度人才。但我把百度人才更倾向于视为百度需要详细用户数据，做社交网络基础使用。&lt;/p&gt;&lt;p style="margin-top: 20px; margin-right: auto; margin-bottom: 0px; margin-left: auto; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 25px; text-indent: 2em; "&gt;对于很多中高端人才而言，招聘类网站的不给力，职场SNS就应运而生。但西方能亮的东西，未必在东方能亮。Linkedin的理论基石在于：弱关系理论。&lt;/p&gt;&lt;p style="margin-top: 20px; margin-right: auto; margin-bottom: 0px; margin-left: auto; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 25px; text-indent: 2em; "&gt;美国学者格兰诺维特在他一本名为《找工作》的书中，得出这样一个结论：弱关系在寻找职业机会中非常有用(他称之为弱纽带)。因为弱关系更能够在不同的团体间传递非重复性的信息，使得社交网络中的成员能够获得更丰富的信息资源。比如说一个搞公关的想跳槽去做程序员(假定此人会这门技术)，而由于长年搞公关，走动得勤快的朋友多是同行，便很难为此人提供程序员工作的机会。&lt;/p&gt;&lt;p style="margin-top: 20px; margin-right: auto; margin-bottom: 0px; margin-left: auto; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 25px; text-indent: 2em; "&gt;弱关系理论，最近大有取代“六度理论”的势头，数字巨头的掌门人动辄会提到这个名词。不过，事实上这个理论是很古老的社交网络理论(1973年)，也是很典型的西方理论。在1999年，华裔学者边燕杰就认为，在中国内地求职，强关系更有用。&lt;/p&gt;&lt;p style="margin-top: 20px; margin-right: auto; margin-bottom: 0px; margin-left: auto; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 25px; text-indent: 2em; "&gt;中国人的“关系”这个词的研究，几十年来一直没有脱离学者费孝通当年树立的一个概念：差序格局。费氏用这样一个比喻来形象地说明：中国人的社交格局就好像把一块石头丢在水面上所发生的一圈圈推出去的波纹。我们对身边的人会尽力去处理社交事务，随着关系的逐渐传递(也就是像水纹一样)，会越推越薄，越远越不当回事。指望很弱的关系来帮助你完成人生那么重大的事：求职，显然有点奢望了。&lt;/p&gt;&lt;p style="margin-top: 20px; margin-right: auto; margin-bottom: 0px; margin-left: auto; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 25px; text-indent: 2em; "&gt;互联网世界中的职场SNS，就是一种弱关系。在西方，弱关系能生效推动了越来越多的人以及公司使用类似Linkedin的服务。但由于中国依然是个强关系发生效用的社会，中国的职场SNS所能满足人们的需要就减弱很多。而这种功利性质很强的SNS，一旦最大目的达不成，就会变得无人问津。若邻网发展数年，现在几乎快成了一个散发各种营销活动信息的网站了。&lt;/p&gt;&lt;p style="margin-top: 20px; margin-right: auto; margin-bottom: 0px; margin-left: auto; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 25px; text-indent: 2em; "&gt;对于长期以来的C2C传统，笔者以为，门户时代、搜索时代都没有问题，因为无论是门户还是搜索，都是处理客观的信息，与该国的文化关系并不大。而到了社交网络时代，国与国，民族与民族的文化差异就变得至关重要。到底，社交网络是处理人的关系的网络。某种意义上讲，与美国正好相反，中国为什么微博强于SNS，文化上也算一个原因吧。&lt;/p&gt;&lt;p style="margin-top: 20px; margin-right: auto; margin-bottom: 0px; margin-left: auto; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 25px; text-indent: 2em; "&gt;(作者执教于上海交通大学传媒与设计学院，新媒体、互联网观察者)&lt;a href="http://www.qq.com/#pref=article" target="_blank" title="点击进入腾讯首页" id="backqqcom" style="color: rgb(11, 59, 140); text-decoration: none; "&gt;&lt;img src="http://www.qq.com/favicon.ico" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085941-2222497210565891157?l=billibit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billibit.blogspot.com/feeds/2222497210565891157/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7085941&amp;postID=2222497210565891157' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/2222497210565891157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/2222497210565891157'/><link rel='alternate' type='text/html' href='http://billibit.blogspot.com/2011/05/zt-linkedin.html' title='ZT 评论：中国会不会有Linkedin'/><author><name>Joe</name><uri>http://www.blogger.com/profile/04618327687649458144</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-7085941.post-116650750508488136</id><published>2006-12-18T21:51:00.000-08:00</published><updated>2006-12-18T21:51:45.246-08:00</updated><title type='text'>'.NET: Introducing Generics in the CLR,'bloggerForm','scrollbars=no,width=475,height=300,top=175,left=75,status=yes,resizable=yes</title><content type='html'>&lt;a href="http://msdn.microsoft.com/msdnmag/issues/06/00/NET/default.aspx"&gt;'.NET: Introducing Generics in the CLR,'bloggerForm','scrollbars=no,width=475,height=300,top=175,left=75,status=yes,resizable=yes&lt;/a&gt;: "Generics are an extension of the CLR type system that allow developers to define types for which certain details are left unspecified. These details are specified when the code is referenced by consumer code, making for enhanced flexibility. Jason Clark explains how."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085941-116650750508488136?l=billibit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billibit.blogspot.com/feeds/116650750508488136/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7085941&amp;postID=116650750508488136' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/116650750508488136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/116650750508488136'/><link rel='alternate' type='text/html' href='http://billibit.blogspot.com/2006/12/net-introducing-generics-in.html' title='&apos;.NET: Introducing Generics in the CLR,&apos;bloggerForm&apos;,&apos;scrollbars=no,width=475,height=300,top=175,left=75,status=yes,resizable=yes'/><author><name>Joe</name><uri>http://www.blogger.com/profile/04618327687649458144</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>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085941.post-116551691679776516</id><published>2006-12-07T10:40:00.000-08:00</published><updated>2006-12-07T10:42:29.393-08:00</updated><title type='text'>How do I debug a custom action/installer class?</title><content type='html'>You can use one of the following methods:&lt;br /&gt;Add a call in your code to System.Diagnostics.Debugger.Launch. This method opens Just-In-Time debugging and allows you to attach a new debugger to your code.&lt;br /&gt;Add a call in your code to MessageBox.Show("Debug Me"). When the message box is shown, use Visual Studio to attach to the &lt;a onclick="javascript:Track('ctl00_LibFrame_ctl18ctl00_LibFrame_ctl19',this);" href="http://msdn2.microsoft.com/en-us/library/system.windows.forms.messagebox(VS.80).aspx"&gt;MessageBox&lt;/a&gt; process. Then place breaks (for Visual C# projects) or stops (for Visual Basic projects) in the code.&lt;br /&gt;Set your debugging preferences to start InstallUtil.exe (which is located in \winnt\Microsoft.net\Framework\version) and pass it your assembly as a parameter. When you press F5, you hit your breakpoint. InstallUtil.exe will run your custom actions the same way that MSI does.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085941-116551691679776516?l=billibit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billibit.blogspot.com/feeds/116551691679776516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7085941&amp;postID=116551691679776516' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/116551691679776516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/116551691679776516'/><link rel='alternate' type='text/html' href='http://billibit.blogspot.com/2006/12/how-do-i-debug-custom-actioninstaller.html' title='How do I debug a custom action/installer class?'/><author><name>Joe</name><uri>http://www.blogger.com/profile/04618327687649458144</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>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085941.post-112482644193067704</id><published>2005-08-23T12:44:00.000-07:00</published><updated>2005-08-23T12:47:21.936-07:00</updated><title type='text'>DBDate, DBTime, DBTimeStamp, Date</title><content type='html'>System.Data.OleDb.OleDbType.DBDate = store date only in the database;&lt;br /&gt;System.Data.OleDb.OleDbType.DBTime= store time only in the database;&lt;br /&gt;&lt;br /&gt;&gt;&gt;&gt; The wrong one&lt;br /&gt;System.Data.OleDb.OleDbType.DBTimeStamp= store date&amp;time only in the database;&lt;br /&gt;&lt;br /&gt;&gt;&gt;&gt; The right one&lt;br /&gt;System.Data.OleDb.OleDbType.Date= store date&amp;time only in the database;&lt;br /&gt;&lt;br /&gt;Example:&lt;br /&gt;&lt;br /&gt;this.oleDbDeleteCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Original_TradeTime", System.Data.OleDb.OleDbType.Date, 0, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "TradeTime", System.Data.DataRowVersion.Original, null));&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085941-112482644193067704?l=billibit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billibit.blogspot.com/feeds/112482644193067704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7085941&amp;postID=112482644193067704' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/112482644193067704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/112482644193067704'/><link rel='alternate' type='text/html' href='http://billibit.blogspot.com/2005/08/dbdate-dbtime-dbtimestamp-date.html' title='DBDate, DBTime, DBTimeStamp, Date'/><author><name>Joe</name><uri>http://www.blogger.com/profile/04618327687649458144</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>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085941.post-111653276905871863</id><published>2005-05-19T12:57:00.000-07:00</published><updated>2005-05-19T12:59:29.063-07:00</updated><title type='text'>Change color of one cell in the DataGrid control ( C#)</title><content type='html'>&lt;a href="http://datawebcontrols.com/faqs/CustomizingAppearance/ConditionalFormatting.shtml"&gt;http://datawebcontrols.com/faqs/CustomizingAppearance/ConditionalFormatting.shtml&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The DataGrid provides a plethora of properties that can be set to specify the DataGrid's formatting. For example, you can have each consecutive row of a DataGrid alternate between two different colors merely by setting the DataGrid's AlternatingItemStyle's BackColor property.&lt;br /&gt;While the AlternatingItemStyle is a great way to apply different formatting for every other DataGrid row, oftentimes developers want to perform conditional formatting based on the value(s) of a DataGrid row. For example, imagine a DataGrid that displays a list of products, including the product's name and price. Perhaps you want to draw the user's attention to products that are at "bargain-basement" prices. Namely, if a product has a price less than, say, $10.00, you want to have that row highlighted.&lt;br /&gt;This can be accomplished by providing an event handler for the DataGrid's ItemDataBound event. The ItemDataBound fires once for each DataGridItem added to the DataGrid (that is, it fires once for each row that is added to the DataGrid). Essentially, what we need to do is in this event handler, check to see if the price is below the threshold ($10.00, or whatever lower bound you choose). If it is, then we want to set the DataGridItem's BackColor property to Yellow, thereby highlighting the row.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085941-111653276905871863?l=billibit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billibit.blogspot.com/feeds/111653276905871863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7085941&amp;postID=111653276905871863' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/111653276905871863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/111653276905871863'/><link rel='alternate' type='text/html' href='http://billibit.blogspot.com/2005/05/change-color-of-one-cell-in-datagrid.html' title='Change color of one cell in the DataGrid control ( C#)'/><author><name>Joe</name><uri>http://www.blogger.com/profile/04618327687649458144</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>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085941.post-111627179406990485</id><published>2005-05-16T12:28:00.000-07:00</published><updated>2005-05-16T12:29:54.073-07:00</updated><title type='text'>Setup with Serial Key required</title><content type='html'>&lt;a name="vxgrfserialnumbertemplateproperty"&gt;&lt;/a&gt;SerialNumberTemplate Property&lt;br /&gt;&lt;br /&gt;&lt;####-????-%%%%-????-%%%%-????-%%%%&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# Requires a digit that will not be included in the validation algorithm.&lt;br /&gt;% Requires a digit that will be included in the validation algorithm.&lt;br /&gt;? Requires an &lt;strong&gt;alphanumeric&lt;/strong&gt; character that will not be included in the validation algorithm&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085941-111627179406990485?l=billibit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billibit.blogspot.com/feeds/111627179406990485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7085941&amp;postID=111627179406990485' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/111627179406990485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/111627179406990485'/><link rel='alternate' type='text/html' href='http://billibit.blogspot.com/2005/05/setup-with-serial-key-required.html' title='Setup with Serial Key required'/><author><name>Joe</name><uri>http://www.blogger.com/profile/04618327687649458144</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-7085941.post-111620862131477637</id><published>2005-05-15T18:51:00.000-07:00</published><updated>2005-05-15T18:57:01.320-07:00</updated><title type='text'>DataSet Form Problems ( As always)</title><content type='html'>- When I used the Data Set Form Wizard in VS.NET 2003 to generate a dataset form, I got the error: "there were errors configuring the data adapter".  My god, it happens again. I spent 1 hour to repeat the whole procedure and I spent 3o minutes on Internet to find out how other people say about it.&lt;br /&gt;&lt;br /&gt;Finally I recalled the problem happend before:&lt;br /&gt;&lt;br /&gt;- If a column name in the Access database is special (I am not clear how special it could be), it will have this problem.&lt;br /&gt;  So I check the column name, find one is called Symbol, which looks special. I changed it to ProductSymbol, Great! the dataset form wizard worked.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085941-111620862131477637?l=billibit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billibit.blogspot.com/feeds/111620862131477637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7085941&amp;postID=111620862131477637' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/111620862131477637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/111620862131477637'/><link rel='alternate' type='text/html' href='http://billibit.blogspot.com/2005/05/dataset-form-problems-as-always.html' title='DataSet Form Problems ( As always)'/><author><name>Joe</name><uri>http://www.blogger.com/profile/04618327687649458144</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-7085941.post-111550112704228670</id><published>2005-05-07T14:24:00.000-07:00</published><updated>2005-05-07T14:25:27.046-07:00</updated><title type='text'>Good about Manifest</title><content type='html'>&lt;a href="http://blogs.msdn.com/junfeng/archive/2004/11/02/251318.aspx"&gt;http://blogs.msdn.com/junfeng/archive/2004/11/02/251318.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085941-111550112704228670?l=billibit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billibit.blogspot.com/feeds/111550112704228670/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7085941&amp;postID=111550112704228670' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/111550112704228670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/111550112704228670'/><link rel='alternate' type='text/html' href='http://billibit.blogspot.com/2005/05/good-about-manifest.html' title='Good about Manifest'/><author><name>Joe</name><uri>http://www.blogger.com/profile/04618327687649458144</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-7085941.post-111435009773174029</id><published>2005-04-24T06:39:00.000-07:00</published><updated>2005-04-24T06:41:37.733-07:00</updated><title type='text'>Mix cin &gt;&gt; and cin.getline in C++ program</title><content type='html'>If the cin.getline() is used after cin &gt;&gt;, the getline may just get a '\0' bacause the last cin &gt;&gt; call left it.&lt;br /&gt;How to fix it?&lt;br /&gt;&lt;br /&gt;cin.ignore(100,'\n');   &lt;br /&gt;cin.getline(buffer1, 80, '\n');&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085941-111435009773174029?l=billibit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billibit.blogspot.com/feeds/111435009773174029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7085941&amp;postID=111435009773174029' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/111435009773174029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/111435009773174029'/><link rel='alternate' type='text/html' href='http://billibit.blogspot.com/2005/04/mix-cin-and-cingetline-in-c-program.html' title='Mix cin &gt;&gt; and cin.getline in C++ program'/><author><name>Joe</name><uri>http://www.blogger.com/profile/04618327687649458144</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-7085941.post-111055188505634881</id><published>2005-03-11T06:22:00.000-08:00</published><updated>2005-03-11T06:38:05.056-08:00</updated><title type='text'>ADO.NET Datagrid database caching in VS.NET</title><content type='html'>// Add a new record to the database directlly&lt;br /&gt;// It is very slow since it is operating to the db without caching&lt;br /&gt;//&lt;br /&gt;public void AddLog(string info) &lt;br /&gt;{  &lt;br /&gt;objDatasetLog.LogTable.AddLogTableRow( DateTime.Now, 0, "User", info);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//&lt;br /&gt;// Better approach:&lt;br /&gt;//&lt;br /&gt;// Create a cache record, then merge to the real database laterly&lt;br /&gt;//&lt;br /&gt;public void AddLog(string info) &lt;br /&gt;{  &lt;br /&gt;// Create a new dataset to hold the records returned from the call to FillDataSet.  &lt;br /&gt;// A temporary dataset is used because filling the existing dataset would  &lt;br /&gt;// require the databindings to be rebound.  &lt;br /&gt;PDFAuto.DatasetLog objDataSetTemp;  &lt;br /&gt;objDataSetTemp = new PDFAuto.DatasetLog();&lt;br /&gt;   try   &lt;br /&gt;{   &lt;br /&gt;// Attempt to fill the temporary dataset.   &lt;br /&gt;&lt;br /&gt;objDataSetTemp.LogTable.AddLogTableRow( DateTime.Now, 0, "User", info);  &lt;br /&gt;}  &lt;br /&gt;catch (System.Exception eFillDataSet)   &lt;br /&gt;{   &lt;br /&gt;// Add your error handling code here.   &lt;br /&gt;throw eFillDataSet;  &lt;br /&gt;}  &lt;br /&gt;try   &lt;br /&gt;{   &lt;br /&gt;grdLogTable.DataSource = null;   &lt;br /&gt;// Empty the old records from the dataset.   &lt;br /&gt;objDatasetLog.Clear();   &lt;br /&gt;// Merge the records into the main dataset.   &lt;br /&gt;objDatasetLog.Merge(objDataSetTemp);   &lt;br /&gt;grdLogTable.SetDataBinding(objDatasetLog, "LogTable");  &lt;br /&gt;}  &lt;br /&gt;catch (System.Exception eLoadMerge)   &lt;br /&gt;{   &lt;br /&gt;// Add your error handling code here.   &lt;br /&gt;throw eLoadMerge;  &lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085941-111055188505634881?l=billibit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billibit.blogspot.com/feeds/111055188505634881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7085941&amp;postID=111055188505634881' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/111055188505634881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/111055188505634881'/><link rel='alternate' type='text/html' href='http://billibit.blogspot.com/2005/03/adonet-datagrid-database-caching-in.html' title='ADO.NET Datagrid database caching in VS.NET'/><author><name>Joe</name><uri>http://www.blogger.com/profile/04618327687649458144</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-7085941.post-110990637432963398</id><published>2005-03-03T19:17:00.000-08:00</published><updated>2005-03-03T19:19:34.330-08:00</updated><title type='text'>Set width and precision in iostream of STD</title><content type='html'>1. Call precision and width close to cout;&lt;br /&gt;2. fixed to enforce to show a float as 23.45 format&lt;br /&gt;&lt;br /&gt;int nLine = 1; for ( int i = 0; i &lt; 100; i += 5)&lt;br /&gt;{ &lt;br /&gt;cout.precision( 2);  cout.width( 6); &lt;br /&gt;cout &lt;&lt; fixed &lt;&lt; inch2cm( i) &lt;&lt; " ";&lt;br /&gt;if ( nLine % 10 == 0) &lt;br /&gt;{   cout &lt;&lt; endl;  } &lt;br /&gt;nLine++;&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085941-110990637432963398?l=billibit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billibit.blogspot.com/feeds/110990637432963398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7085941&amp;postID=110990637432963398' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110990637432963398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110990637432963398'/><link rel='alternate' type='text/html' href='http://billibit.blogspot.com/2005/03/set-width-and-precision-in-iostream-of.html' title='Set width and precision in iostream of STD'/><author><name>Joe</name><uri>http://www.blogger.com/profile/04618327687649458144</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-7085941.post-110720807195161508</id><published>2005-01-31T13:42:00.000-08:00</published><updated>2005-01-31T13:47:51.953-08:00</updated><title type='text'>Could not access 'CDO.Message' object while using SMTP in System.Web.Mail </title><content type='html'>Could not access 'CDO.Message' object:&lt;br /&gt;&lt;br /&gt;1. The SMTP server must accept your outcoming email address&lt;br /&gt;2. The SMTP server uses the standard port 25 for SMTP&lt;br /&gt;&lt;br /&gt;MailMessage Message = new MailMessage();&lt;br /&gt;&lt;br /&gt;Message.To = "&lt;a href="mailto:joe@xxx.com"&gt;joe@xxx.com&lt;/a&gt;";&lt;br /&gt;Message.From = "&lt;a href="mailto:xxx@sympatico.ca"&gt;xxx@sympatico.ca&lt;/a&gt;"; // This address must have been registered in the SMTP server you are using in SmtpMail.SmtpServer&lt;br /&gt;Message.Subject = "Test";&lt;br /&gt;Message.Body = "It is a testing message";&lt;br /&gt;&lt;br /&gt;SmtpMail.SmtpServer = "smtp8.sympatico.ca"; // The SMTP server&lt;br /&gt;&lt;br /&gt;SmtpMail.Send(Message);&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085941-110720807195161508?l=billibit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billibit.blogspot.com/feeds/110720807195161508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7085941&amp;postID=110720807195161508' title='20 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110720807195161508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110720807195161508'/><link rel='alternate' type='text/html' href='http://billibit.blogspot.com/2005/01/could-not-access-cdomessage-object.html' title='Could not access &apos;CDO.Message&apos; object while using SMTP in System.Web.Mail '/><author><name>Joe</name><uri>http://www.blogger.com/profile/04618327687649458144</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>20</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085941.post-110687773307283453</id><published>2005-01-27T18:01:00.000-08:00</published><updated>2005-01-30T07:08:39.056-08:00</updated><title type='text'>Reference places</title><content type='html'>&lt;ul&gt;&lt;li&gt;HTML &lt;a href="http://www.w3schools.com/"&gt;http://www.w3schools.com/&lt;/a&gt; &lt;/li&gt;&lt;li&gt;C# &lt;a href="http://www.sloppycode.net/"&gt;http://www.sloppycode.net&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085941-110687773307283453?l=billibit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billibit.blogspot.com/feeds/110687773307283453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7085941&amp;postID=110687773307283453' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110687773307283453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110687773307283453'/><link rel='alternate' type='text/html' href='http://billibit.blogspot.com/2005/01/reference-places.html' title='Reference places'/><author><name>Joe</name><uri>http://www.blogger.com/profile/04618327687649458144</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-7085941.post-110679205360940524</id><published>2005-01-26T18:13:00.000-08:00</published><updated>2005-01-26T21:29:20.806-08:00</updated><title type='text'>Regular expression in C#</title><content type='html'>It is time consuming to build a regular expression.&lt;br /&gt;I have a text file as below:&lt;br /&gt;&lt;br /&gt;idnameaddressemailfaxpassowrd&lt;br /&gt;example:&lt;br /&gt;000010034981Mr. Ray BabsMontreal Canada Test@glinknet.com5142842903PassWord&lt;br /&gt;&lt;br /&gt;How do I parse it? Note it is possible no value for address, email, fax, or password&lt;br /&gt;&lt;br /&gt;Here is the regular expression I built ( 2 hours work)&lt;br /&gt;&lt;br /&gt;(?&lt;id&gt;\d+)\(?&lt;name&gt;(.[^]+))\(?&lt;br /&gt;&lt;address&gt;()(.[^]+))\(?&lt;email&gt;(.[^]+)())\(?&lt;fax&gt;()(.[^]+))\(?&lt;pdfcode&gt;(.+()))&lt;br /&gt;&lt;br /&gt;It retrives the value to groups defined by "?&lt;group&gt;"&lt;br /&gt;(&lt;span style="color:#ff6666;"&gt;? &lt;/span&gt;&lt;span style="color:#993300;"&gt;()&lt;/span&gt;&lt;span style="color:#990000;"&gt;&lt;/span&gt;&lt;span style="color:#66cccc;"&gt;(.[^]+)&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#ff6666;"&gt;Can you find better expression?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/address&gt;&lt;div align="left"&gt;&lt;address&gt;Regex regx = new Regex( @"(?&lt;id&gt;\d+)\(?&lt;name&gt;(.[^]+))\(? &lt;address&gt;()(.[^]+))\(?&lt;email&gt;(.[^]+)())\(?&lt;fax&gt;()(.[^]+))\(?&lt;pdfcode&gt;(.+()))", RegexOptions.IgnoreCase RegexOptions.Singleline RegexOptions.IgnorePatternWhitespace RegexOptions.Compiled );&lt;br /&gt;Match m = regx.Match( line);&lt;br /&gt;if ( !m.Success) &lt;/address&gt;&lt;address&gt;{ &lt;/address&gt;&lt;address&gt;System.Diagnostics.Debug.WriteLine( line, "Import Text Error"); &lt;/address&gt;&lt;address&gt;continue; &lt;/address&gt;&lt;address&gt;} &lt;/address&gt;&lt;address&gt; &lt;/address&gt;&lt;address&gt;string id = m.Result( "${id}"); &lt;/address&gt;&lt;address&gt;string name = m.Result( "${name}"); &lt;/address&gt;&lt;address&gt;string address = m.Result( "${address}"); &lt;/address&gt;&lt;address&gt;string email = m.Result( "${email}"); &lt;/address&gt;&lt;address&gt;string fax = m.Result( "${fax}"); &lt;/address&gt;&lt;address&gt;string pdfcode = m.Result( "${pdfcode}");&lt;br /&gt;&lt;/address&gt;&lt;address&gt;&lt;br /&gt; &lt;/address&gt;&lt;/address&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085941-110679205360940524?l=billibit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billibit.blogspot.com/feeds/110679205360940524/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7085941&amp;postID=110679205360940524' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110679205360940524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110679205360940524'/><link rel='alternate' type='text/html' href='http://billibit.blogspot.com/2005/01/regular-expression-in-c.html' title='Regular expression in C#'/><author><name>Joe</name><uri>http://www.blogger.com/profile/04618327687649458144</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-7085941.post-110668050919552604</id><published>2005-01-25T11:14:00.000-08:00</published><updated>2005-02-10T09:30:23.520-08:00</updated><title type='text'>Data access in VS.NET demo : C#</title><content type='html'>1. &lt;a href="http://www.dotnetjunkies.com/Tutorial/92FD33CA-7528-42A0-B974-8607A04B8B56.dcik"&gt;http://www.dotnetjunkies.com/Tutorial/92FD33CA-7528-42A0-B974-8607A04B8B56.dcik&lt;/a&gt;&lt;br /&gt;2. Introduction&lt;br /&gt;When using the Visual Studio.NET IDE to create connections to MS Access databases, the default wrapper only puts Dates into Date/Time fields. This causes only the date to be saved and on the time when a date/time is written to the data set and Update is called.&lt;br /&gt;How to fix it?&lt;br /&gt;1) This is caused by the Wizard using DBDate rather than DBTimeStamp in the OleDbParameter method generated by the wizard. Ofcourse each time you regenerate this code using the wizard you will have to do the replace again.&lt;br /&gt;Note: This has to be done in all OleDbParameter calls that use System.Data.OleDb.OleDbType.DBDate and replace with System.Data.OleDb.OleDbType.DBTimeStamp&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;Actually, this solution does not work. INSERT causes an error about type mismatch&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;2) Just change to &lt;span style="color:#ff0000;"&gt;&lt;em&gt;&lt;strong&gt;System.Data.OleDb.OleDbType.Date&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt; and it will work. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;3. Don't use 'Level' as a row name in a table, VS.NET IDE will not generate data adapter for it.&lt;br /&gt;&lt;br /&gt;4. Expend the width of a column&lt;br /&gt;   int nWidth = objColumnStylegrdLogTableEvent_Level.Width+objColumnStylegrdLogTableInfo.Width + objColumnStylegrdLogTableTime.Width;&lt;br /&gt;   objColumnStylegrdLogTableInfo.Width = grdLogTable.Width - nWidth;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085941-110668050919552604?l=billibit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billibit.blogspot.com/feeds/110668050919552604/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7085941&amp;postID=110668050919552604' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110668050919552604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110668050919552604'/><link rel='alternate' type='text/html' href='http://billibit.blogspot.com/2005/01/data-access-in-vsnet-demo-c.html' title='Data access in VS.NET demo : C#'/><author><name>Joe</name><uri>http://www.blogger.com/profile/04618327687649458144</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-7085941.post-110667093720729434</id><published>2005-01-25T08:33:00.000-08:00</published><updated>2005-01-25T08:35:37.206-08:00</updated><title type='text'>Get the application start up path : C#</title><content type='html'>// Gets the path for the executable file that started the application, including the executable name.&lt;br /&gt;string aPath1 = System.Windows.Forms.Application.ExecutablePath;    &lt;br /&gt;&lt;br /&gt;// Gets the path for the executable file that started the application, not including the executable name.&lt;br /&gt;string aPath2 = System.Windows.Forms.Application.StartupPath;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085941-110667093720729434?l=billibit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billibit.blogspot.com/feeds/110667093720729434/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7085941&amp;postID=110667093720729434' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110667093720729434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110667093720729434'/><link rel='alternate' type='text/html' href='http://billibit.blogspot.com/2005/01/get-application-start-up-path-c.html' title='Get the application start up path : C#'/><author><name>Joe</name><uri>http://www.blogger.com/profile/04618327687649458144</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-7085941.post-110654097738421942</id><published>2005-01-23T20:28:00.000-08:00</published><updated>2005-01-23T20:29:37.386-08:00</updated><title type='text'>.NET Framework Launch Condition</title><content type='html'>&lt;a name="vxtskaddingnetframeworklaunchcondition"&gt;&lt;/a&gt;&lt;br /&gt;See Also&lt;br /&gt;&lt;a href="ms-help://MS.VSCC.2003/MS.MSDNQTR.2004OCT.1033/vsintro7/html/vxconlaunchconditionmanagementindeployment.htm"&gt;Launch Condition Management in Deployment&lt;/a&gt;  &lt;a href="ms-help://MS.VSCC.2003/MS.MSDNQTR.2004OCT.1033/vsintro7/html/vxgrfsupportedruntimesproperty.htm"&gt;SupportedRuntimes Property&lt;/a&gt;  &lt;a href="ms-help://MS.VSCC.2003/MS.MSDNQTR.2004OCT.1033/vsintro7/html/vxgrfmessageproperty.htm"&gt;Message Property&lt;/a&gt;  &lt;a href="ms-help://MS.VSCC.2003/MS.MSDNQTR.2004OCT.1033/vsintro7/html/vxgrfinstallurlproperty.htm"&gt;InstallUrl Property&lt;/a&gt;  Working With Multiple Versions of the .NET Framework  Side-by-Side Execution  &lt;a href="ms-help://MS.VSCC.2003/MS.MSDNQTR.2004OCT.1033/vsintro7/html/vxconlaunchconditionproperties.htm"&gt;Properties for the Launch Conditions Editor&lt;/a&gt;&lt;br /&gt;The .NET Framework launch condition is used to check for the common language runtime on a target computer during installation. This launch condition is automatically added to a deployment project when a dependency on the .NET Framework is detected; it cannot be removed.&lt;br /&gt;If a version of the runtime specified in the SupportedRuntimes property is not found, the installation is halted. The user is presented with a Yes / No dialog box containing the text specified in the Message property. If the user chooses Yes, he is redirected to the location specified in the InstallUrl property (the default is a Microsoft Support Web site that contains a downloadable copy of the .NET Framework redistributable file).&lt;br /&gt;In many cases, you will want to modify the InstallUrl property to point to your own location for the redistributable file. For example, if you are distributing your application on CD-ROM, you should include the redistributable file on the CD and change the InstallUrl property to a relative file path. If you change the InstallUrl property, you should also change the Message property to explain what is being installed and from where.&lt;br /&gt;In addition, any Visual Studio .NET application or component that includes data access has a dependency on Microsoft Data Access Components (MDAC) version 2.7 or later. You will also need to add a launch condition to check for MDAC if your application includes data access. For more information, see Adding a Launch Condition for Microsoft Data Access Components.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085941-110654097738421942?l=billibit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billibit.blogspot.com/feeds/110654097738421942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7085941&amp;postID=110654097738421942' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110654097738421942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110654097738421942'/><link rel='alternate' type='text/html' href='http://billibit.blogspot.com/2005/01/net-framework-launch-condition.html' title='.NET Framework Launch Condition'/><author><name>Joe</name><uri>http://www.blogger.com/profile/04618327687649458144</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-7085941.post-110649847349661915</id><published>2005-01-23T08:39:00.000-08:00</published><updated>2005-01-23T08:41:13.496-08:00</updated><title type='text'>Add a taskbar tray in C#</title><content type='html'>C# provides the NotifyIcon in task bar as a component. Here is some event it has to handle:&lt;br /&gt;&lt;br /&gt;private void FormMain_Resize(object sender, System.EventArgs e) &lt;br /&gt;{  &lt;br /&gt;  if (FormWindowState.Minimized == WindowState)    Hide(); &lt;br /&gt;}&lt;br /&gt;private void notifyIconTask_DoubleClick(object sender, System.EventArgs e) &lt;br /&gt;{  &lt;br /&gt; Show();  &lt;br /&gt; WindowState = FormWindowState.Normal;  &lt;br /&gt;}&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085941-110649847349661915?l=billibit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billibit.blogspot.com/feeds/110649847349661915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7085941&amp;postID=110649847349661915' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110649847349661915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110649847349661915'/><link rel='alternate' type='text/html' href='http://billibit.blogspot.com/2005/01/add-taskbar-tray-in-c.html' title='Add a taskbar tray in C#'/><author><name>Joe</name><uri>http://www.blogger.com/profile/04618327687649458144</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-7085941.post-110617909625399648</id><published>2005-01-19T15:51:00.000-08:00</published><updated>2005-01-19T15:58:16.253-08:00</updated><title type='text'>Thread pool in C#</title><content type='html'>There is pre-created threads pool in C#. Use this threads in the pool could make the programming easier and faster. But be noted, if all of the threads in the pool are used, you will get an exception.&lt;br /&gt;How does it exactly work for a threads pool? Can a application creates its own threads pool with the same design?&lt;br /&gt;&lt;br /&gt;Need to be clarified!&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085941-110617909625399648?l=billibit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billibit.blogspot.com/feeds/110617909625399648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7085941&amp;postID=110617909625399648' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110617909625399648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110617909625399648'/><link rel='alternate' type='text/html' href='http://billibit.blogspot.com/2005/01/thread-pool-in-c.html' title='Thread pool in C#'/><author><name>Joe</name><uri>http://www.blogger.com/profile/04618327687649458144</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-7085941.post-110608557391704130</id><published>2005-01-18T13:46:00.000-08:00</published><updated>2005-01-18T13:59:50.596-08:00</updated><title type='text'>Broken Software Design theory </title><content type='html'>It must exists a research area to break software design.&lt;br /&gt;A software is designed for purpose and it must run correctly following the procedure designed. In the design process, the designer may only think of how to make it works smoothly which assumes every condition is followed correctly. It is not designed for exceptions which may make the software failed.&lt;br /&gt;&lt;br /&gt;The Broken Software Design theory stduies how to break a software in the design stage.&lt;br /&gt;&lt;br /&gt;It helps the designer to look at the design from different perspectives and improve the design as well.&lt;br /&gt;&lt;br /&gt;For more information, please keep trace this blog.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085941-110608557391704130?l=billibit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billibit.blogspot.com/feeds/110608557391704130/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7085941&amp;postID=110608557391704130' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110608557391704130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110608557391704130'/><link rel='alternate' type='text/html' href='http://billibit.blogspot.com/2005/01/broken-software-design-theory.html' title='Broken Software Design theory '/><author><name>Joe</name><uri>http://www.blogger.com/profile/04618327687649458144</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-7085941.post-110549883929309688</id><published>2005-01-11T18:50:00.000-08:00</published><updated>2005-01-11T19:00:39.293-08:00</updated><title type='text'>XP can't boot to safemode !!!</title><content type='html'>Big problem:&lt;br /&gt;1. I am working on a project and I installed a MIDI input device simulation driver called MIDI-YOKE.&lt;br /&gt;2. After computer restarted as required, it stopped just before the login screen showup&lt;br /&gt;3. I can not boot into safemode; I believe that the problems was in the YOKE driver.&lt;br /&gt;4. What I am going to do? reformatting the disk and install XP again? No way! I have a lot of work to do: a new system release is coming and my computer can's stop&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;5. Clam down, Joe.&lt;/span&gt;&lt;br /&gt;6. Search online, didn't find something really helpful.&lt;br /&gt;7. I am a Microsoft believer. There must a way to let windows booting procedure ingore the YOKE driver&lt;br /&gt;8. I tried to boot into Safemode command&lt;br /&gt;9. OK, I can type dos command&lt;br /&gt;10. Regedit, search the drive name, delete everything related to it.&lt;br /&gt;11. Control.exe. Cool! the control panel shows up. Goto System-&gt;Device Management, find the YOKE device, delete it!&lt;br /&gt;12. Reboot, then it is working!&lt;br /&gt;13. I have to Ghost my disk C and back up all of my work.&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;14. Never try anything stupid&lt;/span&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085941-110549883929309688?l=billibit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billibit.blogspot.com/feeds/110549883929309688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7085941&amp;postID=110549883929309688' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110549883929309688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110549883929309688'/><link rel='alternate' type='text/html' href='http://billibit.blogspot.com/2005/01/xp-cant-boot-to-safemode.html' title='XP can&apos;t boot to safemode !!!'/><author><name>Joe</name><uri>http://www.blogger.com/profile/04618327687649458144</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-7085941.post-110520131866630413</id><published>2005-01-08T08:18:00.000-08:00</published><updated>2005-01-08T08:21:58.666-08:00</updated><title type='text'>C# : Marshal class is a bridge between managed memory and unmanaged memory</title><content type='html'>Marshal provides a collection of methods:&lt;br /&gt;- allocating unmanaged memory,&lt;br /&gt;- copying unmanaged memory blocks,&lt;br /&gt;- converting managed to unmanaged types,&lt;br /&gt;- interacting with unmanaged code.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085941-110520131866630413?l=billibit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billibit.blogspot.com/feeds/110520131866630413/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7085941&amp;postID=110520131866630413' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110520131866630413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110520131866630413'/><link rel='alternate' type='text/html' href='http://billibit.blogspot.com/2005/01/c-marshal-class-is-bridge-between.html' title='C# : Marshal class is a bridge between managed memory and unmanaged memory'/><author><name>Joe</name><uri>http://www.blogger.com/profile/04618327687649458144</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-7085941.post-110360291589230872</id><published>2004-12-20T20:20:00.000-08:00</published><updated>2004-12-20T20:21:55.893-08:00</updated><title type='text'>Show a form as a dialog box in C#</title><content type='html'>About about = new About();  &lt;br /&gt;&lt;br /&gt;// Show it as a diaglog&lt;br /&gt;about.ShowDialog(); &lt;br /&gt;&lt;br /&gt;// Show it as a form&lt;br /&gt;about.Show(); &lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085941-110360291589230872?l=billibit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billibit.blogspot.com/feeds/110360291589230872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7085941&amp;postID=110360291589230872' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110360291589230872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110360291589230872'/><link rel='alternate' type='text/html' href='http://billibit.blogspot.com/2004/12/show-form-as-dialog-box-in-c.html' title='Show a form as a dialog box in C#'/><author><name>Joe</name><uri>http://www.blogger.com/profile/04618327687649458144</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>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085941.post-110351004865371888</id><published>2004-12-19T18:11:00.000-08:00</published><updated>2005-01-27T07:43:59.393-08:00</updated><title type='text'>VS.NET Setup Project : Issues and Solutions</title><content type='html'>&lt;strong&gt;Environment:&lt;/strong&gt;&lt;br /&gt;Microsoft Visual Studio.NET 2003&lt;br /&gt;Windows XP SP2&lt;br /&gt;DELL Inspiron 8200, CPU P4-M 1.6M ,512MB 15.4LCD, 40G, 3COM Wireless, DVD+CDRW, Logitech MX310&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Project:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;During the install process , the setup asks users to give a project name [ProjectName]. If the user select Link.NET Example, the setup will install a [defult database]; if not, the database will not be installed.&lt;/li&gt;&lt;li&gt;The [defult database] contains a few of folders up to 20.&lt;/li&gt;&lt;li&gt;Add an Uninstall menu along with the main program menu.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;Solutions &amp; &lt;span style="color:#ff0000;"&gt;Problems&lt;/span&gt;:&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Add a new dialog Textboxes (B) in the user interface editor, press F4 to show its property window. Assign "EDIT_PROJECTNAME" as Edit1Property and "Link.NET Example" as Edit1Value, so [EDIT_PROJECTNAME] can be used anywhere to represent "Link.NET Example".&lt;/li&gt;&lt;li&gt;Drag/drop a database folder to the Application Folder in the File System. VS.NET will add the whole folder hiberarchy to the setup folder. &lt;span style="color:#ff0000;"&gt;[Problem] &lt;/span&gt;&lt;span style="color:#ff0000;"&gt;If you wnat to delete the folders from the setup project, it would be nightmare. The root folder can not be deleted if each of its subfolders contains any files. To remove the whole folder, first of all, you have to remove all files in each folder, by hands! I have tried to move the database file to a MSM file, but it never works.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#ff0000;"&gt;&lt;span style="color:#000000;"&gt;Show the database folder property, set the Condition property as "[EDIT_PROJECTNAME] == "Link.NET Example"". During the setup procedure, this Condition will be checked to determine if the database should be installed.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;[More about Condition]  Add a provision that allows users to create a shortcut to the FormattingApplication in their desktops. As before, you'll need to add the shortcut to the User's Desktop folder. Right-click on Primary output from the FormattingApplication (Active) item in the Application folder and select Create Shortcut to Primary output from FormattingApplication (Active) from the context menu. Rename the shortcut Formatting Application. Drag and drop it in the User's Desktop folder. However, you want this shortcut to be installed only if the user wants to install it. Therefore, set the Condition property of the User's Desktop folder to SHORTCUTDEMO. This ensures that the shortcut will be installed only if this condition is set to true. Later in this article, you will create a dialog box where this property can be set.  &lt;a href="http://www.codeguru.com/Csharp/.NET/net_vs_addins/visualstudioadd-ins/article.php/c7245/"&gt;Web like help&lt;/a&gt;&lt;/li&gt;&lt;li&gt;VS.NET setup project does not encourage to add a uninstallation menu along with the application invoking menu. To do that, you have to add a shortcut for &lt;strong&gt;"msiexec /x [productcode]". &lt;/strong&gt;&lt;span style="color:#ff0000;"&gt;But, you have to add msiexec into your application folder first before creating the shortcut.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;I can create a menu with static name during the setup, but I want to assign the menu name with user's own defined project name. &lt;span style="color:#ff0000;"&gt;It is impossible to do it in VS.NET setup project.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085941-110351004865371888?l=billibit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billibit.blogspot.com/feeds/110351004865371888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7085941&amp;postID=110351004865371888' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110351004865371888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110351004865371888'/><link rel='alternate' type='text/html' href='http://billibit.blogspot.com/2004/12/vsnet-setup-project-issues-and.html' title='VS.NET Setup Project : Issues and Solutions'/><author><name>Joe</name><uri>http://www.blogger.com/profile/04618327687649458144</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-7085941.post-110332330775642911</id><published>2004-12-17T14:40:00.001-08:00</published><updated>2004-12-17T14:41:47.756-08:00</updated><title type='text'>Add a new link for Employment</title><content type='html'>&lt;a href="http://www.newworldproducts.org/Employment/"&gt;Employment&lt;/a&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085941-110332330775642911?l=billibit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billibit.blogspot.com/feeds/110332330775642911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7085941&amp;postID=110332330775642911' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110332330775642911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110332330775642911'/><link rel='alternate' type='text/html' href='http://billibit.blogspot.com/2004/12/add-new-link-for-employment.html' title='Add a new link for Employment'/><author><name>Joe</name><uri>http://www.blogger.com/profile/04618327687649458144</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-7085941.post-110312241237089251</id><published>2004-12-15T06:50:00.000-08:00</published><updated>2004-12-15T06:53:32.370-08:00</updated><title type='text'>C# Practise: System.Diagnostics.Process.Start</title><content type='html'>The following two code blocks are same:&lt;br /&gt;1.&lt;br /&gt;System.Diagnostics.Process.Start("&lt;a href="http://www.glinknet.com"&gt;http://www.glinknet.com&lt;/a&gt;");&lt;br /&gt;return;&lt;br /&gt;  &lt;br /&gt;2.&lt;br /&gt;System.Diagnostics.Process p = new System.Diagnostics.Process();  &lt;br /&gt;p.StartInfo.FileName = "&lt;a href="http://www.glinknet.com/"&gt;http://www.glinknet.com&lt;/a&gt;";   &lt;br /&gt;p.StartInfo.Verb = "Show";  &lt;br /&gt;p.StartInfo.CreateNoWindow = true;  &lt;br /&gt;p.Start(); &lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085941-110312241237089251?l=billibit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billibit.blogspot.com/feeds/110312241237089251/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7085941&amp;postID=110312241237089251' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110312241237089251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110312241237089251'/><link rel='alternate' type='text/html' href='http://billibit.blogspot.com/2004/12/c-practise-systemdiagnosticsprocesssta.html' title='C# Practise: System.Diagnostics.Process.Start'/><author><name>Joe</name><uri>http://www.blogger.com/profile/04618327687649458144</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-7085941.post-110308982271251487</id><published>2004-12-14T21:48:00.000-08:00</published><updated>2004-12-20T17:48:10.493-08:00</updated><title type='text'>Use IE as references in C# project</title><content type='html'>You may need both references:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;SHDocVw &lt;/strong&gt;= Microsoft Internet Controls : the DOM&lt;br /&gt;&lt;br /&gt;1. Add references ...&lt;br /&gt;2. Choose COM tab, select &lt;strong&gt;Component Name&lt;/strong&gt; as &lt;strong&gt;&lt;span style="color:#ff0000;"&gt;Microsoft Internet Controls&lt;/span&gt;&lt;/strong&gt;.&lt;br /&gt;3. Done&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Mshtml&lt;/strong&gt; = Microsoft HTML Object Library : The IE core engine&lt;br /&gt;1. Add references ...&lt;br /&gt;2. Select Microsoft.mshtml assembly under the .NET tab.&lt;br /&gt;3. Add&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;How they work together ?&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;IHTMLDocument (or IHTMLDocument2) interface is defined at mshtml and it must be retrieved from the shdocvw interface&lt;/li&gt;&lt;li&gt;SHDocVw.IWebBrowser2 IEHost = (SHDocVw.IWebBrowser2)this.Explorer;&lt;/li&gt;&lt;li&gt;mshtml.IHTMLDocument2 doc = (mshtml.IHTMLDocument2) IEHost.Document;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085941-110308982271251487?l=billibit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billibit.blogspot.com/feeds/110308982271251487/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7085941&amp;postID=110308982271251487' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110308982271251487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110308982271251487'/><link rel='alternate' type='text/html' href='http://billibit.blogspot.com/2004/12/use-ie-as-references-in-c-project.html' title='Use IE as references in C# project'/><author><name>Joe</name><uri>http://www.blogger.com/profile/04618327687649458144</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-7085941.post-110308960487607695</id><published>2004-12-14T21:42:00.000-08:00</published><updated>2004-12-14T21:47:48.473-08:00</updated><title type='text'>Solve "strong name" error in C# project</title><content type='html'>Error:&lt;br /&gt;&lt;br /&gt;Assembly generation failed -- Referenced assembly 'Interop.Project1' does not have a strong name&lt;br /&gt;&lt;br /&gt;Problem:&lt;br /&gt;1. Add ShDocVw reference in my C# project&lt;br /&gt;2. Make method calls&lt;br /&gt;SHDocVw.IWebBrowser htmlDoc2 = (SHDocVw.IWebBrowser)this.Explorer;&lt;br /&gt;string s = htmlDoc2.LocationURL;&lt;br /&gt;3. Error when compiling&lt;br /&gt;&lt;br /&gt;Solutions:&lt;br /&gt;If a Visual C# .NET project references the COM Interop assembly, the COM Interop assembly is generated for you when you reference the COM dynamic-link library (DLL). You can specify the wrapper assembly key file in the Visual C# project properties as follows:&lt;br /&gt;&lt;br /&gt;To strongly-name a VS-generated Interop assembly, you need to go to yourproject properties and in the Common -&gt; General section, set the WrapperAssembly Key File to point to your SNK file. The path used is relative tothe csproj/vbproj file, so for a typical arrangement where the snk file iswith the sln file and the projects are in subdirs, then it'd be just"..\yourkey.snk"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085941-110308960487607695?l=billibit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billibit.blogspot.com/feeds/110308960487607695/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7085941&amp;postID=110308960487607695' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110308960487607695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110308960487607695'/><link rel='alternate' type='text/html' href='http://billibit.blogspot.com/2004/12/solve-strong-name-error-in-c-project.html' title='Solve &quot;strong name&quot; error in C# project'/><author><name>Joe</name><uri>http://www.blogger.com/profile/04618327687649458144</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-7085941.post-110308861740516157</id><published>2004-12-14T21:30:00.000-08:00</published><updated>2004-12-14T21:30:17.406-08:00</updated><title type='text'>Interesting Blog.</title><content type='html'>&lt;a href="http://e-technology.blogspot.com/"&gt;billibit.blogspot.com or http://www.glinknet.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085941-110308861740516157?l=billibit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billibit.blogspot.com/feeds/110308861740516157/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7085941&amp;postID=110308861740516157' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110308861740516157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110308861740516157'/><link rel='alternate' type='text/html' href='http://billibit.blogspot.com/2004/12/interesting-blog.html' title='Interesting Blog.'/><author><name>Joe</name><uri>http://www.blogger.com/profile/04618327687649458144</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-7085941.post-110277094425163474</id><published>2004-12-11T05:15:00.000-08:00</published><updated>2004-12-11T05:15:44.250-08:00</updated><title type='text'>choice is an illusion-</title><content type='html'>&lt;a href="http://chocolatekimchi.blogspot.com/"&gt;choice is an illusion-&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085941-110277094425163474?l=billibit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billibit.blogspot.com/feeds/110277094425163474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7085941&amp;postID=110277094425163474' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110277094425163474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110277094425163474'/><link rel='alternate' type='text/html' href='http://billibit.blogspot.com/2004/12/choice-is-illusion.html' title='choice is an illusion-'/><author><name>Joe</name><uri>http://www.blogger.com/profile/04618327687649458144</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-7085941.post-110070574673737948</id><published>2004-11-17T07:27:00.000-08:00</published><updated>2004-11-20T07:54:43.596-08:00</updated><title type='text'>Interview questions</title><content type='html'>I attended an technical interview for C++ developer yesterday. From the interviewer's questions, I didn't think the compony knows what is the most important for a programmer and what is his/her value to the company.&lt;br /&gt;&lt;br /&gt;- The interviewer asked questions which covers some corner I have never used in my 9 years of working&lt;br /&gt;&lt;br /&gt;- The most important components such as realibility coding, security, refactoring skills, and vision for the development process are not covered at all&lt;br /&gt;&lt;br /&gt;- These questions may be good for a new graduates who memorized some concepts and be able to repeat. For a developer with 9 years of experience, some of these questions are never covered in work&lt;br /&gt;&lt;br /&gt;I am going to post some of the interview questions:&lt;br /&gt;&lt;br /&gt;Interview Questions:&lt;br /&gt;1.&lt;br /&gt;Void* p = NULL;&lt;br /&gt;Delete p;&lt;br /&gt;&lt;br /&gt;2.&lt;br /&gt;What is polymorphism?&lt;br /&gt;Is overload ?&lt;br /&gt;Override&lt;br /&gt;&lt;br /&gt;3. Explain the difference:&lt;br /&gt;Const char* p;&lt;br /&gt;Char* const p;&lt;br /&gt;Char const * p;&lt;br /&gt;Const char const *p;&lt;br /&gt;&lt;br /&gt;4. There are 100 classes and every class has a virtual function. If we create 2 instances for each class, how many vtable(s) are created?&lt;br /&gt;5.&lt;br /&gt;Std::string firstName;&lt;br /&gt;Const std::string lastName;&lt;br /&gt;&lt;br /&gt;Static void main(&lt;br /&gt;{&lt;br /&gt;// How to initialize the firstName&lt;br /&gt;// How to initialize the lastName&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;6.&lt;br /&gt;Class Base&lt;br /&gt;{&lt;br /&gt;Base () { Init()};&lt;br /&gt;&lt;br /&gt;Virtual Init() { printout( “Base::Base()” )}&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;Class Derived: public Base&lt;br /&gt;{&lt;br /&gt;Virtual Init() { printout( “Derived::Derived()” )}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Derived b;&lt;br /&gt;What will print out?&lt;br /&gt;7.&lt;br /&gt;What CObject does in MFC?&lt;br /&gt;&lt;br /&gt;8. One main thread working on GUI, one work thread working on heavy loading works.&lt;br /&gt;The main thread indicates the working progress. How does the work thread send messages to the main thread for this purpose?&lt;br /&gt;&lt;br /&gt;9. Do you know Design Pattern? Give a name of Design Pattern&lt;br /&gt;I did give an example of a Design Pattern, which is used by the Microsoft Internet Explorer design team. But I forgot the pattern name. The interviewer is not happy about that, so he insisted me to give a name.&lt;br /&gt;I am not a new graduate from school. I put my practice inegrated with the computer science theory. I know better than design pattern other people who only know names but can't connect in reality.&lt;br /&gt;&lt;br /&gt;I am not happy about the interview.&lt;br /&gt;&lt;br /&gt;Visist my site &lt;a href="http://www.glinknet.com/"&gt;http://www.glinknet.com/&lt;/a&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085941-110070574673737948?l=billibit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billibit.blogspot.com/feeds/110070574673737948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7085941&amp;postID=110070574673737948' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110070574673737948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085941/posts/default/110070574673737948'/><link rel='alternate' type='text/html' href='http://billibit.blogspot.com/2004/11/interview-questions.html' title='Interview questions'/><author><name>Joe</name><uri>http://www.blogger.com/profile/04618327687649458144</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>3</thr:total></entry></feed>
