<?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://zebardast.ir/feed/" rel="self" type="application/rss+xml" /><link>http://zebardast.ir</link> <description>دسته نوشته ها و مقالاتی در زمینه علوم کامپیوتر و تجربیات شخصی</description> <lastBuildDate>Fri, 18 May 2012 15:59:30 +0000</lastBuildDate> <language>fa</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.2</generator><image><title>وبلاگ سعید زبردست</title> <url>http://0.gravatar.com/avatar/9fb25dddd365836466bd8051be993fa8.png?s=48</url><link>http://zebardast.ir</link> </image> <item><title>مهم‌ترین اشتباهات رایج در محیط خط فرمان</title><link>http://zebardast.ir/%d9%85%d9%87%d9%85%e2%80%8c%d8%aa%d8%b1%db%8c%d9%86-%d8%a7%d8%b4%d8%aa%d8%a8%d8%a7%d9%87%d8%a7%d8%aa-%d8%b1%d8%a7%db%8c%d8%ac-%d8%af%d8%b1-%d9%85%d8%ad%db%8c%d8%b7-%d8%ae%d8%b7-%d9%81%d8%b1%d9%85/</link> <comments>http://zebardast.ir/%d9%85%d9%87%d9%85%e2%80%8c%d8%aa%d8%b1%db%8c%d9%86-%d8%a7%d8%b4%d8%aa%d8%a8%d8%a7%d9%87%d8%a7%d8%aa-%d8%b1%d8%a7%db%8c%d8%ac-%d8%af%d8%b1-%d9%85%d8%ad%db%8c%d8%b7-%d8%ae%d8%b7-%d9%81%d8%b1%d9%85/#comments</comments> <pubDate>Fri, 18 May 2012 05:37:35 +0000</pubDate> <dc:creator>سعید زبردست</dc:creator> <category><![CDATA[علوم کامپیوتر]]></category> <category><![CDATA[نرم افزار آزاد و متن باز]]></category> <category><![CDATA[گنو/لینوکس]]></category> <category><![CDATA[تجربه]]></category> <category><![CDATA[ترمینال]]></category> <category><![CDATA[خط فرمان]]></category><guid isPermaLink="false">http://zebardast.ir/?p=1935</guid> <description><![CDATA[سلام خط فرمان (Command Line) یکی از قدرتمندترین بخش‌های سیستم عامل های شبه یونیکس (Unix-like) و یونیکسی (Unix) است. مانند بسیاری از ابزارهای دیگر، در صورت استفاده نادرست از آن ممکن است که صدمات جبران ناپذیری به سیستم و در حالت کلی به سطح کاری شما وارد نماید. این مقاله قصد دارد تا با معرفی [...] <strong>مطالب مرتبط:</strong><ol><li><a href='http://zebardast.ir/%d8%b3%d8%a7%d8%af%d9%87-%d8%aa%d8%b1%db%8c%d9%86-%d8%b4%d9%85%d8%a7%d8%b1%d9%86%d8%af%d9%87-%d8%a8%d8%a7%d8%b2%d8%af%db%8c%d8%af%da%a9%d9%86%d9%86%d8%af%da%af%d8%a7%d9%86-%d8%a8%d8%a7-php/' rel='bookmark' title='ساده ترین شمارنده بازدیدکنندگان با PHP'>ساده ترین شمارنده بازدیدکنندگان با PHP</a></li><li><a href='http://zebardast.ir/%d9%86%d8%b8%d8%a7%d8%b1%d8%aa-%d9%87%d9%85%d8%b2%d9%85%d8%a7%d9%86-%d8%a8%d8%b1-%da%86%d9%86%d8%af-%d9%81%d8%a7%db%8c%d9%84-%d9%88-%d8%af%d8%b3%d8%aa%d9%88%d8%b1-multitail/' rel='bookmark' title='نظارت همزمان بر چند فایل و دستور (MultiTail)'>نظارت همزمان بر چند فایل و دستور (MultiTail)</a></li><li><a href='http://zebardast.ir/%d8%a7%d8%aa%d8%b5%d8%a7%d9%84-%d8%a8%d9%87-%d8%a7%db%8c%d9%86%d8%aa%d8%b1%d9%86%d8%aa-%d8%a7%d8%b2-%d8%ae%d8%b7-%d9%81%d8%b1%d9%85%d8%a7%d9%86-%d9%84%db%8c%d9%86%d9%88%da%a9%d8%b3/' rel='bookmark' title='اتصال به اینترنت از خط فرمان لینوکس'>اتصال به اینترنت از خط فرمان لینوکس</a></li></ol>]]></description> <content:encoded><![CDATA[<p>سلام <img src='http://zebardast.ir/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br /> <img src="http://zebardast.ir/wp-content/uploads/2012/05/cli-300x300.png" alt="" title="" width="200" height="200" class="alignleft size-medium wp-image-1944" /><br /> خط فرمان (Command Line) یکی از قدرتمندترین بخش‌های سیستم عامل های شبه یونیکس (Unix-like) و یونیکسی (Unix) است. مانند بسیاری از ابزارهای دیگر، در صورت استفاده نادرست از آن ممکن است که صدمات جبران ناپذیری به سیستم و در حالت کلی به سطح کاری شما وارد نماید. این مقاله قصد دارد تا با معرفی مهم‌ترین این اشتباهات، شما را از انجام دادن غیرعمدی آنها آگاه سازد. در انتهای مقاله نیز راه حل هایی جهت رفع ایرادات احتمالی معرفی است.</p><h3>دستور userdel</h3><p>این دستور به صورت پیش فرض فقط کاربر را حذف می کند و اثری بر روی فایل‌های کاربر ندارد. ولی در صورتی که در فایل تنظیمات <code>/etc/deluser.conf</code> حذف فایل‌ها نیز فعال شده باشد، با حذف کاربر، تمامی اطلاعات مربوط به آن نیز حذف می شود و ممکن است فایل های موجود در دایرکتوری وی مهم و ضروری باشد. این قضیه بیشتر بر روی سرورها و هنگام عوض شدن مدیرسیستم (SysAdmin) بروز پیدا می کند. پس قبل از پاک کردن کاربر از تنظیمات فایل <code>/etc/deluser.conf</code> و نیز مهم نبودن فایل‌های کاربر مورد حذف مطمئن شوید.</p><h3>خراب کردن محتوای فایل با استفاده نادرست از <code>></code> و <code>>></code></h3><p>در خط فرمان و کلا اسکریپت‌نویسی bash شما می توانید با استفاده از <code>></code> و <code>>></code> خروجی یک دستور را در یک فایل ذخیره نمایید. تفاوت <code>></code> و <code>>></code> در این است که <code>></code> خروجی دستور را جایگزین محتوای فعلی فایل می‌کند ولی <code>>></code> خروجی را به انتهای محتوای فایل اضافه می‌نماید. در صورت استفاده <code>></code> به جای <code>>></code> شما تمامی اطلاعات قبلی فایل را از دست می‌دهید! پس قبل از اجرای دستور، یک بازنگری در دستور نوشته شده نمایید.</p><h3>استفاده نادرست از پارامتر c به جای x</h3><p>در صورتی که شما قصد استخراج کردن محتوای یک فایل فشرده را با دستور tar داشته باشید، باید از این دستور مانند زیر استفاده نمایید:</p><pre class="brush: bash; title: ; notranslate">
tar -zxvf FILE.tar.gz DICRECTORY
</pre><p>حال اگر به جای x اشتباها از c استفاده نمایید، بدون هیچ اخطاری محتوای DIRECTORY جایگزین محتوای فعلی فایل بایگانی شما می شود!</p><h3>اشتباهی گرفتن خط فرمان‌ها</h3><p>فرض کنید که شما همزمان به دو یا چند سرور از طریق خط فرمان و دستور ssh وصل شده‌اید. ممکن است در هنگام کار یک دستور را در جای اشتباهی اجرا نموده و باعث آسیب رسیدن به آن سرور شوید. بهتر است از hostname های مختلف و در صورت امکان ترمینال‌های رنگی متفاوت استفاده نمایید. با این وجود بهترین راه حل برای جلوگیری از این مشکل وصل شدن تنها به یک سرور در هر لحظه می‌باشد.</p><h3>استفاده از * در دستور rm</h3><p>دستور rm برای حذف فایل و دایرکتوری‌ها استفاده می‌شود. همچنین * نشان دهنده تمامی این عناصر است. گاهی اوقات ممکن است که این دو با یکدیگر و به صورت اشتباه استفاده شوند. در زیر نمونه‌هایی از این اشتباهات ارائه شده اند.<br /> وجود فاصله بین * و آدرس دایکتوری مورد نظر بار حذف:</p><pre class="brush: bash; title: ; notranslate">
rm /foo/ *
</pre><p>استفاده از <code>.*</code> و پارامتر <code>-R</code>:</p><pre class="brush: bash; title: ; notranslate">
rm -R .*
</pre><p>اشتباه دستور با در این مورد است که در دایرکتوری جایی .. به دایکتوری پدر (parent) اشاره دارد و استفاده همزمان از <code>.*</code> و پارامتر <code>-R</code> باعث می‌شود که دستور rm از پایین به بالا (درون به بیرون) تمامی اطلاعات شما را حذف نماید!</p><h3>استفاده نادرست از / و . و .. در آدرس‌دهی به پارامترهای دستورات</h3><p>اگر با خط فرمان و آدرس دهی فایل‌ها آشنا باشید می دانید که / به دایرکتوری ریشه و . به دایرکتوری جاری و .. به دایرکتوری پدر (parent) اشاره دارند. برای عوض کردن دسترسی دایرکتوری جاری در صورتی که در همان دایکتوری باشید باید دستوری مانند زیر را وارد نمایید:</p><pre class="brush: bash; title: ; notranslate">
chmod -R 755 ./
</pre><p>حال فرض کنید که لازم است از sudo استفاده نمایید و دستور را اشتباها به یکی از صورت‌های زیر وارد کنید. به عدم وجود . قبل از / و فاصله بین . و / دقت نمایید:</p><pre class="brush: bash; title: ; notranslate">
sudo chmod -R 755 /
sudo chmod -R 755 . /
</pre><h3>آدرس دهی اشتباه سخت افزار در دستور dd</h3><p>دستور dd برای رونوشت برداشتن (کپی) از اطلاعات در سطح پایین استفاده می‌شود. به عنوان مثال برای رونوشت برداشتن از یک فایل و ذخیره آن باید از دستوری مشابه دستور زیر استفاده نمایید:</p><pre class="brush: bash; title: ; notranslate">
dd if=big_null_file of=/dev/sdb
</pre><p>که به نظر شما <code>/dev/sdb</code> آدرس سخت افزار مورد نظر مانند فلش مموری است، حال اگر <code>/dev/sdb</code> آدرس دومین هارد شما باشد، تمامی اطلاعات آن از دست رفته و شما فقط یک big_null_file دارید!</p><h3>برای جلوگیری از این صدمات چکار کنیم؟</h3><p>روش‌ها و کارهای زیادی برای جلوگیری از اتفاق افتادن این اشتباهات و رفع آن‌ها وجود دارد. در زیر فهرست اساسی‌ترین مواردی که حتما باید در نظر داشته باشید آمده است:</p><ul><li>همیشه و در همه حال از تمامی اطلاعات خود نسخه پشتیبان داشته باشد. اگر توانستید نسخه پشتیبان را به صورت های مختلف مانند هارد اکسترنال، دی وی دی، بر روی وب و &#8230; به طور همزمان نگهداری نمایید.</li><li>قبل از اجرای دستورات اساسی مانند rm، mv و chmod حتما یکبار دیگر آن را بازخوانی نمایید.</li><li>دستور rm را همیشه با پارامتر <code>-i</code> اجرا نمایید.</li><li>به جای حذف مستقیم اطلاعات توسط rm آن ها را به سطل آشغال منتقل نمایید. برای انجام اینکار در اوبونتو مقاله <a href="http://www.webupd8.org/2010/02/make-rm-move-files-to-trash-instead-of.html" title="Make "rm" Move Files To Trash Instead Of Completely Removing Them" target="_blank">Make &#8220;rm&#8221; Move Files To Trash Instead Of Completely Removing Them</a> را مطالعه نمایید. روش های مشابهی نیز در سایر سیستم عامل ها وجود دارد.</li></ul><h3>منابع و اطلاعات بیشتر</h3><div class="ltr"><ul><li><a href="http://www.cyberciti.biz/tips/my-10-unix-command-line-mistakes.html" title="My 10 UNIX Command Line Mistakes" target="_blank">My 10 UNIX Command Line Mistakes</a></li><li><a href="http://serverfault.com/questions/5066/biggest-command-line-mistake" title="Biggest command-line mistake?" target="_blank">Biggest command-line mistake?</a></li></ul></div><p><strong>لطفا در صورتی که شما نیز اشتباهاتی در خط فرمان انجام داده و یا از آنها مطلع هستید با به اشتراک گذاشتن آنها، سایرین را نیز آگاه نمایید.</strong><br /> همیشه در امن و امان باشید <img src='http://zebardast.ir/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p><div style="float:left; text-align:left;><img alt='' src='http://1.gravatar.com/avatar/9fb25dddd365836466bd8051be993fa8?s=100&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D100&amp;r=G' class='avatar avatar-100 photo' height='100' width='100' /></div><h3>درباره <a href="http://zebardast.ir/author/admin/" title="سعید زبردست">سعید زبردست</a></h3><p>من برنامه نویس Java و PHP هستم. در کنار برنامه نویسی اطلاعات خوبی در زمینه پایگاه ‌های داده بخصوص MySQL دارم. برای اطلاع بیشتر به صفحه <a href="http://zebardast.ir/about">درباره سعید زبردست</a> مراجعه کنید.</p><small><a href="mailto:&#115;&#97;eid&#64;&#122;&#101;&#98;a&#114;&#100;a&#115;&#116;&#46;&#105;r" title="Send سعید زبردست Mail">Mail</a> | <a href="http://zebardast.ir" title="سعید زبردست On The Web">Web</a> | <a href="https://twitter.com/#!/saeid" title="سعید زبردست On Twitter">Twitter</a> | <a href="https://www.facebook.com/saeid.zebardast" title="سعید زبردست On Facebook">Facebook</a> | <a href="http://www.linkedin.com/in/saeid" title="سعید زبردست On LinkedIn">LinkedIn</a> | <a href="https://profiles.google.com/saeid.zebardast" title="سعید زبردست On Google+">Google+</a> | <a href="http://zebardast.ir/author/admin/" title="More Posts By سعید زبردست">More Posts (278)</a></small></p><p><a class="a2a_button_google_plus" href="http://www.addtoany.com/add_to/google_plus?linkurl=http%3A%2F%2Fzebardast.ir%2F%25d9%2585%25d9%2587%25d9%2585%25e2%2580%258c%25d8%25aa%25d8%25b1%25db%258c%25d9%2586-%25d8%25a7%25d8%25b4%25d8%25aa%25d8%25a8%25d8%25a7%25d9%2587%25d8%25a7%25d8%25aa-%25d8%25b1%25d8%25a7%25db%258c%25d8%25ac-%25d8%25af%25d8%25b1-%25d9%2585%25d8%25ad%25db%258c%25d8%25b7-%25d8%25ae%25d8%25b7-%25d9%2581%25d8%25b1%25d9%2585%2F&amp;linkname=%D9%85%D9%87%D9%85%E2%80%8C%D8%AA%D8%B1%DB%8C%D9%86%20%D8%A7%D8%B4%D8%AA%D8%A8%D8%A7%D9%87%D8%A7%D8%AA%20%D8%B1%D8%A7%DB%8C%D8%AC%20%D8%AF%D8%B1%20%D9%85%D8%AD%DB%8C%D8%B7%20%D8%AE%D8%B7%20%D9%81%D8%B1%D9%85%D8%A7%D9%86" title="Google+" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/google_plus.png" width="16" height="16" alt="Google+"/></a><a class="a2a_button_facebook" href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fzebardast.ir%2F%25d9%2585%25d9%2587%25d9%2585%25e2%2580%258c%25d8%25aa%25d8%25b1%25db%258c%25d9%2586-%25d8%25a7%25d8%25b4%25d8%25aa%25d8%25a8%25d8%25a7%25d9%2587%25d8%25a7%25d8%25aa-%25d8%25b1%25d8%25a7%25db%258c%25d8%25ac-%25d8%25af%25d8%25b1-%25d9%2585%25d8%25ad%25db%258c%25d8%25b7-%25d8%25ae%25d8%25b7-%25d9%2581%25d8%25b1%25d9%2585%2F&amp;linkname=%D9%85%D9%87%D9%85%E2%80%8C%D8%AA%D8%B1%DB%8C%D9%86%20%D8%A7%D8%B4%D8%AA%D8%A8%D8%A7%D9%87%D8%A7%D8%AA%20%D8%B1%D8%A7%DB%8C%D8%AC%20%D8%AF%D8%B1%20%D9%85%D8%AD%DB%8C%D8%B7%20%D8%AE%D8%B7%20%D9%81%D8%B1%D9%85%D8%A7%D9%86" title="Facebook" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fzebardast.ir%2F%25d9%2585%25d9%2587%25d9%2585%25e2%2580%258c%25d8%25aa%25d8%25b1%25db%258c%25d9%2586-%25d8%25a7%25d8%25b4%25d8%25aa%25d8%25a8%25d8%25a7%25d9%2587%25d8%25a7%25d8%25aa-%25d8%25b1%25d8%25a7%25db%258c%25d8%25ac-%25d8%25af%25d8%25b1-%25d9%2585%25d8%25ad%25db%258c%25d8%25b7-%25d8%25ae%25d8%25b7-%25d9%2581%25d8%25b1%25d9%2585%2F&amp;linkname=%D9%85%D9%87%D9%85%E2%80%8C%D8%AA%D8%B1%DB%8C%D9%86%20%D8%A7%D8%B4%D8%AA%D8%A8%D8%A7%D9%87%D8%A7%D8%AA%20%D8%B1%D8%A7%DB%8C%D8%AC%20%D8%AF%D8%B1%20%D9%85%D8%AD%DB%8C%D8%B7%20%D8%AE%D8%B7%20%D9%81%D8%B1%D9%85%D8%A7%D9%86" title="Twitter" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_identi_ca" href="http://www.addtoany.com/add_to/identi_ca?linkurl=http%3A%2F%2Fzebardast.ir%2F%25d9%2585%25d9%2587%25d9%2585%25e2%2580%258c%25d8%25aa%25d8%25b1%25db%258c%25d9%2586-%25d8%25a7%25d8%25b4%25d8%25aa%25d8%25a8%25d8%25a7%25d9%2587%25d8%25a7%25d8%25aa-%25d8%25b1%25d8%25a7%25db%258c%25d8%25ac-%25d8%25af%25d8%25b1-%25d9%2585%25d8%25ad%25db%258c%25d8%25b7-%25d8%25ae%25d8%25b7-%25d9%2581%25d8%25b1%25d9%2585%2F&amp;linkname=%D9%85%D9%87%D9%85%E2%80%8C%D8%AA%D8%B1%DB%8C%D9%86%20%D8%A7%D8%B4%D8%AA%D8%A8%D8%A7%D9%87%D8%A7%D8%AA%20%D8%B1%D8%A7%DB%8C%D8%AC%20%D8%AF%D8%B1%20%D9%85%D8%AD%DB%8C%D8%B7%20%D8%AE%D8%B7%20%D9%81%D8%B1%D9%85%D8%A7%D9%86" title="Identi.ca" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/identica.png" width="16" height="16" alt="Identi.ca"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fzebardast.ir%2F%25d9%2585%25d9%2587%25d9%2585%25e2%2580%258c%25d8%25aa%25d8%25b1%25db%258c%25d9%2586-%25d8%25a7%25d8%25b4%25d8%25aa%25d8%25a8%25d8%25a7%25d9%2587%25d8%25a7%25d8%25aa-%25d8%25b1%25d8%25a7%25db%258c%25d8%25ac-%25d8%25af%25d8%25b1-%25d9%2585%25d8%25ad%25db%258c%25d8%25b7-%25d8%25ae%25d8%25b7-%25d9%2581%25d8%25b1%25d9%2585%2F&amp;title=%D9%85%D9%87%D9%85%E2%80%8C%D8%AA%D8%B1%DB%8C%D9%86%20%D8%A7%D8%B4%D8%AA%D8%A8%D8%A7%D9%87%D8%A7%D8%AA%20%D8%B1%D8%A7%DB%8C%D8%AC%20%D8%AF%D8%B1%20%D9%85%D8%AD%DB%8C%D8%B7%20%D8%AE%D8%B7%20%D9%81%D8%B1%D9%85%D8%A7%D9%86" id="wpa2a_2">اشتراک‌گذاری</a></p><p><strong>مطالب مرتبط:</strong><ol><li><a href='http://zebardast.ir/%d8%b3%d8%a7%d8%af%d9%87-%d8%aa%d8%b1%db%8c%d9%86-%d8%b4%d9%85%d8%a7%d8%b1%d9%86%d8%af%d9%87-%d8%a8%d8%a7%d8%b2%d8%af%db%8c%d8%af%da%a9%d9%86%d9%86%d8%af%da%af%d8%a7%d9%86-%d8%a8%d8%a7-php/' rel='bookmark' title='ساده ترین شمارنده بازدیدکنندگان با PHP'>ساده ترین شمارنده بازدیدکنندگان با PHP</a></li><li><a href='http://zebardast.ir/%d9%86%d8%b8%d8%a7%d8%b1%d8%aa-%d9%87%d9%85%d8%b2%d9%85%d8%a7%d9%86-%d8%a8%d8%b1-%da%86%d9%86%d8%af-%d9%81%d8%a7%db%8c%d9%84-%d9%88-%d8%af%d8%b3%d8%aa%d9%88%d8%b1-multitail/' rel='bookmark' title='نظارت همزمان بر چند فایل و دستور (MultiTail)'>نظارت همزمان بر چند فایل و دستور (MultiTail)</a></li><li><a href='http://zebardast.ir/%d8%a7%d8%aa%d8%b5%d8%a7%d9%84-%d8%a8%d9%87-%d8%a7%db%8c%d9%86%d8%aa%d8%b1%d9%86%d8%aa-%d8%a7%d8%b2-%d8%ae%d8%b7-%d9%81%d8%b1%d9%85%d8%a7%d9%86-%d9%84%db%8c%d9%86%d9%88%da%a9%d8%b3/' rel='bookmark' title='اتصال به اینترنت از خط فرمان لینوکس'>اتصال به اینترنت از خط فرمان لینوکس</a></li></ol></p>]]></content:encoded> <wfw:commentRss>http://zebardast.ir/%d9%85%d9%87%d9%85%e2%80%8c%d8%aa%d8%b1%db%8c%d9%86-%d8%a7%d8%b4%d8%aa%d8%a8%d8%a7%d9%87%d8%a7%d8%aa-%d8%b1%d8%a7%db%8c%d8%ac-%d8%af%d8%b1-%d9%85%d8%ad%db%8c%d8%b7-%d8%ae%d8%b7-%d9%81%d8%b1%d9%85/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>معرفی و آموزش پیاده‌سازی Apache Lucene</title><link>http://zebardast.ir/%d9%85%d8%b9%d8%b1%d9%81%db%8c-%d9%88-%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d9%be%db%8c%d8%a7%d8%af%d9%87%e2%80%8c%d8%b3%d8%a7%d8%b2%db%8c-apache-lucene/</link> <comments>http://zebardast.ir/%d9%85%d8%b9%d8%b1%d9%81%db%8c-%d9%88-%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d9%be%db%8c%d8%a7%d8%af%d9%87%e2%80%8c%d8%b3%d8%a7%d8%b2%db%8c-apache-lucene/#comments</comments> <pubDate>Sat, 14 Apr 2012 14:55:47 +0000</pubDate> <dc:creator>سعید زبردست</dc:creator> <category><![CDATA[برنامه نویسی]]></category> <category><![CDATA[برنامه نویسی وب]]></category> <category><![CDATA[جاوا]]></category> <category><![CDATA[نرم افزار آزاد و متن باز]]></category> <category><![CDATA[Apache Lucene]]></category> <category><![CDATA[جستجو]]></category> <category><![CDATA[خزنده وب]]></category><guid isPermaLink="false">http://zebardast.ir/?p=1865</guid> <description><![CDATA[سلام، — Apache Lucene حدود یک سال و نیم قبل در مطلبی به معرفی خزنده‌های وب (Web crawlers) و آموزش راه اندازی یک خزنده وب ساده به زبان جاوا پرداختم. در طول این مدت افراد بسیاری در مورد خزنده‌های وب با من تماس گرفتند و سوالات مختلفی در مورد این خزنده‌ها داشتند. در این مطلب [...] مطلب مرتبطی یافت نشد.]]></description> <content:encoded><![CDATA[<p>سلام،</p><div class="autocap alignleft" style="width: 300px;"><div><img src="http://zebardast.ir/wp-content/uploads/2012/03/Apache-Lucene.png" alt="" title="Apache Lucene" width="300" height="46" class=" size-full wp-image-1901" /><p class="autocap-text"><span class="hide">— </span>Apache Lucene</p></div></div><p>حدود یک سال و نیم قبل در مطلبی به <a href="http://zebardast.ir/%D8%AE%D8%B2%D9%86%D8%AF%D9%87-%D9%88%D8%A8-web-crawler/" title="خزنده وب (Web Crawler)">معرفی خزنده‌های وب (Web crawlers)</a> و آموزش راه اندازی یک خزنده وب ساده به زبان جاوا پرداختم. در طول این مدت افراد بسیاری در مورد خزنده‌های وب با من تماس گرفتند و سوالات مختلفی در مورد این خزنده‌ها داشتند. در این مطلب به معرفی و آموزش Apache Lucene که به منظور جستجو فایل‌های متین استفاده می شود، می پردازم. همچنین در آینده به بررسی ۳ محصول Hadoop, Apache Solr و Apache Nutch خواهم پرداخت.</p><h3>Apache Lucene</h3><p>آپاچی لوسن کتابخانه ای برای راه اندازی موتورهای جستجوی متن می باشد. این کتابخانه آزاد بوده و تحت لایسنس Apache Licene 2.0 منتشر می شود. این کتابخانه به زبان جاوا (Java) نوشته شده و سپس به زبان های Delphi, Perl, C#, C++, Python, Ruby, و PHP پیاده سازی (پورت) شده است.<br /> این کتابخانه این امکان را برای شما فراهم می آورد تا هر نوع موتور جستجوی متنی مانند موتور جستوی وب، لوکال (محلی) ویا فقط ویژه یک وب سایت را ایجاد نمایید. در نظر داشته باشید که Apache Lucene فقط برای جستجو استفاده می‌شود و برای جمع‌آوری اطلاعات و تحلیل آن‌ها نیاز به ابزارهای دیگری مانند Solr و Nutch دارید.<br /> برای دریافت این کتابخانه به <a href="https://lucene.apache.org/core/downloads.html" title="دانلود کتابخانه آپاچی لوسن" target="_blank">صفحه دانلود آپاچی لوسن</a> مراجعه نمایید. همچنین می توانید نسخه فعلی (۳.۶.۰) را از آدرس زیر دریافت نمایید:<br /> • <a href="http://apache.mirror.nexicom.net/lucene/java/3.6.0/lucene-3.6.0.zip" title="دانلود کتابخانه آپاچی لوسن نسخه ۳.۶.۰" target="_blank">دانلود کتابخانه آپاچی لوسن نسخه ۳.۶.۰</a></p><h3>استفاده از کتابخانه Apache Lucene</h3><p>در ادامه مراحل مختلف برای آماده‌سازی و انجام جستجو را بررسی کرده و در انتها سورس کامل این کلاس را مشاهده خواهید کرد.</p><h4>مرحله اول: ایندکس کردن اطلاعات</h4><p>قبل از هر چیز شما باید اطلاعاتی را که قصد جستجو در آن‌ها را دارید ایندکس نمایید. ایندکس کردن اطلاعات فواید زیادی دارد که یکی از مهم‌ترین آن‌ها مرتب‌سازی و افزایش سرعت جستجو است.<br /> ایندکس اطلاعات در لوسن توسط دو کلاس Document و Field صورت می پذیرد. Document سند شما و Field اطلاعات مرتبط با سند مانند عنوان، محتوا و&#8230;  است. این وظیفه شماست که اطلاعات خود از جمله رشته‌ها، انواع فایل‌ها، اطلاعات ذخیره شده در پایگاه داده و&#8230; را به کلاس Document تبدیل و ایندکس نمایید. در زیر تعامل Index, Document و Field را مشاهده می کنید:<br /><center></p><table class="ltr" cellpadding="5" bgcolor="lightblue"><tbody><tr><td align="left" colspan="2">&nbsp;Index&nbsp;</td></tr><tr><td><table cellpadding="10" bgcolor="lightgreen"><tbody><tr><td>Document 1</p><table cellpadding="5" bgcolor="yellow"><tbody><tr><td>Field A (name/value)</td></tr></tbody></table><p></p><table cellpadding="5" bgcolor="yellow"><tbody><tr><td>Field B (name/value)</td></tr></tbody></table></td></tr></tbody></table></td><td><table cellpadding="10" bgcolor="lightgreen"><tbody><tr><td>Document 2</p><table cellpadding="5" bgcolor="yellow"><tbody><tr><td>Field A (name/value)</td></tr></tbody></table><p></p><table cellpadding="5" bgcolor="yellow"><tbody><tr><td>Field B (name/value)</td></tr></tbody></table></td></tr></tbody></table></td></tr></tbody></table><p></center></p><p>بعد از آماده سازی Document باید توسط کلاس IndexWriter، ایندکس را ذخیره می کنیم. پارامتر اول در فراخوانی IndexWriter دایکتوری ذخیره‌سازی ایندکس را مشاهده می‌کند.<br /> با کدهای زیر چند عبارت را در حافظه دسترسی تصادفی (RAM) ذخیره کردیم:</p><pre class="brush: java; title: ; notranslate">
Directory index = new RAMDirectory();
IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_36, analyzer);

IndexWriter w = new IndexWriter(index, config);
addDoc(w, &quot;Lucene in Action&quot;);
addDoc(w, &quot;Lucene for Dummies&quot;);
addDoc(w, &quot;Managing Gigabytes&quot;);
addDoc(w, &quot;The Art of Computer Science&quot;);
w.close();
</pre><p>متد addDoc رشته‌ها را به ایندکس اضافه می کند:</p><pre class="brush: java; title: ; notranslate">
private static void addDoc(IndexWriter w, String value) throws IOException {
    Document doc = new Document();
    doc.add(new Field(&quot;title&quot;, value, Field.Store.YES, Field.Index.ANALYZED));
    w.addDocument(doc);
  }
}
</pre><h4>مرحله دوم: ایجاد کوئری (Query)</h4><p>در این برنامه ما عبارت مورد نظر برای جستجو را از ورودی (stdin) دریافت می‌کنیم:</p><pre class="brush: java; title: ; notranslate">
String querystr = args.length &gt; 0 ? args[0] : &quot;lucene&quot;;
Query q = new QueryParser(Version.LUCENE_36, &quot;title&quot;, analyzer).parse(querystr);
</pre><h4>مرحله سوم: انجام جستجو</h4><p>در این مرحله کوئری (جستار؟) ساخته شده را بر روی ایندکس جستجو می کنیم. همچنین از کلاس TopScoreDocCollector برای بدست آوردن ۱۰ نتیجه مرتبط‌تر استفاده کرده ایم:</p><pre class="brush: java; title: ; notranslate">
int hitsPerPage = 10;
IndexReader reader = IndexReader.open(index);
IndexSearcher searcher = new IndexSearcher(reader);
TopScoreDocCollector collector = TopScoreDocCollector.create(hitsPerPage, true);
searcher.search(q, collector);
ScoreDoc[] hits = collector.topDocs().scoreDocs;
</pre><h4>مرحله چهارم: مشاهده نتایج</h4><p>در انتها نتایج بدست آمده را نمایش می‌دهیم:</p><pre class="brush: java; title: ; notranslate">
System.out.println(&quot;Found &quot; + hits.length + &quot; hits.&quot;);
for(int i=0;i&lt;hits.length;++i) {
    int docId = hits[i].doc;
    Document d = searcher.doc(docId);
    System.out.println((i + 1) + &quot;. &quot; + d.get(&quot;title&quot;));
}
</pre><p>همین!</p><h3>کلاس HelloLucene</h3><p>در زیر کلاس HelloLucene را یکجا مشاهده می فرمایید:</p><pre class="brush: java; title: ; notranslate">
import java.io.IOException;

