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

<channel>
	<title>شاهزاده &#187; برنامه نویسی</title>
	<atom:link href="http://prince.soldier.ir/category/%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d9%86%d9%88%db%8c%d8%b3%db%8c/feed/" rel="self" type="application/rss+xml" />
	<link>http://prince.soldier.ir</link>
	<description>همه چیز ولی هیچ چیز</description>
	<lastBuildDate>Thu, 29 Jul 2010 17:10:20 +0000</lastBuildDate>
	<language>fa</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>انتشار hiphop php توسط facebook</title>
		<link>http://prince.soldier.ir/1388/11/14/%d8%a7%d9%86%d8%aa%d8%b4%d8%a7%d8%b1-hiphop-php-%d8%aa%d9%88%d8%b3%d8%b7-facebook/</link>
		<comments>http://prince.soldier.ir/1388/11/14/%d8%a7%d9%86%d8%aa%d8%b4%d8%a7%d8%b1-hiphop-php-%d8%aa%d9%88%d8%b3%d8%b7-facebook/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 07:54:13 +0000</pubDate>
		<dc:creator>بهروز</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[پی اچ پی - php]]></category>

		<guid isPermaLink="false">http://prince.soldier.ir/?p=111</guid>
		<description><![CDATA[روز گذشته facebook کامپایلری به عنوان hiphop php معرفی کرد که کد‌های php را به C++ تبدیل و کد تولید شده را با استفاده از gcc کامپایل می‌کند. از آن جایی که php یک زبان script نویسی است، برنامه نویسی با آن ساده و سریع اما سرعت اجرای آن نسبت به زبان‌هایی مانند C++/C کم‌تر [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://developers.facebook.com/news.php?blog=1&amp;story=358">روز گذشته</a> facebook کامپایلری به عنوان hiphop php معرفی کرد که  کد‌های php را به <span style="unicode-bidi: bidi-override; direction: ltr;">C++</span> تبدیل و کد تولید شده را با استفاده از gcc کامپایل می‌کند. از آن جایی که php یک زبان script نویسی است، برنامه نویسی با آن ساده و سریع اما سرعت اجرای آن نسبت به زبان‌هایی مانند C++/C  کم‌تر است. فیسبوک از سال ۲۰۰۷ قصد بالا بردن سرعت اجرای php را داشته است و وصله‌هایی نیز برای zend آماده و ارسال کرده بود اما نتیجه‌ی لازم حاصل نشده بود  و قصد بازنویسی با زبان‌های دیگر را داشته است اما با توجه به پیچیدگی و سرعت پیشرفت این کار انجام نشد.</p>
<p>فیسبوک اولین جایی نیست که قصد انجام این کار را داشته است. هم اکنون ابزار‌هایی برای تبدیل php به زبان‌هایی مثل C و Java وجود دارد؛ همین طور استفاده از ابزار‌هایی مانند eAccelerator برای cache کردن کد‌های تولید شده توسط Zend قبل از ارسال به ماشین مجازی باعث بالا بردن سرعت اجرای php می‌شود. اما تولید این ابزار توسط facebook و استفاده از آن به مدت ۶ماه و کم شدن ۵۰ درصدی بار سرور‌ها، دلیلی برای پروژه‌های enterprise خواهد بود تا از php استفاده کنند. این ابزار سادگی php در یادگیری، نوشتن و خواندن را با سرعت اجرای native code همراه خواهد کرد. hiphop php به زودی در <a href="http://github.com/">github</a> قرار خواهد گرفت.</p>
]]></content:encoded>
			<wfw:commentRss>http://prince.soldier.ir/1388/11/14/%d8%a7%d9%86%d8%aa%d8%b4%d8%a7%d8%b1-hiphop-php-%d8%aa%d9%88%d8%b3%d8%b7-facebook/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>تایید افزونه انتقال وبلاگ توسط موزیلا</title>
		<link>http://prince.soldier.ir/1388/09/18/%d8%aa%d8%a7%db%8c%db%8c%d8%af-%d8%a7%d9%81%d8%b2%d9%88%d9%86%d9%87-%d8%a7%d9%86%d8%aa%d9%82%d8%a7%d9%84-%d9%88%d8%a8%d9%84%d8%a7%da%af-%d8%aa%d9%88%d8%b3%d8%b7-%d9%85%d9%88%d8%b2%db%8c%d9%84%d8%a7/</link>
		<comments>http://prince.soldier.ir/1388/09/18/%d8%aa%d8%a7%db%8c%db%8c%d8%af-%d8%a7%d9%81%d8%b2%d9%88%d9%86%d9%87-%d8%a7%d9%86%d8%aa%d9%82%d8%a7%d9%84-%d9%88%d8%a8%d9%84%d8%a7%da%af-%d8%aa%d9%88%d8%b3%d8%b7-%d9%85%d9%88%d8%b2%db%8c%d9%84%d8%a7/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 06:57:43 +0000</pubDate>
		<dc:creator>بهروز</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[حرف های خودم]]></category>
		<category><![CDATA[وبلاگستان]]></category>

		<guid isPermaLink="false">http://prince.soldier.ir/?p=98</guid>
		<description><![CDATA[افزونه‌های فایرفاکس روی سیستم شما هر کاری می‌توانند انجام دهند و این توانایی می‌تواند امنیت شما را به خطر بندازد. موزیلا برای این تا حدی بتواند این مشکل را حل کند افزونه ها را بررسی می‌کند و سپس آن‌ها را به صورت افزونه‌های آشکار در سایت قرار می‌دهد. شرط مورد تایید قرار گرفتن افزونه‌ها رعایت [...]]]></description>
			<content:encoded><![CDATA[<p>افزونه‌های فایرفاکس روی سیستم شما هر کاری می‌توانند انجام دهند و این توانایی می‌تواند امنیت شما را به خطر بندازد. موزیلا برای این تا حدی بتواند این مشکل را حل کند افزونه ها را بررسی می‌کند و سپس آن‌ها را به صورت افزونه‌های آشکار در سایت قرار می‌دهد. شرط مورد تایید قرار گرفتن افزونه‌ها رعایت کردن تعدادی استاندارد در کد نویسی، کار کردن افزونه به شکل صحیح و در پایان ایجاد نکردن مشکل امنیتی برای کاربر است.</p>
<p>افزونه‌ی انتقال دهنده از ۳ شرط فوق دارای ۲ شرط آخر بود اما استاندارد های کدنویسی در آن رعایت نشده بود. با توجه به تغییرات پایه‌ای که در نسخه‌ی ۱.۵.۰ انجام دادم این مشکل را حل کردم و انتظار داشتم که افزونه مورد تایید موزیلا قرار بگیرد که تایید نیز شد. از هم اکنون می‌توانید این افزونه را از خود فایرفاکس و بدون مراجعه به سایت موزیلا نصب کنید و همانند دیگر افزونه‌های تایید شده هر زمان که افزونه به روز شود فایرفاکس شما را از آن مطلع خواهد کرد.</p>
<p>لازم به توضیح است که این افزونه تا به حال بیش‌تر از ۱۶۵۰۰ بار دریافت شده است و از نسخه‌ی ۱.۵.۱ درخواست های دریافت افزونه از این سایت به سایت رسمی موزیلا بازتاب می‌شود. برای توضیحات بیش‌تر به <a href="http://web3b.wordpress.com/2008/12/17/export-import-blogger-wordpress/">مقاله‌ی وب۳</a> و برای <a href="https://addons.mozilla.org/en-US/firefox/addon/8672">دریافت افزونه</a> به این صفحه مراجعه کنید.</p>
]]></content:encoded>
			<wfw:commentRss>http://prince.soldier.ir/1388/09/18/%d8%aa%d8%a7%db%8c%db%8c%d8%af-%d8%a7%d9%81%d8%b2%d9%88%d9%86%d9%87-%d8%a7%d9%86%d8%aa%d9%82%d8%a7%d9%84-%d9%88%d8%a8%d9%84%d8%a7%da%af-%d8%aa%d9%88%d8%b3%d8%b7-%d9%85%d9%88%d8%b2%db%8c%d9%84%d8%a7/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>ساخت مخزن git</title>
		<link>http://prince.soldier.ir/1388/06/28/%d8%b3%d8%a7%d8%ae%d8%aa-%d9%85%d8%ae%d8%b2%d9%86-git/</link>
		<comments>http://prince.soldier.ir/1388/06/28/%d8%b3%d8%a7%d8%ae%d8%aa-%d9%85%d8%ae%d8%b2%d9%86-git/#comments</comments>
		<pubDate>Sat, 19 Sep 2009 13:24:36 +0000</pubDate>
		<dc:creator>بهروز</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>

		<guid isPermaLink="false">http://prince.soldier.ir/?p=84</guid>
		<description><![CDATA[اگه برنامه نویس باشین و توی کارهای نرم‌افزار آزاد  باشین حتما اسم گیت رو شنیدین اگه نشنیدین خوب برای  شروع بهتره مقاله‌ی علی فرهادی رو بخونین که توضیحاتی  در مورد گیت و تفاوتش با svn می‌ده. اما من می‌خوام بگم چطوری می‌تونین روی یه سرور یه مخزن گیت درست کنین حالا چه از اون سرور [...]]]></description>
			<content:encoded><![CDATA[<p>اگه برنامه نویس باشین و توی کارهای نرم‌افزار آزاد  باشین حتما اسم گیت رو شنیدین اگه نشنیدین خوب برای  شروع بهتره مقاله‌ی <a title="وبلاگ شخصی علی فرهادی" href="http://farhadi.ir/blog/1388/06/23/git-vs-svn/" target="_blank">علی فرهادی</a> رو بخونین که توضیحاتی  در مورد گیت و تفاوتش با svn می‌ده. اما من می‌خوام بگم چطوری می‌تونین روی یه سرور یه مخزن گیت درست کنین حالا چه از اون سرور داخل شرکت استفاده می‌کنین چه اون سروری هست که سایتتون روش قرار داره.</p>
<p>در مرحله‌ی نخست شما باید ابزار کار رو نصب کنین که شامل Apache و git هست. البته Apache باید ماژول dav رو داشته باشه که اگه ندارید نصب کنین. همین طور برای اینکه بتونین تنظیمات رو روی سرور عمال کنین نیاز به دسترسی به SSH روی سرور دارید.<br />
<strong>توضیح</strong>: روی دبیان و بچه‌هاش (شامل اوبونتو) dav به همراه Apache نصب می‌شه. شما باید اونو فعال کنین که توضیح خواهم داد.</p>
<p>۱. یه مخزن خالی روی سرور درست کنین:<br />
<code>cd /var/www<br />
mkdir my-git-repo.git<br />
cd my-git-repo.git<br />
git --bare init</code></p>
<p>۲. این پوشه و محتویاتش رو به کاربری که Apache با اون اجرا می‌شه اختصاص بدین. توی دبیان و خانواده‌ش این کاربر www-data و توی ردهت و خوانواده‌ش www هست. ممکنه لازم باشه این کار رو با کاربر ریشه انجام بدین یا اگه به کاربر ریشه دسترسی ندارین  با استفاده از sudo انجام بدین.<br />
<code>chown -R www-data.www-data .</code><strong>توضیح</strong>: اینجا من گروه رو هم عوض می‌کنم اما می‌تونین  گروه دلخواه رو جایگزین کنین برای این کار به عنوان  مثال می‌تونین کاربر رو www-data و گروه رو behrooz  به این شکل اختصاص بدین:<br />
<code>chown -R www-data.behrooz</code></p>
<p>۳. نوبت رسید به فعال کردن dav وdav_lock و dav_fs برای این کار روی دبیان و خانواده‌ش می‌تونین این کار رو با دستور<br />
<code>a2enmod dav dav_lock dav_fs</code>انجام بدین اما برای ردهت و خانواده‌ش  باید خودتون فایل تنظیمات apache رو دست کاری کنین. نخست با LoadModule باید ۳ ماٰژول مورد نیاز رو بارگذاری و سپس با استفاده از AddModule آن‌ها را فعال کنید.</p>
<p>خوب می‌تونیم تنظیمات لازم رو انجام بدیم. این تنظیمات مربوط رو توی فایل مربوط به هاست مورد نظر قرار بدید.<br />
<strong>توضیح</strong>: این فایل با تنظیمات اولیه روی یک دبیان در مسیر<br />
<code>/etc/apache2/sites-available/default</code> قرار دارد. شما باید این تنظیمات را داخل &lt;VirtualHost&gt; اضافه کنید<br />
<code>&lt;Location /my-git-repo.git&gt;<br />
DAV on<br />
AuthType Basic<br />
AuthName "Git"<br />
AuthUserFile /etc/apache2/passwd.git<br />
Require valid-user<br />
&lt;/Location&gt;</code>می‌شه گفت همه چیز مشخصه جر فایل passwd.git این همون فایلی هستش که شما کاربر‌ها و کلمه‌ی عبور لازم برای استفاده از مخزن رو توش تعریف می‌کنین.<br />
<strong> توضیح</strong>: اگه این فایل رو می‌خواین جایی قرار بدین که می‌شه از وب بهش دسترسی داشت بهتره اسمش رو htpasswd. بگذارین</p>
<p>به این شکل می‌تونین این فایل رو ایجاد کنین:<br />
<code>htpasswd -c /etc/apache2/passwd.git &lt;user&gt;</code>خوب به جای &lt;user&gt; نام‌کاربری که می‌خوان رو قرار می‌دین مثل behrooz و اون c- هم کار ساختن (create) رو انجام می‌ده پس فقط دفعه‌ی اول نیازه. با اجرای این دستور ازتون  یک کلمه‌ی عبور هم درخواست می‌کنه که این کلمه‌ی عبور به کاربری که ساختین اختصاص پیدا می‌کنه آدرس این فایل هم هر جایی که بخواین می‌تونه باشه و به هر تعداد که نیازه می‌تونبن کاربر بهش اضافه کنین.<strong><br />
توضیح</strong>: می‌تونین با استفاده از یک پایگاه داده کاربر و کلمه‌ی عبور رو تعریف کنین. که اینطوری حتی می‌شه راهی برای مدیریت کاربر‌ها هم ایجاد کرد.</p>
<p>بعد از این مراحل باید Apache رو مجدد راه اندازی کنید. apache2ctl restart اگه همه چیز درست پیش رفته باشه با مراجعه به اون آدرس با مرورگر باید ازتون درخواست نام‌کاربری و گذرواژه کنه.</p>
<p>۴. تا اینجا تنظیمات سرور تموم شده و نوبت می‌رسه به تنظیمات لازم برای کلاینت git. برای اینکه برای هر بار استفاده از مخزن لازم نباشه نام‌کاربری و کلمه‌ی عبور وارد کنید فایل netrc. رو در پوشه‌ی خانگی خود درست کنید و محتوای آن را با این مقادیر پر کنید (یادتون نره که باید دسترسی خواندن این فایل را از دیگران بگیرید):<br />
<code>machine &lt;servername&gt;<br />
login &lt;username&gt;<br />
password &lt;password&gt;</code>از اون جایی که همه چیز مشخصه بیش‌تر توضیح نمی‌دم. سپس باید دستور زیر رو اجرا کنین<br />
<code>curl --netrc --location -v http://&lt;username&gt;@&lt;servername&gt;/my-git-repo.git/HEAD</code>حتما شما یه مخزن git دارید که می‌خواهید آن را با دیگران به اشتراک بگذارید. به مخزن خود رفته و مخزن جدید را به عنوان یک مخزن راه دور به آن اضافه کنید:<br />
<code>git config remote.upload.url http://&lt;username&gt;@&lt;servername&gt;/my-git-repo.git/</code>من اینجا اسمش رو گذاشتم upload اما هر چیز دیگه‌ای می‌تونین استفاده کنین. این اسمی خواهد بود که شما برای استفاده‌ی راحت‌تر ازش استفاده می‌کنید.</p>
<p>۵. کار تمام شد. حالا نوبت آن است که مخزن جدید را پر کنید. پس به مخزن خود رفته و دستور زیر را جرا کنید:<br />
<code>git push upload master</code></p>
<p>من بعد از این کار با یه مشکل مواجه شدم و اونم این بود که نمی‌تونستم از این مخزنی که ساختم نمونه (clone) بگیرم. برای حل این مشکل هم این کار رو روی سرور انجام دادم:<br />
<code>cd my-git-repo.git<br />
git update-server-info<br />
chown -R www-data.www-data .</code></p>
<p>تبریک می‌گم مخزن شما آماده‌س، برای استفاده‌ی کاربر‌های دیگه کافیه براشون نام‌کاربری و کلمه‌ی عبور اضافه کنین و فقط مرحله‌ی ۴ رو انجام بدین.</p>
]]></content:encoded>
			<wfw:commentRss>http://prince.soldier.ir/1388/06/28/%d8%b3%d8%a7%d8%ae%d8%aa-%d9%85%d8%ae%d8%b2%d9%86-git/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>تشخیص زبان در جاوا اسکریپت</title>
		<link>http://prince.soldier.ir/1388/05/13/%d8%aa%d8%b4%d8%ae%db%8c%d8%b5-%d8%b2%d8%a8%d8%a7%d9%86-%d8%af%d8%b1-%d8%ac%d8%a7%d9%88%d8%a7-%d8%a7%d8%b3%da%a9%d8%b1%db%8c%d9%be%d8%aa/</link>
		<comments>http://prince.soldier.ir/1388/05/13/%d8%aa%d8%b4%d8%ae%db%8c%d8%b5-%d8%b2%d8%a8%d8%a7%d9%86-%d8%af%d8%b1-%d8%ac%d8%a7%d9%88%d8%a7-%d8%a7%d8%b3%da%a9%d8%b1%db%8c%d9%be%d8%aa/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 09:58:32 +0000</pubDate>
		<dc:creator>بهروز</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[حرف های خودم]]></category>

		<guid isPermaLink="false">http://prince.soldier.ir/?p=83</guid>
		<description><![CDATA[تقریبا ۵-۶ ماه پیش وقتی به جای twitter از identi.ca استفاده کردم یه چنتایی مشکل داشت که حل کردم از جمله مشکل نیم‌فاصله و مشکل نصفه بودن نوتیس‌ها در API که مربوط می‌شد به درست برقرار نکردن ارتباط utf8 بین php و mysql که باعث می‌شد هر حرف فارسی ۲ حرف حساب بشه و با [...]]]></description>
			<content:encoded><![CDATA[<p>تقریبا ۵-۶ ماه پیش وقتی به جای <a href="http://twitter.com/">twitter</a> از <a href="http://identi.ca/">identi.ca</a> استفاده کردم یه چنتایی مشکل داشت که حل کردم از جمله <a href="http://laconi.ca/trac/ticket/1141">مشکل نیم‌فاصله</a> و مشکل نصفه بودن نوتیس‌ها در API که مربوط می‌شد به درست برقرار نکردن ارتباط utf8 بین php و mysql که باعث می‌شد هر حرف فارسی ۲ حرف حساب بشه و با توجه به محدودیت ۱۴۰ حرفی نوتیس‌ها نصف می‌شدن.</p>
<p>بعد از همه‌ی این ماجرا ها و درست کردن server نوبت رسید به client. ماجرا هم از این قرار بود: وقتی ۴تا متن انگیلیسی با متن فارسی قاطی می‌شد خوندن نوتیس‌ها درد سر می‌شد، خلاصه در اولین اقدام <a href="https://launchpad.net/gwibber">gwibber</a> که خودم ازش استفاده می‌کردم رو دست کاری کردم که وقتی نوتیسی فارسی بود اونو راست به چپ نشون بده. نتیجه‌ی این کار شد یه <a href="http://plugins.jquery.com/project/direction-detector">پلاگین</a> <a href="http://jquery.com/">jQuery</a> که این کار رو انجام می‌ده. نوتیس‌های زبان‌های راست به چپ به صورت خودکار راست به چپ می‌شه و نوتیس‌های زبون‌های چپ به راست دست نخورده می‌مونه. <a href="https://code.launchpad.net/~behrooz/+junk/gwibber">نتیجه‌ی کار</a> رو فرستادم برای <a href="https://launchpad.net/gwibber">gwibber</a> و توی نسخه‌ی بعدی اضافه خواهد شد.</p>
<p>اما همین پلاگین رو به <a href="http://identi.ca/"> identi.ca</a> هم اضافه کردم و اینم <a href="http://img.piqlet.com/laconicari.png">نتیجه‌ش</a> حالا هم <a href="http://laconi.ca/trac/ticket/1346">منتظرم</a> تایید بشه و بره توی <a href="http://identi.ca/">identi.ca</a>. اما همه‌ی این حرف‌ها برای معرفی <a href="http://prince.soldier.ir/direction-detector/">پلاگین</a> بود که تا جایی که می‌تونستم منعطف درست کردم و همین امروز توی مخزن jquery گذاشتم. البته این پلاگین فقط فارسی پشتیبانی نمی‌کنه و بیش‌تر از ۹ تا زبون رو تشخیص می‌ده که فهرست زبان‌ها هم توی توضیحات پلاگین هست.</p>
]]></content:encoded>
			<wfw:commentRss>http://prince.soldier.ir/1388/05/13/%d8%aa%d8%b4%d8%ae%db%8c%d8%b5-%d8%b2%d8%a8%d8%a7%d9%86-%d8%af%d8%b1-%d8%ac%d8%a7%d9%88%d8%a7-%d8%a7%d8%b3%da%a9%d8%b1%db%8c%d9%be%d8%aa/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>بی تاثیر بودن سرعت اینترنت در اطلاع رسانی</title>
		<link>http://prince.soldier.ir/1388/04/17/%d8%a8%db%8c-%d8%aa%d8%a7%d8%ab%db%8c%d8%b1-%d8%a8%d9%88%d8%af%d9%86-%d8%b3%d8%b1%d8%b9%d8%aa-%d8%a7%db%8c%d9%86%d8%aa%d8%b1%d9%86%d8%aa-%d8%af%d8%b1-%d8%a7%d8%b7%d9%84%d8%a7%d8%b9-%d8%b1%d8%b3%d8%a7/</link>
		<comments>http://prince.soldier.ir/1388/04/17/%d8%a8%db%8c-%d8%aa%d8%a7%d8%ab%db%8c%d8%b1-%d8%a8%d9%88%d8%af%d9%86-%d8%b3%d8%b1%d8%b9%d8%aa-%d8%a7%db%8c%d9%86%d8%aa%d8%b1%d9%86%d8%aa-%d8%af%d8%b1-%d8%a7%d8%b7%d9%84%d8%a7%d8%b9-%d8%b1%d8%b3%d8%a7/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 12:19:54 +0000</pubDate>
		<dc:creator>بهروز</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[حرف های خودم]]></category>
		<category><![CDATA[وبلاگستان]]></category>

		<guid isPermaLink="false">http://prince.soldier.ir/?p=81</guid>
		<description><![CDATA[همون طور که می‌دونین دولت سرعت اینترنت رو آورده پایین به دلیل اینکه از ارتباط مردم با هم جلوگیری کنه. این طوری که من شنیدم پهنای باند ایران ۵ گیگه که به لطف دوستان الان شده ۱.۵ گیگ. اما این کار هیچ تاثیری در اطلاع رسانی مردم نداره! چرا؟ چون مردم برای خبر کردن همدیگه [...]]]></description>
			<content:encoded><![CDATA[<p>همون طور که می‌دونین دولت سرعت اینترنت رو آورده پایین به دلیل اینکه از ارتباط مردم با هم جلوگیری کنه. این طوری که من شنیدم پهنای باند ایران ۵ گیگه که به لطف دوستان الان شده ۱.۵ گیگ. اما این کار هیچ تاثیری در اطلاع رسانی مردم نداره! چرا؟ چون مردم برای خبر کردن همدیگه از توییتر، آیدنتیکا و سرویس های مثل این استفاده می‌کنن که محدودیت ۱۴۰ حرفی دارن که اگه  استفاده کننده پیام رو کامل با استفاده از حروف انگلیسی بنویسه و از همه‌ی ۱۴۰ کاراکتر استفاده کنه با ارسال کمتر از ۱۸۰ بایت می‌تونه حرفش رو بزنه.</p>
<p>حالا حالت بد رو در نظر می‌گیریم: فرض می‌کنیم این دفعه طرف همه‌ی حروف رو فارسی می‌نویسه و از اونجایی که حروف فارسی ۲بایت حساب می‌شن خوب تعداد بایت‌هایی که باید ارسال بشه زیاد می‌شن اما ۲برابر نمی‌شن، چون حتما از فاصله استفاده خواهد شد و چون فاصله ۱بایت حساب می‌شه پس حجم بایت‌های ارسالی ۲۸۰ بایت نخواهد شد. اما فرض می‌کنیم بشه ۲۸۰ بایت در این صورت با ارسال کمتر از ۳۲۰ بایت اطلاعات می‌شه یه خبر جدید رو بین دوستان پخش کرد.</p>
<p>البته این کار باعث شده که نشه به راحتی ویدئو ارسال کرد اما اگه فکر کردن که می‌شه جلوی چرخش اطلاعات رو گرفت اشتباه می‌کنن. پس می‌خوام بهشون بگم که خودتون رو اذیت نکنین همون طور که قطع کردن sms هیچ تاثیری نداشت این کار هم تاثیری نداره.</p>
]]></content:encoded>
			<wfw:commentRss>http://prince.soldier.ir/1388/04/17/%d8%a8%db%8c-%d8%aa%d8%a7%d8%ab%db%8c%d8%b1-%d8%a8%d9%88%d8%af%d9%86-%d8%b3%d8%b1%d8%b9%d8%aa-%d8%a7%db%8c%d9%86%d8%aa%d8%b1%d9%86%d8%aa-%d8%af%d8%b1-%d8%a7%d8%b7%d9%84%d8%a7%d8%b9-%d8%b1%d8%b3%d8%a7/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>پیدا کردن محتوای مشترک ۲فایل</title>
		<link>http://prince.soldier.ir/1388/04/13/%d9%be%db%8c%d8%af%d8%a7-%da%a9%d8%b1%d8%af%d9%86-%d9%85%d8%ad%d8%aa%d9%88%d8%a7%db%8c-%d9%85%d8%b4%d8%aa%d8%b1%da%a9-%db%b2%d9%81%d8%a7%db%8c%d9%84/</link>
		<comments>http://prince.soldier.ir/1388/04/13/%d9%be%db%8c%d8%af%d8%a7-%da%a9%d8%b1%d8%af%d9%86-%d9%85%d8%ad%d8%aa%d9%88%d8%a7%db%8c-%d9%85%d8%b4%d8%aa%d8%b1%da%a9-%db%b2%d9%81%d8%a7%db%8c%d9%84/#comments</comments>
		<pubDate>Sat, 04 Jul 2009 08:40:48 +0000</pubDate>
		<dc:creator>بهروز</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[گنو-لینوکس]]></category>

		<guid isPermaLink="false">http://prince.soldier.ir/?p=79</guid>
		<description><![CDATA[احتمالا تا حالا شده که بخواین تفاوت ۲ فایل رو بگیرین پس احتمالا با دستور diff آشنا هستین. اما مخالف این دستور که بشه باهاش قسمت‌های مشترک ۲ فایل رو پیدا کرد هم وجود داره. با استفاده از دستور comm file1 file2 می‌شه قسمت های مشترک ۲تا فایل رو به دست آورد. برای مثال من [...]]]></description>
			<content:encoded><![CDATA[<p>احتمالا تا حالا شده که بخواین تفاوت ۲ فایل رو بگیرین پس احتمالا با دستور diff آشنا هستین. اما مخالف این دستور که بشه باهاش قسمت‌های مشترک ۲ فایل رو پیدا کرد هم وجود داره. با استفاده از دستور comm file1 file2 می‌شه قسمت های مشترک ۲تا فایل رو به دست آورد.</p>
<p>برای مثال من یه سایت چند زبونه برای یه شرکتی آماده کردم به دلیل این که استفاده کننده از سیستم می‌تونه هر زبانی که می‌خواد به سیستم اضافه کنه و ما هم یا زبون راست به چپ داریم یا چپ به راست من ۲تا طرح براش درست کردم (یعنی ۱کی برای راست به چپ ۱کی هم برای چپ به راست). اما برای تغییر دادن و اضافه کردن قسمت‌های مشترک باید ۲بار کار رو انجام می‌دادم چون ۲تا فایل جدا بودن. خوب برای جلو گیری از این حرکت اضافه اومدم قسمت‌های مشترک این ۲تا فایل رو ریختم توی یه فایل دیگه به اسم common.css و بعد این فایل رو توی ۲تا فایل دیگه با استفاده از import اضافه کردم. به همین سادگی الان وقتی بخوام چیزی به هر ۲ طرح اضافه کنم فقط فایل common.css رو تغییر می‌دم.</p>
]]></content:encoded>
			<wfw:commentRss>http://prince.soldier.ir/1388/04/13/%d9%be%db%8c%d8%af%d8%a7-%da%a9%d8%b1%d8%af%d9%86-%d9%85%d8%ad%d8%aa%d9%88%d8%a7%db%8c-%d9%85%d8%b4%d8%aa%d8%b1%da%a9-%db%b2%d9%81%d8%a7%db%8c%d9%84/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>معرفی SilverStripe</title>
		<link>http://prince.soldier.ir/1387/07/02/%d9%85%d8%b9%d8%b1%d9%81%db%8c-silverstripe/</link>
		<comments>http://prince.soldier.ir/1387/07/02/%d9%85%d8%b9%d8%b1%d9%81%db%8c-silverstripe/#comments</comments>
		<pubDate>Tue, 23 Sep 2008 14:01:28 +0000</pubDate>
		<dc:creator>بهروز</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[مای اس کیو ال - mysql]]></category>
		<category><![CDATA[پی اچ پی - php]]></category>

		<guid isPermaLink="false">http://prince.soldier.ir/?p=45</guid>
		<description><![CDATA[سیلوراستریپ یه CMS/FrameWork هستش که امکانات فوق العاده ای برای گسترش داره و به راحتی می تونید هر سیستمی که دوست دارید باهاش بسازید! از وبلاگ گرفته تا سایت خبری، گالری و هر چیز دیگه ای که به فکرتون می رسه! الان سرباز با SilverStripe اجرا می شه. از امکانات خوبی که داره طراحی فرم [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.silverstripe.com/" target="_blank">سیلوراستریپ</a> یه CMS/FrameWork هستش که امکانات فوق العاده ای برای گسترش داره و به راحتی می تونید هر سیستمی که دوست دارید باهاش بسازید! از وبلاگ گرفته تا سایت خبری، گالری و هر چیز دیگه ای که به فکرتون می رسه! الان <a href="http://soldier.ir/">سرباز</a> با SilverStripe اجرا می شه. از امکانات خوبی که داره طراحی فرم هست. شما می تونید هر فرمی با استفاده از SilverStripe بسازید.</p>
<p>مورد دیگه ای که لازم می دونم بگم اینه که SilverStripe متن باز هستش اما فرق دیگه ای که با اکثر OpenSource ها می کنه اینه که با مجوز BSD منتشر می شه. به همین دلیل اگه نیاز دارید پروژه ای رو که با SilverStripe انجام دادید به صورت متن بسته ارائه بدین مجوز BSD این امکان رو به شما می ده. پس می تونید از SilverStripe برای پروژه های کاری استفاده کنید.</p>
<p>من خودم که فعلا با FrameWork دیگه ای کار می کنم، اما این دلیل نمی شه از قدرت SilverStripe بگذریم. با این که به نظر من یه خورده کند هستش اما برای سایت های بزرگ هم می تونه استفاده بشه (<a href="http://www.silverstripe.com/demconvention-3-2-million-visits-in-4-days/" target="_blank">نگاه کنید</a>).</p>
<p>تمام این صحبت ها برای این بود که ماژول <a href="http://prince.soldier.ir/farsiBlog-0.1.tar.gz">وبلاگ فارسی</a> برای SilverStripe معرفی کنم. پس از نصب این بسته امکانات زیر رو خواهید داشت:</p>
<ol>
<li>ایجاد صفحه با آدرس فارسی</li>
<li>وبلاگ با تاریخ های جلالی (هجری شمسی)</li>
<li>قالب راست به چپ</li>
</ol>
<p>شاید این شروعی بشه برای تشکیل گروه SilverStripe فارسی. دوستان اگه تمایلی برای مشارکت دارن یا پیشنهادی در مورد این بسته دارن مطرح کنن.</p>
<p>این بسته با نسخه ی 2.2.2 و 2.2.1 امتحان شده و مشکلی نداشته. توضیحات بیش تر در مورد این بسته فایل ChangeLog درون بسته پیدا می کنید.</p>
]]></content:encoded>
			<wfw:commentRss>http://prince.soldier.ir/1387/07/02/%d9%85%d8%b9%d8%b1%d9%81%db%8c-silverstripe/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>بهبود سرعت صفحات با Apache</title>
		<link>http://prince.soldier.ir/1387/06/29/%d8%a8%d9%87%d8%a8%d9%88%d8%af-%d8%b3%d8%b1%d8%b9%d8%aa-%d8%b5%d9%81%d8%ad%d8%a7%d8%aa-%d8%a8%d8%a7-apache/</link>
		<comments>http://prince.soldier.ir/1387/06/29/%d8%a8%d9%87%d8%a8%d9%88%d8%af-%d8%b3%d8%b1%d8%b9%d8%aa-%d8%b5%d9%81%d8%ad%d8%a7%d8%aa-%d8%a8%d8%a7-apache/#comments</comments>
		<pubDate>Fri, 19 Sep 2008 09:33:17 +0000</pubDate>
		<dc:creator>بهروز</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>

		<guid isPermaLink="false">http://prince.soldier.ir/?p=39</guid>
		<description><![CDATA[همون طور که می دونید سرعت یک صفحه به چیز های زیادی بستگی داره مثل تعداد عکس ها، حجم مطالب و &#8230; . خوب اصولا ما نمی تونیم زیاد صفحه رو دستکاری کنیم و در مورد عکس ها هم خیلی بتونیم کار انجام بدیم اینه که thumbnail ها رو تو صفحه نشون بدیم و عکس [...]]]></description>
			<content:encoded><![CDATA[<p>همون طور که می دونید سرعت یک صفحه به چیز های زیادی بستگی داره مثل تعداد عکس ها، حجم مطالب و &#8230; . خوب اصولا ما نمی تونیم زیاد صفحه رو دستکاری کنیم و در مورد عکس ها هم خیلی بتونیم کار انجام بدیم اینه که thumbnail ها رو تو صفحه نشون بدیم و عکس بزرگ رو با کلیک روی عکس نشون بدیم. اما چیزی که من می خوام بگم در مورد اینه که بارگذاری جاوا اسکریپت ها، سی اس اس ها و حتی thumbnail ها رو هم سریع کنیم. <span id="more-39"></span></p>
<p>دوستانی که از WordPress استفاده می کنن می دونن که توی نسخه ی جدید gzip به صورت داخلی اضافه شده و با استفاده از gzip صفحه ها رو کوچک می کنه و بالا اومدن صفحه رو تسریع می کنه. اما چطوری فایل های دیگه مثل جاوا اسکریپت ها و سی اس اس ها رو gzip کنیم؟ اگه از wordpress استفاده نمی کنیم چی؟ اگه از apache به عنوان وب سرور استفاده می کنید می تونید فایل هایی رو که می خواین با gzip به مرورگر بفرستین. توجه کنید که gzip متن ها رو به صورت خیلی خوبی فشرده می کنه اما کارایی برای فایل های دیگه نداره. پس ما می تونیم JS ها، CSS ها، HTML ها و XML ها رو gzip کنیم. فقط کافیه خطوط زیر رو به فایل htaccess اضافه کنید.</p>
<p><code>AddOutputFilterByType DEFLATE text/html text/plain text/xml text/javascript text/css</code></p>
<p>خوب برای این که بهتر بدونید با اضافه کردن این خط به htaccess چه اتفاقی می افته این رو اضافه می کنم که حجم CSS وبلاگ من 6KB هستش که بعد از gzip شدن به 1.5KB تبدیل می شه. حالا فرض کنید حجم صفحه ی اصلی وبلاگ شما 40KB باشه که این حجم به کمتر از 20KB تبدیل خواهد شد.</p>
<p>برای عکس ها همون طور که گفتم نمی شه از gzip استفاده کرد. اما می شه یه کاری کرد که هر بار که صفحه دیده می شه دوباره عکس ها لود نشن. راه حل این کار استفاده از cache هست که با هدر expire قابل کنترل خواهد بود. برای این کار خطوط زیر رو به فایل htaccess اضافه کنید. البته این جا غیر از عکس ها همین بلا رو سر جاوااسکریپت ها و CSS ها هم می یاریم</p>
<p><code>ExpiresActive on<br />
ExpiresByType image/gif "access plus 1 month"<br />
ExpiresByType image/jpg "access plus 1 month"<br />
ExpiresByType image/png "access plus 1 month"<br />
ExpiresByType text/css "access plus 1 month"<br />
ExpiresByType text/javascript "modification plus 1 month"<br />
ExpiresByType application/x-javascript "modification plus 1 month"</code></p>
<p>در آخر برای این که فایل ها رو مرورگر درست بشناسه یه شناسه برای فایل ها می فرستیم تا اگه تغییری توی فایل ها داده شد دیگه از cache استفاده نشه که به اون ETAG می گن. برای این کار خط زیر رو به htaccess اضافه کنید</p>
<p><code>FileETag MTime Size</code></p>
<p>خوب دیگه چیز دیگه ای نمونده، با وجود این که اگه همه چیز درست انجام شده باشه سرعت بالا اومدن صفحه ها محسوس خواهد بود می تونید بهبود سرعت صفحات خودتون رو با استفاده از <a href="http://developer.yahoo.com/yslow/" target="_blank">YSlow</a> امتحان کنید. من با این کار تونستم نمره ی ۸۶ رو برای <a href="http://prince.soldier.ir/">وبلاگ</a> و نمره ی ۹۳ رو برای <a href="http://soldier.ir/">سرباز</a> بگیرم (از ۱۰۰).</p>
]]></content:encoded>
			<wfw:commentRss>http://prince.soldier.ir/1387/06/29/%d8%a8%d9%87%d8%a8%d9%88%d8%af-%d8%b3%d8%b1%d8%b9%d8%aa-%d8%b5%d9%81%d8%ad%d8%a7%d8%aa-%d8%a8%d8%a7-apache/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>نمایش قدرت zend و php</title>
		<link>http://prince.soldier.ir/1387/06/14/%d9%86%d9%85%d8%a7%db%8c%d8%b4-%d9%82%d8%af%d8%b1%d8%aa-zend-%d9%88-php/</link>
		<comments>http://prince.soldier.ir/1387/06/14/%d9%86%d9%85%d8%a7%db%8c%d8%b4-%d9%82%d8%af%d8%b1%d8%aa-zend-%d9%88-php/#comments</comments>
		<pubDate>Thu, 04 Sep 2008 11:34:50 +0000</pubDate>
		<dc:creator>بهروز</dc:creator>
				<category><![CDATA[پی اچ پی - php]]></category>

		<guid isPermaLink="false">http://prince.soldier.ir/1387/06/14/%d9%86%d9%85%d8%a7%db%8c%d8%b4-%d9%82%d8%af%d8%b1%d8%aa-zend-%d9%88-php/</guid>
		<description><![CDATA[راستش وقتی این فایل تصویری در مورد zendPlatform رو دیدم یه چند ثانیه ای هنگ بودم که عجب چیزی هستش. سرعت بالا اومدن صفحه ها رو به شکل عجیبی بالا می بره! فشار رو از روی سرور کم می کنه و از همه مهم تر با این کار ها باعث می شه تعداد کسایی که [...]]]></description>
			<content:encoded><![CDATA[<p>راستش وقتی <a href="http://files.zend.com/videos/zend_platform3_demo_videos/URL-Based-Caching/" target="_blank">این فایل</a> تصویری در مورد <a href="http://www.zend.com/en/products/platform/" target="_blank">zendPlatform</a> رو دیدم یه چند ثانیه ای هنگ بودم که عجب چیزی هستش. سرعت بالا اومدن صفحه ها رو به شکل عجیبی بالا می بره! فشار رو از روی سرور کم می کنه و از همه مهم تر با این کار ها باعث می شه تعداد کسایی که صفحه ی شما رو می بینن بالا بره. به درد کسایی می خوره که سایت های فوق العاده شلوغی دارن. لازم به گفتن هست که zend کمپانی هستش که php رو گسترش می ده. zendPlatform فقط روی Linux و Solaris نصب می شه. با استفاده از این محصول دیگه ما برنامه نویس ها نیازی نسیت به فکر Cache کردن و بالا بردن سرعت اجرای کار ها باشیم.</p>
<p>این یکی دیگه از دلیل های برتری php نسبت به asp.net هستش و می تونه دلیل خوبی برای شروع پروژه ها با php باشه.</p>
]]></content:encoded>
			<wfw:commentRss>http://prince.soldier.ir/1387/06/14/%d9%86%d9%85%d8%a7%db%8c%d8%b4-%d9%82%d8%af%d8%b1%d8%aa-zend-%d9%88-php/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>سطر تصادفی در mysql</title>
		<link>http://prince.soldier.ir/1387/05/16/%d8%b3%d8%b7%d8%b1-%d8%aa%d8%b5%d8%a7%d8%af%d9%81%db%8c-%d8%af%d8%b1-mysql/</link>
		<comments>http://prince.soldier.ir/1387/05/16/%d8%b3%d8%b7%d8%b1-%d8%aa%d8%b5%d8%a7%d8%af%d9%81%db%8c-%d8%af%d8%b1-mysql/#comments</comments>
		<pubDate>Wed, 06 Aug 2008 15:50:33 +0000</pubDate>
		<dc:creator>بهروز</dc:creator>
				<category><![CDATA[مای اس کیو ال - mysql]]></category>
		<category><![CDATA[پی اچ پی - php]]></category>

		<guid isPermaLink="false">http://prince.soldier.ir/1387/05/16/%d8%b3%d8%b7%d8%b1-%d8%aa%d8%b5%d8%a7%d8%af%d9%81%db%8c-%d8%af%d8%b1-mysql/</guid>
		<description><![CDATA[دارم روی یه اسکریپت کار می کنم که در اون به یه سطر تصادفی از mysql احتیاج دارم. خوب خود mysql راه خوبی برای این کار نداره و نمی شه از تابع های mysql در این زمینه انتظار کار خوبی داشت. اما تنها راهی که وجود داره اینه: select * from TABLE order by rand() [...]]]></description>
			<content:encoded><![CDATA[<p>دارم روی یه اسکریپت کار می کنم که در اون به یه سطر تصادفی از mysql احتیاج دارم. خوب خود mysql راه خوبی برای این کار نداره و نمی شه از تابع های mysql در این زمینه انتظار کار خوبی داشت. اما تنها راهی که وجود داره اینه:</p>
<p><code>select * from TABLE order by rand() limit 1</code></p>
<p>اما بر پابه ی <a href="http://www.greggdev.com/web/articles.php?id=6" target="_blank">این مطلب</a> این query بسیار کند (حدود ۷۱۷ ثانیه برای جدولی با تعداد سطر های ۲،۳۹۴،۹۶۸) و غیر قابل استفاده هستس و رسما استفاده از این هیچ دلیل منطقی نداره. خوب می خوام یه راه بهتری بهتون پیشنهاد کنم، البته با دو query اما بسیار سریع تر. خوب اول چیزی که لازم دارم تعداد کل سطر های موجود در جدول هستش که با این query به دست می یاد:</p>
<p><code>select Count(*) as `C` from TABLE</code></p>
<p>اما حالا می تونیم یه سطر به صورت تصادفی از جدول به دست بیاریم به این صورت که یه عدد تصادفی بین ۰ و تعداد سطر های جدول &#8211; ۱ با استفاده از زبونی که استفاده می کنیم به دست می یاریم و اسم اون رو N قرار می دیم. اما سطر مورد نظر با استفاده از query زیر به دست می یاد:</p>
<p><code>select * from TABLE limit N,1</code></p>
<p>اما برای این که دیگه هیچ سوالی نمونده باشه یک بار کل کار رو با php می نویسم:</p>
<p><code>&lt;?php<br />
$con = mysqli_connect("host", "user", "pass", "db");<br />
$sqlRes_total = mysqli_query($con, "SELECT COUNT(*) as `C` FROM `TABLE`");<br />
$total = mysqli_fetch_object($sqlRes_total)-&gt;C;<br />
$random = rand(0, $total-1);<br />
$sqlRes_row = mysqli_query($con, "SELECT * FROM `TABLE` LIMIT {$random},1");<br />
$row = mysqli_fetch_object($sqlRes_row);<br />
print_r($row);<br />
mysqli_close($con);<br />
?&gt;</code></p>
<p>اما یه چیز دیگه فرض کنید شما یه جدول دارید که توی اون ۱۰۰،۰۰۰ سطر دارید. خوب به نظر من اگه بین ۵۰۰۰ سطر آخر هم یه سطر به صورت تصادفی داشته باشین بسته. پس خیلی راحت می شه query اول رو حذف کرد و به جای N از ۴۹۹۹ استفاده کرد.</p>
]]></content:encoded>
			<wfw:commentRss>http://prince.soldier.ir/1387/05/16/%d8%b3%d8%b7%d8%b1-%d8%aa%d8%b5%d8%a7%d8%af%d9%81%db%8c-%d8%af%d8%b1-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
