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

<channel>
	<title>من پت هستم &#187; برنامه‌نویسی</title>
	<atom:link href="http://persian.iampat.net/category/%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87%e2%80%8c%d9%86%d9%88%db%8c%d8%b3%db%8c/feed/" rel="self" type="application/rss+xml" />
	<link>http://persian.iampat.net</link>
	<description>همراه شو عزیز</description>
	<lastBuildDate>Sun, 05 Sep 2010 20:10:34 +0000</lastBuildDate>
	<language>fa</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>To record in the history</title>
		<link>http://persian.iampat.net/1389/06/to-record-in-history/</link>
		<comments>http://persian.iampat.net/1389/06/to-record-in-history/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 18:46:48 +0000</pubDate>
		<dc:creator>پت</dc:creator>
				<category><![CDATA[آکادمیا]]></category>
		<category><![CDATA[برنامه‌نویسی]]></category>
		<category><![CDATA[روزمره]]></category>

		<guid isPermaLink="false">http://persian.iampat.net/?p=1562</guid>
		<description><![CDATA[I worked  about 10 minutes to find an optimum but slow algorithm, then 2 hours to find a slower dummy not optimum algorithm. Finally, after 2 days, I found the fastest (as I believe UNTIL now) optimum algorithm. * These days, I am practising to get ready for an important interview.]]></description>
			<content:encoded><![CDATA[<ul>
<li style="text-align: left;" dir="ltr">I worked  about 10 minutes to find an optimum but slow algorithm,</li>
<li style="text-align: left;" dir="ltr">then 2 hours to find a slower dummy not optimum algorithm.<br />
Finally, after 2 days, I found the fastest (as I believe UNTIL now) optimum algorithm.</li>
</ul>
<p style="text-align: left;" dir="ltr">* These days, I am practising to get ready for an important interview.</p>
]]></content:encoded>
			<wfw:commentRss>http://persian.iampat.net/1389/06/to-record-in-history/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>کدزنانه‌ها</title>
		<link>http://persian.iampat.net/1389/01/coding_meii/</link>
		<comments>http://persian.iampat.net/1389/01/coding_meii/#comments</comments>
		<pubDate>Sat, 17 Apr 2010 07:34:37 +0000</pubDate>
		<dc:creator>پت</dc:creator>
				<category><![CDATA[برنامه‌نویسی]]></category>
		<category><![CDATA[روزمره]]></category>

		<guid isPermaLink="false">http://iampat.keykoja.com/?p=1449</guid>
		<description><![CDATA[خیلی وقت بود برای دل خودم برنامه‌نویسی نکرده بودم، همیشه یا پای پول در میان بوده و یا پروژه‌ی درسی و &#8230;  خلاصه به جز یک استثنا چند روزه،‌ مدت‌ها بود که خودم را ازاین می و مستی بعدش بی‌بهره گذاشته‌بودم و سراغ این ساقی زیبا روی گریز پای نرفته بودم. این چند روز دوباره [...]]]></description>
			<content:encoded><![CDATA[<p>خیلی وقت بود برای دل خودم برنامه‌نویسی نکرده بودم، همیشه یا پای پول در میان بوده و یا پروژه‌ی درسی و &#8230;  خلاصه به جز یک استثنا چند روزه،‌ مدت‌ها بود که خودم را ازاین می و مستی بعدش بی‌بهره گذاشته‌بودم و سراغ این ساقی زیبا روی گریز پای نرفته بودم.</p>
<p>این چند روز دوباره دارم از این می می‌نوشم و از خودم آزاد می‌شوم.</p>
]]></content:encoded>
			<wfw:commentRss>http://persian.iampat.net/1389/01/coding_meii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>اوبونتو</title>
		<link>http://persian.iampat.net/1388/07/%d8%a7%d9%88%d8%a8%d9%88%d9%86%d8%aa%d9%88/</link>
		<comments>http://persian.iampat.net/1388/07/%d8%a7%d9%88%d8%a8%d9%88%d9%86%d8%aa%d9%88/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 19:45:42 +0000</pubDate>
		<dc:creator>پت</dc:creator>
				<category><![CDATA[برنامه‌نویسی]]></category>
		<category><![CDATA[روزمره]]></category>
		<category><![CDATA[پتانه]]></category>

		<guid isPermaLink="false">http://iampat.keykoja.com/?p=1003</guid>
		<description><![CDATA[آقا نمی دانم کدام شیر پاک خورده ای زیر پای ما نشت و ما را فریب داد که روی این کامپیوتر جدیدمان لینوکس نصب کنیم. خلاصه ما هم یک فروند اوبونتو روی این طفل نوزاد نصب کردیم. بسی سریع و بدون دردسر نصب شد و تمام قطعات را هم بدون دردسر شناخت. خدا عمرش دهاد. [...]]]></description>
			<content:encoded><![CDATA[<p>آقا نمی دانم کدام شیر پاک خورده ای زیر پای ما نشت و ما را فریب داد که روی این کامپیوتر جدیدمان لینوکس نصب کنیم. خلاصه ما هم یک فروند اوبونتو روی این طفل نوزاد نصب کردیم. بسی سریع و بدون دردسر نصب شد و تمام قطعات را هم بدون دردسر شناخت. خدا عمرش دهاد. خلاصه تنها مشکلم ظاهر زشت فونتهای فارسی است که آن هم احتمالا راه حلی سریع دارد ولی ما جاهلیم و نادان. پس با کمک کردن به این بنده حقیر، و بهره مند شدن از دعای خیر نامبره، خیر دنیا و آخرت خود را تضمین نمایید</p>
]]></content:encoded>
			<wfw:commentRss>http://persian.iampat.net/1388/07/%d8%a7%d9%88%d8%a8%d9%88%d9%86%d8%aa%d9%88/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>بهینه‌سازی سرعت اجرای برنامه‌ها در Matlab -قسمت اول</title>
		<link>http://persian.iampat.net/1388/06/optimizing_matlab_codes_part2/</link>
		<comments>http://persian.iampat.net/1388/06/optimizing_matlab_codes_part2/#comments</comments>
		<pubDate>Sun, 13 Sep 2009 22:02:58 +0000</pubDate>
		<dc:creator>پت</dc:creator>
				<category><![CDATA[آکادمیا]]></category>
		<category><![CDATA[برنامه‌نویسی]]></category>
		<category><![CDATA[matlab]]></category>
		<category><![CDATA[بهینه‌سازی]]></category>
		<category><![CDATA[متلب]]></category>
		<category><![CDATA[مطلب]]></category>

		<guid isPermaLink="false">http://iampat.keykoja.com/?p=924</guid>
		<description><![CDATA[خوب در قسمت قبلی، خیلی وارد خود بحث بهینه‌سازی نشدم و بیشتر به مقدمه و حاشیه‌ی کار پرداختم.  ولی امروز می‌خواهم کم کمک وارد بحث اصلی بشوم. یک نکته‌ای که دفعه‌ی قبلی بیان آن فراموش شد، این بود که وقتی می‌گوییم «بهینه‌سازی»، منظورمان بهینه‌سازی الگوریتم نیست. بلکه من فرض کرده‌ام شما به دلیلی یک الگوریتم [...]]]></description>
			<content:encoded><![CDATA[<p>خوب در<a href="http://iampat.keykoja.com/1388/06/optimizing_matlab_codes_intro/" target="_blank"> قسمت قبلی</a>، خیلی وارد خود بحث بهینه‌سازی نشدم و بیشتر به مقدمه و حاشیه‌ی کار پرداختم.  ولی امروز می‌خواهم کم کمک وارد بحث اصلی بشوم.</p>
<p>یک نکته‌ای که دفعه‌ی قبلی بیان آن فراموش شد،  این بود که وقتی می‌گوییم «بهینه‌سازی»، منظورمان بهینه‌سازی الگوریتم نیست. بلکه من فرض کرده‌ام  شما به دلیلی یک الگوریتم خاص را انتخاب کرده‌اید و حالا فقط تمایل دارید که آن را   به سریع‌ترین شکل ممکن پیاده‌سازی کنید. و یا اینکه یک تکه کد کند دارید و می‌خواهید سرعت اجرای آن را بهتر کنید.</p>
<p>موارد ۱ و ۲ را که در <a href="http://iampat.keykoja.com/1388/06/optimizing_matlab_codes_intro/">پست قبلی</a> نوشته بودم. پس حالا می‌رویم سراغ مورد سوم:</p>
<p>۳- مشخص کردن گلوگاه‌های برنامه را می‌توان به عنوان گام بعدی برای هر گونه بهینه‌سازی بیان کرد. زیرا معمولا در هر برنامه یک یا چند نقطه‌ی گلوگاهی وجود دارد که باعث می‌شوند بهینه‌سازی سایر نقاط تاثیر چندانی بر عملکرد برنامه نداشته باشند.  به عنوان مثال، تصور کنید که برنامه‌ی شما ۲   تابع داشته باشد. که یکی ۹۸% زمان اجرا را به خود اختصاص بدهد  و دیگری فقط ۲%. اگر شما حدس بزنید که با یک ساعت کلنجار رفتن با کد تابع اول می‌توانید آن را ۲ برابر سریع‌تر کنید و یا با صرف همین زمان بر روی تابع دوم  می‌توانید آن را ۲۰ برابر سریع‌تر کنید، ترجیح می‌دهید بر روی بهینه‌سازی کدام تابع کار کنید؟ ( بهینه‌سازی تابع اول زمان کلی را تفریبا نصف می‌کند ولی بهینه‌سازی تابع دوم تقریبا تاثیری روی زمان اجرای برنامه ندارد). وقتی شما یک تکه کد نوشته شده و آماده دارید دستور profiler در matlab می‌‌تواند بسیار کارگشا باشد. روش کار هم بسیار ساده است.</p>
<p>ابتدا در خط دستور بنویسید</p>
<p style="text-align: left;" dir="ltr">&gt;&gt;profiler on<br />
&gt;&gt;profiler clear</p>
<p style="text-align: right;">سپس برنامه‌ی خودتان را اجرا کنید و پس از اجرای آن بنویسید</p>
<p style="text-align: left;" dir="ltr">&gt;&gt;profiler view</p>
<p style="text-align: right;">با اجرای این خط دستور، profiler سهم هر قسمت از برنامه  را از کل زمان مصرف شده  نشان می‌دهد و به راحتی می‌توان نقاط گلوگاهی برنامه را مشخص می‌کرد.</p>
<p>حالا که گلوگاه مشخص شد، باید دید چگونه می‌توان آن را بر طرف کرد.</p>
<p>۳- شاید ساده‌ترین و اولین گامی که باید در راستای تسریع برنامه‎‌های matlab برداشت، تخصیص حافظه به آرایه‌ها و ماتریس‌ها قبل از شروع محاسبات باشد که اصطلاحا preallocation نامیده می‌شود. در matlab این امکان وجود دارد که در حین اجرای برنامه، سایز آرایه‌ها و ماتریس‌ها آن را تغییر داد. ولی از آنجایی که این عمل خیلی بهینه نمی‌باشد و  تغییر اندازه آرایه‌ها به صورت پویا و در حین اجرای برنامه  بسیار کند انجام می‌شود، انجام مکرر آن  به راحتی می‌تواند تبدیل به گلوگاه اجرای برنامه شود.</p>
<p>۴- یکی از توانمندی‌های مهم matlab انجام محاسبات برداری و ماتریسی با سرعت و بازده بالا می‌باشد و بر خلاف این گونه محاسبات، اجرای حلقه‌ها (مانند for و یا while) و دسترسی به خانه‌های یک آرایه از طریق اندیس‌ به شدت کند و غیر بهینه می‌باشد. به همین دلیل با حذف  دسترسی با اندیس به المان‌های آرایه‌ها و ماتریس‌ها و همچنین حذف حلقه‌ها و به جای آن‌ها پیاده سازی الگوریتم به کمک  عملیات برداری می‌توان سرعت اجرا به مقدار قابل توجهی افزایش داد.</p>
<p>بسیاری از محاسبات برنامه را به راحتی می‌توان به صورت برداری و ماتریسی نوشت ولی برای تبدیل عده‌ای دیگر نیاز به لم‌ها و تکنیک‌هایی است  که در قسمت بعدی این پست به تعدادی از آن‌ها اشاره خواهم کرد.</p>
<p>*قسمت بعدی احتمالا قسمت آخر این مجموعه می‌باشد.</p>
]]></content:encoded>
			<wfw:commentRss>http://persian.iampat.net/1388/06/optimizing_matlab_codes_part2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>بهینه‌سازی سرعت اجرای برنامه‌ها در Matlab -مقدمه</title>
		<link>http://persian.iampat.net/1388/06/optimizing_matlab_codes_intro/</link>
		<comments>http://persian.iampat.net/1388/06/optimizing_matlab_codes_intro/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 12:41:14 +0000</pubDate>
		<dc:creator>پت</dc:creator>
				<category><![CDATA[آکادمیا]]></category>
		<category><![CDATA[برنامه‌نویسی]]></category>
		<category><![CDATA[matlab]]></category>
		<category><![CDATA[بهینه‌سازی]]></category>
		<category><![CDATA[متلب]]></category>
		<category><![CDATA[مطلب]]></category>

		<guid isPermaLink="false">http://iampat.keykoja.com/?p=825</guid>
		<description><![CDATA[فکر کنم کمتر دانشجوی فنی را بتوان پیدا کرد که تا به حال تنش به تن matlab نخورده باشد. هر چند که matlab ابزار خیلی خوبی جهت تولید نرم‌افزار نیست، ولی در عوض این امکان را فراهم می‌آورد که خیلی سریع و بدون اینکه برنامه‌نویس حرفه‌ای باشیم و یا آنکه بخواهیم برای برنامه‎نویسی وقت زیادی [...]]]></description>
			<content:encoded><![CDATA[<p>فکر کنم کمتر دانشجوی فنی را بتوان پیدا کرد که تا به حال تنش به تن matlab نخورده باشد. هر چند که matlab ابزار خیلی خوبی جهت تولید نرم‌افزار نیست، ولی در عوض این امکان را فراهم می‌آورد که خیلی سریع و بدون اینکه  برنامه‌نویس حرفه‌ای  باشیم و یا آنکه بخواهیم برای برنامه‎نویسی وقت زیادی بگذاریم، بتوانیم یک ایده و یا الگوریتم را پیاده‎سازی کرده و نتایج آن را خیلی بازاری و ژینگول وینگول  نمایش بدهیم . برای همین بزرگان همیشه توصیه کرده‎اند که به matlab ایمان بیاورید تا خیر دنیا را ببینید.</p>
<p>ولی به کرات دیده‌ایم که برنامه‌نوسان matlab (حتی کسانی که مدت‌هاست  با matlab کد ‌‎زده‎اند) از کندی برنامه‌هایشان می‌نالند و  آن طور که لازمه نمی‌توانند از matlab  کام بگیرند.  در این پست و مجموعه  پست‎های بعدی، من تصمیم ندارم که  حرف تازه‌ای بزنم و یا تکنیک خارخ العاده‌ای را بیان کنم. هدف فقط بیان مجدد تکنیک‌های بسیار ساده و در عین حال بسیار موثری است که  در چندین سال گذشته از افراد با تجربه‌ و یا  از روی منابع موجود در اینترنت یاد گرفته‌ام. امید است که  دردی از دیگران را هم دوا کند.</p>
<p>حالا از این حرف و حدیث‎ها که بگذریم و بیاییم سر اصل مطلب:</p>
<p>۱-  قبل از هر کاری، سعی کنید که دستورات matlab را به خوبی یاد بگیرید. عموما دستورات built-in بسیار بهینه نوشته شده‌اند و به درستی عملکردشان هم به خوبی می‌توان اعتماد کرد. پس گاهی بد نیست به جای اینکه سریع مشغول کد زدن بشویم، در ابتدای کار کمی هم وقت به یادگیری بیشتر matlab اختصاص بدهیم.</p>
<p>۲- آقا! خانم! محترم؛ تو را بخدا برای کدت کامنت بگذار. به هر زبانی که کد می‌نویسی کامنت بگذار. برای خودت می‌گم، چند  ماه دیگه که می‌خواهی یک خط از کد را تغییر بدهی، نیایی گوشه‌ی آفیست بنشینی و زار زاز گریه کنی که یادم رفته کد چه جوری کار می‌کرد. این قضیه را باید در حین بهینه‌سازی کد بیشتر جدی گرفت. چون بهینه‌سازی شبیه رمز کردن کد است. در حین بهینه‌سازی کد به سرعت شکل و فرم پیچیده‌ای به خودش می‌گیرد و اصطلاحا از readable بودن کد کاسته می‌شود.</p>
<p>ادامه دارد &#8230;</p>
<p>پس نوشت: خیلی وقت بود که شروع به نوشتن این پست کرده بودم. ولی چون فرصت نمی‌شد کاملش کنم، مدام منتشر کردن این پست را عقب‌ می‌انداختم. اما حالا تصمیم گرفتم فعلا این مقدمه را منتشر کنم که در مقابل کار انجام شده قرار بگیرم <img src='http://persian.iampat.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://persian.iampat.net/1388/06/optimizing_matlab_codes_intro/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>کله‌ی پر از باد</title>
		<link>http://persian.iampat.net/1388/02/%da%a9%d9%84%d9%87%e2%80%8c%db%8c-%d9%be%d8%b1-%d8%a7%d8%b2-%d8%a8%d8%a7%d8%af/</link>
		<comments>http://persian.iampat.net/1388/02/%da%a9%d9%84%d9%87%e2%80%8c%db%8c-%d9%be%d8%b1-%d8%a7%d8%b2-%d8%a8%d8%a7%d8%af/#comments</comments>
		<pubDate>Mon, 18 May 2009 03:17:23 +0000</pubDate>
		<dc:creator>پت</dc:creator>
				<category><![CDATA[برنامه‌نویسی]]></category>
		<category><![CDATA[روزمره]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://iampat.keykoja.com/?p=273</guid>
		<description><![CDATA[به عنوان کسی که خیلی ساله داره برنامه‌نویسی می‌کنه و راه نون خوردنش هم از همین راه است، باید آدم خیلی متواضعی باشم.چون عیب و ایراد کار خودم را می‌دونم، بهتر و بدتر از خودم را هم دیدم.  ولی متاسفانه کله‌ی پراز بادی دارم. البته نه این که فقط توی همین یک زمینه کله‌ام پر [...]]]></description>
			<content:encoded><![CDATA[<p>به عنوان کسی که خیلی ساله داره برنامه‌نویسی می‌کنه و راه نون خوردنش هم از همین راه است، باید آدم خیلی متواضعی باشم.چون عیب و ایراد کار خودم را می‌دونم، بهتر و بدتر از خودم را هم دیدم.  ولی متاسفانه کله‌ی پراز بادی دارم. البته نه این که فقط توی همین یک زمینه کله‌ام پر از باد باشه، کلا کله‌ام باد داره.</p>
<p>حدود یک سالی می‌شه که که دارم روی یک پروژه‌ی شخصی کار می‌کنم که کاملا خارج از زمینه‌ی تخصصیم است. این هاست هم که این وبلاگ روش نصب شده، در حقیقت برای همین پروژه اجاره شده‌است. آقا چشمتون روز بد نبینه؛ همین کله پر از باد من را همون روز اول فرستاد که هاست اجاره کن و &#8230; ولی کار مگه جلو می‌رفت! به قول معروف آفتابه لگن هفت دست، شام و نهار هیچ دست. دیگه گریه‌ام در اومده بود که چند روز پیش افتادم به صرافت سوال پرسیدن و سراغ  منبع گرفتن از بلدکارها*.  سرتون را درد نیارم در عرض ۲ روز کار مداوم**، حدود ۲۰% کار جلو رفت. هسته برنامه خوب کار می‌کنه، باید روابط هسته و پوسته‌ها را بنویسم. ولی نکته‌ی مهم این است که فعلا برای مدتی از میزان باد کله‌یمان کاسته شده است.</p>
<p>* من کلمه‌ی «بلدکار» در مقابل «خالی‌بند» را قبلا نشنیده‌ام، یعنی کپی رایتش مال خودمه و کلمه‌ی معادل و رایجی هم براش بلد نیستم. اگر کسی بلده لطفا راهنمایی کنه.</p>
<p>** دو روز کار مداوم یعنی ۲ تا ۱۶ ساعت کار که ۱ روزش به خواندن و طراحی کار بر روی کاغذ گذشت و یک روز هم به کد زنی.</p>
]]></content:encoded>
			<wfw:commentRss>http://persian.iampat.net/1388/02/%da%a9%d9%84%d9%87%e2%80%8c%db%8c-%d9%be%d8%b1-%d8%a7%d8%b2-%d8%a8%d8%a7%d8%af/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
