<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>سار</title>
	<atom:link href="http://saarblog.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://saarblog.wordpress.com</link>
	<description>وب نبشت های یک دانشجوی نرم افزار</description>
	<lastBuildDate>Thu, 17 Nov 2011 22:57:10 +0000</lastBuildDate>
	<language>fa</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='saarblog.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>سار</title>
		<link>http://saarblog.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://saarblog.wordpress.com/osd.xml" title="سار" />
	<atom:link rel='hub' href='http://saarblog.wordpress.com/?pushpress=hub'/>
		<item>
		<title>رخداد‌ها در جاوا</title>
		<link>http://saarblog.wordpress.com/2010/04/30/java-events/</link>
		<comments>http://saarblog.wordpress.com/2010/04/30/java-events/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 23:19:13 +0000</pubDate>
		<dc:creator>Saar</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[آموزش]]></category>
		<category><![CDATA[جاوا]]></category>
		<category><![CDATA[gui]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[java events]]></category>

		<guid isPermaLink="false">http://saarblog.wordpress.com/?p=484</guid>
		<description><![CDATA[یکی از بازدید کننده‌های «سار»، از من خواسته که در مورد ActionListener ها توی جاوا بگم. بهانه‌ی خوبیه برای یک پست. مطالبی رو که می‌گم، عمدتن از کتاب Core Java جلد ۱ و ۲ گرفته شده و تجربه‌ی شخصیم رو کمتر توی اون دخالت می‌دم. تمام محیط‌های عامل که از رابط گرافیکی پشتیبانی می‌کنن، به [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=saarblog.wordpress.com&amp;blog=2120539&amp;post=484&amp;subd=saarblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p dir="rtl" align="justify"><a href="http://saarblog.files.wordpress.com/2010/04/click.gif"><img src="http://saarblog.files.wordpress.com/2010/04/click.gif?w=210&#038;h=300" alt="Click" title="click" width="210" height="300" class="alignright size-medium wp-image-485" /></a>یکی از بازدید کننده‌های «<a href="http://saarblog.wordpress.com">سار</a>»، <a href="http://saarblog.wordpress.com/questions/#comment-634" target="_blank">از من خواسته</a> که در مورد ActionListener ها توی جاوا بگم. بهانه‌ی خوبیه برای یک پست. مطالبی رو که می‌گم، عمدتن از کتاب Core Java جلد ۱ و ۲ گرفته شده و تجربه‌ی شخصیم رو کمتر توی اون دخالت می‌دم.</p>
<p dir="rtl" align="justify">تمام محیط‌های عامل که از رابط گرافیکی پشتیبانی می‌کنن، به صورت دائم به رخداد‌هایی مثل کلیک شدن موس یا فشردن کلید صفحه‌کیلد نظارت می‌کنن و رخداد این عوامل رو به برنامه‌های درحال اجرا گزارش می‌دن. هر برنامه تصمیم می‌گیره که چطور به اون رخداد (مثل کلیک شدن موس) پاسخ بده (و شاید هم پاسخی در کار نباشه).</p>
<p dir="rtl" align="justify">توی زبون‌هایی مثل Visual Basic رابطه‌ی بین رخداد و کد مربوط به اون کاملن مشخصه. یک کد برای یک مشخصه‌ی خاص نوشته می‌شه و اون در جایی به نام «روال رخداد» قرار داده می‌شه. کد این رول بعد از رخ دادن رخداد مورد نظر، اجرا می‌شه.</p>
<p dir="rtl" align="justify">در سمت مقابل، زبون‌هایی مثل C خام، برای این کار باید به صورت مستمر باید صف رخداد‌هایی که محیط عامل گزارش داده چک بشه. این شیوه به صورت کاملن آشکار زشت و در بعضی از موارد خیلی سخت و پیچیده می‌شه.</p>
<p dir="rtl" align="justify">جاوا روشی بین روش Visual Basic و C خام رو در پیش می‌گیره که قدرت بیشتر و پیچیدگی کمتری رو داره.</p>
<p dir="rtl" align="justify">ما یه عنصر داریم که می‌شه منبع رخداد که به اون می‌گیم Event Source و یک شنونده‌ی که به اون می‌گیم Event Listener. وقتی از سمت منبع یک رخداد رخ می‌ده، شنونده اون رو می‌شنوه و فعالیت اقدام لازم رو انجام می‌ده. هر منبع رخداد یک سری متد داره برای ثبت کردن یک شنونده. یعنی شما باید یک شنونده رو برای یک منبع رخداد ثبت کنید تا بتونید رخداد رو به اون شنونده گزارش بدین.</p>
<p dir="rtl" align="justify">همونطور که از زبون‌های شیء گرا مثل جاوا انتظار می‌ره، اطلاعات مربوط به رخداد‌ها، توی یک شیء Event کپسوله می‌شه. توی جاوا تمام شیء های رخداد سرانجام از java.util.EventObject مشتق می‌شن. البته زیر کلاس‌هایی هم برای منظور‌های مختلف مثل WindowEvent و ActionEvent وجود داره. منابع مختلف رخداد می‌تونن انواع مختلفی از اون رو به وجود بیارن. به عنوان مثال یک دکمه شیء ActionEvent رو ارسال می‌کنه در صورتی که یک پنجره شیء WindowEvent رو.</p>
<p dir="rtl" align="justify">در نهایت مثال زیر یک نمونه از کنترل رخداد برای یک دکمست:</p>
<p dir="ltr" align="left">
<code>ActionListener listener = . . .;<br />
JButton button = new JButton("Ok");<br />
button.addActionListener(listener); </code></p>
<p dir="rtl" align="justify">با این حساب، وقتی یک رخداد از سمت button رخ بده، listener از اون آگاه می‌شه. همونطور که ممکنه متوجه شده باشید، این یک کنترل رخداد فشردن دکمست.</p>
<p dir="rtl" align="justify">برای پیاده کردن یک واسط ActionListener کلاس شنونده باید یک متد با نام actionPerformed داشته باشکه که یک شیء ActionEvent رو به عنوان پارامتر قبول کنه، کد زیر رو ببینید:</p>
<p dir="ltr" align="left">
<code>class MyListener implements ActionListener<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;. . .<br />
&nbsp;&nbsp;&nbsp;&nbsp;public void actionPerformed(ActionEvent event)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// reaction to button click goes here<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;. . .<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br /></code></p>
<p dir="rtl" align="justify">خب، حالا وقتی کاربر روی button کلیک کنه، اون یک شیء ActionEvent می‌سازه و به listener.actionPerformed می‌فرسته. اشیائی مثل JButton می‌تونن تعدادی شنونده داشته باشن که وقتی رخداد رخ می‌ده، همه از اون آگاه می‌شن.</p>
<p dir="rtl" align="justify">خب، Inner Classes چیزیه که اینجا به درد می‌خوره. ما می‌تونیم به جای این که یک کلاس بسازیم برای پیاده سازی واسط مثلن ActionEvent بیایم و واسط رو هرجا که خواستیم پیاده کنیم. یعنی کد بالا اینطور می‌شه:</p>
<p dir="ltr" align="left">
<code>JButton button = new JButton("Ok");<br />
button.addActionListener(new ActionListener()<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;. . .<br />
&nbsp;&nbsp;&nbsp;&nbsp;public void actionPerformed(ActionEvent event)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// reaction to button click goes here<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;. . .<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
});</code></p>
<p dir="rtl" align="justify">و اما یه تجربه‌ی شخصی به من می‌گه که به جای این کارا از Action استفاده بشه، هم کار زیبا تر درمیاد، هم راحت تره و هم تعمیم پذیری کار بالا می‌ره. در این مورد هم یکم توضیح بدم. در نظر بگیرید که قراره توی یه طراحی، منو باشه، پاپ‌آپ منو هم باشه، نوار ابزار هم باشه. خب ممکنه، و به احتمال زیاد، گزینه‌هایی وجود خواهد داشت که توی هر سه تای این‌ها باشه. مثلن یک ویرایشگر متن، و گزینه‌ی کپی که هم توی منوی راست‌کلیک هست، هم توی منوی Edit و هم توی نوار ابزار. رفتار هر سه‌تای این گزینه‌ها یکیه، آیکنشون هم همینطور. و وقتی مثلن برای کپی نوشته‌ای وجود نداره، باید این ۳ تا غیر فعال بشن و &#8230;</p>
<p dir="rtl" align="justify">خب اگر ما ۳ تای این‌ها رو جدا جدا داشته باشیم، مدیریتشون سخت می‌شه. اما با یک Action واحد می‌شه این کار رو به راحتی انجام داد. تمرکز رو روی یک Action می‌ذاریم و بعد از اون تمام عناصر گرافیکی مربوطه ساخته می‌شه. مثال گویا تر خواهد بود:</p>
<p dir="ltr" align="left">
<code>Action action = new AbstractAction()<br />
{ <br />
&nbsp;&nbsp;&nbsp;&nbsp;public void actionPerformed(ActionEvent event)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// reaction to button click goes here<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;. . .<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
};<br />
action.putValue(Action.NAME, "OK"); <br />
action.putValue(Action.SMALL_ICON, smallIcon); //The menu will use this icon<br />
action.putValue(Action.LARGE_ICON_KEY, largeIcon); //The button will use this icon <br />
action.putValue(Action.SHORT_DESCRIPTION, "A short description for display in a tooltip");<br />
JButton button = new JButton (action); <br />JMenuItem menuItem = new JMenuItem (action); <br /></code></p>
<p dir="rtl" align="justify">خب به همین راحتی! در کل بحث رخداد‌ها توی جاوا بحث شیرین، مهم و جالبیه. اگر درک نشه، خیلی سخت خواهد بود! در کل کتاب <a href="http://saarblog.wordpress.com/2010/03/02/java-and-c-plus-plus-books/">Core Java, Volume I</a> یک فصل رو بهش اختصاص داده که در مورد خیلی از رخداد‌ها مثل رخداد‌های پنجره و موس بحث شده توش.</p>
<p>=-=-=-=-=<br />
<i>Powered by<br />
<b><a href='http://bilbo.gnufolks.org/'>Bilbo Blogger</a></b></i></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/saarblog.wordpress.com/484/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/saarblog.wordpress.com/484/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/saarblog.wordpress.com/484/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/saarblog.wordpress.com/484/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/saarblog.wordpress.com/484/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/saarblog.wordpress.com/484/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/saarblog.wordpress.com/484/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/saarblog.wordpress.com/484/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/saarblog.wordpress.com/484/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/saarblog.wordpress.com/484/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/saarblog.wordpress.com/484/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/saarblog.wordpress.com/484/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/saarblog.wordpress.com/484/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/saarblog.wordpress.com/484/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=saarblog.wordpress.com&amp;blog=2120539&amp;post=484&amp;subd=saarblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://saarblog.wordpress.com/2010/04/30/java-events/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9437825a9e40ae76419e37cd1e663a87?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">ИІΜΑЯ</media:title>
		</media:content>

		<media:content url="http://saarblog.files.wordpress.com/2010/04/click.gif?w=210" medium="image">
			<media:title type="html">click</media:title>
		</media:content>
	</item>
		<item>
		<title>Regex، ابزاری کاربردی در ویرایشگر‌های متنی</title>
		<link>http://saarblog.wordpress.com/2010/03/04/regular-expression/</link>
		<comments>http://saarblog.wordpress.com/2010/03/04/regular-expression/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 23:31:01 +0000</pubDate>
		<dc:creator>Saar</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[آموزش]]></category>
		<category><![CDATA[روزانه]]></category>
		<category><![CDATA[Regular Expression]]></category>

		<guid isPermaLink="false">http://saarblog.wordpress.com/?p=472</guid>
		<description><![CDATA[یکی از امکانات جالبی که ویرایشگر‌های متن پیشرفته دارن، جستجو برای «عبارات منظم» که خیلی به درد برنامه نویسی و کلن ویرایش متن می‌خوره. با این امکان می‌شه به جای جست و جو برای یک متن، یک الگو رو جست و جو کرد. بذارین با یک مثال نشون بدم بهتون. کد زیر رو (کد جاوا) [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=saarblog.wordpress.com&amp;blog=2120539&amp;post=472&amp;subd=saarblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p dir="rtl" align="justify">یکی از امکانات جالبی که ویرایشگر‌های متن پیشرفته دارن، جستجو برای «عبارات منظم» که خیلی به درد برنامه نویسی و کلن ویرایش متن می‌خوره. با این امکان می‌شه به جای جست و جو برای یک متن، یک الگو رو جست و جو کرد. بذارین با یک مثال نشون بدم بهتون. کد زیر رو (کد جاوا) ببینید (این کد فقط برای مثاله، از نظر منطقی ممکنه به درد نخوره):</p>
<p><code>public class StatePropertiesPanel extends JPanel implements StateProperties {<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private JComboBox statesComboBox;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private JComboBox zeroStateComboBox;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private JButton zeroStateColorButton;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private JComboBox oneStateComboBox;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private JButton oneStateColorButton;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private JTextField nameTextField;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private JCheckBox isFinalStateCheckBox;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private JButton addButton;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private JButton removeButton;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private JButton applyButton;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private Graph graph;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private JButton openButton;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private JButton saveButton;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private Action openAction;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private Action saveAction;<br />
&nbsp;&nbsp;<br />
}</code></p>
<p dir="rtl" align="justify">خب می‌خوایم برای این class یک سازنده بسازیم که توی اون، این مقادیر رو هم مقدار دهی کنیم با پارامترهای متد سازنده، یعنی نتیجه‌ی خروجی باید این شکلی بشه:</p>
<p><code>public class StatePropertiesPanel extends JPanel implements StateProperties {<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private JComboBox statesComboBox;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private JComboBox zeroStateComboBox;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private JButton zeroStateColorButton;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private JComboBox oneStateComboBox;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private JButton oneStateColorButton;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private JTextField nameTextField;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private JCheckBox isFinalStateCheckBox;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private JButton addButton;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private JButton removeButton;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private JButton applyButton;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private Graph graph;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private JButton openButton;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private JButton saveButton;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private Action openAction;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private Action saveAction;<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public StatePropertiesPanel(JComboBox statesComboBox,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JComboBox zeroStateComboBox,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JButton zeroStateColorButton,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JComboBox oneStateComboBox, <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JButton oneStateColorButton, <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JTextField nameTextField, <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JCheckBox isFinalStateCheckBox, <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JButton addButton, <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JButton removeButton, <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JButton applyButton, <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Graph graph, <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JButton openButton, <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JButton saveButton, <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Action openAction, <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Action saveAction) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.statesComboBox = statesComboBox;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.zeroStateComboBox = zeroStateComboBox;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.zeroStateColorButton = zeroStateColorButton;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.oneStateComboBox = oneStateComboBox;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.oneStateColorButton = oneStateColorButton;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.nameTextField = nameTextField;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.isFinalStateCheckBox = isFinalStateCheckBox;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.addButton = addButton;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.removeButton = removeButton;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.applyButton = applyButton;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.graph = graph;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.openButton = openButton;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.saveButton = saveButton;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.openAction = openAction;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.saveAction = saveAction;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}</code> </p>
<p dir="rtl" align="justify">خب اگر بخوایم دستی این تغییرات رو اعمال کنیم، هم وقت گیر می‌شه و هم احتمال خطا بالا می‌ره. اما استفاده از «<a href="http://en.wikipedia.org/wiki/Regular_expression" target="_blank"><img src="http://www.google.com/s2/favicons?domain=en.wikipedia.org" />عبارت منظم</a>» کار رو برای ما خیلی راحت می‌کنه. بذارین قبل از این، چند‌تا نرم افزار که این قابلیت رو پشتیبانی می‌کنن، معرفی کنم.</p>
<p dir="rtl" align="justify">برای ویندوز اول:</p>
<ul>
<li align="justify"><a href="http://notepad-plus.sourceforge.net/uk/site.htm" target="_blank"><img src="http://www.google.com/s2/favicons?domain=notepad-plus.sourceforge.net" /><span dir="ltr">Notepad++</span></a> برنامه‌ی خیلی قوی و متن باز و البته رایگان.</li>
<li align="justify"><a href="http://www.geany.org/Support/RunningOnWindows" target="_blank"><img src="http://www.google.com/s2/favicons?domain=www.geany.org" />Geany</a> که یک برنامه‌ی در ابتدا گنو/لینوکسی بوده ولی به لطف متن‌باز بودن، نسخه‌ی ویندوزی اون هم وجود داره.</li>
<li align="justify"><a href="http://mooedit.sourceforge.net/" target="_blank"><img src="http://www.google.com/s2/favicons?domain=mooedit.sourceforge.net" />MEdit</a> که برنامه‌ی بدی به نظر نمیاد. گنو/لینوکسیه ولی برای ویندوز کامپایل شده.</li>
<li align="justify"><a href="http://netbeans.org" target="_blank"><img src="http://www.google.com/s2/favicons?domain=netbeans.org" />Netbeans</a> هم که یک محیط مجتمع قوی به حساب میاد.</li>
<li align="justify"><a href="http://www.vim.org/" target="_blank"><img src="http://www.google.com/s2/favicons?domain=www.vim.org" />Vim</a> که هرچی در موردش بگم کم گفتم. البته خودم خیلی خوب بلد نسیتم باهاش کار کنم، ولی <a href="http://lincafe.wordpress.com/" target="_blank"><img src="http://www.google.com/s2/favicons?domain=lincafe.wordpress.com" />میلاد</a> توی وبلاگش متن‌های خوبی در این مورد نوشته</li>
<li align="justify">و خیلی برنامه‌های دیگه و تقریبن تمام برنامه‌هایی که این پایین برای لینوکس معرفی می‌کنم که نسخه‌ی ویندوزی هم دارن. فعلن همینا کافیه.</li>
</ul>
<p dir="rtl" align="justify">و برای لینوکس:</p>
<ul>
<li align="justify">Geany</li>
<li align="justify">MEdit</li>
<li align="justify">Kate</li>
<li align="justify">KWrite</li>
<li align="justify"><a href="http://netbeans.org" target="_blank"><img src="http://www.google.com/s2/favicons?domain=netbeans.org" />Netbeans</a></li>
<li align="justify">Vim</li>
<li align="justify">Bluefish</li>
<li align="justify"> و خیلی‌های دیگه.</li>
</ul>
<p dir="rtl" align="justify">خب اول یه فایل جدید باز می‌کنم و این مقادیر رو توی اون کپی می‌کنم:</p>
<p><code>private JComboBox statesComboBox;<br />
private JComboBox zeroStateComboBox;<br />
private JButton zeroStateColorButton;<br />
private JComboBox oneStateComboBox;<br />
private JButton oneStateColorButton;<br />
private JTextField nameTextField;<br />
private JCheckBox isFinalStateCheckBox;<br />
private JButton addButton;<br />
private JButton removeButton;<br />
private JButton applyButton;<br />
private Graph graph;<br />
private JButton openButton;<br />
private JButton saveButton;<br />
private Action openAction;<br />
private Action saveAction;<br />
</code></p>
<p dir="rtl" align="justify">از منوی Edit ویرایشگر متنم که الان Kate است، Replace رو انتخاب می‌کنم. برای نرم‌افزار‌هایی که معرفی کردم، ممکنه این گزینه توی منو‌هایی مثل Search یا Find هم باشه. من باید این کار رو کنم، اول private‌ها حذف بشه، بعد «;» رو باید با «,» تعویض کنم، در آخر هم <span dir="ltr">public StatePropertiesPanel(</span> رو به ابتدا و <span dir="ltr">({}</span> رو به انتها اضافه کنم. این کار آخر که آسونه و می‌شه با دست انجام داد، اما برای بقیه‌ی کار، Replace رو باز می‌کنم، گزینه‌ی Regular expression رو فعال می‌کنم و توی کادر Find عبارت زیر رو می‌نویسم (بعد از این توضیح می‌دم که معانی این عبارات چی هستن):</p>
<p><code>private (.*); </code></p>
<p dir="rtl" align="justify">و توی کادر Replace مقدار زیر رو می‌نویسم:</p>
<p><code>\t\1,</code> </p>
<p dir="rtl" align="justify">و در انتها دکمه‌ی Replace All رو می‌زنم. نتیجه به شکل زیر می‌شه:</p>
<p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JComboBox statesComboBox,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JComboBox zeroStateComboBox,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JButton zeroStateColorButton,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JComboBox oneStateComboBox,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JButton oneStateColorButton,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JTextField nameTextField,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JCheckBox isFinalStateCheckBox,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JButton addButton,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JButton removeButton,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JButton applyButton,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Graph graph,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JButton openButton,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JButton saveButton,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Action openAction,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Action saveAction,<br />
</code> </p>
<p dir="rtl" align="justify">خب، کامای خط آخر رو پاک می‌کنم و به جای اون می‌نویسم <span dir="ltr">({}</span> و ابتدای خط اول <span dir="ltr">public StatePropertiesPanel(</span> رو اضافه می‌کنم. تا اینجا که متد سازنده‌ی من شکل کلی رو به خودش گرفت. پس متن رو کپی می‌کنم به سورس فایلم. اما حالا محتوایت این متد سازنده. دوباره مقایر رو مثل چند مرحله قبل به یک فایل جدید (و موقت، راه‌های دیگه هم هست، ولی این از همه دم دست تره!) انتقال می‌دم و مراحل رو اینبار به این شکل تکرار می‌کنم. استراتژی کار این بار به این شکله. private ها و اسم کلاس‌هایی که شیء از اون ساخته می‌شه باید حذف بشه، اسم شیء باید با اسم فیلد تغییر کنه (یعنی یه <span dir="ltr">this.</span> بیاد قبلش) و بعد مساوی و باز اسم شیء به عنوان پارامتر متد. پس توی کادر Find این رو می‌نویسم:</p>
<p><code>private .* (.*);</code> </p>
<p dir="rtl" align="justify">و بعد توی کادر Replace می‌نویسم:</p>
<p><code>\t\tthis.\1 = \1;</code> </p>
<p dir="rtl" align="justify">و Raplace all رو می‌زنم. نتیجه می‌شه:</p>
<p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.statesComboBox = statesComboBox;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.zeroStateComboBox = zeroStateComboBox;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.zeroStateColorButton = zeroStateColorButton;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.oneStateComboBox = oneStateComboBox;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.oneStateColorButton = oneStateColorButton;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.nameTextField = nameTextField;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.isFinalStateCheckBox = isFinalStateCheckBox;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.addButton = addButton;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.removeButton = removeButton;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.applyButton = applyButton;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.graph = graph;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.openButton = openButton;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.saveButton = saveButton;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.openAction = openAction;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.saveAction = saveAction;<br />
</code> </p>
<p dir="rtl" align="justify">خب، به همین راحتی این‌ها هم تولید شد.</p>
<p dir="rtl" align="justify">با یک مثال شروع کردم که حرف‌هام ملموس باشه. این الگو، قواعد خودش رو داره و قواعد متفاوتی داره. من <a href="http://en.wikipedia.org/wiki/Regular_expression#POSIX_Basic_Regular_Expressions"><img src="http://www.google.com/s2/favicons?domain=en.wikipedia.org" />POSIX Basic Regular Expressions</a> همراه با <a href="http://en.wikipedia.org/wiki/Regular_expression#POSIX_Extended_Regular_Expressions"><img src="http://www.google.com/s2/favicons?domain=en.wikipedia.org" />POSIX Extended Regular Expressions</a> رو توضیح می‌دم. یک عبارت منظم یک مجموعه از رشته‌ها رو مطابق می‌شه که می‌تونیم از این مجموعه برای پیدا کردن متن مورد نظر استفاده کنیم. ما یک سری Metacharacter (که حالا فارسی بگیم ابرحرف) داریم که معنی خاصی دارن. اولی این‌ها رو یاد بگیریم:</p>
<ul>
<li align="justify">«.» مطابق می‌شه با یک حرف. البته در اکثر بنامه‌ها این حرف شامل خط جدید نمی‌شه</li>
<li align="justify">«<span dir="ltr">[ ]</span>» مطابق یکی از حروف مشخص‌شده یا شامل شده می‌شه. مثلن <span dir="ltr">[abc]</span> مطابق می‌شه با حرف a یا b یا c و <span dir="ltr">[a-z]</span> مطابق هر حرف از حروف کوچیک الفبای انگلیسی می‌شه. <span dir="ltr">[abx-z]</span> مطابق a یا b یا x یا y یا z می‌شه. <span dir="ltr">[a\-b]</span> هم مطابق a یا &#8211; یا b می‌شه. \ اینجا برای تغییر معنی به کار می‌ره. <span dir="ltr">[a-dx-z]</span> هم مطابق می‌شه با a یا b یا c یا d یا x یا y یا z می‌شه. یعنی می‌شه بازه‌ها رو ترکیب کرد.</li>
<li align="justify">«<span dir="ltr">[^ ]</span>» مطابق هر حرفی به‌جز حرف‌های درون براکت می‌شه. به عنوان مثال <span dir="ltr">[^abc]</span> تمام حروف به‌جز a و b و c خواهد بود. قواعد براکت معمولی رو هم می‌شه به کار برد</li>
<li align="justify">«^» معنی موقعیت یک رشته درون رشته‌ی دیگه رو می‌ده که این معنی برای ابزار‌هایی که خط در اونها معنی داره (مثل ویرایشگر‌های متنی) به معنی شروع خط خواهد بود.</li>
<li align="justify">«$» معنی موقعیت پایان رشته و در ابزار‌های خطی، به معنی پایان خط هست. مثال‌های انتها معنی رو بهتر روشن می‌کنه.</li>
<li align="justify">«<span dir="ltr">()</span>» یک عبارت علامتگذاری شده رو مشخص می‌کنه. شما می‌تونید توی پرانتز یک عبارت منظم رو که براتون مهمه، مثل نام شیء تو مثال اول مطلب، علامت بزنید تا از اون استفاده کنید. قسمت زیر هم مرتبط با این قستمه.</li>
<li align="justify">«<span dir="ltr">\n</span>» که n یک عدد بین ۱ تا ۹ هست که مطابق می‌شه با nامین رشته‌ی علامت گذاری شده با پرانتز. بعضی ابزار ها اجازه‌ی گستش این دستور رو بیشتر از ۹ فراهم می‌کنن.</li>
<li align="justify">«*» مطابق می‌شه با رخداد ۰ یا بیشتر از حرف ماقبل این علامت. به این معنی که <span dir="ltr">ab*c</span> رو اگر برای عبارت منظم داشته باشیم، مطابق می‌شه با ac و abc و abbc و abbbc و&#8230;.</li>
<li align="justify">«+» مطابق می‌شه با رخداد ۱ یا بیشتر از حرف ماقبل این علامت. به این معنی که <span dir="ltr">ab+c</span> رو اگر برای عبارت منظم داشته باشیم، مطابق می‌شه با abc و abbc و abbbc و&#8230;.</li>
<li align="justify">«?» مطابق می‌شه با رخداد ۰ یا یک باز از حرف ماقبل این علامت. به این معنی که <span dir="ltr">ab?</span> مطابق a و ab خواهد بود.</li>
<li align="justify">«|» برای اجتماع کردن دو عبارت منظم می‌شه. یا به عبارتی برای انتخاب بین دو عبارت منظم به کار می‌ره. مثلن abc|def مطابق abc و def می‌شه.</li>
<li align="justify">«<span dir="ltr">{n,m}</span>» هم مطابق با n تا m تکرار از حرف ما قبل خودش می‌شه. این عبارت ممکنه توسط ابزار‌های قدیمی تر پشتیبانی نشه. مثال هم: <span dir="ltr">ab{1,3}</span> مطابق می‌شه با ab و abb و abbb.</li>
</ul>
<p dir="rtl">و البته اگر برنامه‌نویسی هم کرده باشین، مژده اینه که می‌تونید از حروف خاص مثل <span dir="ltr">\t</span> یا <span dir="ltr">\n</span> هم استفاده کنید.</p>
<p dir="rtl">اما با چند مثال بیشتر مفهوم رو گسترش می‌دم.</p>
<p><code>.at</code> </p>
<p dir="rtl">مطابق تمام رشته‌های ۳ حرفی شامل at می‌شه. مثل cat و bat و hat و حتی 2at</p>
<p><code>[hc]at</code> </p>
<p dir="rtl">مطابق hat و cat می‌شه و نه چیز دیگه‌ای.</p>
<p><code>[^b]at</code> </p>
<p dir="rtl">مطابق تمام رشته‌های ۳ حرفی به‌جز bat می‌شه.</p>
<p><code>^[hc]at</code> </p>
<p dir="rtl">مطابق تمام cat و hat ها در اول خط می‌شه.</p>
<p><code>[hc]at$</code> </p>
<p dir="rtl">مطابق تمام cat و hat های انهای خط می‌شه.</p>
<p><code>[hc]?at</code> </p>
<p dir="rtl">مطابق hat و cat و at می‌شه.</p>
<p><code>.*=</code> </p>
<p dir="rtl">مطابق تمام رشته‌هایی که به = ختم می‌شن، می‌شه.</p>
<p dir="rtl">و برای پراتز‌. کاربرد عبارت علامت گذاری شده برای جایگزین کردن یک رشته است. بذارین با یه مثال بیشتر شرح بدم. من عبارت منظمی می‌خوام بنویسم که کلمات قبل از یک «=» رو با کلمات بعد از اون عوض کنم و بلعکس. پس عبارت منظم زیر رو باید برای پیدا کردن کلمات به کار ببرم (فعلن فرض کنیم که تمام متن قبل از مساوی یک کلمه و بعد از اون هم یک کلمه است):</p>
<p><code>(.*)=(.*)</code> </p>
<p dir="rtl">طبق فرض، پرانتز اول برابر کلمه‌ی اول و پرانتز دوم برابر کلمه‌ی دومه. حالا برای جایگزینی، کادر Replace رو با عبارت زیر پر می‌کنم:</p>
<p><code>\2=\1</code> </p>
<p dir="rtl" align="justify">به همین راحتی. بذارین یه مثال خیلی کاربردی برای وبلاگ نویسا بگم. می‌خوایم قبل تمام لینک‌های موجود توی یک متن، <a href="http://en.wikipedia.org/wiki/Favicon" target="_blank"><img src="http://www.google.com/s2/favicons?domain=en.wikipedia.org" />favicon</a> اون رو (همون آیکون کوچیکه که کنار نوار آدرس توی مرورگر دیده می‌شه) رو با استفاده از «<a href="http://salarblog.wordpress.com/2010/02/08/google-favicon-service-how-to-apply/" title="سرویس گوگل برای بدست آوردن favicon ها و اعمال آن بر لینک های خارجی" target="_blank"><img src="http://www.google.com/s2/favicons?domain=salarblog.wordpress.com" />سرویس گوگل برای بدست آوردن favicon ها و اعمال آن بر لینک های خارجی</a>» قرار بدیم. تقریبن تمام ابزار‌هایی که برای نوشتن وبلاگ استفاده می‌شه (مثل ویرایشگر خود وبلاگ(ها) و <a href="http://bilbo.gnufolks.org/"><img src="http://www.google.com/s2/favicons?domain=bilbo.gnufolks.org" />Bilbo Blogger</a></strong>) این امکان رو به شما می‌دن که بعد از نوشتن متن، کد HTML اون رو ببینید. پس شما اول متن رو بنویسید و کد HTML اون رو به یک ویرایشگر متن انتقال بدین تغییرات رو اعمال کنید و باز کد رو از ویرایشگر متن به وبلاگ منتقل کنید. خب اول در مورد لینک برای کسانی که آشنایی ندارن، این رو بگم.</p>
<p dir="rtl" align="justify">وقتی شما یک لینک می‌سازین، برچسبی قبل و بعد اون قسمت لینک اضافه می‌شه. به عنوان مثال لینک «<a href="http://saarblog.wordpress.com"><img src="http://www.google.com/s2/favicons?domain=saarblog.wordpress.com" />سار</a>» رو شرح می‌دم:</p>
<p><code>&lt;a href="http://saarblog.wordpress.com"&gt;سار&lt;/a&gt; </code></p>
<p dir="rtl" align="justify">خب، برچسب <span dir="ltr">&lt;a&gt;</span> معرفی کننده‌ی شروع یک لینکه. خصوصیت href از اون مشخص کننده‌ی آدرس لینکه. و برچسب با <span dir="ltr">&lt;/a&gt;</span> تموم می‌شه. ما باید domain مربوط رو پیدا کنیم. این domain قسمت ابتدای URL آدرس ماست و یا تا اولین / و در صورت نبودن اولین /، تا آخر URL ادامه داره. از اونجا که حروف بزرگ و کوچیک تفاوتی ایجاد نمی‌کنه، پس می‌تونیم برچسب <span dir="ltr">&lt;A&gt;</span> رو هم داشته باشیم. اول عبارت منظم:</p>
<p><code>&lt;[aA] ([^&gt;]*[hH][rR][eE][fF]="?[hH][tT][tT][pP][sS]?)://([^/" ]+)("?[^&gt;]*)&gt;</code></p>
<p dir="rtl" align="justify">خب برای این که یک لینک شروع بشه، باید <span dir="ltr">&lt;a</span> یا <span dir="ltr">&lt;A</span> رو داشته باشیم که من از <span dir="ltr">&lt;[aA]</span> استفاده کردم. بعد از اون می‌تونه هر عبارتی بیاد به‌جز «<span dir="ltr">&gt;</span>» و عبارت هم برای ما اهمیت داره (برای این که ساختار لینک از بین نره) ولی حتمن باید یک فاصله بعد از a یا A باشه (وگرنه ممکنه یه برچسب دیگه باشه!). عبارت <span dir="ltr">href=</span> شروع آدرس URL رو نشون می‌ده که ممکنه (و در اکثر موارد) این URL بین دو «&#8221;» قرار داره. برای همین بعد از «&#8221;» یک علامت سوال قرار دادم. پروتکل می‌تونه http یا https باشه، و از اونجا که می‌شه اینطور هم نوشت: HtTpS، من کاراکتر به کاراکتر اون‌ها رو توی براکت قرار دادم. بعد از اون حتمن باید <span dir="ltr">://</span> وجود داشته باشه، بعد Domain از اینجا تا اولین «/» یا «&#8221;» یا فاصله ادامه خواد داشت. و بعد ادامه تا علامت «<span dir="ltr">&gt;</span>». خب، حالا عبارت Replace باید به این شکل ساخته بشه:</p>
<p><code>&lt;a \1://\2\3&gt;&lt;img src="http://www.google.com/s2/favicons?domain=\2" /&gt;</code> </p>
<p dir="rtl" align="justify">پرانز دوم Domain بود، برای همین جاهایی که نیاز بود، <span dir="ltr">\2</span> رو استفاده کردم. جالب بود، نه؟</p>
<p dir="rtl" align="justify">فکر می‌کنم الآن می‌تونید مثال‌های برنامه نویسی رو متوجه بشین.<br />پ‌ن: این ترفند favicon رو برای این پست اعمال کردم.</p>
<p dir="ltr" align="justify">=-=-=-=-=<br />
<em>Powered by <strong><a href="http://bilbo.gnufolks.org/"><img src="http://www.google.com/s2/favicons?domain=bilbo.gnufolks.org" />Bilbo Blogger</a></strong>, Made with <strong><a href="http://bluefish.openoffice.nl/"><img src="http://www.google.com/s2/favicons?domain=bluefish.openoffice.nl" />Bluefish HTML editor</a></strong>.</em></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/saarblog.wordpress.com/472/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/saarblog.wordpress.com/472/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/saarblog.wordpress.com/472/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/saarblog.wordpress.com/472/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/saarblog.wordpress.com/472/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/saarblog.wordpress.com/472/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/saarblog.wordpress.com/472/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/saarblog.wordpress.com/472/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/saarblog.wordpress.com/472/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/saarblog.wordpress.com/472/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/saarblog.wordpress.com/472/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/saarblog.wordpress.com/472/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/saarblog.wordpress.com/472/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/saarblog.wordpress.com/472/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=saarblog.wordpress.com&amp;blog=2120539&amp;post=472&amp;subd=saarblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://saarblog.wordpress.com/2010/03/04/regular-expression/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9437825a9e40ae76419e37cd1e663a87?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">ИІΜΑЯ</media:title>
		</media:content>

		<media:content url="http://www.google.com/s2/favicons?domain=en.wikipedia.org" medium="image" />

		<media:content url="http://www.google.com/s2/favicons?domain=notepad-plus.sourceforge.net" medium="image" />

		<media:content url="http://www.google.com/s2/favicons?domain=www.geany.org" medium="image" />

		<media:content url="http://www.google.com/s2/favicons?domain=mooedit.sourceforge.net" medium="image" />

		<media:content url="http://www.google.com/s2/favicons?domain=netbeans.org" medium="image" />

		<media:content url="http://www.google.com/s2/favicons?domain=www.vim.org" medium="image" />

		<media:content url="http://www.google.com/s2/favicons?domain=lincafe.wordpress.com" medium="image" />

		<media:content url="http://www.google.com/s2/favicons?domain=netbeans.org" medium="image" />

		<media:content url="http://www.google.com/s2/favicons?domain=en.wikipedia.org" medium="image" />

		<media:content url="http://www.google.com/s2/favicons?domain=en.wikipedia.org" medium="image" />

		<media:content url="http://www.google.com/s2/favicons?domain=en.wikipedia.org" medium="image" />

		<media:content url="http://www.google.com/s2/favicons?domain=salarblog.wordpress.com" medium="image" />

		<media:content url="http://www.google.com/s2/favicons?domain=bilbo.gnufolks.org" medium="image" />

		<media:content url="http://www.google.com/s2/favicons?domain=saarblog.wordpress.com" medium="image" />

		<media:content url="http://www.google.com/s2/favicons?domain=bilbo.gnufolks.org" medium="image" />

		<media:content url="http://www.google.com/s2/favicons?domain=bluefish.openoffice.nl" medium="image" />
	</item>
		<item>
		<title>برنامه نویسی، جاوا و معرفی چند کتاب</title>
		<link>http://saarblog.wordpress.com/2010/03/02/java-and-c-plus-plus-books/</link>
		<comments>http://saarblog.wordpress.com/2010/03/02/java-and-c-plus-plus-books/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 22:07:46 +0000</pubDate>
		<dc:creator>Saar</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[جاوا]]></category>
		<category><![CDATA[روزانه]]></category>

		<guid isPermaLink="false">http://saarblog.wordpress.com/?p=430</guid>
		<description><![CDATA[معرفی چند کتاب برای یاد‌گیری جاوا و <span dir="ltr">C++</span>.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=saarblog.wordpress.com&amp;blog=2120539&amp;post=430&amp;subd=saarblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p align="justify" dir="rtl"><img class="alignleft size-full wp-image-440" title="photo_books" src="http://saarblog.files.wordpress.com/2010/03/photo_books.jpg?w=249&#038;h=290" alt="Books Photo" width="249" height="290" />خیلی وقتا از من سوال می‌شه که «چه کتابی رو برای یادگیری <a href="http://saarblog.wordpress.com" target="_blank">جاوا</a> خوبه؟» یا حتی «چه‌کار کنیم که برنامه‌نویسی یاد بگیریم؟» و از این قبیل سوال‌ها. مدت‌هاست می‌خوام در این مورد یه مطلب بنویسم.</p>
<p align="justify" dir="rtl">اگه بخوام به کسی که از برنامه‌نویسی هیچ‌چیز بلد نیست، برنامه نویسی یاد بدم، خب اول از خوندن کتاب‌های آقای جعفر نژاد منعش می‌کنم. با کمال احترامی که برای ایشون قائلم، و البته که خیلی از کتاب‌هاشون رو خوندم، این نظر رو دارم و معتقدم کتاب‌های ایشون از نظر علمی در سطح خیلی پایینی هستن در حدی که کتاب <a href="http://saarblog.wordpress.com" target="_blank">جاوا</a> ایشون رو نخوندن، یک گام به جلو برای یاد گرفتن <a href="http://saarblog.wordpress.com" target="_blank">جاوا</a>ست. البته با کمال تاسف باید بگم که اساتید محترم رشته‌ی کامپیوتر در اغلب موارد کتاب‌های ایشون رو معرفی می‌کنن (مخصوصاً برای درس‌های پایه‌ای) و دانش‌جوی تازه کار رو دور تر از حدی که هست می‌برن.</p>
<p align="justify" dir="rtl">برای شروع برنامه نویسی، فکر می‌کنم زبون <span dir="ltr">C++</span> گزینه‌ی خوبی باشه. در حال حاضر پاسکال رو خیلی‌ها توصیه می‌کنن که من با این زبون مخالفم (البته به عنوان واحد دانشگاهی این درس رو پاس کردم). سنتی بودن این زبون و قدیمی بودنش دلیل اصلی این حرف منه. دانشجوی ترم اولی پاسکال می‌خونه، ترم بعد همون پاسکالی رو که خونده به زبون <span dir="ltr">C++</span> می‌خونه. این یعنی یک گام درجا زدن.</p>
<p align="justify" dir="rtl">برای شروع یادگیری <span dir="ltr">C++</span> من کتاب «<span dir="ltr">C++: a beginner&#8217;s guide</span>» و بعد از اون کتاب خوب «<span dir="ltr">C++ nuts &amp; bolts: for experienced programmers</span>» که نسخه‌ی ترجمه شده‌ی تقریباً خوبی با نام «راهنمای سریع <span dir="ltr">C++</span>» داره. البته به نظر من کتاب دوم هم می‌تونه برای شروع <span dir="ltr">C++</span> مورد استفاده قرار بگیره. برای مرجع هم دو کتاب «<span dir="ltr">C++: The Complete Reference</span>» و کتاب معروف «<span dir="ltr">C++ how to program</span>» که ترجمه‌های زیادی هم از این کتاب وجود داره. من یکی از این ترجمه‌ها رو با نام «چگونه با <span dir="ltr">C++</span> برنامه بنویسیم» از نشر «سیمای دانش» رو خودم گرفتم که نگارش خوبی <u>نداشت</u> و اون رو پیشنهاد نمی‌کنم. این دو کتاب رو به عنوان مرجع گفتم ونه به عنوان محور آموزش. دقت کنید که اگر همین الان یکی از این دوتا رو باز کنید و از اولی بخونید، از برنامه نویسی زده می‌شین. درست مثل اینه که شما یک فرهنگ لغت رو بشینید از اول بخونید.</p>
<p align="justify" dir="rtl">اما <a href="http://saarblog.wordpress.com" target="_blank">جاوا</a>، راستشو بخواین دیشب که به <a href="http://linuxfm.com/podcasts/lfm2/" title="قسمت دوم از پادکست لینوکس اف‌ام" target="_blank">پادکست دوم رادیو لینوکس</a> (که کار بسیار جالبیه) گوش می‌کردم، حس حسادت به برنامه نویس‌های <span dir="ltr">C++</span> توی من به وجود اومد. البته هرچند به زودی <a href="http://saarblog.wordpress.com/chichak/" title="Chichak" target="_blank">چیچک</a> رو به عنوان یه پروژه‌ی ابتکاری توسعه می‌دم ولی خب برای این که بشه یه برنامه طوری که بتونه مورد اسفتاده‌ی عموم قرار بگیره نوشت، بهترین زبون <span dir="ltr">C++</span> خواهد بود. ولی به شخصه، من دوست دارم با زبونی برنامه بنویسم که ابهام آمیز نباشه. همه چیز اون طبق قاعده و مستند شده باشه و تفاوت میون Compilerها در ترجمه‌ی برنامه وجود نداشته باشه. برای من سخته از کدی به شکل <span dir="ltr">String.compareTo</span> در <a href="http://saarblog.wordpress.com" target="_blank">جاوا</a> دل بکنم<del datetime="2010-03-03T08:30:01+00:00"> و اون رو با <span dir="ltr">strcmp</span> از <span dir="ltr">C++</span> تعویض کنم.</del> همونقدر که از مستقل از بستر بودن <a href="http://saarblog.wordpress.com" target="_blank">جاوا</a> نمی‌شه گذشت، از قدرت <span dir="ltr">C++</span> هم نمی‌شه گذشت و خوشبختانه اگر در <a href="http://saarblog.wordpress.com" target="_blank">جاوا</a> به قدرت <span dir="ltr">C++</span> نیاز شد، می‌شه با Native نویسی اون رو بدست آورد.</p>
<p align="justify" dir="rtl">اما برای کسانی که مایل هستن <a href="http://saarblog.wordpress.com" target="_blank">جاوا</a> رو یاد بگیرن بگم که بهترین کتابی که من می‌تونم معرفی کنم، دو جلد کتاب «Core Java» از نشر «Prentice Hall» هست که به نظر من خوندن این دو جلد کتاب برای یاد گیری <a href="http://saarblog.wordpress.com" target="_blank">جاوا</a> از هر کتابی بهتره. «<a href="http://java.sun.com/docs/books/tutorial/index.html" title="The Java Tutorials" target="_blank">The Java Tutorials</a>» هم منبع خیلی مفیدی برای یاد گیری <a href="http://saarblog.wordpress.com" target="_blank">جاوا</a>، به خصوص رابط گرافیکی توی اونه. اما کتاب‌های «آموزش <a href="http://saarblog.wordpress.com" target="_blank">جاوا</a> در 21 روز» از نشر «نص» رو به عنوان یه کتاب برای شروع به زبون فارسی بد نمی‌دونم. کتاب «جاوا، جاوا، جاوا: رهیافتی شی ء گرا در حل مسائل  » از نشر «جنگل» هم کتاب خوبی به حساب میاد. و البته کتاب «راهنمای جامع Java» از نشر «کانون نشر علوم» هم کتاب خوبیه و به قول <a href="http://lincafe.wordpress.com/" title="کافه‌ی گنو/لینوکس" target="_blank">میلاد</a>، مختصر و مفید توضیح داده و برای مرجع فارسی کتاب خوبیه. البته من نسخه‌ی اصلی این کتاب یعنی «Java™ 2: The Complete Reference» رو مرجع خوبی <u>نمی‌دونم</u>. برای مرجع بهترین چیز، مستندات <a href="http://saarblog.wordpress.com" target="_blank">جاوا</a>ست که از هر کتابی می‌تونه مفید باشه. برای تمام مباحث <a href="http://saarblog.wordpress.com" target="_blank">جاوا</a> هم کتابای خوبی پیدا می‌شه. مثلاً کتاب «Computer Graphics Using Java™ 2D and 3D» و یا کتاب «Java Network Programming».</p>
<p align="justify" dir="rtl">دو چیز رو با تاکید بگم:</p>
<p align="justify">
<ol>
<li>برنامه‌نویس با کتاب خوندن برنامه نویس نشده. بدونید که تمرین و از اون مهم تر، کد خوندن، تاثیر زیادی توی تجربه‌ی برنامه نویسی می‌ذاره.</li>
<li>اگر فکر می‌کنید که نمی‌تونید کتاب‌های زبان اصلی رو بخونید و دنبال کتاب فارسی می‌گردین، راه رو اشتباه دارین طی می‌کنید. <del datetime="2010-03-02T17:37:59+00:00">برگردین و یا از برنامه نویسی دست بکشین، یا</del> زبانتون رو قوی کنید<del datetime="2010-03-02T17:37:59+00:00"> و بعد برنامه نویسی بخونید</del>. بعد از اونه که می‌فهمید آقای جعفر نژاد چه مزخرفاتی مخصوصاً توی کتاب <a href="http://saarblog.wordpress.com" target="_blank">جاوا</a>، به خورد شما می‌ده.</li>
</ol>
<p align="justify" dir="rtl">و چیزی که من خودم هم باهاش مشکل دارم و به قول همین پادکست دوم رادیو لینوکس، مستند سازیه. از همین اولی عادت کنید که برنامه‌هاتون رو مستند کنید. راهنما برای اون‌ها بنویسید. منظورم راهنمای کاربر نیست، راهنمایی برای کد هاتونه.</p>
<p align="justify" dir="rtl"> اما جزئیات بیشتر از کتاب‌هایی که توی این مطلب نامشون رو بردم:</p>
<p><div id="attachment_432" class="wp-caption alignright" style="width: 160px"><a href="http://saarblog.files.wordpress.com/2010/03/c-how-to-program.jpg"><img src="http://saarblog.files.wordpress.com/2010/03/c-how-to-program.jpg?w=150&#038;h=150" alt="" title="C++ how to program" width="150" height="150" class="size-thumbnail wp-image-432" /></a><p class="wp-caption-text">C++ how to program</p></div>
<p style="text-align:left;" dir="ltr"><b>Title:</b> C++ how to program<br />
<b>Authors:</b> Paul J. Deitel, Harvey M. Deitel<br />
<b>Publisher:</b> Prentice Hall<br />
<b>ISBN:</b> 0136152503, 9780136152507</p>
<hr />
<div id="attachment_431" class="wp-caption alignright" style="width: 130px"><a href="http://saarblog.files.wordpress.com/2010/03/c-a-beginners-guide.jpg"><img src="http://saarblog.files.wordpress.com/2010/03/c-a-beginners-guide.jpg?w=120&#038;h=150" alt="" title="C++ A Beginner&#39;s Guide" width="120" height="150" class="size-thumbnail wp-image-431" /></a><p class="wp-caption-text">C++ A Beginner's Guide</p></div>
<p style="text-align:left;" dir="ltr"><b>Title:</b> C++: a beginner&#8217;s guide<br />
<b>Author:</b> Herbert Schildt<br />
<b>Publisher:</b> McGraw-Hill/Osborne<br />
<b>ISBN:</b> 0072194677, 9780072194678</p>
<hr />
<div id="attachment_433" class="wp-caption alignright" style="width: 160px"><a href="http://saarblog.files.wordpress.com/2010/03/c-nuts-bolts.jpg"><img class="size-thumbnail wp-image-433" title="C++ Nuts &amp; Bolts" src="http://saarblog.files.wordpress.com/2010/03/c-nuts-bolts.jpg?w=150&#038;h=150" alt="" width="150" height="150" /></a><p class="wp-caption-text">C++ Nuts &amp; Bolts</p></div>
<p style="text-align:left;" dir="ltr"><b>Title:</b> C++ nuts &amp; bolts: for experienced programmers<br />
<b>Author:</b> Herbert Schildt<br />
<b>Publisher:</b> Osborne McGraw-Hill<br />
<b>ISBN:</b> 0078821401, 9780078821400</p>
<hr />
<div id="attachment_434" class="wp-caption alignright" style="width: 160px"><a href="http://saarblog.files.wordpress.com/2010/03/c-the-complete-reference.jpg"><img class="size-thumbnail wp-image-434" title="C++ The Complete Reference" src="http://saarblog.files.wordpress.com/2010/03/c-the-complete-reference.jpg?w=150&#038;h=150" alt="" width="150" height="150" /></a><p class="wp-caption-text">C++ The Complete Reference</p></div>
<p style="text-align:left;" dir="ltr"><b>Title:</b> C++: The Complete Reference<br />
<b>Author:</b> Herbert Schildt<br />
<b>Publisher:</b> McGraw-Hill Osborne Media<br />
<b>ISBN:</b> 0072226803, 9780072226805</p>
<hr />
<div id="attachment_436" class="wp-caption alignright" style="width: 123px"><a href="http://saarblog.files.wordpress.com/2010/03/core-javatm-vol-1-fundamentals.jpg"><img src="http://saarblog.files.wordpress.com/2010/03/core-javatm-vol-1-fundamentals.jpg?w=113&#038;h=150" alt="" title="Core Java, Vol. 1 Fundamentals" width="113" height="150" class="size-thumbnail wp-image-436" /></a><p class="wp-caption-text">Core Java, Vol. 1 Fundamentals</p></div>
<p style="text-align:left;" dir="ltr"><b>Title:</b> Core Java, Vol. 1: Fundamentals<br />
<b>Authors:</b>  Cay S. Horstmann, Gary Cornell<br />
<b>Publisher:</b> Prentice Hall PTR<br />
<b>ISBN:</b> 0132354764, 9780132354769</p>
<hr />
<div id="attachment_437" class="wp-caption alignright" style="width: 122px"><a href="http://saarblog.files.wordpress.com/2010/03/core-java-vol-2-advanced-features.jpg"><img src="http://saarblog.files.wordpress.com/2010/03/core-java-vol-2-advanced-features.jpg?w=112&#038;h=150" alt="" title="Core Java, Vol. 2 Advanced Features" width="112" height="150" class="size-thumbnail wp-image-437" /></a><p class="wp-caption-text">Core Java, Vol. 2 Advanced Features</p></div>
<p style="text-align:left;" dir="ltr"><b>Title:</b> Core Java, Vol. 2: Advanced Features<br />
<b>Authors:</b>  Cay S. Horstmann, Gary Cornell<br />
<b>Publisher:</b> Prentice Hall PTR<br />
<b>ISBN:</b> 0132354799, 9780132354790</p>
<hr />
<div id="attachment_435" class="wp-caption alignright" style="width: 160px"><a href="http://saarblog.files.wordpress.com/2010/03/computer-graphics-using-java-2d-and-3d.jpg"><img src="http://saarblog.files.wordpress.com/2010/03/computer-graphics-using-java-2d-and-3d.jpg?w=150&#038;h=150" alt="" title="Computer graphics using Java 2D and 3D" width="150" height="150" class="size-thumbnail wp-image-435" /></a><p class="wp-caption-text">Computer graphics using Java 2D and 3D</p></div>
<p style="text-align:left;" dir="ltr"><b>Title:</b> Computer graphics using Java 2D and 3D<br />
<b>Authors:</b> Hong Zhang, Y. Daniel Liang<br />
<b>Publisher:</b> Prentice Hall<br />
<b>ISBN:</b> 0130351180, 9780130351180</p>
<hr />
<div id="attachment_439" class="wp-caption alignright" style="width: 124px"><a href="http://saarblog.files.wordpress.com/2010/03/java-network-programming.jpg"><img src="http://saarblog.files.wordpress.com/2010/03/java-network-programming.jpg?w=114&#038;h=150" alt="" title="Java network programming" width="114" height="150" class="size-thumbnail wp-image-439" /></a><p class="wp-caption-text">Java network programming</p></div>
<p style="text-align:left;" dir="ltr"><b>Title:</b> Java network programming<br />
<b>Author:</b> Elliotte Rusty Harold<br />
<b>Publisher:</b> O&#8217;Reilly Media, Inc.<br />
<b>ISBN:</b> 0596007213, 9780596007218</p>
<hr />
<div id="attachment_438" class="wp-caption alignright" style="width: 130px"><a href="http://saarblog.files.wordpress.com/2010/03/java-2-the-complete-reference.jpg"><img src="http://saarblog.files.wordpress.com/2010/03/java-2-the-complete-reference.jpg?w=120&#038;h=150" alt="" title="Java 2 the complete reference" width="120" height="150" class="size-thumbnail wp-image-438" /></a><p class="wp-caption-text">Java 2: the complete reference</p></div>
<p style="text-align:left;" dir="ltr"><b>Title:</b> Java 2: the complete reference<br />
<b>Author:</b> Herbert Schildt<br />
<b>Publisher:</b> Osborne/McGraw-Hill<br />
<b>ISBN:</b> 0072130849, 9780072130843</p>
<hr />
<p align="justify" dir="rtl"><b>عنوان:</b> جاوا، جاوا، جاوا: رهیافتی شی ء گرا در حل مسائل  <br />
<b>تالیف:</b> رالف مورلی، هادی محمدزاده (مترجم)، علی جهانیان (مترجم)<br />
<b>نشر:</b> چنگل<br />
<b>شابک:</b> 978-964-981-065-2</p>
<p align="justify" dir="rtl"><b>عنوان:</b> چگونه با <span dir="ltr">C++</span> برنامه نویسی کنیم<br />
<b>تالیف:</b> هاروی دیتل، پل دیتل، علیرضا انصاری (مترجم) <br />
<b>نشر:</b> زانیس <br />
<b>شابک:</b> 978-964-377-302-1</p>
<p align="justify" dir="rtl"><b>عنوان:</b> راهنمای سریع <span dir="ltr">C++</span>  <br />
<b>تالیف:</b> هربرت شیلد، ابوالقاسم شادمان پور (مترجم) <br />
<b>نشر:</b> دانشگاه هرمزگان<br />
<b>شابک:</b> 964-6426-31-X</p>
<p align="justify" dir="rtl"><b>عنوان:</b> راهنمای جامع Java  <br />
<b>تالیف:</b> هربرت شیلد، فرهاد قلی زاده نوری (مترجم)، علی اصغر شریف پور (مترجم) <br />
<b>نشر:</b> کانون نشر علوم <br />
<b>شابک:</b> 964-8587-21-3</p>
<p align="justify" dir="rtl"><b>عنوان:</b> برنامه نویسی جاوا: خودآموز سریع در 21 روز<br />
<b>تالیف:</b> چارلز پرکینز، لورا لمی، علیرضا زارع پور (مترجم)<br />
<b>نشر:</b> نص<br />
<b>شابک:</b> 964-6264-21-2</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/saarblog.wordpress.com/430/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/saarblog.wordpress.com/430/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/saarblog.wordpress.com/430/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/saarblog.wordpress.com/430/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/saarblog.wordpress.com/430/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/saarblog.wordpress.com/430/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/saarblog.wordpress.com/430/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/saarblog.wordpress.com/430/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/saarblog.wordpress.com/430/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/saarblog.wordpress.com/430/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/saarblog.wordpress.com/430/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/saarblog.wordpress.com/430/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/saarblog.wordpress.com/430/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/saarblog.wordpress.com/430/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=saarblog.wordpress.com&amp;blog=2120539&amp;post=430&amp;subd=saarblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://saarblog.wordpress.com/2010/03/02/java-and-c-plus-plus-books/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9437825a9e40ae76419e37cd1e663a87?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">ИІΜΑЯ</media:title>
		</media:content>

		<media:content url="http://saarblog.files.wordpress.com/2010/03/photo_books.jpg" medium="image">
			<media:title type="html">photo_books</media:title>
		</media:content>

		<media:content url="http://saarblog.files.wordpress.com/2010/03/c-how-to-program.jpg?w=150" medium="image">
			<media:title type="html">C++ how to program</media:title>
		</media:content>

		<media:content url="http://saarblog.files.wordpress.com/2010/03/c-a-beginners-guide.jpg?w=120" medium="image">
			<media:title type="html">C++ A Beginner&#39;s Guide</media:title>
		</media:content>

		<media:content url="http://saarblog.files.wordpress.com/2010/03/c-nuts-bolts.jpg?w=150" medium="image">
			<media:title type="html">C++ Nuts &#38; Bolts</media:title>
		</media:content>

		<media:content url="http://saarblog.files.wordpress.com/2010/03/c-the-complete-reference.jpg?w=150" medium="image">
			<media:title type="html">C++ The Complete Reference</media:title>
		</media:content>

		<media:content url="http://saarblog.files.wordpress.com/2010/03/core-javatm-vol-1-fundamentals.jpg?w=113" medium="image">
			<media:title type="html">Core Java, Vol. 1 Fundamentals</media:title>
		</media:content>

		<media:content url="http://saarblog.files.wordpress.com/2010/03/core-java-vol-2-advanced-features.jpg?w=112" medium="image">
			<media:title type="html">Core Java, Vol. 2 Advanced Features</media:title>
		</media:content>

		<media:content url="http://saarblog.files.wordpress.com/2010/03/computer-graphics-using-java-2d-and-3d.jpg?w=150" medium="image">
			<media:title type="html">Computer graphics using Java 2D and 3D</media:title>
		</media:content>

		<media:content url="http://saarblog.files.wordpress.com/2010/03/java-network-programming.jpg?w=114" medium="image">
			<media:title type="html">Java network programming</media:title>
		</media:content>

		<media:content url="http://saarblog.files.wordpress.com/2010/03/java-2-the-complete-reference.jpg?w=120" medium="image">
			<media:title type="html">Java 2 the complete reference</media:title>
		</media:content>
	</item>
		<item>
		<title>Slax، سیستم عامل جیبی شما</title>
		<link>http://saarblog.wordpress.com/2010/02/27/slax%d8%8c-%d8%b3%db%8c%d8%b3%d8%aa%d9%85-%d8%b9%d8%a7%d9%85%d9%84-%d8%ac%db%8c%d8%a8%db%8c-%d8%b4%d9%85%d8%a7/</link>
		<comments>http://saarblog.wordpress.com/2010/02/27/slax%d8%8c-%d8%b3%db%8c%d8%b3%d8%aa%d9%85-%d8%b9%d8%a7%d9%85%d9%84-%d8%ac%db%8c%d8%a8%db%8c-%d8%b4%d9%85%d8%a7/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 15:33:03 +0000</pubDate>
		<dc:creator>Saar</dc:creator>
				<category><![CDATA[گنو-لینوکس]]></category>
		<category><![CDATA[روزانه]]></category>

		<guid isPermaLink="false">http://saarblog.wordpress.com/2010/02/27/slax%d8%8c-%d8%b3%db%8c%d8%b3%d8%aa%d9%85-%d8%b9%d8%a7%d9%85%d9%84-%d8%ac%db%8c%d8%a8%db%8c-%d8%b4%d9%85%d8%a7/</guid>
		<description><![CDATA[خیلی وقتا بحث پیش میاد که «سیستم‌عامل زنده به چه دردی می‌خوره. حالا گیریم که اوبونتو از روی CD هم بالا اومد، غیر از نجات سیسم معیوب، چه دردیو دوا می‌کنه». اما خب از بحث‌های تکنیکی که بگذریم، گاهی این زنده بودن سیستم‌عامل می‌تونه خیلی به درد بخور باشه. شما یه فلش یا حد اقل [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=saarblog.wordpress.com&amp;blog=2120539&amp;post=425&amp;subd=saarblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p dir="rtl" align="justify"><img width="178" height="165" alt="" src="http://www.slax.org/images/slax.png" style="float:right;" class="alignright size-full wp-image-103">خیلی وقتا بحث پیش میاد که «سیستم‌عامل زنده به چه دردی می‌خوره. حالا گیریم که اوبونتو از روی CD هم بالا اومد، غیر از نجات سیسم معیوب، چه دردیو دوا می‌کنه». اما خب از بحث‌های تکنیکی که بگذریم، گاهی این زنده بودن سیستم‌عامل می‌تونه خیلی به درد بخور باشه. شما یه فلش یا حد اقل پخش کننده‌ی موسیقی همراهتون هست همیشه ولی اگرم Laptop داشته باشین، همه‌جا که همراهتون نیست ولی خیلی چیزای اون رو همه جا نیاز دارین. مثل Firefox و برنامه‌های دیگه. خیلی جاها نیاز به سیستم امنی دارین تا با خیال راحت و دوری از هر Keylogger بتونید یه ایمیل چک کنید و خیلی محاسن دیگه. بد نیست که با سیستم عامل جیبی <a href="http://slax.org" target="_blank"><img src="http://www.slax.org/favicon.ico" title="Slax" width="16" height="16" />Slax</a> آشناتون کنم. اول از توضیحات <a href="http://slax.org" target="_blank"><img src="http://www.slax.org/favicon.ico" title="Slax" width="16" height="16" />وب‌سایت</a> اون شروع می‌کنم: </p>
<blockquote><p dir="rtl" align="justify"><a href="http://slax.org" target="_blank"><img src="http://www.slax.org/favicon.ico" title="Slax" width="16" height="16" />Slax</a>، سیستم‌عامل لینوکس مدرن، قابل حمل، کوچک و سریع با رویکرد ماژولار و طراحی برجسته است. با وجود اندازه‌ی کوچک آن، <a href="http://slax.org" target="_blank"><img src="http://www.slax.org/favicon.ico" title="Slax" width="16" height="16" />Slax</a> یک مجموعه‌ی وسیعی از نرم‌افزار‌های از پیش نصب شده را برای استفاده‌ی روزانه، از جمله رابط گرافیکی سازمان‌دهی شده‌ی خوب و ابزار‌های بازیابی مفید برای مدیران سیسم، فراهم می‌کند.</p>
<p dir="rtl" align="justify">رویکرد ماژولار این امکار را به شما می‌دهد که به راحتی نرم‌افزار‌های دیگر را به <a href="http://slax.org" target="_blank"><img src="http://www.slax.org/favicon.ico" title="Slax" width="16" height="16" />Slax</a> اضافه کنید. اگر فقدان ویرایشگر متن، ابزار شبکه یا بازی مورد علاقه‌ی خود را احساس می‌کنید، به راحتی ماژول آن نرم‌افزار را دریافت کرده و آن را در <a href="http://slax.org" target="_blank"><img src="http://www.slax.org/favicon.ico" title="Slax" width="16" height="16" />Slax</a> کپی کنید، نیازی به نصب و تنظیم نیست.</p>
</blockquote>
<p dir="rtl" align="justify">خب فکر می‌کنم توضیحات کامل بود. اما حالا برای داشتن یه <a href="http://slax.org" target="_blank"><img src="http://www.slax.org/favicon.ico" title="Slax" width="16" height="16" />Slax</a> روی حافظه‌ی قابل حملمون چکار باید کرد؟ به چیا نیاز داریم؟</p>
<ul>
<li align="justify">یک رسانه‌ی حافظه مثل USB Flash یا Music Player</li>
<li align="justify">فایل slax-6.1.2.tar که در حال حاظر آخرین نسخست و می‌تونید به حجم 200 مگا بایت اون رو از <a href="http://www.slax.org/get_slax.php?download=tar"><img src="http://www.slax.org/images/tar.png" title="Get Slax">این پیوند</a> دریافت کنید.</li>
<li align="justify">یک برنامه برای باز کردن فایل‌های tar. اگر نمی‌شناسین باید بگم که تقریبن تمام برنامه‌هایی که فایل رو فشرده می‌کنن می‌تونن این مدل آرشیو رو باز کنن. می‌تونید از <a href="http://www.7-zip.org/" target="_blank">اینجا برنامه‌ی رایگان و متن باز <span dir="ltr">7-Zip</span></a> رو دریافت کنید.</li>
</ul>
<p dir="rtl" align="justify">برای شروع، اول راه اندازی توی Windows رو توضیح می‌دم:</p>
<ul>
<li align="justify">اول رسانه‌ی حافظه رو که به عنوان مثال USB Flash شماست رو به کامپیوتر متصل کنید و در صورت لزوم منتظر بمونید تا نصب شه. به عنوان مثال یک درایو به نام <span dir="ltr">F:</span> به کامپیوتر شما اضافه می‌شه.</li>
<li align="justify">برنامه‌ی <span dir="ltr">7-Zip</span> رو باز کنید (یا برنامه‌ی فشرده ساز خودتون رو) و فایل slax-6.1.2.tar رو باز کنید. (برای <span dir="ltr">7-Zip</span> می‌تونید از قسمت مدیریت فایل که مرکز صفحست استفاده کنید).</li>
<li align="justify">فایل رو Extract کنید به درایو USB Flash که برای مثال ما آدرس <span dir="ltr">F:\</span> خواهد بود.</li>
<li align="justify">به درایو مورد نظر برین (برای مثال ما، درایو <span dir="ltr">F:</span>) و بعد پوشه‌ی boot.</li>
<li align="justify">توی اون پوشه، فایل bootinst.bat رو باز کنید. دقت کنید که با نام bootinst دو تا فایل وجود داره، ما به فایلی نیاز داریم که در انتهاش نوشته شده باشه <span dir="ltr">.bat</span> یا این که چیزی نوشته نشده باشه. </li>
<li align="justify">یک صفحه‌ی مشکی نشون داده می‌شه که توضیحاتی در مورد نصبه:</li>
</ul>
<blockquote><p dir="ltr">
<p dir="ltr">=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Welcome to Slax boot installer<br />=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=<br />&nbsp;&nbsp;<br />This installer will setup disk <span dir="ltr">F:</span> to boot only Slax.<br />&nbsp;&nbsp;<br />Warning! Master Boot Record (MBR) of the device <span dir="ltr">F:</span> will be overwritten.<br />If <span dir="ltr">F:</span> is a partition on the same disk drive like your Windows installation,<br />then your Windows will not boot anymore. Be careful!<br />&nbsp;&nbsp;<br />Press any key to continue, or kill this window [x] to abort&#8230;</p>
</blockquote>
<ul>
<li>بعد از خوندن توضیحات می‌تونید یک کلید رو از روی صفحه‌کلید فشار بدین تا نصب انجام بشه.</li>
</ul>
<blockquote><p dir="ltr">
<p dir="ltr">Setting up boot record for F:, wait please&#8230;<br />Disk F: should be bootable now. Installation finished.<br />&nbsp;&nbsp;<br />Read the information above and then press any key to exit&#8230;</p>
</blockquote>
<ul>
<li>اگر ماژول خاصی رو هم دریافت کردین، می‌تونید اون رو به پوشه‌ی F:\slax\modules انتقال بدین.</li>
<li align="justify">کار تمومه. کافیه کامپیوتر رو Restart کنید و بهش بگین که می‌خواین سیستم‌عامل از روی حافظه‌های خارجی بارگذاری بشه. معمولاً وقتی که کامپیوتر روشن می‌شه می‌تونید از کلید F12 استفاده کنید یا از کلیدی که خود سیستم به شما معرفی می‌کنه توی همون صفحه‌ی ابتدایی استفاده کنید. در نهایت می‌تونید با زدن Delete یا F1 وارد تنظیمات Bios بشین و اولویت Boot رو برای دستگاه‌های خارجی یا USB ها بالا ببرین تا ابتدا برای بارگذاری سیستم، Bios سراغ رسانه‌های خارجی بره.</li>
<li align="justify">کار تمومه! خسته نباشین. صفحه‌ی سبز و سفید <a href="http://slax.org" target="_blank"><img src="http://www.slax.org/favicon.ico" title="Slax" width="16" height="16" />Slax</a> جلوی روی شماست.</li>
</ul>
<p>اما کاربرای گنو/لینوکس چکار باید کنن؟ خیلی با مراحل بالا تفاوتی وجود نداره الا این که هر مرحله به جای برنامه‌ها و آدرس‌های ویندوزی، از معادل گنو/لینوکسی اون استفاده کنن.</p>
<ul>
<li>برای فایل tar در تقریبن تمام گنو/لینوکس‌ها ابزار گرافیکی و در تمام اونها ابزار خط فرمانی tar وجود داره و نیازی به <span dir="ltr">7-Zip</span> نیست.</li>
<li>در پوشه‌ی boot باید Script نصب که bootinst.sh هست رو با مجوز کاربر ریشه اجرا کرد.</li>
</ul>
<p>اما بذارین از قابلیت‌ها و امکاناتی که می‌تونید با <a href="http://slax.org" target="_blank"><img src="http://www.slax.org/favicon.ico" title="Slax" width="16" height="16" />Slax</a> داشته باشین بگم.</p>
<p align="justify">شاید جذاب ترین قابلیتی که یه <a href="http://slax.org" target="_blank"><img src="http://www.slax.org/favicon.ico" title="Slax" width="16" height="16" />Slax</a> می‌تونه برای یه دانشجوی نرم‌افزار داشته باشه، داشتن یک Compiler به روز وقوی GCC برای Compile کردن برنامه‌هایی که به زبون <span dir="ltr">C++</span> استاندارد نوشته می‌شه، باشه. من ترم 2 برای پروژه‌ی <span dir="ltr">C++</span> برنامه‌ای که نوشتم، تمام و کمال با ابزار‌های <a href="http://slax.org" target="_blank"><img src="http://www.slax.org/favicon.ico" title="Slax" width="16" height="16" />Slax</a> بود (از جمله ویرایشگر متن قوی <a href="http://kate-editor.org/" target="_blank" title="Kate | Get an Edge in Editing">kate</a>) و برای ارائه هم، متن برنامه و فایل اجرایی اون رو، روی میزکار یه <a href="http://slax.org" target="_blank"><img src="http://www.slax.org/favicon.ico" title="Slax" width="16" height="16" />Slax</a> گذاشتم و از اون با ابزاری که توی پوشه‌ی slax به نام make_iso هست، یک CD زنده درست کردم و به استاد دادم. با این کار هم نمره‌ی خودم رو گرفتم و گنو/لینوکس رو ترویج دادم!</p>
<p align="justify">این که شما می‌تونید به راحتی برنامه به <a href="http://slax.org" target="_blank"><img src="http://www.slax.org/favicon.ico" title="Slax" width="16" height="16" />Slax</a> اضافه کنید و یک مجموعه‌ی بزرگ از نرم‌افزارها رو داشته باشین، شاید یک امکان بسیار خوب برای هر کاربر و نه تنها یک دانشجوی نرم‌افزاره. می‌تونید ماژول‌های <a href="http://slax.org" target="_blank"><img src="http://www.slax.org/favicon.ico" title="Slax" width="16" height="16" />Slax</a> رو از این آدرس دریافت کنید.</p>
<p align="justify">یکی از قابلیت‌های جالب <a href="http://slax.org" target="_blank"><img src="http://www.slax.org/favicon.ico" title="Slax" width="16" height="16" />Slax</a> امکانیه به نام <a href="http://en.wikipedia.org/wiki/Preboot_Execution_Environment" title="Preboot Execution Environment" target="_blank">PXE</a> که هنگام بارگذاری سیستم‌عامل می‌شه با نام «Slax as PXE server» اون رو استفاده کرد. اگر بخوام به زبون ساده این امکان رو شرح بدم، اینه که اگر این قابلیت رو توی یک شبکه استفاده کنید، می‌تونید بدون هیچ رسانه‌ای و فقط از طریق شبکه، یک سیستم دیگه‌ای رو با <a href="http://slax.org" target="_blank"><img src="http://www.slax.org/favicon.ico" title="Slax" width="16" height="16" />Slax</a> بارگذاری  کنید. شاید بار‌ها مثل من براتون سوال پیش اومده باشه که Boot From Network رو چطور می‌شه به کار برد. جواب همین قابلیته.</p>
<p align="justify">یکی دیگه از قابلیت‌های <a href="http://slax.org" target="_blank"><img src="http://www.slax.org/favicon.ico" title="Slax" width="16" height="16" />Slax</a> انعطاف پذیر بودن اونه. یعنی بدون این که از برنامه نویسی دانشی داشته باشین، می‌تونید <a href="http://slax.org" target="_blank"><img src="http://www.slax.org/favicon.ico" title="Slax" width="16" height="16" />Slax</a> رو برای خودتون تغییر بدین. به عنوان مثال پوشه‌ی rootcopy که توی پوشه‌ی slax وجود داره یک نمونه از این انعطاف پذیریه. وقتی سیستم بارگذاری می‌شه، فایل‌های این پوشه به پوشه‌ی ریشه (/) کپی‌میشن. به عنوان مثال اگر توی همین rootcopy یه پوشه با نام Desktop درست کنیم و توی Desktop یک فایل به نام saar.txt داشته باشیم، وقتی سیستم‌عامل بارگذاری می‌شه، روی میز‌کار فایل saar.txt وجود خواهد داشت. برای پروژه‌ی ترم 2 که قبل از این گفتم، من متن و فایل اجرایی پروژه رو به این پوشه انتقال دادم تا وقتی سیستم‌عامل بارگذاری می‌شه روی میز کار باشه این فایل‌ها.</p>
<p align="justify">و در نهایت برای آموزش فوق‌العادست. شما هر بلایی که دلت خواست سر این <a href="http://slax.org" target="_blank"><img src="http://www.slax.org/favicon.ico" title="Slax" width="16" height="16" />Slax</a> بیار. بعد وقت بارگذاری اون، گزینه‌ی «Slax Always Fresh» رو بزن. به همین راحتی یه <a href="http://slax.org" target="_blank"><img src="http://www.slax.org/favicon.ico" title="Slax" width="16" height="16" />Slax</a> تازه دم دست شماست!</p>
<p align="justify">و در نهایت بگم این رو که باید <a href="http://slax.org" target="_blank"><img src="http://www.slax.org/favicon.ico" title="Slax" width="16" height="16" />Slax</a> رو امتحان کرد تا از امکاناتش و حتی به قول خود <a href="http://slax.org" target="_blank"><img src="http://www.slax.org/favicon.ico" title="Slax" width="16" height="16" />Slax</a> از Cheat Codes هاش آگاه شد. <a href="http://slax.org" target="_blank"><img src="http://www.slax.org/favicon.ico" title="Slax" width="16" height="16" />Slax</a> رو حتی می‌شه روی Hard دیسک نصب کرد (چیزی که من پیشنهاد نمی‌کنم) و از اون روی Hard Disk استفاده کرد. ساختار <a href="http://slax.org" target="_blank"><img src="http://www.slax.org/favicon.ico" title="Slax" width="16" height="16" />Slax</a> ساختار مناسبیه برای کسانی که می‌خوان روی تولید یک سیستم‌عامل وقت بذارن و می‌تونه منبع اطلاعاتی خوبی برای اون‌ها باشه.</p>
<p></br>
<p align="justify">پ.ن: امیدوارم تونسته باشم جواب <a href="http://saarblog.wordpress.com/2008/05/27/ubuntu_on_flash_drive/#comment-568" target="_blank">این دیدگاه</a> رو بدم.</p>
<h2>به‌روز رسانی:</h2>
<p>من نمی‌دونستم که <a href="http://saarblog.wordpress.com/2008/06/22/slax/">قبل از این هم در مورد Slax نوشتم</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/saarblog.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/saarblog.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/saarblog.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/saarblog.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/saarblog.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/saarblog.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/saarblog.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/saarblog.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/saarblog.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/saarblog.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/saarblog.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/saarblog.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/saarblog.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/saarblog.wordpress.com/425/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=saarblog.wordpress.com&amp;blog=2120539&amp;post=425&amp;subd=saarblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://saarblog.wordpress.com/2010/02/27/slax%d8%8c-%d8%b3%db%8c%d8%b3%d8%aa%d9%85-%d8%b9%d8%a7%d9%85%d9%84-%d8%ac%db%8c%d8%a8%db%8c-%d8%b4%d9%85%d8%a7/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9437825a9e40ae76419e37cd1e663a87?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">ИІΜΑЯ</media:title>
		</media:content>

		<media:content url="http://www.slax.org/images/slax.png" medium="image" />

		<media:content url="http://www.slax.org/favicon.ico" medium="image">
			<media:title type="html">Slax</media:title>
		</media:content>

		<media:content url="http://www.slax.org/favicon.ico" medium="image">
			<media:title type="html">Slax</media:title>
		</media:content>

		<media:content url="http://www.slax.org/favicon.ico" medium="image">
			<media:title type="html">Slax</media:title>
		</media:content>

		<media:content url="http://www.slax.org/favicon.ico" medium="image">
			<media:title type="html">Slax</media:title>
		</media:content>

		<media:content url="http://www.slax.org/favicon.ico" medium="image">
			<media:title type="html">Slax</media:title>
		</media:content>

		<media:content url="http://www.slax.org/favicon.ico" medium="image">
			<media:title type="html">Slax</media:title>
		</media:content>

		<media:content url="http://www.slax.org/favicon.ico" medium="image">
			<media:title type="html">Slax</media:title>
		</media:content>

		<media:content url="http://www.slax.org/images/tar.png" medium="image">
			<media:title type="html">Get Slax</media:title>
		</media:content>

		<media:content url="http://www.slax.org/favicon.ico" medium="image">
			<media:title type="html">Slax</media:title>
		</media:content>

		<media:content url="http://www.slax.org/favicon.ico" medium="image">
			<media:title type="html">Slax</media:title>
		</media:content>

		<media:content url="http://www.slax.org/favicon.ico" medium="image">
			<media:title type="html">Slax</media:title>
		</media:content>

		<media:content url="http://www.slax.org/favicon.ico" medium="image">
			<media:title type="html">Slax</media:title>
		</media:content>

		<media:content url="http://www.slax.org/favicon.ico" medium="image">
			<media:title type="html">Slax</media:title>
		</media:content>

		<media:content url="http://www.slax.org/favicon.ico" medium="image">
			<media:title type="html">Slax</media:title>
		</media:content>

		<media:content url="http://www.slax.org/favicon.ico" medium="image">
			<media:title type="html">Slax</media:title>
		</media:content>

		<media:content url="http://www.slax.org/favicon.ico" medium="image">
			<media:title type="html">Slax</media:title>
		</media:content>

		<media:content url="http://www.slax.org/favicon.ico" medium="image">
			<media:title type="html">Slax</media:title>
		</media:content>

		<media:content url="http://www.slax.org/favicon.ico" medium="image">
			<media:title type="html">Slax</media:title>
		</media:content>

		<media:content url="http://www.slax.org/favicon.ico" medium="image">
			<media:title type="html">Slax</media:title>
		</media:content>

		<media:content url="http://www.slax.org/favicon.ico" medium="image">
			<media:title type="html">Slax</media:title>
		</media:content>

		<media:content url="http://www.slax.org/favicon.ico" medium="image">
			<media:title type="html">Slax</media:title>
		</media:content>

		<media:content url="http://www.slax.org/favicon.ico" medium="image">
			<media:title type="html">Slax</media:title>
		</media:content>

		<media:content url="http://www.slax.org/favicon.ico" medium="image">
			<media:title type="html">Slax</media:title>
		</media:content>

		<media:content url="http://www.slax.org/favicon.ico" medium="image">
			<media:title type="html">Slax</media:title>
		</media:content>

		<media:content url="http://www.slax.org/favicon.ico" medium="image">
			<media:title type="html">Slax</media:title>
		</media:content>
	</item>
		<item>
		<title>تبدیل فایل‌های اجرایی جاوا به فایل‌های اجرایی محلی سیستم‌عامل</title>
		<link>http://saarblog.wordpress.com/2010/02/24/%d8%aa%d8%a8%d8%af%db%8c%d9%84-%d9%81%d8%a7%db%8c%d9%84%e2%80%8c%d9%87%d8%a7%db%8c-%d8%a7%d8%ac%d8%b1%d8%a7%db%8c%db%8c-%d8%ac%d8%a7%d9%88%d8%a7-%d8%a8%d9%87-%d9%81%d8%a7%db%8c%d9%84%e2%80%8c%d9%87/</link>
		<comments>http://saarblog.wordpress.com/2010/02/24/%d8%aa%d8%a8%d8%af%db%8c%d9%84-%d9%81%d8%a7%db%8c%d9%84%e2%80%8c%d9%87%d8%a7%db%8c-%d8%a7%d8%ac%d8%b1%d8%a7%db%8c%db%8c-%d8%ac%d8%a7%d9%88%d8%a7-%d8%a8%d9%87-%d9%81%d8%a7%db%8c%d9%84%e2%80%8c%d9%87/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 17:02:34 +0000</pubDate>
		<dc:creator>Saar</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[جاوا]]></category>

		<guid isPermaLink="false">http://saarblog.wordpress.com/2010/02/24/%d8%aa%d8%a8%d8%af%db%8c%d9%84-%d9%81%d8%a7%db%8c%d9%84%e2%80%8c%d9%87%d8%a7%db%8c-%d8%a7%d8%ac%d8%b1%d8%a7%db%8c%db%8c-%d8%ac%d8%a7%d9%88%d8%a7-%d8%a8%d9%87-%d9%81%d8%a7%db%8c%d9%84%e2%80%8c%d9%87/</guid>
		<description><![CDATA[مدت زیادیه که مشغله‌ی زیادی دارم و خیلی کم‌تر می‌تونم به «سار» برسم. اما بهونه‌ی این پست کامنت دوستم، علی، در مورد تبدیل فایل «JAR» به فایل اجرایی ویندوز «EXE» است: &#8230; یکی از دوستام روانی ساختن فایل exe برای نرم افزارهای جاوایی که درست می‌کنه. وقتی دقت کردم دیدم چیچک رو اینجوری ساختی. اگه [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=saarblog.wordpress.com&amp;blog=2120539&amp;post=418&amp;subd=saarblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:center;" dir="rtl"><img class="aligncenter" title="Java-exe" src="http://saarblog.files.wordpress.com/2010/02/java-exe.gif?w=128&#038;h=128" alt="" width="128" height="128" />مدت زیادیه که مشغله‌ی زیادی دارم و خیلی کم‌تر می‌تونم به «<a title="سار" href="http://saarblog.wordpress.com" target="_blank">سار</a>» برسم. اما بهونه‌ی این پست <a href="http://saarblog.wordpress.com/questions/#comment-563" target="_blank">کامنت دوستم، علی</a>، در مورد تبدیل فایل «JAR» به فایل اجرایی ویندوز «EXE» است:</p>
<blockquote>
<p dir="rtl">&#8230; یکی از دوستام روانی ساختن فایل exe برای نرم افزارهای جاوایی که درست می‌کنه. وقتی دقت کردم دیدم چیچک رو اینجوری ساختی. اگه می‌شه درمورد ساختن فایل‌های stand alone با پسوند exe برای ویندوز من و در واقع دوستم رو راهنمایی کن.</p>
</blockquote>
<p dir="rtl">خب من در این مورد کتاب «Core Java: Volume I-Fundamentals» توی صفحه‌ی «497» مطلبی رو نوشته بود که به نظر مفید میاد:</p>
<blockquote>
<p dir="ltr">However, a Java program in a JAR file does not have the same feel as a native application. On Windows, you can use third-party wrapper utilities that turn JAR files into Windows executables. A wrapper is a Windows program with the familiar .exe extension that locates and launches the Java virtual machine (JVM), or tells the user what to do when no JVM is found. There are a number of commercial and open source products, such as JSmooth ( <a title=" 	Enhance the Java User Experience " href="http://jsmooth.sourceforge.net/" target="_blank">http://jsmooth.sourceforge.net</a>) and Launch4J (<a title="Cross-platform Java executable wrapper" href="http://launch4j.sourceforge.net/" target="_blank">http://launch4j.sourceforge.net</a>). The open source installer generator IzPack (<a href="http://izpack.org" target="_blank">http://izpack.org</a>) also contains a native launcher. For more information on this topic, see <a title="Java to EXE - Why, When, When Not and How" href="http://www.javalobby.org/articles/java2exe/" target="_blank">http://www.javalobby.org/articles/java2exe</a>.</p>
</blockquote>
<p dir="rtl">برای «<a title="Chichak" href="http://saarblog.wordpress.com/chichak/" target="_blank">چیچک</a>» من از «<a title="Enhance the Java User Experience " href="http://jsmooth.sourceforge.net/" target="_blank">JSmooth</a>» استفاده کردم. کار کردن باهاش آسون بود و به مشکلی هم بر نخوردم. ولی با این همه علاوه بر نمونه‌هایی که توی متن بالا هست، چند مورد دیگه هم وجود داره:</p>
<ol></ol>
<ul>
<li>نمونه‌های تجاری</li>
</ul>
<ol>
<li><a href="http://www.ucware.com/jexec/">JEXECreator</a></li>
<li><a href="http://www.ej-technologies.com/products/exe4j/overview.html">exe4J</a></li>
<li><a href="http://www.dobysoft.com/products/nativej/">NativeJ</a></li>
<li><a href="http://www.javaapis.com/execjava/">execJava</a></li>
<li><a href="http://mpowers.net/executor/">Executor</a></li>
<li><a href="http://www.duckware.com/jexepack/">JExePack</a></li>
<li><a href="http://www.magi-au.com/download/">Jlaunch</a></li>
</ol>
<ul>
<li>نمونه‌های رایگان و متن باز</li>
</ul>
<ol>
<li><a href="http://jsmooth.sourceforge.net">JSmooth</a></li>
<li><a href="http://launch4j.sourceforge.net/">Launch4j</a></li>
<li><a href="http://jstart32.sourceforge.net/">jstart32</a></li>
<li><a href="http://www.sureshotsoftware.com/exej/">exeJ</a></li>
<li><a href="http://janel.sourceforge.net/janel/index.html">Janel</a></li>
<li><a href="http://www.objects.com.au/products/jstart/index.jsp">jstart</a></li>
<li><a href="http://www.roxes.com/produkte/rat.html">Roxes Ant Tasks</a></li>
<li><a href="http://www.rolemaker.dk/nonRoleMaker/javalauncher/marner_java_launcher.htm">Marner Java Launcher</a></li>
<li><a href="http://www.sfu.ca/%7Etyuen/jelude/">jelude</a></li>
</ol>
<p dir="rtl">امیدوارم تونسته باشم جواب سوال رو داده باشم.</p>
<p dir="rtl">
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/saarblog.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/saarblog.wordpress.com/418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/saarblog.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/saarblog.wordpress.com/418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/saarblog.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/saarblog.wordpress.com/418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/saarblog.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/saarblog.wordpress.com/418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/saarblog.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/saarblog.wordpress.com/418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/saarblog.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/saarblog.wordpress.com/418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/saarblog.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/saarblog.wordpress.com/418/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=saarblog.wordpress.com&amp;blog=2120539&amp;post=418&amp;subd=saarblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://saarblog.wordpress.com/2010/02/24/%d8%aa%d8%a8%d8%af%db%8c%d9%84-%d9%81%d8%a7%db%8c%d9%84%e2%80%8c%d9%87%d8%a7%db%8c-%d8%a7%d8%ac%d8%b1%d8%a7%db%8c%db%8c-%d8%ac%d8%a7%d9%88%d8%a7-%d8%a8%d9%87-%d9%81%d8%a7%db%8c%d9%84%e2%80%8c%d9%87/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9437825a9e40ae76419e37cd1e663a87?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">ИІΜΑЯ</media:title>
		</media:content>

		<media:content url="http://saarblog.files.wordpress.com/2010/02/java-exe.gif" medium="image">
			<media:title type="html">Java-exe</media:title>
		</media:content>
	</item>
		<item>
		<title>نرم‌افزار‌های غیر آزاد من</title>
		<link>http://saarblog.wordpress.com/2009/12/24/non-free-packages-installed-on-my-laptop/</link>
		<comments>http://saarblog.wordpress.com/2009/12/24/non-free-packages-installed-on-my-laptop/#comments</comments>
		<pubDate>Thu, 24 Dec 2009 18:01:38 +0000</pubDate>
		<dc:creator>Saar</dc:creator>
				<category><![CDATA[گنو-لینوکس]]></category>
		<category><![CDATA[روزانه]]></category>

		<guid isPermaLink="false">http://saarblog.wordpress.com/?p=405</guid>
		<description><![CDATA[روزبه عزیز، تقریبن اواخر شهریور ماه، من رو به یه کار جمعی دعوت کرده تا به قول خودش: در آستانه جشن روز آزادی نرم افزار ( شنبه هفته آینده در تمام نقاط دنیا و امروز در اصفهان ) مثل سال گدشته وبلاگ نویسان لینوکسی نویس را به این حرکت دعوت می کنم ! کاری که [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=saarblog.wordpress.com&amp;blog=2120539&amp;post=405&amp;subd=saarblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;"><a href="http://www.roozbehonline.com/">روزبه عزیز</a>، تقریبن اواخر شهریور ماه، من رو به<a href="http://www.roozbehonline.com/1388/06/26/persian-linux-bloggers-freedom-movement/"> یه کار جمعی دعوت کرده</a> تا به قول خودش:</p>
<blockquote>
<p style="text-align:justify;">در آستانه جشن روز آزادی نرم افزار ( شنبه هفته آینده در تمام نقاط دنیا و امروز در اصفهان ) مثل سال گدشته وبلاگ نویسان لینوکسی نویس را به این حرکت دعوت می کنم ! کاری که <a href="http://www.roozbehonline.com/1387/06/19/software-freedom-virtual-festival/">پارسال</a> هم آنرا انجام دادیم و نسبتا هم با استقبال خوبی مواجه شد . حالا این حرکت ( من اسمش رو می ذارم “جنبش” ) بدین صورت است که : با نصب پکیج vrms هرکسی می تواند پکیج های غیرآزاد (Non-free) را بر روی سیستمش جستجو می کند و نتیجه آن را بر روی وبلاگش منتشر می کند و سعی می کند جایگزین مناسبی برای این پکیج های غیر آزاد پیدا کند .</p>
</blockquote>
<p style="text-align:justify;">البته با عرض تاسف، من اون روز‌ها با یک مشکل دست و پنجره نرم می‌کردم و مشکلم اونقدر بزرگ بود (و هست البته) که خیلی خیلی از دنیای مجازیم فاصله گرفتم. با این همه، امروز که این رو دیدم، دعوتش رو قبول می‌کنم و کاری که گفته رو انجام می‌دم.</p>
<p><code><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Non-free packages installed on ramin-laptop<br />
&nbsp;&nbsp;<br />
opera&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The Opera Web Browser<br />
rar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Archiver for .rar files<br />
sl-modem-daemon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SmartLink software modem daemon<br />
sun-java6-bin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sun Java(TM) Runtime Environment (JRE) 6 (architecture<br />
sun-java6-jdk&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sun Java(TM) Development Kit (JDK) 6<br />
sun-java6-jre&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sun Java(TM) Runtime Environment (JRE) 6 (architecture<br />
xmind&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XMind - Brainstorming and Mind Mapping<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Contrib packages installed on ramin-laptop<br />
&nbsp;&nbsp;<br />
nvidia-common&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Find obsolete NVIDIA drivers<br />
&nbsp;&nbsp;<br />
 Contrib packages with status other than installed on ramin-laptop<br />
&nbsp;&nbsp;<br />
flashplugin-installer&nbsp;&nbsp;&nbsp;&nbsp; ( dei)&nbsp;&nbsp;Adobe Flash Player plugin installer<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;7 non-free packages, 0.5% of 1508 installed packages.<br />
&nbsp;&nbsp;2 contrib packages, 0.1% of 1508 installed packages.<br />
</code></p>
<p style="text-align:justify;">اما این رو هم اضافه کنم که از این بسته‌هایی که روی سیستمم دارم، شاید خیلیهاشون نسخه‌ی متن باز دارن و البته نسخه‌ی متن بازشون رو هم نصب شده دارم.</p>
<p style="text-align:justify;">خب از اونجا که از این حرکت خیلی وقته که می‌گذره و احتمالن همه‌ی دوستان این کار رو انجام دادن، من کسی رو دعوت نمی‌کنم. اگر کسی از قلم بقیه‌ی دوستان افتاده، بگه تا من دعوتش کنم :D</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/saarblog.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/saarblog.wordpress.com/405/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/saarblog.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/saarblog.wordpress.com/405/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/saarblog.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/saarblog.wordpress.com/405/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/saarblog.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/saarblog.wordpress.com/405/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/saarblog.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/saarblog.wordpress.com/405/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/saarblog.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/saarblog.wordpress.com/405/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/saarblog.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/saarblog.wordpress.com/405/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=saarblog.wordpress.com&amp;blog=2120539&amp;post=405&amp;subd=saarblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://saarblog.wordpress.com/2009/12/24/non-free-packages-installed-on-my-laptop/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9437825a9e40ae76419e37cd1e663a87?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">ИІΜΑЯ</media:title>
		</media:content>
	</item>
		<item>
		<title>چگونه از کامپایلر‌های متن باز در ویندوز استفاده کنیم</title>
		<link>http://saarblog.wordpress.com/2009/09/08/open-source-compilers-on-windows/</link>
		<comments>http://saarblog.wordpress.com/2009/09/08/open-source-compilers-on-windows/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 15:58:51 +0000</pubDate>
		<dc:creator>Saar</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[آموزش]]></category>

		<guid isPermaLink="false">http://saarblog.wordpress.com/?p=370</guid>
		<description><![CDATA[بروز بودن یه برنامه نویس اول از همه نیازمند تلاش خود اون شخصه و در وحله‌ی بعد نیازمند بروز بودن امکانات اونه. چه چیزی بهتر از کامپایلر‌های متن باز و آزاد که هم به روز هستن و هم قوی و در نهایت رایگان. کمتر کسی از جامعه‌ی برنامه نویسی اسم gcc رو نشنیده. gcc کامپایلریه [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=saarblog.wordpress.com&amp;blog=2120539&amp;post=370&amp;subd=saarblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">بروز بودن یه برنامه نویس اول از همه نیازمند تلاش خود اون شخصه و در وحله‌ی بعد نیازمند بروز بودن امکانات اونه. چه چیزی بهتر از کامپایلر‌های متن باز و آزاد که هم به روز هستن و هم قوی و در نهایت رایگان.</p>
<p style="text-align:justify;"><a rel="attachment wp-att-371" href="http://saarblog.wordpress.com/2009/09/08/open-source-compilers-on-windows/gccegg-65/"><img class="size-full wp-image-371 alignleft" title="gccegg-65" src="http://saarblog.files.wordpress.com/2009/09/gccegg-65.png?w=109&#038;h=130" alt="gccegg-65" width="109" height="130" /></a>کمتر کسی از جامعه‌ی برنامه نویسی اسم <a href="http://gcc.gnu.org/" target="_blank">gcc</a> رو نشنیده. <a href="http://gcc.gnu.org/" target="_blank">gcc</a> کامپایلریه که نامش از سر‌کلمه‌های <span dir="ltr">Gnu Compiler Collection</span> گرفته شده و ریچارد استالمن در سال 1985 برای ترجمه‌ی برنامه‌های نوشته شده به زبون <span dir="ltr">c</span> اون شروع به ساخت کرد. (<a href="http://en.wikipedia.org/wiki/GNU_Compiler_Collection#History" target="_blank">منبع</a>، <a href="http://en.wikipedia.org/wiki/GNU_Compiler_Collection" target="_blank">اطلاعات بیشتر</a>، <a href="http://gcc.gnu.org/" target="_blank">وب‌سایت پروژه</a>)</p>
<p style="text-align:justify;">برای داشتن قدرت و امکانات <span dir="ltr">gcc</span> لزومی نداره که کاربر، سیستم‌عامل خاصی، به عنوان مثال <a href="http://en.wikipedia.org/wiki/Linux" target="_blank">gnu/linux</a> یا <a href="http://en.wikipedia.org/wiki/Hurd" target="_blank">gnu/hurd</a> داشته باشه.<br />
توی این پست نحوه‌ی استفاده از <span dir="ltr">GCC</span> توی ویندوز رو توضیح می‌دم.</p>
<p style="text-align:justify;">قبل از هرچیز به <a href="http://www.mingw.org/" target="_blank">MinGW</a> نیاز داریم. که می‌تونیم از <a href="http://sourceforge.net/projects/mingw/files/Automated%20MinGW%20Installer/MinGW%205.1.4/MinGW-5.1.4.exe/download" target="_blank">این لینک</a> نسخه‌ی 5.1.4 اون رو دریافت کنید. حجم زیادی هم نداره و در حقیقت یه برنامه برای دانلود بسته‌های مورد نیاز هستش.</p>
<ul>
<li>اون رو اجرا کنید.</li>
<li>پنجره‌ی خوشامد گویی رو با کلید <span dir="ltr">Next</span> جواب بدین.</li>
<li>اگر روی سیستمی که برنامه رو اجرا کردین می‌خواین برنامه رو نصب کنید که <span dir="ltr">Download and Install</span> رو انتخاب کنید و اگر می‌خواین فقط بسته‌ها رو دانلود کنید، <span dir="ltr">Download only</span> رو انتخاب کنید و کلید <span dir="ltr">Next</span> رو بزنید.</li>
<li>با پروانه‌ی استفاده و توزیع مجدد در صورتی که موافقت دارید، با زدن کلید <span dir="ltr">I Agree</span> موافقت کنید.</li>
<li>بذارین بسته‌های نسخه‌ی <span dir="ltr">Current</span> نصب شه. پس <span dir="ltr">Next</span> رو کلیک کنید.</li>
<li>کامپایلر‌هایی که نیاز دارین رو علامت دار کنید و با <span dir="ltr">Next</span> به صفحه‌ی بعد برین.</li>
<li>مکان نصب رو انتخاب کنید و <span dir="ltr">Next</span> رو کلیلک کنید.</li>
<li>در انتها هم با زدن کلید <span dir="ltr">Install</span> منتظر دانلود شدن (و احتمالا نصب) بسته‌ها باشید.</li>
</ul>
<p style="text-align:justify;">خب تا اینجا که فقط نصب برنامه بود که خیلی آسون هم بود. اما یه کد نویس علاوه بر کامپایلر به محیط توسعه (IDE) هم نیاز داره. ما که همه چیز رو به صورت آزاد داشتیم، بد نیست از <span dir="ltr">IDE</span> های آزاد هم استفاده کنیم. برای کار‌های کوچیک <a href="http://notepad-plus.sourceforge.net/uk/site.htm" target="_blank"><img class="alignnone" title="npp" src="http://notepad-plus.sourceforge.net/favicon.ico" alt="" width="16" height="16" /><span dir="ltr">Notepad++</span></a> برنامه‌ی خوبیه ولی من به <a href="http://www.geany.org/" target="_blank">Geany<img class="alignnone" title="geany" src="http://www.geany.org/favicon.ico" alt="" width="16" height="16" /></a> عادت کردم و اون رو هم به شما پیشنهاد می‌کنم.</p>
<p style="text-align:justify;">اما یه کار کوچولوی دیگه هم اگر انجام بدیم کارمون خیلی راحت تر می‌شه. من فرض رو بر این می‌ذارم که شما این <span dir="ltr">MinGW</span> رو توی درایو <span dir="ltr">C</span> ویندوز نصب کردین. اگر اینطور نیست توی توضیحات به جای این آدرس، محل نصب نرم‌افزار تو سیستمتون رو بذارین. این توضیحات برای ویندوز <span dir="ltr">XP</span> هستش و برای نسخه‌های دیگه‌ی ویندوز روال مشابهی طی می‌شه.</p>
<ul>
<li>به <span dir="ltr">Control Panel</span> برین.</li>
<li>اگر گزینه‌ی <span dir="ltr">Performanceand Maintenance</span> رو می‌بینید (کنترل پانل به صورت <span dir="ltr">Category view</span> هست) رو بزنید.</li>
<li>System رو انتخاب کنید و اون رو باز کنید.</li>
<li>سربرگ <span dir="ltr">Advanced</span> رو انتخاب کنید.</li>
<li>از پایین پنجره کلید <span dir="ltr">Environment Variables</span> رو بزنید.</li>
<li>از لیست <span dir="ltr">System variables</span> دنبال <span dir="ltr">Path</span> بگردین و از پایین لیست <span dir="ltr">Edit</span> رو کلیک کنید.</li>
<li>متن زیر رو که آدرس پوشه‌ی <span dir="ltr">bin</span> نرم‌افزار <span dir="ltr">MinGW</span> نصب شدست رو به همراه یک سیمی‌کالن به ابتداری متن کادر <span dir="ltr">Variable value</span> اضافه کنید:<br />
<code>C:\MinGW\bin;</code></li>
<li>تمام پنجره‌های باز رو با زدن کلید <span dir="ltr">Ok</span> ببندین.</li>
</ul>
<p>خب، از این به بعد می‌تونید بدون تایپ کردن آدرس از <span dir="ltr">g++</span> و امکانات دیگه استفاده کنید.</p>
<p style="text-align:justify;">اما اگر <img class="alignnone" title="geany" src="http://www.geany.org/favicon.ico" alt="" width="16" height="16" />Geany رو نصب کردین، از همون تو می‌تونید برنامه رو کامپایل کنید (F8) یا فایل اجرایی رو تولید کنید (F9) و یا برنامه رو اجرا کنید (F5). پس کد زیر رو توی اون کپی کنید، با نام hello.cpp سیو کنید و بعد F9 رو از روی صفحه‌کلید بزنید و بعد برای اجرای اون کلید F5 رو بزنید. به همین راحتی!<br />
<code>#include&lt;iostream&gt;<br />
using namespace std;<br />
int main(int argc, char** argv){<br />
&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; "Hello MinGW!\tHello Geany!\n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;return 0;<br />
}</code></p>
<p>خب امیدوارم این پست براتون مفید باشه. بد نیست برنامه‌ی <a href="http://www.cygwin.com/" target="_blank"><img class="alignnone" title="cygwin" src="http://cygwin.com/cygwin-icon.gif" alt="" width="16" height="16" />Cygwin</a> رو هم تست کنید!<br />
محیط توسعه‌ی <a href="http://www.netbeans.org/" target="_blank"><img class="alignnone" title="Netbeans" src="http://www.netbeans.org/favicon.ico" alt="" width="16" height="16" />Netbeans </a>هم خیلی آسون و سریع و قدرتمنه. بد نیست اون رو هم تست کنید.<br />
پ‌ن: این پست هم تقدیم به <a href="http://learningcplusplus.wordpress.com/" target="_blank">ایشون </a>که بسیار با اراده و مصمم دارن برنامه نویسی رو یاد می‌گیرن.<br />
پ‌ن: یک نمونه‌ی کار بسیار عالی رو هم می‌تونید <a href="http://mtux.wordpress.com/2009/08/22/%D8%A8%DB%8C%D9%84%D8%A8%D9%88-%D8%B1%D9%88%DB%8C-%D9%88%DB%8C%D9%86%D8%AF%D9%88%D8%B2/">اینجا</a> ببینید</p>
<hr />
<h3>بروز رسانی</h3>
<p align="justify">
توی نظرات بحث گرمی در گرفت. خیلی‌ها از جمله خود من با فایل w32api-3.13-mingw32-dev.tar.gz مشکل داشتن که <a href="http://sasy.ir"><img width="16" height="16" src="http://1.gravatar.com/avatar/d958217e820f64a6f031e7710b6392e7?s=32&amp;d=identicon&amp;r=G">ساسان</a> عزیز یه راه حل خیلی خوب پیشنهاد داد. Mirror دانلود رو عوض کنید تا مشکل حل بشه!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/saarblog.wordpress.com/370/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/saarblog.wordpress.com/370/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/saarblog.wordpress.com/370/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/saarblog.wordpress.com/370/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/saarblog.wordpress.com/370/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/saarblog.wordpress.com/370/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/saarblog.wordpress.com/370/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/saarblog.wordpress.com/370/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/saarblog.wordpress.com/370/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/saarblog.wordpress.com/370/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/saarblog.wordpress.com/370/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/saarblog.wordpress.com/370/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/saarblog.wordpress.com/370/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/saarblog.wordpress.com/370/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=saarblog.wordpress.com&amp;blog=2120539&amp;post=370&amp;subd=saarblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://saarblog.wordpress.com/2009/09/08/open-source-compilers-on-windows/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9437825a9e40ae76419e37cd1e663a87?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">ИІΜΑЯ</media:title>
		</media:content>

		<media:content url="http://saarblog.files.wordpress.com/2009/09/gccegg-65.png" medium="image">
			<media:title type="html">gccegg-65</media:title>
		</media:content>

		<media:content url="http://notepad-plus.sourceforge.net/favicon.ico" medium="image">
			<media:title type="html">npp</media:title>
		</media:content>

		<media:content url="http://www.geany.org/favicon.ico" medium="image">
			<media:title type="html">geany</media:title>
		</media:content>

		<media:content url="http://www.geany.org/favicon.ico" medium="image">
			<media:title type="html">geany</media:title>
		</media:content>

		<media:content url="http://cygwin.com/cygwin-icon.gif" medium="image">
			<media:title type="html">cygwin</media:title>
		</media:content>

		<media:content url="http://www.netbeans.org/favicon.ico" medium="image">
			<media:title type="html">Netbeans</media:title>
		</media:content>

		<media:content url="http://1.gravatar.com/avatar/d958217e820f64a6f031e7710b6392e7?s=32&#038;d=identicon&#038;r=G" medium="image" />
	</item>
		<item>
		<title>Origo IDE ابزاری مناسب برای برنامه نویسی موبایل</title>
		<link>http://saarblog.wordpress.com/2009/08/08/origo-ide/</link>
		<comments>http://saarblog.wordpress.com/2009/08/08/origo-ide/#comments</comments>
		<pubDate>Sat, 08 Aug 2009 02:31:05 +0000</pubDate>
		<dc:creator>Saar</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[موبایل]]></category>
		<category><![CDATA[آموزش]]></category>
		<category><![CDATA[روزانه]]></category>

		<guid isPermaLink="false">http://saarblog.wordpress.com/?p=342</guid>
		<description><![CDATA[هميشه کد نويسي براي موبايل خيلي پر دردسر تر از کد نويسي معمولي بوده. خب اول نياز بود تا يه زبون برنامه نويسي رو ياد بگيريم و بعد ابزار هاي کد نويسي براي موبايل که البته توي ايران به اين راحتي ها هم در دسترس نيست (به خاطر تحريم) و بعد شرو به کد نويسي [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=saarblog.wordpress.com&amp;blog=2120539&amp;post=342&amp;subd=saarblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="attachment_351" class="wp-caption aligncenter" style="width: 252px"><a rel="attachment wp-att-351" href="http://saarblog.wordpress.com/2009/08/08/origo-ide/logo/"><img class="size-full wp-image-351" title="Origo IDE Logo" src="http://saarblog.files.wordpress.com/2009/08/logo.jpg?w=242&#038;h=89" alt="Origo IDE™" width="242" height="89" /></a><p class="wp-caption-text">Origo IDE</p></div>
<p>هميشه کد نويسي براي موبايل خيلي پر دردسر تر از کد نويسي معمولي بوده. خب اول نياز بود تا يه زبون برنامه نويسي رو ياد بگيريم و بعد ابزار هاي کد نويسي براي موبايل  که البته توي ايران به اين راحتي ها هم در دسترس نيست (به خاطر تحريم) و بعد شرو به کد نويسي و تست کنيم. سختي اين کار باعث شد که من فقط 2 تا برنامه اونم با زبون جاوا براي موبايل بنويسم و از اين کار دست بکشم. اما ديروز با يک <a href="http://en.wikipedia.org/wiki/Integrated_development_environment" target="_blank">IDE</a> آشنا شدم که با اون به راحتي و حتي با دانش خيلي کم برنامه نويسي مي شه براي موبايل برنامه ي کاربردي نوشت. اسم اين محيط توسعه ي نرم افزار هست <a href="http://origoide.com" target="_blank">Origo IDE</a>. بهتره قبل از توضيح بيشتر من، توضيح <a href="http://origoide.com" target="_blank">وبسايت Origo IDE</a> رو ببينيم:</p>
<blockquote>
<p style="text-align:left;" dir="ltr">Origo IDE™ delivers exceptional performance on Symbian S60 3rd and 5th edition devices.Developing quality applications for Nokia Smartphones is suddenly faster than ever with Origo IDE™.<br />
Start developing great software for Symbian S60 now and publish it at Nokia Ovi Store in record time.</p></blockquote>
<p style="text-align:justify;">خب همونطور که مي بينيد با اين محيط توسعه ي نرم افزار مي شه براي گوشي هاي داراي سيستم عامل <a href="http://en.wikipedia.org/wiki/Symbian_OS" target="_blank">Symbian</a> <a href="http://en.wikipedia.org/wiki/S60_(software_platform)" target="_blank">سري 60 </a>که محبوب ترين سري توي گوشي هاي موبايل هست، البته نسخه ي 3 (مثل <a href="http://en.wikipedia.org/wiki/Nokia_N73" target="_blank">Nokia N73</a> و <a href="http://en.wikipedia.org/wiki/Nokia_N95" target="_blank">Nokia N95</a>) و نسخه ي 5 (مثل <a href="http://en.wikipedia.org/wiki/Nokia_5800_XpressMusic" target="_blank">Nokia 5800 Xpress Music</a> و <a href="http://en.wikipedia.org/wiki/Nokia_N97" target="_blank">Nokia N97</a> و <a title="Samsung i8910" href="http://en.wikipedia.org/wiki/Samsung_i8910" target="_blank">Samsung i8910 Omnia HD</a>) به راحتي و با کيفيت عالي برنامه ي کاربردي نوشت و حتي اون ها رو به فروش رسوند. اين خيلي عاليه.بد نيست که يه <a href="http://en.wikipedia.org/wiki/Hello_world" target="_blank">Hello World</a> رو هم به اين زبون ببينيم:</p>
<p><code>.// program entrypoint<br />
.export main<br />
.  System.run application new MyApplication<br />
.<br />
.// MyApplication is the application launched from entrypoint<br />
.class MyApplication extends Application implements TimerListener<br />
.<br />
.  // from class Application<br />
.  draw to &lt;Canvas deviceCanvas&gt;<br />
.    deviceCanvas.draw string "Hello World" to 0, 0</code></p>
<p style="text-align:justify;">مي بينيد که کد هاي اين برنامه بيشتر به زبون محاوره اي شباهت داره تا کد يک برنامه اونم براي موبايل! بله! به همين راحتي. البته بايد اعتراف کنم که کد نويسي براي من سخته که به اين شکل کد بنويسم!</p>
<p style="text-align:justify;">تو <a href="http://origoide.com/tutorial.php" target="_blank">صفحه ي آموزش</a> اينطور جمله اي به چشم مي خوره:</p>
<blockquote>
<p style="text-align:left;" dir="ltr">Origo Programming Language is a multi-paradigm, statically typed programming language. It is powerful but easy to learn and use. Many aspects of Origo are similar to Java but Origo borrows certain aspects also from other programming languages, such as indentation blocks and range style vector manipulation from Python.</p>
</blockquote>
<p style="text-align:justify;">خب حق هم داره. خيلي از جنبه هاي جاوا رو توي خودش داره ولي از زبون هاي ديگه مثل Python هم جنبه هايي رو به ارث برده. مثل اين بلاک بندي (که به بيرون زدگي بلاک ها يا دندونه کردن بلاک ها معروفه) رو از Python داره. يعني شما رو مجبور مي کنه که بلاک ها رو مرتب بنويسيد.</p>
<p style="text-align:justify;">اگر مشتاق شديد که برنامه با اين زبون براي گوشي خودتون بنويسيد (مثل من) يا حتي اون رو به فروش برسونيد، آموزشي هم براي شما ترتيب دادن. مي تونيد از منوي Help برنامه Documention رو بياريد يا از <a href="http://origoide.com/tutorial.php" target="_blank">اين صفحه</a> توي مرور گرتون ديدن کنيد.</p>
<p style="text-align:justify;">و در نهايت بايد اين ها رو اضافه کنم که اين برنامه براي Microsoft Windows ساخته شده و نسخه اي براي سيستم عامل هاي ديگه هنوز وجود نداره. هنوز به صورت آزمايشي به سر مي بره و نهايي نشده. و البته بزرگ ترين مشکل که براي ما ايراني ها وجود داره اينه که اين برنامه به صورت رايگان نيست. البته مي تونيد نسخه ي آزمايشي اون رو دريافت کنيد و فکر مي کنم بدون محدوديت در امکانات يا محدوديت زماني از اون استفاده کنيد. احتمالا توي اين حالت نمي تونيد برنامه هاي خودتون رو به فروش برسونيد. من فعلا از اين حالت دارم استفاده مي کنم.</p>
<p style="text-align:justify;">من مي خوام براي امتحان هم که شده يک بازي براي گوشي سري 60 نسخه ي 5 خودم بنويسم. اگر تونستم، حتماً به صورت متن باز اون رو توي وبلاگ ارائه مي کنم.</p>
<p>پ ن: براي <a href="http://en.wikipedia.org/wiki/Integrated_development_environment" target="_blank">IDE</a> معادلي بهتر از «محيط توسعه ي نرم افزار» پيدا نکردم. اگر بخوايم کلمه به کلمه «<a href="http://en.wikipedia.org/wiki/Integrated_development_environment" target="_blank">Integrated Development Environment</a>» رو ترجمه کنيد معادل مناسبي به دست نمياد. توي ويکي پديا نوشته «<a href="http://fa.wikipedia.org/wiki/%D9%85%D8%AD%DB%8C%D8%B7_%D8%AA%D9%88%D8%B3%D8%B9%D9%87_%D9%85%D8%AC%D8%AA%D9%85%D8%B9" target="_blank">محيط توسعه ي مجتمع</a>» که براي من همچين قابل قبول نيست!<br />
پ ن: اگر سوالي براتون پيش اومد، من در خدمت هستم که اگر بتونم به اين سوال جواب بدم.<br />
پ ن: توی اون مثال ابتدای هر خط من یه نقطه اضافه کردم تا این ورد پرس کد رو به هم نریزه.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/saarblog.wordpress.com/342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/saarblog.wordpress.com/342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/saarblog.wordpress.com/342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/saarblog.wordpress.com/342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/saarblog.wordpress.com/342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/saarblog.wordpress.com/342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/saarblog.wordpress.com/342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/saarblog.wordpress.com/342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/saarblog.wordpress.com/342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/saarblog.wordpress.com/342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/saarblog.wordpress.com/342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/saarblog.wordpress.com/342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/saarblog.wordpress.com/342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/saarblog.wordpress.com/342/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=saarblog.wordpress.com&amp;blog=2120539&amp;post=342&amp;subd=saarblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://saarblog.wordpress.com/2009/08/08/origo-ide/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9437825a9e40ae76419e37cd1e663a87?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">ИІΜΑЯ</media:title>
		</media:content>

		<media:content url="http://saarblog.files.wordpress.com/2009/08/logo.jpg" medium="image">
			<media:title type="html">Origo IDE Logo</media:title>
		</media:content>
	</item>
		<item>
		<title>قرعه کشی فروشگاه سی تو</title>
		<link>http://saarblog.wordpress.com/2009/07/28/sito-ir/</link>
		<comments>http://saarblog.wordpress.com/2009/07/28/sito-ir/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 20:21:23 +0000</pubDate>
		<dc:creator>Saar</dc:creator>
				<category><![CDATA[روزانه]]></category>

		<guid isPermaLink="false">http://saarblog.wordpress.com/?p=333</guid>
		<description><![CDATA[چند روزیه که به خاطر مشکلات شخصی روز های بدی رو دارم می گذرونم. کمتر هم وقت به اینترنت می دم. اما چیزی که دیروز باعث شگفتی من شد یک پیام مستقیم بود توی توییتر از فروشگاه سی تو. البته درست نیست که پیام های مستقیم رو توی وبلاگم بنویسم ولی خب بنا به این [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=saarblog.wordpress.com&amp;blog=2120539&amp;post=333&amp;subd=saarblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="attachment_334" class="wp-caption aligncenter" style="width: 262px"><a href="http://sito.ir/"><img class="size-full wp-image-334" title="m10" src="http://saarblog.files.wordpress.com/2009/07/m10.gif?w=252&#038;h=167" alt="فروشگاه محصولات گنو/لینوکس سی تو" width="252" height="167" /></a><p class="wp-caption-text">فروشگاه محصولات گنو/لینوکس سی تو</p></div>
<p>چند روزیه که به خاطر مشکلات شخصی روز های بدی رو دارم می گذرونم. کمتر هم وقت به اینترنت می دم. اما چیزی که دیروز باعث شگفتی من شد یک پیام مستقیم بود توی <a href="http://twitter.com" target="_blank">توییتر </a>از فروشگاه <a href="http://www.twitter.com/sitoir" target="_blank">سی تو</a>. البته درست نیست که پیام های مستقیم رو توی وبلاگم بنویسم ولی خب بنا به این که من و احتمالا خود <a href="http://sito.ir" target="_blank">سی تو</a> مشکلی با این نداره، اون پیام رو کپی می کنم:</p>
<blockquote>
<p style="text-align:justify;"><a href="http://twitter.com/sitoir" target="_blank">sitoir</a>: سلام &#8211; شما برنده خرید ۲۵۰۰۰ تومان نرم افزاز فروشگاه لینوکس <a href="http://sito.ir" target="_blank">سی تو</a> شدید. پس از اتمام جشنواره می توانید اقدام به خرید تا این سقف نمایید</p>
</blockquote>
<p style="text-align:justify;">بله! من ۲۵۰۰۰ تومن برنده شدم! راستش من همیشه پشتیبان این فروشگاه بودم و البته از خریدارانشون هم محسوب می شم. البته به خاطر هدف زیبایی که دارن به این شدت ازشون پشتیبانی می کنم.</p>
<p style="text-align:justify;">امروز هم این ایمیل رو دریافت کردم:</p>
<blockquote>
<p style="text-align:justify;">به اطلاع کلیه کاربران گرامی فروشگاه لینوکس سی تو می رساند که تنها <strong>یک روز دیگر</strong> جهت خرید محصولات با تخفیف استثنائی فرصت باقی است و تمامی اجناس از روز پنجشنبه با قیمت اصلی عرضه خواهند شد.</p>
<p>همچنین خریداران محترم جهت <strong>پرداخت و ارسال اطلاعات فیش واریزی فقط تا پایان روز پنجشنبه فرصت دارند</strong> و در روز جمعه تمامی فاکتورهای پرداخت نشده حذف می گردند.</p>
<p><font color="#0000cc"><strong>برنده توییت پنجم مردادماه چه شخصی بود؟</strong></font><br />
بنا به قول قبلی در روز پنجم مردادماه قرعه کشی در بین توییت کنندگان سی تو برگزار گردید و شخص با نام کاربری <a href="http://twitter.com/saarblog" target="_blank">saarblog@</a> مدیر وبلاگ <a href="http://saarblog.wordpress.com" target="_blank">http://saarblog.wordpress.com</a> برنده 25000 تومان بن خرید نرم افزار از سی تو گردید.<br />
برای توییت کردن فروشگاه جهت آگاهی از جشنواره ها و محصولات جدید از آدرس <a href="http://www.twitter.com/sitoir" target="_blank">http://www.twitter.com/sitoir</a> استفاده نمایید.</p>
<p>با تشکر از همراهی شما<br />
مدیریت فروشگاه محصولات گنو/لینوکس سی تو</p></blockquote>
<p style="text-align:justify;">البته اضافه کنم که این جشنواره ها زمان خوبی برای خریدن یک سری از توزیع هایی که به این راحتی به دست نمیان هستش. در کل، علاوه بر تشکر از این فروشگاه، این رو اضافه کنم که هدف این فروشگاه یقیناً یک هدف مادی نیست، قیمت پایین محصولات گویای این ادعای منه. هدف زیبای توسعه ی آزادی نرم افزار هدفیه که من حدس می زنم باعث ایجاد این فروشگاه شده. این فروشگاه قبل از این هم یک سری اوبونتو برای جشن انتشاری که من توی دانشگاه برگزار کردم به صورت رایگان ارسال کرده.<br />
پس بیایم ما هم با پشتیبانی از این فروشگاه توی فرهنگ سازی نرم افزار آزاد نقشی داشته باشیم و این فروشگاه رو با خرید خودمون حمایت کنیم.</p>
<p style="text-align:justify;">شاید بهتر از این پست جایی برای یک سری پیشنهاد به این فروشگاه نباشه! <a href="http://fa.parsilatex.wikia.com/wiki/%D8%B5%D9%81%D8%AD%D9%87%D9%94_%D8%A7%D8%B5%D9%84%DB%8C" target="_blank">لاتک فارسی</a> و البته پروژه ی<a href="http://groups.google.com/group/farsilatex?hl=fa" target="_blank"> زی پرشن</a> هم یک نرم افزار آزاد فارسی هستش که نیاز به حمایت داره. متاسفانه شاید اسم این رو هم خیلی نشنیدیم. من قبل از این به تیم توسعه ی  <a href="http://parsix.org" target="_blank">پارسیکس </a>هم پیشنهاد گنجوندن این برنامه رو توی توزیع خودشون کردم که متاسفانه استقبالی نشد. خب از سی تو می خوام که پیگیر این نرم افزار و گنجوندنش توی فروشگاه باشه که من قول می دم یکی از اولین کسانی باشم که اون رو می خرم.</p>
<p style="text-align:justify;">پیشنهاد بعدی من هم اینه که روی مخازن محلی بیشتر تکیه کنن. یکی از مشکلات ایرانی ها سرعت پایین اینترنته که باعث شده از جامعه ی متن باز بیشتر از پیش دور باشن. این مخازن محلی می تونه حد اقل مقداری از این کاستی رو جبران کنه.</p>
<p style="text-align:justify;">پیشنهاد سوم هم این که آرم فروشگاه یا لوگوی اون رو توی این تصاویر کوچیک 80 در 15 پیکسلی بذاره تا کسانی که این فروشگاه رو حمایت می کنن اون آرم رو توی صفحه ی خودشون بذارن.</p>
<p style="text-align:justify;">پ ن: راستش چند وقتی بود که می خواستم <a href="http://www.sito.ir/product_info.php?cPath=308&amp;products_id=898&amp;osCsid=27d9918bbc8bbf82928a335bd012d493">مجموعه کامل LCD4Linux</a> رو بخرم. پس احتمالا این کار رو با این جایزه خواهم کرد. البته در کنار اون بدم نمیاد <span><a href="http://www.sito.ir/product_info.php?products_id=947&amp;osCsid=27d9918bbc8bbf82928a335bd012d493">سیستم عامل اندروید گوگل به صورت دیسک زنده</a></span> رو هم تجربه کنم. در کل یه پست هم در مورد خرید های خودم خواهم نوشت!</p>
<hr />
<h1>بعد نوشت</h1>
<p style="text-align:justify;">توی این چند وقت که از اینترنت دور بودم گویا مخازن محلی <a href="http://ubuntu.com" target="_blank">اوبونتو</a> به فروشگاه اضافه شده! اینم <a href="http://www.sito.ir/product_info.php?products_id=940&amp;osCsid=27d9918bbc8bbf82928a335bd012d493" target="_blank">لینک</a>!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/saarblog.wordpress.com/333/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/saarblog.wordpress.com/333/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/saarblog.wordpress.com/333/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/saarblog.wordpress.com/333/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/saarblog.wordpress.com/333/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/saarblog.wordpress.com/333/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/saarblog.wordpress.com/333/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/saarblog.wordpress.com/333/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/saarblog.wordpress.com/333/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/saarblog.wordpress.com/333/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/saarblog.wordpress.com/333/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/saarblog.wordpress.com/333/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/saarblog.wordpress.com/333/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/saarblog.wordpress.com/333/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=saarblog.wordpress.com&amp;blog=2120539&amp;post=333&amp;subd=saarblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://saarblog.wordpress.com/2009/07/28/sito-ir/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9437825a9e40ae76419e37cd1e663a87?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">ИІΜΑЯ</media:title>
		</media:content>

		<media:content url="http://saarblog.files.wordpress.com/2009/07/m10.gif" medium="image">
			<media:title type="html">m10</media:title>
		</media:content>
	</item>
		<item>
		<title>تغییر تصویر زمینه‌ی صفحه‌ی بوت سیستم</title>
		<link>http://saarblog.wordpress.com/2009/07/23/grub-splash-image/</link>
		<comments>http://saarblog.wordpress.com/2009/07/23/grub-splash-image/#comments</comments>
		<pubDate>Thu, 23 Jul 2009 02:45:32 +0000</pubDate>
		<dc:creator>Saar</dc:creator>
				<category><![CDATA[گنو-لینوکس]]></category>
		<category><![CDATA[آموزش]]></category>
		<category><![CDATA[روزانه]]></category>

		<guid isPermaLink="false">http://saarblog.wordpress.com/?p=325</guid>
		<description><![CDATA[براي شکستن سکوت «سار» بهانه‌اي بهتر از يه قابليت جالب سيستم‌هاي گنو/لينوکسي پيدا نکردم. اين بار مي‌خوام در مورد Grub که وظيفه‌ي بارگذاري سيستم عامل Ubuntu و البته خيلي از گنو/لينوکسي ديگه رو داره، يک قابليت جالب رو بگم. شايد مثل من دوست داشته باشيد صفحه‌ي انتخاب سيستم عاملتون حاوي يه تصوير يا حتي عکس [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=saarblog.wordpress.com&amp;blog=2120539&amp;post=325&amp;subd=saarblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p dir="rtl" align="justify">براي شکستن سکوت «<a href="http://saarblog.wordpress.com" target="_blank">سار</a>» بهانه‌اي بهتر از يه قابليت جالب سيستم‌هاي گنو/لينوکسي پيدا نکردم. اين بار مي‌خوام در مورد <a href="http://en.wikipedia.org/wiki/GNU_GRUB" target="_blank">Grub</a> که وظيفه‌ي <acronym title="Load">بارگذاري</acronym> سيستم عامل Ubuntu و البته خيلي از گنو/لينوکسي ديگه رو داره، يک قابليت جالب رو بگم.</p>
<p style="text-align:center;">
<div id="attachment_323" class="wp-caption aligncenter" style="width: 347px"><img class="size-full wp-image-323 aligncenter" title="Screenshot-Bootloader-Grub" src="http://saarblog.files.wordpress.com/2009/07/screenshot-bootloader-grub.png?w=337&#038;h=198" alt="Grub Splash Image" width="337" height="198" /><p class="wp-caption-text">Grub Splash Image</p></div>
<p>شايد مثل من دوست داشته باشيد صفحه‌ي انتخاب سيستم عاملتون حاوي يه تصوير يا حتي عکس خودتون باشه و از اون يک نواختي سابقش کم بشه. اگر اينطوره با من همراه بشين و کار هاي زير رو به ترتيب انجام بدين.</p>
<p dir="rtl" align="justify">اولين چيزي‌هايي که بهشون نياز داريم اين‌ها هستن:</p>
<ul>
<li>يک سيستم عامل <a href="http://ubuntu.com" target="_blank">Ubuntu </a>که البته نصب شده باشه.</li>
<li>اينترنت يا DVD اوبونتو. البته براي نصب يک برنامه. می تونید از فروشگاه <a href="http://sito.ir" target="_blank">سی تو</a> یا <a href="http://linuxshop.ir" target="_blank">لینوکس شاپ</a> تهیه کنید.</li>
<li>يک تصوير دلخواه که من براي شروع اين تصوير رو انتخاب کردم.</li>
<li>برنامه‌ي <a href="http://www.imagemagick.org/" target="_blank">imagemagick</a>.</li>
<li>بعلاوه‌ي يکم صبر و حوصله و تايپ چند تا دستور.</li>
</ul>
<p>خب اول از همه بايد imagemagick رو نصب کرد. پس يه<acronym title="Applications&gt;Accessories&gt;Terminal">Terminal</acronym> باز کنيد و کد زير رو بنويسيد:</p>
<p><code>sudo apt-get install imagemagick</code></p>
<p>بعد کد عبور رو تايپ کنيد و منتظر بمونيد تا برنامه دانلود بشه يا از DVD نصب بشه (براي نصب از DVD بايد اون رو به مخازن اضافه کرده باشيد) و نصب بشه.</p>
<p>حالا يه تصوير انتخاب کنيد و اون رو به <acronym title="Home Folder">پوشه‌ي خانگي</acronym> کپي کنيد يا اين که توي Terminal کد زير رو بنويسيد تا تصويري که من انتخاب کردم Download بشه:</p>
<p><code>wget http://saarblog.files.wordpress.com/2009/07/boot_image.jpg</code></p>
<p>ما نياز داريم تا سايز تصوير <acronym title="640x480 Pixel">۶۴۰×۴۸۰ Pixel</acronym> باشه. پس با دستور زير اون تصوير رو تغيير سايز مي‌ديم. فرض بر اينه که اسم تصوير boot_image.jpg هستش که اگر اينطور نيست توي کد زير اسم تصوير خودتون رو جايگزين کنيد.</p>
<p><code>convert -resize 640x480 boot_image.jpg image.jpg</code></p>
<p>با کد بالا از تصوير boot_image.jpg يک تصوير تغيير اندازه داده شده با نام image.jpg مي‌سازيم. تو اين مرحله نياز داريم تا تصويرمون رو ۱۵ رنگ و به نوع xpm تغيير بديم. براي اين کار کد زير رو استفاده مي‌کنيم:</p>
<p><code>convert -colors 15 image.jpg image.xpm</code></p>
<p>و در نهايت بايد تصوير حاصل رو فشرده کنيم:</p>
<p><code>gzip image.xpm</code></p>
<p>خب تا اينجا ما يک تصوير فشرده با نام image.xpm.gz خواهيم داشت. اين تصوير رو با کد زير به پوشه‌ي <acronym title="/boot/ grub">grub</acronym> منتقل مي‌کنيم. البته بايد مجوز داشته باشيم براي اين کار، به همين دليل sudo رو هم قبل از دستور کپي تايپ کردم.</p>
<p><code>sudo cp image.xpm.gz /boot/grub/</code></p>
<p>خب با کد زير از فايل متني حاوي تنظيمات grub يک پشتيبان بسازيد:</p>
<p><code>sudo cp /boot/grub/menu.lst /boot/grub/menu.lst.backup</code></p>
<p>و با کد زير فايل رو باز کنيد:</p>
<p><code>sudo gedit /boot/grub/menu.lst</code></p>
<p>اگر قبل از اين تصويري به عنوان پس زمينه‌ي صفحه‌ي boot انتخاب نکردين، کد زير رو به فايل اضافه کنيد. براي راحتي کار ابتداي فايل يک خط جديد اضافه کنيد و کد زير رو اونجا کپي کنيد:</p>
<p><code>splashimage   /boot/grub/image.xpm.gz</code></p>
<p>فايل رو ذخيره کنيد و ببنيد ويرايشگر رو. کار تمومه و مي‌تونيد براي ديدن نتيجه کامپيوتر رو restart کنيد. البته مي‌تونيد از دستور زير هم کمک بگيريد!</p>
<p><code>sudo reboot</code></p>
<p>اما خب براي اين که جلوه‌ي بهتري به کارمون بديم مي‌تونيم رنگ خطورط و زمينه‌ي انتخاب (و البته سايه‌ي خطوط) رو هم انتخاب کنيم. براي اين کار ابتدا دو تا رنگ براي اين دو در نظر بگيريد و کد RGB اون دوتا رو بدست بيارين (مي‌تونيد از gimp کمک بگيريد. البته براي اين کار برنامه‌ي gcolor2 هم وجود داره!) اگر از تصوير من استفاده کردين مي‌تونيد از کد رنگ‌هاي من هم استفاده کنيد. اين کد‌ها براي من: <span style="color:#e1ead8;">E1EAD8</span> براي زمينه و <span style="color:#512420;">512420</span> براي خط‌ها هستن. با اين حساب اين دو خط رو به فايل تنظيمات اضافه کنيد:</p>
<p><code>background   E1EAD8<br />
foreground   512420</code></p>
<p>خب. خسته نباشيد. اميد وارم اين راهنمايي هم براتون جالب باشه.</p>
<p dir="rtl" align="justify">پ‌ن: من براي Ubuntu توضيح دادم ولي خب براي اکثر گنو/لينوکس‌ها که از Grub استفاده مي‌کنن، روال همين هست. اگر به مشکلي برخورد کردين با من تماس بگيريد.</p>
<p>پ‌ن: بعضي از تصاوير وقتي براي اين کار استفاده مي‌شن به درستي نمايش پيدا نمي‌کنن. شايد هم مشکل از کارت گرافيک کامپيوتر من باشه. در هر صورت اگر به مشکل مشابهي برخوردين من رو هم در جريان بذارين.</p>
<p>پ‌ن: چند روز پيش تولدم بود. هرچند روز خوبي براي خودم نبود با اين همه خيلي از دوستان من رو شرمنده‌ي خودشون کردن که نمي‌تونم اسم تک تکشون رو ببرم. با اين همه از همشون تشکر مي‌کنم.</p>
<h4>به روز رسانی:</h4>
<p>برای Grub 2 هم <a href="http://ilinux.wordpress.com" target="_blank">آی لینوکی</a> یه پست خوب داره. برای این کار می تونید <a href="http://ilinux.wordpress.com/2009/07/25/grub-2-add-splash-image-to-beautify-grub-2/" target="_blank">این لینک</a> رو دنبال کنید.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/saarblog.wordpress.com/325/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/saarblog.wordpress.com/325/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/saarblog.wordpress.com/325/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/saarblog.wordpress.com/325/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/saarblog.wordpress.com/325/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/saarblog.wordpress.com/325/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/saarblog.wordpress.com/325/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/saarblog.wordpress.com/325/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/saarblog.wordpress.com/325/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/saarblog.wordpress.com/325/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/saarblog.wordpress.com/325/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/saarblog.wordpress.com/325/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/saarblog.wordpress.com/325/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/saarblog.wordpress.com/325/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=saarblog.wordpress.com&amp;blog=2120539&amp;post=325&amp;subd=saarblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://saarblog.wordpress.com/2009/07/23/grub-splash-image/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9437825a9e40ae76419e37cd1e663a87?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">ИІΜΑЯ</media:title>
		</media:content>

		<media:content url="http://saarblog.files.wordpress.com/2009/07/screenshot-bootloader-grub.png" medium="image">
			<media:title type="html">Screenshot-Bootloader-Grub</media:title>
		</media:content>
	</item>
	</channel>
</rss>
