<?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>رحمان موسویان</title>
	<atom:link href="http://www.xn--mgbx7cghb83g.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.xn--mgbx7cghb83g.com</link>
	<description>گهگاه نوشته های رحمان موسویان برنامه نویس و طراح وب</description>
	<lastBuildDate>Sun, 04 Oct 2009 20:18:41 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>fa</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>با فایل .htaccess کنترل را در دست بگیرید – قسمت دوم</title>
		<link>http://www.xn--mgbx7cghb83g.com/1388/07/how-use-htaccess-file-2/</link>
		<comments>http://www.xn--mgbx7cghb83g.com/1388/07/how-use-htaccess-file-2/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 20:18:41 +0000</pubDate>
		<dc:creator>رحمان موسویان</dc:creator>
				<category><![CDATA[دسته‌بندی نشده‌ها]]></category>

		<guid isPermaLink="false">http://www.xn--mgbx7cghb83g.com/?p=83</guid>
		<description><![CDATA[در ادامه بحث Authorization می‌خوام دو تا از دستوراتی را معرفی کنم که شبیه دستورات شرطی عمل می‌کنند. اولین &#60;Files&#62;&#60;/Files&#62; و دیگری &#60;Directory&#62;&#60;/Directory&#62; است. Filesبر روی فایل‌ها و Directory بر روی شاخه‌ها اعمال می‌شوند. به مثال زیر توجه کنید:
&#60;Files *.jpg&#62;
Order Allow,Deny
                             Allow from 123.123.123.123
&#60;/Files&#62;
 
با این دستور، و البته با فرض اینکه IP سرور شما ۱۲۳/۱۲۳/۱۲۳/۱۲۳ [...]]]></description>
			<content:encoded><![CDATA[<p>در ادامه بحث <strong>Authori</strong><strong>zation</strong><strong> </strong>می‌خوام دو تا از دستوراتی را معرفی کنم که شبیه دستورات شرطی عمل می‌کنند. اولین <strong>&lt;Files&gt;&lt;/Files&gt;</strong> و دیگری <strong>&lt;Directory&gt;&lt;/Directory&gt;</strong><strong> </strong>است. Filesبر روی فایل‌ها و Directory بر روی شاخه‌ها اعمال می‌شوند. به مثال زیر توجه کنید:</p>
<p style="text-align: left;">&lt;Files *.jpg&gt;</p>
<p style="text-align: left;">Order Allow,Deny</p>
<p style="text-align: left;">                             Allow from 123.123.123.123</p>
<p style="text-align: left;">&lt;/Files&gt;</p>
<p> </p>
<p>با این دستور، و البته با فرض اینکه IP سرور شما ۱۲۳/۱۲۳/۱۲۳/۱۲۳ باشد، شما اجازه استفاده از عکس ها را فقط به سرور خود میدهید. در این صورت اگر در سرورهای دیگر عکسی با منبع سایت شما داشته باشند، سرور شما از نمایش آن جلوگیری خواهد کرد. با این روش شما از افتادن ترافیک سایت‌های دیگر بر دوش سرور خود جلوگیری می‌کنید. یا یک مثال کاربردی‌تر اینکه</p>
<p style="text-align: left;">&lt;Files *.php&gt;</p>
<p style="text-align: left;">                             Order Allow,Deny</p>
<p style="text-align: left;">&lt;/Files&gt;</p>
<p>با این کار از اجرا و نمایش تمام فایل های php جلوگیری می‌کنید. البته نکته مهمی وجود دارد و آن این است که برای دستوراتی شبیه require و include در برنامه نویسی مشکلی از نظر دسترسی پیش نخواهد آمد. اما اگر به جای PHP تمام فایل‌ها را در این ماجرا شریک کنید (توسط*.* ) ، نمی توانید فایل‌های CSS یا JS را در برنامه خود استفاده کنید. چون این فایل‌ها توسط مرورگر شناسایی شده و درخواست آنها صادر می‌شود (برخلاف php که موقع اجرا توسط آپاچی اضافه می‌شوند.)</p>
<p> </p>
<p><strong>Redirect</strong><strong> </strong></p>
<p>انتقال شاخه‌ به مسیر جدید به دو حالت صورت می‌گیرد؛ شکل ساده و شکل دارای عبارت منظم. این انتقال توسط کد ۳۰۱ به مرورگر ارسال شده است. در صورتی که این کد نوشته نشود، بصورت پیش‌فرض ۳۰۲ ارسال خواهد شد. این کدها از نظر موتورهای جستجوگر بسیار مهم است و کسانی که روی سئو SEO یا Search Engine Optimization کار می‌کنند باید به این‌ها نیز توجه کنند.</p>
<p style="text-align: left;">Redirect 301 /olddir/oldfile.html http://example.com/newdir/newfile.html</p>
<p style="text-align: left;">RedirectMatch 301 /oldDir/(.*) /newDir/$1</p>
<p> </p>
<p>۳۰۱ &#8211; Moved Permanently یا انتقال دائمی. در صورتی که برای همیشه از مسیر جدید استفاده خواهید کرد، حتما&#8221; توسط کد ۳۰۱ صفحه را ارسال کنید. با این کار موتورهای جستجو آدرس جدید را بجای آدرس قبلی قرار خواهند داد.</p>
<p>۳۰۷ &#8211; Temporary Redirect یا انتقال موقت.<br />
<strong>مدیریت خطاها (</strong><strong>Error Handling</strong><strong>)</strong></p>
<p>لیست کاملی از خطاهایی که میتوانید به جای نمایش آنها، این صفحات را برای خود سفارشی کنید:</p>
<p style="text-align: left;">ErrorDocument 400 /errors/file.php?error=400<br />
ErrorDocument 401 /errors/file.php?error=401<br />
ErrorDocument 402 /errors/file.php?error=402<br />
ErrorDocument 403 /errors/file.php?error=403<br />
ErrorDocument 404 /errors/index.php?error=404<br />
ErrorDocument 405 /errors/index.php?error=405<br />
ErrorDocument 406 /errors/index.php?error=406<br />
ErrorDocument 407 /errors/index.php?error=407<br />
ErrorDocument 408 /errors/index.php?error=408<br />
ErrorDocument 409 /errors/index.php?error=409<br />
ErrorDocument 410 /errors/index.php?error=410<br />
ErrorDocument 411 /errors/index.php?error=411<br />
ErrorDocument 412 /errors/index.php?error=412<br />
ErrorDocument 413 /errors/index.php?error=413<br />
ErrorDocument 414 /errors/index.php?error=414<br />
ErrorDocument 415 /errors/index.php?error=415<br />
ErrorDocument 416 /errors/index.php?error=416<br />
ErrorDocument 417 /errors/index.php?error=417<br />
ErrorDocument 500 /errors/index.php?error=500<br />
ErrorDocument 501 /errors/index.php?error=501<br />
ErrorDocument 502 /errors/index.php?error=502<br />
ErrorDocument 503 /errors/index.php?error=503<br />
ErrorDocument 504 /errors/index.php?error=504<br />
ErrorDocument 505 /errors/index.php?error=505</p>
<p>در مواقع رخ دادن هرکدام از این خطاها، صفحه به آدرس مورد نظر ارجاع داده خواهد شد. در ضمن میتوانید یک پیغام را نمایش دهید:</p>
<p style="text-align: left;">ErrorDocument 404 &#8220;&lt;b&gt;Page Not Found&lt;/b&gt;&#8221;</p>
<p> </p>
<p><strong>تنظیمات </strong><strong>PHP</strong><strong> (</strong><strong>php.ini</strong><strong>)</strong><strong> </strong></p>
<p>فلگ‌ها توسط<strong> </strong><strong>php_flag</strong><strong> </strong>و مقادیر توسط php_value کنترل می‌شوند.نمونه‌هایی را در زیر می‌بینید:</p>
<p style="text-align: left; ">php_flag asp_tags off<br />
php_flag register_globals off<br />
php_flag session.auto_start on<br />
php_flag display_errors off<br />
php_value upload_max_filesize 8M<br />
php_value session.cookie_lifetime 3600</p>
<p> </p>
<p>گروه دستورات بعدی توسط ماژول mod_mime اجرا می‌شوند و فایل مبدأ آنها mod_mime.c است. این ماژول امکاناتی را برای مشخص کردن تایپ فایل‌ها و مشخصات آنها فراهم می‌آورد.(در واقع محتوای Header هدر صفحه کنترل می‌شود.)</p>
<p style="text-align: left; ">AddDefaultCharset utf-8</p>
<p style="text-align: left; ">AddCharset windows-1256 .html</p>
<p style="text-align: left; ">AddLanguage fa .php</p>
<p>اگر واقعا&#8221; از نوشتن متاتگ برای ست کردن charset خسته شده‌اید، خط اول بسیار به کار شما می‌آید. AddCharset نیز charset مورد نظر را فقط برای پسوند خاصی ست می‌کند. AddLanguage نیز زبان فارسی (یا مخفف آن fa) را به Content-Language در Header صفحات پی اچ پی اضافه میکند.</p>
<p style="text-align: left;">AddEncoding x-gzip .gz<br />
AddEncoding x-compress .z</p>
<p>این دستور نیز برای ست کردن Content-Encoding هدر بکار می‌رود.</p>
<p style="text-align: left; "> </p>
<p style="text-align: left; ">AddType image/gif .photo</p>
<p style="text-align: left; ">AddType application/x-httpd-php .asp .jsp</p>
<p style="text-align: left; ">AddType text/css .mycssext</p>
<p>خب این قسمت خیلی جذاب و کاربردی است. شما توسط AddType یک تایپ جدید یا پسوند جدید تعریف می‌کنید. با این کار هکرها به راحتی متوجه php بودن کد شما نمی‌شوند. (البته اگر مسائل دیگری مثل X-Powered-By را درنظر گرفته باشید!!) برای مثال من در خط اول، پسوندهای photo را عکس‌های gif معرفی کرده‌ام. خط دوم، خواسته‌ام که تمام فایل‌هایی با پسوند asp یا jsp نیز از نوع  phpشناخته شوند و توسط مترجم php اجرا شوند. در نهایت گفته‌ام که پسوندهایی mycssext فایل‌های مربوط به css هستند. بعنوان مثال شاید کاربرد این دستور را در سایت بانک ملت (فایل‌هایی با پسوند bm) دیده باشید!</p>
<p style="text-align: left; ">&lt;Location /images&gt;</p>
<p style="text-align: left; ">    ForceType image/gif</p>
<p style="text-align: left; ">&lt;/Location&gt;</p>
<p>درصورتی که فایل‌های شاخه images توسط مرورگر درخواست شوند، جدای از پسوند آنها، مرورگر مجبور به پردازش آنها بعنوان عکس با پسوند gif خواهد بود.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xn--mgbx7cghb83g.com/1388/07/how-use-htaccess-file-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>با فایل .htaccess کنترل را در دست بگیرید – قسمت اول</title>
		<link>http://www.xn--mgbx7cghb83g.com/1388/07/%d8%a8%d8%a7-%d9%81%d8%a7%db%8c%d9%84-htaccess-%da%a9%d9%86%d8%aa%d8%b1%d9%84-%d8%b1%d8%a7-%d8%af%d8%b1-%d8%af%d8%b3%d8%aa-%d8%a8%da%af%db%8c%d8%b1%db%8c%d8%af-%d9%82%d8%b3%d9%85%d8%aa-%d8%a7%d9%88/</link>
		<comments>http://www.xn--mgbx7cghb83g.com/1388/07/%d8%a8%d8%a7-%d9%81%d8%a7%db%8c%d9%84-htaccess-%da%a9%d9%86%d8%aa%d8%b1%d9%84-%d8%b1%d8%a7-%d8%af%d8%b1-%d8%af%d8%b3%d8%aa-%d8%a8%da%af%db%8c%d8%b1%db%8c%d8%af-%d9%82%d8%b3%d9%85%d8%aa-%d8%a7%d9%88/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 22:43:45 +0000</pubDate>
		<dc:creator>رحمان موسویان</dc:creator>
				<category><![CDATA[دسته‌بندی نشده‌ها]]></category>

		<guid isPermaLink="false">http://www.xn--mgbx7cghb83g.com/?p=78</guid>
		<description><![CDATA[چند پست قبل یکی از کاربردهای این فایل رو بررسی کردم، اما در این پست می‌خوام بطور کامل در مورد این فایل صحبت کنم.
بدلیل نیاز طراحان و برنامه‌نویسان وب برای تغییر و کنترل وب سرور آپاچی بسته به نیاز خود و با هدف ایجاد کنترل دسترسی بر روی شاخه‌های مختلف فایل‌های .htaccess (یا hypertext access [...]]]></description>
			<content:encoded><![CDATA[<p>چند پست قبل یکی از کاربردهای این فایل رو بررسی کردم، اما در این پست می‌خوام بطور کامل در مورد این فایل صحبت کنم.</p>
<p>بدلیل نیاز طراحان و برنامه‌نویسان وب برای تغییر و کنترل وب سرور آپاچی بسته به نیاز خود و با هدف ایجاد کنترل دسترسی بر روی شاخه‌های مختلف فایل‌های .htaccess (یا hypertext access یا distributed configuration files) بوجود آمدند. چون در سیستم عامل های Unix فایل‌هایی که با نقطه (dot) شروع می‌شوند مخفی هستند، نام این فایل با نقطه شروع می‌شود و بهمین دلیل این فایل در سیستم عامل ویندوز بطور معمولی قابل ایجاد نیست. اگر از سیستم عامل ویندوز استفاده میکنید، برای ساختن این فایل میتوانید از این اسکریپت php کمک بگیرید:</p>
<pre name="code" class="php">

&lt;?php
$fp=fopen(&#039;.htaccess&#039;,&#039;w+&#039;);
fclose($fp);
?&gt;
</pre>
<p>این فایل در هر شاخه می‌تواند ایجاد شود و قوانین آن بر روی شاخه جاری و تمام زیرشاخه‌ها اعمال می‌شود. از عمده‌ترین موارد استفاده فایل .htaccess میتوان به تصدیق و اجازه (Authentication  و Authorization )، ترجمه‌ی URLها و مدیریت خطاها اشاره کردکه در زیر به شرح آنها خواهم پرداخت.</p>
<p> </p>
<p><strong>تصدیق کاربر (</strong><strong>Authentication</strong><strong>)</strong></p>
<p>امکانی که به شخصی‌سازی صفحات وب کمک میکند.</p>
<p style="text-align: left; "><strong><span style="font-weight: normal;">Auth</span><span style="font-weight: normal;">Type Basic </span></strong></p>
<p style="text-align: left; "><strong><span style="font-weight: normal;">AuthUserFile /usr/username/.htpasswd</span></strong></p>
<p style="text-align: left; "><strong><span style="font-weight: normal;">AuthName &#8220;My Secret Area&#8221;</span></strong><strong><span style="font-weight: normal;"> </span></strong></p>
<p style="text-align: left; "><strong><span style="font-weight: normal;">Requir</span><span style="font-weight: normal;">e valid-user</span></strong><strong> </strong></p>
<p>خط اول، توع تصدیق را Basic معرفی میکند. دومین خط <strong>مسیر کامل</strong> (و نه نسبی) فایل حاوی نام کاربری و رمزعبور است. لیست نام‌های کاربری و رمزهای عبور در این فایل که با نام .hpasswd مشخص میشود بصورت زیر است:</p>
<p style="text-align: left; ">username1:password1</p>
<p style="text-align: left; ">username2:apr1.KB4i&#8230;ykeDUewbZvNgqrlXnecld0</p>
<p>درمورد دومین خط رمزعبور باید بگم که شما میتونید رمزعبور خودتون رو بصورت کد شده توسط الگوریتم MD5 بگذارید. سایت‌هایی هستند که این کار رو انجام میدهند مثل <a title="htpasswd generator" href="http://www.htaccesstools.com/htpasswd-generator/" target="_blank">این</a>.</p>
<p>سومین خط این کد، توضیحی است که به کاربر درمورد درخواست رمزعبور نمایش داده می‌شود.</p>
<p>و بالاخره خط چهارم این امکان را فعال می‌کند.</p>
<p> </p>
<p><strong>اجازه‌های دسترسی (</strong><strong>Authori</strong><strong>zation</strong><strong>)</strong></p>
<p>که با دو دستور Allow یا Deny و توسط ماژول mod_access صورت می‌گیرد. این اجازه‌ها می‌توانند بر روی نام میزبان، IP کاربر، نوع درخواست(یا Environment Variables) صورت گیرند. به مثال توجه کنید:</p>
<p style="text-align: left; "><code>Allow from apache.org</code></p>
<p style="text-align: left; "><code>Deny from 10.1.2.3</code></p>
<p style="text-align: left; "><code>Deny from 10.1</code></p>
<p style="text-align: left; "><code>Deny from 10.1.0.0/255.255.0.0</code></p>
<p>خط اول فقط به میزبان apache.org اجازه استفاده می‌دهد. خطوط بعدی اجازه را روی IP تعریف میکند.</p>
<p style="text-align: left;"><code>SetEnvIf User-Agent Chrome let_me_in</code></p>
<p style="text-align: left;"><code>Order Deny,Allow</code></p>
<p style="text-align: left;"><code>Deny from all</code></p>
<p style="text-align: left;"><code>Allow from env=let_me_in</code></p>
<p>این چهار خط بطور کلی دسترسی را برای همه کاربران می بندد! البته کاربرانی که با مرورگر Chrome وارد شده باشند، اجازه ورود دارند! جالب است، نه؟! )برای اینترنت اکسپلورر: MSIE، موزیلا فایرفاکس: Firefox و اپرا:Opera  تایپ کنید)</p>
<p>در مورد Order، همین طور که از نامش مشخص است، اولویت دستورهای Deny و Allow را مشخص میکند. شاید در این دستور نیازی به آن نباشد ولی درصورت نوشتن کدهای زیاد برای دسترسی های مختلف، ترتیب اولویت‌ها نیاز به مشخص شدن دارند.</p>
<p style="text-align: left;"><code>Order Allow,Deny</code></p>
<p>به این معناست که تمام درخواست‌هایی که با حداقل یکی از گزینه های Allow مطابقت داشته باشند، اجازه ورود دارند. سپس درخواست‌هایی هم که با Deny مطابقت دارند ریجکت شده و بعد از آن تمام درخواست‌ها ریجکت می‌شوند.</p>
<p style="text-align: left;"><code>Order Deny,Allow</code></p>
<p>نیز به این معناست که اول از تمام درخواست‌هایی که با Deny مطابقت دارند جلوگیری می‌شود. سپس بقیه درخواست‌ها پذیرفته می‌شوند. با این حساب کد زیر از نظر عملکرد شبیه کد بالاست:</p>
<p style="text-align: left;"><code>SetEnvIf User-Agent MSIE let_me_in</code></p>
<p style="text-align: left;"><code>Order Allow,Deny</code></p>
<p style="text-align: left;"><code>Allow from env=let_me_in</code></p>
<p>و جدول خلاصه:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="213" valign="top"><strong>          نتیجه   در </strong><strong>Allow,Deny</strong></td>
<td width="213" valign="top">
<p style="text-align: center;"><strong>نتیجه در </strong><strong>Deny,Allow</strong></p>
</td>
<td width="213" valign="top">
<p align="center"><strong>مطابقت</strong><strong> </strong></p>
</td>
</tr>
<tr>
<td width="213" valign="top">
<p align="center">پذیرفته می‌شود</p>
</td>
<td width="213" valign="top">
<p align="center">پذیرفته می‌شود</p>
</td>
<td width="213" valign="top">
<p align="center"><strong>فقط با </strong><strong>Allow</strong></p>
</td>
</tr>
<tr>
<td width="213" valign="top">
<p align="center">رد می‌شود</p>
</td>
<td width="213" valign="top">
<p align="center">رد می‌شود</p>
</td>
<td width="213" valign="top">
<p align="center"><strong>فقط با </strong><strong>Deny</strong><strong> </strong></p>
</td>
</tr>
<tr>
<td width="213" valign="top">
<p align="center">رد می‌شود</p>
</td>
<td width="213" valign="top">
<p align="center">پذیرفته می‌شود</p>
</td>
<td width="213" valign="top">
<p align="center"><strong>بدون مطابقت</strong><strong> </strong></p>
</td>
</tr>
<tr>
<td width="213" valign="top">
<p align="center">رد می‌شود</p>
</td>
<td width="213" valign="top">
<p align="center">پذیرفته می‌شود</p>
</td>
<td width="213" valign="top">
<p style="text-align: center;"><strong>با هر دو</strong><strong> </strong></p>
</td>
</tr>
</tbody>
</table>
<p>نکته ۱: تمام درخواست‌هایی که توسط Deny رد میشوند، با خطای ۴۰۳ (Forbidden) بازگردانده می‌شوند.</p>
<p>نکته ۲: چنین شرط هایی که مرورگر کاربر را چک میکنند، امنیت ضعیفی دارند چون UserAgent یا هدر مشخص کننده مرورگر کاربر، قابل تغییر است!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xn--mgbx7cghb83g.com/1388/07/%d8%a8%d8%a7-%d9%81%d8%a7%db%8c%d9%84-htaccess-%da%a9%d9%86%d8%aa%d8%b1%d9%84-%d8%b1%d8%a7-%d8%af%d8%b1-%d8%af%d8%b3%d8%aa-%d8%a8%da%af%db%8c%d8%b1%db%8c%d8%af-%d9%82%d8%b3%d9%85%d8%aa-%d8%a7%d9%88/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CUL.ir سایتی برای کاهش طول پیوندها با ایده‌های نو</title>
		<link>http://www.xn--mgbx7cghb83g.com/1388/07/cul-ir-%d8%b3%d8%a7%db%8c%d8%aa%db%8c-%d8%a8%d8%b1%d8%a7%db%8c-%da%a9%d8%a7%d9%87%d8%b4-%d8%b7%d9%88%d9%84-%d9%be%db%8c%d9%88%d9%86%d8%af%d9%87%d8%a7-%d8%a8%d8%a7-%d8%a7%db%8c%d8%af%d9%87%e2%80%8c/</link>
		<comments>http://www.xn--mgbx7cghb83g.com/1388/07/cul-ir-%d8%b3%d8%a7%db%8c%d8%aa%db%8c-%d8%a8%d8%b1%d8%a7%db%8c-%da%a9%d8%a7%d9%87%d8%b4-%d8%b7%d9%88%d9%84-%d9%be%db%8c%d9%88%d9%86%d8%af%d9%87%d8%a7-%d8%a8%d8%a7-%d8%a7%db%8c%d8%af%d9%87%e2%80%8c/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 15:33:12 +0000</pubDate>
		<dc:creator>رحمان موسویان</dc:creator>
				<category><![CDATA[دسته‌بندی نشده‌ها]]></category>

		<guid isPermaLink="false">http://www.xn--mgbx7cghb83g.com/1388/07/cul-ir-%d8%b3%d8%a7%db%8c%d8%aa%db%8c-%d8%a8%d8%b1%d8%a7%db%8c-%da%a9%d8%a7%d9%87%d8%b4-%d8%b7%d9%88%d9%84-%d9%be%db%8c%d9%88%d9%86%d8%af%d9%87%d8%a7-%d8%a8%d8%a7-%d8%a7%db%8c%d8%af%d9%87%e2%80%8c/</guid>
		<description><![CDATA[بعد از بوجود آمدن سرویس‌هایی مینی بلاگ شبیه توییر و نمونه‌ی فارسی آن وی ویو بعلت محدودیت در نوشتن مطالب مخصوصا&#8221; انتشار پیوندها از این طریق، نیاز جدیدی بوجود آمد  براین اساس که لینک‌هایی با طول زیاد قابل انتشار نبودند و انتشار آنها با مشکل مواجه میشد. البته قبل از آنها نیز، بخاطر سپردن و [...]]]></description>
			<content:encoded><![CDATA[<p dir="rtl">بعد از بوجود آمدن سرویس‌هایی مینی بلاگ شبیه <a title="موسویان در توییتر" href="http://twitter.com/mousavian" target="_blank">توییر </a>و نمونه‌ی فارسی آن <a title="موسویان در وی‌ویو" href="http://www.viwio.com/mousavian" target="_blank">وی ویو</a> بعلت محدودیت در نوشتن مطالب مخصوصا&#8221; انتشار پیوندها از این طریق، نیاز جدیدی بوجود آمد  براین اساس که لینک‌هایی با طول زیاد قابل انتشار نبودند و انتشار آنها با مشکل مواجه میشد. البته قبل از آنها نیز، بخاطر سپردن و ساده سازی لینک های طولانی چنین نیازی را بوجود آورده بود اما این سرویس‌ها چنین نیازی را پررنگ تر کردند. طبیعی است که چنین سایت‌هایی بسته به محبوبیت خود دارای عمر مفیدی هستند چون این سایت‌ها از الگوریتم‌هایی جهت ساده سازی لینک با کمترین حروف ممکن استفاده می‌کنند و چون تعداد کلمات و عبارات کوتاه (تا حدی که کاربران را راضی نگه دارد) بی نهایت نیست، با افزایش تعداد لینک‌های ثبت شده، در نهایت کارایی خود را از دست می‌دهند و ناچار جای خود را به رقبای خود واگذار میکنند.</p>
<p dir="rtl">سایت cul.ir به همین منظور ایجاد و مورد استفاده قرار گرفته است. البته خدماتی که این سایت به کاربران خود می‌دهد، دقیقا&#8221; شبیه رقبای خود نیست و ایده‌‌ و نوآوری‌ را همراه داشته است که به آنها اشاره می‌کنم.</p>
<p dir="rtl">جالب‌ترین امکانی که سایت cul.ir به شما میدهد این است که شما در هر لحظه و در هر صفحه‌ای از وب که باشید، قادرید همان آدرس جاری را در سایت cul.ir ثبت و لینک کوتاه شده آن را دریافت کنید. بدین صورت که بعنوان مثال من در آدرس:</p>
<p style="text-align: left;">http://www.xn--mgbx7cghb83g.com/1388/05/%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%D9%87%E2%80%8C%DA%AF%DB%8C%D8%B1%DB%8C-%D8%B2%D9%85%D8%A7%D9%86-%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C-%D8%AA%D9%88%D8%A7%D8%A8%D8%B9-%D8%AC%D8%A7%D9%88%D8%A7-%D8%A7%D8%B3%DA%A9/</p>
<p dir="rtl">هستم. برای کوتاه کردن این لینک، کافی است در نوار آدرس مرورگر به اول این آدرس، آدرس سایت cul.ir را اضافه کنید که چیزی شبیه این میشود:</p>
<p style="text-align: left;"><strong>Cul.ir/</strong> http://www.xn--mgbx7cghb83g.com/1388/05/%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%D9%87%E2%80%8C%DA%AF%DB%8C%D8%B1%DB%8C-%D8%B2%D9%85%D8%A7%D9%86-%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C-%D8%AA%D9%88%D8%A7%D8%A8%D8%B9-%D8%AC%D8%A7%D9%88%D8%A7-%D8%A7%D8%B3%DA%A9/</p>
<p dir="rtl">
<p dir="rtl">بعد از وارد شدن به این آدرس، لینک کوتاه شده خود را دریافت کنید. :)</p>
<p style="text-align: left;"><a href="http://cul.ir/8f">http://cul.ir/8f</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.xn--mgbx7cghb83g.com/1388/07/cul-ir-%d8%b3%d8%a7%db%8c%d8%aa%db%8c-%d8%a8%d8%b1%d8%a7%db%8c-%da%a9%d8%a7%d9%87%d8%b4-%d8%b7%d9%88%d9%84-%d9%be%db%8c%d9%88%d9%86%d8%af%d9%87%d8%a7-%d8%a8%d8%a7-%d8%a7%db%8c%d8%af%d9%87%e2%80%8c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>اندازه‌گیری زمان اجرای توابع جاوا اسکریپت</title>
		<link>http://www.xn--mgbx7cghb83g.com/1388/05/%d8%a7%d9%86%d8%af%d8%a7%d8%b2%d9%87%e2%80%8c%da%af%db%8c%d8%b1%db%8c-%d8%b2%d9%85%d8%a7%d9%86-%d8%a7%d8%ac%d8%b1%d8%a7%db%8c-%d8%aa%d9%88%d8%a7%d8%a8%d8%b9-%d8%ac%d8%a7%d9%88%d8%a7-%d8%a7%d8%b3%da%a9/</link>
		<comments>http://www.xn--mgbx7cghb83g.com/1388/05/%d8%a7%d9%86%d8%af%d8%a7%d8%b2%d9%87%e2%80%8c%da%af%db%8c%d8%b1%db%8c-%d8%b2%d9%85%d8%a7%d9%86-%d8%a7%d8%ac%d8%b1%d8%a7%db%8c-%d8%aa%d9%88%d8%a7%d8%a8%d8%b9-%d8%ac%d8%a7%d9%88%d8%a7-%d8%a7%d8%b3%da%a9/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 16:12:22 +0000</pubDate>
		<dc:creator>رحمان موسویان</dc:creator>
				<category><![CDATA[Mozilla FireFox]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[مرتبط با وب 2]]></category>
		<category><![CDATA[firebug]]></category>
		<category><![CDATA[run time]]></category>
		<category><![CDATA[جاوا اسکریپت]]></category>
		<category><![CDATA[فایرباگ]]></category>

		<guid isPermaLink="false">http://www.xn--mgbx7cghb83g.com/?p=71</guid>
		<description><![CDATA[بعضی اوقات پیش اومده که ما یک تابع یا کلا&#8221; انجام یک کاری توسط جاوا اسکریپت رو به چندین حالت مختلف برنامه نویسی میتونیم بنویسیم یا انجام بدیم. برای سایت های کوچک و سایتی که استفاده خیلی کمی از جاوا اسکریپت استفاده میکنند شاید مورد مهمی به نظر نیاید اما برای سایت های وب ۲ [...]]]></description>
			<content:encoded><![CDATA[<p>بعضی اوقات پیش اومده که ما یک تابع یا کلا&#8221; انجام یک کاری توسط جاوا اسکریپت رو به چندین حالت مختلف برنامه نویسی میتونیم بنویسیم یا انجام بدیم. برای سایت های کوچک و سایتی که استفاده خیلی کمی از جاوا اسکریپت استفاده میکنند شاید مورد مهمی به نظر نیاید اما برای سایت های وب ۲ و سایت هایی که استفادی زیادی از تکنولوژی های جدید جاوا اسکریپت مثل آژاکس (Ajax) میکنند در نظر گرفتن زمان اجرا میتواند عامل بسیار مهمی باشد. البته باید در نظر داشت که کاربران امروزه از تب ها برای استفاده از سایت های مختلف اسفاده میکنند نه از پنجره های متعدد. و این عامل را حتما&#8221; باید در نظر داشت که وقتی شما موتور یک مرورگر را مثلا&#8221; برای اجرای جاوا اسکریپت در اختیار میگیرید، مسلما&#8221; برای تب های دیگر درصد کمتری اختصاص می یابد. بنابراین درصورتی که سایت شما کدهای سنگینی داشته باشد، علاوه بر سایت شما، باعث کند شدن مرورگر هم شده و کاربر را بشدت ناراضی میکند.<br />
و این ها دلایلی است که باعث میشود که زمان اجرای توابع جاوا اسکریپت برای ما اهمیت پیدا کند.<br />
در فایرباگ (Firebug) در قسمت Console تبی با نام Profile وجود دارد که این کار را انجام میدهد! برای مثال شما تابعی نوشته‌اید و میخواهید زمان اجرای آن را اندازه گیری کنید. برای این کار کافیست ابتدا یک بار دکمه Profile  را بزنید و سپس آن تابع را اجرا کنید. حال دوباره دکمه Profile را بزنید تا زمان اجرای آن را با تمام جزئیات ببینید.<br />
اگر قصد دارید چندین تابع را با هم مقایسه کنید، تمام توابع را بعد از زدن دکمه Profile اجرا کنید و اگر میخواهید کل اسکریپت(script) های سایت را بررسی کنید، بعد از زدن دکمه Profile صفحه را رفرش کنید و دوباره Profile را بزنید.<br />
برای مثال به عکس زیر توجه کنید.</p>
<p><a href="http://www.xn--mgbx7cghb83g.com/wp-content/uploads/2009/08/firebug-profile.jpg"><img class="alignnone size-medium wp-image-72" title="firebug-profile" src="http://www.xn--mgbx7cghb83g.com/wp-content/uploads/2009/08/firebug-profile-300x96.jpg" alt="" width="630" height="201" /></a><br />
من برای یک درخواست Ajax و اجرای یک تابع بعد از آن، کدی نوشتم (البته با استفاده از کتابخانه jQuery) و آنرا اجرا کردم که نتیجه آنرا میبینید.<br />
توابعی که نام آنها بصورت (?)() است، توابع داخلی هستند که نام خاصی ندارند. برای مثال:</p>
<pre name="code" class="js">

(function(){
//	Do something;
})();
</pre>
<p>ستون Calls تعداد دفعات اجرای هرکدام از توابع در مدت زمانی است که شما Profile را نگه میدارید. برای مثال تابع success یکبار اجرا شده است.<br />
ستون Percentage درصد زمان سپری شده نسبت به کل توابع  مورد بررسی قرار گرفته برای این تابع را نمایش میدهد.<br />
ستون Own Time مدت زمان اختصاصی هر تابع را نمایش میدهد. این زمان شامل مدت زمان سپری شده برای توابعی که از داخل این تابع فراخوانی شده اند، نمی باشد.<br />
ستون Time زمان کل هر تابع، با در نظر گرفتن تمام توابع فراخوانی شده از داخل آن میباشد.<br />
ستون های  Avg,Minو Max هم بترتیب میانگین، حداقل و حداکثر زمانها را برای هر تابع نمایش می دهد.<br />
در نهایت هم File، لینکی به آدرس فایلی که این تابع در آن قرار دارد برای دسترسی سریع تر برقرار کرده است.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xn--mgbx7cghb83g.com/1388/05/%d8%a7%d9%86%d8%af%d8%a7%d8%b2%d9%87%e2%80%8c%da%af%db%8c%d8%b1%db%8c-%d8%b2%d9%85%d8%a7%d9%86-%d8%a7%d8%ac%d8%b1%d8%a7%db%8c-%d8%aa%d9%88%d8%a7%d8%a8%d8%b9-%d8%ac%d8%a7%d9%88%d8%a7-%d8%a7%d8%b3%da%a9/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>خطای ۴۰۴ و مدیریت آن</title>
		<link>http://www.xn--mgbx7cghb83g.com/1388/04/%d8%ae%d8%b7%d8%a7%db%8c-404-%d9%88-%d9%85%d8%af%db%8c%d8%b1%db%8c%d8%aa-%d8%a2%d9%86/</link>
		<comments>http://www.xn--mgbx7cghb83g.com/1388/04/%d8%ae%d8%b7%d8%a7%db%8c-404-%d9%88-%d9%85%d8%af%db%8c%d8%b1%db%8c%d8%aa-%d8%a2%d9%86/#comments</comments>
		<pubDate>Sat, 18 Jul 2009 09:37:01 +0000</pubDate>
		<dc:creator>رحمان موسویان</dc:creator>
				<category><![CDATA[تجربه ها]]></category>
		<category><![CDATA[404]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[Not Found]]></category>

		<guid isPermaLink="false">http://www.xn--mgbx7cghb83g.com/?p=69</guid>
		<description><![CDATA[یک مشکلی که اخیرا&#8221; داشتیم این بود که تعدادی از کالاهای سایت عکس نداشتند و همین باعث میشد که علاوه بر اینکه عکس نمایش داده نشه و ظاهر سایت بهم بخوره، خطاهایی ناشی از فراخوانی تابع getimagesize هم در صفحه نمایش داده میشد.
خلاصه تصمیم بر این شد که عکسی بذاریم پیش فرض!، که اگه کالایی [...]]]></description>
			<content:encoded><![CDATA[<p>یک مشکلی که اخیرا&#8221; داشتیم این بود که تعدادی از کالاهای سایت عکس نداشتند و همین باعث میشد که علاوه بر اینکه عکس نمایش داده نشه و ظاهر سایت بهم بخوره، خطاهایی ناشی از فراخوانی تابع getimagesize هم در صفحه نمایش داده میشد.</p>
<p>خلاصه تصمیم بر این شد که عکسی بذاریم پیش فرض!، که اگه کالایی عکس نداشت موقتا&#8221; این عکس جایگزین بشه.</p>
<p>یک کاری که میشد انجام بدیم، اینکه سر هر جایی که فیلد آدرس عکس رو از پایگاه داده میخوندیم، شرط بذاریم ولی خیـــــلی بود!</p>
<p>پس دنبال راه بهتری که استفاده از فایل .htaccess بود،رفتیم.</p>
<p>به این صورت که اگه فایل .htaccess رو با محتوای زیر برای مثال در شاخه Folder قرار بدین، آن شاخه تمام زیر شاخه های آن مشمول این قانون میشوند.</p>
<p>پیدا نشدن فایل درخواستی مرورگر باعث میشه که سرور خطای ۴۰۴ رو برگرداند که ما این خطا رو میگیریم و redirect میکنیم به سمت عکس (یا بطور کلی صفحه)مورد نظر.</p>
<p>ErrorDocument 404 /notFound.htm</p>
<p>البته جز خطای ۴۰۴، بقیه خطاها هم قابل مدیریت شدن هستند. <a title="ErrorDocument Usage" href="http://cul.ir/0l" target="_blank">اطلاعات بیشتر</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.xn--mgbx7cghb83g.com/1388/04/%d8%ae%d8%b7%d8%a7%db%8c-404-%d9%88-%d9%85%d8%af%db%8c%d8%b1%db%8c%d8%aa-%d8%a2%d9%86/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>اعداد بزرگ در php 32 بیتی</title>
		<link>http://www.xn--mgbx7cghb83g.com/1388/04/%d8%a7%d8%b9%d8%af%d8%a7%d8%af-%d8%a8%d8%b2%d8%b1%da%af-%d8%af%d8%b1-php-32-%d8%a8%db%8c%d8%aa%db%8c/</link>
		<comments>http://www.xn--mgbx7cghb83g.com/1388/04/%d8%a7%d8%b9%d8%af%d8%a7%d8%af-%d8%a8%d8%b2%d8%b1%da%af-%d8%af%d8%b1-php-32-%d8%a8%db%8c%d8%aa%db%8c/#comments</comments>
		<pubDate>Sat, 04 Jul 2009 06:05:26 +0000</pubDate>
		<dc:creator>رحمان موسویان</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[large number]]></category>
		<category><![CDATA[اعداد بزرگ]]></category>

		<guid isPermaLink="false">http://www.xn--mgbx7cghb83g.com/?p=58</guid>
		<description><![CDATA[امروز نیاز به این داشتم که چک کنه یک عدد ۱۷ رقمی عدد هست یه نه(مثلا&#8221; رشته نباشه). قبلا&#8221; به این صورت استفاده میکردم:


&#60;?php
echo (double)$_GET[&#039;number&#039;];
?&#62;

اما خب این برای اعداد کمتر از ۱۰ رقمی هست.
برای حل این مشکل از تابع bcadd استفاده کردم که جمع دوعدد خیلی بزرگ رو میده، به این صورت:


&#60;?php
echo bcadd($_GET[&#039;number&#039;] , 0 [...]]]></description>
			<content:encoded><![CDATA[<p>امروز نیاز به این داشتم که چک کنه یک عدد ۱۷ رقمی عدد هست یه نه(مثلا&#8221; رشته نباشه). قبلا&#8221; به این صورت استفاده میکردم:</p>
<pre name="code" class="php">

&lt;?php
echo (double)$_GET[&#039;number&#039;];
?&gt;
</pre>
<p style="text-align: right;">اما خب این برای اعداد کمتر از ۱۰ رقمی هست.</p>
<p style="text-align: right;">برای حل این مشکل از تابع bcadd استفاده کردم که جمع دوعدد خیلی بزرگ رو میده، به این صورت:</p>
<pre name="code" class="php">

&lt;?php
echo bcadd($_GET[&#039;number&#039;] , 0 );
?&gt;
</pre>
<p>اگه در برنامه ای نیاز به محاسبات اعداد بزرگ داشتید میتونید به <a title="ref.bc" href="http://php.net/manual/en/ref.bc.php" target="_blank">این جا</a> مراجعه کنید و توضیح php رو راجع به آن بخونید.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xn--mgbx7cghb83g.com/1388/04/%d8%a7%d8%b9%d8%af%d8%a7%d8%af-%d8%a8%d8%b2%d8%b1%da%af-%d8%af%d8%b1-php-32-%d8%a8%db%8c%d8%aa%db%8c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Browsers CSS Hack</title>
		<link>http://www.xn--mgbx7cghb83g.com/1388/02/browsers-css-hack/</link>
		<comments>http://www.xn--mgbx7cghb83g.com/1388/02/browsers-css-hack/#comments</comments>
		<pubDate>Wed, 20 May 2009 21:34:01 +0000</pubDate>
		<dc:creator>رحمان موسویان</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Damn ie]]></category>
		<category><![CDATA[Mozilla FireFox]]></category>
		<category><![CDATA[browser css hack]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[opera]]></category>
		<category><![CDATA[safari]]></category>

		<guid isPermaLink="false">http://www.xn--mgbx7cghb83g.com/?p=56</guid>
		<description><![CDATA[بوسیله این css میشه یک استایل متفاوت برای هریک از اجزای صفحه برای مرورگرهای متفاوت نوشت.
خیلی بکار میاد.


/***** Selector Hacks ******/

/* IE 6 and below */
* html #uno  { color: red }

/* IE 7 and below */
*:first-child+html #dos { color: red }

/* IE 7 and modern browsers */
html &#62; body #tres { color: red [...]]]></description>
			<content:encoded><![CDATA[<p>بوسیله این css میشه یک استایل متفاوت برای هریک از اجزای صفحه برای مرورگرهای متفاوت نوشت.<br />
خیلی بکار میاد.</p>
<pre name="code" class="css">

/***** Selector Hacks ******/

/* IE 6 and below */
* html #uno  { color: red }

/* IE 7 and below */
*:first-child+html #dos { color: red }

/* IE 7 and modern browsers */
html &gt; body #tres { color: red }

/* Modern browsers (not IE 7) */
html&gt;/**/body #cuatro { color: red }

/* Opera 9.27 and below */
html:first-child #cinco { color: red }

/* Safari */
html[xmlns*=&quot;&quot;] body:last-child #seis { color: red }

/*safari 3+, chrome 1+, opera9+, ff 3.5+ */
body:nth-of-type(1) #siete { color: red }

/* safari 3+, chrome 1+, opera9+, ff 3.5+ */
body:first-of-type #ocho {  color: red }

/* saf3, chrome1+ */
@media screen and (-webkit-min-device-pixel-ratio:0) {

#diez  { background: #FFDECE; border: 2px solid #ff0000  }
}

/***** Attribute Hacks ******/

/* ie6 and below */
#once { _color:blue }

/* ie7 and below */
#doce { *color: blue } /* or #color:blue */
/* &#039;Modern Browsers&#039; includes IE8, whether you agree or not.. :) */
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.xn--mgbx7cghb83g.com/1388/02/browsers-css-hack/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>گیفت سنتر</title>
		<link>http://www.xn--mgbx7cghb83g.com/1388/02/%da%af%db%8c%d9%81%d8%aa-%d8%b3%d9%86%d8%aa%d8%b1/</link>
		<comments>http://www.xn--mgbx7cghb83g.com/1388/02/%da%af%db%8c%d9%81%d8%aa-%d8%b3%d9%86%d8%aa%d8%b1/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 09:34:52 +0000</pubDate>
		<dc:creator>رحمان موسویان</dc:creator>
				<category><![CDATA[دسته‌بندی نشده‌ها]]></category>

		<guid isPermaLink="false">http://www.xn--mgbx7cghb83g.com/?p=53</guid>
		<description><![CDATA[گیفت سنتر (فروشگاه اینترنتی) در دومین جشنواره وب ایران کاندید شده است.
لینک خبر » http://www.webna.ir/news/?id=-703910829
]]></description>
			<content:encoded><![CDATA[<p>گیفت سنتر (فروشگاه اینترنتی) در دومین جشنواره وب ایران کاندید شده است.</p>
<p>لینک خبر » <a href="http://www.webna.ir/news/?id=-703910829">http://www.webna.ir/news/?id=-703910829</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.xn--mgbx7cghb83g.com/1388/02/%da%af%db%8c%d9%81%d8%aa-%d8%b3%d9%86%d8%aa%d8%b1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>GWT (Google Web Toolkit)</title>
		<link>http://www.xn--mgbx7cghb83g.com/1388/02/gwt-google-web-toolkit/</link>
		<comments>http://www.xn--mgbx7cghb83g.com/1388/02/gwt-google-web-toolkit/#comments</comments>
		<pubDate>Fri, 24 Apr 2009 15:57:49 +0000</pubDate>
		<dc:creator>رحمان موسویان</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[gwt]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[googlw web toolkit]]></category>

		<guid isPermaLink="false">http://www.xn--mgbx7cghb83g.com/?p=51</guid>
		<description><![CDATA[برگرفته از knol.google.com
چکیده فارسی
 ماموریت GWT بهبود ریشه ای کیفیت appهای تحت وب, با قادر ساختن توسعه گرها به استفاده از ابزارهای فعلی جاوا در تولید appهای Ajax با کیفیت بالا برای تمام مرورگرهای مدرن است.GWT گام بزرگی جهت کم کردن فاصله appهای وب با appهای ویندوز است. GWT انتخاب مناسبی برای تولید Enterprise application [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: right;" dir="rtl">برگرفته از knol.google.com</p>
<p style="text-align: right;" dir="rtl"><span style="color: red; font-family: Arial,sans-serif;" lang="AR-SA">چکیده فارسی</span></p>
<p style="text-align: right;" dir="rtl"><span style="font-family: Arial,sans-serif;" lang="FA"> ماموریت </span><span dir="ltr">GWT</span><span style="font-family: Arial,sans-serif;" lang="FA"> بهبود ریشه ای کیفیت </span><span dir="ltr">app</span><span style="font-family: Arial,sans-serif;" lang="FA">های تحت وب, با قادر ساختن توسعه گرها به استفاده از ابزارهای فعلی جاوا در تولید </span><span dir="ltr">app</span><span style="font-family: Arial,sans-serif;" lang="FA">های </span><span dir="ltr">Ajax</span><span style="font-family: Arial,sans-serif;" lang="FA"> با کیفیت بالا برای تمام مرورگرهای مدرن است.</span><span dir="ltr">GWT</span><span style="font-family: Arial,sans-serif;" lang="FA"> گام بزرگی جهت کم کردن فاصله </span><span dir="ltr">app</span><span style="font-family: Arial,sans-serif;" lang="FA">های وب با </span><span dir="ltr">app</span><span style="font-family: Arial,sans-serif;" lang="FA">های ویندوز است. </span><span dir="ltr">GWT</span><span style="font-family: Arial,sans-serif;" lang="FA"> انتخاب مناسبی برای تولید </span><span dir="ltr">Enterprise application</span><span style="font-family: Arial,sans-serif;" lang="FA"> ی تحت اینترانت و اینترنت است.</span></p>
<div style="text-align: right;"></div>
<p style="text-align: right;" dir="rtl"><span style="color: red; font-family: Arial,sans-serif;" lang="AR-SA">کلمات کلیدی<span> </span></span><span dir="ltr">GWT – Google Web Toolkit – Ajax Java Framework – Google Ajax Compiler</span></p>
<div style="text-align: right;"></div>
<p style="text-align: right;" dir="rtl"><span style="color: red; font-family: Arial,sans-serif;" lang="AR-SA"> </span></p>
<div style="text-align: right;"></div>
<p style="text-align: right;" dir="rtl"><span style="color: red; font-family: Arial,sans-serif;" lang="AR-SA">متن <span><span style="font-family: Arial,sans-serif;">کامل</span></span></span></p>
<div style="text-align: right;"></div>
<p style="color: #ff0000; text-align: right;" dir="rtl"><span><span style="font-family: Arial,sans-serif;" lang="AR-SA">مقدمه</span></span></p>
<div style="text-align: right;"></div>
<p style="text-align: right;" dir="rtl"><span style="font-family: Arial,sans-serif;" lang="AR-SA"><span> </span></span><span style="font-family: Arial,sans-serif;" lang="FA">از اوایل سال </span><span dir="ltr">۲۰۰۵</span><span style="font-family: Arial,sans-serif;" lang="FA">, که </span><span dir="ltr">Ajax </span><span style="font-family: Arial,sans-serif;" lang="FA"><span> </span>توسط<span> </span>یک معمار اطلاعات معرفی شد تا بحال تکنولوژی ها و ابزارهای زیادی مبتنی بر آن ارائه شده است و جالب است که پس از گذشت ۲۰سال, برنامه نویس های </span><span dir="ltr">Ajax</span><span style="font-family: Arial,sans-serif;" lang="FA"> با مشکلاتی دست و پنجه نرم می کنند که برنامه نویسهای آن زمان در برنامه های </span><span dir="ltr">TSR</span><span style="font-family: Arial,sans-serif;" lang="FA"> تحت </span><span dir="ltr">DOS</span><span style="font-family: Arial,sans-serif;" lang="FA"><span> </span>با آن روبرو بودند. البته خیلی از این مشکلات توسط </span><span dir="ltr">framework</span><span style="font-family: Arial,sans-serif;" lang="FA"> ها مختلفی که برای </span><span dir="ltr">Ajax</span><span style="font-family: Arial,sans-serif;" lang="FA"> ارائه شده است , برطرف شده است. مثلا در </span><span dir="ltr">ATLAS</span><span style="font-family: Arial,sans-serif;" lang="FA"> که مایکروسافت ارئه کرده است,<span> </span>برنامه نویسی </span><span dir="ltr">Ajax</span><span style="font-family: Arial,sans-serif;" lang="FA"> بسیار ساده شده است ولی جالب است که خود مایکروسافت تمایل زیادی به استفاده از آن ندارد! مایکروسافت در واقع به همان اندازه که <span> </span>کار را ساده کرده است, از کیفیت و کارایی آن نیز کاسته است به نحوی که برنامه نویسها در حین کار با </span><span dir="ltr">Atlas</span><span style="font-family: Arial,sans-serif;"> <span lang="FA">بزودی متوجه می شوند که اساسا خیلی از کارها را با </span></span><span dir="ltr">Atlas</span><span style="font-family: Arial,sans-serif;"> <span lang="FA">نمی توانند انجام بدهند و در مواردی که انجام می شود سرعت و قابلیت اطمینان آن رضایتبخش نیست. از بین تمام پیاده سازیهایی که از </span></span><span dir="ltr">Ajax </span><span style="font-family: Arial,sans-serif;" lang="FA"><span> </span>شده شاید بتوان </span><span dir="ltr">Gmail</span><span style="font-family: Arial,sans-serif;" lang="FA"> و </span><span dir="ltr">Google Map</span><span style="font-family: Arial,sans-serif;" lang="FA"> را جز بهترین به حساب آورد, به نحوی که شرکت های معظمی مانند یاهو و مایکروسافت هنوز نتوانسته اند محصولات قابل رقابتی با آنها ارائه کنند.</span></p>
<div style="text-align: right;"></div>
<p style="text-align: right;" dir="rtl"><span style="font-family: Arial,sans-serif;" lang="FA"><span> </span>در اقدامی غیر منتظره در ماه می ۲۰۰۶, گوگل</span><span dir="ltr" lang="FA"> </span><span style="font-family: Arial,sans-serif;" lang="FA"><span> </span>اقدام به ارائه </span><span dir="ltr">framework</span><span style="font-family: Arial,sans-serif;" lang="FA">ی برای تولید </span><span dir="ltr">app</span><span style="font-family: Arial,sans-serif;" lang="FA">های </span><span dir="ltr">Ajax</span><span style="font-family: Arial,sans-serif;" lang="FA">, مبتنی بر تجربه موفق </span><span dir="ltr">gamil</span><span style="font-family: Arial,sans-serif;" lang="FA"> و </span><span dir="ltr">google map</span><span style="font-family: Arial,sans-serif;"> <span lang="FA">نمود.همان گونه که از گوگل</span></span><span dir="ltr" lang="FA"> </span><span style="font-family: Arial,sans-serif;" lang="FA"><span> </span>انتظار می رود, </span><span dir="ltr">GWT</span><span style="font-family: Arial,sans-serif;" lang="FA"> کاری بزرگ , باکیفیت و سرشار از ایده های نو است, که انتظار می رود تحول بزرگی را در تولید نرم افزار</span><span dir="ltr" lang="FA"> </span><span style="font-family: Arial,sans-serif;" lang="FA"><span> </span>ایجاد کند و در بسیاری از موارد, انتخاب بهتری از </span><span dir="ltr">app</span><span style="font-family: Arial,sans-serif;" lang="FA">های معمولی ویندوز(</span><span dir="ltr">rich client</span><span style="font-family: Arial,sans-serif;" lang="FA">) <span> </span>و یا وب باشد.</span></p>
<div style="text-align: right;"></div>
<p style="color: #ff0000; text-align: right;" dir="rtl"><span dir="ltr">GWT</span></p>
<div style="text-align: right;"></div>
<p style="text-align: right;" dir="rtl"><span dir="ltr">Google web toolkit</span><span style="font-family: Arial,sans-serif;" lang="FA"> یک </span><span dir="ltr">framework</span><span style="font-family: Arial,sans-serif;" lang="FA"> سورس باز جاوا است که به شما امکان می دهد که از تکنولوژهایی که تولید </span><span dir="ltr">app</span><span style="font-family: Arial,sans-serif;" lang="FA">های </span><span dir="ltr">Ajax</span><span style="font-family: Arial,sans-serif;" lang="FA"> را دشوار و مستعد باگ می کنند, رهایی یابید. با </span><span dir="ltr">GWT</span><span style="font-family: Arial,sans-serif;" lang="FA"> می توانید </span><span dir="ltr">app</span><span style="font-family: Arial,sans-serif;" lang="FA">های </span><span dir="ltr">java</span><span style="font-family: Arial,sans-serif;" lang="FA"> را با ابزارهای دلخواه </span><span dir="ltr">java</span><span style="font-family: Arial,sans-serif;"> <span lang="FA">توسعه و دیباگ کنید. زمانی که کار شما آماده ارائه به تولید شد, کامپایلر </span></span><span dir="ltr">GWT</span><span style="font-family: Arial,sans-serif;" lang="FA"> آن را به </span><span dir="ltr">javascript</span><span style="font-family: Arial,sans-serif;" lang="FA"> و </span><span dir="ltr">html</span><span style="font-family: Arial,sans-serif;" lang="FA"> ی که با انواع مرورگرها سازگاری دارد, ترجمه می کند.</span></p>
<div style="text-align: right;"></div>
<p style="text-align: right;" dir="rtl"><span style="font-family: Arial,sans-serif;" lang="FA">تفاوت </span><span dir="ltr">GWT </span><span style="font-family: Arial,sans-serif;" lang="FA"><span> </span>با </span><span dir="ltr">framework</span><span style="font-family: Arial,sans-serif;" lang="FA">های دیگر این است که شما کد سمت مرورگر را بجای </span><span dir="ltr">javascript</span><span style="font-family: Arial,sans-serif;" lang="FA"> با </span><span dir="ltr">java</span><span style="font-family: Arial,sans-serif;" lang="FA"> می نویسید. و این به این معنی است که شما از منابع و ابزارهای بسیار زیادی که هم اکنون در </span><span dir="ltr">java </span><span style="font-family: Arial,sans-serif;" lang="FA"><span> </span>موجود است, در طرف مرورگر(</span><span dir="ltr">client side</span><span style="font-family: Arial,sans-serif;" lang="FA">) استفاده کنید. همچنین شما می توانید از مزایای </span><span dir="ltr">OOP</span><span style="font-family: Arial,sans-serif;" lang="FA"> مانند </span><span dir="ltr">encapsulation </span><span style="font-family: Arial,sans-serif;" lang="FA"><span> </span>و ارث بری در طرف مرور گر بهره مند شوید و همچنین می توانید کد طرف مرورگر را به صورت واقعی دیباگ کنید. هسته </span><span dir="ltr">GWT </span><span style="font-family: Arial,sans-serif;" lang="FA"><span> </span>یک کامپایلر </span><span dir="ltr">java</span><span style="font-family: Arial,sans-serif;" lang="FA"> به </span><span dir="ltr">javascript </span><span style="font-family: Arial,sans-serif;" lang="FA"><span> </span>است که کد جاوا اسکریپت سازگار با مرورگرهای </span><span dir="ltr" lang="FA"><span> </span></span><span dir="ltr">Internet Explorer, Firefox, Mozilla, Safari </span><span style="font-family: Arial,sans-serif;" lang="FA">و</span><span dir="ltr"> Opera</span><span style="font-family: Arial,sans-serif;" lang="FA"> را تولید می کند. به همراه </span><span dir="ltr">GWT</span><span style="font-family: Arial,sans-serif;" lang="FA"> یک کتابخانه از کنترلهای متدوال مانند منو, پنل, کلید, درخت و &#8230;. عرضه شده است.</span></p>
<div style="text-align: right;"></div>
<p style="text-align: right;" dir="rtl"><span dir="ltr"></p>
<div style="display: block; text-align: left;"><a style="background-color: transparent;" href="http://knol.google.com/k/-/-/2qyamibnyr984/4sr2ce/1111%20%281%29.bmp"><img src="http://knol.google.com/k/-/-/2qyamibnyr984/4sr2ce/1111%20%281%29.bmp" alt="" /></a></div>
<p></span></p>
<div style="text-align: right;"></div>
<p style="text-align: right;" dir="rtl"><span style="font-family: Arial,sans-serif;" lang="FA"> </span></p>
<div style="text-align: right;"></div>
<p style="color: #ff0000; text-align: right;" dir="rtl"><strong><span style="font-family: Arial,sans-serif;" lang="AR-SA">ساختار </span><span dir="ltr">GWT</span></strong></p>
<div style="text-align: right;"></div>
<p style="text-align: right;" dir="rtl"><span style="font-family: Arial,sans-serif;" lang="FA"> </span></p>
<div style="text-align: right;"></div>
<p style="text-align: right;" dir="rtl"><span dir="ltr"></p>
<div style="display: block; text-align: left;"><a style="background-color: transparent;" href="http://knol.google.com/k/-/-/2qyamibnyr984/4sr2ce/11111.jpg"><img src="http://knol.google.com/k/-/-/2qyamibnyr984/4sr2ce/11111.jpg" alt="" /></a></div>
<p></span></p>
<div style="text-align: right;"></div>
<p style="text-align: right;" dir="rtl"><span style="text-decoration: underline;"><span dir="ltr">GWT</span></span><span style="text-decoration: underline;"><span style="font-family: Arial,sans-serif;" lang="FA"> ابزارهای جامعی را درخور چالشهایی که برای تولید </span></span><span style="text-decoration: underline;"><span dir="ltr">rich internet application</span></span><span style="text-decoration: underline;"><span style="font-family: Arial,sans-serif;" lang="FA"> وجود دارد, گرد هم آورده است</span></span><span style="font-family: Arial,sans-serif;" lang="FA">.</span></p>
<div style="text-align: right;"></div>
<p style="text-align: right;" dir="rtl"><span style="font-family: Arial,sans-serif;" lang="FA"> </span></p>
<div style="text-align: right;"></div>
<p style="color: #ff0000; text-align: right;" dir="rtl"><strong><span dir="ltr">Java to js compiler</span></strong></p>
<p style="text-align: right;" dir="rtl"><span style="font-family: Arial,sans-serif;" lang="FA">در طرف مرورگر کدهای جاوا را به جاوا اسکریپت تبدیل می کند.</span></p>
<div style="text-align: right;"></div>
<p style="color: #ff0000; text-align: right;" dir="rtl"><strong><span dir="ltr">JSNI</span></strong></p>
<p style="text-align: right;" dir="rtl"><span style="font-family: Arial,sans-serif;" lang="FA"> کار فراخوانی مستقیم کد جاوا اسکریپت از جاوا را انجام می دهد.</span></p>
<div style="text-align: right;"></div>
<p style="text-align: right;" dir="rtl"><strong style="color: #ff0000;"><span dir="ltr">JRE Emulation</span></strong><strong><span style="font-family: Arial,sans-serif;" lang="FA"><br />
</span></strong></p>
<p style="text-align: right;" dir="rtl"><strong><span style="font-family: Arial,sans-serif;" lang="FA"> </span></strong><span style="font-family: Arial,sans-serif;" lang="FA">یک زیر مجموعه از </span><span dir="ltr">Java runtime library</span><span style="font-family: Arial,sans-serif;" lang="FA"> که برای برنامه نویسی سمت </span><span dir="ltr">Client</span><span style="font-family: Arial,sans-serif;" lang="FA"> استفاده می شود.</span></p>
<div style="text-align: right;"></div>
<p style="color: #ff0000; text-align: right;" dir="rtl"><strong><span dir="ltr">Widgets and Panels</span></strong></p>
<p style="text-align: right;" dir="rtl"><span style="font-family: Arial,sans-serif;" lang="FA">مجموعه ای از کنترلها که در </span><span dir="ltr">GWT</span><span style="font-family: Arial,sans-serif;" lang="FA"> برای ساختن </span><span dir="ltr">UI</span><span style="font-family: Arial,sans-serif;" lang="FA"> از آن استفاده می شود.</span></p>
<div style="text-align: right;"></div>
<p style="color: #ff0000; text-align: right;" dir="rtl"><strong><span dir="ltr">I18N</span></strong></p>
<p style="text-align: right;" dir="rtl"><span style="font-family: Arial,sans-serif;" lang="FA"> چند تکنیک برای بین المللی کردن <span> </span></span><span dir="ltr">app</span><span style="font-family: Arial,sans-serif;"> <span lang="FA"><span> </span>و تنظمیات مرتبط با آن ارائه می کند.</span></span></p>
<div style="text-align: right;"></div>
<p style="text-align: right;" dir="rtl"><strong style="color: #ff0000;"><span dir="ltr">RPC</span></strong><strong><span style="font-family: Arial,sans-serif;" lang="FA"><br />
</span></strong></p>
<p style="text-align: right;" dir="rtl"><strong><span style="font-family: Arial,sans-serif;" lang="FA"> </span></strong><span style="font-family: Arial,sans-serif;" lang="FA">پیاده سازی گوگل از </span><span dir="ltr">remote procedure call</span><span style="font-family: Arial,sans-serif;" lang="FA"> برای ارتباط برقرار کردن کدهای </span><span dir="ltr">client</span><span style="font-family: Arial,sans-serif;" lang="FA"> با کدهای سمت سرور.</span></p>
<div style="text-align: right;"></div>
<p style="color: #ff0000; text-align: right;" dir="rtl"><strong><span dir="ltr">XML Parser</span></strong></p>
<p style="text-align: right;" dir="rtl"><strong><span style="font-family: Arial,sans-serif;" lang="FA"><span> </span></span></strong><span style="font-family: Arial,sans-serif;" lang="FA">با توجه با اهمیت و گسترش روز افزون </span><span dir="ltr">XML</span><span style="font-family: Arial,sans-serif;" lang="FA">, </span><span dir="ltr">GWT </span><span style="font-family: Arial,sans-serif;" lang="FA"><span> </span>کلاسهایی را برای کار با آن فراهم آورده است.</span></p>
<div style="text-align: right;"></div>
<p style="text-align: right;" dir="rtl"><strong style="color: #ff0000;"><em><span style="font-family: Cambria,serif;" dir="ltr">Managing the browser history</span></em></strong><span style="font-family: Arial,sans-serif;" lang="FA"><br />
</span></p>
<p style="text-align: right;" dir="rtl"><span style="font-family: Arial,sans-serif;" lang="FA">یکی از اشکالات موجهی که به </span><span style="font-family: Cambria,serif;" dir="ltr">rich internet application</span><span style="font-family: Arial,sans-serif;" lang="FA"> ها گرفته می شود این است که آنها کلید برگشت مرورگر</span><span style="font-family: Cambria,serif;" dir="ltr">(back button)</span><span style="font-family: Arial,sans-serif;" lang="FA"> را نقض می کنند. این از آنجا ناشی می شود که وقتی شما با جاوااسکریپت محتوای صفحه را به صورت داینامیک عوض می کنید, کاربر انتظار دارد که با زدن کلید برگشت به حالت قبل بازگردد, ولی این اتفاق می افتد<span> </span>چونکه مرورگر متوجه تغییرات داینامیک شما نمی شود. </span><span style="font-family: Cambria,serif;" dir="ltr">GWT</span><span style="font-family: Arial,sans-serif;" lang="FA"> این مشکل را برطرف نموده است.</span></p>
<div style="text-align: right;"></div>
<p style="text-align: right;" dir="rtl"><span style="font-family: Arial,sans-serif;" lang="FA"> </span></p>
<div style="text-align: right;"></div>
<p style="text-align: right;" dir="rtl"><strong style="color: #ff0000;"><span style="font-family: Cambria,serif;" dir="ltr">JUnit Integration</span></strong><strong><span style="font-family: Arial,sans-serif;" lang="FA"><br />
</span></strong></p>
<p style="text-align: right;" dir="rtl"><strong><span style="font-family: Arial,sans-serif;" lang="FA"> </span></strong><span style="font-family: Arial,sans-serif;" lang="FA">همیشه نوشتن کدهایی برای تست برنامه به صورت اتوماتیک, تکنیک خوبی محسوب می شود. در حال حاضر </span><span style="font-family: Cambria,serif;" dir="ltr">framework</span><span style="font-family: Arial,sans-serif;" lang="FA">های متعددی سالهاست که این پروسه را ساده تر کرده اند, </span><span style="font-family: Cambria,serif;" dir="ltr">JUnit</span><span style="font-family: Arial,sans-serif;" lang="FA"> یکی از بهترین آنها برای توسعه گرهای جاوا<span> </span>است.</span><span style="font-family: Cambria,serif;" dir="ltr" lang="FA"> </span><span style="font-family: Cambria,serif;" dir="ltr">GWT </span><span style="font-family: Arial,sans-serif;" lang="FA"><span> </span>بجای نوشتن این </span><span style="font-family: Cambria,serif;" dir="ltr">framework</span><span style="font-family: Arial,sans-serif;" lang="FA"> از ابتدا, از </span><span style="font-family: Cambria,serif;" dir="ltr">JUint</span><span style="font-family: Arial,sans-serif;" lang="FA"> پشتیبانی می کند.</span></p>
<div style="text-align: right;"></div>
<p style="text-align: right;" dir="rtl"><span style="font-family: Arial,sans-serif;" lang="FA"> </span></p>
<div style="text-align: right;"></div>
<p style="color: #ff0000; text-align: right;" dir="rtl"><strong><span style="font-family: Arial,sans-serif;" lang="AR-SA">مزایا</span></strong></p>
<div style="text-align: right;"></div>
<p style="text-align: right;" dir="rtl"><strong><span style="font-family: Arial,sans-serif;" lang="FA"><span style="color: #ff0000;">زمان توسعه</span><br />
</span></strong></p>
<p style="text-align: right;" dir="rtl"><span dir="ltr">GWT</span><span style="font-family: Arial,sans-serif;" lang="FA"> با فراهم آوردن امکان استفاده از جاوا در سمت کلاینت و سرور, امکان دیباگ واقعی هر دو طرف, استفاده از </span><span dir="ltr">OOP</span><span style="font-family: Arial,sans-serif;" lang="FA"> در سمت </span><span dir="ltr">UI</span><span style="font-family: Arial,sans-serif;" lang="FA"> , بعهده گرفته سازگار بودن کد تولید شده با انواع مرورگرها, فراهم آوردن امکان استفاده از ابزارها و </span><span dir="ltr">framework</span><span style="font-family: Arial,sans-serif;" lang="FA">های موجود جاوا, صرفه جویی بسیار زیادی را در زمان توسعه و پشتیبانی </span><span dir="ltr">app</span><span style="font-family: Arial,sans-serif;" lang="FA">های </span><span dir="ltr">Ajax</span><span style="font-family: Arial,sans-serif;" lang="FA"> به همراه دارد.</span></p>
<div style="text-align: right;"></div>
<p style="color: #ff0000; text-align: right;" dir="rtl"><strong><span style="font-family: Arial,sans-serif;" lang="FA">سرعت و کیفیت اجرا</span></strong></p>
<p style="text-align: right;" dir="rtl"><strong><span style="font-family: Arial,sans-serif;" lang="FA"> </span></strong><span dir="ltr">app</span><span style="font-family: Arial,sans-serif;" lang="FA">های </span><span dir="ltr">GWT</span><span style="font-family: Arial,sans-serif;" lang="FA"> همیشه به<strong> </strong>اندازه </span><span dir="ltr">app</span><span style="font-family: Arial,sans-serif;" lang="FA">هایی </span><span dir="ltr">javascript</span><span style="font-family: Arial,sans-serif;" lang="FA"> که با دست نوشته می شوند, سریع اجرا می شوند. تیم </span><span dir="ltr">GWT</span><span style="font-family: Arial,sans-serif;" lang="FA"> وسواس بسیار زیادی در این زمینه به خرج داده است مثلا تمام تصاویر صفحه را در سمت سرور به یک تصویر تبدیل می کند و در سمت کلاینت فقط بایک </span><span dir="ltr">request</span><span style="font-family: Arial,sans-serif;" lang="FA"> آن را دریافت, و به تصاویر اصلی می شکند.</span><span dir="ltr">GWT</span><span style="font-family: Arial,sans-serif;" lang="FA"> همچنین در انتخاب اسم متغیرها و حتی فضای خالی بین کدها بهینه عمل کرده است. در نسخه اخیر </span><span dir="ltr">GWT</span><span style="font-family: Arial,sans-serif;" lang="FA">(1.4), برای<span> </span>دریافت جاوا اسکریپت و </span><span dir="ltr">CSS</span><span style="font-family: Arial,sans-serif;" lang="FA"> ها از طرف از سرور, از متد </span><span dir="ltr">PKZip</span><span style="font-family: Arial,sans-serif;" lang="FA"> استفاده شده است.</span></p>
<div style="text-align: right;"></div>
<p style="text-align: right;" dir="rtl"><strong><span style="font-family: Arial,sans-serif;" lang="FA"><span style="color: #ff0000;">اندازه جاوا اسکریپت تولید شده</span><br />
</span></strong></p>
<p style="text-align: right;" dir="rtl"><span style="font-family: Arial,sans-serif;" lang="FA">اندازه جاوااسکریپت تولید شده برای <strong><span> </span></strong>یک برنامه کاربردی معمولی</span><span dir="ltr">GWT </span><span style="font-family: Arial,sans-serif;" lang="FA"><span> </span>با تمام امکانات<span> </span>حدود ۱۰۰ کیلوبایت خواهد بود, که قابل </span><span dir="ltr">cache</span><span style="font-family: Arial,sans-serif;" lang="FA"> شدن بوسیله مرورگر نیز می باشد, بعد از آن فقط تکه های کوچک اطلاعات هستند که رد و بدل می شوند.</span></p>
<div style="text-align: right;"></div>
<p style="color: #ff0000; text-align: right;" dir="rtl"><strong><span style="font-family: Arial,sans-serif;" lang="FA">پهنای باند مورد استفاده</span></strong></p>
<p style="text-align: right;" dir="rtl"><strong><span style="font-family: Arial,sans-serif;" lang="FA"> </span></strong><strong><span dir="ltr">GWT</span></strong><strong><span style="font-family: Arial,sans-serif;"> </span></strong><span style="font-family: Arial,sans-serif;" lang="FA">مانند </span><span dir="ltr">app</span><span style="font-family: Arial,sans-serif;" lang="FA">های معمولی وب </span><span dir="ltr">postback </span><span style="font-family: Arial,sans-serif;" lang="FA">ندارد و فقط اطلاعات مورد نیاز هستند که رد و بدل می شوند, در مقایسه با </span><span dir="ltr">app</span><span style="font-family: Arial,sans-serif;" lang="FA">های معمولی وب که حتی با تیک زدن یک </span><span dir="ltr">checkbox</span><span style="font-family: Arial,sans-serif;" lang="FA"> کل صفحه </span><span dir="ltr">postback</span><span style="font-family: Arial,sans-serif;" lang="FA"> می شود و دوباره </span><span dir="ltr">load </span><span style="font-family: Arial,sans-serif;" lang="FA"><span> </span>می گردد, پهنای باند و ترافیک شبکه به طور قابل توجه ای صرفه جویی می شود.</span></p>
<div style="text-align: right;"></div>
<p style="color: #ff0000; text-align: right;" dir="rtl"><strong><span style="font-family: Arial,sans-serif;" lang="FA">امنیت</span></strong></p>
<p style="text-align: right;" dir="rtl"><strong><span style="font-family: Arial,sans-serif;" lang="FA"> </span></strong><span dir="ltr">GWT</span><span style="font-family: Arial,sans-serif;" lang="FA"> اطلاعات کمتری را در سمت کلاینت باقی می گذارد که به صورت </span><span dir="ltr">javascript</span><span style="font-family: Arial,sans-serif;"> <span lang="FA">فشرده شده است و قابلیت خوانایی ندارد, در نتیجه امنیت بهتری حاصل می شود</span></span></p>
<div style="text-align: right;"></div>
<p style="text-align: right;" dir="rtl"><strong style="color: #ff0000;"><span style="font-family: Arial,sans-serif;" lang="FA">حل مشکلات پرداخت </span></strong><strong style="color: #ff0000;"><span dir="ltr">online</span></strong><strong><span style="font-family: Arial,sans-serif;" lang="FA"><br />
</span></strong></p>
<p style="text-align: right;" dir="rtl"><strong><span style="font-family: Arial,sans-serif;" lang="FA"> </span></strong><span dir="ltr">GWT</span><span style="font-family: Arial,sans-serif;" lang="FA"> برای مشکلاتی که به هنگام پرداخت آنلاین پیش می آید, راه حلهای قطعی ارائه می دهد(حداقل در تئوری).</span></p>
<div style="text-align: right;"></div>
<p style="text-align: right;" dir="rtl"><strong style="color: #ff0000;"><span style="font-family: Arial,sans-serif;" lang="FA">عدم وابستگی به </span></strong><strong style="color: #ff0000;"><span dir="ltr">platform</span></strong><strong><span style="font-family: Arial,sans-serif;" lang="FA"><br />
</span></strong></p>
<p style="text-align: right;" dir="rtl"><span dir="ltr">GWT</span><span style="font-family: Arial,sans-serif;" lang="FA"> مبتنی بر جاوا است و کد تولید شده توسط آن جاوااسکریپت و </span><span dir="ltr">HTML</span><span style="font-family: Arial,sans-serif;" lang="FA"> معمولی است که باعث می شود به </span><span dir="ltr">plateform</span><span style="font-family: Arial,sans-serif;" lang="FA"> وابسته نباشد.</span></p>
<div style="text-align: right;"></div>
<p style="color: #ff0000; text-align: right;" dir="rtl"><strong><span style="font-family: Arial,sans-serif;" lang="FA">سورس باز</span></strong></p>
<p style="text-align: right;" dir="rtl"><strong><span dir="ltr" lang="FA"> </span></strong><span dir="ltr" lang="FA"><span> </span></span><span dir="ltr">GWT</span><span style="font-family: Arial,sans-serif;" lang="FA"> سورس باز(</span><span dir="ltr">Open source</span><span style="font-family: Arial,sans-serif;" lang="FA">) است که کمک زیادی به توسعه اجزاء و درک مکانیزمهای آن می کند. همچنین تجربه نشان داده است که پروژهای سورس باز به دلیل داشتن توسعه گرها یی که در تمام جهان پراکنده هستند, بهتر پیشرفت می کنند و پشتیبانی بهتری دارند.</span></p>
<div style="text-align: right;"></div>
<p style="text-align: right;" dir="rtl"><span style="font-family: Arial,sans-serif;" lang="AR-SA">معایب</span></p>
<div style="text-align: right;"></div>
<p style="color: #ff0000; text-align: right;" dir="rtl"><strong><span dir="ltr">SEO</span></strong><span style="font-family: Arial,sans-serif;" lang="FA"><br />
</span></p>
<p style="text-align: right;" dir="rtl"><span style="font-family: Arial,sans-serif;" lang="FA">شرکتهایی که از </span><span dir="ltr">GWT</span><span style="font-family: Arial,sans-serif;" lang="FA"> برای پیاده سازی وب سایت ها استفاده می کنند ممکن است با این مشکل روبرو شوند که موتورهای جستجو محتوای صفحات آنها را اندیکس نمی کند. این مشکل در واقع مربوط به تمام<span> </span>وب سایتهای داینامیک می گردد و از آنجا ناشی می شود که وقتی محتوای صفحات بوسیله </span><span dir="ltr">javascript</span><span style="font-family: Arial,sans-serif;" lang="FA"><span> </span>تغییر می کند, آدرس آن ثابت می ماند بنابراین موتورهای جستجو شاخصی برای دسترسی به صفحه جدید را ندارند.برای این مشکل راه حل های متعددی ارائه شده است مثلا یک وب سایت موازی استاتیک با وب سایت داینامیک وجود داشته باشد, که تاحدی مشکل را برطرف نموده اند.</span></p>
<div style="text-align: right;"></div>
<p style="text-align: right;" dir="rtl"><strong><span style="font-family: Arial,sans-serif;" lang="FA"> </span></strong></p>
<div style="text-align: right;"></div>
<p style="color: #ff0000; text-align: right;" dir="rtl"><strong><span style="font-family: Arial,sans-serif;" lang="AR-SA">نتیجه گیری</span></strong></p>
<div style="text-align: right;"></div>
<p style="text-align: right;" dir="rtl"><span dir="ltr">GWT</span><span style="font-family: Arial,sans-serif;" lang="FA"> قدرت </span><span dir="ltr">app</span><span style="font-family: Arial,sans-serif;" lang="FA">های ویندوز را به </span><span dir="ltr">app</span><span style="font-family: Arial,sans-serif;" lang="FA">های وب می دهد و به شما امکان می دهد که نرم افزارهای تحت اینترانت و اینترنت غنی تر را در زمان کمتری تولید کنید. هزینه نگهداری آنها نبز به مراتب پایین تر خواهد بود.</span><span dir="ltr" lang="FA"> </span><span dir="ltr">GWT</span><span style="font-family: Arial,sans-serif;"> <span lang="FA">نیز <span> </span>مانند جاوا دارای منابع فراوان به صورت وب سایت, کتاب, مقاله, ویدئو, کد آماده و ابزارهای </span></span><span dir="ltr">۳<sup>rd</sup> party</span><span style="font-family: Arial,sans-serif;" lang="FA"> مانند </span><span><span dir="ltr">GWT Designer </span></span><span><span style="font-family: Arial,sans-serif;" lang="FA"> است</span></span><span style="font-family: Arial,sans-serif;" lang="FA">. </span><span dir="ltr">GWT</span><span style="font-family: Arial,sans-serif;" lang="FA"> محصول زیربنایی شرکت گوگل است در مدت کوتاهی که عرضه شده رشد قابل توجهی داشته است و انتظار می رود که </span><span dir="ltr">platform</span><span style="font-family: Arial,sans-serif;" lang="FA"> عمده برای تولید </span><span dir="ltr">app</span><span style="font-family: Arial,sans-serif;" lang="FA">های داینامیک باشد.(برای مشاهده آهنگ رشد </span><span dir="ltr">GWT</span><span style="font-family: Arial,sans-serif;" lang="FA"> و همچنین مقایسه بین فراگیر بودن </span><span dir="ltr">java</span><span style="font-family: Arial,sans-serif;"> <span lang="FA">نسبت به </span></span><span dir="ltr">c#</span><span style="font-family: Arial,sans-serif;" lang="FA">, به </span><a href="http://www.google.com/trends"><span dir="ltr">www.google.com/trends</span></a><span dir="ltr"> </span><span style="font-family: Arial,sans-serif;" lang="FA"><span> </span>مراجعه کنید و عبارت </span><span dir="ltr">gwt</span><span style="font-family: Arial,sans-serif;" lang="FA"> یا </span><span dir="ltr">java,c#</span><span style="font-family: Arial,sans-serif;" lang="FA"> را تایپ کنید)</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.xn--mgbx7cghb83g.com/1388/02/gwt-google-web-toolkit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>حذف کامنت ها</title>
		<link>http://www.xn--mgbx7cghb83g.com/1388/01/%d8%ad%d8%b0%d9%81-%da%a9%d8%a7%d9%85%d9%86%d8%aa-%d9%87%d8%a7/</link>
		<comments>http://www.xn--mgbx7cghb83g.com/1388/01/%d8%ad%d8%b0%d9%81-%da%a9%d8%a7%d9%85%d9%86%d8%aa-%d9%87%d8%a7/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 11:31:50 +0000</pubDate>
		<dc:creator>رحمان موسویان</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[regular expression]]></category>
		<category><![CDATA[remove comments]]></category>
		<category><![CDATA[جاوا اسکریپ]]></category>
		<category><![CDATA[حذف کامنت ها]]></category>

		<guid isPermaLink="false">http://www.xn--mgbx7cghb83g.com/?p=47</guid>
		<description><![CDATA[برای حذف کامنت های جاوا اسکریپ این رو استفاده کردم. اگه میخواین بدونین واسه چی، واسه کم شدن حجم فایلjs
درواقع این رو در بخش Regular Expression در قسمت Replace برنامه Notepad++ استفاده کردم
دقت داشته باشین که g در آخر پارامتر اول تمام اتفاقات از این regExp رو برمیگردونه.
اگه نباشه فقط اولین عبارتی که پیدا میشه [...]]]></description>
			<content:encoded><![CDATA[<p>برای حذف کامنت های جاوا اسکریپ این رو استفاده کردم. اگه میخواین بدونین واسه چی، واسه کم شدن حجم فایلjs</p>
<p>درواقع این رو در بخش Regular Expression در قسمت Replace برنامه Notepad++ استفاده کردم</p>
<p>دقت داشته باشین که g در آخر پارامتر اول تمام اتفاقات از این regExp رو برمیگردونه.<br />
اگه نباشه فقط اولین عبارتی که پیدا میشه با پارامتر دوم replace شده و تموم!</p>
<pre name="code" class="javascript">

str.replace(/(&lt;!--(.*)--&gt;)|(\/\*(.*)\*\/)|(\/\/(.*))/g,&#039;&#039;);
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.xn--mgbx7cghb83g.com/1388/01/%d8%ad%d8%b0%d9%81-%da%a9%d8%a7%d9%85%d9%86%d8%aa-%d9%87%d8%a7/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