import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.*;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.RAMDirectory;
import org.apache.lucene.util.Version;

public class HelloLucene {
    public static void main(String[] args) throws IOException, ParseException {
        // 0. Specify the analyzer for tokenizing text.
        //    The same analyzer should be used for indexing and searching
        StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_36);

        // 1. create the index
        Directory index = new RAMDirectory();

        IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_36, analyzer);

        IndexWriter w = new IndexWriter(index, config);
        addDoc(w, &quot;Lucene in Action&quot;);
        addDoc(w, &quot;Lucene for Dummies&quot;);
        addDoc(w, &quot;Managing Gigabytes&quot;);
        addDoc(w, &quot;The Art of Computer Science&quot;);
        w.close();

        // 2. query
        String queryStr = args.length &gt; 0 ? args[0] : &quot;lucene&quot;;

        // the &quot;title&quot; arg specifies the default field to use
        // when no field is explicitly specified in the query.
        Query q = new QueryParser(Version.LUCENE_35, &quot;title&quot;, analyzer).parse(queryStr);

        // 3. search
        int hitsPerPage = 10;
        IndexReader reader = IndexReader.open(index);
        IndexSearcher searcher = new IndexSearcher(reader);
        TopScoreDocCollector collector = TopScoreDocCollector.create(hitsPerPage, true);
        searcher.search(q, collector);
        ScoreDoc[] hits = collector.topDocs().scoreDocs;

        // 4. display results
        System.out.println(&quot;Found &quot; + hits.length + &quot; hits.&quot;);
        for (int i = 0; i &lt; hits.length; ++i) {
            int docId = hits[i].doc;
            Document d = searcher.doc(docId);
            System.out.println((i + 1) + &quot;. &quot; + d.get(&quot;title&quot;));
        }

        // searcher can only be closed when there
        // is no need to access the documents any more.
        searcher.close();
    }

    private static void addDoc(IndexWriter w, String value) throws IOException {
        Document doc = new Document();
        doc.add(new Field(&quot;title&quot;, value, Field.Store.YES, Field.Index.ANALYZED));
        w.addDocument(doc);
    }
}
</pre><h3>منابع</h3><ul class="ltr"><li><a href="http://www.lucenetutorial.com/lucene-in-5-minutes.html" title="Lucene in 5 minutes" target="_blank">Lucene in 5 minutes</a></li><li><a href="www.javacodegeeks.com/2010/05/introduction-to-apache-lucene-for-full.html" title="An Introduction to Apache Lucene for Full-Text Search" target="_blank">An Introduction to Apache Lucene for Full-Text Search</a></li><li><a href="www.avajava.com/tutorials/lessons/how-do-i-use-lucene-to-index-and-search-text-files.html" title="How do I use Lucene to index and search text files?" target="_blank">How do I use Lucene to index and search text files?</a></li><li><a href="www.javacodegeeks.com/2010/05/did-you-mean-feature-lucene-spell.html" title=""Did you mean" feature with Apache Lucene Spell-Checker" target="_blank">&#8220;Did you mean&#8221; feature with Apache Lucene Spell-Checker</a></li><li><a href="http://oak.cs.ucla.edu/cs144/projects/lucene/index.html" title="A Short Introduction to Lucene" target="_blank">A Short Introduction to Lucene</a></li></ul><p>شاد و پیروز باشید <img src='http://zebardast.ir/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p><div style="float:left; text-align:left;><img alt='' src='http://1.gravatar.com/avatar/9fb25dddd365836466bd8051be993fa8?s=100&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D100&amp;r=G' class='avatar avatar-100 photo' height='100' width='100' /></div><h3>درباره <a href="http://zebardast.ir/author/admin/" title="سعید زبردست">سعید زبردست</a></h3><p>من برنامه نویس Java و PHP هستم. در کنار برنامه نویسی اطلاعات خوبی در زمینه پایگاه ‌های داده بخصوص MySQL دارم. برای اطلاع بیشتر به صفحه <a href="http://zebardast.ir/about">درباره سعید زبردست</a> مراجعه کنید.</p><small><a href="mailto:saeid&#64;&#122;e&#98;&#97;r&#100;&#97;st&#46;ir" title="Send سعید زبردست Mail">Mail</a> | <a href="http://zebardast.ir" title="سعید زبردست On The Web">Web</a> | <a href="https://twitter.com/#!/saeid" title="سعید زبردست On Twitter">Twitter</a> | <a href="https://www.facebook.com/saeid.zebardast" title="سعید زبردست On Facebook">Facebook</a> | <a href="http://www.linkedin.com/in/saeid" title="سعید زبردست On LinkedIn">LinkedIn</a> | <a href="https://profiles.google.com/saeid.zebardast" title="سعید زبردست On Google+">Google+</a> | <a href="http://zebardast.ir/author/admin/" title="More Posts By سعید زبردست">More Posts (278)</a></small></p><p><a class="a2a_button_google_plus" href="http://www.addtoany.com/add_to/google_plus?linkurl=http%3A%2F%2Fzebardast.ir%2F%25d9%2585%25d8%25b9%25d8%25b1%25d9%2581%25db%258c-%25d9%2588-%25d8%25a2%25d9%2585%25d9%2588%25d8%25b2%25d8%25b4-%25d9%25be%25db%258c%25d8%25a7%25d8%25af%25d9%2587%25e2%2580%258c%25d8%25b3%25d8%25a7%25d8%25b2%25db%258c-apache-lucene%2F&amp;linkname=%D9%85%D8%B9%D8%B1%D9%81%DB%8C%20%D9%88%20%D8%A2%D9%85%D9%88%D8%B2%D8%B4%20%D9%BE%DB%8C%D8%A7%D8%AF%D9%87%E2%80%8C%D8%B3%D8%A7%D8%B2%DB%8C%20Apache%20Lucene" title="Google+" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/google_plus.png" width="16" height="16" alt="Google+"/></a><a class="a2a_button_facebook" href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fzebardast.ir%2F%25d9%2585%25d8%25b9%25d8%25b1%25d9%2581%25db%258c-%25d9%2588-%25d8%25a2%25d9%2585%25d9%2588%25d8%25b2%25d8%25b4-%25d9%25be%25db%258c%25d8%25a7%25d8%25af%25d9%2587%25e2%2580%258c%25d8%25b3%25d8%25a7%25d8%25b2%25db%258c-apache-lucene%2F&amp;linkname=%D9%85%D8%B9%D8%B1%D9%81%DB%8C%20%D9%88%20%D8%A2%D9%85%D9%88%D8%B2%D8%B4%20%D9%BE%DB%8C%D8%A7%D8%AF%D9%87%E2%80%8C%D8%B3%D8%A7%D8%B2%DB%8C%20Apache%20Lucene" title="Facebook" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fzebardast.ir%2F%25d9%2585%25d8%25b9%25d8%25b1%25d9%2581%25db%258c-%25d9%2588-%25d8%25a2%25d9%2585%25d9%2588%25d8%25b2%25d8%25b4-%25d9%25be%25db%258c%25d8%25a7%25d8%25af%25d9%2587%25e2%2580%258c%25d8%25b3%25d8%25a7%25d8%25b2%25db%258c-apache-lucene%2F&amp;linkname=%D9%85%D8%B9%D8%B1%D9%81%DB%8C%20%D9%88%20%D8%A2%D9%85%D9%88%D8%B2%D8%B4%20%D9%BE%DB%8C%D8%A7%D8%AF%D9%87%E2%80%8C%D8%B3%D8%A7%D8%B2%DB%8C%20Apache%20Lucene" title="Twitter" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_identi_ca" href="http://www.addtoany.com/add_to/identi_ca?linkurl=http%3A%2F%2Fzebardast.ir%2F%25d9%2585%25d8%25b9%25d8%25b1%25d9%2581%25db%258c-%25d9%2588-%25d8%25a2%25d9%2585%25d9%2588%25d8%25b2%25d8%25b4-%25d9%25be%25db%258c%25d8%25a7%25d8%25af%25d9%2587%25e2%2580%258c%25d8%25b3%25d8%25a7%25d8%25b2%25db%258c-apache-lucene%2F&amp;linkname=%D9%85%D8%B9%D8%B1%D9%81%DB%8C%20%D9%88%20%D8%A2%D9%85%D9%88%D8%B2%D8%B4%20%D9%BE%DB%8C%D8%A7%D8%AF%D9%87%E2%80%8C%D8%B3%D8%A7%D8%B2%DB%8C%20Apache%20Lucene" title="Identi.ca" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/identica.png" width="16" height="16" alt="Identi.ca"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fzebardast.ir%2F%25d9%2585%25d8%25b9%25d8%25b1%25d9%2581%25db%258c-%25d9%2588-%25d8%25a2%25d9%2585%25d9%2588%25d8%25b2%25d8%25b4-%25d9%25be%25db%258c%25d8%25a7%25d8%25af%25d9%2587%25e2%2580%258c%25d8%25b3%25d8%25a7%25d8%25b2%25db%258c-apache-lucene%2F&amp;title=%D9%85%D8%B9%D8%B1%D9%81%DB%8C%20%D9%88%20%D8%A2%D9%85%D9%88%D8%B2%D8%B4%20%D9%BE%DB%8C%D8%A7%D8%AF%D9%87%E2%80%8C%D8%B3%D8%A7%D8%B2%DB%8C%20Apache%20Lucene" id="wpa2a_4">اشتراک‌گذاری</a></p><p>مطلب مرتبطی یافت نشد.</p>]]></content:encoded> <wfw:commentRss>http://zebardast.ir/%d9%85%d8%b9%d8%b1%d9%81%db%8c-%d9%88-%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d9%be%db%8c%d8%a7%d8%af%d9%87%e2%80%8c%d8%b3%d8%a7%d8%b2%db%8c-apache-lucene/feed/</wfw:commentRss> <slash:comments>6</slash:comments> </item> <item><title>راهنمای سریع جاوا اسکریپت</title><link>http://zebardast.ir/%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%b3%d8%b1%db%8c%d8%b9-%d8%ac%d8%a7%d9%88%d8%a7-%d8%a7%d8%b3%da%a9%d8%b1%db%8c%d9%be%d8%aa/</link> <comments>http://zebardast.ir/%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%b3%d8%b1%db%8c%d8%b9-%d8%ac%d8%a7%d9%88%d8%a7-%d8%a7%d8%b3%da%a9%d8%b1%db%8c%d9%be%d8%aa/#comments</comments> <pubDate>Thu, 19 Jan 2012 14:15:56 +0000</pubDate> <dc:creator>سعید زبردست</dc:creator> <category><![CDATA[جاوا اسکریپت]]></category> <category><![CDATA[آموزش سریع]]></category> <category><![CDATA[برنامه نویسی]]></category> <category><![CDATA[راهنما]]></category><guid isPermaLink="false">http://zebardast.ir/?p=1700</guid> <description><![CDATA[— JavaScript سلام، امروزه با توجه به استفاده گسترده از زبان جاوا اسکریپت (JavaScript)، دانستن آن برای هر توسعه دهنده وبی لازم است. این مقاله در یک نگاه و به طور خلاصه زبان جاوا اسکریپت و مفاهیم وی را معرفی کرده و در ادامه نحوه نگارش (Syntax) کدهای آن را آموزش می دهد. همچنین برای [...] <strong>مطالب مرتبط:</strong><ol><li><a href='http://zebardast.ir/%d8%ad%d8%b0%d9%81-%da%a9%d9%88%da%a9%db%8c-%d8%af%d8%b1-%d8%ac%d8%a7%d9%88%d8%a7-%d8%a7%d8%b3%da%a9%d8%b1%db%8c%d9%be%d8%aa/' rel='bookmark' title='حذف کوکی در جاوا اسکریپت'>حذف کوکی در جاوا اسکریپت</a></li><li><a href='http://zebardast.ir/%d9%85%d9%82%d8%af%d9%85%d9%87-%d8%a7%db%8c-%d8%a8%d8%b1%d8%a7%db%8c-%d8%ac%d8%a7%d9%88%d8%a7-%d8%a7%d8%b3%da%a9%d8%b1%db%8c%d9%be%d8%aa/' rel='bookmark' title='مقدمه ای برای جاوا اسکریپت'>مقدمه ای برای جاوا اسکریپت</a></li><li><a href='http://zebardast.ir/querystring-%d8%af%d8%b1-%d8%ac%d8%a7%d9%88%d8%a7-%d8%a7%d8%b3%da%a9%d8%b1%db%8c%d9%be%d8%aa/' rel='bookmark' title='QueryString در جاوا اسکریپت'>QueryString در جاوا اسکریپت</a></li></ol>]]></description> <content:encoded><![CDATA[<div class="autocap alignleft" style="width: 200px;"><div><img src="http://zebardast.ir/wp-content/uploads/2012/01/JavaScript.jpg" alt="" title="JavaScript" width="200" class=" size-full wp-image-1826" /><p class="autocap-text"><span class="hide">— </span>JavaScript</p></div></div><p>سلام،</p><p>امروزه با توجه به استفاده گسترده از زبان جاوا اسکریپت (<a href="http://en.wikipedia.org/wiki/JavaScript" title="JavaScript" target="_blank">JavaScript</a>)، دانستن آن برای هر توسعه دهنده وبی لازم است. این مقاله در یک نگاه و به طور خلاصه زبان جاوا اسکریپت و مفاهیم وی را معرفی کرده و در ادامه نحوه نگارش (Syntax) کدهای آن را آموزش می دهد. همچنین برای درک بیشتر دستورات جاوا اسکریپت نمونه کدهایی در بین بخش‌های مختلف ارائه شده است.</p><h3>مقدمه</h3><p>جاوااسکریپت زبانی است که توسط NetScape تولید شده است. هدف از این زبان پویانمایی اشیا داخل صفحات HTML می باشد. <a href="/tag/%D8%AC%D8%A7%D9%88%D8%A7-%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA/" title="جاوا اسکریپت" target="_blank">جاوا اسکریپت</a> کاملا با <a href="/tag/جاوا/" title="جاوا" target="_blank">زبان برنامه نویسی جاوا</a> فرق دارد. اگر چه ساختار این زبان به سی پلاس پلاس و جاوا شباهت دارد؛ که این امر برای سهولت یادگیری در نظر گرفته شده است. از همینرو دستورهای متداول مانند if, for, try..catch و &#8230; در این زبان هم یافت می‌گردند.<br /> کاربرد گسترده این زبان در سایتها و صفحات اینترنی می‌باشد و به کمک این زبان می‌توان به اشیاء داخل صفحات HTML دسترسی پیدا کرد و آنها را تغییر داد. به همین علت برای پویا نمایی در سمت کاربر، از این زبان استفاده می‌شود.</p><h3>نحوه نگارش مستقیم کدهای جاوا اسکریپت در HTML</h3><p>کدهای جاوا اسکریپت در صفحات HTML داخل تگ script قرار می گیرند. از خصیصه type برای مشخص کردن زبان اسکریپت نوشه شده استفاه می شود. <code>&lt;script type=&quot;text/javascript&quot;&gt;</code> محل شروع کدهای جاوا اسکرپیت و <code>&lt;/script&gt;</code> محل پایان کدهای جاوا اسکریپت را مشخص می کنند. مانند:</p><pre class="brush: xml; title: ; notranslate">
&lt;html&gt;
&lt;body&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
document.write(&quot;Hello World!&quot;);
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre><p>خروجی کد بالا نوشته‌ی !Hello World می باشد.</p><h3>اسکریپت خارجی</h3><p>گاهی اوقات شما نیاز به اجرای یک کد جاوا اسکریپت در صفحات مختلف (بدون نگارش در تک تک صفحات) دارید. و یا کد شما بسیار طولانی است و هنگام کد نویسی در صفحه html شما را دچار مشکل می کند. در این صورت با استفاده از اسکریپت خارجی مشکل شما حل می شود. برای نگارش اسکریپت خارجی ابتدا یک فایل با فرمت js. ایجاد کنید. می توانید پسوند یک فایل txt را به js. تغییر دهید. سپس این فایل را توسط یک ویرایشگر متن مانند Notepad باز کنید. کدهای جاوا اسکریپت خود را بدون تگ <code>&lt;script&gt;</code> در آن قرار دهید و سپس فایل را ذخیره کنید (با پسوند js.)<br /> برای فراخوانی اسکریپت خارجی از خصیصه src تگ <code>&lt;script&gt;</code> استفاده کنید. مانند زیر که xxx.js آدرس فایل جاوا اسکریپت است:</p><pre class="brush: xml; title: ; notranslate">&lt;html&gt;
&lt;head&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
&lt;script src=&quot;xxx.js&quot;&gt;&lt;/script&gt;
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre><h3>سمی‌کالن <code>(;)</code>، فضاهای سفید و حساس به حروف (Case Sensitive)</h3><p>در جاوا اسکریپت دستورات اجرایی با سمی‌کالن (Semicolon) یا همان ; از هم جدا می شوند. با وجود اینکه استفاده از سمی‌کولن، در صورتی که دستورات در خطوط جداگانه نوشته شده باشند، اختیاریست، نوشتن آن بسیار توصیه می شود. بد نیست مطلب «<a href="http://zebardast.ir/معاهده%E2%80%8Cهای-کد-نویسی-coding-conventions/" title="معاهده‌های کدنویسی" target="_blank">معاهده‌های کدنویسی</a>» را مطالعه کنید.<br /> فضاها سفید در جاوا اسکرپیت مانند اغلب زبان‌های برنامه نویسی هنگام اجرا در نظر گرفته نمی شوند. مگر اینکه مقدار یک متغیر رشته ای (String) باشند.<br /> زبان جاوا اسکریپت به کوچکی و بزرگی حروف حساس می باشد. به عنوان مثال bgColor با bgcolor برای نیست.</p><h3>توضیحات (Comments)</h3><p>توضیحات می توانند به صورت تک خطی و یا چند خطی باشند. مانند:</p><pre class="brush: jscript; title: ; notranslate">
// این یک توضیح یک خطی است!

/*
این یک توضیح
چند خطی است.
*/
</pre><h3>متغیرها (Variables)</h3><p>برای تعریف متغیر کافیست نام دلخواه خود را بنویسید. استفاده از کلمه var قبل از نام متغیر اختیاری است، مگر در موارد زیر:</p><ul><li> زمانی که نام یک متغیر محلی در داخل یک تابع با نام یک متغیر سراسری (Global) یکی باشد، متغیر محلی باید با var تعریف شود. در این مواقع شما در داخل تابع خود دسترسی به متغیر سراسری ندارید. هم چنین متغیرهای محلی فقط در داخل خود تابع قابل دستیابی می باشند.</li><li> در توابع بازگشتی استفاده از var الزامیست.</li></ul><h4>نمونه تعریف متغیر در جاوا اسکریپت</h4><pre class="brush: jscript; title: ; notranslate">
x = 42
var x = 42
</pre><h3>انواع داده‌ها در جاوا اسکریپت</h3><p>شما می تواند داده‌هایی از نوع زیر را در جاوا اسکریپ تعریف کنید:</p><ul><li> شی (Object)</li><li> تابع (Function)</li><li> رشته (String)</li><li> عدد (Number)</li><li> نوع داده منطقی (Boolean)</li></ul><p>در صورتی که متغییری تعریف نشده باشد، نوع آن متغیر undefined است. برای دستیابی به نوع یک متغیر می توانید از تابع typeof استفاده کنید. در زیر نمونه تعریف متغیرها و استفاده از تابع typeof را مشاهده می کنید:</p><pre class="brush: jscript; title: ; notranslate">
var aDate = new Date()
var aPowerFunc = new Function(&quot;x&quot;, &quot;return x * x&quot;)
var aString = &quot;I am a string&quot;
var aNumber = 42
var aBoolean = true

alert(typeof aPowerFunc); // typeof aPowerFunc is object
alert(typeof aDate); // typeof aDate is object
alert(typeof aString); // typeof aString is string
alert(typeof aNumber); // typeof aNumber is number
alert(typeof aBoolean); // typeof aBoolean is boolean
alert(typeof nonExistVar); // typeof nonExistVar is undefined
alert(typeof Date); // typeof Date is function. predefined object Date
</pre><h3>آرایه ها (Arrays)</h3><p>روش‌های مختلفی برای تعریف آرایه در جاوا اسکریپت وجود دارد. در زیر نمونه‌هایی از تعریف آرایه‌ها ارائه شده است:</p><pre class="brush: jscript; title: ; notranslate">
beans = [&quot;Java beans&quot;,&quot;Coffee beans&quot;,&quot;Cacao beans&quot;];
myCars = new Array(&quot;Jaguar&quot;, &quot;Mercedes&quot;, &quot;Rolls Royce&quot;);
noOfEntries = myCars.length; // طول آرایه
myCD = new Array(42) // تعریف آرایه ای به نام myCD با 42 عضو
myCD[0] = &quot;Queen&quot; //اولین عنصر آرایه
myCD[1] = &quot;Carlos Santana&quot;
myCD[2] = &quot;Mozart&quot;
myCD[3] = &quot;Chopin&quot;
...
myCD[41] = &quot;Shubidua&quot; //آخرین عنصر آرایه
// تعریف آرایه با کلیدهای مشخص - Associative Array ویا همان Property Maps
assoarr = {color1: &quot;green&quot;, color2: &quot;yellow&quot;, color3: &quot;white&quot;};
</pre><h3>اشیا (Objects)</h3><p>تعریف یک شی مانند تعریف یک تابع می باشد. مانند:</p><pre class="brush: jscript; title: ; notranslate">
function objDef(name) {
this.objvar = name
}
// creation of an instance of the above defined object &quot;class&quot; myObj = new objDef(&quot;Saeid&quot;)
</pre><h3>متدها و خصوصیات (Methods, Properties)</h3><p>متد همان تابع تعریف شده در یک شی و خصیصه، مقادیر متغیرهای آن می‌باشد. مانند:</p><pre class="brush: jscript; title: ; notranslate">
//Property
//objectName.propertyName = value
//Method
//objectName.methodName = function

function calcArea(radius) {
return(radius * radius * Math.PI);
}

function circle(color, radius) {
this.fillColor = color;
this.area = calcArea(radius);
}

var myCircle = new circle('green', 2);
alert(myCircle.fillColor);
alert(myCircle.area);
</pre><h3>عملگرها در جاوا اسکریپت</h3><p>در زیر عملگرها بر اساس نوع عملیات و داده مورد استفاده دسته‌بندی شده‌اند.</p><table cellspacing="0" cellpadding="0" class="info"><caption>انواع عملگرها برای اعداد</caption><thead><tr><th width='100'>عملگر</th><th>توضیحات</th></tr></thead><tbody><tr><td class="ltr">+</td><td>جمع</td></tr><tr><td class="ltr">-</td><td>تفریق</td></tr><tr><td class="ltr">++</td><td>افزایش مقدار متغییر به اندازه یک واحد</td></tr><tr><td class="ltr">&#8211;</td><td>کاهش مقدار متغییر به اندازه یک واحد</td></tr><tr><td class="ltr">*</td><td>ضرب</td></tr><tr><td class="ltr">/</td><td>تقسیم</td></tr><tr><td class="ltr">%</td><td>باقیمانده</td></tr></tbody></table><table cellspacing="0" cellpadding="0" class="info"><caption>انواع عملگرها برای رشته‌ها</caption><thead><tr><th width='100'>عملگر</th><th>توضیحات</th></tr></thead><tbody><tr><td class="ltr">+</td><td>الحاق دو یا چند رشته</td></tr><tr><td class="ltr">+=</td><td>الحاق محتوای یک رشته با یک یا چند رشته و اختصاص دادن مقدار به رشته اول</td></tr></tbody></table><table cellspacing="0" cellpadding="0" class="info"><caption>انواع عملگرهای منظقی</caption><thead><tr><th width='100'>عملگر</th><th>توضیحات</th></tr></thead><tbody><tr><td class="ltr">&#038;&#038;</td><td>و (AND)</td></tr><tr><td class="ltr">||</td><td>یا (OR)</td></tr><tr><td class="ltr">!</td><td>خِلاف (NOT)</td></tr><tr><td class="ltr">==</td><td>مساوی با (equal)</td></tr><tr><td class="ltr">!=</td><td>نامساوی با (not equal)</td></tr><tr><td class="ltr">===</td><td>دقیقا مساوی با (از نظر مقدار و نوع داده)</td></tr><tr><td class="ltr">!==</td><td>نامساوی با (از نظر ارزش) <strong>ویا</strong> نامساوی (از نظر نوع)</td></tr><tr><td class="ltr">&gt;</td><td>بزرگتر از</td></tr><tr><td class="ltr">&gt;=</td><td>بزرگتر از ویا مساوی با (بزرگترمساوی)</td></tr><tr><td class="ltr">&lt;</td><td>کوچکتر</td></tr><tr><td class="ltr">&lt;=</td><td>کوچکتر از ویا مساوی با (کوچکتر مساوی)</td></tr></tbody></table><table cellspacing="0" cellpadding="0" class="info"><caption>انواع عملگرها برای تخصیص</caption><thead><tr><th width='100'>عملگر</th><th>توضیحات</th></tr></thead><tbody><tr><td class="ltr">=</td><td>اختصاص دادن یک مقدار به متغیر</td></tr><tr><td class="ltr">+=</td><td>الحاق محتوای متغیر سمت چپ عملگر با یک متغیر و اختصاص دادن مقدار به متغیر سمت چپ</td></tr><tr><td class="ltr">-=</td><td>تفریق یک متغیر از متغیر سمت چپ عملگر و اختصاص دادن مقدار بدست آمده به متغیر سمت چپ</td></tr><tr><td class="ltr">*=</td><td>ضرب یک متغیر در متغیر سمت چپ عملگر و اختصاص دادن مقدار بدست آمده به متغیر سمت چپ</td></tr><tr><td class="ltr">/=</td><td>تقسیم متغیر سمت چپ عملگر و اختصاص دادن مقدار بدست آمده به متغیر سمت چپ</td></tr><tr><td class="ltr">%=</td><td>تقسیم متغیر سمت چپ عملگر و اختصاص دادن باقیمانده تقسیم به متغیر سمت چپ</td></tr></tbody></table><table cellspacing="0" cellpadding="0" class="info"><caption>سایر عملگرها</caption><thead><tr><th width='100'>عملگر</th><th>توضیحات</th></tr></thead><tbody><tr><td class="ltr">new</td><td>ایجاد یک شی</td></tr><tr><td class="ltr">delete</td><td>حذف یک شی</td></tr><tr><td class="ltr">this</td><td>اشاره به شی جاری</td></tr><tr><td class="ltr">typeof</td><td>دستیابی به نوع متغیر عملوند</td></tr><tr><td class="ltr">void</td><td>ارزیابی یک عبارت بودن بازیابی مقدار آن</td></tr></tbody></table><h3>عبارت‌های شرطی (Conditional Statements)</h3><p>در زیر نحوه نگارش عبارت‌های شرطی با if و switch ارائه شده است.</p><h4>عبارت شرطی با if</h4><pre class="brush: jscript; title: ; notranslate">
// if ساده
if (condition) {
 statements
}

// if همراه با else
if (condition) { statements
} else {
statements
}

