<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" >
<channel>
<title>تارنمای جامع سیستم عامل</title>
<link>http://hadiranji2.blogfa.com</link>
<description>مطالب مرجع و تخصصی در زمینه سیستم عامل ویژه دانشجویان و محققین علوم کامپیوتری</description>
<language>fa</language>
<generator>blogfa.com</generator>
<lastBuildDate>Fri, 17 Feb 2012 16:53:26 GMT</lastBuildDate>
<item>
<title>ارتباط با پورت سریال در C#</title>
<link>http://hadiranji2.blogfa.com/post-216.aspx</link>
<description>&lt;IMG class=&quot;aligncenter size-full wp-image-184&quot; title=image001 alt=&quot;&quot; src=&quot;http://pro-programming.com/wp-content/uploads/2011/07/image001.jpg&quot; width=398 height=297&gt;&lt;/P&gt;
&lt;P&gt;در فریم ورک .NET 2 به بعد فضا نام System.IO.Ports اضافه گردید این فضا نام دارای کلاسی با عنوان Serial Port می باشد که از این می توان برای دسترسی به پورت سریال و ارسال و دریافت اطلاعات از طریق این پورت انجام داد.&lt;/P&gt;
&lt;P&gt;&lt;SPAN id=more-183&gt;&lt;/SPAN&gt;&lt;BR&gt;برای شروع باید فضا نام بالا را فراخوانی کنیم برای این کار از using استفاده می کنیم .&lt;BR&gt;&lt;CODE style=&quot;DIRECTION: ltr&quot;&gt;&lt;/P&gt;
&lt;DIV id=highlighter_379195 class=&quot;syntaxhighlighter  csharp&quot;&gt;
&lt;DIV class=bar&gt; &lt;/DIV&gt;
&lt;DIV class=lines&gt;
&lt;DIV class=&quot;line alt1&quot;&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=number&gt;&lt;CODE&gt;1&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class=content&gt;&lt;CODE class=&quot;csharp keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;using&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt; &lt;CODE class=&quot;csharp plain&quot;&gt;System.IO.Ports;&lt;/CODE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;/CODE&gt;&lt;BR&gt;&lt;FONT face=&quot;&quot;&gt;برای اینکه از طریق پورت سریال بتوانیم داده ارسال و دریافت کنیم باید پورت مورد نظر را open یا باز کنیم.پورت سریال دارای پارامترهایی می باشد که نرخ و سرعت تبادل اطلاعات رو ست می کند . پس قبل از باز کردن یک پورت باید مقدار پارامترها را تعیین کنیم این پارامترها عبارت است از&lt;/FONT&gt;&lt;/P&gt;
&lt;UL sizset=&quot;2&quot; sizcache0008310189528679123=&quot;1&quot;&gt;
&lt;LI nodeIndex=&quot;1&quot;&gt;Baud Rate: اندازه سرعت تبادل اطلاعات را تعیین می کند , معادل بیت بر ثانیه است.&lt;/LI&gt;
&lt;LI nodeIndex=&quot;2&quot;&gt;Parity&lt;/LI&gt;
&lt;LI nodeIndex=&quot;3&quot;&gt;Stop Bits&lt;/LI&gt;
&lt;LI nodeIndex=&quot;4&quot;&gt;Data Bits : تعداد بیت ها را مشخص میکند&lt;/LI&gt;
&lt;LI nodeIndex=&quot;5&quot;&gt;Port Name : شماره پورتی که می خواهید باز کنید مثل com1,com2&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;خوب بر اساس توضیحات داده شده مقادیر بالا را مقداردهی و پورت را با دستور زیر باز می کنیم.&lt;BR&gt;&lt;CODE style=&quot;DIRECTION: ltr&quot;&gt;&lt;/P&gt;
&lt;DIV id=highlighter_34283 class=&quot;syntaxhighlighter  csharp&quot;&gt;
&lt;DIV class=&quot;bar      &quot;&gt; &lt;/DIV&gt;
&lt;DIV class=lines&gt;
&lt;DIV class=&quot;line alt1&quot;&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=number&gt;&lt;CODE&gt;01&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class=content&gt;&lt;CODE class=&quot;csharp comments&quot;&gt;&lt;FONT color=#008200&gt;//ایجاد یک آبجکت از serial port &lt;/FONT&gt;&lt;/CODE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line alt2&quot;&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=number&gt;&lt;CODE&gt;02&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class=content&gt;&lt;CODE class=&quot;csharp plain&quot;&gt;SerialPort ccom = &lt;/CODE&gt;&lt;CODE class=&quot;csharp keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;new&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt; &lt;CODE class=&quot;csharp plain&quot;&gt;SerialPort(); &lt;/CODE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line alt1&quot;&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=number&gt;&lt;CODE&gt;03&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class=content&gt;&lt;CODE class=&quot;csharp comments&quot;&gt;&lt;FONT color=#008200&gt;//اگر پورت قبلا باز باشد آن را ببندد &lt;/FONT&gt;&lt;/CODE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line alt2&quot;&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=number&gt;&lt;CODE&gt;04&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class=content&gt;&lt;CODE class=&quot;csharp keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;if&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt; &lt;CODE class=&quot;csharp plain&quot;&gt;(ccom.IsOpen == &lt;/CODE&gt;&lt;CODE class=&quot;csharp keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;true&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt;&lt;CODE class=&quot;csharp plain&quot;&gt;) ccom.Close(); &lt;/CODE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line alt1&quot;&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=number&gt;&lt;CODE&gt;05&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class=content&gt;&lt;CODE class=&quot;csharp comments&quot;&gt;&lt;FONT color=#008200&gt;//مقدار دهی پارامتر ها &lt;/FONT&gt;&lt;/CODE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line alt2&quot;&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=number&gt;&lt;CODE&gt;06&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class=content&gt;&lt;CODE class=&quot;csharp plain&quot;&gt;ccom.BaudRate = 9600; &lt;/CODE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line alt1&quot;&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=number&gt;&lt;CODE&gt;07&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class=content&gt;&lt;CODE class=&quot;csharp plain&quot;&gt;ccom.DataBits = 8; &lt;/CODE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line alt2&quot;&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=number&gt;&lt;CODE&gt;08&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class=content&gt;&lt;CODE class=&quot;csharp plain&quot;&gt;ccom.Parity = (Parity)Enum.Parse(&lt;/CODE&gt;&lt;CODE class=&quot;csharp keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;typeof&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt;&lt;CODE class=&quot;csharp plain&quot;&gt;(Parity), &lt;/CODE&gt;&lt;CODE class=&quot;csharp string&quot;&gt;&lt;FONT color=#0000ff&gt;&quot;None&quot;&lt;/FONT&gt;&lt;/CODE&gt;&lt;CODE class=&quot;csharp plain&quot;&gt;); &lt;/CODE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line alt1&quot;&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=number&gt;&lt;CODE&gt;09&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class=content&gt;&lt;CODE class=&quot;csharp plain&quot;&gt;ccom.StopBits = (StopBits)Enum.Parse(&lt;/CODE&gt;&lt;CODE class=&quot;csharp keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;typeof&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt;&lt;CODE class=&quot;csharp plain&quot;&gt;(StopBits), &lt;/CODE&gt;&lt;CODE class=&quot;csharp string&quot;&gt;&lt;FONT color=#0000ff&gt;&quot;One&quot;&lt;/FONT&gt;&lt;/CODE&gt;&lt;CODE class=&quot;csharp plain&quot;&gt;); &lt;/CODE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line alt2&quot;&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=number&gt;&lt;CODE&gt;10&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class=content&gt;&lt;CODE class=&quot;csharp plain&quot;&gt;ccom.PortName = &lt;/CODE&gt;&lt;CODE class=&quot;csharp string&quot;&gt;&lt;FONT color=#0000ff&gt;&quot;COM1&quot;&lt;/FONT&gt;&lt;/CODE&gt;&lt;CODE class=&quot;csharp plain&quot;&gt;; &lt;/CODE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line alt1&quot;&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=number&gt;&lt;CODE&gt;11&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class=content&gt;&lt;CODE class=&quot;csharp comments&quot;&gt;&lt;FONT color=#008200&gt;//باز کردن پورت &lt;/FONT&gt;&lt;/CODE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line alt2&quot;&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=number&gt;&lt;CODE&gt;12&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class=content&gt;&lt;CODE class=&quot;csharp plain&quot;&gt;ccom.Open();&lt;/CODE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;/CODE&gt;&lt;BR&gt;&lt;FONT face=&quot;&quot;&gt;برای آگاهی از پورت های سریال در سیستم می توان از دستور GetPortNames() برای این منظور استفاده کرد.&lt;BR&gt;&lt;/FONT&gt;&lt;CODE style=&quot;DIRECTION: ltr&quot;&gt;&lt;/P&gt;
&lt;DIV id=highlighter_206082 class=&quot;syntaxhighlighter  csharp&quot;&gt;
&lt;DIV class=bar&gt;
&lt;DIV class=toolbar&gt; &lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV class=lines&gt;
&lt;DIV class=&quot;line alt1&quot;&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=number&gt;&lt;CODE&gt;1&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class=content&gt;&lt;CODE class=&quot;csharp keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;foreach&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt; &lt;CODE class=&quot;csharp plain&quot;&gt;(&lt;/CODE&gt;&lt;CODE class=&quot;csharp keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;string&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt; &lt;CODE class=&quot;csharp plain&quot;&gt;s &lt;/CODE&gt;&lt;CODE class=&quot;csharp keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;in&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt; &lt;CODE class=&quot;csharp plain&quot;&gt;SerialPort.GetPortNames()) &lt;/CODE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line alt2&quot;&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=number&gt;&lt;CODE&gt;2&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class=content&gt;&lt;CODE class=&quot;csharp plain&quot;&gt;Console.WriteLine(s);&lt;/CODE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;/CODE&gt;&lt;BR&gt;&lt;FONT face=&quot;&quot;&gt;برای انجام عمل فرستادن اطلاعات به پورت از دستور Write برای این منظور استفاده می کنیم. این دستور اطلاعات را به دو صورت Text و Byte ارسال می کند به نمونه مثال های زیر توجه کنید.&lt;BR&gt;&lt;/FONT&gt;&lt;CODE style=&quot;DIRECTION: ltr&quot;&gt;&lt;/P&gt;
&lt;DIV id=highlighter_491291 class=&quot;syntaxhighlighter  csharp&quot;&gt;
&lt;DIV class=bar&gt;
&lt;DIV class=toolbar&gt; &lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV class=lines&gt;
&lt;DIV class=&quot;line alt1&quot;&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=number&gt;&lt;CODE&gt;1&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class=content&gt;&lt;CODE class=&quot;csharp comments&quot;&gt;&lt;FONT color=#008200&gt;//ارسال به صورت Text &lt;/FONT&gt;&lt;/CODE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line alt2&quot;&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=number&gt;&lt;CODE&gt;2&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class=content&gt;&lt;CODE class=&quot;csharp keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;string&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt; &lt;CODE class=&quot;csharp plain&quot;&gt;msg = &lt;/CODE&gt;&lt;CODE class=&quot;csharp string&quot;&gt;&lt;FONT color=#0000ff&gt;&quot;Hello&quot;&lt;/FONT&gt;&lt;/CODE&gt;&lt;CODE class=&quot;csharp plain&quot;&gt;; &lt;/CODE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line alt1&quot;&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=number&gt;&lt;CODE&gt;3&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class=content&gt;&lt;CODE class=&quot;csharp plain&quot;&gt;ccom.Write(msg); &lt;/CODE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line alt2&quot;&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=number&gt;&lt;CODE&gt;4&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class=content&gt;&lt;CODE class=&quot;csharp comments&quot;&gt;&lt;FONT color=#008200&gt;//ارسال به صورت Byte &lt;/FONT&gt;&lt;/CODE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line alt1&quot;&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=number&gt;&lt;CODE&gt;5&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class=content&gt;&lt;CODE class=&quot;csharp plain&quot;&gt;ccom.Write(&lt;/CODE&gt;&lt;CODE class=&quot;csharp keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;new&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt; &lt;CODE class=&quot;csharp keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;byte&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt;&lt;CODE class=&quot;csharp plain&quot;&gt;[] { 0x0A, 0xE2, 0xFF }, 0, 3);&lt;/CODE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;/CODE&gt;&lt;BR&gt;&lt;FONT face=&quot;&quot;&gt;البته برای انتقال اطلاعات به صورت Byte بهتر است از روش پایین استفاده کنیم.یک تابع با نام HexToByte می نویسیم که مقدار را از Hex به Byte تبدیل می کند بعد از انجام عمل تبدیل آن را ارسال می کنیم.&lt;BR&gt;&lt;/FONT&gt;&lt;CODE style=&quot;DIRECTION: ltr&quot;&gt;&lt;/P&gt;
&lt;DIV id=highlighter_23144 class=&quot;syntaxhighlighter  csharp&quot;&gt;
&lt;DIV class=&quot;bar &quot;&gt; &lt;/DIV&gt;
&lt;DIV class=lines&gt;
&lt;DIV class=&quot;line alt1&quot;&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=number&gt;&lt;CODE&gt;01&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class=content&gt;&lt;CODE class=&quot;csharp keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;private&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt; &lt;CODE class=&quot;csharp keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;byte&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt;&lt;CODE class=&quot;csharp plain&quot;&gt;[] HexToByte(&lt;/CODE&gt;&lt;CODE class=&quot;csharp keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;string&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt; &lt;CODE class=&quot;csharp plain&quot;&gt;msg) &lt;/CODE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line alt2&quot;&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=number&gt;&lt;CODE&gt;02&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class=content&gt;&lt;CODE class=&quot;csharp plain&quot;&gt;{ &lt;/CODE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line alt1&quot;&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=number&gt;&lt;CODE&gt;03&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class=content&gt;&lt;CODE class=&quot;csharp plain&quot;&gt;msg = msg.Replace(&lt;/CODE&gt;&lt;CODE class=&quot;csharp string&quot;&gt;&lt;FONT color=#0000ff&gt;&quot; &quot;&lt;/FONT&gt;&lt;/CODE&gt;&lt;CODE class=&quot;csharp plain&quot;&gt;, &lt;/CODE&gt;&lt;CODE class=&quot;csharp string&quot;&gt;&lt;FONT color=#0000ff&gt;&quot;&quot;&lt;/FONT&gt;&lt;/CODE&gt;&lt;CODE class=&quot;csharp plain&quot;&gt;); &lt;/CODE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line alt2&quot;&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=number&gt;&lt;CODE&gt;04&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class=content&gt;&lt;CODE class=&quot;csharp keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;byte&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt;&lt;CODE class=&quot;csharp plain&quot;&gt;[] comBuffer = &lt;/CODE&gt;&lt;CODE class=&quot;csharp keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;new&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt; &lt;CODE class=&quot;csharp keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;byte&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt;&lt;CODE class=&quot;csharp plain&quot;&gt;[msg.Length / 2]; &lt;/CODE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line alt1&quot;&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=number&gt;&lt;CODE&gt;05&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class=content&gt;&lt;CODE class=&quot;csharp keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;for&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt; &lt;CODE class=&quot;csharp plain&quot;&gt;(&lt;/CODE&gt;&lt;CODE class=&quot;csharp keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;int&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt; &lt;CODE class=&quot;csharp plain&quot;&gt;i = 0; i &amp;lt; msg.Length; i += 2) &lt;/CODE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line alt2&quot;&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=number&gt;&lt;CODE&gt;06&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class=content&gt;&lt;CODE class=&quot;csharp plain&quot;&gt;comBuffer[i / 2] = (&lt;/CODE&gt;&lt;CODE class=&quot;csharp keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;byte&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt;&lt;CODE class=&quot;csharp plain&quot;&gt;)Convert.ToByte(msg.Substring(i, 2), 16); &lt;/CODE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line alt1&quot;&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=number&gt;&lt;CODE&gt;07&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class=content&gt;&lt;CODE class=&quot;csharp keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;return&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt; &lt;CODE class=&quot;csharp plain&quot;&gt;comBuffer; &lt;/CODE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line alt2&quot;&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=number&gt;&lt;CODE&gt;08&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class=content&gt;&lt;CODE class=&quot;csharp plain&quot;&gt;}&lt;/code&gt; &lt;/CODE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line alt1&quot;&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=number&gt;&lt;CODE&gt;09&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class=content&gt;&lt;CODE class=spaces&gt; &lt;/CODE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line alt2&quot;&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=number&gt;&lt;CODE&gt;10&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class=content&gt;&lt;CODE class=&quot;csharp plain&quot;&gt;&lt;code style=&lt;/CODE&gt;&lt;CODE class=&quot;csharp string&quot;&gt;&lt;FONT color=#0000ff&gt;&quot;direction: ltr;&quot;&lt;/FONT&gt;&lt;/CODE&gt;&lt;CODE class=&quot;csharp plain&quot;&gt;&gt; &lt;/code&gt; &lt;/CODE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line alt1&quot;&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=number&gt;&lt;CODE&gt;11&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class=content&gt;&lt;CODE class=spaces&gt; &lt;/CODE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line alt2&quot;&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=number&gt;&lt;CODE&gt;12&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class=content&gt;&lt;CODE class=&quot;csharp plain&quot;&gt;&lt;code style=&lt;/CODE&gt;&lt;CODE class=&quot;csharp string&quot;&gt;&lt;FONT color=#0000ff&gt;&quot;direction: ltr;&quot;&lt;/FONT&gt;&lt;/CODE&gt;&lt;CODE class=&quot;csharp plain&quot;&gt;&gt; &lt;/CODE&gt;&lt;CODE class=&quot;csharp keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;byte&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt;&lt;CODE class=&quot;csharp plain&quot;&gt;[] newmsg = HexToByte(msg); &lt;/CODE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line alt1&quot;&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=number&gt;&lt;CODE&gt;13&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class=content&gt;&lt;CODE class=&quot;csharp plain&quot;&gt;ccom.Write(newmsg, 0, newmsg.Length);&lt;/CODE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;/CODE&gt;&lt;BR&gt;&lt;FONT face=&quot;&quot;&gt;دراینجا برنامه ای را برای شما می گذارم که این برنامه درای یک کلاس با نام CommunicationManager.cs می باشد که شامل توابعی برای ارسال و دریافت اطلاعات از پورت سریال می باشد.این برنامه می تواند راهنمای خوبی برای شما باشد.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: right&quot;&gt;&lt;A href=&quot;http://pro-programming.com/wp-content/uploads/2011/07/image002.jpg&quot;&gt;&lt;FONT face=&quot;&quot;&gt;&lt;IMG class=&quot;aligncenter size-full wp-image-186&quot; title=image002 alt=&quot;&quot; src=&quot;http://pro-programming.com/wp-content/uploads/2011/07/image002.jpg&quot; width=471 height=250&gt;&lt;/FONT&gt;&lt;/A&gt;لینک دریافت فایل &lt;A href=&quot;../wp-content/uploads/2011/07/SerialPortCommunication.zip&quot;&gt;&lt;FONT color=#ff9d00&gt;SerialPortCommunication&lt;/FONT&gt;&lt;/A&gt;&lt;BR&gt;همانطور که می دانید از پورت سریال در ساخت واسط بین کامپیوتر و مدارات الکترونیکی کاربردی زیادی دارد که شاید دلیل آن سهولت کار با این پورت می باشد.&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; dir=ltr&gt;DB9 Male (Pin Side) DB9 Female (Pin Side)&lt;BR&gt;DB9 Female (Solder Side) DB9 Male (Solder Side)&lt;BR&gt;————- ————-&lt;BR&gt;\ 1 2 3 4 5 /     \ ۵ ۴ ۳ ۲ ۱ /&lt;BR&gt;\ ۶ ۷ ۸ ۹ /       \ ۹ ۸ ۷ ۶ /&lt;BR&gt;——— ———&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot;&gt;DB9 Female to DB9 Female Null-Modem Wiring&lt;BR&gt;2 | 3 | 7 | 8 | 6&amp;1| 5 | 4&lt;BR&gt;—- —- —- —- —- —- —-&lt;BR&gt;3 | 2 | 8 | 7 | 4 | 5 | 6&amp;1&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot;&gt;9-pin 25-pin Assignment From PC&lt;BR&gt;—— —— ————————- ————&lt;BR&gt;Shield 1 Case Ground Gnd&lt;BR&gt;1 8 DCD (Data Carrier Detect) Input&lt;BR&gt;2 3 RX (Receive Data) Input&lt;BR&gt;3 2 TX (Transmit Data) Output&lt;BR&gt;4 20 DTR (Data Terminal Ready) Output&lt;BR&gt;5 7 GND (Signal Ground) Gnd&lt;BR&gt;6 6 DSR (Data Set Ready) Input&lt;BR&gt;7 4 RTS (Request To Send) Output&lt;BR&gt;8 5 CTS (Clear To Send) Input&lt;BR&gt;9 22 RI (Ring Indicator) Input&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: right&quot;&gt;نحوه ارتباط به این صورت خواهد بود که پین RX کامپیوتر به پین TX مدار پین RX مدار به پین TX کامپیوتر وصل خواهد شد.&lt;BR&gt;برای اطلاعات بیشتر می توانید به این آدرس مراجعه کنید.&lt;/P&gt;
&lt;P&gt;http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx&lt;/P&gt;</description>
<pubDate>Fri, 17 Feb 2012 16:53:26 GMT</pubDate>
<dc:creator>hadiranji2</dc:creator>
<guid>http://hadiranji2.blogfa.com/post-216.aspx</guid>
</item>
<item>
<title>addon domain در plesk</title>
<link>http://hadiranji2.blogfa.com/post-215.aspx</link>
<description>cpanel یک امکانی داره به نام addon domain که این امکان رو به شما میده که با یک اکانت هاستینگ چند تا هاست جداگانه راه بیاندازید. اخیرا به دلیل تحریم cpanel خیلی از هاست های ایرانی (از جمله ما) سوئیچ کردند به plesk که این امکان رو نداره. و باعث شده مشتری ها شاکی بشن.&lt;/P&gt;
&lt;P&gt;برای رفع این معضل یک راه سرخ پوستی پیدا کردم با استفاده از htaccess و ماژول mod_rewrite :&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;دامنه مورد نظر (مثلا addon.com) رو پارک می کنید روی هاست (توی plesk به جای پارک میگن domain alias)&lt;/LI&gt;
&lt;LI&gt;یک شاخه با نام addon.com توی فولدر httpdocs می سازید.&lt;/LI&gt;
&lt;LI&gt;یک فایل .htaccess در شاخه httpdocs با محتوای زیر ایجاد میکنید:&lt;/LI&gt;&lt;/OL&gt;
&lt;DIV dir=ltr class=code align=left&gt;&lt;PRE style=&quot;FONT-FAMILY: monospace&quot; class=&quot;apache apache&quot;&gt;&lt;SPAN style=&quot;FONT-STYLE: italic; COLOR: #adadad&quot;&gt;# addon.com addon domain.&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #00007f&quot;&gt;RewriteEngine&lt;/SPAN&gt; &lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;on&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #00007f&quot;&gt;RewriteCond&lt;/SPAN&gt; %{HTTP_HOST} ^addon\.com [OR]
&lt;SPAN style=&quot;COLOR: #00007f&quot;&gt;RewriteCond&lt;/SPAN&gt; %{HTTP_HOST} ^www\.addon\.com
&lt;SPAN style=&quot;COLOR: #00007f&quot;&gt;RewriteCond&lt;/SPAN&gt; %{REQUEST_URI} !^/addon\.com/
&lt;SPAN style=&quot;COLOR: #00007f&quot;&gt;RewriteRule&lt;/SPAN&gt; ^(.*) /addon.com/$&lt;SPAN style=&quot;COLOR: #ff0000&quot;&gt;1&lt;/SPAN&gt; [L]&lt;/PRE&gt;&lt;/DIV&gt;</description>
<pubDate>Sun, 05 Feb 2012 18:42:40 GMT</pubDate>
<dc:creator>hadiranji2</dc:creator>
<guid>http://hadiranji2.blogfa.com/post-215.aspx</guid>
</item>
<item>
<title>استیو جابز هم رفت!</title>
<link>http://hadiranji2.blogfa.com/post-214.aspx</link>
<description> 
&lt;DIV id=InPost_MihanblogShopAds style=&quot;BORDER-TOP-WIDTH: 0px; DISPLAY: block; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; WIDTH: 100%; HEIGHT: 0px; BORDER-RIGHT-WIDTH: 0px&quot;&gt;&lt;/DIV&gt;
&lt;DIV style=&quot;TEXT-ALIGN: justify&quot;&gt;&lt;A title=&quot;&quot; style=&quot;FONT-WEIGHT: bold; COLOR: rgb(51,51,255)&quot; href=&quot;http://en.wikipedia.org/wiki/Steven_Jobs&quot; target=_blank&gt;استیون پل جابر&lt;/A&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;COLOR: rgb(51,51,255)&quot;&gt; &lt;/SPAN&gt;ملقب به استیو جابز مدیر ارشد اجرایی و یکی از بنیانگذاران اپل در 5 اکتبر 2011 (14 مهرماه 1390) به دلیل بیماری سرطان در سن 56 سالگی درگذشت. &lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;البته مدت ها بود اینجا چیزی ننوشته بودم اما مشاهده &lt;A title=&quot;&quot; style=&quot;COLOR: rgb(51,51,255)&quot; href=&quot;http://www.apple.com/&quot; target=_blank&gt;وب‌سایت اپل&lt;/A&gt; با عکس استیو جابز و تاریخ تولد و درگشت ایشان چیزی نبود که بتوان به راحتی از کنارش گذشت! 136 امین پولدار جهان که البته بسیار ساده زندگی می کرد و در همه کنفرانس‌هایش ساده ظاهر می شود. و شاید همین سادگی اش بود که &lt;A title=&quot;&quot; style=&quot;COLOR: rgb(51,51,255)&quot; href=&quot;http://www.apple.com/stevejobs/&quot; target=_blank&gt;وب‌سایت اپل نیز بسیار ساده خبر درگذشت و تصویر&lt;/A&gt; این نابغه بزرگ را به نمایش گذاشت. &lt;BR&gt;&lt;BR&gt;
&lt;DIV style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;A title=&quot;&quot; href=&quot;http://course.persiangig.com/image/Steven%20Jobs.jpg&quot; target=_blank&gt;&lt;IMG style=&quot;WIDTH: 469px; HEIGHT: 335px&quot; alt=&quot;&quot; hspace=0 src=&quot;http://course.persiangig.com/image/Steven%20Jobs.jpg&quot; align=bottom border=0&gt;&lt;/A&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;DIV style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;FONT size=1&gt;برای مشاهده تصویر در سایز بزرگ‌تر بر روی آن کلیک کنید.&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;BR&gt;درگذشت این بزرگ‌مرد تاریخ معاصر تکنولوژی و فناوری را خدمت همه دوستداران تکنولوژی و مخصوصا اپل داران، تسلیت می گم. &lt;BR&gt;قطعا یاد ایشان برای همیشه در ذهن ها خواهد بود.&lt;BR&gt;ضمنا وبلاگی شامل زندگی‌نامه، عکس‌ها و ... از زندگی ایشان تهیه شده است (به زبان انگلیسی) که از &lt;A title=&quot;&quot; style=&quot;COLOR: rgb(51,51,255)&quot; href=&quot;http://allaboutstevejobs.com/index.html&quot; target=_blank&gt;این آدرس&lt;/A&gt; می‌توانید ببینید.&lt;/DIV&gt;
&lt;DIV style=&quot;TEXT-ALIGN: justify&quot;&gt; &lt;/DIV&gt;
&lt;P style=&quot;TEXT-ALIGN: justify&quot; align=center&gt;&lt;IMG style=&quot;WIDTH: 400px; HEIGHT: 252px&quot; alt=&quot;Steve Jobs  - استیو جابز&quot; hspace=0 src=&quot;http://sites.google.com/site/shirazi/stevejobs.jpg&quot; align=baseline border=0&gt;&lt;/P&gt;</description>
<pubDate>Wed, 14 Dec 2011 00:52:59 GMT</pubDate>
<dc:creator>hadiranji2</dc:creator>
<guid>http://hadiranji2.blogfa.com/post-214.aspx</guid>
</item>
<item>
<title>آخرین رکورد بازبینی شده </title>
<link>http://hadiranji2.blogfa.com/post-213.aspx</link>
<description>&lt;DIV style=&quot;DIRECTION: rtl; TEXT-ALIGN: right&quot;&gt;&lt;SPAN style=&quot;COLOR: rgb(0,0,102)&quot;&gt;فرض کنید رکوردی رو در دیتابیس ذخیره کردید و یا رکورد موجودی رو ویرایش کردید و می خواهید آخرین رکوردی که اصطلاحا مورد بازبینی قرار گرفته را در اختیار داشته باشید&lt;/SPAN&gt;&lt;BR style=&quot;COLOR: rgb(0,0,102)&quot;&gt;&lt;BR style=&quot;COLOR: rgb(0,0,102)&quot;&gt;&lt;SPAN style=&quot;COLOR: rgb(0,0,102)&quot;&gt;فرض کنید بدین منظور ستونی در جدول مورد نظر قرار داده ایم و با هر تغییر در رکورد مقدار آنرا نیز تعویض کرده تا بدین ترتیب متوجه رکورد تغییر یافته شویم که در این مثال و در جدول Person ستونی با نام Revision ایجاد شده است&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style=&quot;DIRECTION: ltr; TEXT-ALIGN: right&quot;&gt;&lt;BR style=&quot;COLOR: rgb(0,0,102)&quot;&gt;
&lt;DIV style=&quot;DIRECTION: rtl; TEXT-ALIGN: right&quot;&gt;&lt;SPAN style=&quot;COLOR: rgb(0,0,102)&quot;&gt;بنابراین کوئری Linq متناسب با این سناریو به صورت زیر خواهد بود&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;BR&gt;
&lt;DIV style=&quot;TEXT-ALIGN: left&quot;&gt;
&lt;DIV style=&quot;BORDER-RIGHT: rgb(0,0,128) 1px solid; BORDER-TOP: rgb(0,0,128) 1px solid; FONT-SIZE: 10pt; BORDER-LEFT: rgb(0,0,128) 1px solid; COLOR: rgb(0,0,0); BORDER-BOTTOM: rgb(0,0,128) 1px solid; FONT-FAMILY: &apos;Courier New&apos;,Courier,Monospace&quot;&gt;
&lt;DIV style=&quot;BACKGROUND: rgb(255,255,255); OVERFLOW: auto&quot;&gt;
&lt;OL style=&quot;PADDING-RIGHT: 0pt; PADDING-LEFT: 5px; BACKGROUND: rgb(255,255,255); PADDING-BOTTOM: 0pt; MARGIN: 0pt; PADDING-TOP: 0pt&quot; start=20&gt;
&lt;LI&gt;&lt;SPAN style=&quot;COLOR: rgb(0,0,255)&quot;&gt;public&lt;/SPAN&gt; IEnumerable&lt;PERSON&gt; GetPersons() 
&lt;LI style=&quot;BACKGROUND: rgb(243,243,243)&quot;&gt;        { 
&lt;LI&gt;            &lt;SPAN style=&quot;COLOR: rgb(0,0,255)&quot;&gt;return&lt;/SPAN&gt; &lt;SPAN style=&quot;COLOR: rgb(0,0,255)&quot;&gt;from&lt;/SPAN&gt; person &lt;SPAN style=&quot;COLOR: rgb(0,0,255)&quot;&gt;in&lt;/SPAN&gt; Person.All() 
&lt;LI style=&quot;BACKGROUND: rgb(243,243,243)&quot;&gt;                   &lt;SPAN style=&quot;COLOR: rgb(0,0,255)&quot;&gt;group&lt;/SPAN&gt; person &lt;SPAN style=&quot;COLOR: rgb(0,0,255)&quot;&gt;by&lt;/SPAN&gt; person.Id 
&lt;LI&gt;                   &lt;SPAN style=&quot;COLOR: rgb(0,0,255)&quot;&gt;into&lt;/SPAN&gt; personGroup 
&lt;LI style=&quot;BACKGROUND: rgb(243,243,243)&quot;&gt;                   &lt;SPAN style=&quot;COLOR: rgb(0,0,255)&quot;&gt;from&lt;/SPAN&gt; entity &lt;SPAN style=&quot;COLOR: rgb(0,0,255)&quot;&gt;in&lt;/SPAN&gt; personGroup 
&lt;LI&gt;                   &lt;SPAN style=&quot;COLOR: rgb(0,0,255)&quot;&gt;where&lt;/SPAN&gt; entity.Revision == personGroup.Max(x =&gt; x.Revision) 
&lt;LI style=&quot;BACKGROUND: rgb(243,243,243)&quot;&gt;                   &lt;SPAN style=&quot;COLOR: rgb(0,0,255)&quot;&gt;select&lt;/SPAN&gt; entity; 
&lt;LI&gt;        }&lt;/LI&gt;&lt;/OL&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
<pubDate>Sat, 10 Dec 2011 23:26:00 GMT</pubDate>
<dc:creator>hadiranji2</dc:creator>
<guid>http://hadiranji2.blogfa.com/post-213.aspx</guid>
</item>
<item>
<title>مشکل نصب SQL Server 2005</title>
<link>http://hadiranji2.blogfa.com/post-212.aspx</link>
<description>&lt;P align=justify&gt;&lt;SPAN lang=fa&gt;در بسیاری از موارد، پس از نصب این برنامه مشاهده نمودم که ابزارهای سمت کلاینت (&lt;/SPAN&gt;&lt;SPAN lang=en-us&gt;Client Tools&lt;/SPAN&gt;&lt;SPAN lang=fa&gt;) از قبیل Sql Server Management Studio&lt;/SPAN&gt;&lt;SPAN lang=en-us&gt; &lt;/SPAN&gt;&lt;SPAN lang=fa&gt;و &lt;/SPAN&gt;&lt;SPAN lang=en-us&gt;Documentations&lt;/SPAN&gt;&lt;SPAN lang=fa&gt; و غیره نصب نشده اند&lt;/SPAN&gt;&lt;SPAN lang=en-us&gt;. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=justify&gt;&lt;SPAN lang=fa&gt;در ابتدا تصور می کردم که هنگام نصب این برنامه بی دقتی کرده ام ولی با تکرار این موضوع متوجه شدم که اشکالی در کار وجود دارد.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=justify&gt;&lt;SPAN lang=fa&gt;جالب اینجا بود که هنگامی که &lt;/SPAN&gt;&lt;SPAN lang=en-us&gt;DVD&lt;/SPAN&gt;&lt;SPAN lang=fa&gt; این برنامه را مجددا اجرا می کردم و قصد داشتم که مواردی را که نصب نشده بود نصب کنم، برنامه به من اعلام می کرد که تمامی موارد نصب شده اند! در حالی که این موضوع صحت نداشت.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=justify&gt;&lt;SPAN lang=fa&gt;و برنامه اجازه ی نصب مجدد این کامپوننت ها را هم نمی داد. و تنها راه باقی مانده ، حذف کردن این نرم افزار و نصب مجدد آن بود که باز هم نمی توانستم مطمئن باشم که مشکل تکرار نخواهد شد.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;IMG border=0 src=&quot;http://30sharp.com/Contents/159/Sql1.gif&quot; width=486 height=442&gt;&lt;/P&gt;
&lt;P align=right&gt;&lt;SPAN lang=fa&gt;تا اینکه سرانجام به سراغ گوگل رفتم و به جستجوی علت این موضوع پرداختم.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=right&gt;&lt;SPAN lang=fa&gt;در ابتدای جستجو متوجه شدم که این مشکل برای عده زیادی از افراد به وجود آمده و مختص من نیست. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=right&gt;&lt;SPAN lang=fa&gt;پس از طی چند دقیقه متوجه شدم که این مشکل معمولا برای افرادی به وجود آمده که ابتدا برنامه &lt;/SPAN&gt;&lt;SPAN lang=en-us&gt;Visual Studio&lt;/SPAN&gt;&lt;SPAN lang=fa&gt; را نصب نموده اند و سپس به سراغ نصب برنامه &lt;/SPAN&gt;&lt;SPAN lang=en-us&gt;SQL Server 2005 &lt;/SPAN&gt;&lt;SPAN lang=fa&gt;رفته اند.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=right&gt;&lt;SPAN lang=fa&gt;سرانجام به نتایج زیر رسیدم.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=right&gt;&lt;SPAN lang=fa&gt;پس از نصب برنامه &lt;/SPAN&gt;&lt;SPAN lang=en-us&gt;Visual Studio&lt;/SPAN&gt;&lt;SPAN lang=fa&gt; اگر شما نصب گزینه SQLExpress را نیز انتخاب کرده باشید، این برنامه یک پوشه به نام &lt;/SPAN&gt;&lt;SPAN lang=en-us&gt;Tools&lt;/SPAN&gt;&lt;SPAN lang=fa&gt; در مسیر زیر ایجاد خواهد نمود. (در این مقاله من فرض کرده ام که برنامه را در درایو &lt;/SPAN&gt;&lt;SPAN lang=en-us&gt;C&lt;/SPAN&gt;&lt;SPAN lang=fa&gt; نصب نموده اید)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=justify&gt;&lt;/P&gt;
&lt;DIV class=tbCode&gt;&lt;B&gt;C:\Program Files\Microsoft SQL Server\90 &lt;/B&gt;&lt;/DIV&gt;
&lt;P align=justify&gt;&lt;/P&gt;
&lt;P align=right&gt;&lt;SPAN lang=fa&gt;سپس هنگام نصب نرم افزار &lt;/SPAN&gt;&lt;SPAN lang=en-us&gt;SQL Server 2005&lt;/SPAN&gt;&lt;SPAN lang=fa&gt; ، فایل &lt;/SPAN&gt;&lt;SPAN lang=en-us&gt;Setup&lt;/SPAN&gt;&lt;SPAN lang=fa&gt; وقتی متوجه می شود که پوشه &lt;/SPAN&gt;&lt;SPAN lang=en-us&gt;tools&lt;/SPAN&gt;&lt;SPAN lang=fa&gt; در این مسیر وجود دارد، فرض را بر این می گذارد که ابزارهای سمت کلاینت از قبیل Sql Server Management Studio نصب شده اند و دیگر این ابزار ها را نصب نمی کند! &lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=right&gt;&lt;SPAN lang=fa&gt;البته باید ذکر کنم که شاید این مشکل مربوط به نسخه ای که من نصب می کنم باشد و در نسخه های جدید تر، این مشکل را مایکروسافت رفع نموده باشد.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=right&gt;&lt;SPAN lang=fa&gt;لذا راه حل زیر جهت رفع این مشکل پیشنهاد می شود.&lt;/SPAN&gt;&lt;/P&gt;
&lt;H1 align=right&gt;&lt;SPAN lang=fa&gt;مشکل:&lt;/SPAN&gt;&lt;/H1&gt;
&lt;P align=right&gt;&lt;SPAN lang=fa&gt;پس از نصب نرم افزار &lt;/SPAN&gt;&lt;SPAN lang=en-us&gt;SQL Server 2005&lt;/SPAN&gt;&lt;SPAN lang=fa&gt; متوجه شده اید که ابزارهای سمت کلاینت از قبیل Sql Server Management Studio نصب نشده اند.&lt;/SPAN&gt;&lt;/P&gt;
&lt;H1 align=right&gt;&lt;SPAN lang=fa&gt;راه حل : &lt;/SPAN&gt;&lt;/H1&gt;
&lt;P align=right&gt;&lt;SPAN lang=fa&gt;معمولا داخل فولدر نسخه مورد نظر برنامه در &lt;/SPAN&gt;&lt;SPAN lang=en-us&gt;DVD &lt;/SPAN&gt;&lt;SPAN lang=fa&gt;یا &lt;/SPAN&gt;&lt;SPAN lang=en-us&gt;CD&lt;/SPAN&gt;&lt;SPAN lang=fa&gt; شما (من نسخه  &lt;/SPAN&gt;&lt;SPAN lang=en-us&gt;SQL Server 2005&lt;/SPAN&gt;&lt;SPAN lang=fa&gt; &lt;/SPAN&gt;&lt;SPAN lang=en-us&gt;Developer Edition&lt;/SPAN&gt;&lt;SPAN lang=fa&gt; را استفاده می کنم) دو فولدر به نام های Servers و Tools&lt;/SPAN&gt;&lt;SPAN lang=en-us&gt; &lt;/SPAN&gt;&lt;SPAN lang=fa&gt;وجود دارند. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=right&gt;&lt;SPAN lang=fa&gt;داخل پوشه Servers فایل های مروبط به نصب برنامه وجود دارد ولی ما با پوشه &lt;/SPAN&gt;&lt;SPAN lang=en-us&gt;Tools&lt;/SPAN&gt;&lt;SPAN lang=fa&gt; کار داریم.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=right&gt;&lt;SPAN lang=fa&gt;به داخل فولدر های زیر رفته و فایل&lt;B&gt;&lt;FONT color=#0000ff&gt; SqlRun_Tools.msi&lt;/FONT&gt;&lt;/B&gt;&lt;/SPAN&gt; &lt;SPAN lang=fa&gt;را اجرا نمایید.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=justify&gt;&lt;/P&gt;
&lt;DIV class=tbCode&gt;&lt;B&gt;Tools&lt;SPAN lang=en-us&gt;\&lt;/SPAN&gt;Setup&lt;SPAN lang=en-us&gt;\&lt;/SPAN&gt;&lt;/B&gt;&lt;/DIV&gt;
&lt;P align=justify&gt;&lt;/P&gt;
&lt;P align=right&gt;&lt;SPAN lang=fa&gt;پس از جرای این فایل پس از چند لحظه با دیالوگ زیر مواجه خواهید شد.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;IMG border=0 src=&quot;http://30sharp.com/Contents/159/sql2.png&quot; width=484 height=445&gt;&lt;/P&gt;
&lt;P align=right&gt;&lt;SPAN lang=fa&gt;گزینه &lt;/SPAN&gt;&lt;SPAN lang=en-us&gt;Change Installed Components &lt;/SPAN&gt;&lt;SPAN lang=fa&gt;را انتخاب نموده و با خیال راحت به نصب موارد ناقض &lt;/SPAN&gt;&lt;SPAN lang=en-us&gt;SQL Server 2005&lt;/SPAN&gt;&lt;SPAN lang=fa&gt; بپردازید. &lt;/SPAN&gt;&lt;/P&gt;</description>
<pubDate>Wed, 26 Oct 2011 23:04:00 GMT</pubDate>
<dc:creator>hadiranji2</dc:creator>
<guid>http://hadiranji2.blogfa.com/post-212.aspx</guid>
</item>
<item>
<title>سمینار درگاه پرداخت آنلاین</title>
<link>http://hadiranji2.blogfa.com/post-211.aspx</link>
<description>&lt;P dir=rtl align=center&gt;&lt;FONT size=4&gt;&lt;IMG border=0 hspace=0 alt=&quot;&quot; align=baseline src=&quot;http://www.tain.com/wp-content/uploads/2010/07/credit_card-01.jpg&quot;&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir=rtl align=center&gt;&lt;FONT size=4&gt;سمینار معرفی درگاههای پرداخت اینترنتی&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir=rtl align=center&gt;مورخه : ۰۲/۰۸/۹۰&lt;/P&gt;
&lt;P dir=rtl align=center&gt;·      آشنائی با نحوه عملکرد درگاه&lt;/P&gt;
&lt;P dir=rtl align=center&gt;·      بررسی عملکرد تخصصی و فنی درگاه&lt;/P&gt;
&lt;P dir=rtl align=center&gt;·      بررسی مفاهیم پایه ای انتقال اطلاعات و امنیت درگاه&lt;/P&gt;
&lt;P dir=rtl align=center&gt;·      ارائه نمونه کدهای برنامه نویسی درگاه&lt;/P&gt;
&lt;P dir=rtl align=center&gt;
&lt;P dir=rtl align=center&gt; &lt;/P&gt;
&lt;P align=center&gt;&lt;A href=&quot;http://hadiranji.persiangig.com/slide/OnlinePayment_Slide.pdf&quot;&gt;دانلود نسخهpdf سمینار online payment gate&lt;/A&gt;&lt;/P&gt;</description>
<pubDate>Wed, 12 Oct 2011 22:24:00 GMT</pubDate>
<dc:creator>hadiranji2</dc:creator>
<guid>http://hadiranji2.blogfa.com/post-211.aspx</guid>
</item>
<item>
<title>تفاوت متد های get و post </title>
<link>http://hadiranji2.blogfa.com/post-210.aspx</link>
<description> method ، روش استفاده شده به منظور ارسال داده در پروتکل HTTP را مشخص می نمايد . به منظور ارسال داده از روش های متفاوتی استفاده می گردد . روش های GET و POST دو نمونه متدوال در اين زمينه میباشند. &lt;/P&gt;
&lt;P&gt;متد GET : در اين روش داده موجود بر روی يک فرم که قرار است برای سرويس دهنده ارسال شود ، به انتهای URL و به شکل &quot; نام / مقدار&quot; ، اضافه می گردد. متد GET، گزينه پيش فرض در خصوص نحوه ارسال اطلاعات يک فرم می باشد . &lt;/P&gt;
&lt;P&gt;در روش GET، پارامترها را به کمک query string که مستقيما در انتهاي URL اضافه شده اند، به سرور مي فرستيم.&lt;BR&gt;query string به قطعه متني که پس از علامت &quot;?&quot; آمده باشد ميگويند. &lt;/P&gt;
&lt;P&gt;sitename =4sou? &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;اولين بخش از زوج &quot;نام / مقدار&quot; ، نشاندهنده &quot;نام&quot; و دومين بخش مقدار مورد نظر به منظور ذخيره سازی را نشان می دهد. نام و مقدار متناظر با آن به صورت اتوماتيک از يک عنصر موجود بر روی فرم نظير يک textbox ويا checkbox ، اخذ می گردند. نام کنترل استفاده شده بر روی فرم ، نام استفاده شده در متد GET بوده و محتوياتی را که کاربر در کنترل مورد نظر درج و يا انتخاب می نمايد، مقدار موردنظر را مشخص می نمايد . در مثال فوق ، &apos;sitename&apos; ، نام مورد نظر بوده و &apos;4sou&apos; ، مقدار مرتبط با آن است . مرورگر در زمان ارسال صفحه برای سرويس دهنده ، اطلاعات فوق را به صورت اتوماتيک به URL اضافه می نمايد: &lt;/P&gt;
&lt;P&gt;&lt;A href=&quot;http://www.4sou.ir/testpage.aspx?sitename&quot;&gt;http://www.4sou.ir/testpage.aspx?sitename&lt;/A&gt; =4sou &lt;/P&gt;
&lt;P&gt;امکان استفاده بيش از يک زوج نام /مقدار بهمراه يک URL وجود خواهد داشت . در چنين مواردی هر زوج توسط علامت &quot;&amp;&quot; ( ampersand ) ، از يکديگر جدا می گردند . &lt;/P&gt;
&lt;P&gt;&lt;A href=&quot;http://www.4sou.ir/testpage.aspx?sitename&quot;&gt;http://www.4sou.ir/testpage.aspx?sitename&lt;/A&gt; =4sou&amp;webmaster=TEST&lt;/P&gt;
&lt;P&gt;بخش اضافه شده به URL را query string می گويند . GET تنها روش موجود به منظور ارسال داده بين سرويس گيرنده و سرويس دهنده نمی باشد و در اين رابطه از متد POST نيز استفاده می گردد. &lt;/P&gt;
&lt;P&gt;متد POST : يکی از معايب ارسال داده با استفاده از query string ، به ماهيت ارسال اطلاعات برمی گردد . درصورتی که ضرورتی و يا علاقه ای به نمايش داده ارسالی در آدرس URL را نداشته باشيم، می توان از متد POST استفاده نمود . عملکرد روش فوق تا اندازه ای شبيه متد GET بوده و تنها تفاوت اساسی بين آنان به ارسال داده در بدنه HTTP Request برمی گردد ( نه به عنوان بخشی همراه URL ) . سياست فوق ، ايمنی بسيار بالائی را نسبت به متد GET ارائه نمی نمايد و ما صرفا&quot; داده ارسالی را در URL مشاهده نمی نمائيم . متد POST ، همچنين امکان ارسال حجم بيشتری از اطلاعات را فراهم می نمايد. برخی از سرويس دهندگان وب دارای محدوديت حجم متن ارسالی همراه يک URL می باشند. متد POST ، دارای چنين محدوديتی نمی باشد. &lt;BR&gt;&lt;/P&gt;</description>
<pubDate>Wed, 28 Sep 2011 20:53:05 GMT</pubDate>
<dc:creator>hadiranji2</dc:creator>
<guid>http://hadiranji2.blogfa.com/post-210.aspx</guid>
</item>
<item>
<title>امنیت فایل های اجرایی NET.</title>
<link>http://hadiranji2.blogfa.com/post-209.aspx</link>
<description>Reflector نام نرم افزاری است که توسط آن می توانید برنامه های نوشته شده به زبان های NET. (ویژوال بیسیک ، #C ، …) را Decompile کنید . به طور کلی برنامه های نوشته شده به زبان دات نت پس از کامپایل به کد هایی به نام IL تبدیل می شن . از این رو توسط ابزار های خاصی مانند Reflector ، Fox ، Dis sharp میشه فایل های اجرایی ایجاد شده رو Decompile کرد . به عبارت ساده تر تا حدود %70 به کد اولیه برنامه دسترسی پیدا کرد . در واقع میشه گفت این قضیه معنای کد اجرایی (exe) رو تا حدودی نقض می کنه . برای روشن تر شدن موضوع یک مثال مطرح می کنم :
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;کد زیر رو در نظر بگیرید . کد رو به زبان #C ودر محیط Visual Studio می نویسیم .&lt;/P&gt;
&lt;P dir=ltr&gt;        private void Form1_Load(object sender, EventArgs e)&lt;BR&gt;        {&lt;BR&gt;            int a, b;&lt;BR&gt;            int c = 0;&lt;BR&gt;            string outx = &quot;&quot;;&lt;BR&gt;            a = 8;&lt;BR&gt;            b = 4;&lt;BR&gt;            c = a + b;&lt;BR&gt;            outx = Convert.ToString(c);&lt;BR&gt;            MessageBox.Show(outx);&lt;BR&gt;        }&lt;/P&gt;
&lt;P&gt;پس از کامپایل کد و تبدیل به فایل اجرایی اون رو توسط نرم افزار رفلکتور ، DeCompile می کنیم و نتایج رو مشاهده می کنیم :&lt;/P&gt;
&lt;P dir=ltr&gt;private void Form1_Load(object sender, EventArgs e)&lt;BR&gt;{&lt;BR&gt;    int num3 = 0;&lt;BR&gt;    int num = 8;&lt;BR&gt;    int num2 = 4;&lt;BR&gt;    num3 = num + num2;&lt;BR&gt;    MessageBox.Show(Convert.ToString(num3));&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;همونطور که مشاهده می کنید تنها شکل ظاهری کد ها تغییر کرد . برای مثال ما در کد اصلی برای تبدیل مقدار int به string از یک متغیر کمکی استفاده کردیم در صورتی که کد Decompile شده به صورت خلاصه تری در اومده.&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;--------------------------------------------------------------------------------&lt;/P&gt;
&lt;P&gt;و اما راه حل جلوگیری از این مشکل چیه ؟&lt;BR&gt;توصیه من استفاده از نرم افزاری به نام Smart Assembly هست . با استفاده از این obfuscator قدرتمند می تونید تا مقدار زیادی کدتون رو مبهم کنید . به طوری که حتی در مواردی Decompile کردن اون هم کاری غیر ممکن خواهد بود .&lt;/P&gt;
&lt;P&gt;نتایج مبهم کردن فایل اجرایی توسط نرم افزار Smart Assembly به شرح زیر است :&lt;/P&gt;
&lt;P&gt;——– اطلاعات دریافت شده توسط نرم افزار رفلکتور : Module contains unkown meta-data stream&lt;BR&gt;——– حجم فایل اجرایی قبل از عملیات مبهم سازی : 8 کیلوبایت&lt;BR&gt;——– حجم فایل اجرایی بعد از انجام عملیات مبهم سازی : 132 کیلوبایت&lt;BR&gt;&lt;/P&gt;</description>
<pubDate>Tue, 27 Sep 2011 11:41:00 GMT</pubDate>
<dc:creator>hadiranji2</dc:creator>
<guid>http://hadiranji2.blogfa.com/post-209.aspx</guid>
</item>
<item>
<title>نکاتی که در برنامه نویسی باید/میتوانند رعایت شوند</title>
<link>http://hadiranji2.blogfa.com/post-208.aspx</link>
<description>
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;توضیح بنویسید : &lt;/STRONG&gt;برای تمامی قسمت های برنامه توضیحات مختصر و 
مفید بنویسید در غیر اینصورت مطمئن باشید حتماً یک روزی برای فهمیدن عملکرد دستور 
ساده ای مثل i=i+2  در یک کد قدیمی ، ساعت ها وقت صرف خواهید کرد .(1700 خط کد 
و دریغ از یک کلمه توضیح ! باورتون میشه ؟!) 
&lt;LI&gt;&lt;STRONG&gt;پیغام های مرتبط نمایش دهید : &lt;/STRONG&gt;جان عزیزتان برای هر خطای کوچک 
و بزرگی که ممکنه در برنامه رخ بده یک پیغام صادر نکنید . واقعاً وحشتانکه برای” 
&lt;EM&gt;وقتی که سرور پیدا نمیشه ، وقتی که سرور پیدا شده ولی جوابی صادر نمیشه و 
زمانیکه جواب صادر شده اما جواب صحیح نیست” &lt;/EM&gt;؛ یک پیغام مشابه صادر کنید و 
بگویید : “عملیات انجام نشد” !! یا حداقل اگر توجیه امنیتی برای اینکار دارید نکته 
1 یعنی نوشتن توضیحات مرتبط رو حتماً رعایت کنید . 
&lt;LI&gt;&lt;STRONG&gt;از روش های سنتی دست بردارید : &lt;/STRONG&gt;شی گرایی چندین سال است که 
مطرح شده ، امیدوارم محض رضای خدا هم که شده افتخار بدهید ، روش های قدیمی را دور 
بریزید و کمی مدرن کد بنویسید. 
&lt;LI&gt;&lt;STRONG&gt;کدهایی با اهداف متفاوت را در فایل های جداگانه بنویسید.&lt;BR&gt;&lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;به جای استفاده از 10 تا متغیر زبان بسته ی هم نوع ، از آرایه استفاده 
کنید |:&lt;BR&gt;&lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;در زمان کار با رشته ها در خوشبینانه ترین حالت هم از توابع حذف فضاهای 
خالی ابتدا و انتهای رشته استفاده کنید (Trim).&lt;/STRONG&gt; 
&lt;LI&gt;&lt;STRONG&gt;یادداشت برداری کنید : &lt;/STRONG&gt;خیلی وقت ها کامپایلر دقیقاً به ما نمی 
گوید اشکال از کجاست ، بد نیست خطاهایی که کم و بیش با اونها برخورد می کنید رو با 
ذکر دلیل و شرایط وقوع یادداشت کنید. 
&lt;LI&gt;&lt;STRONG&gt;و در آخر : حتماً حداقل یک نسخه از پروژه ای که مشغول انجامش هستید رو 
در جایی دیگر به عنوان پشتیبان نگهداری کنید و در بازه های زمانی مشخص پشتیبان رو 
بروز رسانی کنید .&lt;/STRONG&gt; اگر این مورد رو خوندی و عمل نکردی خدا سنگت میکنه 
!&lt;/LI&gt;&lt;/OL&gt;</description>
<pubDate>Tue, 27 Sep 2011 11:39:52 GMT</pubDate>
<dc:creator>hadiranji2</dc:creator>
<guid>http://hadiranji2.blogfa.com/post-208.aspx</guid>
</item>
<item>
<title>Tableدر برابر Div</title>
<link>http://hadiranji2.blogfa.com/post-207.aspx</link>
<description>&lt;P style=&quot;TEXT-ALIGN: justify&quot;&gt;طی سال های گذشته توسعه دهندگان وب از سمت توسعه ساختار وب سایت های بر پایه ی Table به سمت طراحی وب سایت هایی بر پایه ی Div حرکت کرده اند . عجب ! حتماً میگید چه کاره خوبی ! اما صبر کنید. آیا توسعه دهندگان میدونند دلیلشون برای اینکار چیه و اصلاً چطور باید اینکار رو انجام بدن؟ اغلب به نظر میرسه ملت دارن از جهنمی به اسم Table دور میشن فقط برای اینکه به جهنم جدیدی به اسم Div وارد بشن.&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: justify&quot;&gt;در این مقاله در مورد مشکلات معمول در طراحی ساختار صفحات وب صبحت میکنیم . اول با یکسری مثال میخوایم ببینیم Table و Div چه کوفتی هستند اصلاً ؟ بعدش ببینیم چجوری یه کد تمیز و خوانا بنویسیم و در آخر مشخص کنیم انتظار میره کدوم یکی از این قابلیت ها در آینده بیشتر مورد استفاده قرار بگیرن! پس خواهش میکنم در این سفر از جهنم تا بهشت با ما همراه باشید.&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: justify&quot;&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: small&quot;&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;جهنم Table&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: justify&quot;&gt;وقتی وب سایت شما برای &lt;SPAN style=&quot;TEXT-DECORATION: underline&quot;&gt;اهداف طراحی&lt;/SPAN&gt; از جداول استفاده میکنه شما در جهنمی به اسم table هستید. Table ها به طور کلی باعث افزایش پیچیدگی ، سخت تر شدن نگهداری ، کاهش انعطاف پذیری برای انطباق با رسانه های مختلف(مثل دستگاه های موبایل و غیره) و طراحی عناصر مختلف در صفحات وب میشن.&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: justify&quot;&gt;MAMA یک موتور جستجو از نرم افزار Opera هست که در صفحات وب میخزه و نتایجی رو با شرح ساختار صفحات ارائه میده. اگر به کلید های جستجوی MAMA توجه کنیم متوجه میشیم که عنصر Table در 80 درصد ساختار صفحات وب وجود داره.&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: justify&quot;&gt;در این خصوص اگه ساده بخوام توضیح بدم : Table برای نگهداری داده های جدولی (مثل لیست کالاهای یک انبار) استفاده میشه نه برای اهداف طراحی و ایجاد ساختار صفحات وب.&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: justify&quot;&gt;&lt;STRONG&gt;سهولت استفاده&lt;/STRONG&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: justify&quot;&gt;استفاده از جداول برای طراحی ساختار، کاملاً بصری و قابل درکه . ما روزانه داده های جدولی زیادی می بینیم و مفهمومش رو به خوبی میشناسیم. از طرفی وجود صفات جدولی ، یادگیری رو نسبتاً ساده میکنه چون دیگه توسعه دهنده مجبور نیست از یک StyleSheet جداگانه استفاده کنه. اما در Div هیچ صفت آماده ای وجود نداره و توسعه دهنده مجبوره در زمان طراحی ، Style های جدیدی رو ایجاد کنه. در Table ها وقتی محتوا خیلی طولانی باشند خط شکسته نمیشه . مثل Div ستون ها زیر ستون های دیگه فشرده نمیشن و در کل باعث میشه احساس کنید Table ها امن و بدون دردسر تر هستن.&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: justify&quot;&gt;&lt;STRONG&gt;نگهداشت پذیری&lt;/STRONG&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: justify&quot;&gt;Table دارای تگ های متفاوتی هست. خود تگ table  به عنوان یک روپوش استفاده میشه. Tr برای ایجاد سطر ها و Td برای ایجاد ستون ها استفاده میشن. تگ های thead و tbody برای اهداف ساختاری استفاده نمیشند چون به محتوا خاصیت معنایی میدن. برای خوانایی بیشتر معمولاً هر تگ با رعایت تو گذاری (Tab) در یک خط نوشته میشه. ضمناً باید توجه داشت که خواص colspan و rowspan کد رو پیچیده تر هم میکنن.&lt;/P&gt;
&lt;DIV style=&quot;TEXT-ALIGN: justify; FONT-SIZE: 9pt&quot; dir=ltr&gt;
&lt;DIV&gt;
&lt;DIV id=highlighter_148628 class=&quot;syntaxhighlighter  xml ie&quot;&gt;
&lt;DIV class=toolbar&gt;&lt;SPAN&gt;&lt;A class=&quot;toolbar_item command_help help&quot; href=&quot;#&quot;&gt;?&lt;/A&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;TABLE border=0 cellSpacing=0 cellPadding=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=gutter&gt;
&lt;DIV class=&quot;line number1 index0 alt2&quot;&gt;1&lt;/DIV&gt;
&lt;DIV class=&quot;line number2 index1 alt1&quot;&gt;2&lt;/DIV&gt;
&lt;DIV class=&quot;line number3 index2 alt2&quot;&gt;3&lt;/DIV&gt;
&lt;DIV class=&quot;line number4 index3 alt1&quot;&gt;4&lt;/DIV&gt;
&lt;DIV class=&quot;line number5 index4 alt2&quot;&gt;5&lt;/DIV&gt;
&lt;DIV class=&quot;line number6 index5 alt1&quot;&gt;6&lt;/DIV&gt;
&lt;DIV class=&quot;line number7 index6 alt2&quot;&gt;7&lt;/DIV&gt;
&lt;DIV class=&quot;line number8 index7 alt1&quot;&gt;8&lt;/DIV&gt;
&lt;DIV class=&quot;line number9 index8 alt2&quot;&gt;9&lt;/DIV&gt;
&lt;DIV class=&quot;line number10 index9 alt1&quot;&gt;10&lt;/DIV&gt;
&lt;DIV class=&quot;line number11 index10 alt2&quot;&gt;11&lt;/DIV&gt;
&lt;DIV class=&quot;line number12 index11 alt1&quot;&gt;12&lt;/DIV&gt;
&lt;DIV class=&quot;line number13 index12 alt2&quot;&gt;13&lt;/DIV&gt;&lt;/TD&gt;
&lt;TD class=code&gt;
&lt;DIV class=container&gt;
&lt;DIV class=&quot;line number1 index0 alt2&quot;&gt;&lt;CODE class=&quot;xml plain&quot;&gt;&lt;&lt;/CODE&gt;&lt;CODE class=&quot;xml keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;table&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt; &lt;CODE class=&quot;xml color1&quot;&gt;&lt;FONT color=#808080&gt;cellpadding&lt;/FONT&gt;&lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;=&lt;/CODE&gt;&lt;CODE class=&quot;xml string&quot;&gt;&lt;FONT color=#0000ff&gt;&quot;0&quot;&lt;/FONT&gt;&lt;/CODE&gt; &lt;CODE class=&quot;xml color1&quot;&gt;&lt;FONT color=#808080&gt;cellspacing&lt;/FONT&gt;&lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;=&lt;/CODE&gt;&lt;CODE class=&quot;xml string&quot;&gt;&lt;FONT color=#0000ff&gt;&quot;0&quot;&lt;/FONT&gt;&lt;/CODE&gt; &lt;CODE class=&quot;xml color1&quot;&gt;&lt;FONT color=#808080&gt;border&lt;/FONT&gt;&lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;=&lt;/CODE&gt;&lt;CODE class=&quot;xml string&quot;&gt;&lt;FONT color=#0000ff&gt;&quot;0&quot;&lt;/FONT&gt;&lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;&gt; &lt;/CODE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line number2 index1 alt1&quot;&gt;&lt;CODE class=&quot;xml spaces&quot;&gt;    &lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;&lt;&lt;/CODE&gt;&lt;CODE class=&quot;xml keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;tr&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;&gt; &lt;/CODE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line number3 index2 alt2&quot;&gt;&lt;CODE class=&quot;xml spaces&quot;&gt;        &lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;&lt;&lt;/CODE&gt;&lt;CODE class=&quot;xml keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;td&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt; &lt;CODE class=&quot;xml color1&quot;&gt;&lt;FONT color=#808080&gt;colspan&lt;/FONT&gt;&lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;=&lt;/CODE&gt;&lt;CODE class=&quot;xml string&quot;&gt;&lt;FONT color=#0000ff&gt;&quot;3&quot;&lt;/FONT&gt;&lt;/CODE&gt; &lt;CODE class=&quot;xml color1&quot;&gt;&lt;FONT color=#808080&gt;height&lt;/FONT&gt;&lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;=&lt;/CODE&gt;&lt;CODE class=&quot;xml string&quot;&gt;&lt;FONT color=#0000ff&gt;&quot;120px&quot;&lt;/FONT&gt;&lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;&gt;....&lt;/&lt;/CODE&gt;&lt;CODE class=&quot;xml keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;td&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;&gt; &lt;/CODE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line number4 index3 alt1&quot;&gt;&lt;CODE class=&quot;xml spaces&quot;&gt;    &lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;&lt;/&lt;/CODE&gt;&lt;CODE class=&quot;xml keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;tr&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;&gt; &lt;/CODE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line number5 index4 alt2&quot;&gt;&lt;CODE class=&quot;xml spaces&quot;&gt;    &lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;&lt;&lt;/CODE&gt;&lt;CODE class=&quot;xml keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;tr&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;&gt; &lt;/CODE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line number6 index5 alt1&quot;&gt;&lt;CODE class=&quot;xml spaces&quot;&gt;        &lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;&lt;&lt;/CODE&gt;&lt;CODE class=&quot;xml keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;td&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt; &lt;CODE class=&quot;xml color1&quot;&gt;&lt;FONT color=#808080&gt;valign&lt;/FONT&gt;&lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;=&lt;/CODE&gt;&lt;CODE class=&quot;xml string&quot;&gt;&lt;FONT color=#0000ff&gt;&quot;top&quot;&lt;/FONT&gt;&lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;&gt;...&lt;/&lt;/CODE&gt;&lt;CODE class=&quot;xml keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;td&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;&gt; &lt;/CODE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line number7 index6 alt2&quot;&gt;&lt;CODE class=&quot;xml spaces&quot;&gt;        &lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;&lt;&lt;/CODE&gt;&lt;CODE class=&quot;xml keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;td&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt; &lt;CODE class=&quot;xml color1&quot;&gt;&lt;FONT color=#808080&gt;valign&lt;/FONT&gt;&lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;=&lt;/CODE&gt;&lt;CODE class=&quot;xml string&quot;&gt;&lt;FONT color=#0000ff&gt;&quot;top&quot;&lt;/FONT&gt;&lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;&gt;...&lt;/&lt;/CODE&gt;&lt;CODE class=&quot;xml keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;td&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;&gt; &lt;/CODE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line number8 index7 alt1&quot;&gt;&lt;CODE class=&quot;xml spaces&quot;&gt;        &lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;&lt;&lt;/CODE&gt;&lt;CODE class=&quot;xml keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;td&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt; &lt;CODE class=&quot;xml color1&quot;&gt;&lt;FONT color=#808080&gt;valign&lt;/FONT&gt;&lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;=&lt;/CODE&gt;&lt;CODE class=&quot;xml string&quot;&gt;&lt;FONT color=#0000ff&gt;&quot;top&quot;&lt;/FONT&gt;&lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;&gt;...&lt;/&lt;/CODE&gt;&lt;CODE class=&quot;xml keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;td&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;&gt; &lt;/CODE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line number9 index8 alt2&quot;&gt;&lt;CODE class=&quot;xml spaces&quot;&gt;    &lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;&lt;/&lt;/CODE&gt;&lt;CODE class=&quot;xml keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;tr&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;&gt; &lt;/CODE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line number10 index9 alt1&quot;&gt;&lt;CODE class=&quot;xml spaces&quot;&gt;    &lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;&lt;&lt;/CODE&gt;&lt;CODE class=&quot;xml keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;tr&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;&gt; &lt;/CODE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line number11 index10 alt2&quot;&gt;&lt;CODE class=&quot;xml spaces&quot;&gt;        &lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;&lt;&lt;/CODE&gt;&lt;CODE class=&quot;xml keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;td&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt; &lt;CODE class=&quot;xml color1&quot;&gt;&lt;FONT color=#808080&gt;colspan&lt;/FONT&gt;&lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;=&lt;/CODE&gt;&lt;CODE class=&quot;xml string&quot;&gt;&lt;FONT color=#0000ff&gt;&quot;3&quot;&lt;/FONT&gt;&lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;&gt;...&lt;/&lt;/CODE&gt;&lt;CODE class=&quot;xml keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;td&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;&gt; &lt;/CODE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line number12 index11 alt1&quot;&gt;&lt;CODE class=&quot;xml spaces&quot;&gt;    &lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;&lt;/&lt;/CODE&gt;&lt;CODE class=&quot;xml keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;tr&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;&gt; &lt;/CODE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line number13 index12 alt2&quot;&gt;&lt;CODE class=&quot;xml plain&quot;&gt;&lt;/&lt;/CODE&gt;&lt;CODE class=&quot;xml keyword&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;table&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CODE&gt;&lt;CODE class=&quot;xml plain&quot;&gt;&gt;&lt;/CODE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV style=&quot;TEXT-ALIGN: justify; FONT-SIZE: 9pt&quot; dir=ltr&gt;
&lt;DIV&gt;
&lt;DIV id=highlighter_759625 class=&quot;syntaxhighlighter  java ie&quot;&gt;
&lt;DIV class=toolbar&gt;&lt;SPAN&gt;&lt;A class=&quot;toolbar_item command_help help&quot; href=&quot;#&quot;&gt;?&lt;/A&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;TABLE border=0 cellSpacing=0 cellPadding=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=gutter&gt;
&lt;DIV class=&quot;line number1 index0 alt2&quot;&gt;1&lt;/DIV&gt;
&lt;DIV class=&quot;line number2 index1 alt1&quot;&gt;2&lt;/DIV&gt;
&lt;DIV class=&quot;line number3 index2 alt2&quot;&gt;3&lt;/DIV&gt;
&lt;DIV class=&quot;line number4 index3 alt1&quot;&gt;4&lt;/DIV&gt;
&lt;DIV class=&quot;line number5 index4 alt2&quot;&gt;5&lt;/DIV&gt;&lt;/TD&gt;
&lt;TD class=code&gt;
&lt;DIV class=container&gt;
&lt;DIV class=&quot;line number1 index0 alt2&quot;&gt;&lt;CODE class=&quot;java plain&quot;&gt;&lt;div id=&lt;/CODE&gt;&lt;CODE class=&quot;java string&quot;&gt;&lt;FONT color=#0000ff&gt;&quot;header&quot;&lt;/FONT&gt;&lt;/CODE&gt;&lt;CODE class=&quot;java plain&quot;&gt;&gt;...&lt;/div&gt; &lt;/CODE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line number2 index1 alt1&quot;&gt;&lt;CODE class=&quot;java plain&quot;&gt;&lt;div id=&lt;/CODE&gt;&lt;CODE class=&quot;java string&quot;&gt;&lt;FONT color=#0000ff&gt;&quot;menu&quot;&lt;/FONT&gt;&lt;/CODE&gt;&lt;CODE class=&quot;java plain&quot;&gt;&gt;...&lt;/div&gt; &lt;/CODE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line number3 index2 alt2&quot;&gt;&lt;CODE class=&quot;java plain&quot;&gt;&lt;div id=&lt;/CODE&gt;&lt;CODE class=&quot;java string&quot;&gt;&lt;FONT color=#0000ff&gt;&quot;content&quot;&lt;/FONT&gt;&lt;/CODE&gt;&lt;CODE class=&quot;java plain&quot;&gt;&gt;...&lt;/div&gt; &lt;/CODE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line number4 index3 alt1&quot;&gt;&lt;CODE class=&quot;java plain&quot;&gt;&lt;div id=&lt;/CODE&gt;&lt;CODE class=&quot;java string&quot;&gt;&lt;FONT color=#0000ff&gt;&quot;aSide&quot;&lt;/FONT&gt;&lt;/CODE&gt;&lt;CODE class=&quot;java plain&quot;&gt;&gt;...&lt;/div&gt; &lt;/CODE&gt;&lt;/DIV&gt;
&lt;DIV class=&quot;line number5 index4 alt2&quot;&gt;&lt;CODE class=&quot;java plain&quot;&gt;&lt;div id=&lt;/CODE&gt;&lt;CODE class=&quot;java string&quot;&gt;&lt;FONT color=#0000ff&gt;&quot;footer&quot;&lt;/FONT&gt;&lt;/CODE&gt;&lt;CODE class=&quot;java plain&quot;&gt;&gt;...&lt;/div&gt;&lt;/CODE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P style=&quot;TEXT-ALIGN: justify&quot;&gt;همونطور که در مثال بالا میبینیم ،  کدهای بیشتری برای قالبی که با Table ایجاد شده نسبت به Div نوشته شده. حالا فرض كنيد همچنان كه كد بزرگتر ميشه اين تفاوت در اندازه، ثابت باقي بمونه . در ساختاری بر پایه Div هم میشه بی خیال menu div شد و در عوض از یک لیست نا مرتب (ul) به عنوان ظرف استفاده کرد.&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: justify&quot;&gt;جداول باعث میشن نتونید یک کد تمیز بنویسید و تا زمانی که بحث نگهداری داده های جدولی (مثلاً لیست اجناس یک انبار) مطرح نباشه ، استفاده از اونها برای طراحی صفحات هیچ معنایی نداره . مشکل دیگه Table ها اینه که باعث میشن جداسازی طراحی از محتوا سخت بشه. با توجه به نتایج MAMA ، خواص border ، width ، cellpadding و cellspacing در 90% از صفحاتی که از Table استفاده کرده بودند وجود داشته و این یعنی به جای اینکه خواص و استایل ها در style sheet ها قرار بگیرند ، مستقیماً در صفحه Html نوشته شده اند.&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: justify&quot;&gt;کدهای اضافی طراحی رو کند میکنن و باعث افزایش هزینه های نگهداری میشن. ضمناً در آینده باعث میشه درک کد شما برای دیگران و حتی خودتون سخت بشه. به یاد داشته باشید برای تعدادی خطوطی که یک برنامه نویس در طول ساعت میتونه بنویسه محدودیت وجود داره.&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: justify&quot;&gt;هرچی تعداد خطوط کد شما بیشتر بشه معنیش اینه که فایل بزرگتری هم خواهید داشت و متعاقباً زمان بیشتری برای بارگزاری صفحه نیازه. همچنین یک کد بزرگ نسبت به یک کد کم حجم ، باگ های بیشتری خواهد داشت. از طرفی توسعه دهندگان همیشه باید رسانه های جدید رو هم مد نظر داشته باشن. مثل دستگاه موبایل که معمولاً پهنای باند پایینی دارن.&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: justify&quot;&gt;&lt;STRONG&gt;انعطاف پذیری با رسانه ها&lt;/STRONG&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: justify&quot;&gt;در یک جهان ایده آل، از یک نشانه گذاری مشابه برای همه چاپگر ها استفاده میشه. استفاده از جداول برای ساختار صفحات، کمترین انعطاف پذیری رو داره. کاربران شما ممکنه بخوان جدول های کناری رو به بالای صفحه منتقل کنن و یا مثلاً یک نمای چاپ، از سند در اختیار داشته باشند که در صورت استفاده از جداول، نتایج برای چاپ شدن، به صفحات اضافی جداگانه ای نیاز خواهند داشت و بر خلاف صفحات مبتنی بر Div که طراحی رو از محتوا جدا میکنن، استفاده از جداول برای اهداف طراحی، یعنی بالا رفتن هزینه توسعه و نگهداری کد.&lt;/P&gt;&lt;EM&gt;
&lt;P style=&quot;TEXT-ALIGN: justify&quot;&gt;&lt;STRONG&gt;نویسنده : Geir Wavik&lt;/STRONG&gt; – گردآوری و ترجمه : مهران رسا&lt;/P&gt;&lt;/EM&gt;</description>
<pubDate>Tue, 27 Sep 2011 11:36:53 GMT</pubDate>
<dc:creator>hadiranji2</dc:creator>
<guid>http://hadiranji2.blogfa.com/post-207.aspx</guid>
</item>
</channel>
</rss>

