<?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-3403449520331224322</id><updated>2011-10-02T15:30:57.661-07:00</updated><category term='Macro for Visual Studio 2005 Keyboard Shortcuts'/><category term='Process lock'/><category term='T-SQL'/><category term='SQL'/><category term='dll lock'/><category term='tasklist'/><category term='GROUP BY'/><title type='text'>Baytek Software Team</title><subtitle type='html'>flex/flash/actionscript2/3/c#/c++/mssql/asp.net</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://bayteksoftware.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3403449520331224322/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://bayteksoftware.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Baran Baygan</name><uri>http://www.blogger.com/profile/13570982049450897523</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3403449520331224322.post-2330656844422069310</id><published>2011-10-02T15:30:00.001-07:00</published><updated>2011-10-02T15:30:57.963-07:00</updated><title type='text'>Odashow</title><content type='html'>&lt;br /&gt;A Turkish version of fiverr.com: &amp;nbsp; &lt;a href="http://www.odashow.com/"&gt;www.odashow.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3403449520331224322-2330656844422069310?l=bayteksoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bayteksoftware.blogspot.com/feeds/2330656844422069310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3403449520331224322&amp;postID=2330656844422069310' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3403449520331224322/posts/default/2330656844422069310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3403449520331224322/posts/default/2330656844422069310'/><link rel='alternate' type='text/html' href='http://bayteksoftware.blogspot.com/2011/10/odashow.html' title='Odashow'/><author><name>Baran Baygan</name><uri>http://www.blogger.com/profile/13570982049450897523</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-3403449520331224322.post-7020717518387200484</id><published>2011-03-11T09:53:00.000-08:00</published><updated>2011-03-11T09:58:14.459-08:00</updated><title type='text'></title><content type='html'>Do you want to find out what application pool in IIS is running in which w3wp.exe?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Start a new cmd window&lt;/li&gt;&lt;li&gt;Go to system32 &lt;/li&gt;&lt;li&gt;Run "cscript iisapp.vbs"&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;It will generate a list...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3403449520331224322-7020717518387200484?l=bayteksoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bayteksoftware.blogspot.com/feeds/7020717518387200484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3403449520331224322&amp;postID=7020717518387200484' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3403449520331224322/posts/default/7020717518387200484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3403449520331224322/posts/default/7020717518387200484'/><link rel='alternate' type='text/html' href='http://bayteksoftware.blogspot.com/2011/03/do-you-want-to-find-out-what.html' title=''/><author><name>Kaz Baygan</name><uri>http://www.blogger.com/profile/03498197220990765292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_dySBxDH3maQ/SX41senZQmI/AAAAAAAAAA4/FQO6IXulYBU/S220/kaz2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3403449520331224322.post-4503748604969982592</id><published>2009-02-03T11:34:00.000-08:00</published><updated>2009-02-03T11:36:25.497-08:00</updated><title type='text'>Paged exec stored procedure</title><content type='html'>&lt;p class="csharpcode"&gt;&lt;br /&gt;&lt;br /&gt;CREATE PROCEDURE [dbo].[PagedExec]&lt;br /&gt;(&lt;br /&gt;@sqlIn NVARCHAR(4000),&lt;br /&gt;@PageIndex INT=1,&lt;br /&gt;@PageSize INT=10,&lt;br /&gt;@OrderBy NVARCHAR(255)='',&lt;br /&gt;@OrderByType NVARCHAR(10)='ASC',&lt;br /&gt;@NumberOfTotalPages int out,&lt;br /&gt;@NumberOfTotalRecords int out&lt;br /&gt;)&lt;br /&gt;AS&lt;br /&gt;SET NOCOUNT ON&lt;br /&gt;DECLARE @sql NVARCHAR(4000)&lt;br /&gt;DECLARE @sqlInLower NVARCHAR(4000)&lt;br /&gt;DECLARE @SelectIndex int;&lt;br /&gt;DECLARE @FromIndex int;&lt;br /&gt;DECLARE @StartExtractIndex int;&lt;br /&gt;DECLARE @EndExtractLen int;&lt;br /&gt;DECLARE @WhereIndex int;&lt;br /&gt;DECLARE @GroupByPresent int&lt;br /&gt;&lt;br /&gt;Select @sqlInLower = Lower(@sqlIn)&lt;br /&gt;SELECT @SelectIndex=CHARINDEX ( 'select', @sqlInLower)&lt;br /&gt;SELECT @FromIndex=CHARINDEX ( 'from', @sqlInLower)&lt;br /&gt;SELECT @GroupByPresent=CHARINDEX ( 'group by', @sqlInLower)&lt;br /&gt;Set @StartExtractIndex = @SelectIndex + LEN('Select')&lt;br /&gt;-- Add the row count stuff&lt;br /&gt;-- The Order By in the ROW_NUMBER functiuonality is dummy. Overriden by the order by in select statement&lt;br /&gt;Set @sql = N'Select ROW_NUMBER() OVER (ORDER BY ' + @OrderBy + N' ' + @OrderByType + N') AS RowNumber, '&lt;br /&gt;Set @sql = @sql + right(@sqlIn, LEN(@sqlIn) - @StartExtractIndex)&lt;br /&gt;-- Now wrap the with stuff&lt;br /&gt;set @sql = N'WITH sqlWithRowNumbers AS(' + @sql + N')'&lt;br /&gt;-- Find the selected fields&lt;br /&gt;Declare @sqlSelectedFields NVARCHAR(2000)&lt;br /&gt;Declare @sqlOriginalFields NVARCHAR(2000)&lt;br /&gt;set @sqlOriginalFields = substring (@sqlIn, @StartExtractIndex, @FromIndex-@StartExtractIndex)&lt;br /&gt;set @sqlSelectedFields = ' '&lt;br /&gt;Declare @loop int&lt;br /&gt;set @loop=1&lt;br /&gt;declare @index1 int&lt;br /&gt;declare @index2 int&lt;br /&gt;SELECT @index1=CHARINDEX ( '''', @sqlOriginalFields)&lt;br /&gt;SELECT @index2=CHARINDEX ( '''', @sqlOriginalFields, @index1+1)&lt;br /&gt;&lt;br /&gt;while @loop=1&lt;br /&gt;Begin&lt;br /&gt;BEGIN TRY&lt;br /&gt;Declare @FieldName NVARCHAR(500)&lt;br /&gt;Set @FieldName = '"' + Substring(@sqlOriginalFields, @index1+1, @index2-@index1-1) + '"'&lt;br /&gt;print @FieldName&lt;br /&gt;if @FieldName &lt;&gt; '" "'&lt;br /&gt;Begin&lt;br /&gt;if @sqlSelectedFields &lt;&gt; ' '&lt;br /&gt;set @sqlSelectedFields = @sqlSelectedFields + ', '&lt;br /&gt;Set @sqlSelectedFields = @sqlSelectedFields + @FieldName&lt;br /&gt;End&lt;br /&gt;set @index2 = @index2+1&lt;br /&gt;set @index1 = @index2;&lt;br /&gt;SELECT @index1=CHARINDEX ( '''', @sqlOriginalFields, @index1+1)&lt;br /&gt;if @index1=0&lt;br /&gt;Begin&lt;br /&gt;Set @loop=0&lt;br /&gt;break;&lt;br /&gt;End&lt;br /&gt;SELECT @index2=CHARINDEX ( '''', @sqlOriginalFields, @index1+1)&lt;br /&gt;END TRY&lt;br /&gt;BEGIN CATCH&lt;br /&gt;Set @loop=0&lt;br /&gt;END CATCH&lt;br /&gt;End&lt;br /&gt;print @sqlSelectedFields&lt;br /&gt;print @PageIndex&lt;br /&gt;set @sql = @sql + N' Select ' + @sqlSelectedFields + N' from sqlWithRowNumbers'&lt;br /&gt;set @sql = @sql + ' Where RowNumber between '&lt;br /&gt;set @sql = @sql + STR(((@PageIndex - 1) * @PageSize) + 1)&lt;br /&gt;set @sql = @sql + N' and '&lt;br /&gt;set @sql = @sql + STR(@PageIndex*@PageSize)&lt;br /&gt;EXEC sp_executesql @sql&lt;br /&gt;DECLARE @ParmDefinition NVARCHAR(500)&lt;br /&gt;SET @ParmDefinition = N'@NumberOfTotalRecords int OUTPUT'&lt;br /&gt;if @GroupByPresent&gt;0&lt;br /&gt;Set @sql = N'select @NumberOfTotalRecords = count(*) from (Select Count(*) as cnt ' + right(@sqlIn, LEN(@sqlIn) - @FromIndex+2) + ') as grpcnt'&lt;br /&gt;else&lt;br /&gt;Set @sql = N'Select @NumberOfTotalRecords = Count(*) ' + right(@sqlIn, LEN(@sqlIn) - @FromIndex+2)&lt;br /&gt;EXEC sp_executesql @sql, @ParmDefinition, @NumberOfTotalRecords out&lt;br /&gt;Declare @floatTemp float&lt;br /&gt;Declare @floatTemp1 float&lt;br /&gt;Declare @floatTemp2 float&lt;br /&gt;-- If we do not use temp float variables, the CEILING function does not work, down below.&lt;br /&gt;Set @floatTemp1 = @NumberOfTotalRecords&lt;br /&gt;Set @floatTemp2 = @PageSize&lt;br /&gt;set @floatTemp = CEILING(@floatTemp1 / @floatTemp2)&lt;br /&gt;Set @NumberOfTotalPages = CEILING(@floatTemp)&lt;br /&gt;if @NumberOfTotalRecords is NULL&lt;br /&gt;set @NumberOfTotalRecords= 0&lt;br /&gt;if @NumberOfTotalPages is NULL&lt;br /&gt;set @NumberOfTotalPages= 0&lt;br /&gt;print @NumberOfTotalRecords&lt;br /&gt;print @NumberOfTotalPages&lt;br /&gt;RETURN 0&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/3403449520331224322-4503748604969982592?l=bayteksoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bayteksoftware.blogspot.com/feeds/4503748604969982592/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3403449520331224322&amp;postID=4503748604969982592' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3403449520331224322/posts/default/4503748604969982592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3403449520331224322/posts/default/4503748604969982592'/><link rel='alternate' type='text/html' href='http://bayteksoftware.blogspot.com/2009/02/paged-exec-stored-procedure.html' title='Paged exec stored procedure'/><author><name>Kaz Baygan</name><uri>http://www.blogger.com/profile/03498197220990765292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_dySBxDH3maQ/SX41senZQmI/AAAAAAAAAA4/FQO6IXulYBU/S220/kaz2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3403449520331224322.post-5787356536705873999</id><published>2009-01-26T14:55:00.000-08:00</published><updated>2009-01-28T17:30:15.263-08:00</updated><title type='text'>About Baytek</title><content type='html'>We are boutique software Development Company, based in Los Angeles, California. Our forte is .Net development of any kind. Our business model is very simple.&lt;br /&gt;1- We place in house developers for expedited development. This helps us understand your business quickly.&lt;br /&gt;2- We use offshore developers to accompany in-house developers. This cuts cost down.&lt;br /&gt;3- We take on only limited projects, so we don’t dilute our resources.&lt;br /&gt;4- Quality is our main focus. Cost comes second. We only hire good programmers and pay them well. Our experience shows that work done by unqualified people is a waste of money, time and a source of a big mess that is only to be cleaned up by someone else.&lt;br /&gt;We have created sample useful applications for our potential client to download and evaluate our capabilities. These applications are absolutely free and yours to keep. They will prove to be useful to you as well as giving you sense of how we can help you. Enjoy…&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.codeplex.com/wsdldisco"&gt;Wsdldisco&lt;br /&gt;&lt;/a&gt;This is a very useful tool for SOA developers. You can use this tool to create a single access point, a portal, for all your web services. Please visit the link to get more info on the tool.&lt;br /&gt;Wsdldisco is a very good &lt;strong&gt;&lt;span style="color:#ff9900;"&gt;ASPX.Net sample&lt;/span&gt;&lt;/strong&gt;. This tool illustrates our depth of knowledge of ASP.Net platform. Here are some key points:&lt;br /&gt;1- Usage of Reflection technology.&lt;br /&gt;2- Dynamic code generation.&lt;br /&gt;3- Dynamic code compilation.&lt;br /&gt;4- Dynamic assembly manipulation and Web page adaptation.&lt;br /&gt;5- Static and dynamic web page generation.&lt;br /&gt;6- Modular design using UserControl and assemblies.&lt;br /&gt;7- Implementation of Ajax.&lt;br /&gt;8- Implementation of Interfaces and abstract classes.&lt;br /&gt;9- Implementation of documentation using MS Sandcastle.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://baranflex.blogspot.com/2008/12/imdb-movie-catalog-with-adobe-air.html"&gt;MovieCatalog &lt;/a&gt;&lt;br /&gt;This tool demonstrates our &lt;span style="color:#ff9900;"&gt;&lt;strong&gt;Flash and Flex&lt;/strong&gt; &lt;/span&gt;capabilities. MovieCatalog is an easy-to-use application which helps users to organize their movies.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.codeplex.com/TraceExtension"&gt;TraceExtension&lt;/a&gt;&lt;br /&gt;Log messages going in and out of a Webservice.  &lt;span style="color:#ff9900;"&gt;&lt;strong&gt;ASPX.Net sample&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;1. Support for multi-thread. Original code would work fine until you had ‘real traffic”. Log file would get corrupted while handling simultaneous request.&lt;br /&gt;2. Log file name is no longer hard coded. Directory name is Web.config driven.  File names are stamped with date, so you get a new file for each day.&lt;br /&gt;3. Capability to make the ‘log file’ browser compatible, so you can view it in IE or FireFox.&lt;br /&gt;4. Extended control in Web.config to turn logging on and off.&lt;br /&gt;5. Exception handling.  You may want tailor the exception handling to your needs…&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3403449520331224322-5787356536705873999?l=bayteksoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bayteksoftware.blogspot.com/feeds/5787356536705873999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3403449520331224322&amp;postID=5787356536705873999' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3403449520331224322/posts/default/5787356536705873999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3403449520331224322/posts/default/5787356536705873999'/><link rel='alternate' type='text/html' href='http://bayteksoftware.blogspot.com/2009/01/about-baytek.html' title='About Baytek'/><author><name>Kaz Baygan</name><uri>http://www.blogger.com/profile/03498197220990765292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_dySBxDH3maQ/SX41senZQmI/AAAAAAAAAA4/FQO6IXulYBU/S220/kaz2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3403449520331224322.post-3748365438128588597</id><published>2008-12-11T08:57:00.000-08:00</published><updated>2008-12-16T12:25:10.713-08:00</updated><title type='text'>IMDB Movie Catalog with Adobe AIR</title><content type='html'>Hey guys,&lt;br /&gt;&lt;br /&gt;I recently needed a program to lookup the IMDB ratings of the movies in my Movies folder. My movies are each in its own folder. It goes like this:&lt;br /&gt;&lt;br /&gt;Casablanca&lt;br /&gt;Click&lt;br /&gt;Cloverfield&lt;br /&gt;Conspiracy Theory&lt;br /&gt;Die Hard 1&lt;br /&gt;Die Hard 3&lt;br /&gt;Eastern Promises&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;&lt;br /&gt;and so on. So regarding the number of movies it is a very difficult thing to find a movie to watch which has a good IMDB rating. So I decided to write a program which iterates through all the folder names in my Movies folder and looks them up in IMDB.&lt;br /&gt;&lt;br /&gt;[UPDATE] - I recently updated the program to be able to read the filenames like: "Saving.Private.Ryan.720p.HDTV.Premiere.DTS.x264-ESiR.mkv".  Even if the movie folders and files are in the same directory it should work fine.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.pagefish.com/public/moviecatalog_srcview/index.html"&gt;the code can be seen here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Also I am attaching a windows setup file for non-developers out there. You can contact me for its bugs. I will try to update it time to time.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;&lt;a href="http://www.pagefish.com/public/MovieCatalog_Setup.exe"&gt;Windows Setup File&lt;/a&gt;&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;&lt;a href="http://www.pagefish.com/public/moviecatalog_srcview/source/MovieCatalog.air"&gt;Adobe Air File Format&lt;/a&gt;&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;have fun.&lt;br /&gt;&lt;br /&gt;Note: Double click on items opens the IMDB page of that movie!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.pagefish.com/public/moviecatalogmovie.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 565px; height: 697px;" src="http://www.pagefish.com/public/moviecatalogmovie.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.pagefish.com/public/moviecatalogcast.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 565px; height: 697px;" src="http://www.pagefish.com/public/moviecatalogcast.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3403449520331224322-3748365438128588597?l=bayteksoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bayteksoftware.blogspot.com/feeds/3748365438128588597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3403449520331224322&amp;postID=3748365438128588597' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3403449520331224322/posts/default/3748365438128588597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3403449520331224322/posts/default/3748365438128588597'/><link rel='alternate' type='text/html' href='http://bayteksoftware.blogspot.com/2008/12/imdb-movie-catalog-with-adobe-air.html' title='IMDB Movie Catalog with Adobe AIR'/><author><name>Baran Baygan</name><uri>http://www.blogger.com/profile/13570982049450897523</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-3403449520331224322.post-2117259632519651500</id><published>2008-11-18T15:33:00.000-08:00</published><updated>2008-11-18T15:49:57.931-08:00</updated><title type='text'>Code documentation with SandCastle</title><content type='html'>&lt;B&gt;1&lt;/B&gt;- &lt;a href="http://www.codeplex.com/Sandcastle/Release/ProjectReleases.aspx?ReleaseId=9921"&gt;Install sandcastle (latest release)&lt;/a&gt;&lt;br /&gt;&lt;B&gt;2&lt;/B&gt;- Sandcastle is command line driven. No GUI. &lt;a href="http://www.codeplex.com/SHFB"&gt;Install this GUI tool to make life easy.&lt;/a&gt;&lt;br /&gt;&lt;B&gt;3&lt;/B&gt;- You must enable XML documentation file check box for each project. This will create an xml file along with each assembly.&lt;br /&gt;&lt;B&gt;4&lt;/B&gt;- Take each assembly and xml file drag and drop it into the tool.&lt;br /&gt;&lt;B&gt;5&lt;/B&gt;- Third party LIBS and assemblies that you do not have xml doc for can be excluded using BUILD/Dependencies section.&lt;br /&gt;&lt;B&gt;6&lt;/B&gt;- Use VISIBILITY/ApiFilter to cut down on what gets compiled into the help file. Otherwise it becomes too overwhelming&lt;br /&gt;&lt;B&gt;7&lt;/B&gt;- Doc for XML tags&lt;br /&gt;&lt;a href="http://msdn2.microsoft.com/en-us/magazine/cc302121.aspx"&gt;Doc1 &lt;/a&gt;&lt;br /&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/5ast78ax(VS.80).aspx"&gt;Doc2 &lt;/a&gt;&lt;br /&gt;&lt;a href="http://thoughtpad.net/alan-dean/cs-xml-documentation.html"&gt;Doc3&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3403449520331224322-2117259632519651500?l=bayteksoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bayteksoftware.blogspot.com/feeds/2117259632519651500/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3403449520331224322&amp;postID=2117259632519651500' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3403449520331224322/posts/default/2117259632519651500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3403449520331224322/posts/default/2117259632519651500'/><link rel='alternate' type='text/html' href='http://bayteksoftware.blogspot.com/2008/11/code-documentation-with-sandcastle.html' title='Code documentation with SandCastle'/><author><name>Kaz Baygan</name><uri>http://www.blogger.com/profile/03498197220990765292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_dySBxDH3maQ/SX41senZQmI/AAAAAAAAAA4/FQO6IXulYBU/S220/kaz2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3403449520331224322.post-3708350939817039284</id><published>2008-10-31T16:30:00.000-07:00</published><updated>2008-10-31T16:54:44.856-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='T-SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='GROUP BY'/><title type='text'>Using group by the right way</title><content type='html'>Here are two great articles about the usage of Group By:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://weblogs.sqlteam.com/jeffs/archive/2005/12/14/8546.aspx"&gt;SQL GROUP BY techniques &lt;/a&gt;&lt;br /&gt;&lt;a href="http://weblogs.sqlteam.com/jeffs/jeffs/archive/2007/07/31/60274.aspx"&gt;More on GROUP BY; Examining SUM(Distinct)&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Thanks to Jeff Smith.&lt;br /&gt;&lt;br /&gt;In a nut-shell, instead of this:&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt;&lt;br /&gt;  C.CustomerID, C.CustomerName,  &lt;br /&gt;  C.CustomerType, C.Address1, C.City,&lt;br /&gt;  C.&lt;span class="kwrd"&gt;State&lt;/span&gt;, &lt;span class="kwrd"&gt;SUM&lt;/span&gt;(S.Sales) &lt;span class="kwrd"&gt;as&lt;/span&gt; TotalSales&lt;br /&gt;&lt;span class="kwrd"&gt;FROM&lt;/span&gt;&lt;br /&gt;  Customers C&lt;br /&gt;&lt;span class="kwrd"&gt;INNER&lt;/span&gt; &lt;span class="kwrd"&gt;JOIN&lt;/span&gt; Sales S&lt;br /&gt;  &lt;span class="kwrd"&gt;ON&lt;/span&gt; C.CustomerID = S.CustomerID&lt;br /&gt;&lt;span class="kwrd"&gt;GROUP&lt;/span&gt; &lt;span class="kwrd"&gt;BY&lt;/span&gt;&lt;br /&gt;  C.CustomerID, C.CustomerName,&lt;br /&gt;  C.CustomerType, C.Address1, C.City, C.&lt;span class="kwrd"&gt;State&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Use this:&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt;&lt;br /&gt;  C.CustomerID, C.CustomerName,&lt;br /&gt;  C.CustomerType, C.Address1, C.City,&lt;br /&gt;  C.&lt;span class="kwrd"&gt;State&lt;/span&gt;, S.TotalSales&lt;br /&gt;&lt;span class="kwrd"&gt;FROM&lt;/span&gt;&lt;br /&gt;  Customers C&lt;br /&gt;&lt;span class="kwrd"&gt;INNER&lt;/span&gt; &lt;span class="kwrd"&gt;JOIN&lt;/span&gt;&lt;br /&gt;  (&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; &lt;br /&gt;     CustomerID, &lt;span class="kwrd"&gt;SUM&lt;/span&gt;(Sales) &lt;span class="kwrd"&gt;as&lt;/span&gt; TotalSales&lt;br /&gt;   &lt;span class="kwrd"&gt;FROM&lt;/span&gt;&lt;br /&gt;     Sales&lt;br /&gt;   &lt;span class="kwrd"&gt;GROUP&lt;/span&gt; &lt;span class="kwrd"&gt;BY&lt;/span&gt; &lt;br /&gt;     CustomerID) S&lt;br /&gt;&lt;span class="kwrd"&gt;ON&lt;/span&gt;&lt;br /&gt;  C.CustomerID = S.CustomerID&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This way you don’t need to include bunch of fields in your group by clause unnecessarily.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3403449520331224322-3708350939817039284?l=bayteksoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bayteksoftware.blogspot.com/feeds/3708350939817039284/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3403449520331224322&amp;postID=3708350939817039284' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3403449520331224322/posts/default/3708350939817039284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3403449520331224322/posts/default/3708350939817039284'/><link rel='alternate' type='text/html' href='http://bayteksoftware.blogspot.com/2008/10/using-group-by-right-way.html' title='Using group by the right way'/><author><name>Kaz Baygan</name><uri>http://www.blogger.com/profile/03498197220990765292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_dySBxDH3maQ/SX41senZQmI/AAAAAAAAAA4/FQO6IXulYBU/S220/kaz2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3403449520331224322.post-5115332211082016312</id><published>2008-10-15T17:11:00.000-07:00</published><updated>2008-10-31T16:55:36.030-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tasklist'/><category scheme='http://www.blogger.com/atom/ns#' term='Process lock'/><category scheme='http://www.blogger.com/atom/ns#' term='dll lock'/><title type='text'>How to find out which process is locking a DLL</title><content type='html'>1- Start-&gt;Run and Open Cmd box&lt;br /&gt;2- Type and execute the following&lt;br /&gt;tasklist /m mydll.dll &lt;br /&gt;&lt;br /&gt;and it will return a process list that have loaded your DLL!&lt;br /&gt;&lt;br /&gt;Cool ha! &lt;br /&gt;&lt;br /&gt;"tasklist /?" will give you a list of other things you can do with this utility.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3403449520331224322-5115332211082016312?l=bayteksoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bayteksoftware.blogspot.com/feeds/5115332211082016312/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3403449520331224322&amp;postID=5115332211082016312' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3403449520331224322/posts/default/5115332211082016312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3403449520331224322/posts/default/5115332211082016312'/><link rel='alternate' type='text/html' href='http://bayteksoftware.blogspot.com/2008/10/how-to-find-out-which-process-is.html' title='How to find out which process is locking a DLL'/><author><name>Kaz Baygan</name><uri>http://www.blogger.com/profile/03498197220990765292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_dySBxDH3maQ/SX41senZQmI/AAAAAAAAAA4/FQO6IXulYBU/S220/kaz2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3403449520331224322.post-1695439419878063862</id><published>2008-09-30T16:45:00.000-07:00</published><updated>2008-10-31T16:56:04.212-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Macro for Visual Studio 2005 Keyboard Shortcuts'/><title type='text'>Macro for Visual Studio 2005 Keyboard Shortcuts</title><content type='html'>Most people don't know this, but there are actually over 450 keyboard shortcuts in Visual Studio by default. But there is no easy way to find out all the keyboard shortcuts inside Visual Studio. You can find out what all the default keyboard shortcuts are by writing a simple macro to enumerate all of them. The following is the code for this.&lt;br /&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Imports&lt;/span&gt; System&lt;br /&gt;&lt;span class="kwrd"&gt;Imports&lt;/span&gt; EnvDTE&lt;br /&gt;&lt;span class="kwrd"&gt;Imports&lt;/span&gt; EnvDTE80&lt;br /&gt;&lt;span class="kwrd"&gt;Imports&lt;/span&gt; EnvDTE90&lt;br /&gt;&lt;span class="kwrd"&gt;Imports&lt;/span&gt; System.Diagnostics&lt;br /&gt;&lt;span class="kwrd"&gt;Imports&lt;/span&gt; System.IO&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Module&lt;/span&gt; Module1&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; ListShortcutsInHTML()&lt;br /&gt;&lt;br /&gt;        &lt;span class="rem"&gt;'Declare a StreamWriter&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; sw &lt;span class="kwrd"&gt;As&lt;/span&gt; System.IO.StreamWriter&lt;br /&gt;        sw = &lt;span class="kwrd"&gt;New&lt;/span&gt; StreamWriter(&lt;span class="str"&gt;"c:\\demo\\Shortcuts.html"&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;        &lt;span class="rem"&gt;'Write the beginning HTML&lt;/span&gt;&lt;br /&gt;        WriteHTMLStart(sw)&lt;br /&gt;&lt;br /&gt;        &lt;span class="rem"&gt;' Add a row for each keyboard shortcut&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;For&lt;/span&gt; &lt;span class="kwrd"&gt;Each&lt;/span&gt; c &lt;span class="kwrd"&gt;As&lt;/span&gt; Command &lt;span class="kwrd"&gt;In&lt;/span&gt; DTE.Commands&lt;br /&gt;            &lt;span class="kwrd"&gt;If&lt;/span&gt; c.Name &amp;lt;&amp;gt; &lt;span class="str"&gt;""&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;Dim&lt;/span&gt; bindings &lt;span class="kwrd"&gt;As&lt;/span&gt; System.Array&lt;br /&gt;                bindings = &lt;span class="kwrd"&gt;CType&lt;/span&gt;(c.Bindings, System.Array)&lt;br /&gt;                &lt;span class="kwrd"&gt;For&lt;/span&gt; i &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt; = 0 &lt;span class="kwrd"&gt;To&lt;/span&gt; bindings.Length - 1&lt;br /&gt;                    sw.WriteLine(&lt;span class="str"&gt;"&amp;lt;tr&amp;gt;"&lt;/span&gt;)&lt;br /&gt;                    sw.WriteLine(&lt;span class="str"&gt;"&amp;lt;td&amp;gt;"&lt;/span&gt; + c.Name + &lt;span class="str"&gt;"&amp;lt;/td&amp;gt;"&lt;/span&gt;)&lt;br /&gt;                    sw.WriteLine(&lt;span class="str"&gt;"&amp;lt;td&amp;gt;"&lt;/span&gt; + bindings(i) + &lt;span class="str"&gt;"&amp;lt;/td&amp;gt;"&lt;/span&gt;)&lt;br /&gt;                    sw.WriteLine(&lt;span class="str"&gt;"&amp;lt;/tr&amp;gt;"&lt;/span&gt;)&lt;br /&gt;                &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span class="rem"&gt;'Write the end HTML&lt;/span&gt;&lt;br /&gt;        WriteHTMLEnd(sw)&lt;br /&gt;&lt;br /&gt;        &lt;span class="rem"&gt;'Flush and close the stream&lt;/span&gt;&lt;br /&gt;        sw.Flush()&lt;br /&gt;        sw.Close()&lt;br /&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; WriteHTMLStart(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; sw &lt;span class="kwrd"&gt;As&lt;/span&gt; System.IO.StreamWriter)&lt;br /&gt;        sw.WriteLine(&lt;span class="str"&gt;"&amp;lt;html&amp;gt;"&lt;/span&gt;)&lt;br /&gt;        sw.WriteLine(&lt;span class="str"&gt;"&amp;lt;head&amp;gt;"&lt;/span&gt;)&lt;br /&gt;        sw.WriteLine(&lt;span class="str"&gt;"&amp;lt;title&amp;gt;"&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;        sw.WriteLine(&lt;span class="str"&gt;"Visual Studio Keyboard Shortcuts"&lt;/span&gt;)&lt;br /&gt;        sw.WriteLine(&lt;span class="str"&gt;"&amp;lt;/title&amp;gt;"&lt;/span&gt;)&lt;br /&gt;        sw.WriteLine(&lt;span class="str"&gt;"&amp;lt;/head&amp;gt;"&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;        sw.WriteLine(&lt;span class="str"&gt;"&amp;lt;body&amp;gt;"&lt;/span&gt;)&lt;br /&gt;        sw.WriteLine(&lt;span class="str"&gt;"&amp;lt;h1&amp;gt;Visual Studio 2005 Keyboard Shortcuts&amp;lt;/h1&amp;gt;"&lt;/span&gt;)&lt;br /&gt;        sw.WriteLine(&lt;span class="str"&gt;"&amp;lt;font size="&lt;/span&gt;&lt;span class="str"&gt;"2"&lt;/span&gt;&lt;span class="str"&gt;" face="&lt;/span&gt;&lt;span class="str"&gt;"Verdana"&lt;/span&gt;&lt;span class="str"&gt;"&amp;gt;"&lt;/span&gt;)&lt;br /&gt;        sw.WriteLine(&lt;span class="str"&gt;"&amp;lt;table border="&lt;/span&gt;&lt;span class="str"&gt;"1"&lt;/span&gt;&lt;span class="str"&gt;"&amp;gt;"&lt;/span&gt;)&lt;br /&gt;        sw.WriteLine(&lt;span class="str"&gt;"&amp;lt;tr BGCOLOR="&lt;/span&gt;&lt;span class="str"&gt;"#018FFF"&lt;/span&gt;&lt;span class="str"&gt;"&amp;gt;&amp;lt;td align="&lt;/span&gt;&lt;span class="str"&gt;"center"&lt;/span&gt;&lt;span class="str"&gt;"&amp;gt;&amp;lt;b&amp;gt;Command&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td align="&lt;/span&gt;&lt;span class="str"&gt;"center"&lt;/span&gt;&lt;span class="str"&gt;"&amp;gt;&amp;lt;b&amp;gt;Shortcut&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;"&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; WriteHTMLEnd(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; sw &lt;span class="kwrd"&gt;As&lt;/span&gt; System.IO.StreamWriter)&lt;br /&gt;        sw.WriteLine(&lt;span class="str"&gt;"&amp;lt;/table&amp;gt;"&lt;/span&gt;)&lt;br /&gt;        sw.WriteLine(&lt;span class="str"&gt;"&amp;lt;/font&amp;gt;"&lt;/span&gt;)&lt;br /&gt;        sw.WriteLine(&lt;span class="str"&gt;"&amp;lt;/body&amp;gt;"&lt;/span&gt;)&lt;br /&gt;        sw.WriteLine(&lt;span class="str"&gt;"&amp;lt;/html&amp;gt;"&lt;/span&gt;)&lt;br /&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; Module&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;To use this macro, go to Tools, select Macros, and then choose Macros IDE. . . to launch the Macros IDE. Expand the MyMacros project, MyMacros namespace and double-click on Module1. Simply copy Listing 1 to the Macros IDE and run the macro. After running the macro, you would have produced a keyboard shortcuts reference for Visual Studio. Open your output at C:\demo\Shortcuts.html.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3403449520331224322-1695439419878063862?l=bayteksoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bayteksoftware.blogspot.com/feeds/1695439419878063862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3403449520331224322&amp;postID=1695439419878063862' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3403449520331224322/posts/default/1695439419878063862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3403449520331224322/posts/default/1695439419878063862'/><link rel='alternate' type='text/html' href='http://bayteksoftware.blogspot.com/2008/09/macro-for-visual-studio-2005-keyboard.html' title='Macro for Visual Studio 2005 Keyboard Shortcuts'/><author><name>Kaz Baygan</name><uri>http://www.blogger.com/profile/03498197220990765292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_dySBxDH3maQ/SX41senZQmI/AAAAAAAAAA4/FQO6IXulYBU/S220/kaz2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3403449520331224322.post-7697632996922408574</id><published>2008-09-21T08:18:00.000-07:00</published><updated>2008-09-21T08:19:52.607-07:00</updated><title type='text'>How to lock a table in SQL 2005</title><content type='html'>You would ask yourself why anyone would want to lock a table on purpose. Well… We just had an interesting bug related to table locking. A job in SQL was scheduled to run every night and it took over 10 minutes to complete. During this time it was locking a table exclusively. Of course, in response to this, our middle tier was blowing chunks as it tried to insert records into the locked table. Our insert would result in SQL time out and create an unpredictable behavior then on.&lt;br /&gt;I needed to simulate the table lock situation so I could make the code more resilient. At a minimum I wanted to be able to trap the time out and log it. Also, we wanted to rollback everything up to that point as well.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here are the steps to Lock and Unlock a table&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1- Open a window in Microsoft SQL server Management Studio and open a new SQL window:&lt;br /&gt;2- Use the following code as a template to setup your Lock/Unlock mechanism.&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Begin&lt;/span&gt; &lt;span class="kwrd"&gt;transaction&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;update&lt;/span&gt; &lt;span class="kwrd"&gt;top&lt;/span&gt; (1) Product &lt;span class="kwrd"&gt;WITH&lt;/span&gt; (TABLOCK)  &lt;span class="kwrd"&gt;set&lt;/span&gt; Name=’Cheetos’ &lt;span class="kwrd"&gt;where&lt;/span&gt; ProductID=100&lt;br /&gt;RollBack&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;3- TO LOCK the table highlight the first two lines (Begin trans + update) and execute them by hitting CTRL+E. At this point table is locked.&lt;br /&gt;4- TO UNLOCK the table highlight the last line (Rollback) and execute it by hitting CTRL+E.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Use the 3 and 4 to repeatedly to lock and unlock the table. Since each time you are rolling back, there will be no change to the content of the table.  &lt;br /&gt;&lt;br /&gt;After 3 the table Products will be locked. You will not be able to select, insert, update or delete from the table products as long as this transaction is not concluded with a commit or rollback. You may want open a new window in Microsoft SQL server Management Studio and try the following:&lt;br /&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;select&lt;/span&gt; &lt;span class="kwrd"&gt;top&lt;/span&gt; 1 * &lt;span class="kwrd"&gt;from&lt;/span&gt; Products&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The statement above will hangup and wait for the completion of the transaction we started in step 2.&lt;br /&gt;Similarly, you can run your code and see the same timeout behavior.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3403449520331224322-7697632996922408574?l=bayteksoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bayteksoftware.blogspot.com/feeds/7697632996922408574/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3403449520331224322&amp;postID=7697632996922408574' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3403449520331224322/posts/default/7697632996922408574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3403449520331224322/posts/default/7697632996922408574'/><link rel='alternate' type='text/html' href='http://bayteksoftware.blogspot.com/2008/09/how-to-lock-table-in-sql-2005.html' title='How to lock a table in SQL 2005'/><author><name>Kaz Baygan</name><uri>http://www.blogger.com/profile/03498197220990765292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_dySBxDH3maQ/SX41senZQmI/AAAAAAAAAA4/FQO6IXulYBU/S220/kaz2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3403449520331224322.post-5408896774635445820</id><published>2008-09-20T08:03:00.000-07:00</published><updated>2008-09-20T08:15:46.594-07:00</updated><title type='text'>SQL 2005 Table Lock Hint Syntax Change</title><content type='html'>Syntax for locking tables has been changed in SQL 2005 which makes placing the ‘WITH’ keyword in parentheses illegal.&lt;br /&gt;&lt;br /&gt;The following was acceptable in SQL 2000; however, no longer is the case with 2005.&lt;br /&gt;The following is true for SQL 2005:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;WRONG &lt;/strong&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&lt;!-- code formatted by &lt;a href="http://manoli.net/csharpformat/"&gt;http://manoli.net/csharpformat/&lt;/a&gt; --&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;UPDATE&lt;/span&gt; Products (&lt;span class="kwrd"&gt;WITH&lt;/span&gt; NOLOCK) &lt;br&gt; &lt;span class="kwrd"&gt;SET&lt;/span&gt; Name = &lt;span class="str"&gt;'Cheetos'&lt;/span&gt;    &lt;br&gt;&lt;span class="kwrd"&gt;WHERE&lt;/span&gt; ProductCat = &lt;span class="str"&gt;'JunkFood'&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;CORRECT&lt;/strong&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&lt;!-- code formatted by &lt;a href="http://manoli.net/csharpformat/"&gt;http://manoli.net/csharpformat/&lt;/a&gt; --&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;UPDATE&lt;/span&gt; Products &lt;span class="kwrd"&gt;WITH&lt;/span&gt; (NOLOCK) &lt;br&gt;&lt;span class="kwrd"&gt;SET&lt;/span&gt; Name = &lt;span class="str"&gt;'Cheetos'&lt;/span&gt;    &lt;br&gt;&lt;span class="kwrd"&gt;WHERE&lt;/span&gt; ProductCat = &lt;span class="str"&gt;'JunkFood'&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3403449520331224322-5408896774635445820?l=bayteksoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bayteksoftware.blogspot.com/feeds/5408896774635445820/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3403449520331224322&amp;postID=5408896774635445820' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3403449520331224322/posts/default/5408896774635445820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3403449520331224322/posts/default/5408896774635445820'/><link rel='alternate' type='text/html' href='http://bayteksoftware.blogspot.com/2008/09/table-lock-hint-change.html' title='SQL 2005 Table Lock Hint Syntax Change'/><author><name>Kaz Baygan</name><uri>http://www.blogger.com/profile/03498197220990765292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_dySBxDH3maQ/SX41senZQmI/AAAAAAAAAA4/FQO6IXulYBU/S220/kaz2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3403449520331224322.post-8248527235553339130</id><published>2008-09-18T09:32:00.001-07:00</published><updated>2008-09-19T05:23:47.010-07:00</updated><title type='text'>Realtime Applications with Flex &amp; Actionscript</title><content type='html'>Hi everybody. We are developing an SDK for developers out there to easily program realtime applications. (Chat, Multiplayer Games etc)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://clientsdk.blogspot.com/"&gt;You can find more info here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3403449520331224322-8248527235553339130?l=bayteksoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bayteksoftware.blogspot.com/feeds/8248527235553339130/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3403449520331224322&amp;postID=8248527235553339130' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3403449520331224322/posts/default/8248527235553339130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3403449520331224322/posts/default/8248527235553339130'/><link rel='alternate' type='text/html' href='http://bayteksoftware.blogspot.com/2008/09/realtime-applications-with-flex.html' title='Realtime Applications with Flex &amp; Actionscript'/><author><name>Baran Baygan</name><uri>http://www.blogger.com/profile/13570982049450897523</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-3403449520331224322.post-753514432668158815</id><published>2008-09-18T09:32:00.000-07:00</published><updated>2008-09-19T04:42:35.954-07:00</updated><title type='text'>Minimizing an AIR Application to system tray</title><content type='html'>Adobe AIR applications are windows applications. So they have all the possibilities like any other windows application like using the system tray.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;First of all you have to prevent the application to close when clicked on the X close button on the window. To do that you have to trap the "closing" event of the WindowedApplication class.&lt;/div&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;mx:WindowedApplication&lt;/span&gt; &lt;span class="attr"&gt;xmlns:mx&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.adobe.com/2006/mxml"&lt;/span&gt; &lt;span class="attr"&gt;layout&lt;/span&gt;&lt;span class="kwrd"&gt;="absolute"&lt;/span&gt; &lt;span class="attr"&gt;applicationComplete&lt;/span&gt;&lt;span class="kwrd"&gt;="ApplicationComplete()"&lt;/span&gt; &lt;span class="attr"&gt;closing&lt;/span&gt;&lt;span class="kwrd"&gt;="MainWindow_OnClosing(event)"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;or with actionscript:&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;this&lt;/span&gt;.addEventListener(Event.CLOSING, MainWindow_OnClosing);&lt;/pre&gt;&lt;br /&gt;When the user clicks on the close button on the corner of the main window MainWindow_OnClosing() function gets called. In this function you have to prevent the default action for the event which is closing the window. The reason why we listen to the "closing" event instead of "close" event is that the window is not closed yet. If you listen to the "close" event you can't prevent the window from getting closed.&lt;br /&gt;&lt;br /&gt;So our closing event handler looks like this:&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;protected&lt;/span&gt; function MainWindow_OnClosing(&lt;span class="kwrd"&gt;event&lt;/span&gt;:Event):&lt;span class="kwrd"&gt;void&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;  &lt;span class="kwrd"&gt;event&lt;/span&gt;.preventDefault();&lt;br /&gt;  &lt;span class="kwrd"&gt;this&lt;/span&gt;.visible = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;We didn't close the window but we made it invisible. But how is the user going to interact with our program now? Yes. With the tray icon. So here is the sample code to setup a tray icon:&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="rem"&gt;// A Loader to load the image for the icon png&lt;/span&gt;&lt;br /&gt;var icon:Loader = &lt;span class="kwrd"&gt;new&lt;/span&gt; Loader();&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;// Not all the operating systems have to support tray icons. &lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;// We just check for it. Windows supports it as you probably know. :)&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; (NativeApplication.supportsSystemTrayIcon)&lt;br /&gt;{&lt;br /&gt;  &lt;span class="rem"&gt;// When the user clicks the icon on the tray "TrayIcon_Click" event handler will be called.&lt;/span&gt;&lt;br /&gt;  NativeApplication.nativeApplication.icon.addEventListener(MouseEvent.CLICK, TrayIcon_Click);&lt;br /&gt;&lt;br /&gt;  &lt;span class="rem"&gt;// When the icon gets loaded it will call the iconLoadComplete event handler. &lt;/span&gt;&lt;br /&gt;  icon.contentLoaderInfo.addEventListener(Event.COMPLETE, iconLoadComplete);&lt;br /&gt;&lt;br /&gt;  &lt;span class="rem"&gt;// We actually start loading an icon from the hard drive. &lt;/span&gt;&lt;br /&gt;  &lt;span class="rem"&gt;// This could be an icon on the internet as well&lt;/span&gt;&lt;br /&gt;  icon.load(&lt;span class="kwrd"&gt;new&lt;/span&gt; URLRequest(&lt;span class="str"&gt;"images/icons/icon16x16.png"&lt;/span&gt;));&lt;br /&gt;&lt;br /&gt;  &lt;span class="rem"&gt;// Lets get a handle of the trayIcon to change its tooltip.&lt;/span&gt;&lt;br /&gt;  var systray:SystemTrayIcon = NativeApplication.nativeApplication.icon &lt;span class="kwrd"&gt;as&lt;/span&gt; SystemTrayIcon;&lt;br /&gt;  systray.tooltip = &lt;span class="str"&gt;"Your Application Tooltip"&lt;/span&gt;;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;Below you can see the handler for the icon load event.&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; function iconLoadComplete(&lt;span class="kwrd"&gt;event&lt;/span&gt;:Event):&lt;span class="kwrd"&gt;void&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;  NativeApplication.nativeApplication.icon.bitmaps = [&lt;span class="kwrd"&gt;event&lt;/span&gt;.target.content.bitmapData];&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;For best performance the icon image should be a 16x16 PNG. (At least in windows this is so).&lt;br /&gt;So what happens when the user clicks the icon in the tray?&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;protected&lt;/span&gt; function TrayIcon_Click(&lt;span class="kwrd"&gt;event&lt;/span&gt;:Event):&lt;span class="kwrd"&gt;void&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;  &lt;span class="rem"&gt;// Do anything here.&lt;/span&gt;&lt;br /&gt;}         &lt;/pre&gt;&lt;br /&gt;It is up to your imagination. :) You could do a bunch of things here. You can make the main application visible.&lt;br /&gt;&lt;br /&gt;I can hear you guys asking how to add a menu to your tray icon. Ok! Adding a menu to your tray icon is very simple. Below there is the modifed version of the example code at the top:&lt;br /&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="rem"&gt;// A Loader to load the image for the icon png&lt;/span&gt;&lt;br /&gt;var icon:Loader = &lt;span class="kwrd"&gt;new&lt;/span&gt; Loader();&lt;br /&gt;        &lt;br /&gt;&lt;span class="rem"&gt;// Not all the operating systems have to support tray icons. &lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;// We just check for it. Windows supports it as you probably know. :)&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; (NativeApplication.supportsSystemTrayIcon)&lt;br /&gt;{&lt;br /&gt;  &lt;span class="rem"&gt;// When the user clicks the icon on the tray "TrayIcon_Click" event handler will be called.&lt;/span&gt;&lt;br /&gt;  NativeApplication.nativeApplication.icon.addEventListener(MouseEvent.CLICK, TrayIcon_Click);&lt;br /&gt;&lt;br /&gt;  &lt;span class="rem"&gt;// When the icon gets loaded it will call the iconLoadComplete event handler. &lt;/span&gt;&lt;br /&gt;  icon.contentLoaderInfo.addEventListener(Event.COMPLETE, iconLoadComplete);&lt;br /&gt;&lt;br /&gt;  &lt;span class="rem"&gt;// We actually start loading an icon from the hard drive. &lt;/span&gt;&lt;br /&gt;  &lt;span class="rem"&gt;// This could be and icon on the internet as well&lt;/span&gt;&lt;br /&gt;  icon.load(&lt;span class="kwrd"&gt;new&lt;/span&gt; URLRequest(&lt;span class="str"&gt;"images/icons/icon16x16.png"&lt;/span&gt;));&lt;br /&gt;&lt;br /&gt;  &lt;span class="rem"&gt;// Lets get a handle of the trayIcon to change its tooltip.&lt;/span&gt;&lt;br /&gt;  var systray:SystemTrayIcon = NativeApplication.nativeApplication.icon &lt;span class="kwrd"&gt;as&lt;/span&gt; SystemTrayIcon;&lt;br /&gt;  systray.tooltip = &lt;span class="str"&gt;"Your Application Tooltip"&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;  &lt;span class="rem"&gt;// Lets add a menu to our tray icon&lt;/span&gt;&lt;br /&gt;  var iconMenu:NativeMenu = &lt;span class="kwrd"&gt;new&lt;/span&gt; NativeMenu();&lt;br /&gt;  var menuCommand:NativeMenuItem = iconMenu.addItem(&lt;span class="kwrd"&gt;new&lt;/span&gt; NativeMenuItem(&lt;span class="str"&gt;"Exit"&lt;/span&gt;));&lt;br /&gt;  menuCommand.addEventListener(Event.SELECT, Exit_Handler);&lt;br /&gt;&lt;br /&gt;  &lt;span class="rem"&gt;// Assign our menu to the icon. Thats it.&lt;/span&gt;&lt;br /&gt;  systray.menu = iconMenu;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;Here we have added a menu item which will close the application when clicked on. To close the application we call the exit() function of the native application. Here is the Exit_Handler function:&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;protected&lt;/span&gt; function Exit_Handler(&lt;span class="kwrd"&gt;event&lt;/span&gt;:Event):&lt;span class="kwrd"&gt;void&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;  &lt;span class="rem"&gt;// Actually exiting the application it self removes the items from the tray. &lt;/span&gt;&lt;br /&gt;  &lt;span class="rem"&gt;// But just to give an example I clear the icons.&lt;/span&gt;&lt;br /&gt;  NativeApplication.nativeApplication.icon.bitmaps = [];&lt;br /&gt;&lt;br /&gt;  NativeApplication.nativeApplication.exit();          &lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://www.mochalife.com/Public/BlogFiles/Examples/trayIconSourceCode/srcview/index.html"&gt;Here are the example source codes&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3403449520331224322-753514432668158815?l=bayteksoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bayteksoftware.blogspot.com/feeds/753514432668158815/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3403449520331224322&amp;postID=753514432668158815' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3403449520331224322/posts/default/753514432668158815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3403449520331224322/posts/default/753514432668158815'/><link rel='alternate' type='text/html' href='http://bayteksoftware.blogspot.com/2008/09/minimizing-air-application-to-system.html' title='Minimizing an AIR Application to system tray'/><author><name>Baran Baygan</name><uri>http://www.blogger.com/profile/13570982049450897523</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