// if خلاصه یک خطی
condition ?  expr1 :  expr2
</pre><h4>عبارت شرطی با switch</h4><pre class="brush: jscript; title: ; notranslate">
switch (expression){ case label:
statement;
  break;
 case label2:
statement;
  break;
 default :  statement;
}
</pre><h3>حلقه ها (Loops)</h3><p>در جاوا اسکریپت امکان نوشتن حلقه ها به چهار صورت امکان پذیر است.</p><h4>حلقه for</h4><pre class="brush: jscript; title: ; notranslate">
for(var i=0; i &lt; array.length; i++){
 ...
}
</pre><h4>حلقه do &#8230; while</h4><pre class="brush: jscript; title: ; notranslate">
var i=0; do {
i+=1;
} while (i &lt; 5)
</pre><h4>حلقه while</h4><pre class="brush: jscript; title: ; notranslate">
n=8
while( n &gt; 0) {
n--
}
</pre><h4>حلقه while</h4><p>این حلقه بر روی خصوصیات یک شی اعمالی را انجام می دهد:</p><pre class="brush: jscript; title: ; notranslate">
student1 = new Student(&quot;Hans Christian&quot;, &quot;Andersen&quot;, 1805); for (props in student1) {
  document.write(student1.props)
}
</pre><h4>دستور break و continue</h4><p>مانند سایر زبان‌های برنامه‌نویسی دستور break حلقه را قطع کرده و برنامه را به بعد از حلقه منتقل می‌کند. دستور continue نیز مانند break حلقه جاری را قطع می‌کند و در ادامه دور بعدی حلقه را اجرا می کند. مانند:</p><pre class="brush: jscript; title: ; notranslate">
while(i &gt; 0){ if(a[i]==&quot;Orange&quot;)
break; i--;
}
while(i &gt; 0){
 if(a[i]!=&quot;Orange&quot;)
  continue;
oranges++;
}
</pre><h3>معرفی بعضی از اشیا موجود در جاوا اسکریپت</h3><p>مهمترین آبجکت‌های جاوا اسکریپت عبارتند از:</p><pre class="brush: jscript; title: ; notranslate">
Date
Array
Boolean
Function
Math
Number
RegExp
String
</pre><p>در ادامه تعدادی از این اشیا بررسی شده اند.</p><h4>شی Date</h4><table cellspacing="0" cellpadding="0" class="info"><caption>برخی از متدهای شی Date</caption><thead><tr><th width='100'>متد</th><th>توضیحات</th></tr></thead><tbody><tr><td class="ltr"><code>getDate()</code></td><td>بازیابی روز ماه جاری (۱-۳۱)</td></tr><tr><td class="ltr"><code>getDay()</code></td><td>بازیابی شماره روز هفته جاری (۰-۶)</td></tr><tr><td class="ltr"><code>getYear()</code></td><td>سال جاری دو رقمی بین ۰ تا ۹۹ برای سالهای قبل از ۱۹۹۹ و چهار رقمی برای سال‌های بعد از آن</td></tr><tr><td class="ltr"><code>getFullYear()</code></td><td>سال جاری چهار رقمی</td></tr><tr><td class="ltr"><code>getHours()</code></td><td>ساعت (۰-۲۳)</td></tr><tr><td class="ltr"><code>getMonth()</code></td><td>ماه (۰-۱۱) &#8211; این شماره از ماه جاری یک ماه کمتر است.</td></tr><tr><td class="ltr"><code>getSeconds()</code></td><td>ثانیه جاری (۰-۵۹)</td></tr><tr><td class="ltr"><code>getTime()</code></td><td>تعداد میلی‌ثانی‌های گذشته از تاریخ ۱ ژانویه ۱۹۷۰</td></tr><tr><td class="ltr"><code>setDate(),<br /> setHours(),<br /> . . .</code></td><td>مقداردهی به تاریخ و زمان مورد نظر</td></tr><tr><td class="ltr"><code>parse()</code></td><td>دستیابی به زمان طی شده از ۱ ژانویه ۱۹۷۰ تا زمان مورد نظر در واحد میلی‌ثانیه</td></tr><tr><td class="ltr"><code>toString()</code></td><td>تبدیل تاریخ به رشته</td></tr></tbody></table><p>برای استفاده از شی Date می توانید مانند زیر عمل کنید:</p><pre class="brush: jscript; title: ; notranslate">
now = new Date // تاریخ جاری
nowDay = now.getDay() // (0-6)
nowHour = now.getHour() // (0-23)
</pre><h4>شی Boolean</h4><p>استفاده از شی Boolean بسیار ساده می باشد. در زیر نمونه تعریف آن آمده است:</p><pre class="brush: jscript; title: ; notranslate">
x = true; // مقدار منطقی true
y = false; // مقدار منطقی false
z = new Boolean(false); // مقدار این شی false است.
z2 = new Boolean(&quot;false&quot;); // مقدار ای شی true است! دقت کنید که هر رشته ای که به شی Boolean پاس شود مقدار ای شی را true می کند.
z3 = new Boolean(true); // مقدار این شی true است.
</pre><h4>شی Math</h4><p>همانطور که از اسم این شی مشخص است، کاربرد آن بیشتر در محاسبات و عبارت‌های ریاضی است.</p><table cellspacing="0" cellpadding="0" class="info"><caption>برخی از متدهای شی Math</caption><thead><tr><th width='100'>متد یا عبارت</th><th>توضیحات</th></tr></thead><tbody><tr><td class="ltr"><code>abs</code></td><td>قدرمطلق</td></tr><tr><td class="ltr"> <code>sin, cos, tan</code><br /> <code>acos, asin, atan</code></td><td>توابع مثلثاتی</td></tr><tr><td class="ltr"><code>min, max</code></td><td>بدست آورن کمترین و بیشترین مقدار</td></tr><tr><td class="ltr"><code>round</code></td><td>گردکردن مقدار</td></tr><tr><td class="ltr"><code>sqrt</code></td><td>بدست آوردن جذر یک عدد</td></tr><tr><td class="ltr"><code>pow</code></td><td>توان. اولین مقدار، پایه توان و دومین مقدار نمای آن می باشد. به عنوان مثال <code>Math.pow(x,y)</code> برابر است با <code>x<sup>y</sup></code></td></tr><tr><td class="ltr"><code>random</code></td><td>ایجاد یک عدد رندوم بین صفر و یک.</td></tr><tr><td class="ltr"><code>Math.E</code></td><td>مقدار ثابت عدد e (فرمول اولر یا اویلر) حدود ۲,۷۱۸</td></tr><tr><td class="ltr"><code>Math.PI</code></td><td>مقدار ثابت عدد پی. حدود ۳,۱۴۱۵۹</td></tr></tbody></table><p>نمونه استفاده از آبجکت Math:</p><pre class="brush: jscript; title: ; notranslate">
a = Math.PI * r*r; with(Math){
a = PI * r*r;
x = sin(y);
}
</pre><h4>شی String</h4><table cellspacing="0" cellpadding="0" class="info"><caption>برخی از متدهای شی String</caption><thead><tr><th width='100'>متد</th><th>توضیحات</th></tr></thead><tbody><tr><td class="ltr"><code>bold</code></td><td>مانند تگ &lt;bold&gt; رشته را درشت‌تر می‌کند.</td></tr><tr><td class="ltr"><code>italics</code></td><td>مانند تگ &lt;i&gt; عمل می کند.</td></tr><tr><td class="ltr"><code>concat</code></td><td>الحاق ۲ یا چند رشته</td></tr><tr><td class="ltr"><code>charAt</code></td><td>دستیابی به کاراکتر از طریق ایندکس (اندیس) آن در رشته</td></tr><tr><td class="ltr"><code>fontcolor</code></td><td>مانند تگ &lt;font&gt; به صورت &lt;font color=color&gt; عمل می‌کند.</td></tr><tr><td class="ltr"><code>fontsize</code></td><td>مانند تگ &lt;font&gt; به صورت &lt;font size=size&gt; عمل می‌کند.</td></tr><tr><td class="ltr"><code>indexOf</code></td><td>پیدا کردن اولین محل یافت شده از یک رشته در رشته دیگر. در صورتی که این جستجو نتیجه‌ای در بر نداشته باشد، مقدار <code>-۱</code> بازگردانده خواهد شد.</td></tr><tr><td class="ltr"><code>lastIndexOf</code></td><td>مانند indexOf با این تفاوت که آخرین محل یافت شده در جستجو را نشان می‌دهد.</td></tr><tr><td class="ltr"><code>length</code></td><td>طول رشته را نشان می‌دهد.</td></tr><tr><td class="ltr"><code>link</code></td><td>برای ایجاد لینک مانند تگ &lt;a&gt;</td></tr><tr><td class="ltr"><code>big</code></td><td>مانند تگ &lt;big&gt;</td></tr><tr><td class="ltr"><code>small</code></td><td>مانند تگ &lt;small&gt;</td></tr><tr><td class="ltr"><code>strike</code></td><td>مانند تگ &lt;strike&gt;</td></tr><tr><td class="ltr"><code>sub</code></td><td>مانند تگ &lt;sub&gt;</td></tr><tr><td class="ltr"><code>substring</code></td><td>دستیابی به یک زیررشته از رشته مورد نظر.</td></tr><tr><td class="ltr"><code>toLowerCase</code></td><td>تبدیل رشته به حروف کوچک</td></tr><tr><td class="ltr"><code>toUpperCase</code></td><td>تبدیل رشته به حروف بزرگ</td></tr><tr><td class="ltr"><code>replace</code></td><td>برای جایگزینه یک رشته در رشته دیگر کاربرد دارد.</td></tr><tr><td class="ltr"><code>split</code></td><td>برای جداکردن رشته بر اساس یک الگو (جداکننده) کاربرد دارد.</td></tr></tbody></table><p>مثال‌هایی از استفاده شی String و متدهای آن در زیر ارائه شده است:</p><pre class="brush: jscript; title: ; notranslate">
var message = &quot;Simple String&quot;;
message[0]; // مقدار &quot;S&quot; باز می‌گرداند.
document.write(message.bold()); // محتوای متغییر را به صورت درشت چاپ می‌کند.
message.charAt(0); // همان message[0] می‌باشد.
message.concat(&quot; enhanced&quot;); // مقدار &quot;Simple String enhanced&quot; را باز می‌گرداند.
message.length; // طول عبارت که همان عدد ۱۳ می باشد را باز می‌گرداند
message.indexOf(&quot;Simple&quot;); // عدد ۰ را باز می‌گرداند.
message.lastIndexOf(&quot;String&quot;); // عدد ۷ را باز می‌گرداند.
message.substring(2,5); // رشته &quot;mple&quot; را باز می‌گرداند.
document.write(message.replace(&quot;Simple&quot;, &quot;Complex&quot;)); // مقدار &quot;Complex String&quot; را باز می‌گرداند.
</pre><h3>رویدادها (Events)</h3><p>منظور از رویداد، انتفاقی است که در سمت کاربر و براساس فعالیت‌های آن رخ می‌دهد. در زیر تعدادی از رویدادها مهم ارائه شده‌اند. دقت نمایید که فراخوانی آن‌ها در تگ‌های خاصی امکان پذیر است. به عنوان مثال رویداد onSubmit در تگ &lt;form&gt; فراخوانده می‌شود.</p><table cellspacing="0" cellpadding="0" class="info"><caption>تعدادی از رویدادهای مهم در جاوا اسکریپت</caption><thead><tr><th width='100'>رویداد</th><th>زمان رخ دادن و فراخوانی</th></tr></thead><tbody><tr><td class="ltr"><code>onSubmit</code></td><td>هنگام ثبت شدن فرم</td></tr><tr><td class="ltr"><code>onReset</code></td><td>هنگام زدن دکمه reset فرم</td></tr><tr><td class="ltr"><code>onChange</code></td><td>هنگام تغییر یک مقدار</td></tr><tr><td class="ltr"><code>onSelect</code></td><td>هنگام انتخاب یک متن در تگ &lt;input&gt; یا &lt;textarea&gt;</td></tr><tr><td class="ltr"><code>onBlur</code></td><td>هنگام خارج شدن از فوکوس یک فیلد</td></tr><tr><td class="ltr"><code>onFocus</code></td><td>هنگام فوکوس (انتخاب) یک فیلد</td></tr><tr><td class="ltr"><code>onKeydown</code></td><td>هنگام فشردن یک کلید به پایین</td></tr><tr><td class="ltr"><code>onKeyup</code></td><td>بعد از فشردن و رها کردن یک کلید</td></tr><tr><td class="ltr"><code>onKeypress</code></td><td>هنگام فشردن یک کلید (مجموع onKeydown و onKeyup)</td></tr><tr><td class="ltr"><code>onMouseover</code></td><td>زمانی که نشانگر ماوس بر روی منطقه تگ مورد نظر می رود.</td></tr><tr><td class="ltr"><code>onMouseout</code></td><td>هنگامی که نشانگر ماوس از منطقه تگ مورد نظر خارج می شود.</td></tr><tr><td class="ltr"><code>onMousemove</code></td><td>هنگام حرکت دادن نشانگر ماوس در یک منطقه</td></tr><tr><td class="ltr"><code>onClick</code></td><td>هنگام کلیک کردن</td></tr><tr><td class="ltr"><code>onDblclick</code></td><td>هنگام دابل کلیک کردن</td></tr><tr><td class="ltr"><code>onLoad</code></td><td>هنگام بارگزاری صفحه</td></tr><tr><td class="ltr"><code>onUnload</code></td><td>هنگام بستن صفحه مورد نظر</td></tr><tr><td class="ltr"><code>onResize</code></td><td>هنگام تغییر دادن سایز صفحه (پنچره) مورد نظر</td></tr><tr><td class="ltr"><code>onError</code></td><td>هنگام رخ دادن یک خطا جاوا اسکریپتی</td></tr></tbody></table><h3>پی‌نوشت</h3><p>همانطور که در ابتدای مقاله گفته شد این مقاله فقط به طور کلی جاوا اسکریپت و دستورات آن را معرفی کرده است. در صورتی که علاقمند به آشنایی بیشتر و دقیق‌تر این زبان هستید، می توانید به منابع معرفی شده در انتهای همین مطلب مراجعه نمایید.</p><h3>منابع</h3><ul><li><a href="http://fa.wikipedia.org/wiki/%D8%AC%D8%A7%D9%88%D8%A7%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA" title="جاوا اسکریپت" target="_blank">جاوا اسکریپت</a> (ویکی پدیای فارسی)</li><li class='ltr'><a href="http://www.w3schools.com/jsref/default.asp" title="JavaScript and HTML DOM Reference" target="_blank">JavaScript and HTML DOM Reference</a></li><li class='ltr'><a href="http://javascript.infogami.com/Javascript_in_Ten_Minutes" title="Javascript in Ten Minutes" target="_blank">Javascript in Ten Minutes</a></li><li class='ltr'><a href="http://sage.math.washington.edu/home/agc/lit/javascript/javascriptcheatsheet.pdf" title="JavaScript cheat sheet" target="_blank">JavaScript cheat sheet</a></li></ul><p>شاد و پیروز باشید <img src='http://zebardast.ir/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p><div style="float:left; text-align:left;><img alt='' src='http://1.gravatar.com/avatar/9fb25dddd365836466bd8051be993fa8?s=100&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D100&amp;r=G' class='avatar avatar-100 photo' height='100' width='100' /></div><h3>درباره <a href="http://zebardast.ir/author/admin/" title="سعید زبردست">سعید زبردست</a></h3><p>من برنامه نویس Java و PHP هستم. در کنار برنامه نویسی اطلاعات خوبی در زمینه پایگاه ‌های داده بخصوص MySQL دارم. برای اطلاع بیشتر به صفحه <a href="http://zebardast.ir/about">درباره سعید زبردست</a> مراجعه کنید.</p><small><a href="mailto:saeid&#64;z&#101;b&#97;&#114;&#100;&#97;&#115;t&#46;&#105;&#114;" title="Send سعید زبردست Mail">Mail</a> | <a href="http://zebardast.ir" title="سعید زبردست On The Web">Web</a> | <a href="https://twitter.com/#!/saeid" title="سعید زبردست On Twitter">Twitter</a> | <a href="https://www.facebook.com/saeid.zebardast" title="سعید زبردست On Facebook">Facebook</a> | <a href="http://www.linkedin.com/in/saeid" title="سعید زبردست On LinkedIn">LinkedIn</a> | <a href="https://profiles.google.com/saeid.zebardast" title="سعید زبردست On Google+">Google+</a> | <a href="http://zebardast.ir/author/admin/" title="More Posts By سعید زبردست">More Posts (278)</a></small></p><p><a class="a2a_button_google_plus" href="http://www.addtoany.com/add_to/google_plus?linkurl=http%3A%2F%2Fzebardast.ir%2F%25d8%25b1%25d8%25a7%25d9%2587%25d9%2586%25d9%2585%25d8%25a7%25db%258c-%25d8%25b3%25d8%25b1%25db%258c%25d8%25b9-%25d8%25ac%25d8%25a7%25d9%2588%25d8%25a7-%25d8%25a7%25d8%25b3%25da%25a9%25d8%25b1%25db%258c%25d9%25be%25d8%25aa%2F&amp;linkname=%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C%20%D8%B3%D8%B1%DB%8C%D8%B9%20%D8%AC%D8%A7%D9%88%D8%A7%20%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA" title="Google+" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/google_plus.png" width="16" height="16" alt="Google+"/></a><a class="a2a_button_facebook" href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fzebardast.ir%2F%25d8%25b1%25d8%25a7%25d9%2587%25d9%2586%25d9%2585%25d8%25a7%25db%258c-%25d8%25b3%25d8%25b1%25db%258c%25d8%25b9-%25d8%25ac%25d8%25a7%25d9%2588%25d8%25a7-%25d8%25a7%25d8%25b3%25da%25a9%25d8%25b1%25db%258c%25d9%25be%25d8%25aa%2F&amp;linkname=%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C%20%D8%B3%D8%B1%DB%8C%D8%B9%20%D8%AC%D8%A7%D9%88%D8%A7%20%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA" title="Facebook" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fzebardast.ir%2F%25d8%25b1%25d8%25a7%25d9%2587%25d9%2586%25d9%2585%25d8%25a7%25db%258c-%25d8%25b3%25d8%25b1%25db%258c%25d8%25b9-%25d8%25ac%25d8%25a7%25d9%2588%25d8%25a7-%25d8%25a7%25d8%25b3%25da%25a9%25d8%25b1%25db%258c%25d9%25be%25d8%25aa%2F&amp;linkname=%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C%20%D8%B3%D8%B1%DB%8C%D8%B9%20%D8%AC%D8%A7%D9%88%D8%A7%20%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA" title="Twitter" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_identi_ca" href="http://www.addtoany.com/add_to/identi_ca?linkurl=http%3A%2F%2Fzebardast.ir%2F%25d8%25b1%25d8%25a7%25d9%2587%25d9%2586%25d9%2585%25d8%25a7%25db%258c-%25d8%25b3%25d8%25b1%25db%258c%25d8%25b9-%25d8%25ac%25d8%25a7%25d9%2588%25d8%25a7-%25d8%25a7%25d8%25b3%25da%25a9%25d8%25b1%25db%258c%25d9%25be%25d8%25aa%2F&amp;linkname=%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C%20%D8%B3%D8%B1%DB%8C%D8%B9%20%D8%AC%D8%A7%D9%88%D8%A7%20%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA" title="Identi.ca" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/identica.png" width="16" height="16" alt="Identi.ca"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fzebardast.ir%2F%25d8%25b1%25d8%25a7%25d9%2587%25d9%2586%25d9%2585%25d8%25a7%25db%258c-%25d8%25b3%25d8%25b1%25db%258c%25d8%25b9-%25d8%25ac%25d8%25a7%25d9%2588%25d8%25a7-%25d8%25a7%25d8%25b3%25da%25a9%25d8%25b1%25db%258c%25d9%25be%25d8%25aa%2F&amp;title=%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C%20%D8%B3%D8%B1%DB%8C%D8%B9%20%D8%AC%D8%A7%D9%88%D8%A7%20%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA" id="wpa2a_6">اشتراک‌گذاری</a></p><p><strong>مطالب مرتبط:</strong><ol><li><a href='http://zebardast.ir/%d8%ad%d8%b0%d9%81-%da%a9%d9%88%da%a9%db%8c-%d8%af%d8%b1-%d8%ac%d8%a7%d9%88%d8%a7-%d8%a7%d8%b3%da%a9%d8%b1%db%8c%d9%be%d8%aa/' rel='bookmark' title='حذف کوکی در جاوا اسکریپت'>حذف کوکی در جاوا اسکریپت</a></li><li><a href='http://zebardast.ir/%d9%85%d9%82%d8%af%d9%85%d9%87-%d8%a7%db%8c-%d8%a8%d8%b1%d8%a7%db%8c-%d8%ac%d8%a7%d9%88%d8%a7-%d8%a7%d8%b3%da%a9%d8%b1%db%8c%d9%be%d8%aa/' rel='bookmark' title='مقدمه ای برای جاوا اسکریپت'>مقدمه ای برای جاوا اسکریپت</a></li><li><a href='http://zebardast.ir/querystring-%d8%af%d8%b1-%d8%ac%d8%a7%d9%88%d8%a7-%d8%a7%d8%b3%da%a9%d8%b1%db%8c%d9%be%d8%aa/' rel='bookmark' title='QueryString در جاوا اسکریپت'>QueryString در جاوا اسکریپت</a></li></ol></p>]]></content:encoded> <wfw:commentRss>http://zebardast.ir/%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%b3%d8%b1%db%8c%d8%b9-%d8%ac%d8%a7%d9%88%d8%a7-%d8%a7%d8%b3%da%a9%d8%b1%db%8c%d9%be%d8%aa/feed/</wfw:commentRss> <slash:comments>6</slash:comments> </item> <item><title>نظارت همزمان بر چند فایل و دستور (MultiTail)</title><link>http://zebardast.ir/%d9%86%d8%b8%d8%a7%d8%b1%d8%aa-%d9%87%d9%85%d8%b2%d9%85%d8%a7%d9%86-%d8%a8%d8%b1-%da%86%d9%86%d8%af-%d9%81%d8%a7%db%8c%d9%84-%d9%88-%d8%af%d8%b3%d8%aa%d9%88%d8%b1-multitail/</link> <comments>http://zebardast.ir/%d9%86%d8%b8%d8%a7%d8%b1%d8%aa-%d9%87%d9%85%d8%b2%d9%85%d8%a7%d9%86-%d8%a8%d8%b1-%da%86%d9%86%d8%af-%d9%81%d8%a7%db%8c%d9%84-%d9%88-%d8%af%d8%b3%d8%aa%d9%88%d8%b1-multitail/#comments</comments> <pubDate>Sun, 15 Jan 2012 18:51:56 +0000</pubDate> <dc:creator>سعید زبردست</dc:creator> <category><![CDATA[نرم افزار آزاد و متن باز]]></category> <category><![CDATA[گنو/لینوکس]]></category> <category><![CDATA[head]]></category> <category><![CDATA[multitail]]></category> <category><![CDATA[tail]]></category> <category><![CDATA[ترمینال]]></category> <category><![CDATA[خط فرمان]]></category><guid isPermaLink="false">http://zebardast.ir/?p=1751</guid> <description><![CDATA[سلام، بعد از مدت‌ها دوباره مطلبی در مورد برنامه‌های مفید موجود در لینوکس (و یونیکس) آماده کردم. در این مطلب به معرفی دستورات head، tail و نرم‌افزار MultiTail که برای نظارت (مونیتورینگ) دستورات و فایل‌ها به کار گرفته می شوند، پرداخته ام. دستور head این دستور برای بدست آوردن اطلاعات ابتدایی (خطوط) بالایی فایل و [...] <strong>مطالب مرتبط:</strong><ol><li><a href='http://zebardast.ir/%d9%86%d9%85%d8%a7%db%8c%d8%b4-%da%86%d9%86%d8%af-%d8%ae%d8%b7-%d9%88%d8%b3%d8%b7-%db%8c%da%a9-%d9%81%d8%a7%db%8c%d9%84-%d9%85%d8%aa%d9%86%db%8c-%d8%af%d8%b1-%d9%84%db%8c%d9%86%d9%88%da%a9%d8%b3/' rel='bookmark' title='نمایش چند خط از وسط یک فایل متنی (در لینوکس)'>نمایش چند خط از وسط یک فایل متنی (در لینوکس)</a></li><li><a href='http://zebardast.ir/%d8%a2%d8%b4%d9%86%d8%a7%db%8c%db%8c-%d8%a8%d8%a7-%d8%af%d8%b3%d8%aa%d9%88%d8%b1-netstat/' rel='bookmark' title='آشنایی با دستور netstat'>آشنایی با دستور netstat</a></li><li><a href='http://zebardast.ir/%d8%ac%d8%b3%d8%aa%d8%ac%d9%88%db%8c-%d9%81%d8%a7%db%8c%d9%84-%d8%af%d8%b1-%d9%84%db%8c%d9%86%d9%88%da%a9%d8%b3/' rel='bookmark' title='جستجوی فایل در لینوکس'>جستجوی فایل در لینوکس</a></li></ol>]]></description> <content:encoded><![CDATA[<p>سلام،</p><p>بعد از مدت‌ها دوباره مطلبی در مورد برنامه‌های مفید موجود در لینوکس (و یونیکس) آماده کردم. در این مطلب به معرفی دستورات head، tail و نرم‌افزار MultiTail که برای نظارت (مونیتورینگ) دستورات و فایل‌ها به کار گرفته می شوند، پرداخته ام.</p><h3> دستور head<br /></h3><p>این دستور برای بدست آوردن اطلاعات ابتدایی (خطوط) بالایی فایل و <a href="http://en.wikipedia.org/wiki/Pipe_%28computing%29" title="خروجی های پایپ شده" target="_blank">خروجی های پایپ شده</a> کاربرد دارد. دستور head به صورت پیش فرض ۱۰ خط از اطلاعات را نمایش می دهد. نحوه استفاده از این دستور به صورت زیر است:</p><pre class="brush: bash; title: ; notranslate">
head [options] &lt;file_name&gt;
</pre><p>و یا:</p><pre class="brush: bash; title: ; notranslate">
command | head
</pre><p> مانند:</p><pre class="brush: bash; title: ; notranslate">
ls -tl | head -n5
total 72
drwxr-xr-x+ 12 saeid  staff    408 Jan 15 21:22 Desktop
drwx------+  9 saeid  staff    306 Jan 15 11:23 Downloads
drwx------@ 59 saeid  staff   2006 Jan 11 23:05 Library
drwxr--r--+ 23 saeid  staff    782 Jan  4 18:52 Documents
</pre><h3>دستور tail</h3><p>این دستور کاملا شبیه به دستور head است با این تفاوت که به جای خطوط ابتدایی، اطلاعات خطوط انتهایی را نمایش می دهد. مانند:</p><pre class="brush: bash; title: ; notranslate">
man ls | tail -n15
SEE ALSO
     chflags(1), chmod(1), sort(1), xterm(1), compat(5), termcap(5),
     symlink(7), sticky(8)

STANDARDS
     The ls utility conforms to IEEE Std 1003.1-2001 (``POSIX.1'').

HISTORY
     An ls command appeared in Version 1 AT&amp;T UNIX.

BUGS
     To maintain backward compatibility, the relationships between the many
     options are quite complex.

BSD                              May 19, 2002                              BSD
</pre><h4>پارامتر <code>-f</code> دستور tail</h4><p>پارامتر <code>-f</code> دستور tail باعث می شود که این دستور به صورت زنده (live) باقی مانده و اطلاعات اضافه شده به فایل را در لحظه نشان دهد. این پارامتر بیشتر در بررسی فایل های لاگ استفاده می‌شود. مانند:</p><pre class="brush: bash; title: ; notranslate">
tail -f -n5 /var/log/apache2/access_log
127.0.0.1 - - [15/Jan/2012:22:30:12 +0330] &quot;GET /~saeid/ HTTP/1.1&quot; 200 -
127.0.0.1 - - [15/Jan/2012:22:30:27 +0330] &quot;GET /~saeid/phpinfo.php?=PHPE9568F34-D428-11d2-A769-00AA001ACF42 HTTP/1.1&quot; 200 2524
127.0.0.1 - - [15/Jan/2012:22:30:26 +0330] &quot;GET /~saeid/phpinfo HTTP/1.1&quot; 200 78141
127.0.0.1 - - [15/Jan/2012:22:31:11 +0330] &quot;GET /~saeid/phpinfo HTTP/1.1&quot; 200 78412
127.0.0.1 - - [15/Jan/2012:22:31:11 +0330] &quot;GET /~saeid/phpinfo.php?=PHPE9568F34-D428-11d2-A769-00AA001ACF42 HTTP/1.1&quot; 200 2524
127.0.0.1 - - [15/Jan/2012:22:31:11 +0330] &quot;GET /~saeid/phpinfo.php?=SUHO8567F54-D428-14d2-A769-00DA302A5F18 HTTP/1.1&quot; 200 2813
</pre><p>* برای خروج از <code>tail -f</code> از ترکیب Ctrl+C استفاده نمایید.</p><h3>نرم‌افزار MultiTail</h3><p>این بسته نرم‌افزاری در محیط خط فرمان اجرا شده و به منظور نظارت دستورات و فایل‌ها مورد استفاده قرار می گیرد. مهم‌ترین مزیت <a href="http://www.vanheusden.com/multitail/" title="MultiTail" target="_blank">MultiTail</a> امکان بررسی هم‌زمان چند فایل و دستور در یک ترمینال است.</p><h4>نصب MultiTail</h4><p>برای نصب در اوبونتو/دبیان دستورات زیر را در خط فرمان اجرا نمایید:</p><pre class="brush: bash; title: ; notranslate">
sudo apt-get update; sudo apt-get install multitail
</pre><p>برای نصب در مک با استفاده از <a href="http://www.macports.org/" title="MacPorts" target="_blank">MacPorts</a> دستور زیر را وارد نمایید:</p><pre class="brush: bash; title: ; notranslate">
sudo port install multitail
</pre><h4>نحوه استفاده از MultiTail</h4><p>برنامه MultiTail بسیار انعطاف‌پذیر بوده و قابلیت‌های بسیاری دارد. به عنوان دستور زیر را در نظر بگیرید:</p><pre class="brush: bash; title: ; notranslate">
multitail -l 'ping google.com' -l 'ping zebardast.ir'
</pre><p>تصویر زیر خروجی این دستور را نشان می دهد:</p><div class="autocap alignnone" style="width: 580px;"><div><img src="http://zebardast.ir/wp-content/uploads/2012/01/multitail-ping.png" alt="" title="نمایش دو دستور Ping در MultiTail" width="580" height="342" class="alignnone size-full wp-image-1762" /><p class="autocap-text"><span class="hide">— </span>نمایش دو دستور Ping در MultiTail</p></div></div><p>* برای خروج از MultiTail از ترکیب Ctrl+C استفاده نمایید.</p><p>حال در کنار این دو Ping یک فایل را نیز به صورت زنده (live) بررسی می کنیم:</p><pre class="brush: bash; title: ; notranslate">
multitail -l 'ping google.com' -l 'ping zebardast.ir' /var/log/apache2/access_log
</pre><p>خروجی دستور بالا:</p><div class="autocap alignnone" style="width: 580px;"><div><a href="http://zebardast.ir/wp-content/uploads/2012/01/MultiTail-Pings-LogFile.png"><img src="http://zebardast.ir/wp-content/uploads/2012/01/MultiTail-Pings-LogFile.png" alt="" title="نمایش دو دستور Ping و لاگ آپاچی در MultiTail" width="580" height="328" class="alignnone size-full wp-image-1765" /></a><p class="autocap-text"><span class="hide">— </span>نمایش دو دستور Ping و لاگ آپاچی در MultiTail</p></div></div><p>همچنین می توانیم به جای نمایش جدا از هم اطلاعات، آن‌ها را ترکیب کرده و با هم نمایش دهیم. در زیر خروجی دو دستور پینگ را در یک ترمینال نشان داده ایم:</p><pre class="brush: bash; title: ; notranslate">
multitail -l 'ping google.com' -L 'ping zebardast.ir'
PING zebardast.ir (79.175.162.75): 56 data bytes
PING google.com (173.194.69.105): 56 data bytes
64 bytes from 79.175.162.75: icmp_seq=0 ttl=54 time=87.961 ms
64 bytes from 173.194.69.105: icmp_seq=0 ttl=41 time=456.322 ms
64 bytes from 79.175.162.75: icmp_seq=1 ttl=54 time=97.724 ms
64 bytes from 173.194.69.105: icmp_seq=1 ttl=41 time=416.464 ms
64 bytes from 79.175.162.75: icmp_seq=2 ttl=54 time=96.657 ms
</pre><p>از جمله ویژگی‌های MultiTail امکان فیلتر کردن نتایج است. دستور زیر همانند دستور قبلی می باشد با این تفاوت که عبارت <code>64 bytes from</code> را از خروجی دستور دوم حذف می کند:</p><pre class="brush: bash; title: ; notranslate">
multitail -l 'ping google.com' -ke &quot;64 bytes from&quot; -L 'ping zebardast.ir'
PING google.com (173.194.69.105): 56 data bytes
PING zebardast.ir (79.175.162.75): 56 data bytes
64 bytes from 173.194.69.105: icmp_seq=0 ttl=41 time=463.806 ms
 79.175.162.75: icmp_seq=0 ttl=54 time=45.223 ms
64 bytes from 173.194.69.105: icmp_seq=1 ttl=41 time=442.254 ms
 79.175.162.75: icmp_seq=1 ttl=54 time=84.238 ms
64 bytes from 173.194.69.105: icmp_seq=2 ttl=41 time=442.263 ms
 79.175.162.75: icmp_seq=2 ttl=54 time=98.428 ms
64 bytes from 173.194.69.105: icmp_seq=3 ttl=41 time=400.113 ms
 79.175.162.75: icmp_seq=3 ttl=54 time=81.723 ms
