<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>وبلاگی برای تمام فصول &#187; برنامه نویسی</title>
	<atom:link href="http://hesam-h.ir/blog/category/it/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://hesam-h.ir/blog</link>
	<description>حسام حاتمی</description>
	<lastBuildDate>Sun, 22 Jan 2012 18:53:22 +0000</lastBuildDate>
	<language>fa</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>برنامه ارسال و دریافت SMS رایگان به همراه کد منبع</title>
		<link>http://hesam-h.ir/blog/1390/02/%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d8%a7%d8%b1%d8%b3%d8%a7%d9%84-%d9%88-%d8%af%d8%b1%db%8c%d8%a7%d9%81%d8%aa-sms/</link>
		<comments>http://hesam-h.ir/blog/1390/02/%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d8%a7%d8%b1%d8%b3%d8%a7%d9%84-%d9%88-%d8%af%d8%b1%db%8c%d8%a7%d9%81%d8%aa-sms/#comments</comments>
		<pubDate>Tue, 03 May 2011 06:29:21 +0000</pubDate>
		<dc:creator>تبعیدی دست باد</dc:creator>
				<category><![CDATA[آی تی]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Free]]></category>
		<category><![CDATA[Gsm Modem]]></category>
		<category><![CDATA[source code]]></category>
		<category><![CDATA[Vb 6.0]]></category>
		<category><![CDATA[vb.net]]></category>
		<category><![CDATA[ارسال پیامک]]></category>
		<category><![CDATA[دانلود برنامه]]></category>
		<category><![CDATA[دریافت و ارسال اس ام اس]]></category>

		<guid isPermaLink="false">http://hesam-h.ir/blog/?p=1124</guid>
		<description><![CDATA[برای این لحظه از وبسایتم تصمیم گرفتم یک برنامه بسیار کاربردی برای شما در سایت قرار بدم تا از اون استفاده کنید . این برنامه قابلیت ارسال SMS به صورت فارسی و انگلیسی از طریق GSM MODEM  رو دارا هست . این برنامه به همراه منبع کد هست . فقط این نکته را باید متذکر [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://hesam-h.ir/blog/wp-content/uploads/2011/05/H-Sms-Sender-With-mCore.jpg"><img class="aligncenter size-full wp-image-1126" title="H-Sms Sender With mCore" src="http://hesam-h.ir/blog/wp-content/uploads/2011/05/H-Sms-Sender-With-mCore.jpg" alt="" width="354" height="260" /></a>برای این لحظه از وبسایتم تصمیم گرفتم یک برنامه بسیار کاربردی برای شما در سایت قرار بدم تا از اون استفاده کنید .</p>
<p>این برنامه قابلیت ارسال SMS به صورت فارسی و انگلیسی از طریق GSM MODEM  رو دارا هست .</p>
<p>این برنامه به همراه منبع کد هست .</p>
<p>فقط این نکته را باید متذکر شوم کامپوننتی که در این برنامه جهت ارتباط استفاده شده رجیستر شده نمیباشد .</p>
<p>سورس برنامه با زبان VB میباشد که البته به زبانهای DElphi و #C و VB.Net نیز موجود میباشد .</p>
<p>برای اجرا شدن برنامه میبایست VB بر روی سیستم شما نصب شود .</p>
<p><span id="more-1124"></span><span style="color: #ff0000;"><br />
(برای دریافت رمز فایل تنها از طریق فرم تماس با من اقدام کنید و از ارسال نظرات خودداری نمایید). </span></p>
<p>( برنامه زبانهای دیگر  : میبایست مبلغ ۲۵۰٫۰۰۰ ریال به شماره حسابی که در بالای صفحه وبسایت قرار داده شده واریز نمایید و فرم مربوطه به همراه آدرس دقیق ایمیل خود را وارد نمایید تا در کمتر از ۲۴ ساعت  برای شما ارسال گردد).</p>
Note: There is a file embedded within this post, please visit this post to download the file.
Note: There is a file embedded within this post, please visit this post to download the file.
]]></content:encoded>
			<wfw:commentRss>http://hesam-h.ir/blog/1390/02/%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d8%a7%d8%b1%d8%b3%d8%a7%d9%84-%d9%88-%d8%af%d8%b1%db%8c%d8%a7%d9%81%d8%aa-sms/feed/</wfw:commentRss>
		<slash:comments>46</slash:comments>
		</item>
		<item>
		<title>چگونه یک شبکه عصبی‌ هوشمند بسازیم؟</title>
		<link>http://hesam-h.ir/blog/1390/01/%da%86%da%af%d9%88%d9%86%d9%87-%d9%8a%d9%83-%d8%b4%d8%a8%d9%83%d9%87-%d8%b9%d8%b5%d8%a8%d9%8a%e2%80%8c-%d9%87%d9%88%d8%b4%d9%85%d9%86%d8%af-%d8%a8%d8%b3%d8%a7%d8%b2%d9%8a%d9%85%d8%9f/</link>
		<comments>http://hesam-h.ir/blog/1390/01/%da%86%da%af%d9%88%d9%86%d9%87-%d9%8a%d9%83-%d8%b4%d8%a8%d9%83%d9%87-%d8%b9%d8%b5%d8%a8%d9%8a%e2%80%8c-%d9%87%d9%88%d8%b4%d9%85%d9%86%d8%af-%d8%a8%d8%b3%d8%a7%d8%b2%d9%8a%d9%85%d8%9f/#comments</comments>
		<pubDate>Thu, 31 Mar 2011 18:22:33 +0000</pubDate>
		<dc:creator>تبعیدی دست باد</dc:creator>
				<category><![CDATA[آی تی]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[neural network]]></category>
		<category><![CDATA[شبکه عصبی]]></category>
		<category><![CDATA[چگونه شبکه عصبی بنویسیم]]></category>

		<guid isPermaLink="false">http://hesam-h.ir/blog/?p=1099</guid>
		<description><![CDATA[اشاره : قدرت و سرعت کامپیوترهای امروزی به راستی شگفت انگیز است؛ زیرا کامپیوترهای قدرتمند می‌توانند میلیون‌ها عملیات را در کمتر از یک ثانیه انجام دهند. شاید آرزوی بسیاری از ما انسان‌ها این باشد که ای کاش می‌شد ما نیز مانند این دستگاه‌ها کارهای خود را با آن سرعت انجام می‌دادیم، ولی این نکته را [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://hesam-h.ir/blog/wp-content/uploads/2011/03/neural.jpg"><img class="aligncenter size-full wp-image-1100" title="neural" src="http://hesam-h.ir/blog/wp-content/uploads/2011/03/neural.jpg" alt="" width="283" height="226" /></a></p>
<p>اشاره :<br />
قدرت و سرعت کامپیوترهای امروزی به راستی شگفت انگیز است؛ زیرا کامپیوترهای قدرتمند می‌توانند میلیون‌ها عملیات را در کمتر از یک ثانیه انجام دهند. شاید آرزوی بسیاری از ما انسان‌ها این باشد که ای کاش می‌شد ما نیز مانند این دستگاه‌ها کارهای خود را با آن سرعت انجام می‌دادیم، ولی این نکته را نباید نادیده بگیریم که کارهایی هستند که ما می‌توانیم آن‌ها را به آسانی و در کمترین زمان ممکن انجام دهیم، ولی قوی‌ترین کامپیوترهای امروزی نیز نمی‌توانند آن‌ها را انجام دهند و آن قدرت تفکری است که مغز ما انسان‌ها دارد. حال تصور کنید که دستگاهی وجود داشته باشد که علا‌وه بر قدرت محاسبه و انجام کارهای فراوان در مدت زمان کوتاه، قدرت تفکر نیز داشته باشد یا به قول معروف هوشمند باشد!این تصور در حقیقت هدف فناوری هوش مصنوعی یا Artificial Intelligence) AI) است. یکی از راه‌حل‌های تحقق این هدف، شبکه‌های عصبی است. شبکه‌های عصبی در واقع از شبکه‌های عصبی و سیستم عصبی انسان الگوبرداری می‌کنند. برخی از محققان براین باورند که هوش مصنوعی و شبکه‌های عصبی دو راه‌حل متفاوت و در دو جهت مختلف هستند، ولی این باور را نمی‌توان کاملاً صحیح دانست؛ چرا که در حقیقت علم شبکه‌های عصبی و هوش‌مصنوعی وابسته به هم هستند. بدین‌معنا که قبل از این‌که Symbolها بتوانند توسط هوش مصنوعی شناسایی شوند، باید مراحلی طی شود. مثلاً تصور کنید که Symbolهایی مانند خانه، انسان یا میز وجود دارند. قبل از این که AI بتواند هر کدام از این Symbolها را شناسایی کند، باید از توانایی‌ها و صفات هر کدام از این‌ها اطلاع کامل حاصل کند. مثلاً تصور کنید که یک روبات که هوش مصنوعی دارد، یک انسان را می‌بیند، ولی از کجا می‌فهمد که این جسم یک انسان است؟ مثلاً بر اساس مشخصاتی مثل داشتن دو پا، دست، صورت، دهان و قدرت تکلم. اما شما وقتی یک انسان دیگر را می‌بینید، نیازی ندارید که اول تعداد پاهای او را بشمارید و بعد بگویید که این جسم، انسان است. مغز انسان‌ها می‌تواند با دیدن یک جسم فقط برای یک بار یاد بگیرد و اگر مجدداً آن جسم را مشاهده کرد، می‌تواند سریع تشخیص دهد و قسمت‌های مختلف مغز می‌توانند به صورت همزمان فعالیت کنند و از اطلاعات درون مغز استفاده نمایند. شبکه‌های عصبی در بسیاری از پروژه‌های هوش مصنوعی به کار گرفته می‌شود. مثلاً برای برنامه‌های تشخیص و الگوبرداری، شناسایی تصویر و کاراکتر، روبات‌ها و برنامه‌های فیلترینگ اطلاعات. این شبکه‌ها امروزه حتی در اتومبیل‌های بی‌سرنشین نیز کاربرد دارد. به طوری‌که با دیدن و بررسی رانندگی انسان‌ها، می‌توانند رانندگی کنند. در این مقاله اصول شبکه‌های عصبی در برنامه‌نویسی شیء‌گرا مورد بررسی قرار می‌گیرد. با استفاده از زبان #C و انجام دادن عملیات X-OR ساده می‌توانید اولین برنامه ساده هوش مصنوعی خود را بنویسید. لازم به ذکر است که مثالی که در این مقاله از آن استفاده شده، از مقاله Matthew Cochran (سی شارپ کورنر) اقتباس شده است.</p>
<p>مقاله در سایت هوش مصنوعی ایران موجود میباشد .</p>
<p>برای دانلود مقاله به ادامه مطلب بروید .</p>
<p><span id="more-1099"></span></p>
Note: There is a file embedded within this post, please visit this post to download the file.
]]></content:encoded>
			<wfw:commentRss>http://hesam-h.ir/blog/1390/01/%da%86%da%af%d9%88%d9%86%d9%87-%d9%8a%d9%83-%d8%b4%d8%a8%d9%83%d9%87-%d8%b9%d8%b5%d8%a8%d9%8a%e2%80%8c-%d9%87%d9%88%d8%b4%d9%85%d9%86%d8%af-%d8%a8%d8%b3%d8%a7%d8%b2%d9%8a%d9%85%d8%9f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>سورس الگوریتمهای زمانبندی درس سیستم عامل</title>
		<link>http://hesam-h.ir/blog/1389/10/%d8%a7%d9%84%da%af%d9%88%d8%b1%db%8c%d8%aa%d9%85%d9%87%d8%a7%db%8c-%d8%af%d8%b1%d8%b3-%d8%b3%db%8c%d8%b3%d8%aa%d9%85-%d8%b9%d8%a7%d9%85%d9%84/</link>
		<comments>http://hesam-h.ir/blog/1389/10/%d8%a7%d9%84%da%af%d9%88%d8%b1%db%8c%d8%aa%d9%85%d9%87%d8%a7%db%8c-%d8%af%d8%b1%d8%b3-%d8%b3%db%8c%d8%b3%d8%aa%d9%85-%d8%b9%d8%a7%d9%85%d9%84/#comments</comments>
		<pubDate>Sat, 25 Dec 2010 19:25:36 +0000</pubDate>
		<dc:creator>تبعیدی دست باد</dc:creator>
				<category><![CDATA[آی تی]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[banker]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[fcfs]]></category>
		<category><![CDATA[fifo]]></category>
		<category><![CDATA[hrrl]]></category>
		<category><![CDATA[lifo]]></category>
		<category><![CDATA[rr]]></category>
		<category><![CDATA[sjf]]></category>
		<category><![CDATA[source code]]></category>
		<category><![CDATA[srt]]></category>
		<category><![CDATA[سورس]]></category>
		<category><![CDATA[سیستم عامل]]></category>

		<guid isPermaLink="false">http://hesam-h.ir/blog/?p=1119</guid>
		<description><![CDATA[بسیاری از سورس کدهایی که شما عزیزان به دنبال اوونها هستید در اینترنت به وفوور یافت میشود کافیست اندکی وقت بگذارید و جستجو کنید . منبع رو بر نداشتم - به امید موفقیت همه ی شما . Quine: Program that prints itself without using file Download Source Code Shortest job first CPU scheduling Download Source [...]]]></description>
			<content:encoded><![CDATA[<p>بسیاری از سورس کدهایی که شما عزیزان به دنبال اوونها هستید در اینترنت به وفوور یافت میشود کافیست اندکی وقت بگذارید و جستجو کنید . منبع رو بر نداشتم -</p>
<p>به امید موفقیت همه ی شما .</p>
<table cellspacing="3" cellpadding="3" width="879px">
<tbody>
<tr bgcolor="#f2f2f2">
<td>Quine: Program that prints itself without using file</td>
<td width="150px"><a href="http://technocode.co.in/download/c_1.zip">Download Source Code</a></td>
</tr>
<tr bgcolor="#f2f2f2">
<td>Shortest job first CPU scheduling</td>
<td width="150px"><a href="http://technocode.co.in/download/c_2.zip">Download Source Code</a></td>
</tr>
<tr bgcolor="#f2f2f2">
<td>First come first serve CPU scheduling</td>
<td width="150px"><a href="http://technocode.co.in/download/c_3.zip">Download Source Code</a></td>
</tr>
<tr bgcolor="#f2f2f2">
<td>Shortest remaining time first CPU scheduling</td>
<td width="150px"><a href="http://technocode.co.in/download/c_4.zip">Download Source Code</a></td>
</tr>
<tr bgcolor="#f2f2f2">
<td>Round robin CPU scheduling</td>
<td width="150px"><a href="http://technocode.co.in/download/c_5.zip">Download Source Code</a></td>
</tr>
<tr bgcolor="#f2f2f2">
<td>Priority non preemptive CPU scheduling</td>
<td width="150px"><a href="http://technocode.co.in/download/c_6.zip">Download Source Code</a></td>
</tr>
<tr bgcolor="#f2f2f2">
<td>Priority preemptive CPU scheduling</td>
<td width="150px"><a href="http://technocode.co.in/download/c_7.zip">Download Source Code</a></td>
</tr>
<tr bgcolor="#f2f2f2">
<td>Predictive parser</td>
<td width="150px"><a href="http://technocode.co.in/download/c_8.zip">Download Source Code</a></td>
</tr>
<tr bgcolor="#f2f2f2">
<td>Recursive decent parser</td>
<td width="150px"><a href="http://technocode.co.in/download/c_9.zip">Download Source Code</a></td>
</tr>
<tr bgcolor="#f2f2f2">
<td>Non recursive decent parser</td>
<td width="150px"><a href="http://technocode.co.in/download/c_10.zip">Download Source Code</a></td>
</tr>
<tr bgcolor="#f2f2f2">
<td>First and follow</td>
<td width="150px"><a href="http://technocode.co.in/download/c_11.zip">Download Source Code</a></td>
</tr>
<tr bgcolor="#f2f2f2">
<td>First and follow 2</td>
<td width="150px"><a href="http://technocode.co.in/download/c_12.zip">Download Source Code</a></td>
</tr>
<tr bgcolor="#f2f2f2">
<td>Banker’s resource allocation &amp; deadlock avoidance algorithm</td>
<td width="150px"><a href="http://technocode.co.in/download/c_13.zip">Download Source Code</a></td>
</tr>
<tr bgcolor="#f2f2f2">
<td>Lexical analyzer for converting a sequence of characters into a sequence of tokens</td>
<td width="150px"><a href="http://technocode.co.in/download/c_14.zip">Download Source Code</a></td>
</tr>
<tr bgcolor="#f2f2f2">
<td>First in first out, page replacement algorithm</td>
<td width="150px"><a href="http://technocode.co.in/download/c_15.zip">Download Source Code</a></td>
</tr>
<tr bgcolor="#f2f2f2">
<td>Least recently used, page replacement algorithm</td>
<td width="150px"><a href="http://technocode.co.in/download/c_16.zip">Download Source Code</a></td>
</tr>
<tr bgcolor="#f2f2f2">
<td>Optimal page replacement algorithm</td>
<td width="150px"><a href="http://technocode.co.in/download/c_17.zip">Download Source Code</a></td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://hesam-h.ir/blog/1389/10/%d8%a7%d9%84%da%af%d9%88%d8%b1%db%8c%d8%aa%d9%85%d9%87%d8%a7%db%8c-%d8%af%d8%b1%d8%b3-%d8%b3%db%8c%d8%b3%d8%aa%d9%85-%d8%b9%d8%a7%d9%85%d9%84/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>همه چیز درباره  Crystal Reports و کار در #c</title>
		<link>http://hesam-h.ir/blog/1389/05/%d9%87%d9%85%d9%87-%da%86%db%8c%d8%b2-%d8%af%d8%b1%d8%a8%d8%a7%d8%b1%d9%87-crystal-reports-%d9%88-%da%a9%d8%a7%d8%b1-%d8%af%d8%b1-c/</link>
		<comments>http://hesam-h.ir/blog/1389/05/%d9%87%d9%85%d9%87-%da%86%db%8c%d8%b2-%d8%af%d8%b1%d8%a8%d8%a7%d8%b1%d9%87-crystal-reports-%d9%88-%da%a9%d8%a7%d8%b1-%d8%af%d8%b1-c/#comments</comments>
		<pubDate>Thu, 19 Aug 2010 13:55:03 +0000</pubDate>
		<dc:creator>تبعیدی دست باد</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[crystal report]]></category>
		<category><![CDATA[Crystal Reports و کار در #c]]></category>
		<category><![CDATA[آموزش]]></category>

		<guid isPermaLink="false">http://hesam-h.ir/blog/?p=774</guid>
		<description><![CDATA[کارکردن با Crystal Reports آسان نیست، و عیب و ایرادهای زیادی دارد. یکی از بدترین ویژگی های Crystal Reports، روش مدیریت کردن پارامترهای گزارش توسط نمایش دادن هر پارامتر در یک صفحه جدا است که clientها واقعاً از آن بیزارند. برای حل این مشکل، این مقاله به شما نشان خواهد داد چگونه همه پارامترهای یک [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://hesam-h.ir/blog/wp-content/uploads/2010/08/image.axd_.jpg"><br />
</a><a href="http://hesam-h.ir/blog/wp-content/uploads/2010/08/image.axd_.jpg"><img class="aligncenter size-full wp-image-775" title="image.axd" src="http://hesam-h.ir/blog/wp-content/uploads/2010/08/image.axd_.jpg" alt="" width="405" height="263" /></a></p>
<p>کارکردن با Crystal Reports آسان نیست، و عیب و ایرادهای زیادی دارد.</p>
<p>یکی از بدترین ویژگی های Crystal Reports، روش مدیریت کردن پارامترهای گزارش توسط نمایش دادن هر پارامتر در یک صفحه جدا است که clientها واقعاً از آن بیزارند. برای حل این مشکل، این مقاله به شما نشان خواهد داد چگونه همه پارامترهای یک فایل .rpt را در یک صفحه واحد به کاربر نشان دهید.</p>
<p>این مقاله، گزارشهایی را که از در صفحه استفاده می کنند، نشان می دهد، یک Reports Viewer و یک Parameters Viewer. می توان این صفحه ها را با هم ترکیب کرد که بسیار آسان است. این صفحه ها شامل موارد زیر می شوند:</p>
<ul></ul>
<ol>
<li>Reports Viewer: این صفحه دارای یک ComboBoxاست که لیستی از گزارشهایی را که      کاربر می تواند انتخاب کند نشان می دهد. وقتی کاربر دکمه &#8220;Get      Report&#8221; را      فشار می دهد، یک پنجره که Parameters Viewer نامیده می شود باز می شود.</li>
<li>Parameters Viewer  : این صفحه پارامترهای موجود در      گزارشی را که در یک datagrid      انتخاب شده نمایش می دهد، و ما      به طور پویا (dynamic) کنترلهایی      را به آن اضافه می کنیم تا valueهای انتخاب پارامتر را راحتتر کنیم. بعد از انتخاب valueهای پارامتر گزارش انتخابی،      کاربر Parameters Viewer را      می بندد و Reports Viewer، گزارش انتخاب شده را با      پارامترهای انتخاب شده نمایش می دهد.</li>
</ol>
<ul></ul>
<p>Crystal Reports، یک فایل باینری rpt ایجاد می کند که شامل همه اطلاعاتی می شود که برای نمایش هر گزارشی نیاز داریم.</p>
<p>در ادامه مطلب ۲ مقاله برای شما قرار داد م .</p>
<p>بر این باورم که دریافت مقالات اثر بخش تر از قرار دادن آنها در وبسایت است .:p</p>
<p><span id="more-774"></span><a href="http://hesam-h.ir/blog/wp-content/uploads/2010/08/Crystal-Reports.doc">Crystal Reports</a></p>
<p><a href="http://hesam-h.ir/blog/wp-content/uploads/2010/08/begininng-crystal-with-c.doc">begininng crystal with c#</a></p>
<p>منبع :سایت برنامه نویس و آموزشگاه تحلیلگر داده ها</p>
]]></content:encoded>
			<wfw:commentRss>http://hesam-h.ir/blog/1389/05/%d9%87%d9%85%d9%87-%da%86%db%8c%d8%b2-%d8%af%d8%b1%d8%a8%d8%a7%d8%b1%d9%87-crystal-reports-%d9%88-%da%a9%d8%a7%d8%b1-%d8%af%d8%b1-c/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>چند مقاله مفید در ارتباط با بانک اطلاعاتی و #C</title>
		<link>http://hesam-h.ir/blog/1389/05/%da%86%d9%86%d8%af-%d9%85%d9%82%d8%a7%d9%84%d9%87-%d9%85%d9%81%d9%8a%d8%af-%d8%af%d8%b1-%d8%a7%d8%b1%d8%aa%d8%a8%d8%a7%d8%b7-%d8%a8%d8%a7-%d8%a8%d8%a7%d9%86%d9%83-%d8%a7%d8%b7%d9%84%d8%a7%d8%b9%d8%a7/</link>
		<comments>http://hesam-h.ir/blog/1389/05/%da%86%d9%86%d8%af-%d9%85%d9%82%d8%a7%d9%84%d9%87-%d9%85%d9%81%d9%8a%d8%af-%d8%af%d8%b1-%d8%a7%d8%b1%d8%aa%d8%a8%d8%a7%d8%b7-%d8%a8%d8%a7-%d8%a8%d8%a7%d9%86%d9%83-%d8%a7%d8%b7%d9%84%d8%a7%d8%b9%d8%a7/#comments</comments>
		<pubDate>Thu, 05 Aug 2010 15:14:25 +0000</pubDate>
		<dc:creator>تبعیدی دست باد</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[c#.net]]></category>
		<category><![CDATA[dataset]]></category>
		<category><![CDATA[LINQ]]></category>
		<category><![CDATA[Microsoft Report Viewer]]></category>
		<category><![CDATA[SQLServer]]></category>
		<category><![CDATA[Stored Procedures]]></category>
		<category><![CDATA[آموزش ایجاد پروژه های ذخیره و بازیابی در]]></category>
		<category><![CDATA[استفاده از LINQ در C#]]></category>
		<category><![CDATA[اضافه کردن امکان آپدیت اتوماتیک نرم افزار از طرق وب]]></category>
		<category><![CDATA[سورس برنامه]]></category>
		<category><![CDATA[مجموعه نكات برنامه نويسي در c#]]></category>

		<guid isPermaLink="false">http://hesam-h.ir/blog/?p=742</guid>
		<description><![CDATA[در ادامه چندین مقاله مفید رو برای شما عزیزان قرار  میدهم امیدوارم استفاده نمایید : مقاله یک-آموزش ایجاد پروژه های ذخیره و بازیابی در SQLServer توسط #C و LINQ همراه با نحوه Setup سازی قابل ذکر است که این مقاله به همراه سورس کد و فایل Setup نیز هست . در این مقاله، با مفاهیم [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://hesam-h.ir/blog/wp-content/uploads/2010/08/c.jpg"><img class="aligncenter size-full wp-image-743" title="c#" src="http://hesam-h.ir/blog/wp-content/uploads/2010/08/c.jpg" alt="" width="349" height="232" /></a></p>
<p>در ادامه چندین مقاله مفید رو برای شما عزیزان قرار  میدهم امیدوارم استفاده نمایید :</p>
<p><strong>مقاله یک</strong><strong>-آموزش ایجاد پروژه های ذخیره و بازیابی در</strong><strong> SQLServer </strong><strong>توسط</strong><strong> #C </strong><strong>و</strong><strong> LINQ </strong><strong>همراه با نحوه</strong><strong> Setup </strong><strong>سازی </strong><strong> </strong></p>
<p>قابل ذکر است که این مقاله به همراه سورس کد و فایل Setup نیز هست .</p>
<p>در این مقاله، با مفاهیم زیر آشنا می شوید:<br />
آموزش نحوه ارتباط با SQLServer در سی شارپ<br />
ذخیره، تغییر و حذف رکوردهای جدول توسط C#<br />
استفاده از پروسیجر های ذخیره شده درC#<br />
روش ارسال پارامتر به Stored Procedures<br />
نحوه ارسال متغیر و فیلد های جدول و گراید از فرمی به فرم دیگر<br />
به روز رسانی گراید پس از تغییر در جدول بانک اطلاعاتی<br />
مراحل ایجاد یک پروژه دیتابیس توسط C#<br />
ایجاد پروژه Setup در ویژوال استودیو</p>
<p><strong>مقاله دو</strong><strong>-</strong><strong> </strong><strong>استفاده</strong><strong> </strong><strong>از</strong><strong> </strong><strong>LINQ</strong><strong> در </strong><strong>C#</strong><strong></strong></p>
<p><strong>مقاله سه </strong><strong>-</strong><strong> </strong><strong>اضافه</strong><strong> </strong><strong>کردن</strong><strong> </strong><strong>امکان</strong><strong> </strong><strong>آپدیت</strong><strong> </strong><strong>اتوماتیک</strong><strong> </strong><strong>نرم</strong><strong> </strong><strong>افزار</strong><strong> </strong><strong>از</strong><strong> </strong><strong>طرق</strong><strong> </strong><strong>وب</strong><strong></strong></p>
<p><strong>مزایا</strong>:</p>
<p>۱-هر کدام از User ها قادر به نصب و به روز رسانی برنامه خواهند بود و نیازی به Admin نیست.</p>
<p>۲-ویرایش برنامه(Assembly Version) از تعداد (Publish Version) مستقل است</p>
<p>۳ -نیازی به کپی کردن ویرایش های جدید برنامه و انتشار و نصب آن نیست.</p>
<p><strong>معایب</strong>:</p>
<p>۱- اولین بار، به ازای هر Userدر Domain باید برنامه را بصورتlocal  نصب کرد.</p>
<p><strong>مقاله چهار</strong><strong>-مجموعه نکات برنامه نویسی در </strong><strong>c#</strong><strong> (گردآوری نکات بخش ۱۰۰۱ نکته در انجمن برنامه نویس دات او آر جی )</strong></p>
<p><strong>مقاله پنج</strong> -<strong> ارتباط</strong><strong> </strong><strong>با</strong><strong> </strong><strong>Microsoft Report Viewer</strong><strong>با </strong><strong>dataset</strong><strong> و </strong><strong>linq</strong><strong> و ارسال پارامتر به آن</strong></p>
<p>ضمیمه یک : سورس برنامه مقاله یک</p>
<p>برای دانلود به ادامه مطلب مراجعه فرمایید :</p>
<p><span id="more-742"></span>مقاله اول:Note: There is a file embedded within this post, please visit this post to download the file.</p>
<p>مقاله دوم:Note: There is a file embedded within this post, please visit this post to download the file.</p>
<p>مقاله سوم:Note: There is a file embedded within this post, please visit this post to download the file.</p>
<p>مقاله چهار:Note: There is a file embedded within this post, please visit this post to download the file.</p>
<p>مقاله پنجم:Note: There is a file embedded within this post, please visit this post to download the file.</p>
<p>ضمیمه:Note: There is a file embedded within this post, please visit this post to download the file.</p>
<p>(حق تالیف مقالات در خود مقالات محفوظ میباشد. )</p>
<p>این  مقالات را با توجه به مراجعات مکرر بازدید کنندگان بر مبنای رجوع آنها به  وبسایت و اشتیاق آنها به برنامه نویسی بانک اطلاعاتی میباشد .</p>
]]></content:encoded>
			<wfw:commentRss>http://hesam-h.ir/blog/1389/05/%da%86%d9%86%d8%af-%d9%85%d9%82%d8%a7%d9%84%d9%87-%d9%85%d9%81%d9%8a%d8%af-%d8%af%d8%b1-%d8%a7%d8%b1%d8%aa%d8%a8%d8%a7%d8%b7-%d8%a8%d8%a7-%d8%a8%d8%a7%d9%86%d9%83-%d8%a7%d8%b7%d9%84%d8%a7%d8%b9%d8%a7/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>ماشین حساب با Socket Programming در #c</title>
		<link>http://hesam-h.ir/blog/1389/03/%d9%85%d8%a7%d8%b4%d9%8a%d9%86-%d8%ad%d8%b3%d8%a7%d8%a8-%d8%a8%d8%a7-socket-programming-%d8%af%d8%b1-c/</link>
		<comments>http://hesam-h.ir/blog/1389/03/%d9%85%d8%a7%d8%b4%d9%8a%d9%86-%d8%ad%d8%b3%d8%a7%d8%a8-%d8%a8%d8%a7-socket-programming-%d8%af%d8%b1-c/#comments</comments>
		<pubDate>Sun, 06 Jun 2010 17:30:09 +0000</pubDate>
		<dc:creator>تبعیدی دست باد</dc:creator>
				<category><![CDATA[آی تی]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[برنامه های من]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[calculator]]></category>
		<category><![CDATA[socket programming]]></category>
		<category><![CDATA[source code]]></category>
		<category><![CDATA[سوكت پروگرمينگ]]></category>
		<category><![CDATA[ماشين حساب]]></category>

		<guid isPermaLink="false">http://hesam-h.ir/blog/?p=687</guid>
		<description><![CDATA[با سلام به همه دوستان باز هم با یک برنامه جالب دیگه در خدمت شما هستم .برای یادگیری سوکت پروگرمینگ مناسب هست . این برنامه رو به درخواست یکی از دوستان کمی تغییرات دادم و در لوکال اجرا میشه .کامنت در سورس هست . برای دانلود به ادامه مطلب مراجعه نمایید. دریافت]]></description>
			<content:encoded><![CDATA[<p><a href="http://hesam-h.ir/blog/wp-content/uploads/2010/06/socketcalc.jpg"><img class="aligncenter size-medium wp-image-688" title="socketcalc" src="http://hesam-h.ir/blog/wp-content/uploads/2010/06/socketcalc-300x288.jpg" alt="" width="300" height="288" /></a></p>
<p>با سلام به همه دوستان باز هم با یک برنامه جالب دیگه در خدمت شما هستم .برای یادگیری سوکت پروگرمینگ مناسب هست . این برنامه رو به درخواست یکی از دوستان کمی تغییرات دادم و در لوکال اجرا میشه .کامنت در سورس هست .</p>
<p>برای دانلود به ادامه مطلب مراجعه نمایید.</p>
<p><span id="more-687"></span></p>
<p><a href="http://hesam-h.ir/blog/wp-content/uploads/2010/06/calcu.zip">دریافت</a></p>
]]></content:encoded>
			<wfw:commentRss>http://hesam-h.ir/blog/1389/03/%d9%85%d8%a7%d8%b4%d9%8a%d9%86-%d8%ad%d8%b3%d8%a7%d8%a8-%d8%a8%d8%a7-socket-programming-%d8%af%d8%b1-c/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>my sql و  c# چگونه ؟چطور؟</title>
		<link>http://hesam-h.ir/blog/1389/01/my-sql-%d9%88-c-%da%86%da%af%d9%88%d9%86%d9%87-%d8%9f%da%86%d8%b7%d9%88%d8%b1%d8%9f%d8%af%d8%b1-%d8%ad%d8%a7%d9%84-%d8%aa%d9%83%d9%85%d9%8a%d9%84/</link>
		<comments>http://hesam-h.ir/blog/1389/01/my-sql-%d9%88-c-%da%86%da%af%d9%88%d9%86%d9%87-%d8%9f%da%86%d8%b7%d9%88%d8%b1%d8%9f%d8%af%d8%b1-%d8%ad%d8%a7%d9%84-%d8%aa%d9%83%d9%85%d9%8a%d9%84/#comments</comments>
		<pubDate>Fri, 16 Apr 2010 09:30:14 +0000</pubDate>
		<dc:creator>تبعیدی دست باد</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[برنامه های من]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[ارتباط بين c# و mysql]]></category>

		<guid isPermaLink="false">http://hesam-h.ir/blog/?p=629</guid>
		<description><![CDATA[خیلی از دوستان این روزها به فکر استفاده از دیتابیسهای جدید و دور کردن خود از SQL Server  هستند . یکی از این نوع دیتا بیسها MySql  هست که یک نوع بانک اطلاعاتی باز متن هست . اما چطور میتوانیم کد منبع خود را به این پایگاه داده متصل کنیم . با من  تا انتهای [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://hesam-h.ir/blog/wp-content/uploads/2010/04/mysql-hires.gif"><img class="aligncenter size-medium wp-image-631" title="mysql-hires" src="http://hesam-h.ir/blog/wp-content/uploads/2010/04/mysql-hires-300x154.gif" alt="" width="300" height="154" /></a><br />
خیلی از دوستان این روزها به فکر استفاده از دیتابیسهای جدید و دور کردن خود از SQL Server  هستند .</p>
<p>یکی از این نوع دیتا بیسها MySql  هست که یک نوع بانک اطلاعاتی باز متن هست . اما چطور میتوانیم کد منبع خود را به این پایگاه داده متصل کنیم .</p>
<p>با من  تا انتهای این مقاله همرا ه باشید .</p>
<p>حتما به نتیجه خواهید رسید.</p>
<p><span id="more-629"></span>در ابتدای امر میبایستmysql.net conector ‌رو دریافت کرده و نصب کنید.پس از نصب این برنامه دیگر کلیه تنظیمات برای دیگر پروژه های شما قابل اعمال است .</p>
<p><a href="http://dev.mysql.com/downloads/connector/net">MySQL  Connector/Net</a></p>
<p><strong>آماده سازی بانک اطلاعاتی MYSQL  :</strong><br />
کار زیاد خاصی با MySQL .NET ندارید بجز اینکه بانک خودتون رو آماده کنید برای اینکار باید یک جدول داشته باشید . . . .من بصورت پیشفرض یک مثال برای ساخت جدول در mysql ‌میزنم .البته اگر با phpmyadmin‌کار کرده باشید این کار بازهم ساده تر خواهد شد.</p>
<p style="text-align: left;" dir="ltr">Create database aec;<br />
Grant insert, update, select, delete on aec.* to &#8216;aec_user&#8217;@'localhost&#8217; identified by &#8216;aec&#8217;;<br />
Create table aec.samples (<br />
id int auto_increment,<br />
description varchar(255),<br />
site_id int,<br />
received datetime,<br />
processed datetime,<br />
primary key (id));<br />
Insert into aec.samples (description, site_id, received) values (&#8216;clay desposit&#8217;, 27, now());<br />
Insert into aec.samples (description, site_id, received) values (&#8216;burial urn&#8217;, 103, now());</p>
<p style="text-align: right;">خوب حالا تنها مشکل ما این هست که چطور میشه به دیتابیس متصل شد :</p>
<p style="text-align: right;"><strong>افزودن MYSQL conector Refrence‌به پروژه :</strong></p>
<p style="text-align: right;">mysql connector‌خودش به صورت اتوماتیک به پروژه اضافه نمیشه بلکه ما باید اینکار رو به صورت دستی انجام بدیم .و البته این بسنگی به IDE  داره که شما استفاده میکنید مثلا این راه :project&gt;refrences&gt;mysql.data‌را از لیست انتخاب نمایید.</p>
<p style="text-align: right;"><strong>بارگذاری mysql connector در c# :</strong></p>
<p style="text-align: right;">حالا نوبت به مرحله تعریف عناصر منبع mysql در کد شما میرسه :</p>
<p style="text-align: left;" dir="ltr">using MySql.Data.MySqlClient;</p>
<p style="text-align: right;">در این مثال Dataset  مورد استفاده هست بنابر این System Data object میبایست به شکل زیر مورد دستیابی قرار گیرد:</p>
<div dir="ltr">
<div style="text-align: left;">using System;</div>
<div style="text-align: left;">using System.Data;</div>
<div style="text-align: right;">:برای ساختن فرم هم  اینچنین عمل میکنیم</div>
<div style="text-align: left;" dir="ltr">
<div>
<div>using System.Windows.Forms;</div>
<div>using System.Drawing;</div>
</div>
</div>
</div>
<p style="text-align: right;">حال پروژه تا قسمتی آماده شده.<strong> </strong></p>
<p style="text-align: right;"><strong>استفاده از اطلاعات Mysql  در فرمها :</strong></p>
<p style="text-align: right;">این برنامه ای که الان مشغول نوشتنش هستیم چه کارهایی انجام میده :</p>
<ol>
<li>یک کانکشن با Mysql  داره</li>
<li>یک پرس و جوی sql ‌رو به صورت مناسب نمایش میده</li>
<li>دیتا ها رو در یک گرید نمایش میده</li>
</ol>
<p style="text-align: left;" dir="ltr"> </p>
<div dir="ltr">
<div style="text-align: left;">public class MainForm : Form {</div>
<div style="text-align: left;">private MySqlConnection connection = new MySqlConnection ();</div>
<div style="text-align: left;">private MySqlDataAdapter data = new MySqlDataAdapter ();</div>
<div style="text-align: left;">DataGrid gridInfo = new DataGrid();</div>
<div style="text-align: right;" dir="ltr">
<p style="text-align: right;">خوب حالا برای وصل شدن به دیتابیس باید اطلاعات بانک اطلاعاتی و نحوه اتصال اوون رو به همراه فراخوانی متد   در کد قرار میدهیم</p>
<div>
<div style="text-align: left;">public static void Main () {</div>
<div style="text-align: left;">Application.Run(new MainForm ());</div>
<div style="text-align: left;">}</div>
<div style="text-align: left;">public MainForm() {</div>
<div style="text-align: left;">connection.ConnectionString =</div>
<div style="text-align: left;">&#8220;server=localhost;&#8221;</div>
<div style="text-align: left;">+ &#8220;database=aec;&#8221;</div>
<div style="text-align: left;">+ &#8220;uid=aec_user;&#8221;</div>
<div style="text-align: left;">+ &#8220;password=aec;&#8221;;</div>
<div style="text-align: left;">connection.Open ();</div>
<div style="text-align: right;">حالا پرس و جو رو ایجاد میکنیم</div>
<div style="text-align: left;">
<div>
<div>MySqlCommand command = connection.CreateCommand ();</div>
<div>command.CommandText = &#8220;select * from samples&#8221;;</div>
<div style="text-align: right;">و در نهایت پاسخ در دیتاست بارگذاری میشود (توی این مثال ما &#8220;سمپل دیتا&#8221; رو دادیم (ببخشید از اینکه فارسی نوشتم چون مشکلی بین کاراکترهای فارسی و انگلیسی بوجود اوومده و حال ندارم به دنبال رفع و محل عیب بگردم واسه همین فارسیشو مینویسم</div>
<div style="text-align: right;"><img title="Wink" src="http://hesam-h.ir/blog/wp-content/plugins/editor-extender/plugins/emotions/img/smiley-wink.gif" border="0" alt="Wink" /></div>
<div style="text-align: left;" dir="ltr">
<div>data.SelectCommand = command;</div>
<div>DataSet dataset = new DataSet();</div>
<div>data.Fill(dataset,&#8221;sample_data&#8221;);</div>
</div>
<div style="text-align: right;">:گرید میتونه محتویات دیتاست رو نمایش بده </div>
<div style="text-align: left;" dir="ltr">
<div>gridInfo.DataSource = dataset;</div>
<div>gridInfo.DataMember = &#8220;sample_data&#8221;;</div>
<div>gridInfo.Dock = DockStyle.Fill;</div>
</div>
<div style="text-align: right;">:در نهایت هم باید گرید رو به فرمتون اضافه کنید </div>
<div style="text-align: left;">
<div>this.Controls.Add (gridInfo);</div>
<div>}</div>
</div>
<div style="text-align: right;"><strong>:بستن کانکشن</strong></div>
<div style="text-align: right;">:کانکشن مای اس کیو ال زمانی که ما متد پایان را فراخوانی کنیم بسته خواهد شد </div>
<div style="text-align: left;" dir="ltr">
<div>
<div>~MainForm() {</div>
<div>connection.Close();</div>
<div>}</div>
<div style="text-align: right;"></div>
<div style="text-align: right;"></div>
<div style="text-align: right;">اگر مقالات بیشتری در این زمینه نیاز دارید حتمت نظر بدهید تا مقالاتی از این دست رو تکمیل کنم </div>
<div style="text-align: right;">مخصوصا ارتباط بین سی شارپ و مای اس کیو ال</div>
<div style="text-align: right;">موفق باشید.</div>
<div style="text-align: right;"><a href="http://hesam-h.ir/blog/wp-content/uploads/2010/04/841072_com_02_applica.png"><img class="aligncenter size-medium wp-image-645" title="841072_com_02_applica" src="http://hesam-h.ir/blog/wp-content/uploads/2010/04/841072_com_02_applica-300x201.png" alt="" width="300" height="201" /></a></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://hesam-h.ir/blog/1389/01/my-sql-%d9%88-c-%da%86%da%af%d9%88%d9%86%d9%87-%d8%9f%da%86%d8%b7%d9%88%d8%b1%d8%9f%d8%af%d8%b1-%d8%ad%d8%a7%d9%84-%d8%aa%d9%83%d9%85%d9%8a%d9%84/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>پیداکردن  ریشه‌های  چند جمله ای درجه n بوسیله الگوریتم ژنتیک</title>
		<link>http://hesam-h.ir/blog/1389/01/%d9%be%db%8c%d8%af%d8%a7%da%a9%d8%b1%d8%af%d9%86-%d8%b1%db%8c%d8%b4%d9%87%e2%80%8c%d9%87%d8%a7%db%8c-%da%86%d9%86%d8%af-%d8%ac%d9%85%d9%84%d9%87-%d8%a7%db%8c-%d8%af%d8%b1%d8%ac%d9%87-n-%d8%a8%d9%88/</link>
		<comments>http://hesam-h.ir/blog/1389/01/%d9%be%db%8c%d8%af%d8%a7%da%a9%d8%b1%d8%af%d9%86-%d8%b1%db%8c%d8%b4%d9%87%e2%80%8c%d9%87%d8%a7%db%8c-%da%86%d9%86%d8%af-%d8%ac%d9%85%d9%84%d9%87-%d8%a7%db%8c-%d8%af%d8%b1%d8%ac%d9%87-n-%d8%a8%d9%88/#comments</comments>
		<pubDate>Wed, 07 Apr 2010 06:54:28 +0000</pubDate>
		<dc:creator>تبعیدی دست باد</dc:creator>
				<category><![CDATA[آی تی]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[برنامه های من]]></category>
		<category><![CDATA[الگوريتم ژنتيک]]></category>
		<category><![CDATA[سورس]]></category>
		<category><![CDATA[ویژوال بیسیک]]></category>
		<category><![CDATA[پروژه دانشجویی]]></category>
		<category><![CDATA[پیداکردن ریشه‌های چند جمله ای درجهn]]></category>

		<guid isPermaLink="false">http://hesam-h.ir/blog/?p=622</guid>
		<description><![CDATA[امیدوارم که بتونم با این برنامه باز هم به شما در این زمینه کمک کرده باشم . عکسی که مشاهده میکنید عکسی از محیط این برنامه هست که با زبان Vb6.0 نوشته شده است.پذیرای کلیه انتقادات و پیشنهادات شما هستم. برای دانلود به ادامه مطلب بروید. دربافت برنامه]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img src="http://hesam-h.ir/blog/wp-content/uploads/2010/04/chand-jomleye-300x278.jpg" alt="" width="300" height="278" /></p>
<p>امیدوارم که بتونم با این برنامه باز هم به شما در این زمینه کمک کرده  باشم .</p>
<p>عکسی که مشاهده میکنید عکسی از محیط این برنامه هست که با زبان Vb6.0  نوشته شده است.پذیرای کلیه انتقادات و پیشنهادات شما هستم.</p>
<p>برای دانلود به ادامه مطلب بروید.</p>
<p><span id="more-622"></span><a href="http://hesam-h.ir/blog/wp-content/uploads/2010/04/chand-_jomleye_by_hesam_hatami.zip">دربافت برنامه</a></p>
]]></content:encoded>
			<wfw:commentRss>http://hesam-h.ir/blog/1389/01/%d9%be%db%8c%d8%af%d8%a7%da%a9%d8%b1%d8%af%d9%86-%d8%b1%db%8c%d8%b4%d9%87%e2%80%8c%d9%87%d8%a7%db%8c-%da%86%d9%86%d8%af-%d8%ac%d9%85%d9%84%d9%87-%d8%a7%db%8c-%d8%af%d8%b1%d8%ac%d9%87-n-%d8%a8%d9%88/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>زمان بندی کارها در سیستم های چند پردازنده ای بوسیله الگوریتم ژنتیک</title>
		<link>http://hesam-h.ir/blog/1389/01/%d8%b2%d9%85%d8%a7%d9%86-%d8%a8%d9%86%d8%af%db%8c-%da%a9%d8%a7%d8%b1%d9%87%d8%a7-%d8%af%d8%b1-%d8%b3%db%8c%d8%b3%d8%aa%d9%85-%d9%87%d8%a7%db%8c-%da%86%d9%86%d8%af-%d9%be%d8%b1%d8%af%d8%a7%d8%b2%d9%86/</link>
		<comments>http://hesam-h.ir/blog/1389/01/%d8%b2%d9%85%d8%a7%d9%86-%d8%a8%d9%86%d8%af%db%8c-%da%a9%d8%a7%d8%b1%d9%87%d8%a7-%d8%af%d8%b1-%d8%b3%db%8c%d8%b3%d8%aa%d9%85-%d9%87%d8%a7%db%8c-%da%86%d9%86%d8%af-%d9%be%d8%b1%d8%af%d8%a7%d8%b2%d9%86/#comments</comments>
		<pubDate>Wed, 07 Apr 2010 06:24:53 +0000</pubDate>
		<dc:creator>تبعیدی دست باد</dc:creator>
				<category><![CDATA[آی تی]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[multiprocessing systems with genetic algorithm]]></category>
		<category><![CDATA[الگوريتم ژنتيک]]></category>
		<category><![CDATA[سيستم هاي چندپردازنده اي]]></category>

		<guid isPermaLink="false">http://hesam-h.ir/blog/?p=618</guid>
		<description><![CDATA[در ادامه برنامه ای که در همین زمینه برای شما دوستان ارائه نمودم این مقاله هم که در کنفرانس کیش ارائه شده شامل اطلاعات بسیار خوب و کاملی در مورد اینگونه الگوریتم ها میباشد.. مساله زمانبندی ایستای کارها در سیستم های چندپردازنده ای به دلایل استفاده بهینه ازپردازنده ها و همچنین صرف زمان کمتر، دارای [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://hesam-h.ir/blog/wp-content/uploads/2010/04/genetic.jpg"><img class="aligncenter size-medium wp-image-619" title="genetic" src="http://hesam-h.ir/blog/wp-content/uploads/2010/04/genetic-196x300.jpg" alt="" width="196" height="300" /></a></p>
<p>در ادامه برنامه ای که در همین زمینه برای شما دوستان ارائه نمودم این  مقاله هم که در کنفرانس کیش ارائه شده شامل اطلاعات بسیار خوب و کاملی در  مورد اینگونه الگوریتم ها میباشد..</p>
<p dir="rtl">مساله زمانبندی ایستای کارها در سیستم های چندپردازنده ای به  دلایل  استفاده بهینه ازپردازنده ها و همچنین صرف زمان کمتر، دارای اهمیت  ویژه  ای  است. این مساله از رده مسائل سخت است و به دست آوردن جواب بهینه  دارای  پیچیدگی زمان بالایی است، بنابراین برای حل این مسائل از روش های  ابتکاری  استفاده می شود. الگوریتم های ژنتیک، روش مناسبی جهت زمانبندی در  سیستم های  چند پردازنده ای است. د راین مقاله الگوریتم ژنتیک جدیدی برای  زمانبندی در  سیستم های چند پردازنده ای ارایه میشود که اولویت زمان بندی  انجام کارها،  بر اساس تعداد فرزندان و نوادگان (Offspring) آنهاست. نتایج  نشان می دهد  الگوریتم پیشنهادی جدید در زمان قابل قبول جواب بهینه  زمانبندی را نسبت به  دیگر روش های ژنتیک متداول به دست می آورد.</p>
<p>برای مشاهده توضیحات بیشتر به ادامه مقاله مراجعه نمایید.</p>
<p><span id="more-618"></span></p>
<p><a href="http://hesam-h.ir/blog/wp-content/uploads/2010/04/zamnbandi.zip">دریافت مقاله</a></p>
]]></content:encoded>
			<wfw:commentRss>http://hesam-h.ir/blog/1389/01/%d8%b2%d9%85%d8%a7%d9%86-%d8%a8%d9%86%d8%af%db%8c-%da%a9%d8%a7%d8%b1%d9%87%d8%a7-%d8%af%d8%b1-%d8%b3%db%8c%d8%b3%d8%aa%d9%85-%d9%87%d8%a7%db%8c-%da%86%d9%86%d8%af-%d9%be%d8%b1%d8%af%d8%a7%d8%b2%d9%86/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>کار با بانکهای اطلاعاتی در #c+سورس دفترچه تلفن</title>
		<link>http://hesam-h.ir/blog/1388/11/%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-%d8%a8%d8%a7%d9%86%da%a9%d9%87%d8%a7%db%8c-%d8%a7%d8%b7%d9%84%d8%a7%d8%b9%d8%a7%d8%aa%db%8c-%d8%af%d8%b1-c%d8%b3%d9%88%d8%b1%d8%b3-%d8%af%d9%81%d8%aa%d8%b1%da%86/</link>
		<comments>http://hesam-h.ir/blog/1388/11/%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-%d8%a8%d8%a7%d9%86%da%a9%d9%87%d8%a7%db%8c-%d8%a7%d8%b7%d9%84%d8%a7%d8%b9%d8%a7%d8%aa%db%8c-%d8%af%d8%b1-c%d8%b3%d9%88%d8%b1%d8%b3-%d8%af%d9%81%d8%aa%d8%b1%da%86/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 21:25:24 +0000</pubDate>
		<dc:creator>تبعیدی دست باد</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[برنامه های من]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[دفترچه تلفن]]></category>
		<category><![CDATA[دیتابیس]]></category>
		<category><![CDATA[سورس کد]]></category>

		<guid isPermaLink="false">http://hesam-h.ir/blog/?p=530</guid>
		<description><![CDATA[خوب فرض کنیم که هدف ما طراحی یک نرم افزار برای یک کتابخانه باشه . در اصول کلی طراحی یک نرم افزار اولین کاری که باید انجام بشه اینه که ببینیم سیستم ما قراره چه عملیاتی رو انجام بده و چه قابلیتهایی داشته باشه . تمام نهادهای مورد نیاز نرم افزار رو تشخیص بدیم و [...]]]></description>
			<content:encoded><![CDATA[<p>خوب فرض کنیم که هدف ما طراحی یک نرم افزار برای یک کتابخانه باشه . در اصول کلی طراحی یک نرم افزار اولین کاری که باید انجام بشه اینه که ببینیم سیستم ما قراره چه عملیاتی رو انجام بده و چه قابلیتهایی داشته باشه . تمام نهادهای مورد نیاز نرم افزار رو تشخیص بدیم و تمام اجزای مورد نیاز اونها رو تعیین کنیم . خوب مثلا در همین مثال کتابخانه نهادهای ما می تونن دانشجو ، کتاب ، متصدی کتابخانه ، مسئول اصلی کتابخانه و خود کتابخانه و بسیاری نهادهای دیگه بسته به قابلیتهایی که می خواهیم کتابخانه ما داشته باشه ، ایجاد کنیم . حالا که نهادها رو مشخص کردیم ، در مرحله بعد باید فیلدهای هر نهاد یا به اصطلاح هر رکورد را معیین کنیم که این هم بستگی به طراح نرم افزار داره . ولی خوب یک سری فیلدها هستن که تقریبا همه اونها رو ایجاد می کنند ، مثلا برای دانشجو : نام ، نام خانوادگی و شماره دانشجویی . خوب تا به حال یک طرح کلی از نرم افزاری که قراره ایجاد بشه تو ذهنمون ایجاد کردیم ، حالا باید توسط یک نرم افزار که به ما کمک می کنه جداول و فیلدهای اونها و رابطه بین جداول رو مشخص کنیم کار پیاده سازی طرح کلی نرم افزار رو انجام بدیم . خود من توی پروژم از ۹Power Designer استفدا کردم که نرم افزاری خیلی ساده ور در عین سادگی کاملی هستش . ما در این نرم افزار به رسم نمودار ERd بانک اطلاعاتی که می خواهیم طراحی کنیم می پردازیم (Entity Relational Diagram) . من برای نمونه یک مدل ERd ساده رو اینجا براتون میزارم که در power designer طراحی شده . سعی کردم ساده ترین حالت ممکن رو در نظربگیرم که برای همه قابل فهم باشه .<br />
<a href="http://hesam-h.ir/blog/wp-content/uploads/2010/02/1undpu.jpg"><img class="aligncenter size-medium wp-image-532" title="1undpu" src="http://hesam-h.ir/blog/wp-content/uploads/2010/02/1undpu-300x174.jpg" alt="" width="300" height="174" /></a><br />
<span id="more-530"></span></p>
<p>همونطور که در شکل بالا می بینید ۳ رابطه داریم . دو رابطه عضویت و یک رابطه integrity که همان امانت دادن کتاب هستش ( اگه بخوام در مورد power designer صحبت کنم خیلی رمان میبره بنابر این فرض رو بر این می گیریم برای ادامه که تا اینجای کار مشکلی ندارین ) . بعد از رشم این ERD باید به مدل بانک اطلاعاتی مورد نظر ما تبدیل بشه نا در بانک اطلاعاتی مورد نظر طرح نهایی رو که از این نرم افزار به دست میاریم رسم کنیم . برای این کهpower designer طرح ما رو کامپایل کنه و جداول مورد نیاز رو تولید کنه از منوی Tools گزینه Generate Physical Data Model رو انتخاب می کنیم و بعد Dbms مرود نظر خود را انتخاب کرده و در نهایت OK می کنیم . طرح ایجاد شده مدلی هستش که ما بانک اطلاعاتی خود را بر اساس ان طراحی کنیم . یعنی جداولی که در این طرح نهایی میبینیم باید در بانک اطلاعاتی رسم کرده و روابط بین فیلدهای جداول را کاملا مشخص کنیم . این طرح کامپایل شده مثال بالا هستش که باید جداولش در مثال من درSql Server 2005 پیده سازی شود .</p>
<p><a href="http://hesam-h.ir/blog/wp-content/uploads/2010/02/2.jpg"><img class="aligncenter size-medium wp-image-533" title="2" src="http://hesam-h.ir/blog/wp-content/uploads/2010/02/2-300x182.jpg" alt="" width="300" height="182" /></a>حالا باید وارد ویژوال استادیو ۲۰۰۵ شویم و به مرحله نهایی طراحی بانک اطلاعاتی نرم افزار کتابخانه خود بپردازیم . خوب وقتی وارد ویژوال استادیو شدین شما اولین کاری که باید انجام بدین اینه که یک Sql Server Database File ایجاد کنید . به این منظور از منوی Connect To DataBase رو انتخاب میکنید و از قسمت DataSource گزینه Microsoft Sql server database file رو انتخاب می کنید و در قسمت Database File Name یک نام دلخواه برای بانک اطلاعاتی خود انتخاب می کنید .و اگه Sql server نصب شده روی سیستم شما مشکلی نداشته باشه با فشردن دکمه ok بانک اطلاعاتی مربوطه ایجاد می شود .<br />
در تصویر زیر مراحل رو نشون دادم :<br />
<a href="http://hesam-h.ir/blog/wp-content/uploads/2010/02/3.jpg"><img class="aligncenter size-medium wp-image-534" title="3" src="http://hesam-h.ir/blog/wp-content/uploads/2010/02/3-246x300.jpg" alt="" width="246" height="300" /></a>بعد از اینکه مراحل بالا به درستی انجام شد از قسمت server Explorer در سمت چپ یا راست ویژوال استادیو می توانید دیتابیس ایجاد شده و جداول اون رو مشاهده کنید . در تصویر زیر نمایش داده شده :</p>
<p><a href="http://hesam-h.ir/blog/wp-content/uploads/2010/02/4.jpg"><img class="aligncenter size-medium wp-image-535" title="4" src="http://hesam-h.ir/blog/wp-content/uploads/2010/02/4-191x300.jpg" alt="" width="191" height="300" /></a></p>
<p>خوب حالا وقت اینه که جداولی که از power designer بدست آوردیم رو درSql Server ایجاد کنیم . بدین منظور در همون قسمت server explorer روی نام دیتابیس خود کلیک کرده تا باز شود ، بعد روی پوشه Tables کلیک راست کرده و Add New Table رو کلیک می کنیم . پنجره ای مانند شکل زیر ایجاد می شود :</p>
<p><a href="http://hesam-h.ir/blog/wp-content/uploads/2010/02/51.jpg"><img class="aligncenter size-full wp-image-542" title="5" src="http://hesam-h.ir/blog/wp-content/uploads/2010/02/51.jpg" alt="" width="158" height="291" /></a>در این پنجره باید نام فیلدهای جداول و نوع دادهای اونها رو تعیین کنیم و اگر گزینه Allow Nulls برای فیلدی تیک بخورد به این معنی است که کاربر نهایی نرم افزار موقع وارد کردن اطلاعات می تواند برای این فیلد مقداری وارد نکند . برای فیلدی که کلید اصلی جدول می باشد در حالی که آن فیلد انتخاب شده باید علامت کلید را از جعبه ابزار بالا انتخاب کرد. بعد از اینکه تمامی فیلدهای جدول مورد نظر تعریف شد با فشردن Ctrl + S نام جدول مورد نظر را وارد کرده وok می کنید و همین مراحل برای تمامی جداول خود انجام می دهید . بعد از تعریف تمامی جداول باید رابطه موجود بین عناصر جداول برای برای Sql server مشخص کنید . برای انجام این کار رد server explorer روی Tables کلیک کرده و جداولی که دارای کلید خارجی می باشند را یکی یکی در IDE باز کرده و از نوار ابزار بالا دکه Relationship را کلیک کرده و در پنل سمت راست روی گزینه &#8230; کلیک کرده و رابطه بین کلیدهای خارجی این جدول ( یعنی فیلدهایی که جزو فیلدهای واقعی این جدول نیستند و با کامپیایل طر ح ما در power designer از جداول دیگر وارد این جدول شده اند ) را با جدولی که این کلید در واقع متعلق به ان جدول است مشخص می کنیم .</p>
<p>مراحل بالا را در شکل های زیر خلاصه کردم :<br />
<a href="http://hesam-h.ir/blog/wp-content/uploads/2010/02/61.jpg"><img class="aligncenter size-medium wp-image-543" title="6" src="http://hesam-h.ir/blog/wp-content/uploads/2010/02/61-300x248.jpg" alt="" width="300" height="248" /></a></p>
<p>همانطور که در تصویر بالا نشان داده شده یکی از جداول باز است و از قسمت بالا روی گزینه مشخص شده کلیک می کنیم و پنجره زیر باز می شود :</p>
<p><a href="http://hesam-h.ir/blog/wp-content/uploads/2010/02/7.jpg"><img class="aligncenter size-medium wp-image-538" title="7" src="http://hesam-h.ir/blog/wp-content/uploads/2010/02/7-300x194.jpg" alt="" width="300" height="194" /></a>و بعد گزینه Add را کلیک می کنیم . پنجره زیر باز میشود :</p>
<p><a href="http://hesam-h.ir/blog/wp-content/uploads/2010/02/8.jpg"><img class="aligncenter size-medium wp-image-539" title="8" src="http://hesam-h.ir/blog/wp-content/uploads/2010/02/8-300x188.jpg" alt="" width="300" height="188" /></a>در باکس سمت چپ تمامی کلیدهای خارجی این جدول نمایان می شود . روی هر کدام یکی یکی کلیک کرده و مراحل زیر را برای آنها تکرار می کنیم :<br />
در پنل سمت راست در قسمت Generalو در قمت Tables and coloums specification روی علامت &#8230; کلیک کرده و شکل زیر حاصل می شود :</p>
<p><a href="http://hesam-h.ir/blog/wp-content/uploads/2010/02/9.jpg"><img class="aligncenter size-medium wp-image-540" title="9" src="http://hesam-h.ir/blog/wp-content/uploads/2010/02/9-300x229.jpg" alt="" width="300" height="229" /></a>در پنجره بالا در سمت راست جدول فعلی را انتخاب شده است و از باکس پایین فیلدی خارجی را انتخاب می کنیم و در سمت چپ جدولی که ایم فیلد مربوط به آن است را انتخاب کرده و از قسمت زیر آن فیلد خارجی که در جدول دیگر قرار گرفته انتخاب می کنیم . همانند شکل زیر :</p>
<p><a href="http://hesam-h.ir/blog/wp-content/uploads/2010/02/10.jpg"><img class="aligncenter size-medium wp-image-541" title="10" src="http://hesam-h.ir/blog/wp-content/uploads/2010/02/10-300x230.jpg" alt="" width="300" height="230" /></a></p>
<p>و در نهایت ok می کنیم و این کار را برای تمامی جداولی که دارای فیلد خارجی می باشند انجام می دهیم . بعد از انجام این کار شمای کلی بانک اطلاعاتی که قرار است در نرم افزار خود از آن استفاده کنیم به دست آمده است که برای مشاهده دیاگرام ان می توانیم در server explorer روی گزینه Database Diagram کلیک راست کرده و گزینه Add New Diagram را کلیک کنیم و جداول خود را Add کنیم با این کار دیاگرام نهایی و رابطه بین جداول ایجاد می شود که ئر موقع کد نویسی برای قسمتهای مختلف نرم افزار خیلی می تواند سودمند واقع شود .</p>
<p>خوب دوستان تا اینجای کار یک قسمت عمده کار رو با هم انجام دادیم . از اینجا به بعد دیگه باید همون نکاتی رو که در ابتدا گفتم در نظر بگیرید ، اینکه چه قابلیت هایی قرار است کتابخانه شما داشته باشد و بعد روالهای مورد نظر خود را پیاده کنید و بعد از اتمام تمامی این مراحل به سراغc# رفته و به طراحی Ide نرم افزار می پردازیم و کدنویسی های مربوطه را انجام می دهیم .</p>
<p>در ضمن اگه eroor می خوری,اگه از Sql Express استفاده می کنی و توی خود visual studio از تب Server Explorer میخوای به دیتا بیس کانکت بشی اولا که از Windows Authentication استفاده کن اگه بازم همین خطا رو داد توی همون پنچره serever explorer که باز شده توی اون تکست باکس یه اسم دلخواه بنویس مثلا test بعد ok کن تا یک دیتابیس جدید برات بسازه وقتی اوکی کنی یک پیغام میده که همچیین دیتابیسی وجود نداره شما اوکی میکنی و اگه sql شما به درستی نصب شده باشه برات دیتابیس رو میسازه و توی لیست دیتا بیس ها توی server explorer نشونش میده اگه خطا داد مطمعن شو که دیتابیسی با همین نام قبلا ایجاد نکرده بودی در این صورت اگه هر مشکلی خوردی بهترین راه نصب دوباره sql server هستش . ولی اگه ساخت برات دیتابیس رو که نتیچه میگیرری که sqlserver شما درست نصب شده و مشکلی نداره . اگه برای remote connection باز هم ازت خطا گرفت شما sql server management studio رو نصب کن که یک محیط ویژوال برای نسخه Express شما نصب میکنه بعد که بری داخلش یکم بگردی یک گزینه به نام Allowe remote connection رو پیدا میکنی که تیک اون رو بزنی مشکل حله . هر چند این گزینه وقتی کاربرد داره که بخوای توی محیط شبکه و با برنامه های Client server کار کنی .</p>
<h1><strong> مثال :</strong></h1>
<p><strong> </strong><strong>یک برنامه ۳ سه لایه ساده کلاسیک</strong><strong> &#8211; </strong><strong>دفترچه تلفن </strong></p>
<p><a href="http://hesam-h.ir/blog/wp-content/uploads/2010/02/11.jpg"><img class="aligncenter size-medium wp-image-544" title="11" src="http://hesam-h.ir/blog/wp-content/uploads/2010/02/11-300x189.jpg" alt="" width="300" height="189" /></a></p>
<p>یک نمونه برنامه ۳ لایه  بصورت ساده با کمک رابط OleDb با منبع داده ارتباط برقرار می کنه&#8230; نمونه کوچکی از یک دفترچه تلفنه ، از بانک اطلاعاتی MS Access بعنوان منبع داده استفاده می کنه ک فقط یک جدول ب نام Persons داره..</p>
<p>برنامه در ۳ پروژه مجزا (بصورت لایه دسترسی به داده یا DAL و لایه منطق تجاری برنامه یا BLL و لایه نمایش یا PL) نوشته شده&#8230;سعی شده بصورت کلاسیک نوشته بشه و از تکنیکهای جدید مثل LINQ هم استفاده ای نشده! شاید توی ی sample ِ دیگه&#8230;!</p>
<p>در لایه تجاری ، کلاسهایی ب نام Provider (مثل clsPersonProvider) مسئول جوابگویی ب نیاز لایه نمایش هستن ، و در لایه DAL کلاسهایی ب نام Adapter (مثلا clsPersonAdapter) مسئول پاسخگویی ب نیازهای لایه BLL هستن..</p>
<p>تمام دسترسیها ب بانک (ک مسلما فقط در لایه DAL انجام می شه) از طریق یک کلاس static ب نام clsSingletonConnectionManager انجام می شه&#8230; (توسط الگوی singleton اینکار پیاده سازی شده تا همیشه فقط یک instance و یک پل ارتباطی ب بانک وجود داشته باشد..مزایا و معایب این روش رو خودتون پیدا کنید!)</p>
<p>Validation ِ ساده ای انجام شده، در setter ها&#8230;(هنگامی ک مقدار یک پراپرتی ، set می شه بررسی انجام می شه ک مقدار مورد نظر تهی نباشد و در این صورت یک Exception رو ایجاد می کنه)<br />
(کلا در این قسمت می شه Validation هایی رو بر حسب نیاز انجام داد، در این برنامه ی نمونه خیلی از اینچنین مسائل برای سادگی بیشتر پیاده نشده!</p>
<p>برای مثال ، برای گرفتن و نمایش دادن لیست کلیه Person ها ، در لایه نمایش دستور مربوطه صادر می شه و توسط personProvider_ ب لایه &#8220;منطق تجاری&#8221; فرستاده می شه:</p>
<p>کد:</p>
<p style="text-align: left;">private void show_All()<br />
{<br />
dataGridView1.DataSource = _personProvider.Get_All_Items();<br />
}</p>
<p>این درخواست مجددا به لایه &#8220;دسترسی ب داده&#8221; ارسال می شه (توسط آبجکت personAdapter_) در اونجا لیست کلیه Person ها در آبجکتی از نوع DataTable ِ از پیش ساخته شده (TypedDataTable ، استفاده از TypedDataset , TypedDataTable ها مزایایی داره، مثلا مستقیما ب نام یک فیلد می شه دسترسی پیدا کرد در یک سطر یا همون StrongNaming و اینجور چیزا رو فراهم می کنن) ب نام dsPhonebook.PersonsDataTable<br />
ریخته می شه (fill می شه) و این جدول برگشت داده می شه ب لایه BLL :</p>
<p>کد:</p>
<p style="text-align: left;">public dsPhonebook.PersonsDataTable Select_AllPersons()<br />
{<br />
return base.select_All(_QUERY_SELECTALL_Persons);<br />
}</p>
<p style="text-align: left;">کد:</p>
<p style="text-align: left;">protected virtual T select_All(string pQuerySelectAll)<br />
{<br />
T retTable = new T();</p>
<p>OleDbDataAdapter da = new OleDbDataAdapter(pQuerySelectAll, clsSingletoConnectionManager.GetConnection2Phonebook);<br />
da.Fill(retTable);</p>
<p>return retTable;<br />
}</p>
<p style="text-align: right;">در این لایه (BLL) و در ادامه مقادیر برگشت داده شده ک در یک dsPhonebook.PersonsDataTable قرار دارن Cast می شن ب :</p>
<p>کد:</p>
<p style="text-align: left;">List&lt;clsPersonEntity&gt;</p>
<p>و این List در نهایت ب &#8220;لایه نمایش&#8221; برگشت داده می شه و در DataGridView مشاهده می شه..</p>
<p><a href="http://hesam-h.ir/blog/wp-content/uploads/2010/02/RC3LayersPhonebook.zip">RC3LayersPhonebook</a></p>
]]></content:encoded>
			<wfw:commentRss>http://hesam-h.ir/blog/1388/11/%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-%d8%a8%d8%a7%d9%86%da%a9%d9%87%d8%a7%db%8c-%d8%a7%d8%b7%d9%84%d8%a7%d8%b9%d8%a7%d8%aa%db%8c-%d8%af%d8%b1-c%d8%b3%d9%88%d8%b1%d8%b3-%d8%af%d9%81%d8%aa%d8%b1%da%86/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>شطرنج</title>
		<link>http://hesam-h.ir/blog/1388/11/%d8%b4%d8%b7%d8%b1%d9%86%d8%ac/</link>
		<comments>http://hesam-h.ir/blog/1388/11/%d8%b4%d8%b7%d8%b1%d9%86%d8%ac/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 20:15:54 +0000</pubDate>
		<dc:creator>تبعیدی دست باد</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[برنامه های من]]></category>
		<category><![CDATA[c#.net]]></category>
		<category><![CDATA[شطرنج]]></category>
		<category><![CDATA[هوش مصنوعی]]></category>
		<category><![CDATA[پروژه دانشجویی]]></category>

		<guid isPermaLink="false">http://hesam-h.ir/blog/?p=495</guid>
		<description><![CDATA[سورس کد بازی شطرنج رو به صورت بسیار ساده مشاهده میکنید که با زبان C# هست امیدوارم استفاده کنید. برای دانلود به ادامه مطلب بروید. Chess-Shatranj  ]]></description>
			<content:encoded><![CDATA[<p><a href="http://hesam-h.ir/blog/wp-content/uploads/2010/02/shatranj.jpg"><img class="aligncenter size-medium wp-image-496" title="shatranj" src="http://hesam-h.ir/blog/wp-content/uploads/2010/02/shatranj-300x231.jpg" alt="" width="300" height="231" /></a></p>
<p>سورس کد بازی شطرنج رو به صورت بسیار ساده مشاهده میکنید که با زبان C# هست امیدوارم استفاده کنید.</p>
<p>برای دانلود به ادامه مطلب بروید.</p>
<p><span id="more-495"></span><a href="http://hesam-h.ir/blog/wp-content/uploads/2010/02/Chess-Shatranj.zip">Chess-Shatranj</a></p>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://hesam-h.ir/blog/1388/11/%d8%b4%d8%b7%d8%b1%d9%86%d8%ac/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>سورس کد عامل هوشمند(جاروبرقی و آشغالها)vacuum Cleaner World</title>
		<link>http://hesam-h.ir/blog/1388/10/%d8%b3%d9%88%d8%b1%d8%b3-%da%a9%d8%af-%d8%b9%d8%a7%d9%85%d9%84-%d9%87%d9%88%d8%b4%d9%85%d9%86%d8%af%d8%ac%d8%a7%d8%b1%d9%88%d8%a8%d8%b1%d9%82%db%8c-%d9%88-%d8%a2%d8%b4%d8%ba%d8%a7%d9%84%d9%87%d8%a7v/</link>
		<comments>http://hesam-h.ir/blog/1388/10/%d8%b3%d9%88%d8%b1%d8%b3-%da%a9%d8%af-%d8%b9%d8%a7%d9%85%d9%84-%d9%87%d9%88%d8%b4%d9%85%d9%86%d8%af%d8%ac%d8%a7%d8%b1%d9%88%d8%a8%d8%b1%d9%82%db%8c-%d9%88-%d8%a2%d8%b4%d8%ba%d8%a7%d9%84%d9%87%d8%a7v/#comments</comments>
		<pubDate>Thu, 31 Dec 2009 18:57:34 +0000</pubDate>
		<dc:creator>تبعیدی دست باد</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[برنامه های من]]></category>
		<category><![CDATA[vacuum Cleaner World]]></category>
		<category><![CDATA[دلفی]]></category>
		<category><![CDATA[سورس کد]]></category>
		<category><![CDATA[عامل هوشمند]]></category>
		<category><![CDATA[هوش مصنوعی]]></category>

		<guid isPermaLink="false">http://hesam-h.ir/blog/?p=340</guid>
		<description><![CDATA[در این مسئله عملکرد یک جاروبرقی هوشمند را مورد بررسی قرار می دهیم. فرض می کنیم که دو اتاق وجود دارد که هر کدام از آن ها ممکن است شامل خاک باشد یا نباشد و عامل ممکن است در محیط ۱ یا ۲ باشد. عامل می تواند مستقیم برود و یا به چپ یا راست [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align: center;">
<div class="imageframe centered" style="width: 475px; text-align: right;"><a title="cleaner" rel="lightbox[pics340]" href="http://hesam-h.ir/blog/wp-content/uploads/2009/12/cleaner.jpg"><img class="attachment wp-att-341 alignright" src="http://hesam-h.ir/blog/wp-content/uploads/2009/12/cleaner.jpg" alt="cleaner" width="300" height="300" /></a></div>
</div>
<p>در این مسئله عملکرد یک جاروبرقی هوشمند را مورد بررسی قرار می دهیم.<br /> فرض می کنیم که دو اتاق وجود دارد که هر کدام از آن ها ممکن است شامل خاک باشد یا نباشد و عامل ممکن است در محیط ۱ یا ۲ باشد. عامل می تواند مستقیم برود و یا به چپ یا راست بپیچد. بنابراین هشت حالت ممکن، به عنوان عمل بعدی، وجود دارد.<br /> <strong>برای مشاهده ادامه مسئله و حل آن بوسیله دلفی به ادامه مطلب مراجعه کنید.</strong><br /> <span id="more-340"></span></p>
<div style="text-align: center;">
<div class="imageframe centered" style="width: 200px;"><a title="rasel" rel="lightbox[pics340]" href="http://hesam-h.ir/blog/wp-content/uploads/2009/12/rasel.jpg"><img class="attachment wp-att-343" src="http://hesam-h.ir/blog/wp-content/uploads/2009/12/rasel.thumbnail.jpg" alt="rasel" width="300" height="300" /></a></div>
</div>
<p>۱-      جارو در محیط ۱ – هر دو محیط خاکی<br /> ۲-      جارو در محیط ۱ – محیط ۱ خاکی<br /> ۳-      جارو در محیط ۱ – محیط ۲ خاکی<br /> ۴-      جارو در محیط ۱ – هیچکدام از محیط ها خاکی نیست<br /> ۵-      جارو در محیط ۲ – هر دو محیط خاکی<br /> ۶-      جارو در محیط ۲ – محیط ۱ خاکی<br /> ۷-      جارو در محیط ۲ – محیط ۲ خاکی<br /> ۸-      جارو در محیط ۲ – هیچکدام از محیط ها خاکی نیست<br /> ·         ابتدا تصور کنید که حسگر های عامل به او اطلاعات کافی می دهند.(دنیا قابل دسترسی است.) و همچنین عامل می داند هر کدام از اعمالش چه تغییری در محیط ایجاد می کنند و سپس می تواند محاسبه کند با کدام وضعیت پس از انجام عمل رو به رو خواهد شد. این ساده ترین حالت مسئله است که به آن مسئله تک حالته می گویند.<br /> ·         حالا تصور کنید که عامل تمام اثرهای عمل هایش را می داند، اما دسترسی به محیط محدود است. برای مثال، عامل هیچ حسگری ندارد. در این حالت فقط می داند که وضعیت اولیه اش یکی از اعضای مجموعه (۱،۲،۳،۴،۵،۶،۷،۸) است. ممکن است فکر کنید که وضعیت عامل ناامید کننده است! اما در حقیقت اینقدر ها هم که به نظر می آید ناگوار نیست. زیرا عامل می داند که هر کدام از اعمالش چه اثری دارند. برای مثال می تواند محاسبه کند که عمل راست موجب می شود تا در یکی از حالات (۲،۴،۶،۸) باشد. بنابراین می تواند با انتخاب یک دنباله عملیاتی، به هدف برسد. به طور خلاصه هنگامی که محیط تماما قابل دسترسی نیست، عامل باید در مورد مجموعه حالت هایی که ممکن است هدف برسد، استدلال کند. به این نوع از مسئله مسئله چند حالته می گویند.<br /> ·         اگر عامل اثر اعمال خودش را نادیده بگیرد می تواند به مشکلات دیگری دچار شود. برای مثال تصور کنید که محیط غیر قطعی باشد از این رو باید از قانون مورفی(Murphy) تبعیت کند.<br /> برای مثال عامل می داند که در یکی از وضعیت های ۱ یا ۳ است. با انجام هر عمل در یک حالت دیگر قرار می گیرد که امکان دارد آن را به هدف برساند و یا با شکست مواجه شود. در چنین مواردی عامل تمام درخت عملیات را محاسبه کند. به طور کلی هر شاخه درخت با یک امکان احتمالی که از آن ناشی می شود، بررسی می شود. به همین علت به آن مسئله احتمالی می گویند.<br /> ·         حال تصور کنید که عامل هیچ اطلاعی در مورد اثرات اعمالش و اینکه در کجا قرار دارد، ندارد.(بدبخت تر از این عامل سراغ ندارید!؟) مانند کسی که در یک کشور غریب و بدون هیچ نقشه ای گم شده است. در ای حالت عامل باید تجربه کند و به تدریج کشف کند که چه عملی باید انجام شود و چه وضعیت هایی وجود دارند. این روش یک نوع جستجو است که بر خلاف جستجو در دنیای فرضی، می تواند عامل را با خطرات جدی مواجه کند. به مسائلی از این قبیل، مسئله اکتشافی می گویند.</p>
<p><a href="http://hesam-h.ir/blog/wp-content/uploads/2009/12/cleaner.zip">cleaner</a></p>
<p><!--more--></p>
]]></content:encoded>
			<wfw:commentRss>http://hesam-h.ir/blog/1388/10/%d8%b3%d9%88%d8%b1%d8%b3-%da%a9%d8%af-%d8%b9%d8%a7%d9%85%d9%84-%d9%87%d9%88%d8%b4%d9%85%d9%86%d8%af%d8%ac%d8%a7%d8%b1%d9%88%d8%a8%d8%b1%d9%82%db%8c-%d9%88-%d8%a2%d8%b4%d8%ba%d8%a7%d9%84%d9%87%d8%a7v/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>حل مسئله کشیشها و آدمخوار</title>
		<link>http://hesam-h.ir/blog/1388/10/%d8%ad%d9%84-%d9%85%d8%b3%d8%a6%d9%84%d9%87-%da%a9%d8%b4%db%8c%d8%b4%d9%87%d8%a7-%d9%88-%d8%a2%d8%af%d9%85%d8%ae%d9%88%d8%a7%d8%b1/</link>
		<comments>http://hesam-h.ir/blog/1388/10/%d8%ad%d9%84-%d9%85%d8%b3%d8%a6%d9%84%d9%87-%da%a9%d8%b4%db%8c%d8%b4%d9%87%d8%a7-%d9%88-%d8%a2%d8%af%d9%85%d8%ae%d9%88%d8%a7%d8%b1/#comments</comments>
		<pubDate>Thu, 31 Dec 2009 08:33:14 +0000</pubDate>
		<dc:creator>تبعیدی دست باد</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[برنامه های من]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[حل مسئله]]></category>
		<category><![CDATA[سورس]]></category>
		<category><![CDATA[هوش مصنوعی]]></category>
		<category><![CDATA[کشیشها و آدمخوارها]]></category>

		<guid isPermaLink="false">http://hesam-h.ir/blog/?p=334</guid>
		<description><![CDATA[اسم جالبیه !! البته برای اوونهایی که سررشته ای از کامپیوتر و هوش مصنوعی ندارند شاید کمی عجیب باشه ! اما این یک مسئله جالب و قدیمی هست. داستان از این قراره که : سه کشیش و سه آدمخوار در یک سمت رودخانه قراردارند .چطور میشه با یک قایق که توانایی حمل حداکثر دو نفر [...]]]></description>
			<content:encoded><![CDATA[<p>اسم جالبیه !! البته برای اوونهایی که سررشته ای از کامپیوتر و هوش مصنوعی ندارند شاید کمی عجیب باشه ! اما این یک مسئله جالب و قدیمی هست.<br />
داستان از این قراره که :<br />
سه کشیش و سه آدمخوار<br />
در یک سمت رودخانه قراردارند .چطور میشه با یک قایق که توانایی<br />
حمل حداکثر دو نفر را دارد آنها را به سمت دیگر رودخانه انتقال<br />
دهیم که در سمتی که قایق نیست تعداد کشیش ها از آدمخوارها بیشتر<br />
و بلعکس تعداد آدمخوارها از کشیش ها بیشتر نشود.<br />
این مسئله رو با زبان سی حل کردم.<br />
در ادامه مطلب سورس و فایل اجرایی رو مشاهده خواهید نمود.</p>
<p><span id="more-334"></span><br />
<a href='http://hesam-h.ir/blog/wp-content/uploads/2009/12/solve-keshish.zip'>دریافت مسئله و پاسخ</a><br />
(نکته : به صورت گرافیکی هست و هدر   graphics.h  در اوون فراخوانی شده)<br />
<!--more--></p>
]]></content:encoded>
			<wfw:commentRss>http://hesam-h.ir/blog/1388/10/%d8%ad%d9%84-%d9%85%d8%b3%d8%a6%d9%84%d9%87-%da%a9%d8%b4%db%8c%d8%b4%d9%87%d8%a7-%d9%88-%d8%a2%d8%af%d9%85%d8%ae%d9%88%d8%a7%d8%b1/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>معمای هشت</title>
		<link>http://hesam-h.ir/blog/1388/10/%d9%85%d8%b9%d9%85%d8%a7%db%8c-%d9%87%d8%b4%d8%aa/</link>
		<comments>http://hesam-h.ir/blog/1388/10/%d9%85%d8%b9%d9%85%d8%a7%db%8c-%d9%87%d8%b4%d8%aa/#comments</comments>
		<pubDate>Thu, 31 Dec 2009 08:10:07 +0000</pubDate>
		<dc:creator>تبعیدی دست باد</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[برنامه های من]]></category>
		<category><![CDATA[دلفی]]></category>
		<category><![CDATA[سورس کد]]></category>
		<category><![CDATA[معمای هشت]]></category>
		<category><![CDATA[هوش مصنوعی]]></category>

		<guid isPermaLink="false">http://hesam-h.ir/blog/?p=331</guid>
		<description><![CDATA[اینبار سورس و فایل اجرایی معمای هشت رو برای شما دوستان عزیز قرار دادم ، امیدوارم که استفاده کنید. این برنامه با دلفی نوشته شده. میتونید در ادامه مطلب فایل مربوطه رو دانلود کنید. معمای هشت]]></description>
			<content:encoded><![CDATA[<div style="text-align: center;">
<div class="imageframe centered" style="width: 200px;"><a title="8" rel="lightbox[pics0]" href="http://hesam-h.ir/blog/wp-content/uploads/2009/12/8.jpg"><img class="attachment wp-att-330" src="http://hesam-h.ir/blog/wp-content/uploads/2009/12/8.thumbnail.jpg" alt="8" width="200" height="128" /></a></div>
</div>
<p>اینبار سورس و فایل اجرایی معمای هشت رو برای شما دوستان عزیز قرار دادم ، امیدوارم که استفاده کنید.<br />
این برنامه با دلفی نوشته شده.<br />
میتونید در ادامه مطلب فایل مربوطه رو دانلود کنید.<br />
<span id="more-331"></span><br />
<a href='http://hesam-h.ir/blog/wp-content/uploads/2009/12/Moamaye-Hasht.zip'>معمای هشت</a><br />
<!--more--></p>
]]></content:encoded>
			<wfw:commentRss>http://hesam-h.ir/blog/1388/10/%d9%85%d8%b9%d9%85%d8%a7%db%8c-%d9%87%d8%b4%d8%aa/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>مالتی پراسسینگ بوسیله الگوریتم ژنتیک(multiprocessing systems with genetic algorithm)</title>
		<link>http://hesam-h.ir/blog/1388/09/%d9%85%d8%a7%d9%84%d8%aa%d9%8a-%d9%be%d8%b1%d8%a7%d8%b3%d8%b3%d9%8a%d9%86%da%af-%d8%a8%d9%88%d8%b3%d9%8a%d9%84%d9%87-%d8%a7%d9%84%da%af%d9%88%d8%b1%d9%8a%d8%aa%d9%85-%da%98%d9%86%d8%aa%d9%8a%da%a9mul/</link>
		<comments>http://hesam-h.ir/blog/1388/09/%d9%85%d8%a7%d9%84%d8%aa%d9%8a-%d9%be%d8%b1%d8%a7%d8%b3%d8%b3%d9%8a%d9%86%da%af-%d8%a8%d9%88%d8%b3%d9%8a%d9%84%d9%87-%d8%a7%d9%84%da%af%d9%88%d8%b1%d9%8a%d8%aa%d9%85-%da%98%d9%86%d8%aa%d9%8a%da%a9mul/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 19:58:03 +0000</pubDate>
		<dc:creator>تبعیدی دست باد</dc:creator>
				<category><![CDATA[آی تی]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[multiprocessing systems with genetic algorithm]]></category>
		<category><![CDATA[الگوريتم ژنتيک]]></category>
		<category><![CDATA[مالتي پراسسينگ]]></category>
		<category><![CDATA[چند پردازنده ای]]></category>

		<guid isPermaLink="false">http://hesam-h.ir/blog/?p=209</guid>
		<description><![CDATA[این الگوریتم رو زمان دانشجویی نوشتم. که زمانبندی پردازنده ها رو برای چند پردازنده ای به عهده داره. برای دانلود سورس اجرایی به ادامه مطلب رجوع کنید. اما به پاس حفظ حرمت ما که اینقدر نشستیم و کد نوشتیم و برای فرهنگ سازی لطفا یه حرفی هم از ما بزنید . لینکی بدید یا . [...]]]></description>
			<content:encoded><![CDATA[<p>این الگوریتم رو زمان دانشجویی نوشتم.<br />
که زمانبندی پردازنده ها رو برای چند پردازنده ای  به عهده داره.<br />
برای دانلود سورس اجرایی به ادامه مطلب رجوع کنید.<br />
<span id="more-209"></span><br />
اما به پاس حفظ حرمت ما که اینقدر نشستیم و کد نوشتیم و برای فرهنگ سازی لطفا یه حرفی هم از ما بزنید .<br />
لینکی بدید یا . . . . .<br />
<a href='http://hesam-h.ir/blog/wp-content/uploads/2009/12/multi-processor.zip'>دریافت</a></p>
<p><!--more--></p>
]]></content:encoded>
			<wfw:commentRss>http://hesam-h.ir/blog/1388/09/%d9%85%d8%a7%d9%84%d8%aa%d9%8a-%d9%be%d8%b1%d8%a7%d8%b3%d8%b3%d9%8a%d9%86%da%af-%d8%a8%d9%88%d8%b3%d9%8a%d9%84%d9%87-%d8%a7%d9%84%da%af%d9%88%d8%b1%d9%8a%d8%aa%d9%85-%da%98%d9%86%d8%aa%d9%8a%da%a9mul/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>فروشنده دوره گرد(Travelling Sales Man)</title>
		<link>http://hesam-h.ir/blog/1388/09/%d9%81%d8%b1%d9%88%d8%b4%d9%86%d8%af%d9%87-%d8%af%d9%88%d8%b1%d9%87-%da%af%d8%b1%d8%aftravelling-sales-man/</link>
		<comments>http://hesam-h.ir/blog/1388/09/%d9%81%d8%b1%d9%88%d8%b4%d9%86%d8%af%d9%87-%d8%af%d9%88%d8%b1%d9%87-%da%af%d8%b1%d8%aftravelling-sales-man/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 18:53:19 +0000</pubDate>
		<dc:creator>تبعیدی دست باد</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[Travelling Sales Man]]></category>
		<category><![CDATA[توضیحات الگوریتم]]></category>
		<category><![CDATA[دور هامیلتونی]]></category>
		<category><![CDATA[سورس]]></category>
		<category><![CDATA[فروشنده دوره گرد]]></category>

		<guid isPermaLink="false">http://hesam-h.ir/blog/?p=206</guid>
		<description><![CDATA[دوستانی که به دنبال اینگونه مسائل هستند بهتر از هر کس دیگه میدونند که داستان چی هست. یک فایل برای دانلود میگذارم. بعد از دانلود کردن شما فایل توضیحات سورس و کامپیل شده ی اوون رو مشاهده میکنید. دریافت نکته مهم : این مسیله به وسیله دور هامیلتونی حل شده.]]></description>
			<content:encoded><![CDATA[<p>دوستانی که به دنبال اینگونه مسائل هستند بهتر از هر کس دیگه میدونند که داستان چی هست.<br />
یک فایل برای دانلود میگذارم.<br />
<span id="more-206"></span><br />
بعد از دانلود کردن شما فایل توضیحات سورس و کامپیل شده ی اوون رو مشاهده میکنید.<br />
<a href='http://hesam-h.ir/blog/wp-content/uploads/2009/12/TSP.zip'>دریافت</a><br />
نکته مهم :<br />
این مسیله به وسیله دور هامیلتونی حل شده.<br />
<!--more--></p>
]]></content:encoded>
			<wfw:commentRss>http://hesam-h.ir/blog/1388/09/%d9%81%d8%b1%d9%88%d8%b4%d9%86%d8%af%d9%87-%d8%af%d9%88%d8%b1%d9%87-%da%af%d8%b1%d8%aftravelling-sales-man/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>آشنایی بیشتر با c#3.0</title>
		<link>http://hesam-h.ir/blog/1388/09/%d8%a2%d8%b4%d9%86%d8%a7%db%8c%db%8c-%d8%a8%db%8c%d8%b4%d8%aa%d8%b1-%d8%a8%d8%a7-c3-0/</link>
		<comments>http://hesam-h.ir/blog/1388/09/%d8%a2%d8%b4%d9%86%d8%a7%db%8c%db%8c-%d8%a8%db%8c%d8%b4%d8%aa%d8%b1-%d8%a8%d8%a7-c3-0/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 10:45:35 +0000</pubDate>
		<dc:creator>تبعیدی دست باد</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[c#.net]]></category>
		<category><![CDATA[Visual Studio .NET]]></category>
		<category><![CDATA[سي شارپ]]></category>

		<guid isPermaLink="false">http://hesam-h.ir/blog/?p=135</guid>
		<description><![CDATA[مقدمه زبان برنامه نویسی سی شارپ با نسخه ۱٫۰ به جهان برنامه نویسی عرضه شد. Visual Studio .NET مجهز به کامپایلر آن بود و برنامه نویسان می توانستند از ویژگی های نسخه اولیه استفاده کنند. نسخه دوم سی شارپ همراه با ویژوال استودیوی ۲۰۰۵ ارائه شد و توانایی را به نسخه قبلی افزود. در این [...]]]></description>
			<content:encoded><![CDATA[<p>مقدمه<br />
زبان برنامه نویسی سی شارپ با نسخه ۱٫۰ به جهان برنامه نویسی عرضه شد. Visual Studio .NET مجهز به کامپایلر آن بود و برنامه نویسان می توانستند از ویژگی های نسخه اولیه استفاده کنند. نسخه دوم سی شارپ همراه با ویژوال استودیوی ۲۰۰۵ ارائه شد و توانایی را به نسخه قبلی افزود. در این مقاله سعی خواهیم کرد مهم ترین ویژگی های افزوده شده به نسخه سی شارپ ۳٫۰ را مورد بررسی قرار دهیم.<br />
مقاله در ادامه مطلب بصورت doc قابل دسترسی است.<br />
<span id="more-135"></span><br />
دریافت<a href='http://hesam-h.ir/blog/wp-content/uploads/2009/11/more-about-c3.0.doc'>more about c#3.0</a><br />
<!--more--></p>
]]></content:encoded>
			<wfw:commentRss>http://hesam-h.ir/blog/1388/09/%d8%a2%d8%b4%d9%86%d8%a7%db%8c%db%8c-%d8%a8%db%8c%d8%b4%d8%aa%d8%b1-%d8%a8%d8%a7-c3-0/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>جلوگیری از ورود اطلاعات نا معتبر در Database از طریق Sql Transaction (بخش اول)</title>
		<link>http://hesam-h.ir/blog/1388/09/%d8%ac%d9%84%d9%88%da%af%db%8c%d8%b1%db%8c-%d8%a7%d8%b2-%d9%88%d8%b1%d9%88%d8%af-%d8%a7%d8%b7%d9%84%d8%a7%d8%b9%d8%a7%d8%aa-%d9%86%d8%a7-%d9%85%d8%b9%d8%aa%d8%a8%d8%b1-%d8%af%d8%b1-database-%d8%a7/</link>
		<comments>http://hesam-h.ir/blog/1388/09/%d8%ac%d9%84%d9%88%da%af%db%8c%d8%b1%db%8c-%d8%a7%d8%b2-%d9%88%d8%b1%d9%88%d8%af-%d8%a7%d8%b7%d9%84%d8%a7%d8%b9%d8%a7%d8%aa-%d9%86%d8%a7-%d9%85%d8%b9%d8%aa%d8%a8%d8%b1-%d8%af%d8%b1-database-%d8%a7/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 05:49:44 +0000</pubDate>
		<dc:creator>تبعیدی دست باد</dc:creator>
				<category><![CDATA[امنیت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[c#.net]]></category>
		<category><![CDATA[CommittableTransaction]]></category>
		<category><![CDATA[sql injection]]></category>
		<category><![CDATA[SqlTransaction]]></category>
		<category><![CDATA[TransactionScope]]></category>
		<category><![CDATA[vb.net]]></category>
		<category><![CDATA[جلوگیری از sql injection]]></category>
		<category><![CDATA[جلوگیری از ورود اطلاعات نا معتبر]]></category>

		<guid isPermaLink="false">http://hesam-h.ir/blog/?p=90</guid>
		<description><![CDATA[اگر در زمینه امنیت برنامه هاب کاربردی تحت وب کار کرده باشید حتما به وبسایتهایی بر خورده اید که با وروود داده نامعتبر بانک اطلاعاتی آنها از هم فرو مبپاشد . و کلیه اطلاعات را میتوان از انها ردیافت نمود ! و نام کاربری و رمز مدیر وبسایت یکی از ساده ترین اطلاعاتی است که [...]]]></description>
			<content:encoded><![CDATA[<p>اگر در زمینه امنیت برنامه هاب کاربردی تحت وب کار کرده باشید حتما به وبسایتهایی بر خورده اید که با وروود داده نامعتبر بانک اطلاعاتی آنها از هم فرو مبپاشد .<br />
و کلیه اطلاعات را میتوان از انها ردیافت نمود ! و نام کاربری و رمز مدیر وبسایت یکی از ساده ترین اطلاعاتی است که یک شخص نفوذگر به آنها دست پیدا خواهد نمود.<br />
در این ۲ مقاله به بررسی چگونگی جلوگیری از این فرآیند خواهیم پرداخت.<br />
<span id="more-90"></span><br />
مقدمه :</p>
<p>با توجه به اینکه امروزه ( به دلیل حجم گسترده ی اطلاعات )، Database یکی از ارکان اصلی هر نرم افزار است، رفته رفته نیاز به مدیریت اطلاعات درون آن، بیشتر از پیش احساس می شود. یکی از جنبه های این مدیریت، جلوگیری از ورود اطلاعات نامعتبر به Database است، که امروزه حتی در نرم افزار های کاربردی و خانگی مورد نیاز است.</p>
<p>فرض کنید در حال تولید نرم افزاری هستید ( Windows Application ، Web Application و یا Network Application ) که در آن هنگام ایجاد Profile برای کاربر جدید، علاوه بر ورود مشخصات او به یک جدول عمومی ( مثل tblUser ) ، یک جدول اطلاعات مجزا برای او تشکیل می دهید. اگر برنامه در هنگام ارتباط با Database دچار مشکل شود، و یا به هر دلیلی ارتباط قطع گردد، این عمل انجام نخواهد شد. با این همه در صورتی که در همان ابتدای امر مشکل ایجاد شود، می توانید با یک پیغام از کاربر بخواهید که دوباره عمل ثبت نام را انجام دهد. ولی مشکل اصلی زمانی است که در میان عمل ثبت نام، برنامه با مشکل روبرو شود، در این صورت مثلا مشخصات کاربر به جدول tblUser وارد می شود، ولی جدول مجزای کاربر ایجاد نمی شود. در این حالت برنامه ی شما (هر چقدر هم که منظم و بدون عیب ایجاد شده باشد ) دچار مشکل خواهد شد. مشکلی که از نظر کاربر از برنامه نویسی شما ناشی می شود. البته تا حدودی هم حق با اوست، چون کاربر نه می تواند دوباره اطلاعاتش را وارد کند، و نه می تواند با Profile که برای او به صورت ناقص ساخته شده است، با نرم افزار کار کند. در این صورت است که نرم افزار تولید شده توسط شما، دارای برچسب عدم اطمینان خواهد شد.</p>
<p> این تنها یک مثال بود، در صورتی که این اتفاق ممکن است برای هر نرم افزاری که با پایگاه داده سرو کار دارد، رخ دهد. برای جلوگیری از بروز این گونه اشکالات، در زبان T-SQL که زبان مورد استفاده در MS SQL هم هست، دستور Transaction گنجانده شده است. این دستور پیچیدگی هایی برای یک برنامه نویس به همراه دارد، و از آنجا که هدف NET Framework. ایجاد پلتفرمی ساده تر از پیش برای برنامه نویسان بود، در NET. سه راه حل کلی برای اینکار ارائه شده است. پیاده سازی هر کدام از این روش ها با ۳ تا ۵ خط کد انجام می شود. به همین خاطر توصیه شده است، برای تمامی دستوراتی که اطلاعات Database را تغییر می دهند ( از جمله Insert ، Update ، Delete و حتی Create Table و  Drop Table )، از Sql Transaction استفاده شود، اعم از اینکه احتمال بروز خطا بالا است یا کمتر از % ۰٫۱ است. فراموش نکنید که یکی از دلایل موفقیت یک نرم افزار، بدون عیب بودن ( در دنیای واقعیت: داشتن حداقل تعداد عیب ) آن است.</p>
<p>نکاتی که قبل از شروع مقاله باید به آنها دقت کنید :</p>
<p> برای بهره برداری کامل از این مقاله، نیاز به مهارت های زیر دارید:</p>
<p>·          داشتن علم مقدماتی SQL Server</p>
<p>      ·     آشنایی ابتدایی به یکی از زبان های NET. (البته برنامه های این مقاله به زبان VB.NET نوشته شده است، ولی با توجه به اینکه فهم توابع و متدهای به کار برده شده، برای درک کامل کد و ترجمه آن به هر زبان دیگری از جمله #C و J# کافی می باشد، برای درک کامل این مقاله، آشنایی مقدماتی به هرکدام از زبان های  NET. برای شما کافی است.)</p>
<p>نکته: هر کدام از روش های ارائه شده، (در بیش از ۹۵% مواقع) به تنهایی جوابگوی این مسئله خواهند بود. با این همه ابتدا هر سه روش را مطالعه کرده، و سپس با توجه به ویژگی های هر کدام، روش مورد استفاده ی خود را انتخاب کنید.</p>
<p>پیاده سازی و استفاده از Sql Transaction :</p>
<p> سه روش معمول برای پیاده سازی Sql Transaction وجود دارد:</p>
<p>      ۱ &#8211;      استفاده از کلاس TransactionScope ( ساده ترین روش )</p>
<p>      ۲-      استفاده از کلاس CommittableTransaction ( پر کاربرد ترین روش )</p>
<p>      ۳ &#8211;      استفاده از کلاس SqlTransaction ( پر امکانات ترین روش )</p>
<p>روش اول – مدیریت اطلاعات را به NET Framework. واگذار کنید :</p>
<p>      کلاس: TransactionScope</p>
<p>      مشخصه ی بارز: ساده ترین روش</p>
<p> در این روش همان طور که از نام کلاس آن مشخص است، شما یک محدوده ی Transaction مشخص می کنید و سایر کارها توسط خود NET. انجام می شود.</p>
<p>کلاس TransactionScope در فضای نامی System.Transactions قرار دارد، به طور پیش فرض ارجاعی به فایل system.transactions.dll وجود ندارد، پس شما باید ابتدا یک ارجاع به فایل system.transactions.dll ایجاد کنید، تا بتوانید فضای نامی System.Transactions را به برنامه Imports کنید. (نحوه ی افزودن ارجاع به فایل، در پایان مقاله توضح داده شده است.)</p>
<p> <em>Imports System.Transactions</em></p>
<p>اکنون باید یک شی از کلاس TransactionScope ایجاد کنید:</p>
<p> Dim sqlTransaction1 As New TransactionScope</p>
<p>از همان لحظه ای که یک شی ( توسط کلمه ی کلیدی New ) از کلاس TransactionScope ایجاد می گردد، محدوده ی Transaction شروع می شود. حال باید اتمام محدوده را هم مشخص کنید، برای اینکار از متد Complete از شی استفاده کنید:</p>
<p> sqlTransaction1.Complete()</p>
<p>اتمام محدوده معمولا به عنوان آخرین دستور ( قبل از آزاد سازی حافظه ) در تابع یا سابروتین نوشته می شود. البته می دانیم که در .NET خود  Garbage Collection، آزاد سازی حافظه را انجام می دهد، ولی توصیه می شود، برای نگهداری کد در محدوده ی مهندسی نرم افزار، آزاد سازی های اشیاء ایجاد شده به صورت دستی انجام شود. حتی به غیر از این مسئله، آزادسازی شی TransactionScope در کاربرد های تخصصی تر یک امر الزامی است، وگرنه کار مذکور به صورت ناقص انجام خواهد شد. با این تفاسیر، توصیه می شود همیشه آزاد سازی را به صورت دستی ( با فراخوانی متد Dispose ) انجام دهید.</p>
<p>مثال: کد زیر سابروتینی را نشان می دهد، که یک رکورد به جدول اضافه می کند. در این سابروتین از کلاس TransactionScope برای عمل Transaction استفاده شده است:<br />
برای مشاهده عکس در ابعاد واقعی بر روی آن کلیک کنید.<br />
<a href="http://hesam-h.ir/blog/wp-content/uploads/2009/11/New-Picture.jpg"><img src="http://hesam-h.ir/blog/wp-content/uploads/2009/11/New-Picture-300x157.jpg" alt="New Picture" title="New Picture" width="300" height="157" class="alignright size-medium wp-image-92" /></a></p>
<p>در این سابروتین، برنامه ابتدا یک شی TransactionScope ایجاد می کند، سپس عملیات درج در جدول را انجام می دهد، و در پایان متد Complete شی را فراخوانی می کند. در صورتی که خطایی رخ ندهد، اجرای سابروتین پس از درج، با موفقیت به پایان می رسد، در غیر این صورت اگر در ساختار Try&#8230; Catch&#8230; End Try ( تنها جایی که امکان بروز خطا وجود دارد ) خطایی رخ دهد، اجرای برنامه، قبل از فراخوانی متد Complete از شی TransactionScope ، به داخل Catch منتقل می شود و در نتیجه متد Complete فراخوانی نشده و تمامی تغییرات Database ( از آغاز محدوده ی TransactionScope تا اینجا ) ، به صورت خودکار نادیده گرفته می شود و Database به حالتی که قبل از اجرای سابروتین AddToTable داشته، باز می گردد.</p>
<p>روش دوم – بدون پیچیدگی، عمل مدیریت اطلاعات را شخصا&#8221; انجام دهید :</p>
<p>             کلاس: CommittableTransaction</p>
<p>            مشخصه ی بارز: پر کاربرد ترین روش</p>
<p> کلاس CommittableTransaction در فضای نامی System.Transactions قرار دارد، به طور پیش فرض ارجاعی به فایل system.transactions.dll وجود ندارد، پس شما باید ابتدا یک ارجاع به فایل system.transactions.dll ایجاد کنید، تا بتوانید فضای نامی System.Transactions را به برنامه Imports کنید. (نحوه ی افزودن ارجاع به فایل، در پایان مقاله توضح داده شده است.)</p>
<p>نکته: در صورتی که روش قبل را در پروژه ای پیاده سازی کرده اید، نیازی به افزودن دوباره ی ارجاع برای همان پروژه نیست.</p>
<p> Imports System.Transactions</p>
<p>اکنون باید یک شی از کلاس CommittableTransaction ایجاد کنید:</p>
<p> Dim sqlTransaction1 As New CommittableTransaction</p>
<p>همچنین باید بعد از باز کردن مسیر ارتباط با Database ( دستور ()sqlConnection1.Open ) ، شی CommittableTransaction را به عنوان پارامتر به متد EnlistTransaction از شی sqlConnection1 ارسال کنید، تا Transaction بر روی این ارتباط، از همین لحظه آغاز شود.</p>
<p> sqlConnection1.EnlistTransaction(sqlTransaction1)</p>
<p>در این روش باید عملیات ادامه ی کار و بازگشت به قبل از خطا را به صورت دستی پیاده سازی کنید. در صورتی که خطایی رخ دهد، لازم است متد Rollback از شی را فراخوانی کنید:</p>
<p> sqlTransaction1.Rollback()</p>
<p>و در صورت اجرای موفقیت آمیز دستورات، لازم است متد Commit از شی را ( برای اعمال تغییرات در Database ) فراخوانی کنید:</p>
<p> sqlTransaction1.Commit()</p>
<p>جایگذاری این دستورات توسط شما و طبق صلاحدید شما انجام می پذیرد، ولی به عنوان یک استاندارد تعریف نشده، فراخوانی متد Commit بلافاصله قبل از بستن ارتباط، و فراخوانی متد Rollback در قسمت Catch شده، قرار می گیرد.</p>
<p> نکته: توجه داشته باشید که نمی توانید قبل از ارسال شی به ارتباط باز شده، عمل Commit و یا Rollback را انجام دهید، ولی قرار دادن آنها پس از بستن ارتباط، مشکلی ایجاد نمی کند.</p>
<p>مثال: کد زیر سابروتینی را نشان می دهد، که یک رکورد به جدول اضافه می کند. در این سابروتین از کلاس CommittableTransaction برای عمل Transaction استفاده شده است:<br />
<a href="http://hesam-h.ir/blog/wp-content/uploads/2009/11/New-Picture-1.jpg"><img src="http://hesam-h.ir/blog/wp-content/uploads/2009/11/New-Picture-1-300x170.jpg" alt="New Picture (1)" title="New Picture (1)" width="300" height="170" class="aligncenter size-medium wp-image-93" /></a></p>
<p>در این سابروتین، برنامه ابتدا یک شی CommittableTransaction ایجاد می کند،  و بعد از باز کردن ارتباط، شی CommittableTransaction را به عنوان Transaction کمکی به شی sqlConnection1 ارسال می کند. سپس عملیات درج در جدول را انجام می دهد. در پایان در صورتی که خطایی رخ ندهد، متد Commit فراخوانی شده و تغییرات در Database ثبت می شوند و اجرای برنامه پس از درج، با موفقیت به پایان می رسد. در غیر این صورت، اگر در ساختار Try&#8230; Catch&#8230; End Try خطایی رخ دهد، اجرای برنامه، قبل از فراخوانی متد Commit از شی CommittableTransaction ، به داخل Catch منتقل می شود و در نتیجه متد Commit فراخوانی نشده و در عوض متد Rollback فراخوانی می شود. این متد ( برخلاف روش اول )، صراحتا تمامی تغییرات Database ( از ارسال شی CommittableTransaction به ارتباط، تا اینجا ) نادیده گرفته می شود و Database به حالتی که قبل از  اجرای سابروتین AddToTable داشته، باز می گردد.</p>
<p>نکته: در صورتی که تنها با Database های کوچک و متوسط سرو کار دارید، و یا تجربه ی زیادی در کار با پایگاه داده ندارید و یا حتی از کد های پیچیده خوشتان نمی آید، روش سوم را فاکتور بگیرید، و از خواندن آن صرف نظر کنید، چون به دلیل پیچیدگی بیشتر نسبت به دو روش قبل، باعث گیج شدن شما خواهد شد. توصیه می کنم در صورتی که این شرایط برای شما صدق می کند، به انتهای مقاله (در بخش دوم ) بروید و با توضیحی که در آنجا آمده است، یکی از دو روش اول را جهت استفاده، انتخاب کنید.</p>
<p>برای افزودن یک ارجاع به فایل system.transactions.dll مراحل زیر را انجام دهید:</p>
<p>از منوی Project آخرین گزینه را انتخاب کنید، تا صفحه ی Project Properties باز شود. در تب References بر روی دکمه ی &#8230;Add کلیک کنید، تا صفحه ی Add References باز شود. در این صفحه در تب اول ( NET. )، به دنبال System.Transactions بگردید، آن را انتخاب کنید و بر روی دکمه ی OK کلیک کنید.</p>
<p> در این لحظه یک ارجاع به فایل system.transactions.dll ایجاد می شود. پروژه را توسط گزینه ی SaveAll از منوی File ذخیره کرده و صفحه ی Project Properties را ببندید.</p>
<p>سخن پایانی :</p>
<p> ·          از اینکه تا اینجا با من همراه بودید، کمال تشکر را دارم.</p>
<p> ·     با توجه به حجم گستره، این مطلب در دو مقاله قرار گرفت که روش های اول و دوم در این بخش ارائه شدند، و روش سوم ( که پیچیده ترین و تخصصی ترین روش است ) در بخش بعدی ارائه می شود. در بخش بعدی همینطور مقایسه بین این سه روش انجام می گیرد و اینکه کدام را به عنوان روش شخصی انتخاب کنیم. البته برای استفاده ، اطلاعاتی که تا این لحظه کسب کرده اید، کافی است و می توانید برنامه تان را با قابلیت  Transaction بنویسید، با این همه در مقاله ی بعد، راه دیگری هم توضیح داده می شود.</p>
<p> ·     بحث در مورد Sql Transaction به این سه روش ختم نمی شود، بلکه هم روش های دیگری وجود دارند و هم هر روش جزئیات وسیعی را شامل می شود. با این همه به ارائه ی این سه روش اکتفا می کنم،  بقیه ی مطالب را ( در صورتی که به آن احساس علاقه می کنید ) می توانید در MSDN دنبال کنید، هر چند در صورت ایجاد هر گونه ابهام و یا سوالی در مورد سایر روش ها، بنده در حد توان در خدمت دوستان هستم.</p>
<p>       ·     دلیل تهیه ی این مقاله در اوج امتحانات، فقط و فقط استقبال گسترده ی شما از مقاله ی پیشین بود و نه چیز دیگر. به همین دلیل با نظرات و انتقادهایتان ادامه ی این مقاله و مقالات مشابه را تضمین می کنید. در صورتی که از مباحثی که من ارائه می دهم و یا نگارشم، به هر دلیلی خوشتان نمی آید و ترجیح می دهید دیگر از من مقاله ای نبینید، یک راه ساده وجود دارد، و آن هم عدم ارائه ی نظرات ، پیشنهادات و یا حتی سولاتتان است. امیدوارم مرا از نظرات ، پیشنهادات و انتقادات خود مطلع کنید.</p>
<p> فایل Solution این پروژه در بخش بعدی، در اختیارتان قرار خواهد گرفت.</p>
<p><!--more--></p>
]]></content:encoded>
			<wfw:commentRss>http://hesam-h.ir/blog/1388/09/%d8%ac%d9%84%d9%88%da%af%db%8c%d8%b1%db%8c-%d8%a7%d8%b2-%d9%88%d8%b1%d9%88%d8%af-%d8%a7%d8%b7%d9%84%d8%a7%d8%b9%d8%a7%d8%aa-%d9%86%d8%a7-%d9%85%d8%b9%d8%aa%d8%a8%d8%b1-%d8%af%d8%b1-database-%d8%a7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

