<?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-8351565221579986136</id><updated>2011-07-08T22:03:42.177+04:30</updated><category term='Others'/><category term='C#'/><category term='دلنوشته های من...'/><category term='Tips'/><category term='ASP.Net'/><category term='Regular Expressions'/><category term='Guitar'/><category term='SQL Server'/><title type='text'>دوستان برنامه نویس و هنرهای برنامه نویسی...</title><subtitle type='html'>ASP.Net C# SQL Server
خاطره عکس موسیقی گیتار دلنوشته برنامه نویسی...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://programmingarts.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://programmingarts.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>نیما</name><uri>http://www.blogger.com/profile/13021429248034001455</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>28</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8351565221579986136.post-3421770500670415520</id><published>2009-07-18T19:20:00.002+04:30</published><updated>2009-07-18T19:24:08.662+04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>پیدا کردن nمین سطر از یک جدول</title><content type='html'>با استفاده از این کد میتونین nاومین سطر یک جدول رو بازیابی کنید.&lt;br /&gt;&lt;div dir="ltr" style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New" align="left"&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;select * from (&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;select ROW_NUMBER() OVER (ORDER BY TableID) ROWNUMBER ,* &lt;span style="color:blue;"&gt;from&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;[Your Table]&lt;/span&gt;) t2&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;where t2.ROWNUMBER =شماره سطر&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8351565221579986136-3421770500670415520?l=programmingarts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmingarts.blogspot.com/feeds/3421770500670415520/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://programmingarts.blogspot.com/2009/07/n.html#comment-form' title='2 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/3421770500670415520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/3421770500670415520'/><link rel='alternate' type='text/html' href='http://programmingarts.blogspot.com/2009/07/n.html' title='پیدا کردن nمین سطر از یک جدول'/><author><name>نیما</name><uri>http://www.blogger.com/profile/13021429248034001455</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-8351565221579986136.post-3902255788792409515</id><published>2009-07-07T19:25:00.002+04:30</published><updated>2009-07-07T19:26:57.694+04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>آموزش SQL Server 2005 قسمت پنجم</title><content type='html'>سلام&lt;br /&gt;این هم قسمت پنجم آموزش :&lt;br /&gt;&lt;a href="http://nima-dir.persiangig.com/Sql%20Server/chapter%205.pdf"&gt;ایجاد و تغییر جداول&lt;/a&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/8351565221579986136-3902255788792409515?l=programmingarts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmingarts.blogspot.com/feeds/3902255788792409515/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://programmingarts.blogspot.com/2009/07/sql-server-2005.html#comment-form' title='1 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/3902255788792409515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/3902255788792409515'/><link rel='alternate' type='text/html' href='http://programmingarts.blogspot.com/2009/07/sql-server-2005.html' title='آموزش SQL Server 2005 قسمت پنجم'/><author><name>نیما</name><uri>http://www.blogger.com/profile/13021429248034001455</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-8351565221579986136.post-7649576889194282432</id><published>2009-07-06T23:16:00.003+04:30</published><updated>2009-07-06T23:18:55.561+04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>آموزش SQL Server 2005 قسمت چهارم (انواع JOIN )</title><content type='html'>سلام دوستان&lt;br /&gt;این هم قسمت چهارم آموزش SQL Server : انواع JOIN&lt;br /&gt;&lt;a href="http://nima-dir.persiangig.com/Sql%20Server/chapter%204.pdf"&gt;Joins&lt;/a&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/8351565221579986136-7649576889194282432?l=programmingarts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmingarts.blogspot.com/feeds/7649576889194282432/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://programmingarts.blogspot.com/2009/07/sql-server-2005-join.html#comment-form' title='0 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/7649576889194282432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/7649576889194282432'/><link rel='alternate' type='text/html' href='http://programmingarts.blogspot.com/2009/07/sql-server-2005-join.html' title='آموزش SQL Server 2005 قسمت چهارم (انواع JOIN )'/><author><name>نیما</name><uri>http://www.blogger.com/profile/13021429248034001455</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-8351565221579986136.post-2199501545185543860</id><published>2009-07-05T14:03:00.003+04:30</published><updated>2009-07-05T14:15:13.116+04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>تفاوت بین scope_identity()و @@Identity و ident_current</title><content type='html'>سلام &lt;br /&gt;شاید بعد از اینکه رکوردی رو در یک جدولی که فیلدی از نوع Identity داره اضافه کردین بخواهین که مقدار جدید اون فیلد رو بگیرین.سه راه برای این کار وجود داره و در اینجا تفاوت این راهها رو بررسی میکنیم:&lt;br /&gt;در ابتدا باید دو مفهوم رو توضیح بدم: 1-جلسه یا Session و 2- حوزه دید یا Scope&lt;br /&gt;Session: معرف کانکشنی است که دستور در آن اجرا میشود&lt;br /&gt;Scope: معرف محلی است که دستور در آن وجود دارد&lt;br /&gt;&lt;br /&gt;به عنوان مثال:دو دستوری که در یک روال ذخیره شده ذخیره میشوند در یک Scope قرار دارند و دو روال ذخیره شده ای که در یک کانکشن اجرا میشوند در یک Session قرار میگیرند.&lt;br /&gt;با توجه به این مفاهیم :&lt;br /&gt;@@IDENTITY : آخرین مقدار identity رو در session فعلی و در هر حوزه ای برمیگرداند.&lt;br /&gt;scope_identity(): آخرین مقدار identity رو در session فعلی و در حوزه فعلی را برمیگرداند.&lt;br /&gt;ident_current(): آخرین مقدار identity رو در هر session و در هر حوزه ای  برمیگرداند.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8351565221579986136-2199501545185543860?l=programmingarts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmingarts.blogspot.com/feeds/2199501545185543860/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://programmingarts.blogspot.com/2009/07/scopeidentity-identity-identcurrent.html#comment-form' title='0 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/2199501545185543860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/2199501545185543860'/><link rel='alternate' type='text/html' href='http://programmingarts.blogspot.com/2009/07/scopeidentity-identity-identcurrent.html' title='تفاوت بین scope_identity()و @@Identity و ident_current'/><author><name>نیما</name><uri>http://www.blogger.com/profile/13021429248034001455</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-8351565221579986136.post-5737897753915544948</id><published>2009-06-28T17:33:00.003+04:30</published><updated>2009-07-07T19:23:47.186+04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>آموزش SQL Server (قسمت سوم)</title><content type='html'>امیدوارم مفید باشه&lt;br /&gt;&lt;a href="http://nima-dir.persiangig.com/Sql%20Server/chapter%203.pdf"&gt;دستورات اولیه T-SQL&lt;/a&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/8351565221579986136-5737897753915544948?l=programmingarts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmingarts.blogspot.com/feeds/5737897753915544948/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://programmingarts.blogspot.com/2009/06/sql-server.html#comment-form' title='0 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/5737897753915544948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/5737897753915544948'/><link rel='alternate' type='text/html' href='http://programmingarts.blogspot.com/2009/06/sql-server.html' title='آموزش SQL Server (قسمت سوم)'/><author><name>نیما</name><uri>http://www.blogger.com/profile/13021429248034001455</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-8351565221579986136.post-2735809713886200612</id><published>2009-06-07T15:11:00.002+04:30</published><updated>2009-06-07T15:20:00.245+04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><title type='text'>تست کردن در IE6 وقتی که IE7 رو نصب کردی</title><content type='html'>سلام دوستان&lt;br /&gt;گاهی اوقات شمایی که دارین طراحی وب سایت میکنین روی سیستمتون IE7 نصب کردین.حتما میدونین که IE6 با 7 در بعضی از موارد همخونی ندارن و سایتی که تو 7 درست نمایش داده میشه تو 6 لزوما درست نمایش داده نمیشه.&lt;br /&gt;برای اینکه بتونین همزمان این دو تا داشته باشین میتونین برنامه &lt;a href="http://tredosoft.com/files/multi-ie/multiple-ie-setup.exe"&gt;Multiple IE&lt;/a&gt; رو دانلود و سپس نصب کنین و IE6 رو هم همزمان رو سیستمتون داشته باشید&lt;br /&gt;موفق باشید&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8351565221579986136-2735809713886200612?l=programmingarts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmingarts.blogspot.com/feeds/2735809713886200612/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://programmingarts.blogspot.com/2009/06/ie6-ie7.html#comment-form' title='0 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/2735809713886200612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/2735809713886200612'/><link rel='alternate' type='text/html' href='http://programmingarts.blogspot.com/2009/06/ie6-ie7.html' title='تست کردن در IE6 وقتی که IE7 رو نصب کردی'/><author><name>نیما</name><uri>http://www.blogger.com/profile/13021429248034001455</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-8351565221579986136.post-8904964497920651012</id><published>2009-05-30T13:38:00.004+04:30</published><updated>2009-05-30T15:42:39.636+04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>System.Nullable : متغیرها هم میتوانند نال بپذیرند</title><content type='html'>سلام&lt;br /&gt;گاهی اوقات ما متغیرهایی از نوع Numeric ، Bool ، DateTime داریم که علاوه بر مقادیر مناسبی که ممکنه بگیرن میتونن Null هم بگیرن. خوب همه شما میدونین که اگر کد زیر رو بنویسیم به ارور برمیخوریم:&lt;br /&gt;&lt;br /&gt;&lt;div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New" align="left"&gt;&lt;br /&gt;&lt;/div&gt;&lt;p style="MARGIN-TOP: 0px; BACKGROUND: white" align="left"&gt;&lt;span style="color:#2b91af;"&gt;Int32&lt;/span&gt; myVar = &lt;span style="color:blue;"&gt;null&lt;/span&gt;; &lt;span style="color:green;"&gt;//error: myVar cannot be set to null&lt;/span&gt;&lt;/p&gt;&lt;p style="MARGIN-TOP: 0px; BACKGROUND: white; MARGIN-LEFT: 0px; MARGIN-RIGHT: 0px" align="left" size="10pt" color="black"&gt;&lt;/p&gt;این خطا به این دلیله که در حالت عادی این گونه متغیرها نمیتونن مقادریر Null بپذیرن. برای حل این مشکل میتونیم از System.Nullable استفاده کنیم که علاوه بر مقدیر مناسب Datatype میشه Null رو هم بهش نسبت داد.&lt;br /&gt;شکل کلی تعریف یک متغیر به صورت Nullable به دوصورت زیر است:&lt;br /&gt;&lt;br /&gt;&lt;div dir="ltr" style="BACKGROUND: white;font-family:Courier New;font-size:10pt;color:black;" align="left"   &gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:#2b91af;"&gt;Nullable&lt;/span&gt;&amp;lt;T&amp;gt; myVar = &lt;span style="color:blue;"&gt;null&lt;/span&gt;;&lt;/p&gt;&lt;/div&gt;یا&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div dir="ltr" style="BACKGROUND: white;font-family:Courier New;font-size:10pt;color:black;" align="left"   &gt;&lt;p style="MARGIN: 0px"&gt;T? myVar = &lt;span style="color:blue;"&gt;null&lt;/span&gt;;&lt;/p&gt;&lt;/div&gt;که در اینجا T یک Datytype هست.مثال:&lt;br /&gt;&lt;br /&gt;&lt;div dir="ltr" style="BACKGROUND: white;font-family:Courier New;font-size:10pt;color:black;" align="left"   &gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:#2b91af;"&gt;Nullable&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Int32&lt;/span&gt;&amp;gt; myVar = &lt;span style="color:blue;"&gt;null&lt;/span&gt;;&lt;/p&gt;&lt;/div&gt;یا&lt;br /&gt;&lt;br /&gt;&lt;div dir="ltr" style="BACKGROUND: white;font-family:Courier New;font-size:10pt;color:black;" align="left"   &gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:#2b91af;"&gt;Int32&lt;/span&gt;? myVar = &lt;span style="color:blue;"&gt;null&lt;/span&gt;;&lt;/p&gt;&lt;/div&gt;اگر بخواهیم یک متغیر Nullable رو به یک متغیر عادی تسبت بدیم باید از عملگر ?? استفاده کنیم تا بتونیم به متغیر نال پذیر مقدار پیش فرض بدیم.به مثال زیر دقت کنید:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div dir="ltr" style="BACKGROUND: white;font-family:Courier New;font-size:10pt;color:black;" align="left"   &gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:green;"&gt;// ?? operator example.&lt;/span&gt;&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;int&lt;/span&gt;? x = &lt;span style="color:blue;"&gt;null&lt;/span&gt;;&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:green;"&gt;// y = x, unless x is null, in which case y = -1.&lt;/span&gt;&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;int&lt;/span&gt; y = x ?? -1;&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;در اینجا میگیم اگر x نال نبود که هیچی اما اگر نال بود بجاش -1 رو بریز تو y.&lt;br /&gt;چند مثال:&lt;br /&gt;&lt;br /&gt;&lt;div dir="ltr" style="BACKGROUND: white;font-family:Courier New;font-size:10pt;color:black;" align="left"   &gt;&lt;/div&gt;&lt;p dir="ltr" style="MARGIN-TOP: 0px; BACKGROUND: white" align="left"&gt;System.&lt;span style="color:#2b91af;"&gt;Nullable&lt;/span&gt;&amp;lt;&lt;span style="color:blue;"&gt;int&lt;/span&gt;&amp;gt; i1 = 0;&lt;/p&gt;&lt;p dir="ltr" style="MARGIN-TOP: 0px; BACKGROUND: white" align="left"&gt;System.&lt;span style="color:#2b91af;"&gt;Nullable&lt;/span&gt;&amp;lt;&lt;span style="color:blue;"&gt;int&lt;/span&gt;&amp;gt; i2 = &lt;span style="color:blue;"&gt;null&lt;/span&gt;;&lt;/p&gt;&lt;p dir="ltr" style="MARGIN-TOP: 0px; BACKGROUND: white" align="left"&gt;&lt;span style="color:blue;"&gt;int&lt;/span&gt; i3 = 0;&lt;/p&gt;&lt;p dir="ltr" style="MARGIN-TOP: 0px; BACKGROUND: white" align="left"&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (i1 == i2)&lt;/p&gt;&lt;div dir="ltr" style="BACKGROUND: white;font-family:Courier New;font-size:10pt;color:black;" align="left"   &gt;{&lt;/div&gt;&lt;div dir="ltr" style="BACKGROUND: white;font-family:Courier New;font-size:10pt;color:black;" align="left"   &gt;System.&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;"i1 and i2 are the same"&lt;/span&gt;);&lt;/div&gt;&lt;div dir="ltr" style="BACKGROUND: white;font-family:Courier New;font-size:10pt;color:black;" align="left"   &gt;}&lt;/div&gt;&lt;div dir="ltr" style="BACKGROUND: white;font-family:Courier New;font-size:10pt;color:black;" align="left"   &gt;&lt;span style="color:blue;"&gt;else&lt;/span&gt;&lt;/div&gt;&lt;div dir="ltr" style="BACKGROUND: white;font-family:Courier New;font-size:10pt;color:black;" align="left"   &gt;{&lt;/div&gt;&lt;div dir="ltr" style="BACKGROUND: white;font-family:Courier New;font-size:10pt;color:black;" align="left"   &gt;System.&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;"i1 and i2 are different"&lt;/span&gt;);&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p dir="ltr" style="BACKGROUND: white; MARGIN: 0px" align="left" size="10pt" color="black" face="Courier New"&gt;}&lt;/p&gt;&lt;div dir="ltr" style="BACKGROUND: white" align="left" size="10pt" color="black" face="Courier New"&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (i1 == i3)&lt;/div&gt;&lt;div dir="ltr" style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New" align="left"&gt;{&lt;/div&gt;&lt;div dir="ltr" style="BACKGROUND: white" align="left" size="10pt" color="black" face="Courier New"&gt;System.&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;"i1 and i3 are the same"&lt;/span&gt;);&lt;/div&gt;&lt;div dir="ltr" style="BACKGROUND: white" align="left" size="10pt" color="black" face="Courier New"&gt;}&lt;/div&gt;&lt;div dir="ltr" style="BACKGROUND: white" align="left" size="10pt" color="black" face="Courier New"&gt;&lt;span style="color:blue;"&gt;else&lt;/span&gt;&lt;/div&gt;&lt;div dir="ltr" style="BACKGROUND: white" align="left" size="10pt" color="black" face="Courier New"&gt;{&lt;/div&gt;&lt;div dir="ltr" style="BACKGROUND: white" align="left" size="10pt" color="black" face="Courier New"&gt;System.&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;"i1 and i3 are different"&lt;/span&gt;);&lt;/div&gt;&lt;div dir="ltr" style="BACKGROUND: white" align="left" size="10pt" color="black" face="Courier New"&gt;}&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;خروجی قطعه کد بالا بصورت زیر هست:&lt;br /&gt;&lt;br /&gt;&lt;div dir="ltr" style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New" align="left"&gt;&lt;p style="MARGIN: 0px"&gt;i1 and i2 are different&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;i1 and i3 are the same&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;مثال 2:&lt;br /&gt;&lt;br /&gt;&lt;div dir="ltr" style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New" align="left"&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;System.&lt;span style="color:#2b91af;"&gt;Nullable&lt;/span&gt;&amp;lt;&lt;span style="color:blue;"&gt;int&lt;/span&gt;&amp;gt; i1 = &lt;span style="color:blue;"&gt;null&lt;/span&gt;;&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;try&lt;/span&gt;&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;{&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;System.&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;"The value is {0}"&lt;/span&gt;, i1.Value);&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;}&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;catch&lt;/span&gt;&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;{&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;System.&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;"null causes an exception"&lt;/span&gt;);&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;}&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;i1 = 1;&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;try&lt;/span&gt;&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;{&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;System.&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;"The value is {0}"&lt;/span&gt;, i1.Value);&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;}&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;catch&lt;/span&gt;&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;{&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;System.&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;"1 causes an exception"&lt;/span&gt;);&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;}&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;خروجی بصورت زیر است:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div dir="ltr" style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New" align="left"&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:black;"&gt;null&lt;/span&gt; causes an exception&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;The value &lt;span style="color:black;"&gt;is&lt;/span&gt; 1&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;مثال 3: نسبت دادن یک مقدار متغیر نال پذیر در صورتی که نال باشد:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div dir="ltr" style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New" align="left"&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;int&lt;/span&gt; DefaultIfNull(System.&lt;span style="color:#2b91af;"&gt;Nullable&lt;/span&gt;&amp;lt;&lt;span style="color:blue;"&gt;int&lt;/span&gt;&amp;gt; i)&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;{&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;int&lt;/span&gt; retVal;&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (i.HasValue)&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;{&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;retVal = i;&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;}&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;else&lt;/span&gt;&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;{&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;retVal = 1;&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;}&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;return&lt;/span&gt; retVal;&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;}&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;int&lt;/span&gt; DefaultIfNull(System.&lt;span style="color:#2b91af;"&gt;Nullable&lt;/span&gt;&amp;lt;&lt;span style="color:blue;"&gt;int&lt;/span&gt;&amp;gt; i)&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;{&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;return&lt;/span&gt; i ?? 10;&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;}&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;تابع HasValue چک میکنه که آیا یک متغیر نال پذیر مقدار نال دارد یا خیر.&lt;br /&gt;مثال 4: پارامتر نال پذیر:&lt;br /&gt;&lt;br /&gt;&lt;div dir="ltr" style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New" align="left"&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; button1_Click(&lt;span style="color:blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af;"&gt;EventArgs&lt;/span&gt; e)&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;{&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;bool&lt;/span&gt; b=&lt;span style="color:blue;"&gt;true&lt;/span&gt;;&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;b = nima(&lt;span style="color:blue;"&gt;null&lt;/span&gt;);&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:#2b91af;"&gt;MessageBox&lt;/span&gt;.Show(b.ToString());&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;b = nima(2);&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:#2b91af;"&gt;MessageBox&lt;/span&gt;.Show(b.ToString());&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;}&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;bool&lt;/span&gt; nima(&lt;span style="color:blue;"&gt;int&lt;/span&gt;? i)&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;{&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (i == &lt;span style="color:blue;"&gt;null&lt;/span&gt;)&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;return&lt;/span&gt; &lt;span style="color:blue;"&gt;false&lt;/span&gt;;&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;else&lt;/span&gt;&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;return&lt;/span&gt; &lt;span style="color:blue;"&gt;true&lt;/span&gt;;&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;}&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;نکته 1: از نوع string نمیشه در متغیرهای نال پذیر استفاده کرد چون استرینگ یک رفرنس هست به رشته ای از کاراکترها&lt;br /&gt;نکته 2: یکی از بهترین استفاده های این متغیرها وقتی است که شما میخواین از ستونی در جدولتون اطلاعات بخونین که میتونه مثادیر نال داشته باشه.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8351565221579986136-8904964497920651012?l=programmingarts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmingarts.blogspot.com/feeds/8904964497920651012/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://programmingarts.blogspot.com/2009/05/systemnullable.html#comment-form' title='2 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/8904964497920651012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/8904964497920651012'/><link rel='alternate' type='text/html' href='http://programmingarts.blogspot.com/2009/05/systemnullable.html' title='System.Nullable : متغیرها هم میتوانند نال بپذیرند'/><author><name>نیما</name><uri>http://www.blogger.com/profile/13021429248034001455</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-8351565221579986136.post-4823618285323040406</id><published>2009-05-17T02:05:00.002+04:30</published><updated>2009-05-17T02:09:57.255+04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>یه مثال از MultiThreading</title><content type='html'>سلام یه مثال کوچیک از مالتی تردینگ که به دو صورت UI رو آپدیت میکنه&lt;br /&gt;&lt;br /&gt;&lt;a href="http://nima-dir.persiangig.com/Articles/MultiThreading/UIMultithreading.rar"&gt;MultiThreading&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8351565221579986136-4823618285323040406?l=programmingarts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmingarts.blogspot.com/feeds/4823618285323040406/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://programmingarts.blogspot.com/2009/05/multithreading.html#comment-form' title='0 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/4823618285323040406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/4823618285323040406'/><link rel='alternate' type='text/html' href='http://programmingarts.blogspot.com/2009/05/multithreading.html' title='یه مثال از MultiThreading'/><author><name>نیما</name><uri>http://www.blogger.com/profile/13021429248034001455</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-8351565221579986136.post-7690090265898928940</id><published>2009-04-29T01:49:00.005+04:30</published><updated>2009-06-23T19:56:09.687+04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>نوعی دیگر در نصب دیتابیس همراه با Setup برنامه</title><content type='html'>&lt;div dir="rtl" align="right"&gt;&lt;/div&gt;&lt;div dir="rtl" align="right"&gt;سلام&lt;br /&gt;گاهی پیش میاد که لازمه دیتابیس هم همراه با برنامه نصب بشه.یکی از راههای ممکن استفاده از مقاله خانم بیتا هست.اون روش به اندازه کافی کارآمد هست اما من اینجا یه روشی رو میگم که شما خوده دیتابیس رو Attach میکنین.شاید لازم بوده مقادیر اولیه ای رو داخل دیتابیس قرار بدین در این روش دیگه لازم نیست اسکریپت اضافه کردن این مقادیر اولیه رو بنویسین بلکه سر و کار ما با خوده فایل دیتا بیس هست.&lt;br /&gt;نکته کلیدی در این پروژه استفاده از SQL Server Management Objects (SMO) هست . SMO راهی است برای مدیریت اشیای SQL Server .برای این مدیریت اصلا لازم نیست از دستورات SQL استفاده بشه بلکه دات نت همه کارها رو برای ما میکنه. ما میتونیم دیتابیس ایجاد کنیم. درونش جدول و یا Store Procedure ایجاد کنیم و ...&lt;br /&gt;خوب برای رسیدن به هدف پروژمون یه پروژه ساده بسازین که یه گرید داشته باشه و اونم یه یکی از جداول دیتابیس مورد نظر شما وصل باشه. برنامتون رو یه دور تست کنین و مطوئن بشین که همه چیز به درستی کار میکنه .&lt;/div&gt;&lt;div dir="rtl" align="right"&gt;&lt;/div&gt;&lt;div dir="rtl" align="right"&gt;خوب برای یک Custom Install یک کلاس Installer به پروژتون اضافه کنین. خوب ما فرض میکنیم که اون دیتابیس در پوشه ای به نام DB کنار برنامه اصلی هست (اگر فیلم آموزشی خانم بیتا رو ببینین میبینین که میشه یه پارامتر تعریف کرد برای مسیر دیتابیس و دیتابیس رو تو اون مسیر ریخت من این مورد رو به عهده خودتون میذارم) . کاری که انجام میدیم اینه که با استفاده از Reflection مسیر فایل اجرایی رو بدست میاریم و فایلهای دیتابیس رو که درون فلدر DB کنار پروژه هست رو با استفاده از SMO به نمونه نصب شده SQL Server اتچ میکنه. نکته ای که هست من کار اتچ کردن دیتابیس رو درون رویداد Install نوشتم چون میخواستم مطمئن بشم فایلهای دیتابیس که درون پروژه ست آپ هست ( در ادامه توضیح میدم) حتما در جای مناسب کپی شدن. برای اطلاع از جزئیات Install به MSDN مراجعه کنین. برای UnInstall کردن برنامه هم دیتابیس رو Detach میکنیم.. کدها به اندازه کافی معلوم هستن .&lt;/div&gt;&lt;div dir="rtl" align="right"&gt;&lt;/div&gt;&lt;div dir="rtl" align="right"&gt;&lt;/div&gt;&lt;div dir="ltr" style="BACKGROUND: white;font-family:Courier New;font-size:10pt;color:black;" align="left"   &gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;[RunInstaller(&lt;span style="color:blue;"&gt;true&lt;/span&gt;)]&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;partial&lt;/span&gt; &lt;span style="color:blue;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Installer1&lt;/span&gt; : Installer&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;{&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt; path;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; Installer1()&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;{&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;InitializeComponent();&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;}&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; AttachDB()&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;{&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;try&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;{&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;SqlConnection cn = &lt;span style="color:blue;"&gt;new&lt;/span&gt; SqlConnection(&lt;span style="color:#a31515;"&gt;"Data Source=.;Initial Catalog=InstallDB;Integrated Security=True"&lt;/span&gt;);&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;Assembly asm = Assembly.GetExecutingAssembly();&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;path = System.IO.&lt;span style="color:#2b91af;"&gt;Path&lt;/span&gt;.GetDirectoryName(asm.GetName().CodeBase);&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;path = path.Substring(6) + &lt;span style="color:#a31515;"&gt;"\\DB\\"&lt;/span&gt;;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;Server SqlServer = &lt;span style="color:blue;"&gt;new&lt;/span&gt; Server();&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:green;"&gt;//System.Windows.Forms.MessageBox.Show(path);&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt; DatabaseName = &lt;span style="color:#a31515;"&gt;"InstallDB"&lt;/span&gt;;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;ServerConnection SqlServerConnection = SqlServer.ConnectionContext;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (SqlServer.Databases[DatabaseName] == &lt;span style="color:blue;"&gt;null&lt;/span&gt;)&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;{&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;Database NewDatabase = &lt;span style="color:blue;"&gt;new&lt;/span&gt; Database(SqlServer, DatabaseName);&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;FileGroup DatabaseFileGroup = &lt;span style="color:blue;"&gt;new&lt;/span&gt; FileGroup(NewDatabase, &lt;span style="color:#a31515;"&gt;"PRIMARY"&lt;/span&gt;);&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;NewDatabase.FileGroups.Add(DatabaseFileGroup);&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;DataFile DatabaseDataFile = &lt;span style="color:blue;"&gt;new&lt;/span&gt; DataFile(DatabaseFileGroup, DatabaseName);&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;DatabaseFileGroup.Files.Add(DatabaseDataFile);&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;DatabaseDataFile.FileName = path + &lt;span style="color:#a31515;"&gt;"InstallDB.mdf"&lt;/span&gt;;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;LogFile DatabaseLogFile = &lt;span style="color:blue;"&gt;new&lt;/span&gt; LogFile(NewDatabase, DatabaseName + &lt;span style="color:#a31515;"&gt;"_log"&lt;/span&gt;);&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;NewDatabase.LogFiles.Add(DatabaseLogFile);&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;DatabaseLogFile.FileName = path + &lt;span style="color:#a31515;"&gt;"InstallDB_log.ldf"&lt;/span&gt;;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;NewDatabase.Create(&lt;span style="color:blue;"&gt;true&lt;/span&gt;);&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;}&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;else&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;System.Windows.Forms.MessageBox.Show(&lt;span style="color:#a31515;"&gt;"این دیتابیس وجود دارد"&lt;/span&gt;);&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;}&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;catch&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;Exception&lt;/span&gt; ex)&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;{&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;System.Windows.Forms.MessageBox.Show(ex.InnerException.InnerException.ToString());&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;}&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;}&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;override&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Install(System.Collections.&lt;span style="color:#2b91af;"&gt;IDictionary&lt;/span&gt; stateSaver)&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;{&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.Install(stateSaver);&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:green;"&gt;//System.IO.File.Create(@"c:\t.txt");&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;AttachDB();&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;}&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;override&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Uninstall(System.Collections.&lt;span style="color:#2b91af;"&gt;IDictionary&lt;/span&gt; savedState)&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;{&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.Uninstall(savedState);&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;Server SqlServer = &lt;span style="color:blue;"&gt;new&lt;/span&gt; Server();&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt; DatabaseName = &lt;span style="color:#a31515;"&gt;"InstallDB"&lt;/span&gt;;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (SqlServer.Databases[DatabaseName] != &lt;span style="color:blue;"&gt;null&lt;/span&gt;)&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;{&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;SqlServer.DetachDatabase(DatabaseName, &lt;span style="color:blue;"&gt;true&lt;/span&gt;);&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;}&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:green;"&gt;//Assembly asm = Assembly.GetExecutingAssembly();&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:green;"&gt;//path = System.IO.Path.GetDirectoryName(asm.GetName().CodeBase);&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:green;"&gt;//path = path.Substring(6) + "\\DB\\";&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:green;"&gt;//System.IO.File.Delete(path + DatabaseName + ".mdf");&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:green;"&gt;//System.IO.File.Delete(path + DatabaseName + "_log.ldf");&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;}&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;}&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;یه پروژه جدید از نوع Setup Project به سولوشن اضافه کنین .من داخل ویوی File System یک پوشه به اسم DB قرار ایجاد کردم فایلهای دیتابیس (mdf و ldf ) رو به داخل اون منتقل کرد خاصیت AlwaysCreate رو به true و DeafultLocation رو به [TARGETDIR]\DB تغییر دادم. بعد از تنظیمات مربوطه که پروژه قبلی رو ست آپ کنه به ویوی Custom Action برین و برای رویدادهای Commit و UnInstall رو (همونطوری که نمونش در فیلم آموزش خانم بیتا هست) به پروژه ای که کلاس Installer داره نسبت بدین تا در موقع اتفاق افتادن ایونتهای مورد نظر کده مورد نظر اجرا بشه . من یه تیکه کد کامنت شده نوشتم که دیتابیس رو بعد از UnInstall پاک میکنه شما هر کاری دوست دارین میتونین بکنین اعم از اینکه به پوشه ای دیگه ای منتقلشون کنین امیوارم که مفید باشه.&lt;/p&gt;&lt;p&gt;&lt;a href="http://nima-dir.persiangig.com/Articles/InstallDBWithSetup/InstallDBWithSetup.rar"&gt;InstallDBWithSetup.rar&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8351565221579986136-7690090265898928940?l=programmingarts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmingarts.blogspot.com/feeds/7690090265898928940/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://programmingarts.blogspot.com/2009/04/blog-post_29.html#comment-form' title='0 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/7690090265898928940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/7690090265898928940'/><link rel='alternate' type='text/html' href='http://programmingarts.blogspot.com/2009/04/blog-post_29.html' title='نوعی دیگر در نصب دیتابیس همراه با Setup برنامه'/><author><name>نیما</name><uri>http://www.blogger.com/profile/13021429248034001455</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-8351565221579986136.post-2378616622256062352</id><published>2009-04-26T23:44:00.004+04:30</published><updated>2009-04-28T10:19:19.590+04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><title type='text'>DotRas</title><content type='html'>&lt;div dir="rtl" align="right"&gt;سلام&lt;br /&gt;داشتم روی RAS سرچ میکردم به یه فریم ورک اپن سورس برخوردم خیلی چیزه جالبی بود اسمش &lt;a href="http://dotras.codeplex.com/"&gt;DotRas&lt;/a&gt; هست .این پروژه داخل CodePlex هست و میتونین اطلاعات مربوطه رو از اونجا پیدا کنین. اما کارهایی که این این فریم ورک میکنه :&lt;br /&gt;· تشخیص بده که آیا ارتباط برقرار هست یا نه&lt;br /&gt;· تعدا بایتهای فرستاده شده و گرفته شده&lt;br /&gt;· لیست کردن تمام کانکشنها اعم از دایال آپ ، VPN و ...&lt;br /&gt;· برگردوندن شماره تلفن ، یورنیم ، پسورد ، شماره کشور و کلا هر چیزی که داخل پنجره Properties کانکشن وجود داره&lt;br /&gt;· اتصال به دو صورت همزمان (synchronous) و عیر همزمان (asynchronous)&lt;br /&gt;· نشان دادن وضعیت حین شماره گیری&lt;br /&gt;· نشان دادن نوع و نام Device ای که از طریق اون وصل شدین&lt;br /&gt;· و ...&lt;/div&gt;&lt;div dir="rtl" align="right"&gt;فقط تنها نکته ای که هست برای باز کردن با ویژوال استودیو باید یه برنامه به اسم &lt;a href="http://code.msdn.microsoft.com/sourceanalysis"&gt;Microsoft.StyleCop&lt;/a&gt; رو قبلش نصب کنبن. بعد میتونین سورس برنامه رو که البته خیلی پیچیده هست ببینین&lt;/div&gt;&lt;div dir="rtl" align="right"&gt;دانلود:&lt;/div&gt;&lt;div dir="rtl" align="right"&gt;&lt;a href="http://nima-dir.persiangig.com/Articles/DotRas/DotRas%20v1.0%20Source.zip"&gt;DotRas Source&lt;/a&gt;&lt;/div&gt;&lt;div dir="rtl" align="right"&gt;&lt;a href="http://nima-dir.persiangig.com/Articles/DotRas/DotRas%20v1.0.zip"&gt;DotRas&lt;/a&gt;&lt;/div&gt;&lt;div dir="rtl" align="right"&gt;&lt;a href="http://nima-dir.persiangig.com/Articles/DotRas/Microsoft.StyleCop.msi"&gt;Microsoft.StyleCop&lt;/a&gt;&lt;/div&gt;&lt;div dir="rtl" align="right"&gt; &lt;/div&gt;&lt;div dir="rtl" align="right"&gt;این هم لینک یه فیلم آموزشی :   &lt;a href="http://www.youtube.com/watch?v=ii7L3uXIAXM"&gt;http://www.youtube.com/watch?v=ii7L3uXIAXM&lt;/a&gt;&lt;/div&gt;&lt;div dir="rtl" align="right"&gt;&lt;a href="http://dotras.codeplex.com/"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div dir="rtl" align="right"&gt;موفق باشید&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8351565221579986136-2378616622256062352?l=programmingarts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmingarts.blogspot.com/feeds/2378616622256062352/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://programmingarts.blogspot.com/2009/04/dotras.html#comment-form' title='1 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/2378616622256062352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/2378616622256062352'/><link rel='alternate' type='text/html' href='http://programmingarts.blogspot.com/2009/04/dotras.html' title='DotRas'/><author><name>نیما</name><uri>http://www.blogger.com/profile/13021429248034001455</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-8351565221579986136.post-272759186683572014</id><published>2009-04-24T12:18:00.000+04:30</published><updated>2009-04-24T12:19:22.464+04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='دلنوشته های من...'/><title type='text'>بازم اومدی...</title><content type='html'>نمیدونم ولی فکر میکنم باید بنویسم. تازه نمیدونم از چی باید بنویسم... . من از پشت شبهای بی خاطره... من از پشت زندان غم... من از آرزوهای دور و دراز... من از خواب چشمان نم...&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/8351565221579986136-272759186683572014?l=programmingarts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmingarts.blogspot.com/feeds/272759186683572014/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://programmingarts.blogspot.com/2009/04/blog-post.html#comment-form' title='2 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/272759186683572014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/272759186683572014'/><link rel='alternate' type='text/html' href='http://programmingarts.blogspot.com/2009/04/blog-post.html' title='بازم اومدی...'/><author><name>نیما</name><uri>http://www.blogger.com/profile/13021429248034001455</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-8351565221579986136.post-760632815477838990</id><published>2009-04-08T13:25:00.002+04:30</published><updated>2009-04-08T13:34:39.881+04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>RegisterHotKey و Hook (قسمت دوم)</title><content type='html'>&lt;div dir="rtl" align="right"&gt;سلامبا استفاده از رفرنس &lt;a href="http://www.codeproject.com/KB/cs/globalhook.aspx?fid=57596&amp;amp;df=90&amp;amp;mpp=25&amp;amp;noise=3&amp;amp;sort=Position&amp;amp;view=Quick&amp;amp;select=852443&amp;amp;fr=726" rel="nofollow"&gt;Processing Global Mouse and Keyboard Hooks in C#&lt;/a&gt; و یکمی تغییر برای امکان تشخیص کلید وسطی ماوس میتونید تمام کلیدهای فشرده شده و همچنین کلیدهای ماوس رو مانیتور کنین. با دیدن کد میتونین مقادیر مربوط به هر یک از دکمه های ماوس رو ببینین .این روش Hook نام داره .موفق باشید&lt;/div&gt;&lt;div dir="rtl" align="right"&gt;&lt;a href="http://nima-dir.persiangig.com/Articles/RegisterHotKey/GlobalHook.rar"&gt;GlobalHook.rar&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8351565221579986136-760632815477838990?l=programmingarts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmingarts.blogspot.com/feeds/760632815477838990/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://programmingarts.blogspot.com/2009/04/registerhotkey-hook_08.html#comment-form' title='0 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/760632815477838990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/760632815477838990'/><link rel='alternate' type='text/html' href='http://programmingarts.blogspot.com/2009/04/registerhotkey-hook_08.html' title='RegisterHotKey و Hook (قسمت دوم)'/><author><name>نیما</name><uri>http://www.blogger.com/profile/13021429248034001455</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-8351565221579986136.post-462295945868626091</id><published>2009-04-06T23:29:00.002+04:30</published><updated>2009-04-06T23:34:37.543+04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>RegisterHotKey و Hook (قسمت اول)</title><content type='html'>سلام&lt;br /&gt;تا به حال یه این فکر کردین که یه برنامه بنویسین که دم دستی باشه؟ یعنی کاربر هر موقع که میخواد بتونه اون رو فراخونی کنه؟ فقط با یه دکمه؟ مثل Babylon و برنامه هایی از این قبیل. در این مقاله و در قسمتهای مختلف طریقه گرفتن کلید از کیبورد و همچنین بدست آوردن کلیدی از ماوس که فشرده شده رو بصورت گام به گام یاد میگیریم.&lt;br /&gt;دو راه برای گرفتن کد کلید در هر جای ویندوز وجود داره: RegisterHotKey و Hook&lt;br /&gt;در مقاله زیر این موارد بررسی شده.&lt;br /&gt;قسمت اول:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://nima-dir.persiangig.com/Articles/RegisterHotKey/RegisterHotKey.pdf"&gt;RegisterHotKey.pdf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://nima-dir.persiangig.com/Articles/RegisterHotKey/UsingRegisterHotKey.rar"&gt;UsingRegisterHotKey.rar&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8351565221579986136-462295945868626091?l=programmingarts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmingarts.blogspot.com/feeds/462295945868626091/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://programmingarts.blogspot.com/2009/04/registerhotkey-hook.html#comment-form' title='0 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/462295945868626091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/462295945868626091'/><link rel='alternate' type='text/html' href='http://programmingarts.blogspot.com/2009/04/registerhotkey-hook.html' title='RegisterHotKey و Hook (قسمت اول)'/><author><name>نیما</name><uri>http://www.blogger.com/profile/13021429248034001455</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-8351565221579986136.post-9180575039481496377</id><published>2009-04-01T14:32:00.002+04:30</published><updated>2009-04-01T14:34:18.469+04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net'/><title type='text'>ViewStateCompressor</title><content type='html'>&lt;div dir="rtl" align="right"&gt;از اینجا میتونین یه آموزش سریع برای فشرده کرد ViewState رو بگیرین.&lt;/div&gt;&lt;div dir="rtl" align="right"&gt; &lt;/div&gt;&lt;div dir="rtl" align="right"&gt;&lt;a href="http://nima-dir.persiangig.com/Articles/ViewStateCompressor.pdf"&gt;ViewStateCompressor&lt;/a&gt;&lt;/div&gt;&lt;div dir="rtl" align="right"&gt; &lt;/div&gt;&lt;div dir="rtl" align="right"&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8351565221579986136-9180575039481496377?l=programmingarts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmingarts.blogspot.com/feeds/9180575039481496377/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://programmingarts.blogspot.com/2009/04/viewstate.html#comment-form' title='0 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/9180575039481496377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/9180575039481496377'/><link rel='alternate' type='text/html' href='http://programmingarts.blogspot.com/2009/04/viewstate.html' title='ViewStateCompressor'/><author><name>نیما</name><uri>http://www.blogger.com/profile/13021429248034001455</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-8351565221579986136.post-3627991378721026830</id><published>2009-04-01T13:55:00.003+04:30</published><updated>2009-04-01T14:31:33.480+04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net'/><title type='text'>YUI Compressor</title><content type='html'>از این آدرس میتونین یه آموزش سریع از YUI Compressor پیدا کنین.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://nima-dir.persiangig.com/Articles/YUI%20Compressor.pdf"&gt;YUI Compressor &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8351565221579986136-3627991378721026830?l=programmingarts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmingarts.blogspot.com/feeds/3627991378721026830/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://programmingarts.blogspot.com/2009/04/yui-compressor.html#comment-form' title='0 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/3627991378721026830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/3627991378721026830'/><link rel='alternate' type='text/html' href='http://programmingarts.blogspot.com/2009/04/yui-compressor.html' title='YUI Compressor'/><author><name>نیما</name><uri>http://www.blogger.com/profile/13021429248034001455</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-8351565221579986136.post-8618077228658975201</id><published>2009-03-27T13:14:00.001+04:30</published><updated>2009-03-27T13:16:59.605+04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>آپدیت با استفاده از TimeStamp</title><content type='html'>&lt;div dir="rtl" align="right"&gt;یکی از راههای جلوگیری از concurrency استفاده از مقایسه تمامی فیلدها در قسمت Where است . یعنی اینکه تمام فیلدهای جدول رو در قسمت Where قرار دهیم تا اینجوری اگر کسی از جای دیگه آپدیت کرده بود به مشکل برنخوریم.&lt;br /&gt;یکی دیگه از راههای این کار استفاده از یک فیلد TimeStamp در جدول است. وقتی که یه سطر از جدول به روز رسانی میشود و یا اضافه میشود SQL Server بطور اتوماتیک این فیلد را تغییر میدهد. خوب ما میتوانیم از این کار برای جلوگیری از همزمانی استفاده کنیم:&lt;br /&gt;برای این کار یک پارامتر از نوع Parameter تعریف کنید که از نوع باینری باشد(داده Timestamp مقادیر باینری را در خود نگه میدارد) باشه:&lt;/div&gt;&lt;div dir="rtl" align="right"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div dir="ltr" style="BACKGROUND: white;font-family:Courier New;font-size:10pt;color:black;" align="left"   &gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;daUpdateCommand.Parameters.Add(&lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;SqlParameter&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;"@pTimeStamp"&lt;/span&gt;, &lt;span style="color:#2b91af;"&gt;SqlDbType&lt;/span&gt;.Binary));&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;            daUpdateCommand.Parameters[&lt;span style="color:#a31515;"&gt;"@pTimeStamp"&lt;/span&gt;].SourceVersion = &lt;span style="color:#2b91af;"&gt;DataRowVersion&lt;/span&gt;.Original;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;            daUpdateCommand.Parameters[&lt;span style="color:#a31515;"&gt;"@pTimeStamp"&lt;/span&gt;].SourceColumn = &lt;span style="color:#a31515;"&gt;"TimeStampCol"&lt;/span&gt;;&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;SourceVersion: در SqlDataAdapter.UpdateCommand استفاده میشود و مشخص میکند طی بروز رسانی از مقدار فعلی پارامتر استفاده شود یا از مقدار اصلی و اولیه.&lt;br /&gt;DataRowVersion: نسخه DataRow را مشخص میکند. DataRowVersion یک مجموعه است که 4 مقدار Original ، Current ، Proposed و Default را در خود دارد. در کد بالا به دلیل اینکه میخواهیم از مقدار اصلی موجود در جدول استفاده کنیم از Original استفاده میکنیم&lt;br /&gt;SourceColumn : هم ستونی را که باید این پارامتر از آن مقدار بگیرد را مشخص میکند.&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8351565221579986136-8618077228658975201?l=programmingarts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmingarts.blogspot.com/feeds/8618077228658975201/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://programmingarts.blogspot.com/2009/03/timestamp.html#comment-form' title='0 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/8618077228658975201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/8618077228658975201'/><link rel='alternate' type='text/html' href='http://programmingarts.blogspot.com/2009/03/timestamp.html' title='آپدیت با استفاده از TimeStamp'/><author><name>نیما</name><uri>http://www.blogger.com/profile/13021429248034001455</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-8351565221579986136.post-4487351726886776201</id><published>2009-03-24T12:58:00.002+04:30</published><updated>2009-03-24T13:03:01.201+04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Inherited Control</title><content type='html'>&lt;div dir="rtl" align="right"&gt;سلام&lt;br /&gt;گاهی پیش میاد که میخوایم یه سری از کنترلهای ما (مثلا 10 تا تکست باکس داریم) ظاهرشون یه طور خاصی باشه یا اینکه همشون یه خصوصیت خاصی داشته باشن. یکی از کارهای ساده ای که میشه انجام داد اینه که از Inherited Control استفاده کنیم. برای این من منظور یه کلاس ایجاد کنید و اون رو از کنترل مورد نظر ارث بری کنین.&lt;br /&gt;بیاین یه مثال رو بررسی کنیم:&lt;br /&gt;فرض کنین میخوایم وقتی که اگر بیشتر از 70 درصد MaxLength هر تکست باکسی تو پروژه پر شد رنگش صورتی بشه و اگر بیشتر از 85 درصد پر شد رنگ نوشته ها قرمز بشه. ابتدا برای این کار یه کلاس به پروژه اضافه کنین. بعد کلاس رو باز کنین و اونو از کنترل TextBox ارث بری کنین:&lt;/div&gt;&lt;br /&gt;&lt;div dir="ltr" style="BACKGROUND: white;font-family:Courier New;font-size:10pt;color:black;" align="left"   &gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;HDITextBox&lt;/span&gt; : System.Windows.Forms.&lt;span style="color:#2b91af;"&gt;TextBox&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;بسیار خوب حالا برای اینکه ممکنه این عدد 70 و 85 تغییر کنه دو تا خصوصیت برای کلاسمون در نظر میگیریم:&lt;/p&gt;&lt;br /&gt;&lt;div dir="ltr" style="BACKGROUND: white;font-family:Courier New;font-size:10pt;color:black;" align="left"   &gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;double&lt;/span&gt; _WarnLevelMaxing =.85;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;double&lt;/span&gt; WarnLevelMaxing&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;{&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;get&lt;/span&gt; { &lt;span style="color:blue;"&gt;return&lt;/span&gt; _WarnLevelMaxing; }&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;set&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;{&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;_WarnLevelMaxing = &lt;span style="color:blue;"&gt;value&lt;/span&gt;;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;}&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;}&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;double&lt;/span&gt; _WarnLevelRisky=.70;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;double&lt;/span&gt; WarnLevelRisky&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;{&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;get&lt;/span&gt; { &lt;span style="color:blue;"&gt;return&lt;/span&gt; _WarnLevelRisky; }&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;set&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;{&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;_WarnLevelRisky = &lt;span style="color:blue;"&gt;value&lt;/span&gt;;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;}&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;}&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;تنها کاری که مونده اینه که متد OnTextChanged رو override کنیم تا کاری که ما میخوایم رو انجام بده:&lt;/p&gt;&lt;br /&gt;&lt;div dir="ltr" style="BACKGROUND: white;font-family:Courier New;font-size:10pt;color:black;" align="left"   &gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;protected&lt;/span&gt; &lt;span style="color:blue;"&gt;override&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; OnTextChanged(System.&lt;span style="color:#2b91af;"&gt;EventArgs&lt;/span&gt; e)&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;{&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;    &lt;span style="color:blue;"&gt;if&lt;/span&gt; (&lt;span style="color:blue;"&gt;this&lt;/span&gt;.MaxLength &amp;gt; 0)&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;    {&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;        &lt;span style="color:blue;"&gt;double&lt;/span&gt; currentLevel = &lt;span style="color:#2b91af;"&gt;Convert&lt;/span&gt;.ToDouble(  &lt;span style="color:blue;"&gt;this&lt;/span&gt;.Text.Trim().Length) / &lt;span style="color:#2b91af;"&gt;Convert&lt;/span&gt;.ToDouble(&lt;span style="color:blue;"&gt;this&lt;/span&gt;.MaxLength);&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;        &lt;span style="color:blue;"&gt;if&lt;/span&gt; (currentLevel &amp;gt; _WarnLevelMaxing) &lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;        {&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;            &lt;span style="color:blue;"&gt;this&lt;/span&gt;.ForeColor = System.Drawing.&lt;span style="color:#2b91af;"&gt;Color&lt;/span&gt;.Red;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;            &lt;span style="color:blue;"&gt;return&lt;/span&gt;;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;        }&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt; &lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;        &lt;span style="color:blue;"&gt;if&lt;/span&gt; (currentLevel &amp;gt; _WarnLevelRisky) &lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;        {&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;            &lt;span style="color:blue;"&gt;this&lt;/span&gt;.ForeColor = System.Drawing.&lt;span style="color:#2b91af;"&gt;Color&lt;/span&gt;.Plum;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;            &lt;span style="color:blue;"&gt;return&lt;/span&gt;;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;        }&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;        &lt;span style="color:blue;"&gt;if&lt;/span&gt; (currentLevel &amp;lt;= _WarnLevelRisky)&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;           {&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;               &lt;span style="color:blue;"&gt;this&lt;/span&gt;.ForeColor = System.Drawing.&lt;span style="color:#2b91af;"&gt;Color&lt;/span&gt;.Black;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;               &lt;span style="color:blue;"&gt;return&lt;/span&gt;;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;           }&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt; &lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;        }&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;   &lt;span style="color:blue;"&gt;base&lt;/span&gt;.OnTextChanged(e);&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;}&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;حالا پروژه رو Rebuild کنین و باید توی ToolBox یه کنترل جدید اضافه شده باشه. این کنترل دقیقا مثل یه تکست باکس معمولی هست فقط اون قابلیتی که شما میخواین رو هم داره.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8351565221579986136-4487351726886776201?l=programmingarts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmingarts.blogspot.com/feeds/4487351726886776201/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://programmingarts.blogspot.com/2009/03/inherited-control.html#comment-form' title='0 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/4487351726886776201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/4487351726886776201'/><link rel='alternate' type='text/html' href='http://programmingarts.blogspot.com/2009/03/inherited-control.html' title='Inherited Control'/><author><name>نیما</name><uri>http://www.blogger.com/profile/13021429248034001455</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-8351565221579986136.post-7658818135030215302</id><published>2009-03-20T14:58:00.007+03:30</published><updated>2009-03-21T00:53:16.488+03:30</updated><title type='text'>یه روز قبل از عید تو کوه</title><content type='html'>سلام&lt;br /&gt;دیروز یعنی روزه قبل از عید بعد از چند وقت به اصرار دوستان و ... رفتیم کوه.جای همتون خالی خیلی خوش گذشت. من که اینقدر خندیدم و شوخی کردم صدام گرفته . خیلی عکس گرفتیم چند تاشون رو براتون میذارم که شما هم در این خاطره خوب ما شریک باشین.&lt;br /&gt;موفق باشید.&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_aNyywfp3E_0/ScN-x7qaXgI/AAAAAAAAABo/ORmEIPw8q-E/s1600-h/Image093-1.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5315231381521587714" style="WIDTH: 200px; CURSOR: hand; HEIGHT: 150px" alt="" src="http://3.bp.blogspot.com/_aNyywfp3E_0/ScN-x7qaXgI/AAAAAAAAABo/ORmEIPw8q-E/s320/Image093-1.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;تو این عکس از راست به چپ:خودم&lt;br /&gt;وحید :فوق لیسانش عمران از امیرکبیر که ان شاالله تو عید میخواد بره خواستگاری و ازدواج کنه&lt;br /&gt;بهمن:وسطای خدمتشه ان شا الله اونم زود تموم میشه&lt;br /&gt;امیر: خیلی با هم صمیمی هستیم. بالاخره یه دختر خوب به اسم سمانه رو پیدا کرده که کناره هم روزای خوبی دارن و امیدوارم که دیگه با سمانه ازدواج کنه&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_aNyywfp3E_0/ScN-xtkPh5I/AAAAAAAAABY/so-Jrs_kvaw/s1600-h/Image070-1.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5315231377737615250" style="WIDTH: 114px; CURSOR: hand; HEIGHT: 164px" alt="" src="http://3.bp.blogspot.com/_aNyywfp3E_0/ScN-xtkPh5I/AAAAAAAAABY/so-Jrs_kvaw/s320/Image070-1.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_aNyywfp3E_0/ScN-xou3JPI/AAAAAAAAABg/v8j6peCEXzU/s1600-h/Image092-1.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5315231376439977202" style="WIDTH: 200px; CURSOR: hand; HEIGHT: 150px" alt="" src="http://3.bp.blogspot.com/_aNyywfp3E_0/ScN-xou3JPI/AAAAAAAAABg/v8j6peCEXzU/s320/Image092-1.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;از راست به چپ:خودم&lt;br /&gt;حامد:میخواد دکترا بخونه در رشته مکانیک که امیدوارم موفق بشه&lt;br /&gt;بهمن و امیر&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_aNyywfp3E_0/ScN_Qw_UXPI/AAAAAAAAABw/KB1Heqe3Alk/s1600-h/Image062.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5315231911232429298" style="WIDTH: 240px; CURSOR: hand; HEIGHT: 320px" alt="" src="http://1.bp.blogspot.com/_aNyywfp3E_0/ScN_Qw_UXPI/AAAAAAAAABw/KB1Heqe3Alk/s320/Image062.jpg" border="0" /&gt;&lt;/a&gt; &lt;a href="http://4.bp.blogspot.com/_aNyywfp3E_0/ScN_Yw37i4I/AAAAAAAAAB4/nPQyndVhq5E/s1600-h/Image068-1.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5315232048640396162" style="WIDTH: 138px; CURSOR: hand; HEIGHT: 204px" alt="" src="http://4.bp.blogspot.com/_aNyywfp3E_0/ScN_Yw37i4I/AAAAAAAAAB4/nPQyndVhq5E/s320/Image068-1.jpg" 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/8351565221579986136-7658818135030215302?l=programmingarts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmingarts.blogspot.com/feeds/7658818135030215302/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://programmingarts.blogspot.com/2009/03/blog-post_20.html#comment-form' title='0 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/7658818135030215302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/7658818135030215302'/><link rel='alternate' type='text/html' href='http://programmingarts.blogspot.com/2009/03/blog-post_20.html' title='یه روز قبل از عید تو کوه'/><author><name>نیما</name><uri>http://www.blogger.com/profile/13021429248034001455</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_aNyywfp3E_0/ScN-x7qaXgI/AAAAAAAAABo/ORmEIPw8q-E/s72-c/Image093-1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8351565221579986136.post-2769969518639541816</id><published>2009-03-20T13:31:00.003+03:30</published><updated>2009-03-20T13:33:25.137+03:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>آموزش  SQL Server 2005</title><content type='html'>سلام&lt;br /&gt;این هم فصل دوم کتاب آموزش SQL Server .عیده همتون مبارک .عیده منم مبارک .&lt;br /&gt;&lt;a href="http://nima-dir.persiangig.com/Sql%20Server/chapter%202.pdf"&gt;فصل 2&lt;/a&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/8351565221579986136-2769969518639541816?l=programmingarts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmingarts.blogspot.com/feeds/2769969518639541816/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://programmingarts.blogspot.com/2009/03/sql-server-2005_20.html#comment-form' title='0 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/2769969518639541816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/2769969518639541816'/><link rel='alternate' type='text/html' href='http://programmingarts.blogspot.com/2009/03/sql-server-2005_20.html' title='آموزش  SQL Server 2005'/><author><name>نیما</name><uri>http://www.blogger.com/profile/13021429248034001455</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-8351565221579986136.post-6079552804110381777</id><published>2009-03-19T23:31:00.004+03:30</published><updated>2009-03-19T23:47:39.438+03:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Delegate</title><content type='html'>سلام&lt;br /&gt;در طی چند مقاله میخوام به Delegate ، ایونت و ارتباط بین این دو صحبت کنم.&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:130%;color:#000099;"&gt;Delegate قسمت اول:&lt;/span&gt; &lt;/div&gt;&lt;div align="right"&gt;&lt;/div&gt;&lt;div align="right"&gt;Delegate ها را میتوان به عنوان یک جانگهدار هوشمند که رفرنسهایی را به چند متد نگه میدارد در نظر گرفت.اگر متدی بخواهد از طریق نمونه ای از یک Delegate فراخوانی شود باید در آن نمونه رجیستر شود. وقتی که رجیستر شد یک رفرنس به آن متد در مجموعه داخلی رفنسهای Delegate اضافه میشود که به آن Invocation List گفته میشود. Delegate ها میتوانند این مجموعه را بصورت همزمان یا غیر همزمان فراخوانی کنند. وقتی که یک Delegate فراخوانی شد همه متدهایی که در آن رفرنس دارند نیز اجرا میشوند.&lt;br /&gt;Delegate ها نمیتوانند به هر متدی رفرنس داشته باشند بلکه باید signature متد با signature آن Delegate دقیقا یکی باشد.(signature به زبان ساده یعنی آرگومانها از نظر نوع و تعدا و همچنین مقدار برگشتی متد دقیقا یکسان باشد)&lt;br /&gt;نحوه تعریف یک Delegate :&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div dir="ltr" style="BACKGROUND: white;font-family:Courier New;font-size:10pt;color:black;" align="left"   &gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:#2b91af;"&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;delegate&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; MyDelegate(&lt;span style="color:blue;"&gt;string&lt;/span&gt; myString);&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="right"&gt;از این Delegate متوجه میشویم که Delegate فقط میتواند به متدهایی که یک آرگومان از نوع string میگیرند و همچنین هیچ مقدار بازگشتی ندارند رفرنس داشته باشد.مثال: Delegate میتواند از متد زیر رفرنس داشته باشد: &lt;/div&gt;&lt;div align="right"&gt;مثال: Delegate میتواند از متد زیر رفرنس داشته باشد&lt;br /&gt;&lt;/div&gt;&lt;div dir="ltr" style="BACKGROUND: white;font-family:Courier New;font-size:10pt;color:black;" align="left"   &gt;&lt;br /&gt;&lt;/div&gt;&lt;p dir="ltr" style="MARGIN-TOP: 0px; BACKGROUND: white" align="left"&gt;&lt;span style="color:#2b91af;"&gt;1&lt;/span&gt; &lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; MyMethod(&lt;span style="color:blue;"&gt;string&lt;/span&gt; someString)&lt;/p&gt;&lt;div dir="ltr" style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New" align="left"&gt;&lt;br /&gt;&lt;/div&gt;&lt;p dir="ltr" style="MARGIN-TOP: 0px; BACKGROUND: white" align="left"&gt;&lt;span style="color:#2b91af;"&gt;2&lt;/span&gt; {&lt;/p&gt;&lt;div dir="ltr" style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New" align="left"&gt;&lt;br /&gt;&lt;/div&gt;&lt;p dir="ltr" style="MARGIN-TOP: 0px; BACKGROUND: white" align="left"&gt;&lt;span style="color:#2b91af;"&gt;3&lt;/span&gt; &lt;span style="color:green;"&gt;// method body here. &lt;/span&gt;&lt;/p&gt;&lt;div dir="ltr" style="BACKGROUND: white;font-family:Courier New;font-size:10pt;color:black;" align="left"   &gt;&lt;br /&gt;&lt;/div&gt;&lt;p dir="ltr" style="MARGIN-TOP: 0px; BACKGROUND: white" align="left"&gt;&lt;span style="color:#2b91af;"&gt;4&lt;/span&gt; }&lt;/p&gt;&lt;div dir="ltr" style="BACKGROUND: white" align="left" face="Courier New" size="10pt" color="black"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="right"&gt;اما نمیتواند از متدهای زیر رفرنس داشته باشد:&lt;/div&gt;&lt;div align="right"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div dir="ltr" style="BACKGROUND: white" align="left" face="Courier New" size="10pt" color="black"&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;string&lt;/span&gt; MyOtherMethod(&lt;span style="color:blue;"&gt;string&lt;/span&gt; someString)&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;{&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:green;"&gt;// method body here. &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;}&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; YetAnotherMethod(&lt;span style="color:blue;"&gt;string&lt;/span&gt; someString, &lt;span style="color:blue;"&gt;int&lt;/span&gt; someInt)&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;{&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:green;"&gt;// method body here. &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;}&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="right"&gt;&lt;br /&gt;با استفاده از کده زیر میتوانیم از یک Delegate نمونه بگیریم و یک متد را به Invocation List آن اضافه کنیم:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="ltr" style="BACKGROUND: white" align="left" face="Courier New" size="10pt" color="black"&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;MyDelegate del = &lt;span style="color:blue;"&gt;new&lt;/span&gt; MyDelegate(MyMethod);&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;del += &lt;span style="color:blue;"&gt;new&lt;/span&gt; MyDelegate(MyOtherMethod);&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="right"&gt;برای فراخوانی آن متد (و کل Invocation List ) کافیست بنویسیم:&lt;br /&gt;&lt;/div&gt;&lt;div dir="ltr" style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New" align="left"&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;del(&lt;span style="color:#a31515;"&gt;"my string value"&lt;/span&gt;);&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="right"&gt;اما شاید این سوال در ذهن شما نقش ببندد که چرا Delegate استفاده میکنیم؟ میتوان جوای این سوال را اینگونه داد:&lt;/div&gt;&lt;div align="right"&gt;1) Delegate به عنوان یک جانگهدار: در اغلب موارد ما میدانیم چه متدی باید اجرا شود و چه کدی باید در یک زمان اجرا شود. یکی از مواردی که میتوان به آن اشاره کرد این است که آنها راه دیگری را برای اجرای کد شما توسط کامپوننتهای دات نت فراهم میکنند بدون اینکه چیزی جز signature متد را بدانند. به عنوان مثال کامپوننت تایمر برای ایونت Tick خود نیاز به یک متد دارد. کامپوننت تایمر در حقیقت نمیداند شما چه کدی را برای این ایونت بنویسید فقط signature آنرا میداند. بنابراین وقتی که این ایونت را نوشتید این ایونت به invocation list مربوط به Delegate ایونت Tick اضافه میشود و هنگام رخداد ایونت Tick آن Delegate فراخوانی میشود. بنابراین Delegate ما را قدر میسازد که کدهایی را بنویسیم که بعدا به آنها متد یا متدهایی اضافه شود.&lt;/div&gt;&lt;div align="right"&gt;&lt;br /&gt;2) فراخوانی همزمان و غیر همزمان: همه Delegate ها را میتوان همزمان و غیر همزمان فراخوانی کرد. فراخوانی غیر همزمان را میشود با استفاده از BeginInvoke و EndInvoke و فراخوانی همزمان را میتوان با Invoke انجام داد.&lt;/div&gt;&lt;div align="right"&gt;&lt;br /&gt;3) کاربرد Delegate در ایونتها: اگر خدا بخواد در ادامه در مورد ایونتها بحث خواهیم کرد در آنجا خواهید دید که Delegate ها پایه ایونتها هستند. در حقیقت Delegate ها به عنوان یک لایه بین منتشر کننده ایونت(Publisher) و گیرنده ایونت(Subscriber) خواهد بود. به این معنی که گیرندگان ایونت میتوانند به Invocation List آن Delegate اضافه شوند بدون اینکه منتشر کننده چیزی راجع به آنها بداند. به این ترتیب Publisher لازم نیست چیزی راجع به Subscriber ها بداند.&lt;/div&gt;&lt;div align="right"&gt;&lt;br /&gt;4) دیگر استفاده های Delegate که فعلا آنها را بررسی نمیکنیم&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8351565221579986136-6079552804110381777?l=programmingarts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmingarts.blogspot.com/feeds/6079552804110381777/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://programmingarts.blogspot.com/2009/03/delegate.html#comment-form' title='0 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/6079552804110381777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/6079552804110381777'/><link rel='alternate' type='text/html' href='http://programmingarts.blogspot.com/2009/03/delegate.html' title='Delegate'/><author><name>نیما</name><uri>http://www.blogger.com/profile/13021429248034001455</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-8351565221579986136.post-7844177575388957953</id><published>2009-03-17T00:29:00.003+03:30</published><updated>2009-03-17T00:35:50.634+03:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>کتاب آموزش SQL Server 2005</title><content type='html'>سلام دوستان&lt;br /&gt;در چند روزه آینده کتاب آموزش برنامه نویسی با SQL Server 2005 رو براتون میذارم.یادتون نره من رو دعا کنیدا...ببینین مرامنامه اینه که اگه خوندین و چیزی یاد گرفتیم نیما رو تو دعاهاتون فراموش نکنین&lt;br /&gt;&lt;br /&gt;فصل 1: اصول RDBMS&lt;br /&gt;&lt;br /&gt;&lt;a href="http://nima-dir.persiangig.com/Sql%20Server/chapter%201.pdf"&gt;اصول RDBMS&lt;br /&gt;&lt;/a&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/8351565221579986136-7844177575388957953?l=programmingarts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmingarts.blogspot.com/feeds/7844177575388957953/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://programmingarts.blogspot.com/2009/03/sql-server-2005.html#comment-form' title='0 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/7844177575388957953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/7844177575388957953'/><link rel='alternate' type='text/html' href='http://programmingarts.blogspot.com/2009/03/sql-server-2005.html' title='کتاب آموزش SQL Server 2005'/><author><name>نیما</name><uri>http://www.blogger.com/profile/13021429248034001455</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-8351565221579986136.post-5426860741085818312</id><published>2009-03-13T02:54:00.004+03:30</published><updated>2009-03-13T03:13:29.136+03:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Guitar'/><title type='text'>آکورد آهنگ Sway از Dean Martin</title><content type='html'>سلام&lt;br /&gt;امروز داشتم یه آهنگ بسیار زیبا از Dean Martin گوش میدادم. خیلی این آهنگ رو دوست دارم. دلم میخواست با گیتار بزنم. البته اینم بگم که گیتار رو مدت خیلی کمیه شروع کردم ولی خوب آرزو بر جوانان عیب نیست.کلا دو سه تا ریتم بلدم میخوام همه آهنگای دنیا رو با این سه تا بزنم &lt;a href="http://www.pic4ever.com/images/bore.gif"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 60px; height: 49px;" src="http://www.pic4ever.com/images/bore.gif" border="0" alt="" /&gt;&lt;/a&gt; . رفتم آکوردشو پیدا کردم ولی خوب چشمتون روزه بد نبینه فکر کنم عمرا نمیشه این آهنگ رو با این آکوردهایی که نوشته با گیتار زد.تو یه کلمه باید سه بار آکورد عوض کرد &lt;a href="http://www.pic4ever.com/images/2mo5pow.gif"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 38px; height: 43px;" src="http://www.pic4ever.com/images/2mo5pow.gif" border="0" alt="" /&gt;&lt;/a&gt; .&lt;br /&gt;اینم لینکه آکورد آهنگ Sway از Dean Martin اگه کسی اینو میتونه با گیتار بزنه که خیلی خیلی کار درسته.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.e-chords.com/cifra/idmusica/81072.htm"&gt;آکورد آهنگ&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/8351565221579986136-5426860741085818312?l=programmingarts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmingarts.blogspot.com/feeds/5426860741085818312/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://programmingarts.blogspot.com/2009/03/blog-post_13.html#comment-form' title='0 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/5426860741085818312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/5426860741085818312'/><link rel='alternate' type='text/html' href='http://programmingarts.blogspot.com/2009/03/blog-post_13.html' title='آکورد آهنگ Sway از Dean Martin'/><author><name>نیما</name><uri>http://www.blogger.com/profile/13021429248034001455</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-8351565221579986136.post-7153513808750816237</id><published>2009-03-12T19:27:00.001+03:30</published><updated>2009-03-12T19:35:49.017+03:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Others'/><title type='text'>216 Web Safe Color Chart</title><content type='html'>در اینجا کد رنگهای مناسب برای وب رو گذاشتن&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.web-source.net/216_color_chart.htm"&gt;216 Web Safe Color Chart &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8351565221579986136-7153513808750816237?l=programmingarts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmingarts.blogspot.com/feeds/7153513808750816237/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://programmingarts.blogspot.com/2009/03/216-web-safe-color-chart.html#comment-form' title='0 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/7153513808750816237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/7153513808750816237'/><link rel='alternate' type='text/html' href='http://programmingarts.blogspot.com/2009/03/216-web-safe-color-chart.html' title='216 Web Safe Color Chart'/><author><name>نیما</name><uri>http://www.blogger.com/profile/13021429248034001455</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-8351565221579986136.post-7612698581935347600</id><published>2009-03-12T19:01:00.004+03:30</published><updated>2009-03-12T19:25:24.371+03:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Regular Expressions'/><title type='text'>Readable Regular Expressions</title><content type='html'>یکی از ابزارهای مفید برای کار با عبارات با قاعده استفاده از اسمبلی زیر است. این اسمبلی Pattern را بصوزت کاملا قابل خواندن میسازد طوری که میتوان به سادگی آنرا درک کرد. برای شرح کار آن به مثالهای زیر توجه کنید. فرض کنید میخواهید شماره ملی هر فرد(در امریکا) را جهت اعتبار سنجی چک کنید.کد معمول آن بصورت زیر است:&lt;br /&gt;&lt;br /&gt;&lt;div dir="rtl" align="right"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div dir="ltr" style="BACKGROUND: white" align="left" color="black" size="10pt" face="Courier New"&gt;&lt;br /&gt;&lt;/div&gt;&lt;p dir="ltr" style="MARGIN-TOP: 0px; BACKGROUND: white" align="left"&gt;&lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:blue;"&gt;readonly&lt;/span&gt; Regex socialSecurityNumberCheck = &lt;span style="color:blue;"&gt;new&lt;/span&gt; Regex(&lt;span style="color:#a31515;"&gt;@"^\d{3}-?\d{2}-?\d{4}$"&lt;/span&gt;);&lt;/p&gt;&lt;br /&gt;این کد معادل آن است که بنویسیم :&lt;br /&gt;&lt;br /&gt;&lt;div dir="ltr" style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New" align="left"&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:blue;"&gt;readonly&lt;/span&gt; Regex socialSecurityNumberCheck = &lt;span style="color:blue;"&gt;new&lt;/span&gt; Regex(Pattern.With.AtBeginning&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;.Digit.Repeat.Exactly(3)&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;.Literal(&lt;span style="color:#a31515;"&gt;"-"&lt;/span&gt;).Repeat.Optional&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;.Digit.Repeat.Exactly(2)&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;.Literal(&lt;span style="color:#a31515;"&gt;"-"&lt;/span&gt;).Repeat.Optional&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;.Digit.Repeat.Exactly(4)&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;.AtEnd);&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;نکته: این کتابخانه عملکرد واقعی عبارات منظم را انجام نمی دهد. این راه ساده دیگری برای تعریف کردن الگوی عبارات منظم است. شما هنوز برای شئ که ساخته اید نیاز به کلاس System.Text.RegularExpression.Regex دارید . از آنجایی که این طرح کاملا قابل تبدیل به System.String است ، شما به راحتی می توانید آن را در متد یا سازنده Regex ،پاس کنید. فایل پیوست را دریافت کنید.&lt;br /&gt;&lt;a href="http://nima-dir.persiangig.com/other/Readable_Regular_Expressions/ReadableRex_DLL.zip"&gt;اسبلمی&lt;/a&gt;&lt;br /&gt;&lt;a href="http://nima-dir.persiangig.com/other/Readable_Regular_Expressions/regexd.zip"&gt;سورس&lt;/a&gt;&lt;br /&gt;&lt;a href="http://p2p.dotnetsource.com/Default.aspx?g=posts&amp;amp;t=8068"&gt;منبع&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8351565221579986136-7612698581935347600?l=programmingarts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmingarts.blogspot.com/feeds/7612698581935347600/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://programmingarts.blogspot.com/2009/03/readable-regular-expressions.html#comment-form' title='0 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/7612698581935347600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/7612698581935347600'/><link rel='alternate' type='text/html' href='http://programmingarts.blogspot.com/2009/03/readable-regular-expressions.html' title='Readable Regular Expressions'/><author><name>نیما</name><uri>http://www.blogger.com/profile/13021429248034001455</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-8351565221579986136.post-1311903193658382406</id><published>2009-03-11T13:45:00.010+03:30</published><updated>2009-03-12T19:00:58.010+03:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Regular Expressions'/><title type='text'>Regular Expressions</title><content type='html'>عبارات منظم (Regular Expressions) وسیله ای را برای برنامه نویسان فراهم می کنند که بتوان به کمک آنها عبارات ، کلمه ها و الگوها ی مورد نظر را در یک رشته متنی (String) پیدا کرد. در اغلب موتور های جستجوی پیشرفته مانند Google یا Live Search از این روش استفاده می کنند و می توانند سرتاسر پایگاه داده را به طور کامل و در کمترین زمان جستجو کنند.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div dir="rtl" align="right"&gt;Regular Expressions دارای یک سری سینتکس های مربوط به خود است که به کمک آن می توان تنها با نوشتن یک خط کد، یک رشته ی بزرگ متنی را تحلیل و جستجو کرد در حالی که اگر از روشهای دیگری استفاده می کردیم به احتمال خیلی زیاد از یک خط تجاوز می کرد . و این سادگی و در عین حال کارایی بالای این روش را می رسان.د &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div dir="rtl" align="right"&gt;Regular Expressions محدود به یک زبان خاص نیست و اکثر زبانهای برنامه نویسی این امکان را درون خود قرار داده اند . عبارات منظم توسط یک پردازنده که درون زبان برنامه نویسی وجود دارد تفسیر(interpret) می شوند .عبارات منظم استفاده های زیادی در برنامه های کاربردی مختلف دارد . توسط بسیاری از ادیتورها (Text Editor) برای انجام اعمال مختلف بر روی رشته ها مورد استفاده قرار می گیرد . همچنین در بعضی از زبانهای برنامه نویسی نیز از موتور Regular Expressions استفاده می شود نظیر Perl, Ruby, TCL.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div dir="rtl" align="right"&gt;اصل Regular Expressions بر روی نظریه ماشینها و نظریه زبانهای صوری تکیه دارد که به طور خلاصه به چند مورد اشاره می کنیم:&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div dir="rtl" align="right"&gt;: این علامت نشان دهنده or است . به عنوان مثال grayوgrey هر دو معنای خاکستری را می دهند. می توان نوشت : graygrey و یا به صورت gr(ae)y&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div dir="rtl" align="right"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div dir="rtl" align="right"&gt;? : این علامت نشان دهنده آن است که کاراکتری که قبل از آن قرار گرفته است می تواند وجود داشته باشد یا نداشته باشد. به عنوان مثال : colou?r متواند به دو صورت "color" و "colour". بیاید.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div dir="rtl" align="right"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div dir="rtl" align="right"&gt;* : بعد از هر کاراکتری که قرار بگیر آن کاراکتر می تواند از صفر تا بینهایت بار تکرار شود . به عنوان مثال : ab*c را می توان نوشت : "ac", "abc", "abbc", "abbbc"و به همین صورت ادامه خواهد داشت.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div dir="rtl" align="right"&gt;+ : بعد از هر کاراکتری قرار گیرید آن کاراکتر حتما باید حداقل یک بار تکرار شود. به عنوان مثال : ab+c به صورت "abc", "abbc", "abbbc" ایجاد می شود . ایجاد "ac". اشتباه خواهد بود .&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div dir="rtl" align="right"&gt;[] : نشان دهنده یک محدوده است . به عنوان مثال برای نشان دادن تمام حروف انگلیسی می نویسیم : [a-z] یا برای نشان دادن تمام حروف بزرگ و کوچک و اعداد می نویسم : [0-9A-Za-z]&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div dir="rtl" align="right"&gt;() : برای گروه بندی استفاده می شودو به همین ترتیب .جدول زیر نمونه ای از سینتکس های Regular Expressions می باشد .&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div dir="rtl" align="right"&gt;&lt;/div&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 576px; CURSOR: hand; HEIGHT: 385px; TEXT-ALIGN: center" alt="" src="http://i42.tinypic.com/zvcv2o.jpg" border="0" /&gt; &lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 575px; CURSOR: hand; HEIGHT: 328px; TEXT-ALIGN: center" alt="" src="http://i41.tinypic.com/er0661.jpg" border="0" /&gt;&lt;br /&gt;يك مثال ساده از Regular expression كه چك مي كند آيا رشته ورودي تماما عدد است يا تماما حرف:&lt;br /&gt;&lt;br /&gt;&lt;div dir="ltr" align="left"&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="BACKGROUND: white;font-family:Courier New;font-size:10pt;color:black;"   &gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:#2b91af;"&gt;   10&lt;/span&gt; &lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Text.RegularExpressions;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:#2b91af;"&gt;   11&lt;/span&gt;             ...&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:#2b91af;"&gt;   12&lt;/span&gt;             &lt;span style="color:blue;"&gt;const&lt;/span&gt; &lt;span style="color:blue;"&gt;string&lt;/span&gt; ALL_NUMERIC_PATTERN = &lt;span style="color:#a31515;"&gt;"[a-zA-Z]"&lt;/span&gt;;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:#2b91af;"&gt;   13&lt;/span&gt;             &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:blue;"&gt;readonly&lt;/span&gt; Regex All_Numeric_Regex =&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:#2b91af;"&gt;   14&lt;/span&gt;             &lt;span style="color:blue;"&gt;new&lt;/span&gt; Regex (ALL_NUMERIC_PATTERN);&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:#2b91af;"&gt;   15&lt;/span&gt;             &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:blue;"&gt;bool&lt;/span&gt; AllNumeric ( &lt;span style="color:blue;"&gt;string&lt;/span&gt; inputString )&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:#2b91af;"&gt;   16&lt;/span&gt;             {&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:#2b91af;"&gt;   17&lt;/span&gt;             &lt;span style="color:blue;"&gt;if&lt;/span&gt; (All_Numeric_Regex.IsMatch ( inputString ))&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:#2b91af;"&gt;   18&lt;/span&gt;             {&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:#2b91af;"&gt;   19&lt;/span&gt;                 &lt;span style="color:blue;"&gt;return&lt;/span&gt; &lt;span style="color:blue;"&gt;false&lt;/span&gt;;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:#2b91af;"&gt;   20&lt;/span&gt;             }&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:#2b91af;"&gt;   21&lt;/span&gt;             &lt;span style="color:blue;"&gt;return&lt;/span&gt; &lt;span style="color:blue;"&gt;true&lt;/span&gt;;&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;}&lt;/div&gt;&lt;div dir="rtl" align="right"&gt;&lt;a href="http://i42.tinypic.com/zvcv2o.jpg"&gt;&lt;/a&gt;&lt;a href="http://p2p.dotnetsource.com/Default.aspx?g=posts&amp;amp;m=35418#35418"&gt;منبع&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8351565221579986136-1311903193658382406?l=programmingarts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmingarts.blogspot.com/feeds/1311903193658382406/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://programmingarts.blogspot.com/2009/03/regular-expressions.html#comment-form' title='1 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/1311903193658382406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/1311903193658382406'/><link rel='alternate' type='text/html' href='http://programmingarts.blogspot.com/2009/03/regular-expressions.html' title='Regular Expressions'/><author><name>نیما</name><uri>http://www.blogger.com/profile/13021429248034001455</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://i42.tinypic.com/zvcv2o_th.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8351565221579986136.post-645556972443540762</id><published>2009-03-11T10:08:00.003+03:30</published><updated>2009-03-11T23:38:57.124+03:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><title type='text'>Agent Johnson</title><content type='html'>&lt;div align="right"&gt;سلام &lt;/div&gt;&lt;div align="right"&gt;امروز لینک دانلود یکی از Plug-in های مفید دات نت رو به نام Agent Johnson رو میذارم که داخل کد اشیای از نوع Disposable رو مشخص میکنه .با این کار میتونیم از using به نحو مفید استفاده کنیم. مطالب بیشتر رو میتونین از وبلاگ آقای نصیری در &lt;a href="http://vahidnasiri.blogspot.com/2008/12/agent-johnson.html"&gt;این آدرس&lt;/a&gt; بخونین.&lt;/div&gt;&lt;div align="right"&gt;&lt;a href="http://rapidshare.com/files/207504983/Agent_20Johnson_201.5.1_20Setup_20_28R_23_204.5_29.msi"&gt;لینک دانلود &lt;/a&gt;&lt;/div&gt;&lt;div align="right"&gt;موفق باشید&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8351565221579986136-645556972443540762?l=programmingarts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmingarts.blogspot.com/feeds/645556972443540762/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://programmingarts.blogspot.com/2009/03/plug-in-agent-johnson-disposable.html#comment-form' title='0 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/645556972443540762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/645556972443540762'/><link rel='alternate' type='text/html' href='http://programmingarts.blogspot.com/2009/03/plug-in-agent-johnson-disposable.html' title='Agent Johnson'/><author><name>نیما</name><uri>http://www.blogger.com/profile/13021429248034001455</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-8351565221579986136.post-320455585945883394</id><published>2009-03-10T23:16:00.003+03:30</published><updated>2009-03-11T23:39:46.135+03:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net'/><title type='text'>استفاده از یک HTTP Handler برای ترکیب فایلهای جاوا اسکریپتی و CSS</title><content type='html'>&lt;div align="right"&gt;به نام خدا&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p align="right"&gt;استفاده از یک HTTP Handler برای ترکیب فایلهای جاوا اسکریپتی و CSS :&lt;/p&gt;&lt;p align="right"&gt;(دوستان عزیز نوشتن تو این ادیتور واقعا به درد نخوره خیلی اذیت میکنه مقاله ها رو با فرمت doc یا pdf میذارم که راحت باشین)&lt;/p&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;div align="right"&gt;&lt;a href="http://rapidshare.com/files/206335385/HTTP_Handler_to_Combine_Multiple_Files.rar.html"&gt;http://rapidshare.com/files/206335385/HTTP_Handler_to_Combine_Multiple_Files.rar.html&lt;/a&gt;&lt;/div&gt;&lt;div align="right"&gt;&lt;/div&gt;&lt;div align="right"&gt;&lt;/div&gt;&lt;div align="right"&gt;لینکه مقاله در دات نت سورس:&lt;/div&gt;&lt;div align="right"&gt;&lt;a href="http://p2p.dotnetsource.com/Default.aspx?g=posts&amp;amp;t=8037"&gt;http://p2p.dotnetsource.com/Default.aspx?g=posts&amp;amp;t=8037&lt;/a&gt;&lt;/div&gt;&lt;div align="right"&gt;&lt;/div&gt;&lt;div align="right"&gt;موفق باشید.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8351565221579986136-320455585945883394?l=programmingarts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmingarts.blogspot.com/feeds/320455585945883394/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://programmingarts.blogspot.com/2009/03/http-handler-css-doc-pdf-httprapidshare.html#comment-form' title='0 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/320455585945883394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/320455585945883394'/><link rel='alternate' type='text/html' href='http://programmingarts.blogspot.com/2009/03/http-handler-css-doc-pdf-httprapidshare.html' title='استفاده از یک HTTP Handler برای ترکیب فایلهای جاوا اسکریپتی و CSS'/><author><name>نیما</name><uri>http://www.blogger.com/profile/13021429248034001455</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-8351565221579986136.post-2280108455728018491</id><published>2009-03-10T23:09:00.003+03:30</published><updated>2009-03-17T21:55:20.935+03:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Others'/><title type='text'>معرفی</title><content type='html'>&lt;div align="right"&gt;سلام دوستان عزیز&lt;br /&gt;نیما هستم که به همراه چند نفر از دوستان میخواهیم نوشته ها، مقالات ، تجربیات و مواردی از این قبیل رو با شما دوستان به اشتراک بذاریم.البته به احتمال زیاد در این وبلاگ با خاطره های ما ،عکس ها و فیلمهای جالب و مفید ، دلنوشته و نوشته هایی در مورد موسیقی و گیتار رو هم خواهید دید.امیدوارم که مطالب این وبلاگ برای شما مفید باشه&lt;br /&gt;همتون موفق باشید&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8351565221579986136-2280108455728018491?l=programmingarts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmingarts.blogspot.com/feeds/2280108455728018491/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://programmingarts.blogspot.com/2009/03/blog-post.html#comment-form' title='0 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/2280108455728018491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8351565221579986136/posts/default/2280108455728018491'/><link rel='alternate' type='text/html' href='http://programmingarts.blogspot.com/2009/03/blog-post.html' title='معرفی'/><author><name>نیما</name><uri>http://www.blogger.com/profile/13021429248034001455</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>