</pre><p>پیشنهاد می‌کنم برای مشاهده مثال‌های بیشتر به <a href="http://www.vanheusden.com/multitail/examples.html" title="صفحه Example سایت MultiTail" target="_blank">صفحه Example سایت MultiTail</a> مراجعه کنید.</p><h3>پیوندها</h3><ul><li><a href="http://www.vanheusden.com/multitail/" title="سایت رسمی MultiTail">سایت رسمی MultiTail</a></li></ul><p>شاد و پیروز باشید <img src='http://zebardast.ir/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p><div style="float:left; text-align:left;><img alt='' src='http://1.gravatar.com/avatar/9fb25dddd365836466bd8051be993fa8?s=100&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D100&amp;r=G' class='avatar avatar-100 photo' height='100' width='100' /></div><h3>درباره <a href="http://zebardast.ir/author/admin/" title="سعید زبردست">سعید زبردست</a></h3><p>من برنامه نویس Java و PHP هستم. در کنار برنامه نویسی اطلاعات خوبی در زمینه پایگاه ‌های داده بخصوص MySQL دارم. برای اطلاع بیشتر به صفحه <a href="http://zebardast.ir/about">درباره سعید زبردست</a> مراجعه کنید.</p><small><a href="mailto:sa&#101;&#105;&#100;&#64;&#122;e&#98;a&#114;&#100;a&#115;&#116;&#46;&#105;r" title="Send سعید زبردست Mail">Mail</a> | <a href="http://zebardast.ir" title="سعید زبردست On The Web">Web</a> | <a href="https://twitter.com/#!/saeid" title="سعید زبردست On Twitter">Twitter</a> | <a href="https://www.facebook.com/saeid.zebardast" title="سعید زبردست On Facebook">Facebook</a> | <a href="http://www.linkedin.com/in/saeid" title="سعید زبردست On LinkedIn">LinkedIn</a> | <a href="https://profiles.google.com/saeid.zebardast" title="سعید زبردست On Google+">Google+</a> | <a href="http://zebardast.ir/author/admin/" title="More Posts By سعید زبردست">More Posts (278)</a></small></p><p><a class="a2a_button_google_plus" href="http://www.addtoany.com/add_to/google_plus?linkurl=http%3A%2F%2Fzebardast.ir%2F%25d9%2586%25d8%25b8%25d8%25a7%25d8%25b1%25d8%25aa-%25d9%2587%25d9%2585%25d8%25b2%25d9%2585%25d8%25a7%25d9%2586-%25d8%25a8%25d8%25b1-%25da%2586%25d9%2586%25d8%25af-%25d9%2581%25d8%25a7%25db%258c%25d9%2584-%25d9%2588-%25d8%25af%25d8%25b3%25d8%25aa%25d9%2588%25d8%25b1-multitail%2F&amp;linkname=%D9%86%D8%B8%D8%A7%D8%B1%D8%AA%20%D9%87%D9%85%D8%B2%D9%85%D8%A7%D9%86%20%D8%A8%D8%B1%20%DA%86%D9%86%D8%AF%20%D9%81%D8%A7%DB%8C%D9%84%20%D9%88%20%D8%AF%D8%B3%D8%AA%D9%88%D8%B1%20%28MultiTail%29" title="Google+" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/google_plus.png" width="16" height="16" alt="Google+"/></a><a class="a2a_button_facebook" href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fzebardast.ir%2F%25d9%2586%25d8%25b8%25d8%25a7%25d8%25b1%25d8%25aa-%25d9%2587%25d9%2585%25d8%25b2%25d9%2585%25d8%25a7%25d9%2586-%25d8%25a8%25d8%25b1-%25da%2586%25d9%2586%25d8%25af-%25d9%2581%25d8%25a7%25db%258c%25d9%2584-%25d9%2588-%25d8%25af%25d8%25b3%25d8%25aa%25d9%2588%25d8%25b1-multitail%2F&amp;linkname=%D9%86%D8%B8%D8%A7%D8%B1%D8%AA%20%D9%87%D9%85%D8%B2%D9%85%D8%A7%D9%86%20%D8%A8%D8%B1%20%DA%86%D9%86%D8%AF%20%D9%81%D8%A7%DB%8C%D9%84%20%D9%88%20%D8%AF%D8%B3%D8%AA%D9%88%D8%B1%20%28MultiTail%29" title="Facebook" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fzebardast.ir%2F%25d9%2586%25d8%25b8%25d8%25a7%25d8%25b1%25d8%25aa-%25d9%2587%25d9%2585%25d8%25b2%25d9%2585%25d8%25a7%25d9%2586-%25d8%25a8%25d8%25b1-%25da%2586%25d9%2586%25d8%25af-%25d9%2581%25d8%25a7%25db%258c%25d9%2584-%25d9%2588-%25d8%25af%25d8%25b3%25d8%25aa%25d9%2588%25d8%25b1-multitail%2F&amp;linkname=%D9%86%D8%B8%D8%A7%D8%B1%D8%AA%20%D9%87%D9%85%D8%B2%D9%85%D8%A7%D9%86%20%D8%A8%D8%B1%20%DA%86%D9%86%D8%AF%20%D9%81%D8%A7%DB%8C%D9%84%20%D9%88%20%D8%AF%D8%B3%D8%AA%D9%88%D8%B1%20%28MultiTail%29" title="Twitter" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_identi_ca" href="http://www.addtoany.com/add_to/identi_ca?linkurl=http%3A%2F%2Fzebardast.ir%2F%25d9%2586%25d8%25b8%25d8%25a7%25d8%25b1%25d8%25aa-%25d9%2587%25d9%2585%25d8%25b2%25d9%2585%25d8%25a7%25d9%2586-%25d8%25a8%25d8%25b1-%25da%2586%25d9%2586%25d8%25af-%25d9%2581%25d8%25a7%25db%258c%25d9%2584-%25d9%2588-%25d8%25af%25d8%25b3%25d8%25aa%25d9%2588%25d8%25b1-multitail%2F&amp;linkname=%D9%86%D8%B8%D8%A7%D8%B1%D8%AA%20%D9%87%D9%85%D8%B2%D9%85%D8%A7%D9%86%20%D8%A8%D8%B1%20%DA%86%D9%86%D8%AF%20%D9%81%D8%A7%DB%8C%D9%84%20%D9%88%20%D8%AF%D8%B3%D8%AA%D9%88%D8%B1%20%28MultiTail%29" title="Identi.ca" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/identica.png" width="16" height="16" alt="Identi.ca"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fzebardast.ir%2F%25d9%2586%25d8%25b8%25d8%25a7%25d8%25b1%25d8%25aa-%25d9%2587%25d9%2585%25d8%25b2%25d9%2585%25d8%25a7%25d9%2586-%25d8%25a8%25d8%25b1-%25da%2586%25d9%2586%25d8%25af-%25d9%2581%25d8%25a7%25db%258c%25d9%2584-%25d9%2588-%25d8%25af%25d8%25b3%25d8%25aa%25d9%2588%25d8%25b1-multitail%2F&amp;title=%D9%86%D8%B8%D8%A7%D8%B1%D8%AA%20%D9%87%D9%85%D8%B2%D9%85%D8%A7%D9%86%20%D8%A8%D8%B1%20%DA%86%D9%86%D8%AF%20%D9%81%D8%A7%DB%8C%D9%84%20%D9%88%20%D8%AF%D8%B3%D8%AA%D9%88%D8%B1%20%28MultiTail%29" id="wpa2a_8">اشتراک‌گذاری</a></p><p><strong>مطالب مرتبط:</strong><ol><li><a href='http://zebardast.ir/%d9%86%d9%85%d8%a7%db%8c%d8%b4-%da%86%d9%86%d8%af-%d8%ae%d8%b7-%d9%88%d8%b3%d8%b7-%db%8c%da%a9-%d9%81%d8%a7%db%8c%d9%84-%d9%85%d8%aa%d9%86%db%8c-%d8%af%d8%b1-%d9%84%db%8c%d9%86%d9%88%da%a9%d8%b3/' rel='bookmark' title='نمایش چند خط از وسط یک فایل متنی (در لینوکس)'>نمایش چند خط از وسط یک فایل متنی (در لینوکس)</a></li><li><a href='http://zebardast.ir/%d8%a2%d8%b4%d9%86%d8%a7%db%8c%db%8c-%d8%a8%d8%a7-%d8%af%d8%b3%d8%aa%d9%88%d8%b1-netstat/' rel='bookmark' title='آشنایی با دستور netstat'>آشنایی با دستور netstat</a></li><li><a href='http://zebardast.ir/%d8%ac%d8%b3%d8%aa%d8%ac%d9%88%db%8c-%d9%81%d8%a7%db%8c%d9%84-%d8%af%d8%b1-%d9%84%db%8c%d9%86%d9%88%da%a9%d8%b3/' rel='bookmark' title='جستجوی فایل در لینوکس'>جستجوی فایل در لینوکس</a></li></ol></p>]]></content:encoded> <wfw:commentRss>http://zebardast.ir/%d9%86%d8%b8%d8%a7%d8%b1%d8%aa-%d9%87%d9%85%d8%b2%d9%85%d8%a7%d9%86-%d8%a8%d8%b1-%da%86%d9%86%d8%af-%d9%81%d8%a7%db%8c%d9%84-%d9%88-%d8%af%d8%b3%d8%aa%d9%88%d8%b1-multitail/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>معاهده‌های کدنویسی (Coding conventions)</title><link>http://zebardast.ir/%d9%85%d8%b9%d8%a7%d9%87%d8%af%d9%87%e2%80%8c%d9%87%d8%a7%db%8c-%da%a9%d8%af-%d9%86%d9%88%db%8c%d8%b3%db%8c-coding-conventions/</link> <comments>http://zebardast.ir/%d9%85%d8%b9%d8%a7%d9%87%d8%af%d9%87%e2%80%8c%d9%87%d8%a7%db%8c-%da%a9%d8%af-%d9%86%d9%88%db%8c%d8%b3%db%8c-coding-conventions/#comments</comments> <pubDate>Sat, 07 Jan 2012 15:09:39 +0000</pubDate> <dc:creator>سعید زبردست</dc:creator> <category><![CDATA[برنامه نویسی]]></category> <category><![CDATA[جاوا]]></category> <category><![CDATA[Java]]></category> <category><![CDATA[نرم‌افزار]]></category><guid isPermaLink="false">http://zebardast.ir/?p=1698</guid> <description><![CDATA[— برنامه نویس کامپیوتر سلام، معاهده‌های کدنویسی (Coding conventions) به مجموعه استانداردها و روش‌های کدنویسی یک زبان برنامه نویسی گفته می شود که معمولا توسط توسعه دهنده آن زبان معرفی می شود. این مقاله به معرفی مهم ترین معاهده‌های برنامه نویسی می پردازد. در انتها فهرستی از معاهده‌های کدنویسی مهم‌ترین زبان‌های برنامه‌نویسی ارائه شده است. [...] مطلب مرتبطی یافت نشد.]]></description> <content:encoded><![CDATA[<div class="autocap alignleft" style="width: 300px;"><div><a href="http://zebardast.ir/wp-content/uploads/2012/01/برنامه-نویس-کامپیوتر.jpg"><img src="http://zebardast.ir/wp-content/uploads/2012/01/برنامه-نویس-کامپیوتر-300x199.jpg" alt="" title="برنامه نویس کامپیوتر" width="300" height="199" class=" size-medium wp-image-1735" /></a><p class="autocap-text"><span class="hide">— </span>برنامه نویس کامپیوتر</p></div></div><p>سلام،</p><p><abbr title="کنوانسیون - Convention">معاهده‌</abbr>های کدنویسی (Coding conventions) به مجموعه استانداردها و روش‌های کدنویسی یک زبان برنامه نویسی گفته می شود که معمولا توسط توسعه دهنده آن زبان معرفی می شود. این مقاله به معرفی مهم ترین معاهده‌های برنامه نویسی می پردازد. در انتها فهرستی از معاهده‌های کدنویسی مهم‌ترین زبان‌های برنامه‌نویسی ارائه شده است.</p><h3>مقدمه</h3><p>به مجموعه استانداردها و روش‌های کدنویسی توسط یک زبان برنامه نویسی، معاهده‌های کدنویسی این زبان گفته می‌شود. این معاهده‌ها دربرگیرنده راهنماهایی در زمینه ساختار فایل، فاصله‌ها، توضیحات، تعاریف، عبارات، فضاهای خالی، نامگذاری و&#8230; می باشند. معمولا توسعه دهنده یک زبان برنامه نویسی این معاهده‌ها را ارائه می کند. البته تیم‌ها، شرکت‌ها و سازمان‌ها نیز ممکن است استاندارد‌های خاص خود را به همراه این معاهده‌ها به برنامه نویسان خود ابلاغ نمایند.<br /> برنامه‌نویسان و توسعه دهندگان نرم‌افزارها استفاده از این استانداردها را بسیار توصیه می کنند. استفاده از معاهده‌ها علاوه بر افزایش خوانایی کدهای برنامه، نگهداری (Maintenance) نرم‌افزار را نیز آسان‌تر می کند. این نکته را در نظر داشته باشید که استفاده از معاهده‌ها اجباری نبوده و در صورت عدم استفاده از آن‌ها به خطای کامپایلر برخورد نمی‌نمایید.</p><h3>نگهداری نرم‌افزار</h3><p>کم‌کردن هزینه نگهداری نرم‌افزار (Software Maintenance) مهم‌ترین دلیل پیروی از معاهده‌های برنامه نویسی است. شرکت سان مایکروسیستمز در معرفی معاهده‌های کدنویسی زبان جاوا چهار عامل زیر را دلیل ارائه معاهده‌های کدنویسی معرفی کرده است:</p><ol><li> ۸۰٪ از هزینه طول عمر یک نرم‌افزار صرف تعمیر و نگهداری آن می شود.</li><li> معمولا برنامه‌نویس نرم‌افزار در طول عمر نرم‌افزار عوض شده و ثابت باقی نمی‌ماند.</li><li> معاهده‌های کدنویسی با افزایش خوانایی کدهای برنامه به مهندسان این امکان را می‌دهند که کد‌های جدید را سریع‌تر و کامل‌تر درک کنند.</li><li> در صورتی که شما کد منبع خود را به عنوان یک محصول عرضه می‌نمایید، باید از صحیح، مرتب و یکسان بود کد‌های خود در محصولات مختلف‌تان مطمئن باشید.</li></ol><h4>کیفیت</h4><p>در فرایند توسعه نرم‌افزار مرحله‌ای با عنوان ارزشیابی همتایان (Peer review) وجود دارد که در طی آن شخص انجام دهنده یک کار، تکلیف صورت گرفته را همراه با یک یا چند تن از همکاران خود ارزیابی می کند. هدف از این مرحله بررسی منظم محصول به منظور یافتن مشکلات احتمالی و رفع ایراد آن‌ها می‌باشد. نام انگلیسی این مرحله (Software peer review) است.<br /> Software peer review غالبا به بررسی کدها منبع می‌پردازد. در صورتی که کد منبع از معاهده‌های زبان مورد نظر پیروی کرده باشد، علاوه بر افزایش کیفیت کد منبع موجب می شود تا مشاهده، بررسی و رفع ایرادات برای تیم ارزشیابی بسیار آسان‌تر شود.<br /> با انجام صحیح ارزشیابی همتایان، بسیاری از مشکلات احتمالی حال و آینده رفع خواهد شد. به عنوان مثال در صورت مراجعه مجدد به کدمنبع در آینده فهمیدن و درک کدی که درست ارزشیابی شده و از معاهده‌ها پیروی کرده است راحت‌تر بوده و زمان کمتری را نیاز خواهد داشت.</p><h4>تغییر در ساختار کد (Refactoring)</h4><p>منظور از refactoring فعالیتی است که طی آن خوانایی کدمنبع افزایش یافته و ساختار وی بهبود می یابد. به طور کلی هر تغییری در کدمنبع که رفتار یک نرم‌افزار را تغییر ندهد می تواند به عنوان refactoring در نظر گرفته شود. برخی از این تغییرات عبارتند از: تغییر نام متغییرها، تغییر نام متدها و توابع، عوض کردن محل قرارگیری یک متد (یا کل کلاس) و شکستن یک متد یا تابع بزرگ به متدها یا توابع کوچک‌تر.<br /> refactoring در برنامه نویسی یک نرم‌افزار به صورت تیمی، در مراحل ابتدایی کدنویسی انجام می شود. هدف از این کار یکسان کردن استانداردها و ساختار کدهای نوشته شده توسط اعضای تیم است. انتظار می رود که بعد از این مرحله اعضای تیم بیشتر معاهده‌ها و استانداردها را فراگرفته و از آن‌ها پیروی نمایند.</p><h3>اتوماسیون وظایف (Task automation)</h3><p>معاهده‌های کدنویسی این امکان را فراهم می کنند تا فرایندهایی غیر از کامپایل و اجرای نرم‌افزارها را به آسانی انجام داد. از جمله مهم‌ترین این فرایندها می توان به ساخت و انتشار خودکار مستندات برنامه اشاره کرد. به عنوان مثال شما می توانید با نوشتن برچسب‌های author، version، param و&#8230; در توضیحات کدمنبع به صورت خودکار مستندات فنی نرم‌افزار خود را ایجاد کنید. به کد جاوای زیر توجه کنید:</p><pre class="brush: java; title: ; notranslate">
/**
 * Simple calculator operation.
 * @author &lt;a href=&quot;mailto:me@my.com&quot;&gt;Me&lt;/a&gt;
 * @version 1.0
 */
public interface Operation {
    /**
     * Perform a single calculation.
     * @param operand the operand to use for calculation.
     */
    public void calculate(double operand);

    /**
     * Get the current result.
     * @return the current result. If no calculations were
     *         performed the result is undefined.
     */
    public double getResult();
}
</pre><p>تصویر زیر خروجی HTML تولید شده با نرم‌افزار Javadoc را نشان می دهد:</p><div class="autocap alignnone" style="width: 580px;"><div><a href="http://zebardast.ir/wp-content/uploads/2012/01/javadoc.Operation.java_.png"><img src="http://zebardast.ir/wp-content/uploads/2012/01/javadoc.Operation.java_-1024x640.png" alt="" title="خروجی HTML تولید شده با نرم‌افزار Javadoc" width="580" height="362" class="alignnone size-large wp-image-1730" /></a><p class="autocap-text"><span class="hide">— </span>خروجی HTML تولید شده با نرم‌افزار Javadoc</p></div></div><h3>برخی از معاهده‌های کدنویسی مهمترین زبان‌های برنامه نویسی</h3><p>در زیر پیوندهایی به تعدادی از معاهده‌های کدنویسی ارائه شده است:</p><ul><li><a href="http://www.oracle.com/technetwork/java/codeconv-138413.html" title="معاهده‌های کدنویسی زبان جاوا" target="_blank">معاهده‌های کدنویسی زبان جاوا</a></li><li><a href="http://www.jetcafe.org/jim/c-style.html" title="استانداردهای کد نویسی در ANSI C" target="_blank">استانداردهای کدنویسی در ANSI C</a></li><li><a href="http://gcc.gnu.org/wiki/CppConventions" title="معاهده‌های کدنویسی C++ GCC">معاهده‌های کدنویسی C++ GCC</a></li><li><a href="http://www.python.org/dev/peps/pep-0008/" title="راهنمای شیوه کدنویسی در پایتون" target="_blank">راهنمای شیوه کدنویسی در پایتون</a></li></ul><h3>منابع</h3><div class="ltr"><ul><li><a href="http://en.wikipedia.org/wiki/Coding_conventions" title="Coding conventions" target="_blank">Coding conventions (Wikipedia)</a></li><li><a href="http://en.wikipedia.org/wiki/Software_peer_review" title="Software peer review" target="_blank">Software peer review</a></li><li><a href="http://marakana.com/bookshelf/java_fundamentals_tutorial/javadoc.html" title="Java Fundamentals Tutorial : Javadoc" target="_blank">Java Fundamentals Tutorial : Javadoc</a></li><li><a href="http://www.oracle.com/technetwork/java/codeconv-138413.html" title="Code Conventions for the Java Programming Language" target="_blank">Code Conventions for the Java Programming Language</a></li></ul></div><p>منبع تصویر:<a href="http://www.onlinedegrees.org/calculator/salary/computer-programmers" title="Computer Programmer Career" target="_blank"> onlinedegrees.org</a></p><p>شاد و پیروز باشید <img src='http://zebardast.ir/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p><div style="float:left; text-align:left;><img alt='' src='http://1.gravatar.com/avatar/9fb25dddd365836466bd8051be993fa8?s=100&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D100&amp;r=G' class='avatar avatar-100 photo' height='100' width='100' /></div><h3>درباره <a href="http://zebardast.ir/author/admin/" title="سعید زبردست">سعید زبردست</a></h3><p>من برنامه نویس Java و PHP هستم. در کنار برنامه نویسی اطلاعات خوبی در زمینه پایگاه ‌های داده بخصوص MySQL دارم. برای اطلاع بیشتر به صفحه <a href="http://zebardast.ir/about">درباره سعید زبردست</a> مراجعه کنید.</p><small><a href="mailto:sa&#101;&#105;&#100;&#64;z&#101;b&#97;&#114;d&#97;st&#46;i&#114;" title="Send سعید زبردست Mail">Mail</a> | <a href="http://zebardast.ir" title="سعید زبردست On The Web">Web</a> | <a href="https://twitter.com/#!/saeid" title="سعید زبردست On Twitter">Twitter</a> | <a href="https://www.facebook.com/saeid.zebardast" title="سعید زبردست On Facebook">Facebook</a> | <a href="http://www.linkedin.com/in/saeid" title="سعید زبردست On LinkedIn">LinkedIn</a> | <a href="https://profiles.google.com/saeid.zebardast" title="سعید زبردست On Google+">Google+</a> | <a href="http://zebardast.ir/author/admin/" title="More Posts By سعید زبردست">More Posts (278)</a></small></p><p><a class="a2a_button_google_plus" href="http://www.addtoany.com/add_to/google_plus?linkurl=http%3A%2F%2Fzebardast.ir%2F%25d9%2585%25d8%25b9%25d8%25a7%25d9%2587%25d8%25af%25d9%2587%25e2%2580%258c%25d9%2587%25d8%25a7%25db%258c-%25da%25a9%25d8%25af-%25d9%2586%25d9%2588%25db%258c%25d8%25b3%25db%258c-coding-conventions%2F&amp;linkname=%D9%85%D8%B9%D8%A7%D9%87%D8%AF%D9%87%E2%80%8C%D9%87%D8%A7%DB%8C%20%DA%A9%D8%AF%D9%86%D9%88%DB%8C%D8%B3%DB%8C%20%28Coding%20conventions%29" title="Google+" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/google_plus.png" width="16" height="16" alt="Google+"/></a><a class="a2a_button_facebook" href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fzebardast.ir%2F%25d9%2585%25d8%25b9%25d8%25a7%25d9%2587%25d8%25af%25d9%2587%25e2%2580%258c%25d9%2587%25d8%25a7%25db%258c-%25da%25a9%25d8%25af-%25d9%2586%25d9%2588%25db%258c%25d8%25b3%25db%258c-coding-conventions%2F&amp;linkname=%D9%85%D8%B9%D8%A7%D9%87%D8%AF%D9%87%E2%80%8C%D9%87%D8%A7%DB%8C%20%DA%A9%D8%AF%D9%86%D9%88%DB%8C%D8%B3%DB%8C%20%28Coding%20conventions%29" title="Facebook" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fzebardast.ir%2F%25d9%2585%25d8%25b9%25d8%25a7%25d9%2587%25d8%25af%25d9%2587%25e2%2580%258c%25d9%2587%25d8%25a7%25db%258c-%25da%25a9%25d8%25af-%25d9%2586%25d9%2588%25db%258c%25d8%25b3%25db%258c-coding-conventions%2F&amp;linkname=%D9%85%D8%B9%D8%A7%D9%87%D8%AF%D9%87%E2%80%8C%D9%87%D8%A7%DB%8C%20%DA%A9%D8%AF%D9%86%D9%88%DB%8C%D8%B3%DB%8C%20%28Coding%20conventions%29" title="Twitter" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_identi_ca" href="http://www.addtoany.com/add_to/identi_ca?linkurl=http%3A%2F%2Fzebardast.ir%2F%25d9%2585%25d8%25b9%25d8%25a7%25d9%2587%25d8%25af%25d9%2587%25e2%2580%258c%25d9%2587%25d8%25a7%25db%258c-%25da%25a9%25d8%25af-%25d9%2586%25d9%2588%25db%258c%25d8%25b3%25db%258c-coding-conventions%2F&amp;linkname=%D9%85%D8%B9%D8%A7%D9%87%D8%AF%D9%87%E2%80%8C%D9%87%D8%A7%DB%8C%20%DA%A9%D8%AF%D9%86%D9%88%DB%8C%D8%B3%DB%8C%20%28Coding%20conventions%29" title="Identi.ca" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/identica.png" width="16" height="16" alt="Identi.ca"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fzebardast.ir%2F%25d9%2585%25d8%25b9%25d8%25a7%25d9%2587%25d8%25af%25d9%2587%25e2%2580%258c%25d9%2587%25d8%25a7%25db%258c-%25da%25a9%25d8%25af-%25d9%2586%25d9%2588%25db%258c%25d8%25b3%25db%258c-coding-conventions%2F&amp;title=%D9%85%D8%B9%D8%A7%D9%87%D8%AF%D9%87%E2%80%8C%D9%87%D8%A7%DB%8C%20%DA%A9%D8%AF%D9%86%D9%88%DB%8C%D8%B3%DB%8C%20%28Coding%20conventions%29" id="wpa2a_10">اشتراک‌گذاری</a></p><p>مطلب مرتبطی یافت نشد.</p>]]></content:encoded> <wfw:commentRss>http://zebardast.ir/%d9%85%d8%b9%d8%a7%d9%87%d8%af%d9%87%e2%80%8c%d9%87%d8%a7%db%8c-%da%a9%d8%af-%d9%86%d9%88%db%8c%d8%b3%db%8c-coding-conventions/feed/</wfw:commentRss> <slash:comments>9</slash:comments> </item> <item><title>انواع داده در MySQL</title><link>http://zebardast.ir/%d8%a7%d9%86%d9%88%d8%a7%d8%b9-%d8%af%d8%a7%d8%af%d9%87-%d9%87%d8%a7-%d8%af%d8%b1-%d9%be%d8%a7%db%8c%da%af%d8%a7%d9%87-%d8%af%d8%a7%d8%af%d9%87-mysql/</link> <comments>http://zebardast.ir/%d8%a7%d9%86%d9%88%d8%a7%d8%b9-%d8%af%d8%a7%d8%af%d9%87-%d9%87%d8%a7-%d8%af%d8%b1-%d9%be%d8%a7%db%8c%da%af%d8%a7%d9%87-%d8%af%d8%a7%d8%af%d9%87-mysql/#comments</comments> <pubDate>Wed, 23 Nov 2011 13:08:08 +0000</pubDate> <dc:creator>سعید زبردست</dc:creator> <category><![CDATA[پایگاه داده MySQL]]></category> <category><![CDATA[مای‌اس‌کیوال]]></category> <category><![CDATA[پایگاه داده]]></category><guid isPermaLink="false">http://zebardast.ir/?p=1527</guid> <description><![CDATA[— MySQL سلام، هدف این مقاله بررسی انواع داده ها در پایگاه داده MySQL (مای‌اس‌کیوال) می باشد. MySQL انواع مختلف داده را در دسته بندی های زیر پشتیبانی می کند: اعداد (Numeric) زمان (Date and Time) رشته ها (String) داده های فضایی (Spatial) در این مقاله داده های عددی، زمان و رشته ها را بررسی [...] <strong>مطالب مرتبط:</strong><ol><li><a href='http://zebardast.ir/%d9%88%d8%a7%d8%b1%d8%af-%da%a9%d8%b1%d8%af%d9%86-%d8%a7%d8%b7%d9%84%d8%a7%d8%b9%d8%a7%d8%aa-%d8%a7%d8%b2-%d9%81%d8%a7%db%8c%d9%84-%d8%a8%d9%87-mysql/' rel='bookmark' title='وارد کردن اطلاعات از فایل به پایگاه داده MySQL'>وارد کردن اطلاعات از فایل به پایگاه داده MySQL</a></li><li><a href='http://zebardast.ir/%d9%86%da%a9%d8%a7%d8%aa%db%8c-%d8%af%d8%b1-%d8%b2%d9%85%db%8c%d9%86%d9%87-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-%d8%a7%d8%b2-%d9%be%d8%a7%db%8c%da%af%d8%a7%d9%87-%d8%af%d8%a7%d8%af%d9%87-mysql/' rel='bookmark' title='نکاتی در زمینه استفاده راحت تر از پایگاه داده MySQL'>نکاتی در زمینه استفاده راحت تر از پایگاه داده MySQL</a></li><li><a href='http://zebardast.ir/%d8%a8%d8%a7%d8%b2%db%8c%d8%a7%d8%a8%db%8c-%d8%af%d8%a7%d8%af%d9%87-%d8%a7%d8%b2-%d9%be%d8%a7%db%8c%da%af%d8%a7%d9%87-%d8%af%d8%a7%d8%af%d9%87-mysql-%d9%82%d8%b3%d9%85%d8%aa-%d8%a7%d9%88%d9%84/' rel='bookmark' title='بازیابی داده از پایگاه داده MySQL &#8211; قسمت اول'>بازیابی داده از پایگاه داده MySQL &#8211; قسمت اول</a></li></ol>]]></description> <content:encoded><![CDATA[<div class="autocap alignleft" style="width: 110px;"><div><a href="http://zebardast.ir/wp-content/uploads/2010/10/logo-mysql-110x57.png"><img src="http://zebardast.ir/wp-content/uploads/2010/10/logo-mysql-110x57.png" alt="" title="MySQL" width="110" height="57" class=" size-full wp-image-1157" /></a><p class="autocap-text"><span class="hide">— </span>MySQL</p></div></div><p>سلام،<br /> هدف این مقاله بررسی انواع داده ها در پایگاه داده MySQL (مای‌اس‌کیوال) می باشد. MySQL انواع مختلف داده را در دسته بندی های زیر پشتیبانی می کند:</p><ul><li>اعداد (Numeric)</li><li>زمان (Date and Time)</li><li>رشته ها (String)</li><li>داده های فضایی (Spatial)</li></ul><p>در این مقاله داده های عددی، زمان و رشته ها را بررسی می کنیم. با توجه به تخصصی بودن داده های فضایی، این نوع داده ها را در مقاله ای جداگانه در آینده بررسی خواهیم کردم.</p><h3>اعداد (Numeric)</h3><p>MySQL تمامی انواع داده های عددی استاندارد SQL شامل اعداد صحیح و اعداد تقریبی را پشتبانی می کند.  هر یک از نوع داده های عددی حافظه مشخصی برای ذخیره سازی نیاز دارند. همچنین در نظر داشته باشید که هر کدام از آنها محدوده مشخصی را پشتیبانی می کنند. هر نوع از این داده های عددی را می توان به صورت SIGNED یا UNSIGNED تعریف کرد. در حالت SIGNED این ستون ها از مقادیر منفی پشتبیبانی می کنند ولی در حالت UNSIGNED اعداد ذخیره شده باید بزرگتر ویا مساوی صفر باشند. در نظر داشته باشید که نوع داده <code>BOOLEAN</code> برای ذخیره مقادیر <code>TRUE</code> و <code>FALSE</code> همان <code>TINYINT(1)</code> می باشد.<br /> جدول زیر اطلاعات کلی نوع داده های عددی را در حالت SIGNED و UNSIGNED نشان می دهد:</p><table class="info" cellpadding=0 cellspacing=0><caption>اطلاعات کلی نوع داده های عددی Integer</caption><thead><tr><th>نوع</th><th>حافظه (بایت)</th><th> حداقل مقدار</th><th> حداکثر مقدار</th><th> توضیحات</th></tr></thead><tbody><tr><td class="ltr" rowspan="2">TINYINT</td><td rowspan="2">1</td><td class="ltr">-128</td><td class="ltr">127</td><td></td></tr><tr><td class="ltr">0</td><td class="ltr">255</td><td></td></tr><tr><td class="ltr" rowspan="2">SMALLINT</td><td rowspan="2">2</td><td class="ltr">-32768</td><td class="ltr">32767</td><td></td></tr><tr><td class="ltr">0</td><td class="ltr">65535</td><td></td></tr><tr><td class="ltr" rowspan="2">MEDIUMINT</td><td rowspan="2">3</td><td class="ltr">-8388608</td><td class="ltr">8388607</td><td></td></tr><tr><td class="ltr">0</td><td class="ltr">16777215</td><td></td></tr><tr><td class="ltr" rowspan="2">INTEGER</td><td rowspan="2">4</td><td class="ltr">-2147483648</td><td class="ltr">2147483647</td><td></td></tr><tr><td class="ltr">0</td><td class="ltr">4294967295</td><td></td></tr><tr><td class="ltr" rowspan="2">BIGINT</td><td rowspan="2">8</td><td class="ltr">-9223372036854775808</td><td class="ltr">9223372036854775807</td><td></td></tr><tr><td class="ltr">0</td><td class="ltr">18446744073709551615</td><td></td></tr></tbody></table><table class="info" cellpadding=0 cellspacing=0><caption>اطلاعات کلی نوع داده های عددی شناور</caption><thead><tr><th>نوع</th><th>حافظه (بایت)</th><th> مقدار</th><th> نحوه تعریف</th><th> توضیحات</th></tr></thead><tbody><tr><td class="ltr">FLOAT</td><td>4</td><td>از ۰ تا ۲۳ رقم</td><td class="ltr">FLOAT(M,D)</td><td>مقدار تقریبی (Approximate Value)</td></tr><tr><td class="ltr">DOUBLE</td><td>8</td><td>از ۲۴ تا ۵۳ رقم</td><td class="ltr">DOUBLE(M,D)</td><td>مقدار تقریبی (Approximate Value)</td></tr><tr><td class="ltr">DECIMAL</td><td>هر ۹ رقم ۴ بایت به صورت باینری</td><td>تا ۶۵ رقم</td><td class="ltr">DECIMAL(M,D)</td><td>مقدار دقیق (Exact Value)</td></tr></tbody></table><p>در جدول بالا حرف M نشان‌دهنده تعداد کل رقم‌های  داده و حرف D نشان‌دهنده تعداد رقم‌های بعد از ممیز (.) می باشد. به عنوان مثال در ستونی که به صورت <code>FLOAT(7,4)</code> تعریف شده است می توان حداکثر مقدار 999.9999 را ذخیره نمود. در صورتی که شما عدد 999.00009 را به این جدول وارد کنید، عدد واردشده به صورت 999.0001 ذخیره خواهد شد.</p><p><strong>سوال</strong>: منظور از مقدار تقریبی و دقیق در جدول داده های عددی شناور چیست؟<br /> <strong>پاسخ</strong>: گاهی اوقات در نوع داده‌های تقریبی اعداد گرد می شوند. در زیر با اجرا کردن چند دستور در خط فرمان MySQL پایگاه داده‌ای با دو ستون Decimal و Float تعریف کردیم. در آخرین دستور نتیجه گردشدن را در ستون Float مشاهده می فرمایید:</p><pre class="brush: sql; title: ; notranslate">
mysql&gt; create table numbers (a decimal(10,2), b float);
mysql&gt; insert into numbers values (100, 100);
mysql&gt; select @a := (a/3), @b := (b/3), @a * 3, @b * 3 from numbers \G
*************************** 1. row ***************************
@a := (a/3): 33.333333333
@b := (b/3): 33.3333333333333
     @a * 3: 99.999999999
     @b * 3: 100
