﻿<?xml version="1.0" encoding="utf-8"?>
<!--Generated by RSSMaster 2.0 (http://www.softtool.info/rssmaster)-->
<rss version="2.0">
  <channel>
    <title>iDevCenter Blog</title>
    <link>http://www.idevcenter.com/blog/</link>
    <description></description>
    <generator>RSSMaster 2.0 (http://www.softtool.info/rssmaster)</generator>
    <language>fa-IR</language>
    <image>
      <url>http://www.idevcenter.com/images/logofeed.png</url>
      <title>iDevCenter.com</title>
      <link>http://www.idevcenter.com/</link>
    </image>
    <item>
      <title>iDevCenter.com Behind the Scenes - Part 169</title>
      <description>‫&lt;p&gt;
از این که می‌بینم در طول این چند هفته‌ای که من نبوده‌ام سایت کاملاً فعال بوده و به خوبی به کار خود ادامه داده است خیلی خوشحالم.
&lt;/p&gt;
&lt;br /&gt;

&lt;p&gt;
در طول این مدت دو پشنهاد توسط کاربران مطرح شد که یکی از آنها امکان مطلع شدن از نظرات کاربران دیگر به وسیله ایمیل بود. در این‌باره &lt;a 

href="/~shahriar.rostami"&gt;شهریار&lt;/a&gt; زحمت کشیده و کد سیستم پیغام رسانی سایت را نوشته است. تنها کار باقی مانده طراحی و ساخت UI و 

وصل کردن آن به بخش‌های مختلف سایت است که به محض رهایی از این گرفتاری که درگیر آن هستم، آن را انجام خواهم.
&lt;/p&gt;
&lt;br /&gt;

&lt;p&gt;
مورد دیگر امکان ثبت رأی منفی برای لینک‌ها است. دلیل آن هم ارسال لینک‌های نامرتبط با زمینه کاری سایت توسط بعضی کاربران است. در گذشته هم 

هر از چند گاهی لینک‌های نامرتبط ارسال می‌شد اما چون همیشه به طور مرتب بر سایت نظارت داشتم، آنها را به سرعت حذف می‌کردم و کسی متوجه 

آنها نمی‌شد. راستش در این مورد نیاز به فکر و بررسی بیشتری دارم زیرا مطمئن نیستم که اضافه کردن این امکان تا چه حد موثر خواهد بود.
&lt;/p&gt;
&lt;br /&gt;

&lt;p&gt;
به طور کلی خواهش می‌کنم قبل از ارسال یک لینک مطمئن شوید که موضوع آن فقط و فقط درباره «برنامه نویسی و طراحی وب» باشد. عنوان تعدادی از 

لینک‌هایی که اخیراً حذف کرده‌ام را به عنوان نمونه در زیر آورده‌ام:
&lt;/p&gt;
&lt;br /&gt;

&lt;ul&gt;
&lt;li&gt;ویندوز لایو رایتر به زبان ساده&lt;/li&gt;
&lt;li&gt;سیستم مدیریت ارتباط با مشتری چیست؟&lt;/li&gt;
&lt;li&gt;کارکنان IT در انگلیس جزو بیمارترین مردمان آن کشور هستند!&lt;/li&gt;
&lt;li&gt;تصورات گذشته از آینده ی کامپیوتری&lt;/li&gt;
&lt;li&gt;نسخه های مختلف Windows Server 2008 R2 و مقایسه آن ها&lt;/li&gt;
&lt;li&gt;ریز بلاگ نویسی با تویتر&lt;/li&gt;
&lt;li&gt;پایگاه ملی اطلاع رسانی مناقصات کشور&lt;/li&gt;
&lt;li&gt;چطور در محل زندگی خود یک محل کار ایجاد کنیم؟&lt;/li&gt;
&lt;li&gt;استخدام توسعه دهنده وب&lt;/li&gt;
&lt;li&gt;چه زمانی باید یک محیط کاری را ترک کرد؟&lt;/li&gt;
&lt;/ul&gt;</description>
      <link>http://www.idevcenter.com/blog/post/169/</link>
      <author>soheilpro</author>
      <pubDate>Fri, 27 Nov 2009 23:01:37 GMT</pubDate>
      <guid isPermaLink="true">http://www.idevcenter.com/blog/post/169/</guid>
    </item>
    <item>
      <title>iDevCenter.com Behind the Scenes - Part 168</title>
      <description>‫سلام. من در طی چند هفته آینده کمتر به کامپیوتر و اینترنت دسترسی خواهم داشت و نخواهم توانست به طور کامل بر سایت نظارت داشته باشم. دیگه خودتون هوای سایت رو داشته باشید. (:</description>
      <link>http://www.idevcenter.com/blog/post/168/</link>
      <author>soheilpro</author>
      <pubDate>Mon, 26 Oct 2009 03:13:13 GMT</pubDate>
      <guid isPermaLink="true">http://www.idevcenter.com/blog/post/168/</guid>
    </item>
    <item>
      <title>iDevCenter.com Behind the Scenes - Part 167</title>
      <description>‫قصد انتقال سایت به یک میزبان جدید را دارم. برای همین ممکن است در چند روز آینده سایت در دسترس نباشد.</description>
      <link>http://www.idevcenter.com/blog/post/167/</link>
      <author>soheilpro</author>
      <pubDate>Fri, 09 Oct 2009 07:28:56 GMT</pubDate>
      <guid isPermaLink="true">http://www.idevcenter.com/blog/post/167/</guid>
    </item>
    <item>
      <title>iDevCenter.com Behind the Scenes - Part 166</title>
      <description>‫&lt;p&gt;
تا چند سال پیش سایت‌ها تا جایی که می‌توانستند از دسترسی کاربران به اطلاعات خام موجود در سایت جلوگیری می‌کردند که مبادا از بازدید کنندگانشان کم شود و Page View آنها 

کمی پایین بیاید. حتی آنهایی که روشنفکرتر بودند و خروجی RSS داشتند تنها خلاصه‌ای از مطالب را منتشر می‌کردند تا باز هم کاربران را مجبور به بازدید از صفحه اصلی کنند. اما الان 

مدتی است که این رویه عوض شده و سایت‌ها شروع به ارائه API و فراهم کردن امکان دسترسی راحت کاربران به اطلاعات خام و امکانات موجود در سایت‌ها کرده‌اند. این کار علاوه بر 

این به جلب اطمینان کاربران کمک می‌کند، باعث ایجاد سایت‌های جانبی و خدمات متنوع و گوناگونی می‌شود که سایت اصلی ممکن است تا مدت‌ها نتواند آنها را ارائه کند.
&lt;/p&gt;
&lt;br /&gt;

&lt;p&gt;
بر همین اساس، &lt;a href="/api/v1"&gt;نسخه اولیه API سایت&lt;/a&gt; هم اکنون آماده و قابل استفاده است. این نسخه در حال حاضر تنها بخش لینک‌ها را شامل می‌شود اما در آینده و بر 

حسب نیاز برای بخش‌های دیگر هم متدهای لازم اضافه خواهد شد. در ضمن، توجه داشته باشید که این نسخه در مرحله آزمایشی قرار دارد و هر لحظه ممکن است نحوه عمکرد آن 

عوض شود.
&lt;/p&gt;
&lt;br /&gt;

&lt;p&gt;
ابزارهایی که به عنوان مثال می‌توان با استفاده این مجوعه API تولید کرد:
&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;یک افزونه برای Firefox جهت ارسال سریع و آسان لینک‌ها&lt;/li&gt;
	&lt;li&gt;یک افزونه مشابه مورد بالا برای Internet Explorer&lt;/li&gt;
	&lt;li&gt;یک افزونه برای WordPress که به طور خودکار لینک پست نوشته شده را به سایت ارسال کند&lt;/li&gt;
	&lt;li&gt;یک افزونه مشابه مورد بالا برای Windows Live Writer&lt;/li&gt;
	&lt;li&gt;یک Gadget برای ویندوز Vista و 7 که به طور خودکار آخرین لینک‌های جدید نشان دهد&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;

&lt;p&gt;
از آنجایی که مورد اول همواره جزو بیشترین درخواست‌ها از سایت بوده است، اگر آمادگی نوشتن آن را دارید لطفاً با من &lt;a href="/contact/"&gt;تماس&lt;/a&gt; بگیرید.
&lt;/p&gt;
</description>
      <link>http://www.idevcenter.com/blog/post/166/</link>
      <author>soheilpro</author>
      <pubDate>Wed, 16 Sep 2009 22:54:45 GMT</pubDate>
      <guid isPermaLink="true">http://www.idevcenter.com/blog/post/166/</guid>
    </item>
    <item>
      <title>iDevCenter.com Behind the Scenes - Part 165</title>
      <description>‫&lt;p&gt;
در رابطه با پست قبل نظرات خیلی خوبی مطرح شد. از همه متشکرم. تقریباً همه با مواردی که گفته بودم (آسان‌تر کردن امکان ارسال لینک‌ها، انتشار API و افزایش امکانات اجتماعی) 

موافق و هم رای بودند و تنها تفاوت نظر در مورد بخش سوال و جواب بود.
&lt;/p&gt;&lt;br /&gt;

&lt;p&gt;
در میان این امکانات جدید من شخصاً به گسترش امکانات اجتماعی سایت علاقه خاصی دارم و برنامه‌های زیادی برای آن در نظر گرفته‌ام. هدف من این است که iDevCenter تبدیل بشود 

به محل اجتماع برنامه‌نویسان و طراحان وب خوب ایرانی. کسانی که متفاوت فکر می‌کنند، به کار درست و اصولی اعتقاد دارند و ارزش کار خوب را درک می‌کنند؛ از فن‌آوری‌های جدید 

استفاده می‌کنند و دغدغه رعایت استانداردها را دارد. به نظر من اگر این جامعه شکل بگیرد و اعضای آن بتوانند به راحتی با هم ارتباط برقرار کنند، آنوقت می‌توان قدم‌های بعدی را 

برداشت و به هدف‌های بزرگ‌تر فکر کرد.
&lt;/p&gt;&lt;br /&gt;

&lt;p&gt;
در کنار این موارد با &lt;a href="/~keyvan"&gt;کیوان&lt;/a&gt; و &lt;a href="/~mahdi"&gt;مهدی&lt;/a&gt; در حال بررسی انجام یک کار جدید و متفاوت هستیم. زمانی که جزئیات بیشتری از این طرح 

مشخص شد درباره‌اش خواهم نوشت.
&lt;/p&gt;&lt;br /&gt;

&lt;p&gt;
در ضمن، مشکل ثبت نظرات طولانی هم برطرف شد. شرمنده اگر موقع ارسال نظر پیغام خطا گرفتید.
&lt;/p&gt;</description>
      <link>http://www.idevcenter.com/blog/post/165/</link>
      <author>soheilpro</author>
      <pubDate>Sun, 30 Aug 2009 22:33:59 GMT</pubDate>
      <guid isPermaLink="true">http://www.idevcenter.com/blog/post/165/</guid>
    </item>
    <item>
      <title>iDevCenter.com Behind the Scenes - Part 164</title>
      <description>‫&lt;p&gt;
متاسفانه سایت در طول این چند ماه روند چندان رو به رشدی نداشته و لازم است که تغییراتی در نحوه کار سایت داده شود. در این پست قصد دارم برنامه‌هایی که برای سایت دارم را بیان کنم و نظر شما را نسبت به آن‌ها جویا شوم.
&lt;/p&gt;
&lt;br /&gt;

&lt;p&gt;
بخش لینک‌ها از نظر من مشکل خاصی ندارد و فقط از کمبود محبت رنج می‌برد. اخیراً اکثر لینک‌های ارسال شده تنها مطالب وبلاگ‌های شخصی کاربران هستند و ظاهراً کاربران علاقه‌ای به به اشتراک گذاشتن مطالب خوبی که پیدا می‌کنند ندارند و یا این که ترجیح می‌دهند این کار را از طریق سرویس‌های دیگری مانند Twitter و Friendfeed انجام دهند. برای همین در فکر اضافه کردن امکان ارسال لینک از طریق Twitter و همینطور فراهم کردن یک افزونه برای Firefox هستم.
&lt;/p&gt;
&lt;br /&gt;

&lt;p&gt;
بخش ویکی‌ها اما اصلاً اوضاع خوبی ندارد. در کل این مدت تنها تعداد معدودی ویکی خوب ایجاد شده و بقیه یا خالی و ناقص هستند و یا در قالب مقاله نوشته شده‌اند. به همین دلیل قصد دارم فعلاً این بخش را از حالت عمومی خارج کنم و استفاده از آن را به موارد خاصی مانند &lt;a href="/wiki/persianstandard"&gt;ویکی استاندارد زبان فارسی&lt;/a&gt; محدود کنم. اگر در آینده شرایط لازم فراهم شد، این بخش را دوباره فعال خواهم کرد.
&lt;/p&gt;
&lt;br /&gt;

&lt;p&gt;
یک مورد جدیدی که مدتی است دارم درباره‌اش فکر می‌کنم ایجاد یک بخش سوال و جواب مانند سایت &lt;a href="http://stackoverflow.com/"&gt;Stack Overflow&lt;/a&gt; است. از نظر پیاده‌سازی تمام ابزارهای لازم برای انجام این کار وجود دارد و به سرعت می‌توان این بخش را آماده کرد اما مساله مهمی که وجود دارد این است که اگر همچین بخشی راه‌اندازی شود آیا واقعاً استفاده خواهد شد یا نه. اگر قرار باشد سوالی پرسیده بشود و کسی حاضر نباشد که جواب بدهد، بهتر است این زمان و انرژی صرف کار دیگری شود.
&lt;/p&gt;
&lt;br /&gt;

&lt;p&gt;
مورد دیگر گسترش دادن امکانات اجتماعی سایت است. برای مثال پروفایل کاربران باید کامل‌تر شود، امکان ایجاد گروه‌های بحث و گفتگو اضافه شود، سیستم پیام‌دهی و اطلاع رسانی اضافه شود و امکانات دیگری از این دست.
&lt;/p&gt;
&lt;br /&gt;

&lt;p&gt;
همچنین قصد دارم APIهای سایت را نیز منتشر کنم تا کسانی که علاقه دارند بتوانند با استفاده از این APIها از اطلاعات سایت استفاده کنند و یا خدمات و ابزارهای جانبی (مانند همان افزونه Firefox که گفتم) تولید کنند.
&lt;/p&gt;
&lt;br /&gt;

&lt;p&gt;
نظر شما چیه؟ با مواردی که گفتم موافق هستید؟ مخالف هستید؟ پیشنهاد دیگری دارید؟
&lt;/p&gt;</description>
      <link>http://www.idevcenter.com/blog/post/164/</link>
      <author>soheilpro</author>
      <pubDate>Mon, 24 Aug 2009 22:09:07 GMT</pubDate>
      <guid isPermaLink="true">http://www.idevcenter.com/blog/post/164/</guid>
    </item>
    <item>
      <title>iDevCenter.com Behind the Scenes - Part 163</title>
      <description>‫&lt;p&gt;
بخش جدید سایت با عنوان &lt;a href="/persianstandard/"&gt;استاندارد زبان فارسی&lt;/a&gt; با هدف بهبود وضعیت زبان فارسی در نرم‌افزار و سایت‌های وب، راه‌اندازی شد.
&lt;/p&gt;
&lt;br /&gt;

&lt;p&gt;
ابزار &lt;a href="/persianstandard/tools/webvalidator/"&gt;اعتبارسنج صفحات وب فارسی&lt;/a&gt; که برای مدتی به صورت آزمایشی بر روی سایت قرار داده شده بود اکنون نهایی شده و می‌توانید از آن برای بررسی وضعیت سایت‌های خود استفاده کنید. یک نشان هم تهیه شده است تا مدیران سایت‌هایی که توسط این ابزار بدون اشکال شناخته می‌شوند، بتوانند در سایت خود نمایش دهند.
یک ویکی هم برای گردآوری مطالب مفید در این زمینه ساخته شده است که با کمک شما به زودی کامل خواهد شد. در اولین فرصت رئوس مطالبی که به نظر من برای این ویکی لازم است را خواهم نوشت.
&lt;/p&gt;
&lt;br /&gt;

&lt;p&gt;شما چطور می‌توانید به این بخش کمک کنید؟&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;سایت و نرم‌افزارهای خود را بررسی و اصلاح کنید.&lt;/li&gt;
	&lt;li&gt;نشان اعتبار را در سایت خود قرار دهید.&lt;/li&gt;
	&lt;li&gt;به کامل کردن مطالب ویکی کمک کنید.&lt;/li&gt;
	&lt;li&gt;برای شناساندن این بخش به دیگران تبلیغ کنید.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;

&lt;p&gt;لطفاً هر سوال و پیشنهادی داشتید در بخش بحث و گفتگو مطرح کنید.&lt;/p&gt;</description>
      <link>http://www.idevcenter.com/blog/post/163/</link>
      <author>soheilpro</author>
      <pubDate>Sat, 09 May 2009 20:07:38 GMT</pubDate>
      <guid isPermaLink="true">http://www.idevcenter.com/blog/post/163/</guid>
    </item>
    <item>
      <title>iDevCenter.com Behind the Scenes - Part 162</title>
      <description>‫&lt;p&gt;
یکی از ابزار‌های &lt;a href="/blog/post/161/"&gt;بخش جدید&lt;/a&gt;ی که گفتم رو به اسم &lt;a href="/persian/tools/validator/"&gt;اعتبارسنج صفحات وب فارسی&lt;/a&gt; به صورت موقت آماده کردم.
&lt;/p&gt;
&lt;br /&gt;

&lt;p&gt;
این ابزار صفحات وب فارسی رو از نظر صحیح بودن نوع کدگذاری (Content Encoding) و کاربرد نویسه‌های غیر فارسی بررسی می‌کنه. توجه داشته باشید که این ابزار در مرحله آزمایشی قرار داره و ممکنه با بعضی صفحات مشکلاتی داشته باشه. لطفاً این مشکلات و هر مورد دیگری که هنگام کار کردن با این ابزار مشاهده می‌کنید رو اطلاع بدید.
&lt;/p&gt;
&lt;br /&gt;

&lt;p&gt;
با استفاده از این ابزار چند تا سایت فارسی رو بررسی کنین تا شما هم متوجه بشین که اوضاع چقدر خرابه.
&lt;/p&gt;</description>
      <link>http://www.idevcenter.com/blog/post/162/</link>
      <author>soheilpro</author>
      <pubDate>Mon, 20 Apr 2009 22:06:07 GMT</pubDate>
      <guid isPermaLink="true">http://www.idevcenter.com/blog/post/162/</guid>
    </item>
    <item>
      <title>iDevCenter.com Behind the Scenes - Part 161</title>
      <description>‫&lt;p&gt;
داستان زبان فارسی در دنیای فن‌آوری اطلاعات:
&lt;/p&gt;
&lt;br /&gt;

&lt;p&gt;
پرده اول: دهه 1370. با همه گیر شدن کامپیوترهای شخصی در ایران و نیاز به پشتیبانی از زبان فارسی، استاندارد ایران سیستم برای سیستم عامل داس شکل می‌گیرد.
&lt;/p&gt;
&lt;br /&gt;

&lt;p&gt;
پرده دوم: سال 1374. ویندوز 95 توسط مایکروسافت عرضه می‌شود. این ویندوز کدپیج 1256 را برای نمایش زبان عربی و فارسی معرفی می‌کند.
&lt;/p&gt;
&lt;br /&gt;

&lt;p&gt;
پرده سوم: سال 1378. ویندوز 2000 عرضه می‌شود. این نسخه از یونی‌کد پشتیبانی می‌کند و شامل یک چیدمان صفحه کلید برای وارد کردن متون فارسی است. اما نمایش بعضی حروف مانند "ی وسط" با مشکل همراه است.
&lt;/p&gt;
&lt;br /&gt;

&lt;p&gt;
پرده چهارم: مدتی بعد. عده‌ای افراد خیرخواه ولی ناآگاه برای حل این مشکل، چیدمان جدیدی را عرضه می‌کنند. در این چیدمان حروف مشکل‌دار فارسی با مشابه‌های عربی جایگزین شده‌اند. این کار به ظاهر مشکل را حل می‌کند، اما در باطن 

باعث وارد شدن صدمه بزرگی به زبان فارسی می‌شود.
&lt;/p&gt;
&lt;br /&gt;

&lt;p&gt;
پرده پنجم: سال 1388. با این که سالها از معرفی و فراگیر شدن استاندارد یونی‌کد می‌گذرد، تقریباً تمام نرم‌افزارها و سایت‌های وب فارسی یا هنوز بر پایه کدپیج 1256 نوشته می‌شوند و یا از حروف عربی در میان متون فارسی استفاده 

می‌کنند. این مسئله باعث شده است که هیچ کدام از اطلاعات و مطالبی که ما تولید، ذخیره و در اینترنت منتشر می‌کنیم، فارسی صحیح نباشند.
&lt;/p&gt;
&lt;br /&gt;

&lt;p&gt;
در این میان، ما برنامه‌نویسان و طراحان وب بیشترین تقصیر را داریم زیرا همه این نرم‌افزارها و سایت‌های وب توسط ما نوشته و ساخته می‌شوند. اگر ما کمی توجه به این مسئله داشته باشیم، این مشکل تا حد زیادی برطرف خواهد شد. به 

همین دلیل، قصد داریم با کمک شما بخش جدیدی را در سایت با هدف افزایش سطح دانش برنامه نویسان و طراحان وب ایرانی درباره نحوه صحیح تولید سایت‌های وب و نرم‌افزارهای فارسی، ایجاد کنیم.
&lt;/p&gt;
&lt;br /&gt;

&lt;p&gt;
در پست‌های بعدی درباره این بخش و نحوه کار آن بیشتر توضیح خواهم داد. در حال حاضر، اگر کوچکترین اهمیتی به زبان فارسی می‌دهید و مایل به همکاری هستید، موافقت خود را با این طرح در قسمت نظرها اعلام کنید.
&lt;/p&gt;
&lt;br /&gt;

&lt;p&gt;
در همین راستا:
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="/blog/post/162/"&gt;اعتبارسنج صفحات وب فارسی&lt;a/&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <link>http://www.idevcenter.com/blog/post/161/</link>
      <author>soheilpro</author>
      <pubDate>Mon, 20 Apr 2009 19:34:03 GMT</pubDate>
      <guid isPermaLink="true">http://www.idevcenter.com/blog/post/161/</guid>
    </item>
    <item>
      <title>iDevCenter.com Behind the Scenes - Part 160</title>
      <description>‫&lt;p&gt;
سلام.&lt;br /&gt;
سال نو مبارک.&lt;br /&gt;
امیدوارم سال 1388 برای همه همراه با سلامتی و موفقیت باشد.
&lt;/p&gt;
</description>
      <link>http://www.idevcenter.com/blog/post/160/</link>
      <author>soheilpro</author>
      <pubDate>Fri, 20 Mar 2009 10:17:35 GMT</pubDate>
      <guid isPermaLink="true">http://www.idevcenter.com/blog/post/160/</guid>
    </item>
    <item>
      <title>iDevCenter.com Behind the Scenes - Part 159</title>
      <description>‫&lt;p&gt;
یک. رای‌گیری برای انتخاب و معرفی برترین‌های وب فارسی در دومین جشنواره آن‌لاین وب ایران چند روزیه که شروع شده. اگر مایل هستید، می‌تونید &lt;a href="http://www.webna.ir/award/?site1=idevcenter.com"&gt;به سایت iDevCenter در این جشنواره رای بدهید&lt;/a&gt;.
&lt;/p&gt;
&lt;br /&gt;

&lt;p&gt;
دو. فردا قصد معرفی یک بخش جدید در سایت رو دارم. از اونجایی که این بخش عمدتا بر اساس سیستم ویکی کار می‌کنه، ادیتور این بخش رو یکم بهبود دادم و چندتا امکان جدید بهش اضافه کردم تا کار کردن باهاش کمی راحت‌تر بشه.
&lt;/p&gt;
&lt;br /&gt;

&lt;p&gt;
سه. چند وقتیه که یک حرکتی در وب سایت‌های خارجی شروع شده برای تشویق مردم به کنار گذاشتن IE6 و استفاده از مرورگرهای جدیدتر و با پشتیبانی بهتر از استانداردهای وب. سایت iDevCenter هم در این راستا، از این به بعد به کسانی که با این مرورگر بی‌نظیر(!) وارد سایت بشوند، خیلی محترنامه پیغام می‌ده که مرورگرشون رو به‌روز کنند.
&lt;/p&gt;
</description>
      <link>http://www.idevcenter.com/blog/post/159/</link>
      <author>soheilpro</author>
      <pubDate>Sat, 07 Mar 2009 22:27:10 GMT</pubDate>
      <guid isPermaLink="true">http://www.idevcenter.com/blog/post/159/</guid>
    </item>
    <item>
      <title>iDevCenter.com Behind the Scenes - Part 158</title>
      <description>‫&lt;p&gt;
به روز کردن یک سایت وب (از نظر نرم افزاری) کار نسبتا ساده‌ای هستش. کپی کردن فایل‌های تغییر یافته به روی سرور و اجرای چند تا 
اسکریپت SQL برای اعمال تغییرات به دیتابیس معمولا حداکثر کاری است که باید انجام داده بشه. اما از اونجایی که انسان (مخصوصا اگر از 
نوع برنامه نویس باشه) جایزالخطاست، در حین همین پروسه ساده ممکنه کلی مشکل پیش بیاد. مثلا ممکنه بعد از این که فایل‌ها رو کپی کردید 
رو سرور، یادتون بیافته که یک مورد مهم رو فراموش کردید، یا وسط آپلود یکهو لنگر یک کشتی بیافته رو فیبر نوری و اینترنت قطع بشه! برای 
همین بهتره که هنگام به روز رسانی، سایت موقتا بسته (Down) بشه و وقتی همه کارها با موفقیت انجام شد، سایت برای عموم باز بشه.
&lt;/p&gt;
&lt;br /&gt;

&lt;p&gt;
در ASP.NET برای این کار یک روشی نه چندان جالبی وجود داره که توی &lt;a href="/link/243/"&gt;این مطلب&lt;/a&gt; معرفی شده 
و به مشکلاتش هم اشاره شده. برای iDevCenter من از روش زیر بر اساس URL Rewriting استفاده می‌کنم. از اونجایی که برای 
پیاده سازی URL Rewriting در سایت من از نرم‌افزار &lt;a 
href="http://www.isapirewrite.com"&gt;ISAPI_Rewrite&lt;/a&gt; استفاده کرده‌ام، این روش رو بر اساس فایل 
htaccess. توضیح می‌دهم ولی اصل مطلب به نرم‌افزار خاصی وابستگی نداره و به راحتی می‌شه برای محیط‌های دیگه هم ازش استفاده کرد.
&lt;/p&gt;
&lt;br /&gt;

&lt;p&gt;
در این روش کافیه این دو خط رو به اول فایل htaccess. اضافه کنیم. این کار باعث می‌شه تا تمام درخواست‌ها موقتا به آدرس 
/updating/ فرستاده بشن. توی این مسیر هم یک فایل ساده HTML وجود داره که به کاربرها خبر می‌ده که سایت در حال به روز رسانی 
شدن هستش.
&lt;/p&gt;
&lt;br /&gt;

&lt;code&gt;
RewriteRule ^updating.*$ $0 [NC,U,QSA,L]
RewriteRule .* /updating/ [NC,U,QSA,R=307,L]
&lt;/code&gt;
&lt;br /&gt;

&lt;p&gt;
اما همیشه بهتره قبل از این که سایت به روی عموم باز بشه، خودمون یکبار تمام تغییرات اعمال شده رو تست بکنیم و بعد از اطمینان از درست 
بودن همه موارد، سایت رو باز کنیم. برای این کار نیاز داریم که به یک شکلی خودمون رو از بقیه کاربران متمایز بکنیم. یکی از ساده‌ترین راه‌ها 
برای انجام این کار، درج یک عبارت مشخص در User Agent هست. در فایرفاکس کافیه در بخش about:config یک Key با نام 
general.useragent.extra.XYZ و با مقدار مورد نظر، مانند ABC، ایجاد بشه. اما برای IE باید دست به دامن Registry شد. 
حالا کافیه برای قانون دومی که تعریف کرده‌ایم یک شرط اضافه کنیم:
&lt;/p&gt;
&lt;br /&gt;

&lt;code&gt;
RewriteRule ^updating.*$ $0 [NC,U,QSA,L]
RewriteCond %{HTTP:User-Agent} !ABC [NC]
RewriteRule .* /updating/ [NC,U,QSA,R=307,L]
&lt;/code&gt;
&lt;br /&gt;

&lt;p&gt;
این شرط باعث می‌شه کاربرانی که عبارت ABC در User Agentشون وجود داره (یعنی مدیران سایت) از Redirect شدن معاف بشن و 
بتونن به طور عادی با سایت کار کنند.
&lt;/p&gt;
&lt;br /&gt;

&lt;p style="text-align: left"&gt;
&lt;a href="http://www.idevcenter.com/links/vote?url=http://www.idevcenter.com/blog/post/158/"&gt;
&lt;img src="http://www.idevcenter.com/links/image?url=http://www.idevcenter.com/blog/post/158/" alt="Vote on iDevCenter" title="Vote on iDevCenter" /&gt;
&lt;/a&gt;
&lt;/p&gt;</description>
      <link>http://www.idevcenter.com/blog/post/158/</link>
      <author>soheilpro</author>
      <pubDate>Sat, 21 Feb 2009 23:45:33 GMT</pubDate>
      <guid isPermaLink="true">http://www.idevcenter.com/blog/post/158/</guid>
    </item>
    <item>
      <title>iDevCenter.com Behind the Scenes - Part 157</title>
      <description>‫&lt;a href="/tools/wordpress/"&gt;افزونه لینک‌ها برای WordPress&lt;/a&gt; مخصوص کسانی که از سیستم وردپرس برای وبلاگشون استفاده می‌کنند. در همین راستا، ظاهر خروجی عکس تعداد رای‌ها رو هم یکم بهتر کردم.</description>
      <link>http://www.idevcenter.com/blog/post/157/</link>
      <author>soheilpro</author>
      <pubDate>Thu, 19 Feb 2009 21:12:58 GMT</pubDate>
      <guid isPermaLink="true">http://www.idevcenter.com/blog/post/157/</guid>
    </item>
    <item>
      <title>iDevCenter.com Behind the Scenes - Part 156</title>
      <description>‫&lt;p&gt;
طی چند روز گذشته چند تا تغییر و امکان جدید داشتیم که فرصت نشده بود تو وبلاگ بنویسم:
&lt;p&gt;
&lt;br /&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;a href="/support/"&gt;چند تا بنر&lt;/a&gt; برای کسانی که مایل هستن حمایت خودشون رو از سایت تو وبلاگ/سایتشون اعلام کنند، اضافه 

شد.&lt;/li&gt;
	&lt;li&gt;مشکل جستجوی برچسب‌هایی که شامل کاراکتر + هستند برطرف شد.&lt;/li&gt;
	&lt;li&gt;مشکل تشخیص نادرست لینک‌ها در نظرات برطرف شد.&lt;/li&gt;
	&lt;li&gt;مشکل کد شدن دوباره آدرس‌ها وقتی از آدرس بدون www استفاده می‌شد برطرف شد.&lt;/li&gt;
	&lt;li&gt;ظاهر صفحه نتیجه جستجوی برچسب‌ها یکم تغییر داده شد.&lt;/li&gt;
	&lt;li&gt;از این به بعد، تعداد دفعات استفاده برچسب‌ها در Tag Cloudها نشون داده می‌شه.&lt;/li&gt;
	&lt;li&gt;صفحه /my/links/ حذف شد. به جایش می‌تونید از صفحه &lt;span dir="ltr"&gt;/~username/links/&lt;/span&gt; استفاده 

کنید.&lt;/li&gt;
	&lt;li&gt;گرافیک سایت یکم بهبود داده شد.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;

&lt;p&gt;
یک نکته دیگه رو هم بگم فقط: صفحه‌های 'لینک‌های ارسالی'، 'لینک‌های مورد علاقه' و 'ویکی‌ها' در پروفایل عمومی هر کاربر دارای خروجی RSS هستند. از این امکان 

می‌تونید به عنوان مثال برای نمایش خودکار لینک‌های خوبی که در سایت پیدا می‌کنید در سایت/وبلاگتون استفاده کنید.
&lt;/p&gt;</description>
      <link>http://www.idevcenter.com/blog/post/156/</link>
      <author>soheilpro</author>
      <pubDate>Sun, 15 Feb 2009 21:46:30 GMT</pubDate>
      <guid isPermaLink="true">http://www.idevcenter.com/blog/post/156/</guid>
    </item>
    <item>
      <title>iDevCenter.com Behind the Scenes - Part 155</title>
      <description>‫بدینوسیله از شما کاربر گرامی دعوت می‌شود از &lt;a href="http://www.facebook.com/pages/iDevCenter/54448575778"&gt;صفحه iDevCenter در Facebook&lt;/a&gt; دیدن کنید و از &lt;a href="http://twitter.com/idevcenter"&gt;آخرین اخبار سایت در Twitter&lt;/a&gt; مطلع شوید. (با تشکر از &lt;a href="/~mahdi"&gt;مهدی&lt;/a&gt;)</description>
      <link>http://www.idevcenter.com/blog/post/155/</link>
      <author>soheilpro</author>
      <pubDate>Sat, 14 Feb 2009 09:15:28 GMT</pubDate>
      <guid isPermaLink="true">http://www.idevcenter.com/blog/post/155/</guid>
    </item>
    <item>
      <title>iDevCenter.com Behind the Scenes - Part 154</title>
      <description>‫&lt;a href="/~lajevardi"&gt;سپهر&lt;/a&gt; زحمت کشیده و یک WordPress Shortcode آماده کرده برای درج خودکار لینک ارسال مطلب به iDevCenter. اگه از Wordpress استفاده می‌کنید لطفا تست کنید و نظرتون رو بگید: &lt;a href="/link/228?ch=191"&gt;WordPress Shortcode برای iDevCenter Links&lt;/a&gt;</description>
      <link>http://www.idevcenter.com/blog/post/154/</link>
      <author>soheilpro</author>
      <pubDate>Wed, 11 Feb 2009 07:43:08 GMT</pubDate>
      <guid isPermaLink="true">http://www.idevcenter.com/blog/post/154/</guid>
    </item>
    <item>
      <title>iDevCenter.com Behind the Scenes - Part 153</title>
      <description>‫صفحه پروفایل عمومی‌تون (username~/) رو یک نگاه بندازین. و همینطور صفحه تازه اضافه شده &lt;a href="/members/"&gt;کاربران&lt;/a&gt; رو. در ضمن، از اونجایی که CSSها رو تغییر داده‌ام شاید لازم باشه یک Ctrl+F5 بزنین تا فایل‌های جدید دریافت بشن.</description>
      <link>http://www.idevcenter.com/blog/post/153/</link>
      <author>soheilpro</author>
      <pubDate>Sat, 07 Feb 2009 22:21:38 GMT</pubDate>
      <guid isPermaLink="true">http://www.idevcenter.com/blog/post/153/</guid>
    </item>
    <item>
      <title>iDevCenter.com Behind the Scenes - Part 152</title>
      <description>‫فرض کنید که می‌خواهید برای یک سایت این امکان رو اضافه کنید که کاربرها عکس خودشون رو ارسال کنند. برای این کار چه مواردی رو باید در نظر داشت؟ چه مشکلاتی ممکنه پیش بیاد؟

&lt;ul&gt;
	&lt;li&gt;حداکثر حجم فایل ارسالی چقدر باید باشد؟&lt;/li&gt;
	&lt;li&gt;چه نوع فرمت‌هایی قابل قبول است؟&lt;/li&gt;
	&lt;li&gt;حداقل و حداکثر ابعاد عکس ارسالی چقدر باید باشد؟&lt;/li&gt;
	&lt;li&gt;چه اندازه‌هایی از این عکس برای قسمت‌های مختلف سایت لازم است؟&lt;/li&gt;
	&lt;li&gt;آیا باید اندازه‌های مختلف مورد نیاز هر دفعه از روی عکس اصلی ساخته شود یا بهتر است یکبار هنگام ارسال این کار انجام شود؟&lt;/li&gt;
	&lt;li&gt;عکس‌ها باید کجا ذخیره شوند؟ فایل یا دیتابیس؟&lt;/li&gt;
	&lt;li&gt;اگر عکس‌ها در دیتابیس دخیره می‌شوند، باید یک ردیف برای هر عکس در نظر گرفت؟ یا این که تمام اندازه‌های مختلف عکس هر کاربر را در یک ردیف نگاه داشت؟&lt;/li&gt;
	&lt;li&gt;عکس‌ها با چه فرمتی باید ذخیره شوند؟&lt;/li&gt;
	&lt;li&gt;عکس‌های بزرگ با چه الگوریتمی باید کوچک شوند تا مناسب استفاده باشند؟ آیا این الگوریتم برای عکس‌های افقی با عکس‌های عمودی یکسان است؟&lt;/li&gt;
	&lt;li&gt;آیا عکس‌های کوچک نیز باید برای نمایش مناسب در سایت بزرگ شوند؟&lt;/li&gt;
	&lt;li&gt;اگر کاربری عکسی ارسالی نکرده است، چه زمانی باید عکس جایگزین تعیین شود؟ هنگام درج کد در صفحه یا هنگام دریافت عکس؟&lt;/li&gt;
	&lt;li&gt;عکس‌ها چگونه Cache خواهند شد؟&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;

راستی، گفتم می‌تونین &lt;a href="/my/picture/"&gt;عکس پروفایل‌تون رو عوض کنید&lt;/a&gt;؟ (:</description>
      <link>http://www.idevcenter.com/blog/post/152/</link>
      <author>soheilpro</author>
      <pubDate>Wed, 04 Feb 2009 21:10:00 GMT</pubDate>
      <guid isPermaLink="true">http://www.idevcenter.com/blog/post/152/</guid>
    </item>
    <item>
      <title>iDevCenter.com Behind the Scenes - Part 151</title>
      <description>‫&lt;p&gt;
یک سری تغییرات اعمال کردم تو سایت که به غیر از دو مورد زیر بقیه‌شون یا مربوط به پشت صحنه سایت هستند و یا خیلی مهم نیستند:
&lt;/p&gt;
&lt;br /&gt;

&lt;ul&gt;
	&lt;li&gt;برای نتیجه جستجوی برچسب‌ها خروجی RSS اضافه کردم.&lt;/li&gt;
	&lt;li&gt;برای نظرات پست‌های وبلاگ هم خروجی RSS اضافه کردم.&lt;/li&gt;
&lt;/ul&gt;</description>
      <link>http://www.idevcenter.com/blog/post/151/</link>
      <author>soheilpro</author>
      <pubDate>Fri, 30 Jan 2009 23:00:46 GMT</pubDate>
      <guid isPermaLink="true">http://www.idevcenter.com/blog/post/151/</guid>
    </item>
    <item>
      <title>iDevCenter.com Behind the Scenes - Part 150</title>
      <description>‫&lt;p&gt;
در راستای &lt;a href="/blog/post/148/"&gt;این مطلب&lt;/a&gt; و تنها جهت انبساط خاطر:
&lt;/p&gt;
&lt;br /&gt;

&lt;code&gt;// Linq
Benchmark(str =&gt; {

    return new String((from c in str select c &gt;= 48 &amp;&amp; c &lt;= 57 ? (char)(c + 1728) : c).ToArray());
});
&lt;/code&gt;
</description>
      <link>http://www.idevcenter.com/blog/post/150/</link>
      <author>soheilpro</author>
      <pubDate>Sat, 24 Jan 2009 12:22:21 GMT</pubDate>
      <guid isPermaLink="true">http://www.idevcenter.com/blog/post/150/</guid>
    </item>
    <item>
      <title>iDevCenter.com Behind the Scenes - Part 149</title>
      <description>‫&lt;p&gt;
تو &lt;a href="/blog/post/148/"&gt;پست قبل&lt;/a&gt; گفتم که به نظر من تبدیل عددها به فارسی کار جالبی (حداقل در وب) نیست؛ ولی دلایل‌ام رو نگفتم:
&lt;p&gt;
&lt;br /&gt;

&lt;ol&gt;
&lt;li&gt;متاسفانه ارقام فارسی در فونت‌هایی که معمولا در سایت‌های فارسی زبان استفاده می‌شه بسیار ناخوانا هستن و تشخیص ارقام ۲ و ۳ و ۴ از هم در اندازه‌های معمول خیلی سخته. بارها شده برای درست خوندن یک شماره تلفن در وب مجبور شدم صفحه رو چندین برابر بزرگ کنم! شاید مشکل از چشم من باشه ولی مساله فقط این نیست.&lt;/li&gt;
&lt;li&gt;از اونجایی که صفحه کلید پیش فرض فارسی در ویندوز هیچ امکانی برای وارد کردن ارقام فارسی نداره، با فارسی کردن رقم‌ها در یک سایت رسما امکان جستجوی هرگونه عدد و شماره گرفته می‌شه. فرض کنید در سایت یک ISP دارید صفحه مربوط به پیش‌شماره‌های پشتیبانی شده رو مشاهده می‌کنید ولی چون همه شماره‌ها به فارسی هستند نمی‌تونین جستجو کنید و مجبور هستین که خودتون چشمی دنبال پیش‌شماره‌تون بگردین (برگردین به مورد 1) و یا دست به دامن Character Map در ویندوز بشین!&lt;/il&gt;
&lt;li&gt;با فارسی کردن رقم‌ها در یک سایت امکان کپی کردن هم تقریبا گرفته می‌شه. فرض کنید که می‌خواین نرخ امروز دلار به ریال رو از سایت بانک مرکزی کپی کنین و در یک برنامه مالی ساخت وطن استفاده کنین!&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;

&lt;p&gt;
مورد اول به خودمون بستگی داره و این که بالاخره کی می‌خواهیم یک فکری به حال فونت‌های فارسی بکنیم. ولی دو مورد آخر مشکلات بنیادی نیستند و به مرور زمان و با پیاده سازی بهتر یونیکد در نرم‌افزارها حل خواهند شد.
&lt;/p&gt;
&lt;br /&gt;

&lt;p&gt;
یه چیز دیگه: اگه در CSS یک استایل بود که با کمک اون می‌شد مشخص کرد که اعداد به چه شکلی نشون داده بشن جالب بود. یه چیزی تو این مایه‌ها:
&lt;/p&gt;
&lt;br /&gt;

&lt;code&gt;p {digits: extended-arabic-indic}&lt;/code&gt;
&lt;br /&gt;

&lt;p style="text-align: left"&gt;
&lt;a href="http://www.idevcenter.com/links/vote?url=http://www.idevcenter.com/blog/post/149/"&gt;
&lt;img src="http://www.idevcenter.com/links/image?url=http://www.idevcenter.com/blog/post/149/" alt="Vote on iDevCenter" title="Vote on iDevCenter" /&gt;
&lt;/a&gt;
&lt;/p&gt;</description>
      <link>http://www.idevcenter.com/blog/post/149/</link>
      <author>soheilpro</author>
      <pubDate>Mon, 19 Jan 2009 18:56:22 GMT</pubDate>
      <guid isPermaLink="true">http://www.idevcenter.com/blog/post/149/</guid>
    </item>
    <item>
      <title>iDevCenter.com Behind the Scenes - Part 148</title>
      <description>‫&lt;p&gt;
&lt;a href="http://www.hamedb.com"&gt;حامد&lt;/a&gt; یک مطلبی نوشته و لینکش رو ارسال کرده با عنوان &lt;a href="/link/202/"&gt;تبدیل اعداد انگلیسی به فارسی&lt;/a&gt;. با این که به نظر من تبدیل عددها به فارسی کار جالبی (حداقل در وب) نیست، کنجکاو شدم ببینم که واقعا سریعترین روش برای انجام این کار چیه. این هم نتیجه‌اش:
&lt;/p&gt;
&lt;br /&gt;

&lt;p&gt;
قبل از هر کاری متد زیر رو تعریف می‌کنیم تا به کمک اون بتونیم کارایی یک تابع رو محاسبه کنیم. این متد یک تابع (که رشته می‌گیره و رشته برمی‌گردونه) رو به عنوان پارامتر دریافت می‌کنه و اون رو به تعداد دفعاتی که مشخص شده اجرا می‌کنه و مدت زمانی که این کار طول میکشه رو محاسبه می‌کنه تا به یک تقریب نسبتا خوب از کارایی این تابع برسه.
&lt;/p&gt;
&lt;br /&gt;

&lt;code&gt;void Benchmark(Func&lt;string, string&gt; func) {

    string input = File.ReadAllText(@"D:\WINDOWS\updspapi.log");
    int times = 1000;

    Stopwatch stopwatch = new Stopwatch();

    stopwatch.Start();

    for (int i = 0; i &lt; times; i++)
        func(input);

    stopwatch.Stop();

    Console.WriteLine("{0,10:#,###} Ticks", stopwatch.ElapsedTicks / times);
}
&lt;/code&gt;
&lt;br /&gt;

&lt;p&gt;
اول از همه میریم سراغ Regular Expressions. در این روش از متد Replace از کلاس Regex استفاده می‌شه تا تمام رقم‌های انگلیسی (با الگوی [9-0]) با معادل فارسی‌شون جایگزین بشن.
&lt;/p&gt;
&lt;br /&gt;

&lt;code&gt;// Regex
Regex regex = new Regex(@"[0-9]");

Benchmark(str =&gt; {

    return regex.Replace(str, match =&gt; ((char)(match.Value[0] + 1728)).ToString());
});
&lt;/code&gt;
&lt;br /&gt;

&lt;p&gt;
نتیجه: 2,100 تیک برای هر اجرا. کند بودن این روش از همون اول کار کاملا مشخص بود ولی به خاطر کامل شدن مطلب حدفش نکردم. RegExها برای پیدا کردن الگوهای پیچیده در متن‌ها مناسب هستند و برای ما که فقط با ده رقم 0 تا 9 به طور مستقل کار داریم گزینه خوبی نیستند.
&lt;/p&gt;
&lt;br /&gt;

&lt;p&gt;
در روش بعدی خودمون به طور دستی توی متن جستجو می‌کنیم و هر رقم انگلیسی رو که پیدا کنیم با معادل فارسیش جایگزین می‌کنیم.
&lt;/p&gt;
&lt;br /&gt;

&lt;code&gt;// String Block
char[] digits = Enumerable.Range(48, 10).Select(i =&gt; (char)i).ToArray();

Benchmark(str =&gt; {

    while (true) {

        int index = str.IndexOfAny(digits);

        if (index == -1)
            break;

        str = str.Substring(0, index) + ((char)(str[index] + 1728)).ToString() + str.Substring(index + 1);
    }

    return str;
});
&lt;/code&gt;
&lt;br /&gt;

&lt;p&gt;
نتیجه: 48,700 تیک برای هر اجرا. خیلی بدتر شد! علت اصلی کندی این روش به غیر از جستجوی چند باره متن توسط تابع IndexOfAny) اینه که به ازای هر رقم پیدا شده، 4 شیئ از نوع String ساخته و دور ریخته می‌شه. هر چی هم متن برزگتر باشه تاثیر منفی این کار بیشتره.
&lt;/p&gt;
&lt;br /&gt;

&lt;p&gt;
حالا می‌ریم سراغ دو تا روشی که حامد هم بهشون اشاره کرده. در روش اول متد Replace از کلاس String ده بار فراخوانی می‌شه و در هر بار یک رقم انگلیسی رو با معادل فارسیش جایگزین می‌کنیم.
&lt;/p&gt;
&lt;br /&gt;

&lt;code&gt;// String.Replace
Benchmark(str =&gt; {

    for (char i = (char)48; i &lt;= 57; i++)
        str = str.Replace(i, (char)(i + 1728));

    return str;
});
&lt;/code&gt;
&lt;br /&gt;

&lt;p&gt;
نتیجه: 740 تیک برای هر اجرا. بد نیست ولی توجه داشته باشید که باز هم در این روش 9 رشته موقت ساخته می‌شه و تابع Replace مجبوره در هر اجرا یکبار کل متن رو جستجو کنه.
&lt;/p&gt;
&lt;br /&gt;

&lt;p&gt;
در روش بعدی کاراکترها رو تک تک رو بررسی می‌کنیم و اگه به رقم انگلیسی برخورد کردیم، معادلش رو جایگزین می‌کنم. در ضمن برای جلوگیری از ساختن و دور ریختن مکرر رشته‌ها از کلاس StringBuilder استفاده می‌کنیم. 
&lt;/p&gt;
&lt;br /&gt;

&lt;code&gt;// StringBuilder
Benchmark(str =&gt; {
    
    StringBuilder sb = new StringBuilder(str.Length);

    for (int i = 0; i &lt; str.Length; i++)
        if (str[i] &gt;= 48 &amp;&amp; str[i] &lt;= 57)
            sb.Append((char)(str[i] + 1728));
        else
            sb.Append(str[i]);

    return sb.ToString();
});
&lt;/code&gt;
&lt;br /&gt;

نتیجه: 360 تیک برای هر اجرا. خیلی بهتر شد ولی هنوز جای کار داره. از اونجایی که ما تنها لازم داریم یک کاراکتر رو با فقط و فقط یک کاراکتر دیگه جایگزین کنیم، پس می‌شه خیلی بهینه‌تر عمل کرد. در روش بعدی ابتدا یک آرایه موقت از نوع char و به طول رشته اصلی درست می‌کنیم و بعد مثل روش قبل کاراکترها رو تک تک رو بررسی می‌کنیم و حاصل رو توی آرایه موقت کپی می‌کنیم. در آخر هم نتیجه رو به صورت String بر می‌گردونیم.

&lt;code&gt;// Char[]
Benchmark(str =&gt; {

    char[] temp = new char[str.Length];

    for (int i = 0; i &lt; str.Length; i++) {

        char value = str[i];

        if (value &gt;= 48 &amp;&amp; value &lt;= 57)
            temp[i] = (char)(value + 1728);
        else
            temp[i] = value;
    }

    return new String(temp);
});
&lt;/code&gt;
&lt;br /&gt;

&lt;p&gt;
نتیجه: 150 تیک برای هر اجرا. کمتر از نصف روش قبل. در واقع این روش ساده‌ترین و کاراترین روشی‌ هستش که من بهش رسیدم. برای بهینه‌تر کردن این روش می‌شه از اشاره‌گرها هم استفاده کرد:
&lt;/p&gt;
&lt;br /&gt;

&lt;code&gt;// Char[] *Unsafe
Benchmark(str =&gt; {

    unsafe {
        fixed (char* src = str) {
            fixed (char* temp = new char[str.Length]) {

                for (int i = 0; i &lt; str.Length; i++) {

                    char value = *(src + i);

                    if (value &gt;= 48 &amp;&amp; value &lt;= 57)
                        *(temp + i) = (char)(value + 1728);
                    else
                        *(temp + i) = value;
                }

                return new String(temp);
            }
        }
    }
});
&lt;/code&gt;
&lt;br /&gt;

&lt;p&gt;
نتیجه: 145 تیک برای هر اجرا. اختلافش با روش قبلی خیلی کمه و به نظر من اصلا به دردسرش نمی‌ارزه. یک نکته‌ای هم که هست اینه که این روش در بعضی حالت‌ها کندتر از روش قبلی عمل می‌کنه! کلا بهتره اجازه بدیم خود NET. حافظه رو مدیریت کنه و ما دخالت نکنیم.
&lt;/p&gt;
&lt;br /&gt;

&lt;p&gt;
یک کاره دیگه هم که می‌شه کرد اینه که به جای این که کاراکترهای غیر-رقمی رو تک تک کپی کنیم، همه رو نگه داریم و با هم کپی کنیم:
&lt;/p&gt;
&lt;br /&gt;

&lt;code&gt;// Char[] Block
Benchmark(str =&gt; {

    char[] src = str.ToCharArray();
    char[] temp = new char[str.Length];

    int lastIndex = 0;

    for (int i = 0; i &lt; src.Length; i++) {

        char val = src[i];

        if (val &lt; 48 || val &gt; 57)
            continue;

        Array.Copy(src, lastIndex, temp, lastIndex, i - lastIndex);
        temp[i] = (char)(val + 1728);
        
        lastIndex = i + 1;
    }

    Array.Copy(src, lastIndex, temp, lastIndex, src.Length - lastIndex);

    return new String(temp);
});
&lt;/code&gt;
&lt;br /&gt;

&lt;p&gt;
نتیجه: 280 تیک برای هر اجرا. برخلاف انتظار، کندتر از دو روش قبلی شد؛ دلیل اصلیش هم استفاده از متد Array.Copy هست. Buffer.BlockCopy هم فرق چندانی نداره.
&lt;/p&gt;
&lt;br /&gt;

&lt;p&gt;
به روز رسانی: در روش RegEx الگوی d\ رو با [9-0] عوض کردم تا فقط شامل ارقام انگلیسی بشه.
&lt;/p&gt;
&lt;br /&gt;

&lt;p style="text-align: left"&gt;
&lt;a href="http://www.idevcenter.com/links/vote?url=http://www.idevcenter.com/blog/post/148/"&gt;
&lt;img src="http://www.idevcenter.com/links/image?url=http://www.idevcenter.com/blog/post/148/" alt="Vote on iDevCenter" title="Vote on iDevCenter" /&gt;
&lt;/a&gt;
&lt;/p&gt;</description>
      <link>http://www.idevcenter.com/blog/post/148/</link>
      <author>soheilpro</author>
      <pubDate>Sun, 18 Jan 2009 22:39:15 GMT</pubDate>
      <guid isPermaLink="true">http://www.idevcenter.com/blog/post/148/</guid>
    </item>
    <item>
      <title>iDevCenter.com Behind the Scenes - Part 147</title>
      <description>‫چند وقتیه دارم در مورد یک ادیتور خوب برای بخش ویکی‌ها (و همینطور یک بخش جدید دیگه که تو فکرشم) نحقیق می‌کنم ولی هنوز به نتیجه‌ای نرسیدم. مشکل که هست اینه که برای فرمت کردن مطالب سایت از HTML استفاده می‌شه و نوشتن کدهای HTML (و در کل هر چیز چپ به راست) بین متن‌های راست به چپ فارسی کار واقعا سختیه.
&lt;br /&gt;&lt;br /&gt;

از نظر من یک ادیتور مناسب برای سایت باید این دو تا ویژگی‌ رو حتما داشته باشه:
&lt;br /&gt;&lt;br /&gt;

&lt;ul&gt;
	&lt;li&gt;کدهای HTML کاملا معتبر و مطابق با اصول فرمت‌دهی سایت تولید کنه؛ چون به دلیل مشکلات امنیتی مجبورم در مورد کدهایی که کاربران وارد می‌کنند خیلی سخت‌گیر باشم.&lt;/li&gt;
	&lt;li&gt;قابلیت نمایش بخشی از متن به صورت LTR و بخشی به صورت RTL رو داشته باشه (برای مواردی که لازمه بین دو پاراگراف فارسی یک نمونه کد نوشته بشه)&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;

حالا راه‌حل هایی که وجود داره:
&lt;br /&gt;&lt;br /&gt;

&lt;ul&gt;
	&lt;li&gt;در کد‌های HTML به جای &lt;&gt; از () و نام‌های معادل فارسی استفاده بشه مثل (توپر)متن(توپر/): مشکل LTR و RTL تا حدی برطرف می‌شه و پیاده سازیش هم سریع و آسونه.&lt;/li&gt;
	&lt;li&gt;به جای HTML از یه فرمت دیگه مثل Markdown استفاده بشه: برای مواردی مثل عنوان‌ها و لیست‌ها گزینه مناسبیه ولی برای موارد پیچیده‌تری مثل جدول‌ها و نمونه کدها نه.&lt;/li&gt;
	&lt;li&gt;یک Add-on برای MS Word نوشته بشه تا متون نوشته شده در این برنامه رو به فرمت معتبر برای سایت تبدیل کنه: نمی‌دونم چقدر قابل انجامه.&lt;/li&gt;
	&lt;li&gt;یک ادیتور کامل با ویژگی‌های گفته شد توسط Silverlight و یا به صورت یک برنامه مستقل نوشته بشه: کار بسیار سخت و وقت گیریه ولی در عین حال جالبه و مفید برای جامعه فارسی زبانان.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;

نظر شما چیه؟</description>
      <link>http://www.idevcenter.com/blog/post/147/</link>
      <author>soheilpro</author>
      <pubDate>Wed, 31 Dec 2008 22:41:55 GMT</pubDate>
      <guid isPermaLink="true">http://www.idevcenter.com/blog/post/147/</guid>
    </item>
    <item>
      <title>iDevCenter.com Behind the Scenes - Part 146</title>
      <description>‫امروز وقت شد یه دستی به سایت بکشم و چند تا مورد رو درست کنم:
&lt;br /&gt;&lt;br /&gt;

&lt;ul&gt;
   &lt;li&gt;تعداد برچسب‌هایی که توی صفحه برچسب‌ها نشون داده می‌شه رو محدود کردم.&lt;/li&gt;
   &lt;li&gt;برچسب‌هایی که کمکی به بهبود جستجو نمی‌کنند (برچسب‌هایی که بین همه موارد پیدا شده مشترک هستند) دیگه تو لیست برچسب‌های مرتبط نشون داده نمی‌شن.&lt;/li&gt;
   &lt;li&gt;یک تگ با نام LTR برای نمایش صحیح متون انگلیسی در ویکی‌ها اضافه کردم.&lt;/li&gt;
   &lt;li&gt;مشکل انتخاب بعضی کشورها در قسمت پروفایل رو برطرف کردم.&lt;/li&gt;
   &lt;li&gt;یه راهنمای کوچک نوشتم برای کسانی که دوست دارن تعداد رای لینک‌هاشون به طور خودکار زیر مطالب وبلاگ/سایتشون نشون داده بشه: &lt;a href="/links/help/#autolink"&gt;چگونه می‌توانم دکمه رای را به صورت خودکار در وبلاگ/سایت خودم قرار دهم؟&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <link>http://www.idevcenter.com/blog/post/146/</link>
      <author>soheilpro</author>
      <pubDate>Tue, 16 Dec 2008 22:12:19 GMT</pubDate>
      <guid isPermaLink="true">http://www.idevcenter.com/blog/post/146/</guid>
    </item>
    <item>
      <title>iDevCenter.com Behind the Scenes - Part 145</title>
      <description>‫&lt;a href="/blog/post/144/#comments"&gt;دستور دادن&lt;/a&gt; که یک ویکی برای &lt;a href="/wiki/msbuild/"&gt;MSBuild&lt;/a&gt; بساز، ما هم اطاعت کردیم. حالا نویت شماست که در مورد یک موضوع که درباره‌اش اطلاعاتی دارین، یک ویکی بسازین. لازم نیست از اول کامل و جامع باشه، شما شروع کنین، بقیه کامل می‌کنن.</description>
      <link>http://www.idevcenter.com/blog/post/145/</link>
      <author>soheilpro</author>
      <pubDate>Tue, 09 Dec 2008 21:28:02 GMT</pubDate>
      <guid isPermaLink="true">http://www.idevcenter.com/blog/post/145/</guid>
    </item>
    <item>
      <title>iDevCenter.com Behind the Scenes - Part 144</title>
      <description>‫اتوماسیون در پروسه تولید نرم افزار یکی از چیزایی که اعتقاد خیلی زیادی بهش دارم و تا جایی که امکانش باشه، هر کار تکراری رو اتوماتیک می‌کنم. برای همین، چند روز پیش نشستم و یک Build Script برای سایت با &lt;a href="http://en.wikipedia.org/wiki/Msbuild"&gt;MSBuild&lt;/a&gt; نوشتم. البته تو نسخه قبلی سایت هم این کار رو کرده بودم؛ ولی اون موقع به کاملی الان نبود و از &lt;a href="http://en.wikipedia.org/wiki/Nant"&gt;NAnt&lt;/a&gt; هم استفاده شده بود.
&lt;br /&gt;&lt;br /&gt;

این اسکریپت به طور کلی کارهای زیر رو انجام می‌ده:
&lt;br /&gt;

&lt;ol start="0"&gt;
   &lt;li&gt;قبل از هر کاری، دایرکتوری‌های لازم برای انجام پروسه Build آماده می‌شن.&lt;/li&gt;
   &lt;li&gt;آخرین نسخه فایل‌ها که آمادگی انتشار رو دارن (و با Label خاصی مشخص شده‌اند) از SourceSafe گرفته می‌شه.&lt;/li&gt;
   &lt;li&gt;پروژه‌ها به ترتیب کامپایل می‌شن.&lt;/li&gt;
   &lt;li&gt;تمام فایل‌هایی که برای اجرای سایت لازم هستند به یک مسیر موقت کپی می‌شن. در واقع تو این مرحله فایل‌هایی که به وجودشون روی سرور نیازی نیست (مثل فایل‌های cs.) حذف می‌شن.&lt;/li&gt;
   &lt;li&gt;فایل web.config برای کار روی سرور آماده می‌شه. از جمله این که Custom Errors و Health Monitoring فعال می‌شن و system.web/compilation/debug غیر فعال.&lt;/li&gt;
   &lt;li&gt;فایل‌هایی که نسبت به نسخه موجود روی سایت تغییر کردن به یک دایرکتوری مشخص کپی می‌شن تا نیازی به کپی مجدد همه فایل‌ها به روی سرور نباشه. برای این کار مجبور شدم یک Task بنویسم که این دایرکتوری رو با یک دایرکتوری دیگه (که شامل یک کپی کامل از همه فایل‌های روی سرور هستش) مقایسه کنه و فایل‌های جدید و یا تغییر کرده رو پیدا کنه.&lt;/li&gt;
&lt;/ol&gt;

مرحله بعدی انتقال فایل‌ها به روی سروره که فعلا به طور دستی انجام می‌شه. هنوز وقت نکردم Task لازم برای این کار رو کامل بنویسم و تست کنم.
&lt;br /&gt;&lt;br /&gt;

بعد از این که فایل‌ها کپی شدن و مشکلی نبود، مرحله دوم اسکریپت اجرا می‌شه:
&lt;br /&gt;

&lt;ol start="6"&gt;
   &lt;li&gt;دایرکتوری که تو مرحله پنجم بهش اشاره شد به روز می‌شه تا برای بار بعد که اسکریپت اجرا می‌شه آماده باشه.&lt;/li&gt;
   &lt;li&gt;یک فایل ZIP از تمام فایل‌های کپی شده ساخته می‌شه.&lt;/li&gt;
&lt;/ol&gt;
</description>
      <link>http://www.idevcenter.com/blog/post/144/</link>
      <author>soheilpro</author>
      <pubDate>Mon, 08 Dec 2008 22:34:40 GMT</pubDate>
      <guid isPermaLink="true">http://www.idevcenter.com/blog/post/144/</guid>
    </item>
    <item>
      <title>iDevCenter.com Behind the Scenes - Part 143</title>
      <description>‫برای ویکی‌ها تصمیم بر این شد که امکان ویرایش برچسب‌ها به همه کاربرها داده بشه؛ وقتی عنوان و متن ویکی رو هر کسی می‌تونه ویرایش کنه، برچسب‌ها دیگه فکر نکنم خیلی مساله‌ساز باشه. اما برای لینک‌ها فعلا قرار شد که تنها به بعضی کاربرها دسترسی ویرایش داده بشه. امکان auto complete برای برچسب‌ها رو هم تو لیست کارها نوشتم که اضافه کنم.
&lt;br /&gt;&lt;br /&gt;

در ضمن، مشکل ارسال لینک‌هایی که توی آدرسشون کاراکترهای خاص (مثل ~ و ,) داشتن رو هم برطرف کردم.</description>
      <link>http://www.idevcenter.com/blog/post/143/</link>
      <author>soheilpro</author>
      <pubDate>Sun, 07 Dec 2008 20:05:07 GMT</pubDate>
      <guid isPermaLink="true">http://www.idevcenter.com/blog/post/143/</guid>
    </item>
    <item>
      <title>iDevCenter.com Behind the Scenes - Part 142</title>
      <description>‫62 لینک ارسال شده، 19 لینک پرطرفدار، 192 رای، 4 ویکی، 25 کاربر جدید، 17 کاربر فعال، 149 برچسب و 18 نظر حاصل کار 

سایت در هفته اول بود. بخش لینک‌ها به خوبی  داره پیش می‌ره و لینک‌های خیلی مفیدی ارسال شده اما بخش ویکی‌ها هنوز 

فعالیت خاصی نداشته و کاربرها تمایلی برای ساخت و یا ویرایش ویکی نشون ندادن.
&lt;br /&gt;&lt;br /&gt;

از نظر کیفیت مطالب ارسال شده، شخصا خیلی راضیم و به جرات می‌تونم بگم که کاملا بالاتر از حد انتظارم بوده؛ اما از نظر کمیت 

انتظار بیشتری داشتم. با این که چند نفر از دوستان آشنا و غیر آشنا لطف کردن و تو وبلاگشون خبر راه اندازی مجدد سایت رو 

نوشتن، اما هنوز تعداد خیلی کمی از مردم از سایت جدید خبر دارن! در همین راستا برای تمام 3060 کاربر قدیمی سایت یک 

ایمیل فرستادیم و خبر راه اندازی سایت جدید رو اعلام کردیم و در ضمن این امکان رو براشون فراهم کردیم که حتی اگه کلمه 

عبورشون یادشون رفته، بازهم بتونن با همون نام کاربری قدیمی که داشتن وارد سایت بشن. تقریبا نصف این ایمیل‌ها برگشت 

خورد، اما تا الان 53 کاربر قدیمی سایت از همین طریق دوباره عضو شدن.
&lt;br /&gt;&lt;br /&gt;

از نظر فنی هم به جز چند مورد جزئی که برطرف کردم، مشکلی نبوده و سایت خیلی خوب کار کرده. از چند روز دیگه کم کم 

می‌رم سراغ اضافه کردن یک سری امکانات جدید؛ از جمله یک ادیتور درست حسابی برای ویکی‌ها.
&lt;br /&gt;&lt;br /&gt;

تنها مسئله نسبتا مهمی که تو این چند روزه پیش اومده مربوط به برچسب‌هاست. مدلی که از اول برای برچسب‌ها در نظر گرفته 

بودیم این بود که کاربری که یک لینک جدید ارسال می‌کنه و یا یک ویکی جدید می‌سازه برچسب‌هایی رو که خودش مناسب 

می‌دونه مشخص کنه و بقیه کاربرها هم بتونن در صورت تمایل برچسب‌های جدیدی رو اضافه کنن و موقع نمایش هم کل این 

برچسب‌ها نشون داده بشه. اما تا الان چندین مورد پیش اومده که برچسب‌های زده شده اشتباه و یا زیادی هستن و به طبقه 

بندی درست مطالب سایت کمکی نمی‌کنن. برای همین داریم روی این قضیه فکر می‌کنیم که به تمام کاربرها امکان ویرایش 

برچسب‌ها رو بدیم تا همه بتونن برچسب‌های اشتباه رو اصلاح کنن. نظر شما چیه؟ کار خوبیه؟</description>
      <link>http://www.idevcenter.com/blog/post/142/</link>
      <author>soheilpro</author>
      <pubDate>Sun, 30 Nov 2008 08:47:34 GMT</pubDate>
      <guid isPermaLink="true">http://www.idevcenter.com/blog/post/142/</guid>
    </item>
    <item>
      <title>iDevCenter.com Behind the Scenes - Part 141</title>
      <description>‫امروز (سه شنبه، 5 آذر) از ساعت 10:30 تا 11:30 صبح، ممکنه سایت به دلیل Server Maintenance در دسترس نباشه.</description>
      <link>http://www.idevcenter.com/blog/post/141/</link>
      <author>soheilpro</author>
      <pubDate>Mon, 24 Nov 2008 20:41:30 GMT</pubDate>
      <guid isPermaLink="true">http://www.idevcenter.com/blog/post/141/</guid>
    </item>
    <item>
      <title>iDevCenter.com Behind the Scenes - Part 140</title>
      <description>‫چرا سایت جدید؟
&lt;br /&gt;

سایت‌های آموزشی فارسی رو می‌شه به دو گروه تقسیم‌بندی کرد. یک- سایت‌هایی که مقاله-محور هستند و دو- سایت‌هایی که با هدف پرسش و پاسخ و در قالب یک انجمن فعالیت می‌کنند. iDevCenter از روز اولی که شروع به کار کرد جزو گروه اول بود. به این شکل که کاربرها مقالاتی رو در زمینه‌های مختلف ارسال می‌کردند و این مقالات بعد از تایید و ویرایش شدن روی سایت قرار داده می‌شد. در واقع، بخش مقاله‌ها هسته اصلی و تشکیل دهنده تمام محتوای سایت بود. اما این مدل خیلی سریع جذابیت و کارائی خودش رو از دست داد. حجم مقالاتی که برای سایت ارسال می‌شد نسبت به حجم اطلاعات تولید شده در زمینه‌های مختلف بسیار کمتر بود و کیفیت آنها نیز نسبت مطالبی که به زبان انگلیسی در سایت‌های خارجی می‌شد پیدا کرد، بسیار پایین‌تر بود. از طرف دیگه با فراگیر شدن وبلاگ‌ها مردم ترجیح می‌دادن مطالبی که می‌نوشتند در وبلاگ خودشون منتشر بشه. به همین دلیل، در نسخه دوم سایت در کنار بخش مقاله‌ها، بخش دیگری به نام "فهرست مقالات فارسی" اضافه شد با هدف ایجاد یک فهرست کامل از مطالب خوبی که در وبلاگ‌ها و سایت‌های فارسی نوشته می‌شد. اما یک مشکل دیگه همچنان باقی موند و اون هم این بود که من به تنهایی مسئول نگهداری و وارد کردن محتوای سایت بودم. یک آدم هر چقدر هم که علاقه و وقت و انرژی داشته باشه، نمی‌تونه یک‌تنه برای طولانی مدت یک سایت رو به تنهایی اداره کنه. این شد که سایت قبلی روز به روز فعالیتش کم‌تر شد و حدود دو سال و سه ماه پیش به طور کامل کرکره‌اش پایین کشیده شد.
&lt;br /&gt;&lt;br /&gt;

در سایت جدید سعی شده مشکلات سایت قبلی دیگه تکرار نشه. برای همین بخش لینک‌ها و ویکی‌ها جایگزین بخش مقالات شده و همچنین، همه کاربران به طور مستقیم در تامین محتوای سایت و به روز نگه داشتن اون نقش دارند.
&lt;br /&gt;&lt;br /&gt;

چرا بخش لینک‌ها؟
&lt;br /&gt;

این بخش در واقع نسخه تکامل یافته همون "فهرست مقالات فارسی" در سایت قبلیه. همه ما هر روز در اینترنت به مطالب مفید زیادی برمی‌خوریم که ترجمه و انتشارشون در قالب مقاله برای سایت همونطور که گفتم، نه امکان‌پذیره و نه دیگه جذابیتی داره. هدف این بخش به اشتراک گذاشتن لینک این مطالب مفید با بقیه کاربران سایته. هر کاربری می‌تونه لینک مطالب خوبی رو که پیدا می‌کنه و یا خودش تو سایت/وبلاگش می‌نویسه ارسال کنه و بقیه کاربران هم با رای دادن به این لینک‌ها، تعیین می‌کنند که آیا این لینک‌ها واقع مفید هستن و ارزش نمایش در صفحه اصلی بخش لینک‌ها رو دارن یا نه.
&lt;br /&gt;&lt;br /&gt;

چرا بخش ویکی‌ها؟
&lt;br /&gt;

قبول کنید که خیلی بده ما ایرانی‌ها با این همه ادعا، یک مرجع فارسی درباره برنامه نویسی و طراحی وب نداشته باشیم. یک مرجع که درباره هر موضوعی یک معرفی کوتاه بکنه، تاریخچه اون رو به اختصار شرح بده و چندین منبع فارسی و انگلیسی برای اطلاع بیشتر معرفی بکنه. هدف این بخش دقیقا همینه. یه جورایی همون ویکی‌پدیا ولی به فارسی و فقط در زمینه برنامه‌نویسی و طراحی وب. امیدوارم این بخش طوری بشه که مثلا اگر کسی از شما سوال کرد که "jQuery چیه؟" شما بتونین بهش بگین "برو تو بخش ویکی‌های سایت iDevCenter درباره‌اش بخون".</description>
      <link>http://www.idevcenter.com/blog/post/140/</link>
      <author>soheilpro</author>
      <pubDate>Mon, 24 Nov 2008 15:28:26 GMT</pubDate>
      <guid isPermaLink="true">http://www.idevcenter.com/blog/post/140/</guid>
    </item>
  </channel>
</rss>