</pre><p>برای اطلاعات بیشتر به صفحه <a href="http://dev.mysql.com/doc/refman/5.0/en/problems-with-float.html" title="Problems with Floating-Point Values" target="_blank">Problems with Floating-Point Values</a> در سایت MySQL مراجعه نمایید.<br /> در نسخه های قبل از 5.0.3 نوع داده DECIMAL به صورت String ذخیره می شود و مقدار رقم‌هایی که پشتیبانی می کرد مانند نوع داده DOUBLE بود.</p><h4>نوع داده BIT</h4><p>این نوع داده برای ذخیره بیت‌های ۰ و ۱ استفاده می شود. برای تعریف ستونی از این نوع از عبارت <code>BIT(M)</code> استفاده می کنیم که در اینجا M فضایی به طول تقریبا <code>(M+7)/8</code> بایت را برای نگهداری داده‌ها ایجاد می کند. M می تواند عددی از ۱ تا ۶۴ باشد. برای نشان‌دادن ۰ و ۱ به صورت بیت از حرف b استفاده می کنیم. به عنوان مثال <code>b'111'</code> و <code>b'10000000'</code> که به ترتیب برابر اعداد ۷ و ۱۲۸ می باشند. برای درک بیشتر این موضوع به دستورات و نتایج زیر در خط فرمان MySQL توجه فرمایید:</p><pre class="brush: sql; title: ; notranslate">
mysql&gt; INSERT INTO t SET b = b'11111111';
mysql&gt; INSERT INTO t SET b = b'1010';
mysql&gt; INSERT INTO t SET b = b'0101';
mysql&gt; SELECT b+0, BIN(b+0), OCT(b+0), HEX(b+0) FROM t;
+------+----------+----------+----------+
| b+0  | BIN(b+0) | OCT(b+0) | HEX(b+0) |
+------+----------+----------+----------+
|  255 | 11111111 | 377      | FF       |
|   10 | 1010     | 12       | A        |
|    5 | 101      | 5        | 5        |
+------+----------+----------+----------+
3 rows in set (0.03 sec)
</pre><p>آخرین Query در بالا توابع مختلف برای تبدیل این اعداد را نشان می دهد. عبارت <code>+0</code> مقدار دودویی ذخیره شده را به عدد ده‌دهی متناظر تبدیل می کند.</p><h3>زمان (Date and Time)</h3><p>در کل ۵ نوع داده برای ذخیره زمان (ساعت و تاریخ) داریم. در جدول زیر اطلاعات این نوع داده‌ها را مشاهده می‌فرمایید:</p><table class="info" cellpadding=0 cellspacing=0><caption>اطلاعات کلی نوع داده های زمانی (Date and Time)</caption><thead><tr><th>نوع</th><th>حافظه (بایت)</th><th> مقدار صفر <code>(“Zero” Value)</code></th></tr></thead><tbody><tr><td class="ltr">DATE</td><td>3</td><td class="ltr"><code>'0000-00-00'</code></td></tr><tr><td class="ltr">TIME</td><td>3</td><td class="ltr"><code>'00:00:00'</code></td></tr><tr><td class="ltr">DATETIME</td><td>8</td><td class="ltr"><code>'0000-00-00 00:00:00'</code></td></tr><tr><td class="ltr">TIMESTAMP</td><td>4</td><td class="ltr"><code>'0000-00-00 00:00:00'</code></td></tr><tr><td class="ltr">YEAR</td><td>1</td><td class="ltr"><code>0000</code></td></tr></tbody></table><p>در ادامه به بررسی نوع داده‌های ذکر شده در بالا خواهیم پرداخت.</p><h4>نوع داده DATE</h4><p>این نوع داده فقط برای ذخیره سازی تاریخ استفاده می شود. فرمت پیش فرض این نوع داده <code>'YYYY-MM-DD'</code> است. بازه‌ای که توسط DATE پشتیبانی می شود از <code>'1000-01-01'</code> تا <code>'9999-12-31'</code> می باشد.</p><h4>نوع داده TIME</h4><p>این نوع داده برای ذخیره سازی زمان (ساعت، دقیقه، ثانیه) استفاده می شود. فرمت پیش‌فرض این نوع داده <code>'HH:MM:SS'</code> و یا <code>'HHH:MM:SS'</code> است. بازه ای که در نوع TIME پشتیبانی می شود از <code>'-838:59:59'</code> تا <code>'838:59:59'</code> می باشد. نوع داده TIME فقط برای نمایش زمان روز استفاده نمی شود. برای نمایش تفاوت زمانی دو بازه و یا زمان باقی‌مانده نیز می تواند از TIME استفاده نمود. به همین دلیل بازه پشتیبانی شده بیشتر از ۲۴ ساعت و یا کمتر از صفر (منفی) می باشد.<br /> برای استفاده از عبارت های مخفف در نوع داده TIME باید دقت نمایید. به عنوان مثال MySQL عبارت <code>'11:12'</code> را به صورت <code>'11:12:00'</code> تفسیر می کند. در صورتی که داده بدون <code>':'</code> (دو نقطه) بیان شود، MySQL آن را از سمت راست تفسیر می کند. به عنوان مثال عبارت <code>'1112'</code> و یا <code>1112</code> به معنی <code>'00:11:12'</code> است.<br /> به صورت پیش فرض MySQL داده‌های خارج از محدوده TIME را در صورتی که با فرمت مناسب وارد شده باشند به نزدیک‌ترین بازه تبدیل می کند. به عنوان مثال عبارت‌های <code>'-850:00:00'</code> و <code>'850:00:00'</code> به <code>'-838:59:59'</code> و <code>'838:59:59'</code> تبدیل خواهند شد. داده‌هایی که فرمت مناسب نداشته و یا قابل تفسیر برای داده TIME نباشند به عبارت <code>'00:00:00'</code> تبدیل خواهند شد.</p><h4>نوع داده DATETIME</h4><p>این نوع داده برای ذخیره سازی زمان به صورت کامل شامل تاریخ و ساعت استفاده می شود. فرمت پیش فرض این نوع داده <code>'YYYY-MM-DD HH:MM:SS'</code> می باشد. بازه‌ی پشتیبانی DATETIME از <code>'1000-01-01 00:00:00'</code> تا <code>'9999-12-31 23:59:59'</code> است.</p><h4>نوع داده TIMESTAMP</h4><p>این نوع داده همانند DATETIME می باشد. بازه‌ای که توسط TIMESTAMP پشتیبانی می‌شود از <code>'1970-01-01 00:00:01' <abbr title="ساعت هماهنگ جهانی - Coordinated Universal Time">UTC</abbr></code> تا <code>'2038-01-19 03:14:07' <abbr title="ساعت هماهنگ جهانی - Coordinated Universal Time">UTC</abbr></code> است.<br /> داده‌های TIMESTAMP هنگام ذخیره شدن از زمان منطقه زمانی (Time Zone) کنونی سیستم به UTC تبدیل و ذخیره می شوند. متناظر با همین امر، هنگام نشان دادن داده‌های TIMESTAMP، ابتدا داده‌ها از UTC به منطقه زمانی کنونی سیستم تبدیل شده و بعد نمایش داده می شوند. به همین علت در صورتی که منطقی زمانی سیستم عوض شود، ممکن است داده‌ها به صورت غیرعادی و یا غلط نمایش داده شوند.<br /> نوع داده TIMESTAMP این قابلیت را دارد که مقداردهی اولیه و یا مقداردهی خودکار داشته باشید. برای مقداردهی اولیه کافیست مقدار پیش فرض فیلد مورد نظر را CURRENT_TIMESTAMP قرار دهید. مانند:</p><pre class="brush: sql; title: ; notranslate">
mysql&gt; CREATE TABLE t (ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
</pre><p>در حالت مقداردهی خودکار، مقدار ذخیره شده در فیلد TIMESTAMP هنگام بروزرسانی (UPDATE) یک ردیف به زمان بروزرسانی تغییر پیدا می کند. مانند:</p><pre class="brush: sql; title: ; notranslate">
mysql&gt; CREATE TABLE t (name VARCHAR(100), ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);

mysql&gt; INSERT INTO t(name) VALUES('Saeid');

mysql&gt; SELECT * FROM t;
+-------+---------------------+
| name  | ts                  |
+-------+---------------------+
| Saeid | 2011-12-22 12:00:26 |
+-------+---------------------+
1 row in set (0.00 sec)

mysql&gt; UPDATE t SET name = 'Alireza';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql&gt; SELECT * FROM t;
+---------+---------------------+
| name    | ts                  |
+---------+---------------------+
| Alireza | 2011-12-22 12:01:56 |
+---------+---------------------+
1 row in set (0.00 sec)
</pre><p>برای کسب اطلاعات بیشتر به صفحه <a href="http://dev.mysql.com/doc/refman/5.0/en/timestamp.html" title="TIMESTAMP Properties" target="_blank">TIMESTAMP Properties</a> در سایت MySQL مراجعه نمایید.</p><h4>نوع داده YEAR</h4><p>این نوع داده برای ذخیره سازی سال با فرمت YYYY به کار می‌رود. شما می تواند سال مورد نظر خود را به صورت دو رقمی <code>YEAR(2)</code> و یا ۴ رقمی <code>YEAR(4)</code> تعریف کنید. نوع YEAR از سال 1901 تا 2155 و 0000 را پشتیبانی می کند. در صورتی که سال را به صورت ۲ رقمی تعریف کرده باشید، اعداد 00 تا 69 در قرن ۲۱ و اعداد 70 تا 99 در قرن ۲۰ در نظر گرفته می شوند. مثلا 45 به عنوان 2045 و 80 به صورت 1980 در نظر گرفته می شود. تمامی مقادیر غیر منطقی برای YEAR به صورت 0000 ذخیره می شوند.</p><h3>رشته ها (String)</h3><p>نوع داده String برای نگه داری رشته‌ها (متون) استفاده می شود. در زیر اطلاعات کلی داده هایی از نوع String را مشاهده می فرمایید. در جدول زیر M نشان‌دهنده طول تعریف شده برای داده و L نشان‌دهنده طول واقعی رشته داده شده می باشد.</p><table class="info" cellpadding=0 cellspacing=0><caption>اطلاعات کلی نوع داده رشته‌ها (String)</caption><thead><tr><th>نوع</th><th> مقدار</th><th>حافظه (بایت)</th></tr></thead><tbody><tr><td class="ltr"><code>CHAR(M)</code></td><td class="ltr" nowrap="nowrap"><code>0 <= M <= 255</code></td><td> <code>M × w</code> بایت. w تعداد بایت مورد نیاز برای حداکثر طول کاراکترهای تعریف شده در character set جدول می باشد.</td></tr><tr><td class="ltr"><code>BINARY(M)</code></td><td class="ltr" nowrap="nowrap"><code>0 <= M <= 255</code></td><td> M بایت</td></tr><tr><td class="ltr"><code>VARCHAR(M)</code></td><td class="ltr" nowrap="nowrap"><code>0 <= M <= 65532</code></td><td> <code>L + 1</code> بایت اگر داده مورد نظر کمتر از ۲۵۵ بایت نیاز داشته باشد.<br /> <code>L + 2</code> بایت اگر داده مورد نظر بیشتر از ۲۵۵ بایت نیاز داشته باشد.</td></tr><tr><td class="ltr"><code>VARBINARY(M)</code></td><td class="ltr" nowrap="nowrap"><code>0 <= M <= 65532</code></td><td> <code>M + 1</code> بایت اگر داده مورد نظر کمتر از ۲۵۵ بایت نیاز داشته باشد.<br /> <code>M + 2</code> بایت اگر داده مورد نظر بیشتر از ۲۵۵ بایت نیاز داشته باشد.</td></tr><tr><td class="ltr"><code>TINYBLOB</code></td><td class="ltr"><code>L < 2<sup>8</sup></code></td><td><code>L + 1</code> بایت</td></tr><tr><td class="ltr"><code>TINYTEXT</code></td><td class="ltr"><code>L < 2<sup>8</sup></code></td><td><code>L + 1</code> بایت</td></tr><tr><td class="ltr"><code>BLOB</code></td><td class="ltr"><code>L < 2<sup>16</sup></code></td><td><code>L + 2</code> بایت</td></tr><tr><td class="ltr"><code>TEXT</code></td><td class="ltr"><code>L < 2<sup>16</sup></code></td><td><code>L + 2</code> بایت</td></tr><tr><td class="ltr"><code>MEDIUMBLOB</code></td><td class="ltr"><code>L < 2<sup>24</sup></code></td><td><code>L + 3</code> بایت</td></tr><tr><td class="ltr"><code>MEDIUMTEXT</code></td><td class="ltr"><code>L < 2<sup>24</sup></code></td><td><code>L + 3</code> بایت</td></tr><tr><td class="ltr"><code>LONGBLOB</code></td><td class="ltr"><code>L < 2<sup>32</sup></code></td><td><code>L + 4</code> بایت</td></tr><tr><td class="ltr"><code>LONGTEXT</code></td><td class="ltr"><code>L < 2<sup>32</sup></code></td><td><code>L + 4</code> بایت</td></tr><tr><td class="ltr"><code>ENUM('v1','v2',...)</code></td><td>حداکثر ۶۵,۵۳۵ عضو</td><td>۱ یا ۲ بایت.<br /> وابسته به مقدار داده.</td></tr><tr><td class="ltr"><code>SET('v1','v2',...)</code></td><td>حداکثر ۶۴ عضو</td><td>۱، ۲، ۳، ۴ یا ۸ بایت<br /> وابسته به مجموعه داده شده.</td></tr></tbody></table><h4>نوع داده CHAR و VARCHAR</h4><p>CHAR و VARCHAR بسیار شبیه به هم هستند. مهم‌ترین تفاوتی که بین CHAR و VARCHAR وجود دارد نحوه ذخیره سازی و بازیابی اطلاعات است. هنگام تعریف این نوع داده‌ها شما حداکثر تعداد کاراکتری را که می خواهید ذخیره شود را مشخص می نمایید. به عنوان مثال <code>CHAR(30)</code> برای ذخیره حداکثر ۳۰ کاراکتر تعریف می شود.<br /> طول ستونی که از نوع CHAR باشد ثابت است. در صورتی که طول داده کمتر از طول تعریف شده باشد، فضای باقیمانده با فاصله <code>(space)</code> از راست پر می‌شود. هنگام بازیابی اطلاعات این فضای خالی قبل از نمایش حذف می‌شود مگر اینکه حالت <a href="http://dev.mysql.com/doc/refman/5.6/en/server-sql-mode.html#sqlmode_pad_char_to_full_length" title="PAD_CHAR_TO_FULL_LENGTH " target="_blank">PAD_CHAR_TO_FULL_LENGTH</a> فعال شده باشد.<br /> در نوع داده VARCHAR طول داده ذخیره شده به اندازه مقدار داده وارد شده می باشد. به عنوان مثال اگر ستونی به صورت <code>VARCHAR(100)</code> تعریف شده باشد ولی طول رشته داده شده 50 کاراکتر باشد، فقط به مقدار بایت زیر فضا لازم است.<br /> <code></p><div style="text-align:right; direction:rtl; border:1px dashed #333; padding: 0 5px;"> (50 * فضای لازم برای ذخیره هر کاراکتر) + 2</div><p></code><br /> در صورتی که در تعریف <code>VARCHAR(M)</code> مقدار M بیشتر از ۶۵,۵۳۵ باشد، MySQL به طور خودکار نوع ستون را از <code>VARCHAR</code> به نوع مناسبی مانند <code>MEDIUMTEXT</code> تغییر می دهد.</p><p>جدول زیر تفاوت‌های فضای مورد نیاز برای ذخیره اطلاعات را در CHAR و VARCHAR نمایش می دهد. دقت کنید که در جدول زیر Character Set  داده مورد نظر تک بایتی مانند latin1 است.</p><table class="info" cellpadding=0 cellspacing=0><caption>بررسی تفاوت فضای مورد نیاز برای <code>CHAR(4)</code> و <code>VARCHAR(4)</code></caption><col><colgroup span="2" style="background-color:#ffc;"></colgroup><colgroup span="2" style="background-color:#cfc;"></colgroup><thead><tr><th>داده</th><th class="ltr"><code>CHAR(4)</code></th><th>فضای مورد نیاز</th><th class="ltr"><code>VARCHAR(4)</code></th><th>فضای مورد نیاز</th></tr></thead><tbody><tr><td class="ltr"><code>''</code></td><td class="ltr"><code>'&nbsp;&nbsp;&nbsp;&nbsp;'</code></td><td>۴ بایت</td><td class="ltr"><code>''</code></td><td>۱ بایت</td></tr><tr><td class="ltr"><code>'ab'</code></td><td class="ltr"><code>'ab&nbsp;&nbsp;'</code></td><td>۴ بایت</td><td class="ltr"><code>'ab'</code></td><td>۳ بایت</td></tr><tr><td class="ltr"><code>'abcd'</code></td><td class="ltr"><code>'abcd'</code></td><td>۴ بایت</td><td class="ltr"><code>'abcd'</code></td><td>۵ بایت</td></tr><tr><td class="ltr"><code>'abcdefgh'</code></td><td class="ltr"><code>'abcd'</code></td><td>۴ بایت</td><td class="ltr"><code>'abcd'</code></td><td>۵ بایت</td></tr></tbody></table><h4>نوع داده BINARY و VARBINARY</h4><p>این نوع داده ها مانند CHAR و VARCHAR می باشند فقط با این تفاوت که در این نوع داده‌ها رشته‌های باینری (صفر و یک) ذخیره می شود. در نتیجه Character set برای این نوع داده‌ها معنی ندارد. از طرفی مرتب‌سازی و مقایسه بر اساس مقدار عددی رشته باینری ذخیره شده می باشد.</p><h4>نوع داده BLOB و TEXT</h4><p>این نوع داده‌ها مانند BINARY و VARBINARY می باشند. هر کدام از این داده‌ها دارای ۴ نوع می‌باشند که تنها تفاوت آن‌ها در حداکثر طول داده قابل ذخیره شدن است.</p><h4>نوع داده ENUM</h4><p>این نوع داده فقط امکان ذخیره سازی رشته ای را می دهد که از مجموعه تعریف شده باشد. این مجموعه هنگام ساخت جدول تعریف می شود. مانند جدول زیر:</p><pre class="brush: sql; title: ; notranslate">
CREATE TABLE sizes (
    name ENUM('small', 'medium', 'large')
);
</pre><p>در ستون name در جدول بالا فقط می توانید یکی از مقادیر small، medium یا large را ذخیره نمایید. در صورتی که مقداری خارج از مجموعه وارد مجموعه شود، فضای خالی در name ذخیره می شود، نه مقدار وارد شده.</p><h4>نوع داده SET</h4><p>این نوع داده مانند ENUM می باشد، با این تفاوت که شما می توانید چند عضو از مجموعه تعریف شده را انتخاب نمایید. توجه نمایید که یا داده‌های تکراری قبل از ذخیره سازی حذف می شوند. به مثال زیر توجه فرمایید:</p><pre class="brush: sql; title: ; notranslate">
mysql&gt; CREATE TABLE myset (col SET('a', 'b', 'c', 'd'));
Query OK, 0 rows affected (0.05 sec)

mysql&gt; INSERT INTO myset (col) VALUES  ('a,d'), ('d,a'), ('a,d,a'), ('a,d,d'), ('d,a,d');
Query OK, 5 rows affected (0.00 sec)
Records: 5  Duplicates: 0  Warnings: 0

mysql&gt; SELECT col FROM myset;
+------+
| col  |
+------+
| a,d  |
| a,d  |
| a,d  |
| a,d  |
| a,d  |
+------+
5 rows in set (0.00 sec)
</pre><p>از قراردادن فاصله قبل و یا بعد ',' جدا خوددداری نمایید.</p><h3>چطور نوع داده مناسب را انتخاب نماییم؟</h3><p>قبل از هر چیز بازه‌ی مورد نیاز برای داده خود را معین نمایید. سپس مختصرترین نوع داده را برای ستون خود انتخاب نمایید. به عنوان مثال برای بازه اعداد ۰ تا ۹۹۹۹۹ نوع <code>MEDIUMINT UNSIGNED</code> بهترین گزینه است.<br /> مورد دیگر انتخاب نوع ستون مناسب با داده شما است. به عنوان مثال هرگز تاریخ شمسی را در پایگاه داده در ستونی از نوع رشته (مانند <code>CHAR</code>) ذخیره ننمایید. بهترین گزینه تبدیل تاریخ به تاریخ میلای و ذخیره آن در داده‌ای از نوع <code>DATE</code> است.<br /> در هنگام تعریف ستونی برای داده‌های عددی در صورتی که فقط اعداد مثبت را لازم دارید، ستون خود را از نوع UNSIGNED انتخاب نموده و حداقل بازه را انتخاب نمایید. به عنوان مثال اگر ستون عددی شما کلید اصلی و افزایشی خودکار است (PRIMAY KEY and AUTO_INCREMENT) حتما نوع داده خود را UNSIGNED انتخاب نمایید تا حداکثر مقدار کلید اصلی دو برابر شود. نوع INTEGER SIGNED حداکثر عدد 2147483648 (حدود ۲ میلیارد) و INTEGER UNSIGNED حداکثر عدد 4294967295 (حدود ۴ میلیارد) را پشتیبانی می کند.</p><p>روش دیگر استفاده از <code>PROCEDURE ANALYSE</code> به منظور دریافت پیشنهاد خود پایگاه داده است. <code>PROCEDURE ANALYSE</code> با توجه به داده‌های فعلی، پیشنهاد خود را برای بهینه کردن نوع داده ارائه می دهد. در نظر داشته باشید که هر چه تعداد داده فعلی شما بیشتر باشد، <code>PROCEDURE ANALYSE</code> پیشنهاد بهتر و دقیق‌تری می دهد. نحوه استفاده از <code>PROCEDURE ANALYSE</code> بسیار ساده است. نحوه نگارش آن به صورت زیر است:</p><pre class="brush: sql; title: ; notranslate">
mysql&gt; SELECT ... FROM ... WHERE ... PROCEDURE ANALYSE([max_elements,[max_memory]]);
</pre><p>مانند:</p><pre class="brush: sql; title: ; notranslate">
SELECT col1, col2 FROM table1 PROCEDURE ANALYSE(10, 2000);
</pre><p>یا</p><pre class="brush: sql; title: ; notranslate">
SELECT * FROM table1 PROCEDURE ANALYSE() \G
</pre><h3>اسامی مشابه</h3><p>در پایگاه داده MySQL برخی از انواع داده‌ها با نام‌های مشابه دیگری نیز قابل دسترسی می باشند. یکی از دلایل این کار پیاده سازی راحت‌تر SQL های پایگاه‌های داده‌ی دیگر است. در زیر این اسامی را مشاهده می نمایید.</p><table class="info" cellpadding=0 cellspacing=0><caption>اسامی مشابه برای نوع داده‌ها در MySQL</caption><thead><tr><th>نوع داده</th><th>اسم مشابه</th></tr></thead><tbody><tr><td class="ltr">INTEGER</td><td class="ltr">INT</td></tr><tr><td class="ltr">DECIMAL</td><td class="ltr">DEC</td></tr><tr><td class="ltr">DECIMAL</td><td class="ltr">FIXED</td></tr><tr><td class="ltr">DECIMAL</td><td class="ltr">NUMERIC</td></tr><tr><td class="ltr">DOUBLE</td><td class="ltr">REAL</td></tr></tr><tr><td class="ltr">TINYINT</td><td class="ltr">BOOLEAN</td></tr><tr><td class="ltr">TINYINT</td><td class="ltr">BOOL</td></tr><tr><td class="ltr">VARCHAR(M)</td><td class="ltr">CHARACTER VARYING(M)</td></tr><tr><td class="ltr">FLOAT</td><td class="ltr">FLOAT4</td></tr><tr><td class="ltr">DOUBLE</td><td class="ltr">FLOAT8</td></tr><tr><td class="ltr">TINYINT</td><td class="ltr">INT1</td></tr><tr><td class="ltr">SMALLINT</td><td class="ltr">INT2</td></tr><tr><td class="ltr">MEDIUMINT</td><td class="ltr">INT3</td></tr><tr><td class="ltr">INT</td><td class="ltr">INT4</td></tr><tr><td class="ltr">BIGINT</td><td class="ltr">INT8</td></tr><tr><td class="ltr">MEDIUMBLOB</td><td class="ltr">LONG VARBINARY</td></tr><tr><td class="ltr">MEDIUMTEXT</td><td class="ltr">LONG VARCHAR</td></tr><tr><td class="ltr">MEDIUMTEXT</td><td class="ltr">LONG</td></tr><tr><td class="ltr">MEDIUMINT</td><td class="ltr">MIDDLEINT</td></tr></tbody></table><p><strong>منابع</strong></p><ul><li><a href="http://dev.mysql.com/doc/" title="MySQL Reference Manual" target="_blank">MySQL Reference Manual</a></li></ul><p>شاد و موفق باشید <img src='http://zebardast.ir/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p><div style="float:left; text-align:left;><img alt='' src='http://1.gravatar.com/avatar/9fb25dddd365836466bd8051be993fa8?s=100&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D100&amp;r=G' class='avatar avatar-100 photo' height='100' width='100' /></div><h3>درباره <a href="http://zebardast.ir/author/admin/" title="سعید زبردست">سعید زبردست</a></h3><p>من برنامه نویس Java و PHP هستم. در کنار برنامه نویسی اطلاعات خوبی در زمینه پایگاه ‌های داده بخصوص MySQL دارم. برای اطلاع بیشتر به صفحه <a href="http://zebardast.ir/about">درباره سعید زبردست</a> مراجعه کنید.</p><small><a href="mailto:&#115;aeid&#64;zeba&#114;&#100;ast&#46;&#105;&#114;" title="Send سعید زبردست Mail">Mail</a> | <a href="http://zebardast.ir" title="سعید زبردست On The Web">Web</a> | <a href="https://twitter.com/#!/saeid" title="سعید زبردست On Twitter">Twitter</a> | <a href="https://www.facebook.com/saeid.zebardast" title="سعید زبردست On Facebook">Facebook</a> | <a href="http://www.linkedin.com/in/saeid" title="سعید زبردست On LinkedIn">LinkedIn</a> | <a href="https://profiles.google.com/saeid.zebardast" title="سعید زبردست On Google+">Google+</a> | <a href="http://zebardast.ir/author/admin/" title="More Posts By سعید زبردست">More Posts (278)</a></small></p><p><a class="a2a_button_google_plus" href="http://www.addtoany.com/add_to/google_plus?linkurl=http%3A%2F%2Fzebardast.ir%2F%25d8%25a7%25d9%2586%25d9%2588%25d8%25a7%25d8%25b9-%25d8%25af%25d8%25a7%25d8%25af%25d9%2587-%25d9%2587%25d8%25a7-%25d8%25af%25d8%25b1-%25d9%25be%25d8%25a7%25db%258c%25da%25af%25d8%25a7%25d9%2587-%25d8%25af%25d8%25a7%25d8%25af%25d9%2587-mysql%2F&amp;linkname=%D8%A7%D9%86%D9%88%D8%A7%D8%B9%20%D8%AF%D8%A7%D8%AF%D9%87%20%D8%AF%D8%B1%20MySQL" title="Google+" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/google_plus.png" width="16" height="16" alt="Google+"/></a><a class="a2a_button_facebook" href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fzebardast.ir%2F%25d8%25a7%25d9%2586%25d9%2588%25d8%25a7%25d8%25b9-%25d8%25af%25d8%25a7%25d8%25af%25d9%2587-%25d9%2587%25d8%25a7-%25d8%25af%25d8%25b1-%25d9%25be%25d8%25a7%25db%258c%25da%25af%25d8%25a7%25d9%2587-%25d8%25af%25d8%25a7%25d8%25af%25d9%2587-mysql%2F&amp;linkname=%D8%A7%D9%86%D9%88%D8%A7%D8%B9%20%D8%AF%D8%A7%D8%AF%D9%87%20%D8%AF%D8%B1%20MySQL" title="Facebook" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fzebardast.ir%2F%25d8%25a7%25d9%2586%25d9%2588%25d8%25a7%25d8%25b9-%25d8%25af%25d8%25a7%25d8%25af%25d9%2587-%25d9%2587%25d8%25a7-%25d8%25af%25d8%25b1-%25d9%25be%25d8%25a7%25db%258c%25da%25af%25d8%25a7%25d9%2587-%25d8%25af%25d8%25a7%25d8%25af%25d9%2587-mysql%2F&amp;linkname=%D8%A7%D9%86%D9%88%D8%A7%D8%B9%20%D8%AF%D8%A7%D8%AF%D9%87%20%D8%AF%D8%B1%20MySQL" title="Twitter" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_identi_ca" href="http://www.addtoany.com/add_to/identi_ca?linkurl=http%3A%2F%2Fzebardast.ir%2F%25d8%25a7%25d9%2586%25d9%2588%25d8%25a7%25d8%25b9-%25d8%25af%25d8%25a7%25d8%25af%25d9%2587-%25d9%2587%25d8%25a7-%25d8%25af%25d8%25b1-%25d9%25be%25d8%25a7%25db%258c%25da%25af%25d8%25a7%25d9%2587-%25d8%25af%25d8%25a7%25d8%25af%25d9%2587-mysql%2F&amp;linkname=%D8%A7%D9%86%D9%88%D8%A7%D8%B9%20%D8%AF%D8%A7%D8%AF%D9%87%20%D8%AF%D8%B1%20MySQL" title="Identi.ca" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/identica.png" width="16" height="16" alt="Identi.ca"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fzebardast.ir%2F%25d8%25a7%25d9%2586%25d9%2588%25d8%25a7%25d8%25b9-%25d8%25af%25d8%25a7%25d8%25af%25d9%2587-%25d9%2587%25d8%25a7-%25d8%25af%25d8%25b1-%25d9%25be%25d8%25a7%25db%258c%25da%25af%25d8%25a7%25d9%2587-%25d8%25af%25d8%25a7%25d8%25af%25d9%2587-mysql%2F&amp;title=%D8%A7%D9%86%D9%88%D8%A7%D8%B9%20%D8%AF%D8%A7%D8%AF%D9%87%20%D8%AF%D8%B1%20MySQL" id="wpa2a_12">اشتراک‌گذاری</a></p><p><strong>مطالب مرتبط:</strong><ol><li><a href='http://zebardast.ir/%d9%88%d8%a7%d8%b1%d8%af-%da%a9%d8%b1%d8%af%d9%86-%d8%a7%d8%b7%d9%84%d8%a7%d8%b9%d8%a7%d8%aa-%d8%a7%d8%b2-%d9%81%d8%a7%db%8c%d9%84-%d8%a8%d9%87-mysql/' rel='bookmark' title='وارد کردن اطلاعات از فایل به پایگاه داده MySQL'>وارد کردن اطلاعات از فایل به پایگاه داده MySQL</a></li><li><a href='http://zebardast.ir/%d9%86%da%a9%d8%a7%d8%aa%db%8c-%d8%af%d8%b1-%d8%b2%d9%85%db%8c%d9%86%d9%87-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-%d8%a7%d8%b2-%d9%be%d8%a7%db%8c%da%af%d8%a7%d9%87-%d8%af%d8%a7%d8%af%d9%87-mysql/' rel='bookmark' title='نکاتی در زمینه استفاده راحت تر از پایگاه داده MySQL'>نکاتی در زمینه استفاده راحت تر از پایگاه داده MySQL</a></li><li><a href='http://zebardast.ir/%d8%a8%d8%a7%d8%b2%db%8c%d8%a7%d8%a8%db%8c-%d8%af%d8%a7%d8%af%d9%87-%d8%a7%d8%b2-%d9%be%d8%a7%db%8c%da%af%d8%a7%d9%87-%d8%af%d8%a7%d8%af%d9%87-mysql-%d9%82%d8%b3%d9%85%d8%aa-%d8%a7%d9%88%d9%84/' rel='bookmark' title='بازیابی داده از پایگاه داده MySQL &#8211; قسمت اول'>بازیابی داده از پایگاه داده MySQL &#8211; قسمت اول</a></li></ol></p>]]></content:encoded> <wfw:commentRss>http://zebardast.ir/%d8%a7%d9%86%d9%88%d8%a7%d8%b9-%d8%af%d8%a7%d8%af%d9%87-%d9%87%d8%a7-%d8%af%d8%b1-%d9%be%d8%a7%db%8c%da%af%d8%a7%d9%87-%d8%af%d8%a7%d8%af%d9%87-mysql/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>کتاب باشگاه مشت زنی (Fight Club) منتشر شد</title><link>http://zebardast.ir/%da%a9%d8%aa%d8%a7%d8%a8-%d8%a8%d8%a7%d8%b4%da%af%d8%a7%d9%87-%d9%85%d8%b4%d8%aa-%d8%b2%d9%86%db%8c-fight-club-%d9%85%d9%86%d8%aa%d8%b4%d8%b1-%d8%b4%d8%af/</link> <comments>http://zebardast.ir/%da%a9%d8%aa%d8%a7%d8%a8-%d8%a8%d8%a7%d8%b4%da%af%d8%a7%d9%87-%d9%85%d8%b4%d8%aa-%d8%b2%d9%86%db%8c-fight-club-%d9%85%d9%86%d8%aa%d8%b4%d8%b1-%d8%b4%d8%af/#comments</comments> <pubDate>Wed, 09 Nov 2011 17:35:05 +0000</pubDate> <dc:creator>سعید زبردست</dc:creator> <category><![CDATA[کتاب]]></category> <category><![CDATA[معرفی کتاب]]></category><guid isPermaLink="false">http://zebardast.ir/?p=1531</guid> <description><![CDATA[— کتاب باشگاه مشت زنی کتاب باشگاه مشت زنی که فیلم Fight Club بر اساس آن ساخته شده است، با ترجمه فارسی منتشر شد. اولین قانون: اعضا حق ندارند دربارهٔ باشگاه مبارزه با کسی صحبت کنند. دومین قانون: اعضا حق ندارند دربارهٔ باشگاه مبارزه با کسی صحبت کنند. &#8230; .. . اگر در مورد باشگاه [...] <strong>مطالب مرتبط:</strong><ol><li><a href='http://zebardast.ir/%d9%85%d8%b9%d8%b1%d9%81%db%8c-%da%a9%d8%aa%d8%a7%d8%a8-%d8%ae%d9%84%d8%a7%d8%b5%d9%87-50-%da%a9%d8%aa%d8%a7%d8%a8-%d8%a8%d8%b1%d8%aa%d8%b1-%d8%ae%d9%88%d8%af%db%8c%d8%a7%d8%b1%db%8c/' rel='bookmark' title='معرفی کتاب: خلاصه ۵۰ کتاب برتر در زمینه خودیاری'>معرفی کتاب: خلاصه ۵۰ کتاب برتر در زمینه خودیاری</a></li><li><a href='http://zebardast.ir/%d9%85%d8%b9%d8%b1%d9%81%db%8c-%da%a9%d8%aa%d8%a7%d8%a8-%d8%a7%d9%86%d8%b3%d8%a7%d9%86-%d8%af%d8%b1-%d8%ac%d8%b3%d8%aa%d8%ac%d9%88%db%8c-%d9%85%d8%b9%d9%86%db%8c/' rel='bookmark' title='معرفی کتاب: انسان در جستجوی معنی'>معرفی کتاب: انسان در جستجوی معنی</a></li><li><a href='http://zebardast.ir/%da%a9%d8%aa%d8%a7%d8%a8-%d8%a7%d9%84%da%a9%d8%aa%d8%b1%d9%88%d9%86%db%8c%da%a9%db%8c-php/' rel='bookmark' title='کتاب الکترونیکی معرفی PHP به زبان فارسی'>کتاب الکترونیکی معرفی PHP به زبان فارسی</a></li></ol>]]></description> <content:encoded><![CDATA[<div class="autocap aligncenter" style="width: 410px;"><div><img src="http://zebardast.ir/wp-content/uploads/2011/11/کتاب-باشگاه-مشت-زنی.jpg" alt="" title="کتاب باشگاه مشت زنی" width="410" height="612" class=" size-full wp-image-1532" /><p class="autocap-text"><span class="hide">— </span>کتاب باشگاه مشت زنی</p></div></div><p>کتاب باشگاه مشت زنی که فیلم Fight Club  بر اساس آن ساخته شده است، با ترجمه فارسی منتشر شد.<br /> <strong>اولین قانون</strong>: اعضا حق ندارند دربارهٔ باشگاه مبارزه با کسی صحبت کنند.<br /> <strong>دومین قانون</strong>: اعضا حق ندارند دربارهٔ باشگاه مبارزه با کسی صحبت کنند.<br /> &#8230;<br /> ..<br /> .</p><p>اگر در مورد باشگاه مشت زنی چیزی نمی دانید ویا می خواهید بیشتر بدانید پیوندهای زیر را دنبال کنید:<br /> • <a href="http://fa.wikipedia.org/wiki/%D8%A8%D8%A7%D8%B4%DA%AF%D8%A7%D9%87_%D9%85%D8%A8%D8%A7%D8%B1%D8%B2%D9%87" target="_blank">باشگاه مبارزه</a> (ویکی پدیا)<br /> • <a href="http://cheshmeh.ir/book/view.aspx?guid=0320b756-d2c3-4a2b-80b2-f41f6e0818e9" target="_blank">باشگاه مشت‌زنی</a> (نشر چشمه)<br /> • <a href="http://fa.wikiquote.org/wiki/%D8%A8%D8%A7%D8%B4%DA%AF%D8%A7%D9%87_%D9%85%D8%B4%D8%AA%E2%80%8C%D8%B2%D9%86%DB%8C_%28%D9%81%DB%8C%D9%84%D9%85%29" target="_blank">باشگاه مشت‌زنی (فیلم)</a> (در ویکی گفتار)<br /> • <a href="http://www.goodreads.com/book/show/5759.Fight_Club" target="_blank">Fight Club</a> (در جامعه کتاب خوانان Goodreads)</p><p><strong>سپاسگزاری</strong><br /> ممنون از:<br /> * <a href="http://chuckpalahniuk.net/" target="_blank">چاک پالانیک</a> به خاطر باشگاه مشت زنی<br /> * <a href="https://www.facebook.com/people/Peyman-Khaksar/1365442773" target="_blank">پیمان خاکسار</a> برای ترجمه این رمان<br /> * <a href="http://cheshmeh.ir/book/view.aspx?guid=0320b756-d2c3-4a2b-80b2-f41f6e0818e9" target="_blank">نشر چشمه</a> بابت انتشار این کتاب<br /> * <a href="http://hjavani.persianblog.ir/post/159/" target="_blank">لبوفسکی بزرگ</a> برای اطلاع رسانی به موقع <img src='http://zebardast.ir/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p><p><div style="float:left; text-align:left;><img alt='' src='http://1.gravatar.com/avatar/9fb25dddd365836466bd8051be993fa8?s=100&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D100&amp;r=G' class='avatar avatar-100 photo' height='100' width='100' /></div><h3>درباره <a href="http://zebardast.ir/author/admin/" title="سعید زبردست">سعید زبردست</a></h3><p>من برنامه نویس Java و PHP هستم. در کنار برنامه نویسی اطلاعات خوبی در زمینه پایگاه ‌های داده بخصوص MySQL دارم. برای اطلاع بیشتر به صفحه <a href="http://zebardast.ir/about">درباره سعید زبردست</a> مراجعه کنید.</p><small><a href="mailto:sa&#101;&#105;&#100;&#64;&#122;eba&#114;d&#97;&#115;t.i&#114;" title="Send سعید زبردست Mail">Mail</a> | <a href="http://zebardast.ir" title="سعید زبردست On The Web">Web</a> | <a href="https://twitter.com/#!/saeid" title="سعید زبردست On Twitter">Twitter</a> | <a href="https://www.facebook.com/saeid.zebardast" title="سعید زبردست On Facebook">Facebook</a> | <a href="http://www.linkedin.com/in/saeid" title="سعید زبردست On LinkedIn">LinkedIn</a> | <a href="https://profiles.google.com/saeid.zebardast" title="سعید زبردست On Google+">Google+</a> | <a href="http://zebardast.ir/author/admin/" title="More Posts By سعید زبردست">More Posts (278)</a></small></p><p><a class="a2a_button_google_plus" href="http://www.addtoany.com/add_to/google_plus?linkurl=http%3A%2F%2Fzebardast.ir%2F%25da%25a9%25d8%25aa%25d8%25a7%25d8%25a8-%25d8%25a8%25d8%25a7%25d8%25b4%25da%25af%25d8%25a7%25d9%2587-%25d9%2585%25d8%25b4%25d8%25aa-%25d8%25b2%25d9%2586%25db%258c-fight-club-%25d9%2585%25d9%2586%25d8%25aa%25d8%25b4%25d8%25b1-%25d8%25b4%25d8%25af%2F&amp;linkname=%DA%A9%D8%AA%D8%A7%D8%A8%20%D8%A8%D8%A7%D8%B4%DA%AF%D8%A7%D9%87%20%D9%85%D8%B4%D8%AA%20%D8%B2%D9%86%DB%8C%20%28Fight%20Club%29%20%D9%85%D9%86%D8%AA%D8%B4%D8%B1%20%D8%B4%D8%AF" title="Google+" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/google_plus.png" width="16" height="16" alt="Google+"/></a><a class="a2a_button_facebook" href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fzebardast.ir%2F%25da%25a9%25d8%25aa%25d8%25a7%25d8%25a8-%25d8%25a8%25d8%25a7%25d8%25b4%25da%25af%25d8%25a7%25d9%2587-%25d9%2585%25d8%25b4%25d8%25aa-%25d8%25b2%25d9%2586%25db%258c-fight-club-%25d9%2585%25d9%2586%25d8%25aa%25d8%25b4%25d8%25b1-%25d8%25b4%25d8%25af%2F&amp;linkname=%DA%A9%D8%AA%D8%A7%D8%A8%20%D8%A8%D8%A7%D8%B4%DA%AF%D8%A7%D9%87%20%D9%85%D8%B4%D8%AA%20%D8%B2%D9%86%DB%8C%20%28Fight%20Club%29%20%D9%85%D9%86%D8%AA%D8%B4%D8%B1%20%D8%B4%D8%AF" title="Facebook" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fzebardast.ir%2F%25da%25a9%25d8%25aa%25d8%25a7%25d8%25a8-%25d8%25a8%25d8%25a7%25d8%25b4%25da%25af%25d8%25a7%25d9%2587-%25d9%2585%25d8%25b4%25d8%25aa-%25d8%25b2%25d9%2586%25db%258c-fight-club-%25d9%2585%25d9%2586%25d8%25aa%25d8%25b4%25d8%25b1-%25d8%25b4%25d8%25af%2F&amp;linkname=%DA%A9%D8%AA%D8%A7%D8%A8%20%D8%A8%D8%A7%D8%B4%DA%AF%D8%A7%D9%87%20%D9%85%D8%B4%D8%AA%20%D8%B2%D9%86%DB%8C%20%28Fight%20Club%29%20%D9%85%D9%86%D8%AA%D8%B4%D8%B1%20%D8%B4%D8%AF" title="Twitter" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_identi_ca" href="http://www.addtoany.com/add_to/identi_ca?linkurl=http%3A%2F%2Fzebardast.ir%2F%25da%25a9%25d8%25aa%25d8%25a7%25d8%25a8-%25d8%25a8%25d8%25a7%25d8%25b4%25da%25af%25d8%25a7%25d9%2587-%25d9%2585%25d8%25b4%25d8%25aa-%25d8%25b2%25d9%2586%25db%258c-fight-club-%25d9%2585%25d9%2586%25d8%25aa%25d8%25b4%25d8%25b1-%25d8%25b4%25d8%25af%2F&amp;linkname=%DA%A9%D8%AA%D8%A7%D8%A8%20%D8%A8%D8%A7%D8%B4%DA%AF%D8%A7%D9%87%20%D9%85%D8%B4%D8%AA%20%D8%B2%D9%86%DB%8C%20%28Fight%20Club%29%20%D9%85%D9%86%D8%AA%D8%B4%D8%B1%20%D8%B4%D8%AF" title="Identi.ca" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/identica.png" width="16" height="16" alt="Identi.ca"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fzebardast.ir%2F%25da%25a9%25d8%25aa%25d8%25a7%25d8%25a8-%25d8%25a8%25d8%25a7%25d8%25b4%25da%25af%25d8%25a7%25d9%2587-%25d9%2585%25d8%25b4%25d8%25aa-%25d8%25b2%25d9%2586%25db%258c-fight-club-%25d9%2585%25d9%2586%25d8%25aa%25d8%25b4%25d8%25b1-%25d8%25b4%25d8%25af%2F&amp;title=%DA%A9%D8%AA%D8%A7%D8%A8%20%D8%A8%D8%A7%D8%B4%DA%AF%D8%A7%D9%87%20%D9%85%D8%B4%D8%AA%20%D8%B2%D9%86%DB%8C%20%28Fight%20Club%29%20%D9%85%D9%86%D8%AA%D8%B4%D8%B1%20%D8%B4%D8%AF" id="wpa2a_14">اشتراک‌گذاری</a></p><p><strong>مطالب مرتبط:</strong><ol><li><a href='http://zebardast.ir/%d9%85%d8%b9%d8%b1%d9%81%db%8c-%da%a9%d8%aa%d8%a7%d8%a8-%d8%ae%d9%84%d8%a7%d8%b5%d9%87-50-%da%a9%d8%aa%d8%a7%d8%a8-%d8%a8%d8%b1%d8%aa%d8%b1-%d8%ae%d9%88%d8%af%db%8c%d8%a7%d8%b1%db%8c/' rel='bookmark' title='معرفی کتاب: خلاصه ۵۰ کتاب برتر در زمینه خودیاری'>معرفی کتاب: خلاصه ۵۰ کتاب برتر در زمینه خودیاری</a></li><li><a href='http://zebardast.ir/%d9%85%d8%b9%d8%b1%d9%81%db%8c-%da%a9%d8%aa%d8%a7%d8%a8-%d8%a7%d9%86%d8%b3%d8%a7%d9%86-%d8%af%d8%b1-%d8%ac%d8%b3%d8%aa%d8%ac%d9%88%db%8c-%d9%85%d8%b9%d9%86%db%8c/' rel='bookmark' title='معرفی کتاب: انسان در جستجوی معنی'>معرفی کتاب: انسان در جستجوی معنی</a></li><li><a href='http://zebardast.ir/%da%a9%d8%aa%d8%a7%d8%a8-%d8%a7%d9%84%da%a9%d8%aa%d8%b1%d9%88%d9%86%db%8c%da%a9%db%8c-php/' rel='bookmark' title='کتاب الکترونیکی معرفی PHP به زبان فارسی'>کتاب الکترونیکی معرفی PHP به زبان فارسی</a></li></ol></p>]]></content:encoded> <wfw:commentRss>http://zebardast.ir/%da%a9%d8%aa%d8%a7%d8%a8-%d8%a8%d8%a7%d8%b4%da%af%d8%a7%d9%87-%d9%85%d8%b4%d8%aa-%d8%b2%d9%86%db%8c-fight-club-%d9%85%d9%86%d8%aa%d8%b4%d8%b1-%d8%b4%d8%af/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>مدل های درآمدزایی نرم افزارهای آزاد، کنفرانس زنجان</title><link>http://zebardast.ir/%d9%85%d8%af%d9%84-%d9%87%d8%a7%db%8c-%d8%af%d8%b1%d8%a2%d9%85%d8%af%d8%b2%d8%a7%db%8c%db%8c-%d9%86%d8%b1%d9%85-%d8%a7%d9%81%d8%b2%d8%a7%d8%b1%d9%87%d8%a7%db%8c-%d8%a2%d8%b2%d8%a7%d8%af/</link> <comments>http://zebardast.ir/%d9%85%d8%af%d9%84-%d9%87%d8%a7%db%8c-%d8%af%d8%b1%d8%a2%d9%85%d8%af%d8%b2%d8%a7%db%8c%db%8c-%d9%86%d8%b1%d9%85-%d8%a7%d9%81%d8%b2%d8%a7%d8%b1%d9%87%d8%a7%db%8c-%d8%a2%d8%b2%d8%a7%d8%af/#comments</comments> <pubDate>Sat, 10 Sep 2011 08:02:08 +0000</pubDate> <dc:creator>سعید زبردست</dc:creator> <category><![CDATA[اجتماعی و فرهنگی]]></category> <category><![CDATA[اخبار]]></category> <category><![CDATA[نرم افزار آزاد و متن باز]]></category> <category><![CDATA[ارائه]]></category> <category><![CDATA[مقاله]]></category><guid isPermaLink="false">http://zebardast.ir/?p=1496</guid> <description><![CDATA[سلام دو روز گذشته، پنجشنبه و جمعه ۱۷ و ۱۸ شهریور ۹۰، دومین کنفرانس تخصصی نرم افزار های آزاد و متن باز بود. در این دو روز حدود ۲۰ مقاله ارائه شدند. با اینکه کمبودهایی در ارائه ها دیده می شد، با این حال این مراسم سطح قابل قبولی داشت. مهم ترین نکته این کنفرانس [...] <strong>مطالب مرتبط:</strong><ol><li><a href='http://zebardast.ir/%da%86%da%af%d9%88%d9%86%d9%87-%d9%86%d8%b1%d9%85-%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-%d8%a2%d8%b2%d8%a7%d8%af-%d8%b1%d8%a7-%d8%af%d8%b1%da%a9-%da%a9%d9%86%db%8c%d9%85%d8%9f/' rel='bookmark' title='چگونه نرم افزار آزاد را درک کنیم؟'>چگونه نرم افزار آزاد را درک کنیم؟</a></li><li><a href='http://zebardast.ir/%d8%ac%d8%b4%d9%86-%d8%b1%d9%88%d8%b2-%d8%a2%d8%b2%d8%a7%d8%af%db%8c-%d9%86%d8%b1%d9%85%e2%80%8c%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-%d9%88-%d9%86%d8%b5%d8%a8-%d8%a7%d9%88%d8%a8%d9%88%d9%86%d8%aa%d9%88/' rel='bookmark' title='جشن روز آزادی نرم‌افزار و نصب اوبونتو در تهران'>جشن روز آزادی نرم‌افزار و نصب اوبونتو در تهران</a></li><li><a href='http://zebardast.ir/%d9%86%d8%b1%d9%85-%d8%a7%d9%81%d8%b2%d8%a7%d8%b1%d9%87%d8%a7%db%8c-%d9%85%d8%b9%d8%a7%d8%af%d9%84-%d9%88-%d9%85%d8%b1%d8%ac%d8%b9-%d8%af%d8%b3%d8%aa%d9%88%d8%b1%d8%a7%d8%aa-%d8%ae%d8%b7-%d9%81%d8%b1/' rel='bookmark' title='بخش نرم افزارهای معادل و مرجع دستورات خط فرمان'>بخش نرم افزارهای معادل و مرجع دستورات خط فرمان</a></li></ol>]]></description> <content:encoded><![CDATA[<p><a href="http://2011.zconf.ir/"><img style="border:1px solid #eee; border-radius:3px; -moz-border-radius:3px; -webkit-border-radius:3px;" src="http://zebardast.ir/wp-content/uploads/2011/09/zconf.ir_.jpg" width="130" class="alignleft size-full wp-image-1498" /></a><br /> سلام</p><p>دو روز گذشته، پنجشنبه و جمعه ۱۷ و ۱۸ شهریور ۹۰، دومین کنفرانس تخصصی نرم افزار های آزاد و متن باز بود. در این دو روز حدود ۲۰ مقاله ارائه شدند. با اینکه کمبودهایی در ارائه ها دیده می شد، با این حال این مراسم سطح قابل قبولی داشت. مهم ترین نکته این کنفرانس همت بچه های زنجان و مسئولین فهیم این استان بود که از همه آنها بسیار بسیار تشکر می کنم.</p><p><strong>مدل های درآمدزایی نرم افزارهای آزاد</strong><br /> ارائه من در مورد مدل های تجاری و درآمدزایی نرم افزارهای آزاد بود. این ارائه به صورت کلی نحوه درآمدزادیی، تجارت و چرخه های فعال مرتبط با نرم‌افزارهای آزاد و متن باز را معرفی می کرد.<br /> در ادامه پرزنت مربوط به این ارائه را مشاهده می فرمایید. مقاله مرتبط با این ارائه نیز در انتهای همین پست منتشر شده است.</p><div style="width:580px" class="ltr" id="__ss_9200235"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/saeidzebardast/free-software-open-source-business-models" title="Free Software / Open Source Business Models" target="_blank">Free Software / Open Source Business Models</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/9200235" width="580" height="497" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></div><p><em>• ممکن است به دلیل فیلتر بودن سایت slideshare.net اسلاید در دسترس شما نباشد.</em><br /> • <a href='http://zebardast.ir/wp-content/uploads/2011/09/free-software-open-source-business-model.pdf'>دانلود نسخه PDF ارائه Free Software / Open Source Business Models </a> &#8211; 2.3 MB</p><p><strong>همایش روز آزادی نرم‌افزار اصفهان</strong><br /> <a href="http://isfahansfd.org/"><img src="http://zebardast.ir/wp-content/uploads/2011/09/2011-sfd-isf-150x200.png" width="150" height="200" class="alignright size-full wp-image-1505" /></a><br /> با نزدیک شدن به روز آزادی نرم‌افزار، مانند سال‌هالی گذشته <a href="http://isfahansfd.org/">اصفهان لاگ</a> مراسمی را برگزار خواهد کرد. به نقل از سایت اصفهان لاگ:</p><blockquote><p>هر ساله در سومین شنبه از ماه سپتامبر (شهریورماه) دوستداران و علاقه‌مندان به فلسفه نرم‌افزارهای آزاد در سرار جهان  گرد هم می‌آیند تا «روز آزادی نرم‌افزار» را گرامی بدارند. امسال نیز همچون سال‌های گذشته اعضای «گروه کاربران لینوکس اصفهان» در همایشی  این روز را گرامی داشته و پذیرای شما مهمانان ارجمند می‌باشد. هدف از این گردهمایی گسترش و ترویج نرم‌افزارهای آزاد/بازمتن می‌باشد.<br /> برای شرکت در این همایش ثبت‌‌نام الزامی است. ثبت نام رایگان می‌باشد ولی از آنجا که به علت محدودیت تنها پذیرش تعداد معدودی از دوستان امکان‌پذیر است خواهشمندیم که هر چه سریع تر ثبت‌نام فرمایید.</p></blockquote><p> زمان: پنج شنبه ۲۴ شهریور ماه ۱۳۹۰ ساعت ۱۴:۳۰<br /> مکان: اصفهان – خیابان باغ گلدسته – سالن اجتماعات کتابخانه ی مرکزی شهرداری اصفهان<br /> *خیلی دوست داشتم که برای اولین بار در این جشن باشم <img src='http://zebardast.ir/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /></p><div style="text-align: center; font-size:1.2em; margin-bottom:12px;  background:#fefefe; border:1px solid #bbb; padding:3px 10px; border-radius:3px; -moz-border-radius:3px; -webkit-border-radius:3px;"> <strong>مدل های درآمدزایی نرم افزارهای آزاد</strong></div><p><strong>مقدمه</strong><br /> با وجود اینکه امروزه نرم‌افزارهای آزاد بسیاری فراگیر شده اند، هنوز نحوه کسب درآمد این نرم‌افزارها برای بسیاری مبهم است. همیشه سؤالاتی مطرح می‌شود که پاسخ آن‌ها مفهوم نیست. چطور با نوشتن یک نرم‌افزار آزاد می‌توان کسب درآمد کرد؟ آیا امکان کسب درآمد بعد از انتشار سورس نرم‌افزار وجود دارد؟ آیا می‌توان نرم افزاری را فروخت که سورس آن برای همگان در دسترس است؟<br /> برای پاسخ به این سؤالات باید با دید وسیع‌تری به مقوله ایجاد، انتشار، توسعه و پشتیبانی نرم‌افزار نگاه کرد. کسب درآمد از طریق فروش لایسنس تنها یک روش کسب درآمد از نرم‌افزار می باشد. به طور کلی هزینه تولید، نگهداری و توسعه نرم‌افزارهای آزاد به مراتب کمتر از نرم‌افزارهای اختصاصی می باشد. توضیح بیشتر در این رابطه خود نیاز به مقاله‌ای جامع و کامل دارد.<br /> یکی از مهمترین دلایل شکل‌گیری نرم افزارهای اختصاصی (Proprietary software) بحث کسب درآمد از آن‌ها بوده است. متأسفانه بسیاری بر این باورند که در دسترسی قرار دادن کد منبع مانع از ایجاد رقابت بین شرکت های نرم افزاری می شود و با این استدلال به این نتیجه می‌رسند که نرم افزارهای  آزاد قابلیت درآمدزایی و رقابت تجاری با نرم افزارهای اختصاصی را ندارند. این درحالیست که شرکت های فعال در زمینه نرم‌افزارهای آزاد به مدل های تجاری موفقی دست پیدا کرده اند.<br /> این مقاله به تفصیل مدل های درآمدزایی نرم افزارهای آزاد را بررسی خواهد کرد.</p><p><strong>مدل های تجاری نرم افزارهای آزاد<br /> </strong>غالباً مهمترین هدف از انجام یک کار، کسب در‌آمد از آن می باشد. با توجه به در دسترس بودن کد منبع نرم‌افزارهای آزاد، نحوه کسب درآمد از آن همیشه بحث برانگیز بود است. درحال حاضر مدل های تجاری مختلفی به منظور درآمدزایی نرم‌افزارهای آزاد پیش‌بینی شده است.<br /> با درنظرگرفتن نحوه تولید نرم‌افزار آزاد، مدل های تجاری مختلفی برای آن طرح ریزی شده است. این مدل‌ها رویکردی اجباری ویا اختیاری دارند. به عنوان مثال donation یک مدل اختیاری بوده و خرید لایسنس نسخه های تجاری گنو/لینوکس مانند Red Hat Enterprise  اجباری می باشد.</p><p><strong>دو لایسنس بودن (Dual Licensing)<br /> </strong>در این مدل تجاری، سورس نرم‌افزار به صورت یکسان تحت دو لایسنس منتشر می‌شود که یکی از این لایسنس ها GPL است. دلیل استفاده از این مدل را می‌توان به کار بردن نرم‌افزارها و کدهای نرم افزاری آزاد برای ایجاد و توسعه آن دانست. در نتیجه هزینه تولید نرم‌افزار به مراتب کمتر می شود. کاهش هزینه‌ها باعث استفاده بیشتر از نرم افزارهای آزاد شده و حمایت از این‌گونه نرم‌افزارها را افزایش می دهد.<br /> نکته مثبت این مدل محفوظ ماندن سورس اصلی برنامه تحت لایسنس شرکت سازنده می باشد. با این حال نکته منفی این مدل، اجبار مشارکت کنندگان برای قبول هر دو لایسنس است که منجر به کاهش تعداد مشارکت کنندگان شده و بیشتر مشارکت ها را به رفع ایراد (Bug fixes) و تغییرات جزیی محدود می کند.<br /> به عنوان مثال شرکتی قصد تولید برنامه به منظور مدیریت پایگاه داده MySQL دارد. با توجه به لایسنس MySQL که GPL می باشد، این شرکت نیز باید نرم‌افزار خود را تحت این لایسنس منتشر نماید. در صورتی که این شرکت قصد محفوظ نگه داشتن سورس برنامه خود را داشته باشد، نیاز به استفاده از یک لایسنس اختصاصی در کنار لایسنس GPL دارد.</p><p><strong>قیمت گذاری های مختلف<br /> </strong>در این مدل یک نرم‌افزار با امکانات یکسان تحت لایسنس GPL با قیمت های مختلف ارائه می شود. به عنوان مثال برای کاربری خانگی ویا دانشگاهی به صورت رایگان عرضه می‌شود ولی برای استفاده تجاری از محصول آن را به فروش می رسانند. در این مدل هم تعداد کاربران افزایش پیدا می کند، هم فروش لایسنس تجاری باعث درآمد می‌شود و هم مشارکت کنندگان بیشتری برای توسعه نرم‌افزار جذب می شوند.</p><p><strong>نسخه های مختلف<br /> </strong>در این مدل یک نسخه رایگان که معمولاً توسط جامعه کاربری توسعه پیدا می‌کند ارائه شده و در کنار آن، نسخه‌ای تجاری تحت عنوان Enterprise فروخته می شود. نسخه رایگان که توسط جامعه کاربری توسعه پیدا می‌کند معمولاً تعداد کاربران بیشتری نسبت به نسخه تجاری دارد. تفاوت این دو نسخه در نحوه توسعه، ارائه و پشتیبانی نرم‌افزار می باشد. گاهی ممکن است که یک نرم‌افزار بیش از یک نسخه تجاری داشته باشد.</p><p><strong>فروش افزونه (plugin)<br /> </strong>بعضی از نرم افزارهای آزاد، جدا از هسته نرم‌افزار و بسته پایه آن، افزونه هایی را برای توسعه امکانات به فروش می رسانند. این مدل نسبت به مدل «نسخه های مختلف» برای فروشنده نرم‌افزار مقرون به صرفه‌تر است. زیرا مدل «نسخه های مختلف» کاربر را محدود به چند انتخاب می کند. از طرفی نگهداری چند نسخه برای توسعه‌دهنده دشوارتر است. همچنین توسعه دادن افزونه های مختلف و تولید افزونه های بیشتر با توجه به نیازهای کاربران، نسبت به توسعه نسخه های مختلف آسان‌تر است.</p><p><strong>پشتیبانی</strong><br /> برخی از شرکت ها و افراد حقیقی هزینه ای را برای پشتیبانی فعال ویا بلند مدت از نرم‌افزارهای آزاد خود و یا سایر نرم افزارهای آزاد دریافت می کنند. منظور از پشتیبانی، نصب، نگهداری، توسعه، آموزش و&#8230; نرم‌افزار آزاد می باشد. این مدل کاربرد فراوانی بخصوص برای اشخاص حقیقی توسعه‌دهنده نرم‌افزار های آزاد دارد. از طرفی هزینه پشتیبانی از نرم افزارهای آزاد غالباً کمتر از پشتیبانی نرم افزارهای تجاری است. همچنین شرکت کارفرما گزینه های حقیقی و حقوقی زیادی برای انتخاب جهت پشتیبانی نرم‌افزار مورد نظر خود دارد و محدود به انتخاب توسعه‌دهنده اصلی نیست.</p><p><strong>سفارشی سازی، تحقیق و توسعه (R&#038;D)<br /> </strong>شرکت هایی به منظور سفارشی سازی و توسعه نرم‌افزارهای آزاد وجود دارند. هدف این شرکت ها ساخت یک نرم‌افزار ویا سفارشی سازی یک بسته نرم افزاری آزاد با توجه به نیازهای مشتری می باشد. در نهایت نرم‌افزار ساخته شده توسط این‌گونه شرکت به صورت آزاد منتشر می شود. یک نمونه عالی از این نوع توسعه، نرم‌افزار اکلیپس (Eclipse) می باشد. این نرم‌افزار ابتدا توسط شرکت آی بی ام (IBM) ساخته شد و بعدها مدیریت و توسعه آن بر عهده Eclipse Foundation  قرار گرفت. با توجه به امکانات و مشخصات اکلیپس، بسیاری از شرکت ها این نرم‌افزار را به عنوان زیرساخت نرم‌افزار خود در نظر گرفته اند. این کار هزینه توسعه زیرساخت را برای این شرکت ها بسیار پایین آورده است. در نتیجه بسیاری از شرکت ها، دانشگاه‌ها به توسعه آن کمک می کنند. نحوه همیاری آن‌ها به صورت‌های مختلفی از مدلهای ذکر شده این مقاله می باشد. بر اساس آخرین گزارش‌ها ۲۵٪ توسعه دهندگان سورس کد از شرکت IBM به همراه پرداخت ۲۲٪ هزینه‌های مربوط به توسعه می باشند. همچنین شرکت‌های بزرگی از جمله اوراکل، بورلند بین ۱٪ تا ۷٪ هزینه‌ها مربوط به توسعه و نگهداری اکلیپس را بر عهده گرفته اند.<br /> نمونه مشابه دیگری از این مدل توسعه هسته لینوکس می باشد.</p><p><strong>مستندات و کالاهای مرتبط با نرم‌افزار آزاد<br /> </strong>فروش مستنداتی مانند کتاب و کالاهای مرتبط مانند تی شرت مدل تجاری فعالی در حوزه نرم افزارهای آزاد است.</p><p><strong>آموزش و برگزاری همایش<br /> </strong>کسب درآمد توسط برگزاری همایش ها و  از طریق فروش بلیت ورودی و اقلام مرتبط آن‌ها نیز برای نرم افزارهای آزاد بسیار سودمند بوده است.</p><p><strong>پرداخت هزینه توسعه<br /> </strong>در این مدل برنامه نویس یا شرکت توسعه‌دهنده نرم‌افزار آزاد هزینه ای را برای افزودن امکانات (معمولاً از جامعه کاربری) درخواست می کند. البته این مدل بیشتر برای توسعه دهندگان حقیقی کاربرد دارد. توسعه‌دهنده می‌تواند در تعامل با کاربران نرم‌افزار خود، هزینه ای را بابت افزودن امکانی به نرم‌افزار درخواست کند. از طرفی کاربر نرم‌افزار نیز می‌تواند با پرداخت هزینه ای امکان یا امکانات مورد نظر خود را از توسعه‌دهنده درخواست کند. معمولاً انجمن گفتگوی نرم‌افزار آزاد مورد نظر محلی را برای این نوع مدل در نظر می گیرد.</p><p><strong>مدل تجاری Partnership<br /> </strong>این مدل شامل عقد قراردادهایی بین توسعه دهندگان نرم‌افزارهای آزاد و سایر شرکت های می باشد. مانند عقد قرارداد شرکت گوگل با شرکت موزیلا جهت پیش‌فرض بودن موتور جستجو گوگل در مرورگر فایرفاکس. مبلغ این قرارداد در سال ۲۰۰۶ ۷۲میلیون دلار بوده است.</p><p><strong>Donation</strong><br /> در این مدل جامعه کاربری و یا شرکت های تجاری به منظور حمایت از نرم‌افزارهای آزاد و توسعه دهندگان این نرم افزارها، هزینه ای را به عنوان donation (کمک مالی) به توسعه‌دهنده اهدا می کنند. این مدل در بسیار از کشورها مرسوم می‌باشد.</p><p><strong>تبلیغات</strong><br /> کسب مستقیم درآمد از طریق تبلیغات یکی دیگر از مدل های تجاری در این حوزه می‌باشد. البته بسیاری از توسعه دهندگان نرم افزارهای آزاد این مدل را در این حوزه ناموفق و یک مدل شکست‌خورده می دانند.</p><p><strong>نیازسنجی و امکان سنجی<br /> </strong>تمامی مدل های ذکر شده در این مقاله در بسیاری از کشورها در حال اجرا می باشند. با این حال اجرای این مدل ها در داخل کشور دارای مشکلاتی می باشد. علاوه بر این مدل های تجاری نرم افزارهای اختصاصی تیز دارای محدودیت‌هایی در اجرا می‌باشند. در ادامه به بعضی از این مشکلات اشاره شده است.</p><p><strong>نبود و یا عدم اجرای قوانین<br /> </strong>مهم‌ترین مشکل توسعه نرم‌افزارهای آزاد ویا اختصاصی در داخل کشور نبود ویا عدم اجرای قوانین است. عدم وجود و یا اجرا نشدن قوانین مربوط به Copyright در داخل ایران رقابت را از بین برده است. چه رقابت نرم افزارهای اختصاصی با یکدیگر و چه رقابت آن‌ها با نرم افزاری های آزاد. همه روزه ما شاهد فروش بسته های نرم‌افزاری با عناوین گوناگون با قیمت بسیار نازل در داخل کشور هستیم. به عنوان مثال مجموعه بسته های King که چندین هزار نرم‌افزار اختصاصی و آزاد را در خود جای داده‌اند با قیمتی حدود ۲۰,۰۰۰ تومان به فروش می‌روند. در حالی که هزینه فروش همین بسته ها در خارج از کشور بیش از چند صد هزار دلار است. البته هیچکدام از این نرم‌افزار ها دارای پشتیبانی در داخل کشور نمی باشند  لازم است. با وجود این موضوع را نمی توان دلیلی برای عدم اجرای Copyright به شمار آورد.</p><p><strong>تحریم</strong><br /> همانند سایر صنایع، صنعت نرم افزاری نیز زیان های فراوانی از تحریم دیده است. عدم پشتیبانی از کاربرانی ایرانی باعث محدودیت‌ها بسیاری شده است. به عنوان مثال بسیاری از سایت‌های حامی نرم افزارهای آزاد از جمله Google، Source Forge، IBM و&#8230; محدودیت‌هایی را برای کاربران ایرانی اعمال می کنند. از طرفی انتقال وجه برای خرید ویا فروش نرم‌افزار به صورت بین‌المللی برای کاربران و توسعه دهندگان ایرانی وجود ندارد.</p><p><strong>فیلترینگ</strong><br /> فیلتر شدن سایت‌های مرتبط با نرم افزارهای آزاد باعث محدود شدن دسترسی کاربران ایرانی به این سایت‌ها شده است. از طرفی فیلتر شدن سایت‌های داخلی نرم افزارهای آزاد از جمله سایت توزیع پارسیکس منجر به صدمه دیدن انگیزه کاربران و توسعه دهندگان داخلی شده است.</p><p><strong>نبود زیرساخت های کافی<br /> </strong>توسعه نرم‌افزار نیاز به زیرساخت های بسیاری دارد. از جمله:<br /> نبود و یا عدم اجرای قوانین<br /> تحریم<br /> فیلترنیگ<br /> نبود مستندات کافی به زبان فارسی<br /> کمبود پهنای باند و سرعت لازم برای دسترسی به اینترنت<br /> کمبود دیتاسنتر های داخلی<br /> مشکلات مربوط به کارهای گروهی و تیمی<br /> شرکت های سرمایه گذار</p><p>وجود و کامل شدن هر کدام از موارد فوق گام بسیار مهمی برای توسعه افزار می باشد.</p><p><strong>نتیجه گیری<br /> </strong>باتوجه به مدل های درآمدزایی مطرح شده، می‌توان به این نتیجه رسید که نرم‌افزارهای آزاد قابلیت رقابت تجاری با نرم‌افزارهای اختصاصی را دارند. رفع مشکلات در داخل کشور نیز می‌تواند باعث ایجاد رقابت و نیز افزایش رونق صنعت نرم‌افزار شود.</p><hr /><p>امیدوارم که در سال‌های بعد هم همایش زنجان برگزار شود و صد البته امیدوارم که چنین همایش هایی در سایر نقاط کشور نیز برگزار گردد.</p><p>شاد و پیروز باشید <img src='http://zebardast.ir/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p><div style="float:left; text-align:left;><img alt='' src='http://1.gravatar.com/avatar/9fb25dddd365836466bd8051be993fa8?s=100&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D100&amp;r=G' class='avatar avatar-100 photo' height='100' width='100' /></div><h3>درباره <a href="http://zebardast.ir/author/admin/" title="سعید زبردست">سعید زبردست</a></h3><p>من برنامه نویس Java و PHP هستم. در کنار برنامه نویسی اطلاعات خوبی در زمینه پایگاه ‌های داده بخصوص MySQL دارم. برای اطلاع بیشتر به صفحه <a href="http://zebardast.ir/about">درباره سعید زبردست</a> مراجعه کنید.</p><small><a href="mailto:s&#97;ei&#100;&#64;&#122;&#101;&#98;a&#114;da&#115;t&#46;&#105;r" title="Send سعید زبردست Mail">Mail</a> | <a href="http://zebardast.ir" title="سعید زبردست On The Web">Web</a> | <a href="https://twitter.com/#!/saeid" title="سعید زبردست On Twitter">Twitter</a> | <a href="https://www.facebook.com/saeid.zebardast" title="سعید زبردست On Facebook">Facebook</a> | <a href="http://www.linkedin.com/in/saeid" title="سعید زبردست On LinkedIn">LinkedIn</a> | <a href="https://profiles.google.com/saeid.zebardast" title="سعید زبردست On Google+">Google+</a> | <a href="http://zebardast.ir/author/admin/" title="More Posts By سعید زبردست">More Posts (278)</a></small></p><p><a class="a2a_button_google_plus" href="http://www.addtoany.com/add_to/google_plus?linkurl=http%3A%2F%2Fzebardast.ir%2F%25d9%2585%25d8%25af%25d9%2584-%25d9%2587%25d8%25a7%25db%258c-%25d8%25af%25d8%25b1%25d8%25a2%25d9%2585%25d8%25af%25d8%25b2%25d8%25a7%25db%258c%25db%258c-%25d9%2586%25d8%25b1%25d9%2585-%25d8%25a7%25d9%2581%25d8%25b2%25d8%25a7%25d8%25b1%25d9%2587%25d8%25a7%25db%258c-%25d8%25a2%25d8%25b2%25d8%25a7%25d8%25af%2F&amp;linkname=%D9%85%D8%AF%D9%84%20%D9%87%D8%A7%DB%8C%20%D8%AF%D8%B1%D8%A2%D9%85%D8%AF%D8%B2%D8%A7%DB%8C%DB%8C%20%D9%86%D8%B1%D9%85%20%D8%A7%D9%81%D8%B2%D8%A7%D8%B1%D9%87%D8%A7%DB%8C%20%D8%A2%D8%B2%D8%A7%D8%AF%D8%8C%20%DA%A9%D9%86%D9%81%D8%B1%D8%A7%D9%86%D8%B3%20%D8%B2%D9%86%D8%AC%D8%A7%D9%86" title="Google+" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/google_plus.png" width="16" height="16" alt="Google+"/></a><a class="a2a_button_facebook" href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fzebardast.ir%2F%25d9%2585%25d8%25af%25d9%2584-%25d9%2587%25d8%25a7%25db%258c-%25d8%25af%25d8%25b1%25d8%25a2%25d9%2585%25d8%25af%25d8%25b2%25d8%25a7%25db%258c%25db%258c-%25d9%2586%25d8%25b1%25d9%2585-%25d8%25a7%25d9%2581%25d8%25b2%25d8%25a7%25d8%25b1%25d9%2587%25d8%25a7%25db%258c-%25d8%25a2%25d8%25b2%25d8%25a7%25d8%25af%2F&amp;linkname=%D9%85%D8%AF%D9%84%20%D9%87%D8%A7%DB%8C%20%D8%AF%D8%B1%D8%A2%D9%85%D8%AF%D8%B2%D8%A7%DB%8C%DB%8C%20%D9%86%D8%B1%D9%85%20%D8%A7%D9%81%D8%B2%D8%A7%D8%B1%D9%87%D8%A7%DB%8C%20%D8%A2%D8%B2%D8%A7%D8%AF%D8%8C%20%DA%A9%D9%86%D9%81%D8%B1%D8%A7%D9%86%D8%B3%20%D8%B2%D9%86%D8%AC%D8%A7%D9%86" title="Facebook" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fzebardast.ir%2F%25d9%2585%25d8%25af%25d9%2584-%25d9%2587%25d8%25a7%25db%258c-%25d8%25af%25d8%25b1%25d8%25a2%25d9%2585%25d8%25af%25d8%25b2%25d8%25a7%25db%258c%25db%258c-%25d9%2586%25d8%25b1%25d9%2585-%25d8%25a7%25d9%2581%25d8%25b2%25d8%25a7%25d8%25b1%25d9%2587%25d8%25a7%25db%258c-%25d8%25a2%25d8%25b2%25d8%25a7%25d8%25af%2F&amp;linkname=%D9%85%D8%AF%D9%84%20%D9%87%D8%A7%DB%8C%20%D8%AF%D8%B1%D8%A2%D9%85%D8%AF%D8%B2%D8%A7%DB%8C%DB%8C%20%D9%86%D8%B1%D9%85%20%D8%A7%D9%81%D8%B2%D8%A7%D8%B1%D9%87%D8%A7%DB%8C%20%D8%A2%D8%B2%D8%A7%D8%AF%D8%8C%20%DA%A9%D9%86%D9%81%D8%B1%D8%A7%D9%86%D8%B3%20%D8%B2%D9%86%D8%AC%D8%A7%D9%86" title="Twitter" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_identi_ca" href="http://www.addtoany.com/add_to/identi_ca?linkurl=http%3A%2F%2Fzebardast.ir%2F%25d9%2585%25d8%25af%25d9%2584-%25d9%2587%25d8%25a7%25db%258c-%25d8%25af%25d8%25b1%25d8%25a2%25d9%2585%25d8%25af%25d8%25b2%25d8%25a7%25db%258c%25db%258c-%25d9%2586%25d8%25b1%25d9%2585-%25d8%25a7%25d9%2581%25d8%25b2%25d8%25a7%25d8%25b1%25d9%2587%25d8%25a7%25db%258c-%25d8%25a2%25d8%25b2%25d8%25a7%25d8%25af%2F&amp;linkname=%D9%85%D8%AF%D9%84%20%D9%87%D8%A7%DB%8C%20%D8%AF%D8%B1%D8%A2%D9%85%D8%AF%D8%B2%D8%A7%DB%8C%DB%8C%20%D9%86%D8%B1%D9%85%20%D8%A7%D9%81%D8%B2%D8%A7%D8%B1%D9%87%D8%A7%DB%8C%20%D8%A2%D8%B2%D8%A7%D8%AF%D8%8C%20%DA%A9%D9%86%D9%81%D8%B1%D8%A7%D9%86%D8%B3%20%D8%B2%D9%86%D8%AC%D8%A7%D9%86" title="Identi.ca" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/identica.png" width="16" height="16" alt="Identi.ca"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fzebardast.ir%2F%25d9%2585%25d8%25af%25d9%2584-%25d9%2587%25d8%25a7%25db%258c-%25d8%25af%25d8%25b1%25d8%25a2%25d9%2585%25d8%25af%25d8%25b2%25d8%25a7%25db%258c%25db%258c-%25d9%2586%25d8%25b1%25d9%2585-%25d8%25a7%25d9%2581%25d8%25b2%25d8%25a7%25d8%25b1%25d9%2587%25d8%25a7%25db%258c-%25d8%25a2%25d8%25b2%25d8%25a7%25d8%25af%2F&amp;title=%D9%85%D8%AF%D9%84%20%D9%87%D8%A7%DB%8C%20%D8%AF%D8%B1%D8%A2%D9%85%D8%AF%D8%B2%D8%A7%DB%8C%DB%8C%20%D9%86%D8%B1%D9%85%20%D8%A7%D9%81%D8%B2%D8%A7%D8%B1%D9%87%D8%A7%DB%8C%20%D8%A2%D8%B2%D8%A7%D8%AF%D8%8C%20%DA%A9%D9%86%D9%81%D8%B1%D8%A7%D9%86%D8%B3%20%D8%B2%D9%86%D8%AC%D8%A7%D9%86" id="wpa2a_16">اشتراک‌گذاری</a></p><p><strong>مطالب مرتبط:</strong><ol><li><a href='http://zebardast.ir/%da%86%da%af%d9%88%d9%86%d9%87-%d9%86%d8%b1%d9%85-%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-%d8%a2%d8%b2%d8%a7%d8%af-%d8%b1%d8%a7-%d8%af%d8%b1%da%a9-%da%a9%d9%86%db%8c%d9%85%d8%9f/' rel='bookmark' title='چگونه نرم افزار آزاد را درک کنیم؟'>چگونه نرم افزار آزاد را درک کنیم؟</a></li><li><a href='http://zebardast.ir/%d8%ac%d8%b4%d9%86-%d8%b1%d9%88%d8%b2-%d8%a2%d8%b2%d8%a7%d8%af%db%8c-%d9%86%d8%b1%d9%85%e2%80%8c%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-%d9%88-%d9%86%d8%b5%d8%a8-%d8%a7%d9%88%d8%a8%d9%88%d9%86%d8%aa%d9%88/' rel='bookmark' title='جشن روز آزادی نرم‌افزار و نصب اوبونتو در تهران'>جشن روز آزادی نرم‌افزار و نصب اوبونتو در تهران</a></li><li><a href='http://zebardast.ir/%d9%86%d8%b1%d9%85-%d8%a7%d9%81%d8%b2%d8%a7%d8%b1%d9%87%d8%a7%db%8c-%d9%85%d8%b9%d8%a7%d8%af%d9%84-%d9%88-%d9%85%d8%b1%d8%ac%d8%b9-%d8%af%d8%b3%d8%aa%d9%88%d8%b1%d8%a7%d8%aa-%d8%ae%d8%b7-%d9%81%d8%b1/' rel='bookmark' title='بخش نرم افزارهای معادل و مرجع دستورات خط فرمان'>بخش نرم افزارهای معادل و مرجع دستورات خط فرمان</a></li></ol></p>]]></content:encoded> <wfw:commentRss>http://zebardast.ir/%d9%85%d8%af%d9%84-%d9%87%d8%a7%db%8c-%d8%af%d8%b1%d8%a2%d9%85%d8%af%d8%b2%d8%a7%db%8c%db%8c-%d9%86%d8%b1%d9%85-%d8%a7%d9%81%d8%b2%d8%a7%d8%b1%d9%87%d8%a7%db%8c-%d8%a2%d8%b2%d8%a7%d8%af/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>عادت های بد برنامه نویسان</title><link>http://zebardast.ir/%d8%b9%d8%a7%d8%af%d8%aa-%d9%87%d8%a7%db%8c-%d8%a8%d8%af-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d9%86%d9%88%db%8c%d8%b3%d8%a7%d9%86/</link> <comments>http://zebardast.ir/%d8%b9%d8%a7%d8%af%d8%aa-%d9%87%d8%a7%db%8c-%d8%a8%d8%af-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d9%86%d9%88%db%8c%d8%b3%d8%a7%d9%86/#comments</comments> <pubDate>Sun, 19 Jun 2011 03:20:50 +0000</pubDate> <dc:creator>سعید زبردست</dc:creator> <category><![CDATA[برنامه نویسی]]></category> <category><![CDATA[کد]]></category><guid isPermaLink="false">http://zebardast.ir/?p=1460</guid> <description><![CDATA[سلام در طول چند سالی که مشغول به برنامه نویسی هستم عادت های بدی را توسط خودم و بقیه برنامه نویسان مشاهده کرده ام. هدف از این مطلب گردآوری تعدادی از رفتارها و عادت های نادرست است که با شناختن آن ها می توان از رخ دادنشان جلوگیری کرد. همه بد کد می نویسند، جز [...] <strong>مطالب مرتبط:</strong><ol><li><a href='http://zebardast.ir/%d9%85%d8%b3%d8%a7%d9%81%d8%b1%d8%aa-%d8%a8%d9%85-%d9%88-devcheshmaknet/' rel='bookmark' title='مسافرت بم  و سفره برنامه نویسی من'>مسافرت بم  و سفره برنامه نویسی من</a></li><li><a href='http://zebardast.ir/%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d9%86%d9%88%db%8c%d8%b3%db%8c/' rel='bookmark' title='برنامه نویسی'>برنامه نویسی</a></li><li><a href='http://zebardast.ir/%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-gconf-cleaner/' rel='bookmark' title='برنامه Gconf Cleaner'>برنامه Gconf Cleaner</a></li></ol>]]></description> <content:encoded><![CDATA[<p> سلام</p><p>در طول چند سالی که مشغول به برنامه نویسی هستم عادت های بدی را توسط خودم و بقیه برنامه نویسان مشاهده کرده ام. هدف از این مطلب گردآوری تعدادی از رفتارها و عادت های نادرست است که با شناختن آن ها می توان از رخ دادنشان جلوگیری کرد.</p><p><strong>همه بد کد می نویسند، جز من!</strong><br /> گاه اوقات یک برنامه نویس با دیدن کدهای شخص دیگر، به جای قبول کردن اختلاف نظر موجود در کدنویسی به زیر سوال بردن روش کدنویسی طرف مقابل می پردازد. درست است که در پروژه های تیمی رعایت استانداردهای تیم ضروریست، اما در مواردی که شخص در حال کار بر روی جزییات است و هیچ استانداردی را زیر سوال نبرده، بهتر است قبل از بحث در مورد کدهای نوشته شده، دیدگاه وی را در مورد این نوع کدنویسی بدانیم.<br /> <a href="http://zebardast.ir/wp-content/uploads/2011/06/control_cut_copy_paste.jpg"><img src="http://zebardast.ir/wp-content/uploads/2011/06/control_cut_copy_paste-150x150.jpg" alt="Control + Cut + Copy + P" title="Control + Cut + Copy + Paste" width="150" height="150" class="alignleft size-thumbnail wp-image-1473" /></a><br /> <strong>Copy &#038; Paste</strong><br /> یک از بدترین کارهایی که توسط برنامه نویس انجام می شود و علاوه بر خود به کل تیم و پروژه آسیب وارد کند، Copy و Paste کردن کدها بدون بررسی و فراگیری دانش موجود در آنهاست. این مورد بویژه در برنامه نویسان وب بسیار مشاهده می شود. بهتر است به جای کپی کردن کد از جای دیگری، نیاز خود را با فراگیری تکنیک های لازم رفع کنید. در صورتی که مجبور به نسخه برداری از کد دیگری هستید، بهتر است تک تک خطوط آن را بررسی کرده و لایسنس مربوط به آن را رعایت فرمایید. پیشنهاد می کنم صفحه <a href="http://en.wikipedia.org/wiki/Copy_and_paste_programming">Copy and paste programming در ویکی پدیا</a> را مطالعه کنید.</p><p><strong>نام گزاری نامفهوم متغیرها</strong><br /> این مشکل بیشتر در برنامه نویسان کم تجربه دیده می شود. مثلا متغییری را با حرف u تعریف کرده و در بخش های مختلف استفاده می کند. شما فکر می کنید که منظور از u همان user است، بعد شک می کنید که شاید username باشد و در آخر متوجه می شوید که منظور وی usability بوده است! درصورتی که نام متغییر را با توجه به محتوای آن ها برگزیده شود، خوانایی برنامه دوچندان می شود.</p><p><strong>این بخش خیلی زود تموم می شود</strong><br /> معمولا زمانی که یک بخش زودتر از موعد مقرر تمام می شود، بهتر است در مورد برنامه نوشته شده شک کنید! شاید برنامه نویس بخواهد با اینکار قدرت برنامه نویسی خود را نشان دهد ولی بارها دیده ام که بعد از چندین هفته و ماه، ایرادی در چنین برنامه ای رخ می دهد که نه تنها زحمات برنامه نویس را از بین می برد، بلکه باعث ضایع شدن شخصیت کاری وی می گردد. شاید اگر از همان اول برنامه نویس مدت زمان بیشتری را صرف نگارش، تست و بازبینی برنامه خود می کرد، ماندگاری برنامه بی نقص وی باعث افزایش اعتبار وی در محیط کاری می شد.</p><p><strong>من نبودم! عدم مسئولیت پذیری و عذرخواهی</strong><br /> برخی اوقات بخشی از برنامه دچار ایراد می شود و کسی عهده دار ایراد بوجود آمده نیست. از لحاظ اخلاقی گفتن یک عذرخواهی نه تنها از شخصیت شما نمی کاهد، بلکه نشاندهنده حس مسئولیت پذیری شما می شود. البته با نوشتن توضیحات (Comment) در برنامه می توانید، نویسنده کد را به راحتی بیابید.</p><p><strong>سرخوردگی از انجام کارهای تکراری</strong><br /> این مورد بارها برای من اتفاق افتاده است. بدترین بخش کار، انجام دادن مواردی است که هم سطحی هستند، هم حوصله می خواهند و هم از عهده افراد سطح پایین تر و دیگر بر می آیند. اما به هر حال مواردی پیش می آید که مجبور به انجام دادن این قبیل کارها هستید. بهترین راه حل حفظ آرامش و انجام دادن کار در اولین فرصت است. بعید می دانم راه حل دیگری پیدا شود.</p><p><strong>انجام دادن ناقص کارها</strong><br /> برخی از برنامه نویس ها، بخصوص کم تجربه تر ها، معنای صحیح اتمام کار را نمی دانند. یعنی انجام دادن کار را به معنی نگارش کد می دانند و مراحل مستندسازی، تست، ادغام کد در پروژه و&#8230; را در زمان لازم برای اتمام کار در نظر نمی گیرند. چه بسا پیدا شدن یک خطا در مرحله تست می تواند وی را ساعت ها درگیر کند.</p><p><strong>اعمال سلیقه شخصی</strong><br /> منظور از اعمال سلیقه شخصی عدم تفکر در هنگام برنامه نویسی نیست. بلکه مفهوم آن در نظر داشتن دیدگاه مشتری در اولویت بالاتر نسبت به دیدگاه شخصی است.</p><p>در صورتی که شما عادت بد دیگری را سراغ دارید، خوشحال می شوم آن را به اشتراک بگذارید.</p><p>منبع تصویر: <a href="http://www.worthlessgenius.com/2009/04/22/so-you-want-to-be-a-programmer/">worthlessgenius.com</a></p><p>شاد باشید <img src='http://zebardast.ir/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p><div style="float:left; text-align:left;><img alt='' src='http://1.gravatar.com/avatar/9fb25dddd365836466bd8051be993fa8?s=100&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D100&amp;r=G' class='avatar avatar-100 photo' height='100' width='100' /></div><h3>درباره <a href="http://zebardast.ir/author/admin/" title="سعید زبردست">سعید زبردست</a></h3><p>من برنامه نویس Java و PHP هستم. در کنار برنامه نویسی اطلاعات خوبی در زمینه پایگاه ‌های داده بخصوص MySQL دارم. برای اطلاع بیشتر به صفحه <a href="http://zebardast.ir/about">درباره سعید زبردست</a> مراجعه کنید.</p><small><a href="mailto:&#115;a&#101;&#105;&#100;&#64;&#122;e&#98;&#97;&#114;da&#115;&#116;.i&#114;" title="Send سعید زبردست Mail">Mail</a> | <a href="http://zebardast.ir" title="سعید زبردست On The Web">Web</a> | <a href="https://twitter.com/#!/saeid" title="سعید زبردست On Twitter">Twitter</a> | <a href="https://www.facebook.com/saeid.zebardast" title="سعید زبردست On Facebook">Facebook</a> | <a href="http://www.linkedin.com/in/saeid" title="سعید زبردست On LinkedIn">LinkedIn</a> | <a href="https://profiles.google.com/saeid.zebardast" title="سعید زبردست On Google+">Google+</a> | <a href="http://zebardast.ir/author/admin/" title="More Posts By سعید زبردست">More Posts (278)</a></small></p><p><a class="a2a_button_google_plus" href="http://www.addtoany.com/add_to/google_plus?linkurl=http%3A%2F%2Fzebardast.ir%2F%25d8%25b9%25d8%25a7%25d8%25af%25d8%25aa-%25d9%2587%25d8%25a7%25db%258c-%25d8%25a8%25d8%25af-%25d8%25a8%25d8%25b1%25d9%2586%25d8%25a7%25d9%2585%25d9%2587-%25d9%2586%25d9%2588%25db%258c%25d8%25b3%25d8%25a7%25d9%2586%2F&amp;linkname=%D8%B9%D8%A7%D8%AF%D8%AA%20%D9%87%D8%A7%DB%8C%20%D8%A8%D8%AF%20%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%20%D9%86%D9%88%DB%8C%D8%B3%D8%A7%D9%86" title="Google+" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/google_plus.png" width="16" height="16" alt="Google+"/></a><a class="a2a_button_facebook" href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fzebardast.ir%2F%25d8%25b9%25d8%25a7%25d8%25af%25d8%25aa-%25d9%2587%25d8%25a7%25db%258c-%25d8%25a8%25d8%25af-%25d8%25a8%25d8%25b1%25d9%2586%25d8%25a7%25d9%2585%25d9%2587-%25d9%2586%25d9%2588%25db%258c%25d8%25b3%25d8%25a7%25d9%2586%2F&amp;linkname=%D8%B9%D8%A7%D8%AF%D8%AA%20%D9%87%D8%A7%DB%8C%20%D8%A8%D8%AF%20%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%20%D9%86%D9%88%DB%8C%D8%B3%D8%A7%D9%86" title="Facebook" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fzebardast.ir%2F%25d8%25b9%25d8%25a7%25d8%25af%25d8%25aa-%25d9%2587%25d8%25a7%25db%258c-%25d8%25a8%25d8%25af-%25d8%25a8%25d8%25b1%25d9%2586%25d8%25a7%25d9%2585%25d9%2587-%25d9%2586%25d9%2588%25db%258c%25d8%25b3%25d8%25a7%25d9%2586%2F&amp;linkname=%D8%B9%D8%A7%D8%AF%D8%AA%20%D9%87%D8%A7%DB%8C%20%D8%A8%D8%AF%20%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%20%D9%86%D9%88%DB%8C%D8%B3%D8%A7%D9%86" title="Twitter" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_identi_ca" href="http://www.addtoany.com/add_to/identi_ca?linkurl=http%3A%2F%2Fzebardast.ir%2F%25d8%25b9%25d8%25a7%25d8%25af%25d8%25aa-%25d9%2587%25d8%25a7%25db%258c-%25d8%25a8%25d8%25af-%25d8%25a8%25d8%25b1%25d9%2586%25d8%25a7%25d9%2585%25d9%2587-%25d9%2586%25d9%2588%25db%258c%25d8%25b3%25d8%25a7%25d9%2586%2F&amp;linkname=%D8%B9%D8%A7%D8%AF%D8%AA%20%D9%87%D8%A7%DB%8C%20%D8%A8%D8%AF%20%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%20%D9%86%D9%88%DB%8C%D8%B3%D8%A7%D9%86" title="Identi.ca" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/identica.png" width="16" height="16" alt="Identi.ca"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fzebardast.ir%2F%25d8%25b9%25d8%25a7%25d8%25af%25d8%25aa-%25d9%2587%25d8%25a7%25db%258c-%25d8%25a8%25d8%25af-%25d8%25a8%25d8%25b1%25d9%2586%25d8%25a7%25d9%2585%25d9%2587-%25d9%2586%25d9%2588%25db%258c%25d8%25b3%25d8%25a7%25d9%2586%2F&amp;title=%D8%B9%D8%A7%D8%AF%D8%AA%20%D9%87%D8%A7%DB%8C%20%D8%A8%D8%AF%20%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%20%D9%86%D9%88%DB%8C%D8%B3%D8%A7%D9%86" id="wpa2a_18">اشتراک‌گذاری</a></p><p><strong>مطالب مرتبط:</strong><ol><li><a href='http://zebardast.ir/%d9%85%d8%b3%d8%a7%d9%81%d8%b1%d8%aa-%d8%a8%d9%85-%d9%88-devcheshmaknet/' rel='bookmark' title='مسافرت بم  و سفره برنامه نویسی من'>مسافرت بم  و سفره برنامه نویسی من</a></li><li><a href='http://zebardast.ir/%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d9%86%d9%88%db%8c%d8%b3%db%8c/' rel='bookmark' title='برنامه نویسی'>برنامه نویسی</a></li><li><a href='http://zebardast.ir/%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-gconf-cleaner/' rel='bookmark' title='برنامه Gconf Cleaner'>برنامه Gconf Cleaner</a></li></ol></p>]]></content:encoded> <wfw:commentRss>http://zebardast.ir/%d8%b9%d8%a7%d8%af%d8%aa-%d9%87%d8%a7%db%8c-%d8%a8%d8%af-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d9%86%d9%88%db%8c%d8%b3%d8%a7%d9%86/feed/</wfw:commentRss> <slash:comments>9</slash:comments> </item> <item><title>معرفی نقشه ذهنی و آموزش نرم افزار FreeMind</title><link>http://zebardast.ir/%d9%85%d8%b9%d8%b1%d9%81%db%8c-%d9%86%d9%82%d8%b4%d9%87-%d8%b0%d9%87%d9%86%db%8c-%d9%88-%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d9%86%d8%b1%d9%85-%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-freemind/</link> <comments>http://zebardast.ir/%d9%85%d8%b9%d8%b1%d9%81%db%8c-%d9%86%d9%82%d8%b4%d9%87-%d8%b0%d9%87%d9%86%db%8c-%d9%88-%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d9%86%d8%b1%d9%85-%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-freemind/#comments</comments> <pubDate>Sun, 17 Apr 2011 05:50:28 +0000</pubDate> <dc:creator>سعید زبردست</dc:creator> <category><![CDATA[نرم افزار آزاد و متن باز]]></category> <category><![CDATA[نقد و مرور]]></category> <category><![CDATA[آموزش]]></category> <category><![CDATA[نقشه ذهنی]]></category><guid isPermaLink="false">http://zebardast.ir/?p=1403</guid> <description><![CDATA[سلام نقشه ذهنی یکی از موثرترین روش‌ها بیان ایده‌ها، نظرات، فعالیت‌ها و گسترش آن‌ها است. این مقاله به تعریف نقشه ذهنی پرداخته و در ادامه یکی از بهترین نرم افزارهای مورد استفاده در این زمینه را معرفی و آموزش خواهد داد. نقشه ذهنی چیست؟ نقشه ذهنی روشی برای ترسیم ایده‌ها، نظرات و فعالیت‌ها بدون در [...] <strong>مطالب مرتبط:</strong><ol><li><a href='http://zebardast.ir/%d9%85%d8%b9%d8%b1%d9%81%db%8c-%d9%88-%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d9%be%db%8c%d8%a7%d8%af%d9%87%e2%80%8c%d8%b3%d8%a7%d8%b2%db%8c-apache-lucene/' rel='bookmark' title='معرفی و آموزش پیاده‌سازی Apache Lucene'>معرفی و آموزش پیاده‌سازی Apache Lucene</a></li><li><a href='http://zebardast.ir/%d9%85%d8%b9%d8%b1%d9%81%db%8c-%d9%86%d8%b1%d9%85-%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-wamp/' rel='bookmark' title='معرفی نرم افزار WAMP'>معرفی نرم افزار WAMP</a></li><li><a href='http://zebardast.ir/%da%86%da%af%d9%88%d9%86%d9%87-%d9%86%d8%b1%d9%85-%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-%d8%a2%d8%b2%d8%a7%d8%af-%d8%b1%d8%a7-%d8%af%d8%b1%da%a9-%da%a9%d9%86%db%8c%d9%85%d8%9f/' rel='bookmark' title='چگونه نرم افزار آزاد را درک کنیم؟'>چگونه نرم افزار آزاد را درک کنیم؟</a></li></ol>]]></description> <content:encoded><![CDATA[<p>سلام <img src='http://zebardast.ir/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br /> <a href="http://fa.wikipedia.org/wiki/%D9%86%D9%82%D8%B4%D9%87_%D8%B0%D9%87%D9%86%DB%8C">نقشه ذهنی</a> یکی از موثرترین روش‌ها بیان ایده‌ها، نظرات، فعالیت‌ها و گسترش آن‌ها است. این مقاله به تعریف نقشه ذهنی پرداخته و در ادامه یکی از بهترین نرم افزارهای مورد استفاده در این زمینه را معرفی و آموزش خواهد داد.</p><p><strong>نقشه ذهنی چیست؟</strong><br /> نقشه ذهنی روشی برای ترسیم ایده‌ها، نظرات و فعالیت‌ها بدون در نظر گرفتن ساختار معمول نگارش خطی و اولویت‌بندی آن‌ها است. در این روش موضوعات به صورت خیلی خلاصه به صورت سلسله مراتبی حول یک محور خاص گسترش می یابند. در زیر نمونه یک نقشه ذهنی کشیده شده توسط دست را مشاهده می کنید:</p><div class="autocap aligncenter" style="width: 400px;"><div><a href="http://zebardast.ir/wp-content/uploads/2011/04/نقشه-ذهنی-کشیده-شده-با-دست.jpg"><img src="http://zebardast.ir/wp-content/uploads/2011/04/نقشه-ذهنی-کشیده-شده-با-دست.jpg" alt="" title="نقشه ذهنی کشیده شده با دست" width="400" height="281" class=" size-full wp-image-1405" /></a><p class="autocap-text"><span class="hide">— </span>نقشه ذهنی کشیده شده با دست</p></div></div><p>این روش نگارش باعث می شود که افراد به سرعت یک ایده را گسترش داده و موضوعات مرتب با آن را در کنار هم گردآوری کنند. مهم ترین ویژگی و فایده نقشه ذهنی درک ساده و سریع موضوع اصلی است.</p><p><strong>نرم افزار FreeMind</strong><br /> <img src="http://zebardast.ir/wp-content/uploads/2011/04/FreeMind-150x150.png" alt="" title="نشان‌واره FreeMind" width="90" height="90" class="nocap alignleft size-thumbnail wp-image-1407" /><br /> FreeMind (<a href="http://fa.wikipedia.org/wiki/%D9%81%D8%B1%DB%8C%E2%80%8C%D9%85%D8%A7%DB%8C%D9%86%D8%AF">فری مایند</a>) نرم افزاری برای کشیدن نقشه ذهنی می باشد که به زبان جاوا و تحت مجوز GPL (متن باز و آزاد) منتشر شده است. این نرم افزار بر روی سیستم عامل های ویندوز، لینوکس و مک (Mac OS X) با استفاده از <abbr title="Java Virtual Machine">JVM</abbr> (ماشین مجازی جاوا) اجرا می شود.<br /> <em>برخی از ویژگی های این نرم افزار</em></p><ul><li>ذخیره سازی اطلاعات در قالب XML با فرمت .mm</li><li>خروجی نقشه ذهنی با فرمت‌های HTM، PDF، Flash و&#8230;</li><li>خروجی نقشه ذهنی با فرمت‌های تصویری PNG, JPEG و SVG</li><li>برچسب زدن گره ها با استفاده از آیکون</li><li>کشیدن ابر دور چندین گره خاص برای دسته بندی کردن آن‌ها</li><li>فرمت کردن خودکار نقشه ذهنی با توجه به سطح گره‌ها</li><li>جستجو در قسمت‌های مختلف نقشه ذهنی</li><li>ایجاد لینک به فایل و صفحات وب در گره‌ها</li><li>امکان خنثی کردن کارهای انجام شده (undo)</li><li>امکان Drag&#8217;n Drop (دراگ و دراپ کردن) برای کپی برداری از گره‌ها</li><li>حالت فایل (File mode) برای دیدن فایل‌ها و دایرکتوری‌های موجود در سیستم به صورت نقشه ذهنی</li><li>امکان کشیدن نقشه ذهنی بدون استفاده از ماوس</li><li>امکان کشیدن نقشه ذهنی رمزگزاری شده برای حفاظت بیشتر</li><li>پشتیبانی از تب (Tab) برای بازکردن چندین نقشه ذهنی در یک پنجره</li></ul><p><strong>نیازمندی‌های نصب</strong><br /> • نسخه ۱.۴ یا جدیدتر <span style="display:inline-block; direction:ltr;"><abbr title="Java Runtime Environment">JRE</abbr></span><br /> • ۱۳ مگابایت فضای خالی بر روی دیسک سخت (هارد دیسک) به منظور نصب FreeMind و پلاگین های پیش فرض آن<br /> • ۵۱۲ مگابایت <abbr title="Random-access memory - حافظه دسترسی تصادفی">RAM</abbr>البته برای کشیدن نقشه های ذهنی بزرگ تر نیاز به رم بیشتری دارید.</p><p><strong>نصب <abbr title="Java Runtime Environment">JRE</abbr></strong><br /> برای نصب JRE آخرین نسخه آن را از صفحه <a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Java SE Downloads</a> دریافت کنید. با توجه به تحریم ایران و عدم دسترسی به دریافت فایل از سایت اوراکل، کاربران داخل ایران می توانند نسخه های مورد نیاز خود را از لینک های زیر دریافت نمایند:</p><p><em>کاربران ویندوز</em><br /> • <a href="http://www.filehippo.com/download_jre_32/" style="display:inline-block; direction:ltr;">JRE 1.6.0.24 <em>(32-bit)</em></a><br /> • <a href="http://www.filehippo.com/download_jre_64/" style="display:inline-block; direction:ltr;">JRE 1.6.0.24 <em>(64-bit)</em></a></p><p><em>کاربران لینوکس</em><br /> در بیشتر مخازن نرم افزاری توزیع های گنو/لینوکس این بسته وجود دارد. به عنوان مثال کاربران اوبونتو ۱۰.۱۰ می توانند با استفاده از دستور زیر ماشین مجازی جاوا را نصب نمایند:</p><pre class="brush: bash; title: ; notranslate">sudo apt-get install sun-java6-jre</pre><p><strong>نصب FreeMind</strong><br /> نخست نسخه مخصوص سیستم عامل خود را از <a href="http://freemind.sourceforge.net/wiki/index.php/Download">صفحه دانلود سایت FreeMind</a> دریافت کنید. در زیر لینک‌هایی برای دریافت سریع نسخه ۰.۹ این نرم افزار آمده است:<br /> • <a href="http://prdownloads.sourceforge.net/freemind/FreeMind-Windows-Installer-0.9.0-max.exe?download">دریافت برای ویندوز</a><br /> • <a href="http://prdownloads.sourceforge.net/freemind/FreeMind_0.9.0.dmg?download">دریافت برای Mac OS X</a><br /> • <a href="http://sourceforge.net/project/showfiles.php?group_id=7118&#038;package_id=161831&#038;release_id=574421">دریافت برای گنو/لینوکس توزیع دبیان و سایر توزیع های DEB-based مانند اوبونتو</a><br /> • <a href="http://sourceforge.net/project/showfiles.php?group_id=7118&#038;package_id=161830&#038;release_id=574721">دریافت برای گنو/لینوکس توزیع سوزه و سایر توزیع های RPM-based مانند فدورا</a><br /> <em>نکته:  FreeMind در بسیاری از مخازن توزیع های گنو/لینوکس وجود دارد. <a href="http://freemind.sourceforge.net/wiki/index.php/FreeMind_on_Linux">توضیحات بیشتر در مورد نصب در لینوکس</a>.</em></p><p><strong>شروع به کار با FreeMind</strong><br /> قبل از هر چیز باید موضوعی را که قصد دارید در مورد آن نقشه ذهنی بکشید را انتخاب کنید. به عنوان مثال در این بخش ما موضوع Computer programming را انتخاب کرده ایم. هدف اصلی جمع کردن موضوعات کلی مرتبط با آن می باشد. در زیر مراحل ایجاد و کامل کردن یک نقشه ذهنی در این باره را با هم دنبال می کنیم.<br /> ۱- ایجاد یک نقشه ذهنی: از منو File گزینه New را انتخاب کنید.<div class="autocap aligncenter" style="width: 300px;"><div><a href="http://zebardast.ir/wp-content/uploads/2011/04/ایجاد-یک-نقشه-جدید-ذهنی-در-FreeMind.png"><img src="http://zebardast.ir/wp-content/uploads/2011/04/ایجاد-یک-نقشه-جدید-ذهنی-در-FreeMind-300x232.png" alt="" title="ایجاد یک نقشه جدید ذهنی در FreeMind" width="300" height="232" class=" size-medium wp-image-1422" /></a><p class="autocap-text"><span class="hide">— </span>ایجاد یک نقشه جدید ذهنی در FreeMind</p></div></div><p>۲- تغییر موضوع پیش فرض به Computer programming: کافیست بر روی `New Mindmap` کلیک کرده و موضوع را به Computer programming تغییر دهید. بعد از تغییر کلید Enter را وارد کنید.<div class="autocap aligncenter" style="width: 300px;"><div><a href="http://zebardast.ir/wp-content/uploads/2011/04/تغییر-نام-پیش-فرض-نقشه-ذهنی.png"><img src="http://zebardast.ir/wp-content/uploads/2011/04/تغییر-نام-پیش-فرض-نقشه-ذهنی-300x232.png" alt="" title="تغییر نام پیش فرض نقشه ذهنی" width="300" height="232" class=" size-medium wp-image-1425" /></a><p class="autocap-text"><span class="hide">— </span>تغییر نام پیش فرض نقشه ذهنی</p></div></div><p>۳- گسترش موضوعات حول محصور اصلی: با انتخاب گزینه `New Child Node` از منو `Insert` یا فشردن دکمه `insert` یک گره جدید ایجاد کرده و محتوای آن را به دلخواه پر کنید.<div class="autocap aligncenter" style="width: 300px;"><div><a href="http://zebardast.ir/wp-content/uploads/2011/04/ایجاد-گره-در-نقشه-ذهنی.png"><img src="http://zebardast.ir/wp-content/uploads/2011/04/ایجاد-گره-در-نقشه-ذهنی-300x232.png" alt="" title="ایجاد گره در نقشه ذهنی" width="300" height="232" class=" size-medium wp-image-1426" /></a><p class="autocap-text"><span class="hide">— </span>ایجاد گره در نقشه ذهنی</p></div></div><p>۴- با انتخاب گزینه `Automatic Layout` از منو `Format` می توانید ظاهر نقشه ذهنی را خودکار تنظیم و زیباتر کنید.<div class="autocap aligncenter" style="width: 300px;"><div><a href="http://zebardast.ir/wp-content/uploads/2011/04/فعال-سازی-Automatic-Layout.png"><img src="http://zebardast.ir/wp-content/uploads/2011/04/فعال-سازی-Automatic-Layout-300x232.png" alt="" title="فعال سازی Automatic Layout" width="300" height="232" class=" size-medium wp-image-1427" /></a><p class="autocap-text"><span class="hide">— </span>فعال سازی Automatic Layout</p></div></div><p>۵- مرحله ۳ را بر روی گره‌ها و موضوع اصلی آن قدر ادامه دهید تا نقشه ذهنی‌تان را کامل کنید:<div class="autocap aligncenter" style="width: 300px;"><div><a href="http://zebardast.ir/wp-content/uploads/2011/04/گسترش-نقشه-ذهنی-۱.png"><img src="http://zebardast.ir/wp-content/uploads/2011/04/گسترش-نقشه-ذهنی-۱-300x232.png" alt="" title="گسترش نقشه ذهنی - ۱" width="300" height="232" class=" size-medium wp-image-1428" /></a><p class="autocap-text"><span class="hide">— </span>گسترش نقشه ذهنی &#8211; ۱</p></div></div><div class="autocap aligncenter" style="width: 300px;"><div><a href="http://zebardast.ir/wp-content/uploads/2011/04/گسترش-نقشه-ذهنی-۲.png"><img src="http://zebardast.ir/wp-content/uploads/2011/04/گسترش-نقشه-ذهنی-۲-300x232.png" alt="" title="گسترش نقشه ذهنی - ۲" width="300" height="232" class=" size-medium wp-image-1429" /></a><p class="autocap-text"><span class="hide">— </span>گسترش نقشه ذهنی &#8211; ۲</p></div></div><div class="autocap aligncenter" style="width: 300px;"><div><a href="http://zebardast.ir/wp-content/uploads/2011/04/گسترش-نقشه-ذهنی-۳.png"><img src="http://zebardast.ir/wp-content/uploads/2011/04/گسترش-نقشه-ذهنی-۳-300x232.png" alt="" title="گسترش نقشه ذهنی - ۳" width="300" height="232" class=" size-medium wp-image-1430" /></a><p class="autocap-text"><span class="hide">— </span>گسترش نقشه ذهنی &#8211; ۳</p></div></div><div class="autocap aligncenter" style="width: 300px;"><div><a href="http://zebardast.ir/wp-content/uploads/2011/04/گسترش-نقشه-ذهنی-۴.png"><img src="http://zebardast.ir/wp-content/uploads/2011/04/گسترش-نقشه-ذهنی-۴-300x232.png" alt="" title="گسترش نقشه ذهنی - ۴" width="300" height="232" class=" size-medium wp-image-1431" /></a><p class="autocap-text"><span class="hide">— </span>گسترش نقشه ذهنی &#8211; ۴</p></div></div><div class="autocap aligncenter" style="width: 300px;"><div><a href="http://zebardast.ir/wp-content/uploads/2011/04/گسترش-نقشه-ذهنی-۵.png"><img src="http://zebardast.ir/wp-content/uploads/2011/04/گسترش-نقشه-ذهنی-۵-300x232.png" alt="" title="گسترش نقشه ذهنی - ۵" width="300" height="232" class=" size-medium wp-image-1432" /></a><p class="autocap-text"><span class="hide">— </span>گسترش نقشه ذهنی &#8211; ۵</p></div></div><p>۶- شخصی سازی نقشه ذهنی: شما می توانید گره های مختلف را با کشیدن جابجا کنید. همچنین می توانید آیکون های مختلف را به گره ها اضافه کنید.<div class="autocap aligncenter" style="width: 300px;"><div><a href="http://zebardast.ir/wp-content/uploads/2011/04/شخصی-سازی-نقشه-ذهنی-۱.png"><img src="http://zebardast.ir/wp-content/uploads/2011/04/شخصی-سازی-نقشه-ذهنی-۱-300x232.png" alt="" title="شخصی سازی نقشه ذهنی - ۱" width="300" height="232" class=" size-medium wp-image-1435" /></a><p class="autocap-text"><span class="hide">— </span>شخصی سازی نقشه ذهنی &#8211; ۱</p></div></div><div class="autocap aligncenter" style="width: 300px;"><div><a href="http://zebardast.ir/wp-content/uploads/2011/04/شخصی-سازی-نقشه-ذهنی-۲.png"><img src="http://zebardast.ir/wp-content/uploads/2011/04/شخصی-سازی-نقشه-ذهنی-۲-300x232.png" alt="" title="شخصی سازی نقشه ذهنی - ۲" width="300" height="232" class=" size-medium wp-image-1436" /></a><p class="autocap-text"><span class="hide">— </span>شخصی سازی نقشه ذهنی &#8211; ۲</p></div></div><div class="autocap aligncenter" style="width: 300px;"><div><a href="http://zebardast.ir/wp-content/uploads/2011/04/شخصی-سازی-نقشه-ذهنی-۳.png"><img src="http://zebardast.ir/wp-content/uploads/2011/04/شخصی-سازی-نقشه-ذهنی-۳-300x232.png" alt="" title="شخصی سازی نقشه ذهنی - ۳" width="300" height="232" class=" size-medium wp-image-1437" /></a><p class="autocap-text"><span class="hide">— </span>شخصی سازی نقشه ذهنی &#8211; ۳</p></div></div><p>۷- برای ذخیره کردن نقشه ذهنی کافیست گزینه Save را از منو File انتخاب کنید.<div class="autocap aligncenter" style="width: 300px;"><div><a href="http://zebardast.ir/wp-content/uploads/2011/04/ذخیره-کردن-نقشه-ذهنی.png"><img src="http://zebardast.ir/wp-content/uploads/2011/04/ذخیره-کردن-نقشه-ذهنی-300x232.png" alt="" title="ذخیره کردن نقشه ذهنی" width="300" height="232" class=" size-medium wp-image-1438" /></a><p class="autocap-text"><span class="hide">— </span>ذخیره کردن نقشه ذهنی</p></div></div><p>۸- برای گرفتن خروجی (Export) از نقشه ذهنی، فرمت مورد نظر را از گزینه export در منو فایل انتخاب نمایید.<div class="autocap aligncenter" style="width: 300px;"><div><a href="http://zebardast.ir/wp-content/uploads/2011/04/گرفتن-خروجی-از-نقشه-ذهنی.png"><img src="http://zebardast.ir/wp-content/uploads/2011/04/گرفتن-خروجی-از-نقشه-ذهنی-300x232.png" alt="" title="گرفتن خروجی از نقشه ذهنی" width="300" height="232" class=" size-medium wp-image-1440" /></a><p class="autocap-text"><span class="hide">— </span>گرفتن خروجی از نقشه ذهنی</p></div></div><div class="autocap aligncenter" style="width: 580px;"><div><a href="http://zebardast.ir/wp-content/uploads/2011/04/خروجی-تصویری-با-فرمت-PNG-از-نقشه-ذهنی-Computer-programming.png"><img src="http://zebardast.ir/wp-content/uploads/2011/04/خروجی-تصویری-با-فرمت-PNG-از-نقشه-ذهنی-Computer-programming-1024x417.png" alt="" title="خروجی تصویری با فرمت PNG از نقشه ذهنی Computer programming" width="580" height="236" class=" size-large wp-image-1441" /></a><p class="autocap-text"><span class="hide">— </span>خروجی تصویری با فرمت PNG از نقشه ذهنی Computer programming</p></div></div><p><em>* شما می توانید <a href='http://zebardast.ir/wp-content/uploads/2011/04/Computer-programming.mm_.zip'>نقشه ذهنی Computer programming را دریافت کنید</a>.</em></p><p><strong>کلیدهای میانبر</strong><br /> یکی از ویژگی هایی که باعث می شود کشیدن نقشه ذهنی منجر به <a href="http://fa.wikipedia.org/wiki/%D8%B7%D9%88%D9%81%D8%A7%D9%86_%D9%81%DA%A9%D8%B1%DB%8C">طوفان فکری</a> شود، سرعت توسعه گره ها و در نتیجه موضوعات در آن است. به همین جهت استفاده از کلید های میانبر برای افزایش سرعت عمل در نگارش نقشه ذهنی بسیار موثر است. تصویر زیر کلیدهای میانبر نرم افزار FreeMind را نشان می دهد:</p><div class="autocap aligncenter" style="width: 211px;"><div><a href="http://zebardast.ir/wp-content/uploads/2011/04/FM_Key_Mappings_Quick_Guide.jpeg"><img src="http://zebardast.ir/wp-content/uploads/2011/04/FM_Key_Mappings_Quick_Guide-211x300.jpg" alt="" title="کلیدهای میانبر نرم افزار FreeMind" width="211" height="300" class=" size-medium wp-image-1443" /></a><p class="autocap-text"><span class="hide">— </span>کلیدهای میانبر نرم افزار FreeMind</p></div></div><p><strong>پیوندها</strong></p><ul><li><a href="http://fa.wikipedia.org/wiki/%D9%86%D9%82%D8%B4%D9%87_%D8%B0%D9%87%D9%86%DB%8C">نقشه ذهنی</a></li><li><a href="http://fa.wikipedia.org/wiki/%D9%81%D8%B1%DB%8C%E2%80%8C%D9%85%D8%A7%DB%8C%D9%86%D8%AF">فری‌مایند (FreeMind)</a></li><li><a href="http://thecoach.ir/1387/11/27/%D8%AA%D9%82%D8%B4%D9%87-%D8%B0%D9%87%D9%86%DB%8C-%D9%88-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%D9%87%D8%A7%DB%8C-%D8%A2%D9%86-mind-mapping/">نقشه ذهنی و کاربردهای آن – Mind Mapping</a></li><li><a href="http://fa.wikipedia.org/wiki/%D8%B7%D9%88%D9%81%D8%A7%D9%86_%D9%81%DA%A9%D8%B1%DB%8C">طوفان فکری</a></li></ul><p>موفق باشید <img src='http://zebardast.ir/wp-includes/images/smilies/icon_cool.gif' alt='8-)' class='wp-smiley' /></p><p><div style="float:left; text-align:left;><img alt='' src='http://1.gravatar.com/avatar/9fb25dddd365836466bd8051be993fa8?s=100&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D100&amp;r=G' class='avatar avatar-100 photo' height='100' width='100' /></div><h3>درباره <a href="http://zebardast.ir/author/admin/" title="سعید زبردست">سعید زبردست</a></h3><p>من برنامه نویس Java و PHP هستم. در کنار برنامه نویسی اطلاعات خوبی در زمینه پایگاه ‌های داده بخصوص MySQL دارم. برای اطلاع بیشتر به صفحه <a href="http://zebardast.ir/about">درباره سعید زبردست</a> مراجعه کنید.</p><small><a href="mailto:&#115;&#97;e&#105;&#100;&#64;&#122;ebar&#100;&#97;s&#116;&#46;&#105;&#114;" title="Send سعید زبردست Mail">Mail</a> | <a href="http://zebardast.ir" title="سعید زبردست On The Web">Web</a> | <a href="https://twitter.com/#!/saeid" title="سعید زبردست On Twitter">Twitter</a> | <a href="https://www.facebook.com/saeid.zebardast" title="سعید زبردست On Facebook">Facebook</a> | <a href="http://www.linkedin.com/in/saeid" title="سعید زبردست On LinkedIn">LinkedIn</a> | <a href="https://profiles.google.com/saeid.zebardast" title="سعید زبردست On Google+">Google+</a> | <a href="http://zebardast.ir/author/admin/" title="More Posts By سعید زبردست">More Posts (278)</a></small></p><p><a class="a2a_button_google_plus" href="http://www.addtoany.com/add_to/google_plus?linkurl=http%3A%2F%2Fzebardast.ir%2F%25d9%2585%25d8%25b9%25d8%25b1%25d9%2581%25db%258c-%25d9%2586%25d9%2582%25d8%25b4%25d9%2587-%25d8%25b0%25d9%2587%25d9%2586%25db%258c-%25d9%2588-%25d8%25a2%25d9%2585%25d9%2588%25d8%25b2%25d8%25b4-%25d9%2586%25d8%25b1%25d9%2585-%25d8%25a7%25d9%2581%25d8%25b2%25d8%25a7%25d8%25b1-freemind%2F&amp;linkname=%D9%85%D8%B9%D8%B1%D9%81%DB%8C%20%D9%86%D9%82%D8%B4%D9%87%20%D8%B0%D9%87%D9%86%DB%8C%20%D9%88%20%D8%A2%D9%85%D9%88%D8%B2%D8%B4%20%D9%86%D8%B1%D9%85%20%D8%A7%D9%81%D8%B2%D8%A7%D8%B1%20FreeMind" title="Google+" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/google_plus.png" width="16" height="16" alt="Google+"/></a><a class="a2a_button_facebook" href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fzebardast.ir%2F%25d9%2585%25d8%25b9%25d8%25b1%25d9%2581%25db%258c-%25d9%2586%25d9%2582%25d8%25b4%25d9%2587-%25d8%25b0%25d9%2587%25d9%2586%25db%258c-%25d9%2588-%25d8%25a2%25d9%2585%25d9%2588%25d8%25b2%25d8%25b4-%25d9%2586%25d8%25b1%25d9%2585-%25d8%25a7%25d9%2581%25d8%25b2%25d8%25a7%25d8%25b1-freemind%2F&amp;linkname=%D9%85%D8%B9%D8%B1%D9%81%DB%8C%20%D9%86%D9%82%D8%B4%D9%87%20%D8%B0%D9%87%D9%86%DB%8C%20%D9%88%20%D8%A2%D9%85%D9%88%D8%B2%D8%B4%20%D9%86%D8%B1%D9%85%20%D8%A7%D9%81%D8%B2%D8%A7%D8%B1%20FreeMind" title="Facebook" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fzebardast.ir%2F%25d9%2585%25d8%25b9%25d8%25b1%25d9%2581%25db%258c-%25d9%2586%25d9%2582%25d8%25b4%25d9%2587-%25d8%25b0%25d9%2587%25d9%2586%25db%258c-%25d9%2588-%25d8%25a2%25d9%2585%25d9%2588%25d8%25b2%25d8%25b4-%25d9%2586%25d8%25b1%25d9%2585-%25d8%25a7%25d9%2581%25d8%25b2%25d8%25a7%25d8%25b1-freemind%2F&amp;linkname=%D9%85%D8%B9%D8%B1%D9%81%DB%8C%20%D9%86%D9%82%D8%B4%D9%87%20%D8%B0%D9%87%D9%86%DB%8C%20%D9%88%20%D8%A2%D9%85%D9%88%D8%B2%D8%B4%20%D9%86%D8%B1%D9%85%20%D8%A7%D9%81%D8%B2%D8%A7%D8%B1%20FreeMind" title="Twitter" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_identi_ca" href="http://www.addtoany.com/add_to/identi_ca?linkurl=http%3A%2F%2Fzebardast.ir%2F%25d9%2585%25d8%25b9%25d8%25b1%25d9%2581%25db%258c-%25d9%2586%25d9%2582%25d8%25b4%25d9%2587-%25d8%25b0%25d9%2587%25d9%2586%25db%258c-%25d9%2588-%25d8%25a2%25d9%2585%25d9%2588%25d8%25b2%25d8%25b4-%25d9%2586%25d8%25b1%25d9%2585-%25d8%25a7%25d9%2581%25d8%25b2%25d8%25a7%25d8%25b1-freemind%2F&amp;linkname=%D9%85%D8%B9%D8%B1%D9%81%DB%8C%20%D9%86%D9%82%D8%B4%D9%87%20%D8%B0%D9%87%D9%86%DB%8C%20%D9%88%20%D8%A2%D9%85%D9%88%D8%B2%D8%B4%20%D9%86%D8%B1%D9%85%20%D8%A7%D9%81%D8%B2%D8%A7%D8%B1%20FreeMind" title="Identi.ca" rel="nofollow" target="_blank"><img src="http://zebardast.ir/wp-content/plugins/add-to-any/icons/identica.png" width="16" height="16" alt="Identi.ca"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fzebardast.ir%2F%25d9%2585%25d8%25b9%25d8%25b1%25d9%2581%25db%258c-%25d9%2586%25d9%2582%25d8%25b4%25d9%2587-%25d8%25b0%25d9%2587%25d9%2586%25db%258c-%25d9%2588-%25d8%25a2%25d9%2585%25d9%2588%25d8%25b2%25d8%25b4-%25d9%2586%25d8%25b1%25d9%2585-%25d8%25a7%25d9%2581%25d8%25b2%25d8%25a7%25d8%25b1-freemind%2F&amp;title=%D9%85%D8%B9%D8%B1%D9%81%DB%8C%20%D9%86%D9%82%D8%B4%D9%87%20%D8%B0%D9%87%D9%86%DB%8C%20%D9%88%20%D8%A2%D9%85%D9%88%D8%B2%D8%B4%20%D9%86%D8%B1%D9%85%20%D8%A7%D9%81%D8%B2%D8%A7%D8%B1%20FreeMind" id="wpa2a_20">اشتراک‌گذاری</a></p><p><strong>مطالب مرتبط:</strong><ol><li><a href='http://zebardast.ir/%d9%85%d8%b9%d8%b1%d9%81%db%8c-%d9%88-%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d9%be%db%8c%d8%a7%d8%af%d9%87%e2%80%8c%d8%b3%d8%a7%d8%b2%db%8c-apache-lucene/' rel='bookmark' title='معرفی و آموزش پیاده‌سازی Apache Lucene'>معرفی و آموزش پیاده‌سازی Apache Lucene</a></li><li><a href='http://zebardast.ir/%d9%85%d8%b9%d8%b1%d9%81%db%8c-%d9%86%d8%b1%d9%85-%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-wamp/' rel='bookmark' title='معرفی نرم افزار WAMP'>معرفی نرم افزار WAMP</a></li><li><a href='http://zebardast.ir/%da%86%da%af%d9%88%d9%86%d9%87-%d9%86%d8%b1%d9%85-%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-%d8%a2%d8%b2%d8%a7%d8%af-%d8%b1%d8%a7-%d8%af%d8%b1%da%a9-%da%a9%d9%86%db%8c%d9%85%d8%9f/' rel='bookmark' title='چگونه نرم افزار آزاد را درک کنیم؟'>چگونه نرم افزار آزاد را درک کنیم؟</a></li></ol></p>]]></content:encoded> <wfw:commentRss>http://zebardast.ir/%d9%85%d8%b9%d8%b1%d9%81%db%8c-%d9%86%d9%82%d8%b4%d9%87-%d8%b0%d9%87%d9%86%db%8c-%d9%88-%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d9%86%d8%b1%d9%85-%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-freemind/feed/</wfw:commentRss> <slash:comments>10</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching 45/151 queries in 0.118 seconds using disk: basic
Object Caching 7888/8023 objects using disk: basic

Served from: zebardast.ir @ 2012-05-23 01:27:18 -->
