<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" 
	xmlns:atom="http://www.w3.org/2005/Atom"
	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/"
	>
  <channel>
    <atom:link href="http://weblog.nabi.ir/rss.xml" rel="self" type="application/rss+xml" />
    <title>وب نوشته های نبی کرمعلی زاده</title>
    <link>http://weblog.nabi.ir/</link>
    <description>وب نوشته های نبی کرمعلی زاده</description>
    <language>fa-IR</language>
        <copyright>Copyright 2012, Nabi.IR</copyright>
    <pubDate>Sun, 01 Feb 2009 18:46:36 GMT</pubDate>
    <generator>http://weblog.nabi.ir/</generator>
      <item>
        <guid>http://weblog.nabi.ir/post-30.html</guid>
        <title>تولد 2 سالگیِ اینجا</title>
        <link>http://weblog.nabi.ir/post-30.html</link>
        <comments>http://weblog.nabi.ir/comment-30.html#comments</comments>
        <pubDate>Sun, 01 Feb 2009 18:46:36 GMT</pubDate>
        <dc:creator>نبی</dc:creator>
        <category>مطالب روزانه</category>
                        <content:encoded><![CDATA[
        <div class="img_left">
<img alt="تولد دو سالگی" src="uploads/images/birthday2.jpg" width="150" height="92" /></div>
<p>خب! امروز اینجا 2 سالگیش تموم شد و وارد سومین سال حیاتش شد. طبق رسوم هر ساله، روز تولد وبلاگم رو نمیشه ننویسم. ولی جز همون حرفهای کلیشه‌ای همیشگی که سالی که گذشت چقدر خوب بود و امیدوارم سال آینده پربارتر بشه و از این حرفا... چیزی دیگه به ذهنم نمیرسه...</p>
<p>ولی جا داره یه تشکر ویژه بکنم از تمام دوستان عزیزی که با کامنتها و ایمیل هاشون نسبت به بنده لطف داشتند و عذر خواهی کنم بابت اینکه زیاد فرصت نمیکنم(=بلد نیستم!) بنویسم. اعتراف میکنم نوشتن به اون سادگی که فکر میکردم نبود، مخصوصاً با اون وسواسی که من در کنار هم قراردادن کلمات دارم!</p>
<p>انشااله با پست‌های جدید برمیگردم بزودی...</p>
<p>راستی کسی یادش هست امروز مناسبت دیگه‌ای هم داره یا نه؟!</p>
<br />
                ]]></content:encoded>
      </item>
      <item>
        <guid>http://weblog.nabi.ir/post-29.html</guid>
        <title>به زور خودم رو در لینوکس هل دادم!</title>
        <link>http://weblog.nabi.ir/post-29.html</link>
        <comments>http://weblog.nabi.ir/comment-29.html#comments</comments>
        <pubDate>Fri, 30 May 2008 02:11:50 GMT</pubDate>
        <dc:creator>نبی</dc:creator>
        <category>لینوکس</category>
                        <content:encoded><![CDATA[
        <p>از خیلی پیش چند تا از توزیع های معروف لینوکس رو گذاشته بودم برای دون لود. هر 
وقت فرصتی میشد یه مقداری رو دونلود میکردم. اما با این سرعت خط دایل آپ مشخص نبود 
چد ماه یا سال دیگه تموم میشن! این بود که چند وقت پیش به یکباره تصمیم گرفتم بعضی توزیع ها رو یکجا بخرم و تست کنم. 
از چند تا از دوستان مشورت گرفتم و نهایتاً از سایت
<a target="_blank" href="http://linuxshop.ir/">فروشگاه لینوکس</a> محصولات زیر رو 
سفارش دادم.</p>
<div class="img_right">
<a target="_blank" href="uploads/images/linuxshop_cd_larg.jpg">
<img alt="سی‌دی‌های لینوکس" src="uploads/images/linuxshop_cd_small.jpg" width="215" height="161" /></a>
<a target="_blank" href="uploads/images/linuxshop_stand_larg.jpg">
<img alt="استند لینوکس" src="uploads/images/linuxshop_stand_samall.jpg" width="215" height="161" /></a>
</div>
<div style="clear:both"></div>
<ol>
	<li>
	<a target="_blank" href="http://linuxshop.ir/product_info.php?products_id=190">Ubuntu 8.04 i386 DVD</a> : اوبونتو که نیاز به توضیح خاصی نداره، جزو محبوب 
	ترین و معروف ترین توزیع هاست. این مجوعه به صورت <span lang="en-us">DVD</span> 
	بوده و شامل نسخه <span lang="en-us">live</span> و <span lang="en-us">
	installer</span> و بسته های تکمیلی است.</li>
	<li>
	<a target="_blank" href="http://linuxshop.ir/product_info.php?products_id=189">Kubuntu 8.04 i386 DVD</a> : کلاً با <span lang="en-us">KDE</span> بیشتر حال 
	میکنم. در نتیجه علاوه بر اوبونتو، لازم بود کوبونتو هم امتحان کنم.</li>
	<li>
	<a target="_blank" href="http://linuxshop.ir/product_info.php?products_id=133">Parsix 1.0 Ramon i386 Live</a> : معروف ترین و بهترین توزیع فارسی از کارهای 
	آقای آلن باغومیان رو باید میدیدم. (بد شانسی همین یکی خراب از آب در اومد، 
	گفتن دوباره پست میکنن) :-(</li>
	<li>
	<a target="_blank" href="http://linuxshop.ir/product_info.php?products_id=44">Gentoo LiveCD i686</a> : این جمله از آقا 
	<a target="_blank" href="http://www.phpclasses.org/browse/author/447221.html">نیما</a> باعث شد که به سبد خرید اضافش کنم: 
	اکثر لینوکس کارها میگم سوادشون رو از <span lang="en-us">gentoo</span> دارن! 
	(ظاهراً واقعاً باسواد میخواد چون من که حتی لایوش نتونستم بالا بیارم!)</li>
	<li>
	<a target="_blank" href="http://linuxshop.ir/product_info.php?products_id=150">Slax 6.0.1</a> : یکی از معروفترین توزیعهای <span lang="en-us">live</span> که 
	مزیتش حجم خیلی کمشه، جزو اولین توزیعهایی بود که خیلی سال پیش یکی از دوستان 
	پیشنهاد کرده بود و با حجم حدود 200 مگ با دایل آپ دون لود کرده بودم و محیط 
	قشنگی داشت. بد ندیدم جدیدترین نسخه اون رو دوباره ببینم.</li>
	<li>
	<a target="_blank" href="http://linuxshop.ir/product_info.php?products_id=94">gOS 1.1 i 386 CD</a> : اگرچه ویژگیش در استفاده از ابزارهای
	<span lang="en-us">web2</span> و برای کاربران خوره اینترنت با سرعت بالاست 
	اما پیشنهاد آقا <a target="_blank" href="https://itline.blogspot.com">حسن</a> باعث شد امتحانش کنم. البته وجود نام Media Temple در 
	سایتش در انتخاب بی تاثیر نبود، چرا که به این شرکت خیلی اعتقاد دارم. این 
	توزیع از میز کار <span lang="en-us">E17</span> استفاده میکنه که محیط قشنگ و متفاوتی 
	داره.</li>
	<li>
	<a target="_blank" href="http://linuxshop.ir/product_info.php?products_id=144">CentOS 5.1 LiveCD i386</a> : داشتن یک سرور با سیستم عامل <span lang="en-us">
	CentOS</span> مجاب میکرد که از نزدیک این توزیع رو لمس کنم و بیشتر خودم رو 
	درگیرش کنم.</li>
	<li>
	<a target="_blank" href="http://linuxshop.ir/product_info.php?products_id=60">Karamad 3.0.3 Live CD</a> : این هم توزیع فارسی بر پایه <span lang="en-us">
	slax </span>کلاً بد ندیدم همه توزیع های فارسی امتحان بشن.</li>
	<li>
	<a target="_blank" href="http://linuxshop.ir/product_info.php?products_id=53">Learnux</a> : از دیگر توزیع های فارسی که ابزارهای فارسی زیادی در این 
	توزیع گنجونده شده باعث شد برای امتحانش کنجکاو تر بشم.</li>
	<li>
	<a target="_blank" href="http://linuxshop.ir/product_info.php?products_id=54">xpresslinux 2007 CD</a> : فقط چون نوشته بود محیطی نزدیک به ویندوز داره و 
	برای کاربرانی که تازه میخوان از ویندوز به لینوکس مهاجرت کنند مناسبه، باعث شد 
	به سبد خرید اضافه کنم.</li>
	<li>
	<a target="_blank" href="http://linuxshop.ir/product_info.php?products_id=56">آموزش لینوکس ۶ سی‌دی</a> : شش سی دی به نظر باید جامع می اومد، از طرفی قیمت 
	پایینش دلیل انتخاب بود. شیوه جالبی برای ارائه دروس داره، همزمان با ویدئو، 
	تصاویر اسلاید ها هم عوض میشن! البته کیفیت صدا و تصویرش اصلاً خوب نیست و 
	بقدری سطح دروس مبتدیه و مثل لاک پشت پیش میره که آدم جونش به لبش میرسه
	<span lang="en-us">;-)</span></li>
	<li>
	<a target="_blank" href="http://linuxshop.ir/product_info.php?products_id=62">استند سی‌دی مقوایی</a> 
	: فقط چون در توضیحاتش نوشته شده بود ثواب داره... این هم به سبد خرید افزودم! 
	ولی همونطور که در تصویر میبینید خیلی شیک و قشنگه.</li>
</ol>
<p>در کل با هزینه پست، 13.400 تومان پیاده شدم. چهار روز بعد از تاریخ سفارش، درست 
چهار ساعت قبل از شروع
<a target="_blank" href="http://weblog.nabi.ir/post-28.html">همایش لینوکس</a> به 
دستم رسید. که جا داره از دوستان <a target="_blank" href="http://linuxshop.ir/">
فروشگاه لینوکس</a> که سریعاً اقدام به ارسال کردند تشکر کنم.</p>
<p>ضمناً این توزیعها فقط برای آزمایش شخصی بوده و دلیل برتری اونها نیست.</p>
<p>دوستان اگر این سی دی ها رو خواستند میتونم براشون کپی کنم. کپی...؟! شاید تنها 
جایی که میشه این واژه رو محکم به زبان آورد!</p>
<br />
                ]]></content:encoded>
      </item>
      <item>
        <guid>http://weblog.nabi.ir/post-28.html</guid>
        <title>همایش لینوکس و سامانه های متن باز در شهر اهواز</title>
        <link>http://weblog.nabi.ir/post-28.html</link>
        <comments>http://weblog.nabi.ir/comment-28.html#comments</comments>
        <pubDate>Mon, 21 Apr 2008 14:39:44 GMT</pubDate>
        <dc:creator>نبی</dc:creator>
        <category>لینوکس</category>
                        <content:encoded><![CDATA[
        <blockquote>
<p>شرکت نگین سامانه با همکاری سازمان فنی و حرفه ای <strong>استان خوزستان</strong> و شرکت 
جاویدکاران سپید در نظر دارد سمینار دو روزه آموزشی با عنوان <strong>« نقش لینوکس و سامانه 
های متن باز در دولت الکترونیک»</strong> را به همراه <strong>اعطاء گواهینامه پایان دوره</strong> در روزهای 
چهارشنیه و پنجشنبه مورخ <strong>بیست و پنجم و بیست و ششم اردیبهشت ماه سال 1387</strong> برگزار 
نماید.</p>
<p>این سمینار با حضور اساتید برجسته کشور در زمینه سیستم عامل لینوکس ، <strong>مهندس 
حاجی غلامعلی مشاور ارشد طرح ملی نرم افزارهای متن باز</strong> و نهادهای دولتی -خصوصی و 
<strong>مهندس سجادی کارشناس فنی سیستمهای یونیکس و مؤلف کتاب (لینوکس ، شبکه ، امنیت)</strong> 
برگزار می گردد. ضمنا ً ، گواهینامه پایان دوره کارگاه آموزشی از طرف <strong>مرکز مطالعات 
و تحقیقات دانشگاه صنعتی شریف</strong> به شرکت کنندگان اعطا می گردد . محورهای آموزشی 
پیرامون <strong>نصب و پیکربندی لینوکس</strong> ، <strong>آشنایی با سرورهای حرفه ای لینوکس</strong> ، 
<strong>آشنایی با 
پیاده سازی سرویسهای متن باز و امنیت اطلاعات در لینوکس</strong> می باشد.</p>
<p>شایان ذکر است جهت ثبت نام و کسب اطلاعات بیشتر درباره حضور نمایندگان مورد نظرتان 
در این سمینار به آدرس : اهواز - خیابان آزادگان ( 24 متری ) جنب بانک سپه مرکزی – 
ساختمان علوی 1 – طبقه 4 – واحد 11 ، مراجعه و یا با شماره تلفن : 2235813 تماس 
حاصل فرمایید.<br />
</p>
<p>منبع: <a target="_blank" href="http://neginsamaneh.com/">نگین سامانه</a></p>
</blockquote>

<p>خبر بسیار خوبی است، حتماً شرکت کنید. قبل از این،
<a target="_blank" href="http://itline.blogspot.com/2007/12/ahvaz-linux-opensource-systems-workshop.html">
دی ماه پارسال هم همچین همایشی بود</a> که من دیر متوجه شدم و به خاطر از دست دادنش
<a target="_blank" href="http://itline.blogspot.com/2007/12/ahvaz-linux-opensource-systems-workshop.html#comment-777822233789373765">
کلی افسوس</a> خوردم. ولی این 
یکی رو از دست نخواهم داد چون 
<a target="_blank" href="http://weburger.net/2007/12/14/ahvaz-linux-workshop.html#comment-250">عقیده دارم</a> قرار گرفتن در این محیط ها هر چند که بار 
علمی نداشته باشه ولی به هر حال مفید و سودمند است.</p>
<p>ضمناً من تماس گرفتم، مدارک مورد نیاز دو قطعه عکس و یک کپی شناسنامه به همراه 
مبلغ 15.000 تومان است. همچنین مهلت ثبت نام تا 30 
فروردین بوده که البته تا 5 اردیبهشت تمدید شده است.</p>
<p>نمیدونم این دانشجو بودن یا نبودن هم چه حکمتی داره چون اولین سوالی که ازم کرد 
این بود که آیا شما دانشجو هستید؟ و وقتی گفتم درسم تموم شده دیگه چیزی نپرسیدند. 
از طرفی در همایش قبلی به خاطر همین قضیه
<a target="_blank" href="http://weburger.net/2007/12/14/ahvaz-linux-workshop.html">به بعضی ها برخورده بود</a> که نمیدونم شاید هم حق داشتند. 
جالبه که الان هم روی سایتشون فقط
<a target="_blank" href="http://neginsamaneh.com/images/form.doc">فرم ثبت نام</a> 
برای اشخاص حقوقی قرار گرفته! واسه من که فرقی نمیکنه، چون قانوناً و مستند
<a target="_blank" href="http://www.hemmat.biz/arash/archives/p_33.html#c501">
میتونم ثابت کنم</a> که هم شخصیت حقیقی هستم، هم حقوقی هستم، هم دانشجو هستم، هم 
فارق التحصیل شدم!</p>
<p>دوستان اگر تشریف آوردند ندا بدهند از نزدیک زیارتشون کنیم.</p>
<br />
                ]]></content:encoded>
      </item>
      <item>
        <guid>http://weblog.nabi.ir/post-27.html</guid>
        <title>نوشتن بر روی تصویر توسط PHP</title>
        <link>http://weblog.nabi.ir/post-27.html</link>
        <comments>http://weblog.nabi.ir/comment-27.html#comments</comments>
        <pubDate>Thu, 17 Apr 2008 15:53:24 GMT</pubDate>
        <dc:creator>نبی</dc:creator>
        <category>پی اچ پی</category>
                        <content:encoded><![CDATA[
        <div class="img_left">
<img alt="Write On Picture With PHP" src="uploads/images/write_on_pic.png" width="119" height="119" /></div>
<p>یکی از دوستان کد ساده ای را به زبان 
<span lang="en-us">PHP</span> خواستند که توسط آن، جمله ای بر روی عکس 
نوشته شود؛ به همین خاطر چون فکر کردم جنبه کاربردی زیادی دارد، یک کلاس کامل برای 
این منظور نوشتم که امیدوارم مورد استفاده قرار بگیرد. از جمله قابلیت های این 
کلاس، تراز کردن موقعیت قرارگیری متن بر روی تصویر، درج حاشیه (<span lang="en-us">Border)</span>، 
تعیین شفافیت <span lang="en-us">(Opacity)</span> نوشته و پشتیبانی از انواع فورمت 
های ورودی و خروجی می باشد.</p>
<p>در ادمه سورس کد این کلاس را بررسی میکنیم.</p>
<br />
<p>متن کلاس بدین صورت است: (نام فایل write_on_pic.class.php)</p>
<pre class="php" style="color: #000066; border: 1px solid #C0D5ED; background-color: #EDF3FA; overflow: auto; width:100%;">&nbsp;
<span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #808080; font-style: italic;">/**
 * This class is a writer on picture
 * 
 * @package    Write on picture
 * @author     Nabi KaramAliZadeh &lt;info [at] nabi [dot] ir&gt;
 * @copyright  2008 (c) Nabi.ir
 * @license    http://www.gnu.org/copyleft/gpl.html
 * @version    1.0.0
 * @link       http://weblog.nabi.ir/post-27.html [documentation in persian]
 * @since      12 April 2008
 */</span>
<span style="color: #000000; font-weight: bold;">class</span> Write_On_Pic
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0000ff;">$inputImage</span> 	= <span style="color: #ff0000;">''</span>;						<span style="color: #808080; font-style: italic;">// input file name</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0000ff;">$inputType</span> 		= <span style="color: #ff0000;">'jpg'</span>;					<span style="color: #808080; font-style: italic;">// input file format: 			JPG, PNG, GIF, BMP</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0000ff;">$outputImage</span> 	= <span style="color: #ff0000;">''</span>;						<span style="color: #808080; font-style: italic;">// output file name</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0000ff;">$outputType</span> 	= <span style="color: #ff0000;">'png'</span>;					<span style="color: #808080; font-style: italic;">// output file format: 			JPG, PNG, GIF, BMP</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0000ff;">$text</span> 			= <span style="color: #ff0000;">''</span>;						<span style="color: #808080; font-style: italic;">// text to write on image</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0000ff;">$fontSize</span> 		= <span style="color: #cc66cc;">5</span>;						<span style="color: #808080; font-style: italic;">// text size: 					1,2,3,4,5</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0000ff;">$textColor</span> 		= <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span>, <span style="color: #cc66cc;">255</span>, <span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span>;		<span style="color: #808080; font-style: italic;">// text color: RGB decimal</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0000ff;">$borderFlag</span> 	= <span style="color: #000000; font-weight: bold;">true</span>;						<span style="color: #808080; font-style: italic;">// flag of border: 				TRUE, FALSE</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0000ff;">$borderColor</span> 	= <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>;			<span style="color: #808080; font-style: italic;">// border color: 				RGB decimal</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0000ff;">$backFlag</span> 		= <span style="color: #000000; font-weight: bold;">false</span>;					<span style="color: #808080; font-style: italic;">// flag of background: 			TRUE, FALSE</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0000ff;">$backColor</span> 		= <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">200</span>, <span style="color: #cc66cc;">200</span>, <span style="color: #cc66cc;">200</span><span style="color: #66cc66;">&#41;</span>;		<span style="color: #808080; font-style: italic;">// background color: 			RGB decimal</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0000ff;">$marginH</span> 		= <span style="color: #cc66cc;">0</span>;						<span style="color: #808080; font-style: italic;">// text horizonatal margin in pixels</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0000ff;">$marginV</span> 		= <span style="color: #cc66cc;">0</span>;						<span style="color: #808080; font-style: italic;">// text vertical margin in pixels</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0000ff;">$alignH</span> 		= <span style="color: #ff0000;">'LEFT'</span>;					<span style="color: #808080; font-style: italic;">// text horizonatal position, 	LEFT | CENTER | RIGHT</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0000ff;">$alignV</span> 		= <span style="color: #ff0000;">'TOP'</span>;					<span style="color: #808080; font-style: italic;">// text vertical position, 		TOP | CENTER | BOTTOM</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0000ff;">$quality</span> 		= <span style="color: #cc66cc;">85</span>;						<span style="color: #808080; font-style: italic;">// quality out file, only for JPG format</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0000ff;">$opacity</span> 		= <span style="color: #cc66cc;">60</span>;						<span style="color: #808080; font-style: italic;">// text opacity: 				0-100</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0000ff;">$show</span> 			= <span style="color: #000000; font-weight: bold;">true</span>;						<span style="color: #808080; font-style: italic;">// show image: 					TRUE, FALSE</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0000ff;">$save</span> 			= <span style="color: #000000; font-weight: bold;">false</span>;					<span style="color: #808080; font-style: italic;">// save out file: 				TRUE, FALSE</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0000ff;">$error</span> 			= <span style="color: #000000; font-weight: bold;">null</span>;						<span style="color: #808080; font-style: italic;">// return error message</span>
	
	<span style="color: #000000; font-weight: bold;">function</span> Action<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">&#123;</span>
		<span style="color: #808080; font-style: italic;">// Set function to create image</span>
		<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>!<span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">inputImage</span><span style="color: #66cc66;">&#41;</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">error</span> = <span style="color: #ff0000;">'Not found input file.'</span>;
			<span style="color: #b1b100;">return</span> <span style="color: #000000; font-weight: bold;">false</span>;
		<span style="color: #66cc66;">&#125;</span>
		
		<span style="color: #b1b100;">switch</span> <span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/strtolower"><span style="color: #000066;">strtolower</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">inputType</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">&quot;png&quot;</span>:
				<span style="color: #0000ff;">$createFunc</span> = <span style="color: #ff0000;">&quot;imagecreatefrompng&quot;</span>;
			<span style="color: #b1b100;">break</span>;
			<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">&quot;gif&quot;</span>;
				<span style="color: #0000ff;">$createFunc</span> = <span style="color: #ff0000;">&quot;imagecreatefromgif&quot;</span>;
			<span style="color: #b1b100;">break</span>;
			<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">&quot;bmp&quot;</span>;
				<span style="color: #0000ff;">$createFunc</span> = <span style="color: #ff0000;">&quot;imagecreatefrombmp&quot;</span>;
			<span style="color: #b1b100;">break</span>;
			<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">&quot;jpeg&quot;</span>:
			<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">&quot;jpg&quot;</span>:
				<span style="color: #0000ff;">$createFunc</span> = <span style="color: #ff0000;">&quot;imagecreatefromjpeg&quot;</span>;
			<span style="color: #b1b100;">break</span>;
		<span style="color: #66cc66;">&#125;</span>
		
		<span style="color: #808080; font-style: italic;">// Create image</span>
		<span style="color: #0000ff;">$im</span> = @<span style="color: #0000ff;">$createFunc</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">inputImage</span><span style="color: #66cc66;">&#41;</span>;
		
		<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>!<span style="color: #0000ff;">$im</span><span style="color: #66cc66;">&#41;</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">error</span> = <span style="color: #ff0000;">'Invalid format file.'</span>;
			<span style="color: #b1b100;">return</span> <span style="color: #000000; font-weight: bold;">false</span>;
		<span style="color: #66cc66;">&#125;</span>
		
		<span style="color: #808080; font-style: italic;">// Create box</span>
		<span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">fontSize</span> = <a href="http://www.php.net/intval"><span style="color: #000066;">intval</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">fontSize</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">fontSize</span> &lt; <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">fontSize</span> = <span style="color: #cc66cc;">1</span>;
		<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">fontSize</span> &gt; <span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#41;</span> <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">fontSize</span> = <span style="color: #cc66cc;">5</span>;
		<span style="color: #0000ff;">$width</span> = <a href="http://www.php.net/strlen"><span style="color: #000066;">strlen</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">text</span><span style="color: #66cc66;">&#41;</span> * <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">fontSize</span> + <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #0000ff;">$height</span> = <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">fontSize</span> + <span style="color: #cc66cc;">12</span>;
		
		<span style="color: #0000ff;">$overlay_img</span> = imagecreatetruecolor<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$width</span><span style="color: #cc66cc;">+2</span>, <span style="color: #0000ff;">$height</span><span style="color: #cc66cc;">+2</span><span style="color: #66cc66;">&#41;</span>;
		
		<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">backFlag</span><span style="color: #66cc66;">&#41;</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #0000ff;">$bgColor</span> = imagecolorallocate<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$overlay_img</span>, <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">backColor</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>, <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">backColor</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span>, <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">backColor</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
		<span style="color: #b1b100;">else</span> 
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #0000ff;">$bgColor</span> = imagecolortransparent<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$overlay_img</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
		
		imagefill<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$overlay_img</span> ,<span style="color: #cc66cc;">0</span> ,<span style="color: #cc66cc;">0</span> ,<span style="color: #0000ff;">$bgColor</span><span style="color: #66cc66;">&#41;</span>;
		
		<span style="color: #808080; font-style: italic;">// Insert border</span>
		<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">borderFlag</span><span style="color: #66cc66;">&#41;</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #0000ff;">$color</span> = imagecolorallocate<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$overlay_img</span>, <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">borderColor</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>, <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">borderColor</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span>, <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">borderColor</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;
			imagestring<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$overlay_img</span>, <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">fontSize</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">text</span>, <span style="color: #0000ff;">$color</span><span style="color: #66cc66;">&#41;</span>;
			imagestring<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$overlay_img</span>, <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">fontSize</span>, <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">2</span>, <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">text</span>, <span style="color: #0000ff;">$color</span><span style="color: #66cc66;">&#41;</span>;
			imagestring<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$overlay_img</span>, <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">fontSize</span>, <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">text</span>, <span style="color: #0000ff;">$color</span><span style="color: #66cc66;">&#41;</span>;
			imagestring<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$overlay_img</span>, <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">fontSize</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">2</span>, <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">text</span>, <span style="color: #0000ff;">$color</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
		
		<span style="color: #808080; font-style: italic;">// Insert text</span>
		<span style="color: #0000ff;">$color</span> = imagecolorallocate<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$overlay_img</span>, <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">textColor</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>, <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">textColor</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span>, <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">textColor</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;
		imagestring<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$overlay_img</span>, <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">fontSize</span>, <span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">1</span>, <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">text</span>, <span style="color: #0000ff;">$color</span><span style="color: #66cc66;">&#41;</span>;
		
		<span style="color: #808080; font-style: italic;">// Get width and height box</span>
		<span style="color: #0000ff;">$overlay_w</span> = ImageSX<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$overlay_img</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #0000ff;">$overlay_h</span> = ImageSY<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$overlay_img</span><span style="color: #66cc66;">&#41;</span>;
		
		<span style="color: #808080; font-style: italic;">// Get width and height image</span>
		<span style="color: #0000ff;">$im_w</span> = ImageSX<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$im</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #0000ff;">$im_h</span> = ImageSY<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$im</span><span style="color: #66cc66;">&#41;</span>;
		
		<span style="color: #808080; font-style: italic;">// Set X text</span>
		<span style="color: #b1b100;">switch</span> <span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/strtoupper"><span style="color: #000066;">strtoupper</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">alignH</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'CENTER'</span>:
				<span style="color: #0000ff;">$x</span> = <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$im_w</span> - <span style="color: #0000ff;">$overlay_w</span><span style="color: #66cc66;">&#41;</span> / <span style="color: #cc66cc;">2</span>;
			<span style="color: #b1b100;">break</span>;
			<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'RIGHT'</span>:
				<span style="color: #0000ff;">$x</span> = <span style="color: #0000ff;">$im_w</span> - <span style="color: #0000ff;">$overlay_w</span> - <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">marginH</span>;
			<span style="color: #b1b100;">break</span>;
			<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'LEFT'</span>:
				<span style="color: #0000ff;">$x</span> = <span style="color: #cc66cc;">0</span> + <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">marginH</span>;
			<span style="color: #b1b100;">break</span>;
		<span style="color: #66cc66;">&#125;</span>
		
		<span style="color: #808080; font-style: italic;">// Set Y text</span>
		<span style="color: #b1b100;">switch</span> <span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/strtoupper"><span style="color: #000066;">strtoupper</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">alignV</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'CENTER'</span>:
				<span style="color: #0000ff;">$y</span> = <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$im_h</span> - <span style="color: #0000ff;">$overlay_h</span><span style="color: #66cc66;">&#41;</span> / <span style="color: #cc66cc;">2</span>;
			<span style="color: #b1b100;">break</span>;
			<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'BOTTOM'</span>:
				<span style="color: #0000ff;">$y</span> = <span style="color: #0000ff;">$im_h</span> - <span style="color: #0000ff;">$overlay_h</span> - <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">marginV</span>;
			<span style="color: #b1b100;">break</span>;
			<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'TOP'</span>:
				<span style="color: #0000ff;">$y</span> = <span style="color: #cc66cc;">0</span> + <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">marginV</span>;
			<span style="color: #b1b100;">break</span>;
		<span style="color: #66cc66;">&#125;</span>
		
		<span style="color: #808080; font-style: italic;">// Merge text box with image</span>
		imagecopymerge<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$im</span>, <span style="color: #0000ff;">$overlay_img</span>, <span style="color: #0000ff;">$x</span>, <span style="color: #0000ff;">$y</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #0000ff;">$overlay_w</span>, <span style="color: #0000ff;">$overlay_h</span>, <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">opacity</span><span style="color: #66cc66;">&#41;</span>;
		
		<span style="color: #808080; font-style: italic;">// Destroy text box</span>
		imagedestroy<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$overlay_img</span><span style="color: #66cc66;">&#41;</span>;
		
		<span style="color: #808080; font-style: italic;">// Save to disk</span>
		<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">save</span><span style="color: #66cc66;">&#41;</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>!<span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">outputImage</span><span style="color: #66cc66;">&#41;</span>
			<span style="color: #66cc66;">&#123;</span>
				<span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">error</span> = <span style="color: #ff0000;">'Not found output file.'</span>;
				<span style="color: #b1b100;">return</span> <span style="color: #000000; font-weight: bold;">false</span>;
			<span style="color: #66cc66;">&#125;</span>
			
			<span style="color: #b1b100;">switch</span> <span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/strtolower"><span style="color: #000066;">strtolower</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">outputType</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
			<span style="color: #66cc66;">&#123;</span>
				<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">&quot;png&quot;</span>:
					imagepng<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$im</span>, <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">outputImage</span><span style="color: #66cc66;">&#41;</span>;
				<span style="color: #b1b100;">break</span>;
				<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">&quot;gif&quot;</span>;
					imagegif<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$im</span>, <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">outputImage</span><span style="color: #66cc66;">&#41;</span>;
				<span style="color: #b1b100;">break</span>;
				<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">&quot;bmp&quot;</span>;
					imagewbmp<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$im</span>, <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">outputImage</span><span style="color: #66cc66;">&#41;</span>;
				<span style="color: #b1b100;">break</span>;
				<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">&quot;jpeg&quot;</span>:
				<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">&quot;jpg&quot;</span>:
					imagejpeg<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$im</span>, <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">outputImage</span>, <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">quality</span><span style="color: #66cc66;">&#41;</span>;
				<span style="color: #b1b100;">break</span>;
			<span style="color: #66cc66;">&#125;</span>
		<span style="color: #66cc66;">&#125;</span>
		
		<span style="color: #808080; font-style: italic;">// Show the image</span>
		<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">show</span><span style="color: #66cc66;">&#41;</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #b1b100;">switch</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">outputType</span><span style="color: #66cc66;">&#41;</span>
			<span style="color: #66cc66;">&#123;</span>
				<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">&quot;png&quot;</span>:
					<a href="http://www.php.net/header"><span style="color: #000066;">header</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Content-type: image/png&quot;</span><span style="color: #66cc66;">&#41;</span>;
					imagepng<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$im</span><span style="color: #66cc66;">&#41;</span>;
				<span style="color: #b1b100;">break</span>;
				<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">&quot;gif&quot;</span>;
					<a href="http://www.php.net/header"><span style="color: #000066;">header</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Content-type: image/gif&quot;</span><span style="color: #66cc66;">&#41;</span>;
					imagegif<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$im</span><span style="color: #66cc66;">&#41;</span>;
				<span style="color: #b1b100;">break</span>;
				<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">&quot;bmp&quot;</span>;
					<a href="http://www.php.net/header"><span style="color: #000066;">header</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Content-type: image/bmp&quot;</span><span style="color: #66cc66;">&#41;</span>;
					imagewbmp<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$im</span><span style="color: #66cc66;">&#41;</span>;
				<span style="color: #b1b100;">break</span>;
				<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">&quot;jpeg&quot;</span>:
				<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">&quot;jpg&quot;</span>:
					<a href="http://www.php.net/header"><span style="color: #000066;">header</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Content-type: image/jpeg&quot;</span><span style="color: #66cc66;">&#41;</span>;
					imagejpeg<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$im</span>, <span style="color: #000000; font-weight: bold;">null</span>, <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">quality</span><span style="color: #66cc66;">&#41;</span>;
				<span style="color: #b1b100;">break</span>;
			<span style="color: #66cc66;">&#125;</span>
		<span style="color: #66cc66;">&#125;</span>
		
		<span style="color: #808080; font-style: italic;">// Destroy image</span>
		imagedestroy<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$im</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #b1b100;">return</span> <span style="color: #000000; font-weight: bold;">true</span>;
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;</pre>
<p>و این هم یک مثال: (نام فایل example.php)</p>
<pre class="php" style="color: #000066; border: 1px solid #C0D5ED; background-color: #EDF3FA; overflow: auto; width:100%;">&nbsp;
<span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #808080; font-style: italic;">/**
 * This example is for writer on picture class
 * 
 * @name       Example write on picture
 * @author     Nabi KaramAliZadeh &lt;info [at] nabi [dot] ir&gt;
 * @copyright  2008 (c) Nabi.ir
 * @license    http://www.gnu.org/copyleft/gpl.html
 * @version    1.0.0
 * @link       http://weblog.nabi.ir/post-27.html [documentation in persian]
 * @since      12 April 2008
 */</span>
&nbsp;
<span style="color: #b1b100;">require_once</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'write_on_pic.class.php'</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #0000ff;">$objWriter</span> = <span style="color: #000000; font-weight: bold;">new</span> Write_On_Pic<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #0000ff;">$objWriter</span>-&gt;<span style="color: #006600;">inputImage</span> 	= <span style="color: #ff0000;">'aquarius.jpeg'</span>;
<span style="color: #0000ff;">$objWriter</span>-&gt;<span style="color: #006600;">inputType</span> 	= <span style="color: #ff0000;">'jpg'</span>;
<span style="color: #0000ff;">$objWriter</span>-&gt;<span style="color: #006600;">outputImage</span> = <span style="color: #ff0000;">'aquarius2.png'</span>;
<span style="color: #0000ff;">$objWriter</span>-&gt;<span style="color: #006600;">outputType</span> 	= <span style="color: #ff0000;">'png'</span>;
<span style="color: #0000ff;">$objWriter</span>-&gt;<span style="color: #006600;">text</span> 		= <span style="color: #ff0000;">'http://weblog.nabi.ir/'</span>;
<span style="color: #0000ff;">$objWriter</span>-&gt;<span style="color: #006600;">fontSize</span> 	= <span style="color: #cc66cc;">5</span>;
<span style="color: #0000ff;">$objWriter</span>-&gt;<span style="color: #006600;">textColor</span> 	= <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span>, <span style="color: #cc66cc;">255</span>, <span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0000ff;">$objWriter</span>-&gt;<span style="color: #006600;">borderFlag</span>	= <span style="color: #000000; font-weight: bold;">true</span>;
<span style="color: #0000ff;">$objWriter</span>-&gt;<span style="color: #006600;">borderColor</span> = <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0000ff;">$objWriter</span>-&gt;<span style="color: #006600;">backFlag</span>	= <span style="color: #000000; font-weight: bold;">true</span>;
<span style="color: #0000ff;">$objWriter</span>-&gt;<span style="color: #006600;">backColor</span>	= <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0000ff;">$objWriter</span>-&gt;<span style="color: #006600;">marginH</span> 	= <span style="color: #cc66cc;">0</span>;
<span style="color: #0000ff;">$objWriter</span>-&gt;<span style="color: #006600;">marginV</span> 	= <span style="color: #cc66cc;">170</span>;
<span style="color: #0000ff;">$objWriter</span>-&gt;<span style="color: #006600;">alignH</span> 		= <span style="color: #ff0000;">'CENTER'</span>;	
<span style="color: #0000ff;">$objWriter</span>-&gt;<span style="color: #006600;">alignV</span> 		= <span style="color: #ff0000;">'BOTTOM'</span>;
<span style="color: #0000ff;">$objWriter</span>-&gt;<span style="color: #006600;">quality</span> 	= <span style="color: #cc66cc;">90</span>;
<span style="color: #0000ff;">$objWriter</span>-&gt;<span style="color: #006600;">opacity</span> 	= <span style="color: #cc66cc;">50</span>;
<span style="color: #0000ff;">$objWriter</span>-&gt;<span style="color: #006600;">show</span> 		= <span style="color: #000000; font-weight: bold;">true</span>;
<span style="color: #0000ff;">$objWriter</span>-&gt;<span style="color: #006600;">save</span> 		= <span style="color: #000000; font-weight: bold;">true</span>;
&nbsp;
<span style="color: #0000ff;">$return</span>  = <span style="color: #0000ff;">$objWriter</span>-&gt;<span style="color: #006600;">Action</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>!<span style="color: #0000ff;">$return</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
	<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #0000ff;">$objWriter</span>-&gt;<span style="color: #006600;">error</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;</pre>
<p>فکر میکنم همه چیز واضح باشد با این حال توضیح مختصری عرض میکنم.</p>
<p>پس از الحاق فایل کلاس به صفحه، ابتدا یک شیء از کلاس Write_On_Pic با نام objWriter$ ایجاد میکنیم.</p>
<p>پارامترهایی که باید به این شیء نسبت دهیم بدین صورت می باشند:</p>
<ul>
	<li><strong>inputImage</strong> : نام و مسیر تصویر ورودی</li>
	<li><strong>inputType</strong> : فورمت تصویر ورودی، که میتواند BMP, GIF, PNG, JPG باشد</li>
	<li><strong>outputImage</strong> : نام و مسیر تصویر خروجی</li>
	<li><strong>outputType</strong> : فورمت تصویر خروجی، که میتواند BMP, GIF, PNG, JPG باشد</li>
	<li><strong>text</strong> : متنی که قصد دارید بر روی تصویر درج شود</li>
	<li><strong>fontSize</strong> : اندازه فونت، عددی بین 1 تا 5</li>
	<li><strong>textColor</strong> : رنگ فونت، یک آرایه که به ترتیب حاوی مقادیر سه رنگ اصلی قرمز، سبز، آبی 
	در مبنای 10می باشد. عددی بین 1 تا 255</li>
	<li><strong>borderFlag</strong> : مشخص کننده وجود یا عدم وجود حاشیه برای نوشته می باشد. TRUE یا FALSE</li>
	<li><strong>borderColor</strong> : رنگ حاشیه، یک آرایه که به ترتیب حاوی مقادیر سه رنگ اصلی 
	قرمز، سبز، آبی در مبنای 10می باشد. عددی بین 1 تا 255</li>
	<li><strong>backFlag</strong> : مشخص کننده وجود یا عدم وجود زمینه برای نوشته می باشد. TRUE یا 
	FALSE</li>
	<li><strong>backColor</strong> : رنگ زمینه، یک آرایه که به ترتیب حاوی مقادیر سه رنگ اصلی 
	قرمز، سبز، آبی در مبنای 10می باشد. عددی بین 1 تا 255</li>
	<li><strong>marginH</strong> : حاشیه از لبه در محور افقی</li>
	<li><strong>marginV</strong> : حاشیه از لبه در محور عمودی</li>
	<li><strong>alignH</strong> : تراز کردن نوشته در راستای افق، یکی از مقادیر LEFT، CENTER، RIGHT</li>
	<li><strong>alignV</strong> : تراز کردن نوشته در راستای عمود، یکی از مقادیر TOP، CENTER، BOTTOM</li>
	<li><strong>quality</strong> : کیفیت تصویر خروجی که عددی بین 1 تا 100 است</li>
	<li><strong>opacity</strong> : شفافیت نوشته روی تصویر خروجی، که عددی بین 1 تا 100 است</li>
	<li><strong>show</strong> : با TRUE قرار دادن این پارامتر، تصویر در 
	خروجی به نمایش در خواهد آمد</li>
	<li><strong>save</strong> : با TRUE قرار دادن این پارامتر، تصویر 
	تولیدی در قالب فایل جدیدی ذخیره می شود</li>
</ul>

<p>پارامترهایی که مقدار دهی نشوند از مقدار پیشفرض آنها استفاده خواهد شد. نهایتاً 
پس از انتساب تمامی مقادیر، توسط متد <strong>()Action</strong> عملیات آغاز میگردد و در انتها نیز 
کنترل خطا صورت میگیرد.</p>
<p>چند نکته:</p>
<ul>
	<li><span lang="en-us">gd2</span> باید نصب و فعال باشد.</li>
	<li>برای نوشته ها یک حاشیه در نظر گرفته شده است، این حاشیه به نمایان بودن 
	متن بر روی زمینه با هر رنگی کمک میکند. مثلاً نوشته سفید با حاشیه مشکلی، 
	باعث میشود که نوشته هم بر روی زمینه سفید و هم روی زمینه مشکلی به خوبی مشاهده 
	شود.</li>
	<li>مصرف زیاد این کد در گالری های تصاویر است که بایستی کپی رایت سایت به صورت 
	خودکار بر روی تصویر درج گردد. بهتر است از شفافیت مناسب برای نوشته بر روی 
	تصویر استفاده کنید.</li>
</ul>

<p>نمونه هایی از خروجی توسط این کلاس:</p>
<div class="img_center">
<img alt="sample write on picture" src="uploads/images/sample_write_on_pic.png" width="254" height="225" /></div>
<p>[<img alt="download" src="templates/nabi/images/download.gif" width="16" height="16" style="vertical-align: top;" /><a target="_blank" href="uploads/samples/Write_On_Pic.zip">دریافت سورس و مثالهای 
این کلاس</a>]</p>
<p>[ا<a target="_blank" href="http://www.phpclasses.org/browse/package/4521.html">ین کلاس در سایت phpclasses</a><span lang="en-us">
</span>(امتیاز فراموش نشه <span lang="en-us">;-) </span>]</p>

<p>مشکلی بود در نظرات همین پست بفرمائید در خدمت هستم.</p>                ]]></content:encoded>
      </item>
      <item>
        <guid>http://weblog.nabi.ir/post-26.html</guid>
        <title>نبی تحت تعقیب شرکت یاهو قرار گرفت !!!</title>
        <link>http://weblog.nabi.ir/post-26.html</link>
        <comments>http://weblog.nabi.ir/comment-26.html#comments</comments>
        <pubDate>Mon, 14 Apr 2008 01:48:21 GMT</pubDate>
        <dc:creator>نبی</dc:creator>
        <category>مطالب روزانه</category>
                        <content:encoded><![CDATA[
        <div class="img_left">
<img alt="Nabi Wanted" src="uploads/images/nabi_wanted.png" width="252" height="120" /></div>
<p>بالاخره بعد از حدود دو هفته کار مداوم روی یه سیستم آپلود، تقریباً دو سه روز 
پیش سایت رو روی دومین <span lang="en-us">UploadYahoo.com</span> بالا آوردم، 
سیستم کامل و دقیقی شده بود. بالای سایت از لوگوی یاهو استفاده کرده بودم و اسم 
سایت هم که تابلو بود! ولی پیش خودم گفتم کی به کیه و کی دستش به ما میرسه.</p>
<p>تا اینکه...</p>
<br />
<p>یه سند تو آل برای لیست 500 نفره یاهوم کردم ولی بعد از چند دقیقه کنتر سایت از 
یک یا دو بیشتر افزایش پیدا نکرد. رفتم سراغ <span lang="en-us">IRC</span> ، اونجا 
کاربرهای آنلاین و البته حرفه ای بیشتر هستند. چند تا از اتاق های تخصصی رو باز 
کردم و همزمان لینک سایت رو فرستادم (چه کار خطرناکی!) ، بماند که آی پیم درجا بلوک 
شد و دسترسیم قطع شد ولی جالب بود که همون لحظه پیغام های زیادی اومد که بابا<span lang="en-us"> 
great </span>و از این حرفا...! آمار کاربر آنلاین هم همون لحظه رفت بالای 100 تا! البته همه به این نکته اشاره کردند که استفاده از 
نشان یک کمپانی غیرمجازه و نقض قانون کردید و trademark violation ...</p>
<p>خب ما هم به سیم بی خیالی زده بودیم...، پنج دقیقه نگذشته بود که تلفن زنگ خورد، 
خیلی برام عجیب نبود که شماره نیافتاده بود، گوشی رو برداشتم.</p>
<p>- سلام، بفرمائید.<br />
<span lang="en-us">- upload yahoo, ... jahanweb ..., hi , ...?!!!</span></p>
<p>داشت انگلیسی صحبت میکرد. از تعجب داشتم شاخ در می آوردم! بسمه اله این اجنبی دیگه کیه !!! </p>
<p>اینقدر تند حرف زد که فقط همین سه تا کلمه رو فهمیدم! منم که هیچی نفهمیده بودم 
گفتم <span lang="en-us">"yes !!"</span> ...</p>
<p>خیلی سعی کردم حالیش کنم یه فرصت دیگه صحبت کنیم تا یه نفر رو پیدا کنم... ولی 
نتونستم .. آخرش بعد دو دقیقه کلنجار رفتن گفت <span lang="en-us">can you speak 
english</span> و بعد هم گفت <span lang="en-us">sorry</span> و تق قطع کرد!!!</p>
<p>بعد از این تماس مرموز سیل افکار عجیب قریب هجوم آورد. من که مشخصات دومین رو 
جعلی وارد کرده بودم (البته بجز Registration Service Provider<span lang="en-us"> </span>
که نمیشد کاریش کرد<span lang="en-us">) </span>، نکنه از 
طرف شرکت یاهو بوده! نه بابا حتماً یه نفر بوده از سر دلسوزی میخواسته بگه این 
کارت اشتباست... ولی در هر صورت این احتمال وجود داشت که اگر به گوش یاهو برسه اون 
ها یه شکایت کنند و دیتاسنتر سرور رو بیاره پایین و اونوقت دستم به هیچ جا بند 
نباشه، بنابراین ریسک نکردم و در یک حرکت سریع سایت رو آوردم پایین! و پشت دستم رو 
داغ کردم دیگه نقض کپی رایت نکنم! شما هم از این ماجرا درس بگیرید و از این کارا 
نکنید... قابل توجه دوستانی که با خیالی آسوده نرم افزارهای <span lang="en-us">
null</span> شده روی سرور نصب میکنند...</p>
<p>بعد از این ماجرا دیگه از این دومین نا امد شدم و به منظور پیدا کردم یک دومین 
مناسب، به دوستان متوسل شدم و یه سند تو آل روی یاهو زدم که یکی از دوستان از همه 
جا بیخبر این دومین رو پیشنهاد داد: <span lang="en-us">UploadGoogle.com</span> ، 
پیش خودم گفتم: "دوباره...؟! نه!!!"</p>
<p>خب احساس خوبی نیست که آدم فکر کنه کر و لاله و انگاری که اصلاً وجود خارجی 
نداره! البته خوندن و نوشتنم به زور چند تا دیکشنری اونقدر ها هم بوق نیستم ولی 
مکالمه یه حرف دیگست! حالا سیل تبلیغات آموزش زبان نصرت در کامنت ها راه نیافته... 
عوض اینکار، چند تا دومین خوب برای این آپلود سنتر پیشنهاد بدید که توش کلمه
<span lang="en-us">Upload</span> وجود داشته باشه و از کلمات و نشانه های ایرانی 
درش بکار نرفته باشه و <span lang="en-us">com.</span> اون آزاد باشه... 
منتظرم <span lang="en-us">;-)</span></p>                ]]></content:encoded>
      </item>
      <item>
        <guid>http://weblog.nabi.ir/post-25.html</guid>
        <title>دو کنفرانس طراحی وب سایت در نیمه اول سال جاری</title>
        <link>http://weblog.nabi.ir/post-25.html</link>
        <comments>http://weblog.nabi.ir/comment-25.html#comments</comments>
        <pubDate>Mon, 07 Apr 2008 04:53:28 GMT</pubDate>
        <dc:creator>نبی</dc:creator>
        <category>طراحی وب</category>
                        <content:encoded><![CDATA[
        <div class="img_left">
<img alt="کنفرانس طراحی وب سایت" src="uploads/images/aneventapart.png" width="156" height="253" /></div>
<p>به تاریخ  6-5 اردیبهشت 1387 در
<a target="_blank" href="http://fa.wikipedia.org/wiki/نیواورلئان">نیواورلئان</a> 
و به تاریخ  4-3 تیر 1387در 
<a target="_blank" href="http://fa.wikipedia.org/wiki/بوستون">بوستون</a> <span lang="fa">دو کنفرانس مهم در ارتباط 
با طراحی وب سایت در پیشه. ما که دستمون نمیرسه، خوش به حال اونایی که دستشون 
میرسه.</span></p>
<p>نیمه دوم سال جاری میلادی نیز دو کنفرانس دیگه در پیش هست.</p>
<p><span lang="fa">بد نیست بدونین میزبانان اصلی آقایان
<a target="_blank" href="http://fa.wikipedia.org/wiki/جفری_زلدمن">Jeffrey 
Zeldman</a> و <a target="_blank" href="http://en.wikipedia.org/wiki/Eric_Meyer">
Eric Meyer</a> 
هستند که از پیشکسوتان در این وادی می باشند.</span></p>
<p>البته اشخاص عادی هم میتونند شرکت کنند ولی فکر میکنم بیشتر برای شرکتها باشه 
چون مبلغ ثبت نامش خیلی بالاست. (895$)</p>
<p><span lang="fa">اطلاعات بیشتر را در سایت <a target="_blank" href="http://www.aneventapart.com/">aneventapart.com</a> 
ببینید.</span></p>
<br />
        <p><b>+ پی نوشت: </b>[<a target="_blank" href="http://www.flickr.com/groups/wasp-april-fools/pool/">بی 
ربط و <span lang="fa">بدون 
شرح</span></a>]</p>        ]]></content:encoded>
      </item>
      <item>
        <guid>http://weblog.nabi.ir/post-24.html</guid>
        <title>نوروز 1387 مبارک</title>
        <link>http://weblog.nabi.ir/post-24.html</link>
        <comments>http://weblog.nabi.ir/comment-24.html#comments</comments>
        <pubDate>Thu, 20 Mar 2008 11:35:23 GMT</pubDate>
        <dc:creator>نبی</dc:creator>
        <category>مطالب روزانه</category>
                        <content:encoded><![CDATA[
        <p>ساعت ۹ و ۴۸ دقیقه و ۱۹ ثانیه صبح امروز وارد سال 1387 شدیم.</p>
<p>عیدتون مبارک، امیدوارم سال خوبی داشته باشید.</p>
<p><a target="_blank" href="http://www.google.com">گوگل</a> هم  امروز با 
تغییر
<a target="_blank" href="http://www.google.com/logos/persian_newyear08.gif">
لوگوی</a> صفحه اول سایتش، سال نو رو تبریک گفته.</p>
<p>طبق <a target="_blank" href="http://weblog.nabi.ir/post-5.html">فرمولی که پارسال در موردش نوشته بودم</a> 
امسال باید سالِ "موش" باشه <span lang="en-us">;-)</span></p>
<p>جالبه که امسال مصادف شده با عدد شماره پلاک خونمون !!</p>
<p>اینم سفره هفت سین نصفه و نیمه ما که در موقع تهیه عکس چند تا سینش کم بود و در 
حال تکمیل بود:</p>
<div class="img_center"><img alt="نوروز 1387" src="uploads/images/noruz1387.jpg" /></div>
<p>اون آقای تخم مرغ هم از شاهکارهای اینجانب است! خوشگله؟! <span lang="en-us">;-)</span>
</p>
<p>صحبت خاصی نیست، جز آرزوی سلامتی.</p>
<br />
                ]]></content:encoded>
      </item>
      <item>
        <guid>http://weblog.nabi.ir/post-23.html</guid>
        <title>عجب یاهویی...!</title>
        <link>http://weblog.nabi.ir/post-23.html</link>
        <comments>http://weblog.nabi.ir/comment-23.html#comments</comments>
        <pubDate>Thu, 13 Mar 2008 20:42:44 GMT</pubDate>
        <dc:creator>نبی</dc:creator>
        <category>مطالب روزانه</category>
                        <content:encoded><![CDATA[
        <p>اولین بار سال 2001 حدود 7 سال پیش بود که اولین آیدی یاهوم رو 
ساختم، وقتی <span lang="en-us">NabiKAZ</span> رو امتحان کردم متوجه شدم که قبلاً 
ثبت شده. برای همین یه 2001 جلوی اون اضافه کردم و <span lang="en-us">NabiKAZ2001</span> 
رو ثبت کردم، بماند که بعد ها به <span lang="en-us">NabiKAZ2001_se</span> تبدیل 
شد...</p>
<p>چند روز پیش همینجوری گفتم یه بار دیگه امتحان کنم. امتحان کردم 
دیدم <span lang="en-us">NabiKAZ</span> آزاد شده !!! خیلی تعجب کردم و البته مهلت 
ندادم و بلافاصله ثبتش کردم. بلافاصله وقتی یاهو میسنجر رو برای اولین بار باهاش 
بالا آوردم از تعجب شاخ درآوردم! چون از 4 نفر پی ام داشتم و یک نفر هم منو
<span lang="en-us">add</span> کرده بود ! همه ایرانی بودن و شاید زمان ارسال پی ام 
یادشون رفته بوده 2001<span lang="en-us"> </span>رو جلوی آیدی بزارند و یاهو هم با 
وجود حذف آیدی، پیغام ها رو حفظ کرده! نکته جالب تر قضیه اینجاست که تمام پیغام ها 
مربوط به سال 2006 بود، یعنی دو سال پیش بودند !!!</p>
<p>شما هم آیدی های قدیمیتون رو امتحان کنید شاید آزاد شده باشند.</p>
<br />
                ]]></content:encoded>
      </item>
      <item>
        <guid>http://weblog.nabi.ir/post-22.html</guid>
        <title>خدایا شکرت به خاطر سلامتی که بهمون دادی!</title>
        <link>http://weblog.nabi.ir/post-22.html</link>
        <comments>http://weblog.nabi.ir/comment-22.html#comments</comments>
        <pubDate>Thu, 21 Feb 2008 17:32:44 GMT</pubDate>
        <dc:creator>نبی</dc:creator>
        <category>مطالب روزانه</category>
                        <content:encoded><![CDATA[
        <p>دنبال یه سایتی در مورد 
<a target="_blank" href="http://fa.wikipedia.org/wiki/لینوکس">لینوکس</a> میگشتم که میدونستم اسمش
<a target="_blank" href="http://hezardastan.org">هزاردستان</a> بود. اما آدرسش 
رو یادم نبود. برای همین همینجوری زدم
<a target="_blank" href="http://hezardastan.com"> 
hezardastan.com</a> ، یه سایت کاملاً بی ربط باز شد ولی متن صفحه اول رو که خوندم کنجکاو شدم و روی 
<a target="_blank" href="http://www.hezardastan.com/fa_default.asp?rp=M_PictureCategory.asp&amp;p1n=PictureCategoryID&amp;p1v=11&amp;R%3D9129690%26L%3Dfa%26FT%3DFalse">گالری تصاویر</a>
[<a target="_blank" href="http://www.hezardastan.com/fa_default.asp?rp=M_PictureCategory.asp&amp;p1n=PictureCategoryID&amp;p1v=11&amp;R%3D9129690%26L%3Dfa%26FT%3DFalse">1</a>] 
[<a target="_blank" href="http://www.hezardastan.com/fa_default.asp?rp=M_PictureCategory.asp&amp;p1n=PictureCategoryID&amp;p1v=12&amp;R%3D5498400%26L%3Dfa%26FT%3DFalse">2</a>] کلیک 
کردم، با دیدن تصاویر مو به تنم سیخ شد!<br />
<br />
خدایا شکرت به خاطر سلامتی که بهمون دادی!
</p>
<br />
                ]]></content:encoded>
      </item>
      <item>
        <guid>http://weblog.nabi.ir/post-21.html</guid>
        <title>جشن تولد است اینجا...</title>
        <link>http://weblog.nabi.ir/post-21.html</link>
        <comments>http://weblog.nabi.ir/comment-21.html#comments</comments>
        <pubDate>Sat, 02 Feb 2008 05:05:26 GMT</pubDate>
        <dc:creator>نبی</dc:creator>
        <category>مطالب روزانه</category>
                        <content:encoded><![CDATA[
        <div class="img_left">
<img alt="تولد یکسالگی" src="uploads/images/birthday1.gif" width="100" height="101" /></div>
<p>یکی از دلیلی که امروز دارم مینویسم اینه که امروز درست یک سال از تاریخ تأسیس 
وبلاگم میگذره.</p>
<p>برنامه های زیادی برای امروز داشتم و تصمیم داشتم تحولات اساسی در وبلاگ اعمال 
کنم، ولی راستش رو بخواهید حسش نبود! از طرفی هم کمی سرم شلوغ بود. این بود که این 
تحول رو به روزهای آینده نزدیک موکول کردم.</p>
<p>در طول این یک سال 20 پست ارسال کردم که میدونم خیلی کمه ولی برای منه تازه کار 
که خیلی هم میونه ای با نوشتن ندارم 
شاید قابل قبول باشه و امیدوارم که در سال جدید بیشتر بنویسم.</p>
<p>از دوستانی هم که در طول این مدت بنده رو تحمل کردند و به من سر زدند تشکر 
میکنم. حداقل مزیت اینجا این بود که دوستان جدیدی پیدا کردم.</p>
<p>صحبت خاصی نیست جز تشکر.</p>
<p>راستی امروز یه مناسبت دیگه هم داشت. اگر گفتید ؟!</p>
<p>تولدم مبارک ;)</p>
<br />
                ]]></content:encoded>
      </item>
      <item>
        <guid>http://weblog.nabi.ir/post-20.html</guid>
        <title>برف! براستی چیست این موجود بی شاخ و دم؟!</title>
        <link>http://weblog.nabi.ir/post-20.html</link>
        <comments>http://weblog.nabi.ir/comment-20.html#comments</comments>
        <pubDate>Fri, 11 Jan 2008 04:39:49 GMT</pubDate>
        <dc:creator>نبی</dc:creator>
        <category>مطالب روزانه</category>
                        <content:encoded><![CDATA[
        <div class="img_left">
<img alt="مرگ برفی" src="uploads/images/snow_hand.jpg" width="120" height="176" /></div>
<p>برف... برف... برف...!<br />
براستی چیست این موجود بی شاخ و دم؟!<br />
حالا اون هایی که روح لطیفی (شاید هم جنس لطیف!) دارند شاید شکایت کنند که دلت میاد...؟! به این قشنگی، خوشگلی... و غیره و ذالک...!</p>
<p>ما که همیشه از درد بیکاری دنبال سوژه های جور واجور میگردیم، اینبار فصل سرما 
رو هدف قرار دادیم، هر روز سیل آف ها روی میسنجر، پیامک ها (:-D) ی زمستونی و 
سرمایی و گازی و برفی و غیره و ذالک سرازیر میشه. امروز یکی از دوستان آف زده بود 
که امروز درخوندمون نیم متر برف اومده بود! تلوزیون هم که ماشااله جز صحبت از درست 
مصرف کنیم و قطعی گاز و راه بندون جاده ها به دلیل بارش برف و غیره و ذالک خبر دیگه 
ای نداره. امتحانات دانشگاه های سراسری هم که به خاطر همون موجود فوق الذکر سر جمع 
فکر کنم یه یک هفته ای کنسل بود. دوستان هم که در وبلاگهاشون همش در مورد همون 
موجود صحبت میکنند... چی بود...؟! آهان! برف! خلاصه فعلاً زندگی همه برفی شده!</p>
<br />
<p>اگر فرض رو بر این بزاریم که الان بزرگ شدیم، یادم میاد اون موقع ها که کوچک 
بودیم یه کارتون بود که اسمش رو یادم رفته (شما بگید) توش یه خانم بود که به عمرش 
آفتاب رو ندیده بود و همیشه در یک خونه تاریک با چند تا شمع زندگی میکرد، آخر دست 
هم با همونا آتیش گرفت و از پنجره افتاد پایین و احتمالاً دم مرگ خورشید رو رؤیت 
کرد...و غیره و ذالک!</p>
<p>حالا شده داستان ما. الان میگم ...<br />
راستش برای همین این مطلب رو شروع کردم و سنت شکنی کردم و برخلاف تصمیمم عمل کردم 
چون میخواستم اینجا فقط مطالب و مقالات آموزشی خودم رو بنویسم و از روزمره گویی 
پرهیز کنم چون فکر هم نمیکنم برای کسی جالب باشه که امروز چی خوردم یا اینکه فردا 
عروسی پسرخالمه و غیره و ذالک...!</p>
<p>تمام این مقدمه چینی ها رو کردم که این سوال رو ازتون بپرسم که این جونوری که 
همه به اسم برف ازش نام میبرند چه شکلیه، چه مدلیه، چه مزه ایه، میشه پوشیدش؟! و 
غیره و ذالک! آخه راستش رو بخواید من تا بحال به عمرم، برف رو از نزدیک ندیدم و لمس 
نکردم! بچه جنوبیم دیگه ;-)</p>
<p>فقط یادمه اون موقع ها که کوچیک بودیم (با فرض پیشتر در بالا) یه کادو تولد 
گرفته بودم از این چیزا ... چطوری بگم... یه محفظه شیشه ای بود که توش یه عروسک بود 
و یه دون دون های سفید رنگ که توی آب معلق بودن و وقتی تکونش میدادیم مثل برف حرکت 
میکردند و زمان زیادی طول میکشید تا همه به حالت سکون در بیان. من همیشه دلم 
میخواست بازش کنم و اون دونه های سفید رو لمس کنم چون تو عالم کودکی خیال میکردم 
اونها برف واقعی هستند !!!</p>
<p>اتفاقاً الان که داشتم دنبال یه تصویر مناسب برای این نوشته میگشتم، به یه 
کاریکاتور که بی ارتباط با همین اسباب بازی نیست برخوردم. خودم که کلی خندیدم.</p>
<div class="img_center">
<img alt="کاریکاتور برفی" src="uploads/images/snow_cartoon.jpg" width="400" height="335" /><br />با عصبانیت: اوه 
ارباب، دوباره نه !</div>
<p>حالا نمیدونم این مثلاً رکورد شکنی تا کی ادامه داره و آخرش مثل اون خانم توی 
اون کارتون، آتیش میگیرم و از پنجره میافتم، اما اینبار شاید توی یه تله برف و ...!</p>
<p>راستی... غیره و ذالک!</p>                ]]></content:encoded>
      </item>
      <item>
        <guid>http://weblog.nabi.ir/post-19.html</guid>
        <title>تو! ای طراح وب سایت، تا دیر نشده توبه کن!</title>
        <link>http://weblog.nabi.ir/post-19.html</link>
        <comments>http://weblog.nabi.ir/comment-19.html#comments</comments>
        <pubDate>Sat, 05 Jan 2008 04:13:15 GMT</pubDate>
        <dc:creator>نبی</dc:creator>
        <category>طراحی وب</category>
                        <content:encoded><![CDATA[
        <div class="img_left">
<img alt="Web Standards" src="uploads/images/web_standards.gif" width="100" height="100" /></div>
<p>اندک اندک درحال رسیدن به آن نقطه ای هستیم که بفهمند آن دسته از طراحانی که از روی 
نادانی میگفتند مخاطب ما تنها استفاده کنندگان IE6 هستند و آینده نگر نبودند که 
پیشبینی کنند روزی خواهد رسید که مرورگرها از جمله IE به سمت استانداردها حرکت 
خواهند کرد و نسخه های 6 و 7 و 8 ... را به سمت استانداردها پشت سرخواهند گذاشت 
زیرا که در جنگ مرورگرها چاره ای جز این ندارند ولی آن مردمان و سایتهایشان به بن 
بست بزرگی به نام IE6 برخوردخواهند کرد که نتوان از آن گذشت! و اینجاست که پشیمانی 
دیگر سودی ندارد و رو به سوی آسمان زمزمه خواهند کرد که افسوس! توبه! براستی که 
توبه آنها، همراه با طراحی مجدد سایتهایشان بر پایه استانداردهای روز خواهد بود که 
همانا همراه با عذاب برای آنها خواهد بود چرا که زمان از دست رفته دگر باز نخواهد 
گشت و اکنون باید وقت صرف کنند تا آگاه شوند استانداردها چیستند و FireFox چرا بهتر 
بود و در یک کلام Update نبودند.<br />
آمین !</p>
<p>مطلب بالا بعد از خوندن مقاله &quot;<a target="_blank" href="http://weblog.corelist.net/archives/1386/10/13/ie8-and-web-standards/">IE8 
و استانداردهای وب</a>&quot; و &quot;<a target="_blank" href="http://mezzoblue.com/archives/2007/12/19/8_2_x2/">8 
+ 2 = <span style="font-family:Times New Roman; font-size:13px;">&#9786;</span></a>&quot; تراوش کرد!</p>
<br />
                ]]></content:encoded>
      </item>
      <item>
        <guid>http://weblog.nabi.ir/post-18.html</guid>
        <title>همه با هم برای پورتال ملی متاسفیم !</title>
        <link>http://weblog.nabi.ir/post-18.html</link>
        <comments>http://weblog.nabi.ir/comment-18.html#comments</comments>
        <pubDate>Sun, 02 Dec 2007 05:07:25 GMT</pubDate>
        <dc:creator>نبی</dc:creator>
        <category>اینترنت</category>
                        <content:encoded><![CDATA[
        <div class="img_left">
	<img alt="iran.ir" src="uploads/images/iran_ir.gif" width="130" height="104" /></div>
<blockquote>آقای مهندس ریاضی، آیا می‌دانید این شعارهای ملی شما چه لطمه‌ای به بدنه نحیف 
آی‌تی بخش خصوصی کشور می‌زند، نیم نگاهی به وضعیت آی‌تی کشور بیاندازید، خواهید دید 
که از زمان حضور شما چه سیر نزولی را پیدا کرده است، در تمام دول مترقی دولت بستر 
اقتصادی را شخم می‌زند، و نهال سودآوری را در آن می‌کارد و آن را در اختیار بخش 
خصوصی قرار می‌دهد و در کشور ما بخش خصوصی زمین بایر را آب می‌دهد، شخمش می‌زند، 
می‌کارد، می‌پروراند، در مقابل آب و باد و طوفان و تگرگ به بار می‌نشاند و میوه 
نحیف آن که شکوفه داد، و آنگاه شما وارد شده و با یک شعار ملی طوفانی به پا 
می‌کنید، که نه شکوفه‌ای می‌ماند نه درختی و نه بخش خصوصی. <br />
	منبع: <span lang="en-us">
	<a target="_blank" href="http://www.aftab.ir/articles/computer_internet_infortmation_technology/internet_network/c14c1196094171_portal_p1.php">
	aftab.ir</a></span></blockquote>

<p>وقتی مقاله "<a target="_blank" href="http://www.aftab.ir/articles/computer_internet_infortmation_technology/internet_network/c14c1186790473_weblog_p1.php">پورتال 
ملی یا ۱۱۸ اینترنتی؟</a>" رو مطالعه کردم خیلی تاسف خوردم و کم مونده بود گریه 
کنم! حرف قابل ذکری نیست چون همه حرفها در مقاله زده شده.</p>
<p>واقعاً نمیدونم چی بگم...</p>
<p>فقط متاسفم !</p>
<p>بعد از اون سری به پورتال (اگر بشه اسمش رو پورتال گذاشت!) ملی کشور عزیزمون به نشانی
<span lang="en-us"><a href="http://www.iran.ir">www.iran.ir</a></span> زدم، 
سردرد عجیبی گرفتم که هنوز هم در کما بسر میبرم !</p>
<br />
<p>قالب سایت که از سایت <a target="_blank" href="http://www.yahoo.com">یاهو</a> 
کپی زده شده ....</p>
<p>از همه مهمتر اینکه  همونطور که حتماً خودتون هم متوجه شدید این سایت فارسی 
شدۀ <span lang="en-us">cms</span> معروف <span lang="en-us">
<a target="_blank" href="http://www.mamboserver.com/">mambo</a></span> است ! 
یعنی حتی به خودشون زحمت کدنویسی هم ندادند. هیچ بعید هم نیست با وجود این همه نسخه 
های فارسی شده این نرم افزار که افرادی به صورت رایگان آن را فارسی کردند و در 
اختیار عموم قرار داده اند استفاده نکرده باشند! یعنی حتی زحمت فارسی سازی هم به 
خود نداده اند.</p>
<p>در بخش "<a target="_blank" href="http://www.iran.ir/cms/index.php?option=com_content&task=view&id=41&Itemid=47">درباره ما</a>" سایت این نوشته به چشم میخورد:</p>
<blockquote>پورتال فوق با استفاده از نیروی توانمند متخصصین ایرانی و با رعایت استانداردها 
و نرم افزارهای آزاد، طراحی و برنامه سازی شده است. کلیه برنامه های استفاده شده در 
این پورتال از سیستم عامل تا بانکهای اطلاعاتی و غیره از محصولات و برنامه های متن 
باز مانند لینوکس استفاده شده است که مشکل حق لیسانس نرم افزاری برای آن وجود 
ندارد. در طراحی هسته سامانه، رابط کاربری و ظاهر گرافیکی از آخرین استانداردهای 
نرم افزاری مانند UML، XML، WEB Service، AJAX و غیره استفاده شده که خود نشاندهنده 
به روز بودن دانش فناوری اطلاعات در داخل ایران است. بانک اطلاعاتی سامانه که بانک 
متن باز MySQL است، با توجه به نحوه طراحی بانک اطلاعاتی، کاملا مقیاس پذیر برای 
گسترده شدن روزافزون پورتال است.</blockquote>
<p>واقعاً نمیدونم در مورد مردم چی فکر میکنند، در مملکتی که  هیچ قانون کپی 
رایتی وجود نداره، چطور ایجاد یک پورتال صد در صد  <span lang="en-us">open 
source</span> و رایگان افتخاره؟!</p>
<p>در مقاله دیگه به این مطلب برخوردم:</p>
<blockquote>پروژه «پورتال ملی» توسط صدا و سیما با بودجه ۴۵ میلیارد تومان (بخوانید ۴۵ 
میلیون دلار) برای فاز اول آن، اجرا خواهد شد.<br />
	<a target="_blank" href="http://www.aftab.ir/articles/computer_internet_infortmation_technology/internet_network/c14c1158066951_portal_p1.php">
	لینک منبع</a></blockquote>
<p>4 میلیارد و 500 میلیون تومن اون هم برای فاز اولیه یک وب سایت رایگان !!!!!!! 
(واقعاً چند تا علامت تعجب دیگه باید اضافه کنم؟!) مگر هزینه اجاره سرور و تامین 
چند نیروی انسانی برای همچین پروژه ای  چقدر هزینه دارد ؟!</p>
<p>باور بفرمائید راه اندازی همچین سایتی با اون نرم افزارهای آماده کار 15 دقیقه 
بلکه هم کمتر است! اطلاعات هم که شامل چند صفحه و چند لینک است ظرف یکی دو ساعت 
وارد میشود.  گیریم چند ساعت هم قالب سایت زمان ببرد. خیلی دست بالا که بگیریم 
بیشتر از یک روز راه اندازی این سایت زمان نمیبرد و اگر از سرور اختصاصی فاکتور 
بگیریم و از یک هاست شر استفاده کنیم در اون صورت شاید با چند هزار تومن ناقابل هم 
کل سایت حاضر شود.</p>
<p>دور دنیا در هشتاد روز که یادتونه، عملاً ادعاش رو ثابت کرد. شیطونه میگه یه 
سایت کپی این سایت راه بندازم و بگم حالا به من 4 میلیارد تومن بدید !!!</p>
<p>از صمیم قلب برای آینده <span lang="en-us">IT</span> کشور پرافتخار و عزیزمون 
آرزوی موفقیت و پیشرفت دارم. انشاالله.</p>                ]]></content:encoded>
      </item>
      <item>
        <guid>http://weblog.nabi.ir/post-17.html</guid>
        <title>فورمت PNG پادشاه فورمت های تصویری در خلق صفحات وب</title>
        <link>http://weblog.nabi.ir/post-17.html</link>
        <comments>http://weblog.nabi.ir/comment-17.html#comments</comments>
        <pubDate>Tue, 27 Nov 2007 13:18:49 GMT</pubDate>
        <dc:creator>نبی</dc:creator>
        <category>طراحی وب</category>
                        <content:encoded><![CDATA[
        <div class="img_left">
	<img alt="PNG the king !" src="uploads/images/png_the_king.gif" width="120" height="120" /></div>
<p>خیلی ها رو دیده بودم که به عنوان یک طراح وب سایت، جایگاه استفاده از فورمت های 
مختلف تصویری را در صفحات وب طراحی شده نمیدونستند و نمیدونستند که کجا از چه 
فورمتی باید استفاده کرد. همیشه میخواستم در این باره بنویسم اما فرصت نمیشد، تا 
اینکه در [<a target="_blank" href="http://forum.majidonline.com/showthread.php?t=77131">اینجا</a>] 
به مقاله ای با عنوان "مخفی کردن پس زمینه Transparent عکس های PNG در IE" از دوست 
خوبم آقا <a target="_blank" href="http://echessdesign.com/">حسین</a> برخورد کردم، و برخی دوستان موضع گرفتند که فورمت png اونقدر ارزش 
نداره که بخاطر اون دست به هک های IE بزنیم. این موضوع باعث شد که کمی در این باره 
صحبت کنیم...</p>
<br />
<p>به نظر من قابلیت بارز این فورمت یعنی PNG که مخصوصاً طراحان وب رو به سمت خودش جذب کرده 
، شیوه ذخیره رنگها به صورت palette است. (دقیقاً مشابه فایلهای GIF با این تفاوت 
که طیف بیشتری از رنگها رو دربر میگیره) <br />
فایلهای PNG بصورت PNG-8bit و PNG-24bit می باشن. فایلهای PNG-8bit از پالت 256 
رنگی استفاده میکنند و قابلیت transparent رو ندارند(درست مثل فایلهای GIF) بر خلاف 
فورمت PNG-24bit که پالت اون تا 16.7 میلیون رنگ رو در خودش جای میده و همین دامنه 
وسیع باعث ساپورت اون از تصاویر transparent شده.<br />
توجه داشته باشید که در اینجا transparent به مفهوم شفاف بودن بخشی از تصویر به 
طوری که زمینه و پشت تصویر نمایان باشد بکار رفته است(حالت شیشه ای) و به معنی حذف 
بخشی از تصویر و نمایان شدن زمینه بکار نرفته.<br />
در واقع به عقیده من و بر حسب تجربه، هیچ تفاوتی به لحاظ کیفی بین GIF و PNG-8bit 
وجود نداره یا حداقل من ندیدم.<br />
اما وقتی صحبت از PNG-24bit میشه، اونوقت قضیه خیلی متفاوت میشه. فکر نمیکنم 
جایگزین دیگه ای برای این فورمت روی وب وجود داشته باشه.<br />
PNG-24bit به دلیل خواصی که عرض شد طبیعتاً حجم بالاتری به نسبت PNG-8bit داره و 
PNG-8bit هم به نسبت GIF در اغلب موارد حجم کمتری داره.<br />
در واقع اگر خواصی مثل transparent مطرح باشه بهترین (شایدم تنها) گزینه برای وب، 
علارغم اینکه ممکنه حجم فایل خیلی بالا بره، استفاده از PNG-24bit است.</p>
<p>اجازه بدید کمی بریم به حاشیه...<br />
وقتی از یه دید دیگه به قضیه نگاه کنیم. برای وب غالباً دو فورمت JPG و GIF متداول 
تر هستند و شاید همین دو فورمت نیاز طراحان وب رو برآورد کنند. اما میدونید که این 
دو فورمت کاملاً متفاوت هستند، JPG بیشتر برای مناظر ، طبیعت و تصاویری که با 
جابجایی پیکسل ها تغییر محسوسی که با چشم قابل رویت باشه در تصویر ظاهر نمیشه 
استفاده میشه. بر 
خلاف تصاویر GIF که به دلیل ماهیت پالتی بودن و طیف رنگی محدود و ثابت و مشخص، به 
هیچ عنوان پیکسل ها جابجا نمیشه ! و تنها ممکنه رنگ پیکسل ها عوض بشه. در نتیجه در 
مورد تصاویری که در اونها از متون، مخصوصاً متون ریز استفاده شده (درست مثل screen 
shot هایی که از صفحات ویندوز میگیریم) شاید بهترین فورمت GIF باشه. چون خوانایی نوشته 
ها با جابجایی پیکسل ها از بین نمیره و درواقع جهت کاهش کیفیت با کوچکتر کردن پالت 
رنگ به نوعی رنگ پیکسل های تصویر تعویض میشود؛ و بدترین فورمت برای اینگونه تصاویر، 
فورمت JPG باشه. چون برای 
کاهش حجم ناچاراً نظم برخی پیکسل ها باید بهم بخوره که موجب ناخوانایی نوشته های 
درون تصویر میشه! وقتی صحبت از تصاویر بر روی یک وب سایت میشه، از اونجایی که 
خوانایی متون(شامل خطوط و ... هم میشه) از دید یک کاربر عادی بسیار مهم است و نباید چشم 
اذیت شود، همچنین بایستی تصویر بالاترین کیفیت ممکن را داشته باشد پس اینجاست که فورمت JPG 
ذاتاً نمیتونه فورمت خوبی باشه، در این جور مواقع 
ناچاراً از GIF استفاده میشه.</p>
<div class="img_center" style="background-color:#B4C4DB; width:463px; margin:auto;">
<img alt="نمونه تصویر JPG" src="uploads/images/testpic_jpg_min_quality.jpg" width="453" height="231" /><br />
<span style="font-size:10px;">با کاهش کیفیت تصویر JPG نوشته های درون تصویر به سختی خوانده میشوند.</span></div>
<br />
<div class="img_center" style="background-color:#B4C4DB; width:463px; margin:auto;">
<img alt="نمونه تصویر GIF" src="uploads/images/testpic_gif_8colors.gif" width="453" height="231" /><br />
<span style="font-size:10px;">حتی با به حدقل رساندن کیفیت تصویر GIF نوشته های درون تصویر کاملاً خوانا می باشند.</span></div>
<br />
<div class="img_center" style="background-color:#B4C4DB; width:474px; margin:auto;">
<img alt="مقایسه فورمت های تصویری رایج وب" src="uploads/images/testpic_all_format.png" width="464" height="273" /><br />
<span style="font-size:10px;">مقایسه فورمت های تصویری رایج وب</span></div>

<p>پاراگراف اخیر در مورد فورمت JPG و GIF بود، اما چه ربطی به بحث ما و PNG داشت؟! 
همه اینها رو گفتم که به این نقطه برسم که لزوم استفاده از فورمت GIF در جاهای خاص 
ثابت بشه (که در پاراگراف اخیر ثابت شد) اما گفتیم که فورمت GIF تنها قابلیت 
استفاده از 256 رنگ را دارد. پس اگر تصویر ما شامل رنگهای بیشتری بود تکلیف چیست؟! 
اینجاست که ویرایشگرهای تصویر با معادل سازی رنگها، سعی میکنند رنگهایی که به هم 
نزدیک هستند را در قالب یک رنگ در پالت ذخیره کنند. که طبعاً اینکار باعث میشود که 
توازن رنگ برهم بخورد و تصویر رنگ واقعی خود را از دست بدهد. (درست به همین سبب بود 
که عرض کردم برای کاهش کیفیت، رنگ پیکسل ها عوض میشود ولی پیکسلها جابجا نمیشوند.) 
خب راه حل چیست ؟! تصویر رنگ واقعی خود را از دست داده است، پس میشه به این نتیجه 
رسید که 256 رنگ برای هر تصویر کافی نیست و باید از فورمت دیگری که مشابه فورمت GIF 
بر مبنای palette باشد و پیکسل ها جابجا نشود استفاده و از همه مهمتر palette بیشتر 
از 256 رنگ در اختیار ما قرار دهد استفاده کنیم. اینجاست که فورمت PNG وارد گود 
میشود که علاوه بر اینکه تمام خواص ذکر شده را دارد و همچنین همونطور که عرض شد 
پالتی تا 16.7 میلیون رنگ را در اختیار ما میگذارد، بلکه امکان transparent هم در 
اختیار ما قرار میدهد و درست اینجاست که شاید با من هم عقیده میشوید که احساس 
میکنیم فورمت PNG پادشاه فورمت های تصویری برای خلق صفحات وب است !!!</p>
<p>این نکته مهم را در نظر داشته باشید که خاصیت transparent تصاویر با فورمت 
PNG-24bit یا همان شیشه ای بودن آن متاسفانه در Internet Explorer 6 پشتیبانی 
نمیشود! 
البته هک هایی برای این منظور وجود دارد که در [<a target="_blank" href="http://forum.majidonline.com/showthread.php?t=77131">این 
مقاله</a>] و [<a target="_blank" href="http://homepage.ntlworld.com/bobosola">این 
مقاله</a>] میتوانید مطالعه کنید.</p>
<p>کلیه مطالب بالا برداشت ها و تجربیات شخصی 
<a target="_blank" href="http://weblog.nabi.ir">اینجانب</a> بود و از هیچ منبعی اقتباس 
نشده است. انشالله که اشکالی در مطالب وجود نداشته باشد. در غیر این صورت در کامنت 
های <a target="_blank" href="http://weblog.nabi.ir/post-17.html">همینجا</a> بفرمائید تا تصحیح گردد.</p>                ]]></content:encoded>
      </item>
      <item>
        <guid>http://weblog.nabi.ir/post-16.html</guid>
        <title>10 ضرر جانبی استفاده از لینوکس به جای ویندوز</title>
        <link>http://weblog.nabi.ir/post-16.html</link>
        <comments>http://weblog.nabi.ir/comment-16.html#comments</comments>
        <pubDate>Tue, 27 Nov 2007 02:40:32 GMT</pubDate>
        <dc:creator>نبی</dc:creator>
        <category>لینوکس</category>
                        <content:encoded><![CDATA[
        <div class="img_left">
<img alt="سیستم کنترل نسخه" title="سیستم کنترل نسخه" src="uploads/images/linux_bomb.gif" width="120" height="120" /></div>
<p>تحقیقاتی که بوسیله یک موسسه تحقیقاتی در "سیلیکون ولی" انجام شده، تغییرات 
رفتاری روی کسانی که از لینوکس استفاده می کنند را نشان داده. با توجه به آنها این 
10 ضرر جانبی استفاده از لینوکس است:</p>
<p>10- شما در مورد کشتن برنامه ها صحبت می کنید به جای اجبار برای ترک کردن استفاده 
از آنها.</p>
<p>9- به خودتون یاد آوری میکنید که لازم نیست هر 5 دقیقه یکبار کارتون راsave کنید</p>
<p>8- به جای حرف C از K استفاده می کنید (فکر کنم به خاطر اکثر برنامه ها که با K 
شروع میشه باشه ؟)</p>
<p>7- وقتی با مادر بزرگتون صحبت می کنید سعی می کنید که دستور غذاهاش را به صورت 
اپن سورس به دست بیاورید</p>
<p>6- وقتی شما در مورد ساعات کار مفیدتون لاف می زنید مردم خیلی عجیب بهتون نگاه 
میکنند!</p>
<p>5- باعث می شوید که از در آمد آینده بیل گیتس 0.0000001 % کم شود</p>
<p>4- تنها ویروسی که شما را اذیت می کنه ، ویروس سرما خوردگیه</p>
<p> 3- صفحه آبی را ، که همیشه مرگ کامپیوتر را در ویندوز نشون میده، فقط در کابوس 
هاتون می بینید</p>
<p>2- شما واقعا یک سری کار جدی انجام می دین</p>
<p>1- و آخرین دلیل اینکه مشکل ملاقات کردن افراد از جنس مخالف ناپدید خواهد شد ! </p>
<br />
<div style="direction:ltr; text-align:left;">
<p>Top Ten Side Effects of Switching to Linux</p>
<p>Studies done by a prestigious think tank in Silicon Valley 
have identified the most common behavioral changes in people who have switched 
to Linux. They were nice enough to share their information with us. According to 
them, these are the ten most frequent side effects of Linux use with us.</p>
<p>Number 10: You start talking about 'killing' programs instead of forcing them to 
quit</p>
<p>Number 9: You keep reminding yourself that you don't have to save your work 
every five minutes</p>
<p>Number 8: You start substituting C for K in your normal writing (Did you know 
that Pizarro konquered the Inkas?)</p>
<p>Number 7: You talk your grandmother into open-sourcing her secret cookie recipe</p>
<p>Number 6: People give you strange looks when you brag about your uptime</p>
<p>Number 5: You cause Bill Gates' fortune to decrease by 0.0000001 percent</p>
<p>Number 4: The only viruses that bother you are the ones that cause the flu</p>
<p>Number 3: The blue screen of death only appears to you in nightmares</p>
<p>Number 2: You actually get some serious work done</p>
<p>And the number 1 side effect of switching to Linux is:<br />
Your problems meeting members of the opposite s.e.x disappear</p>
</div>
<p>منبع: <span lang="en-us">
<a target="_blank" href="http://www.linux.org/news/LO2007/teneffects.html">
linux.org</a></span><br />
نویسنده: Michael J. Jordan<br />
مترجم:
<a target="_blank" href="http://forum.p30world.com/member.php?u=81320">archi-girl</a></p>        <p><b>+ پی نوشت: </b>از ترجمه های بهتر استقبال میکنیم !</p>        ]]></content:encoded>
      </item>
      <item>
        <guid>http://weblog.nabi.ir/post-15.html</guid>
        <title>توان سرورهای انتخابات آینده کشور کافی نیست</title>
        <link>http://weblog.nabi.ir/post-15.html</link>
        <comments>http://weblog.nabi.ir/comment-15.html#comments</comments>
        <pubDate>Fri, 16 Nov 2007 21:43:49 GMT</pubDate>
        <dc:creator>نبی</dc:creator>
        <category>اینترنت</category>
                        <content:encoded><![CDATA[
        <p>در <a target="_blank" href="http://weblog.nabi.ir/post-14.html">مطلب قبل</a> در مورد 
<a target="_blank" href="http://www.sanjesh8.com">مسابقه تست توان سرورهای انتخابات</a> آینده نوشتم. مسابقه انجام 
شد.<br />
درست تا قبل از تاریخ آغاز مسابقه همه چیز خوب بود. اما درست از لحظه ای که از ساعت 
10 گذشت، سرعت سایت به طرز فوق العاده عجیبی افت پیدا کرد و در زمان ثبت مرتباً 
پیغام server error ظاهر میشد و من با تلاش بسیار زیاد در عرض دو ساعت به سختی فقط 
چند شماره تونستم ثبت کنم. به وضوح مشخص شد که توان سرورها، مناسب برای این طرح 
نبود. حدوداً یک ساعت پس از مسابقه همه چیز عادی شد و براحتی در کمتر از یک ساعت 
چند هزار شماره ثبت کردم! اشتباه نشه! بیکار نبودم! با یه برنامه php و یک حلقه for 
و تست خودکار شماره ها اینکارو کردم (از این روش در پروژه گذشته "<a target="_blank" href="http://www.konkoorkill.nabi.ir">استخراج نتایج 
کنکور</a>" نیز استفاده کرده بودم که قبلاً به تفصیل 
<a target="_blank" href="http://weblog.nabi.ir/post-11.html">شرح و آموزش</a> 
داده شد) در حقیقت من فقط شاهد بودم و دست به چیزی نزدم! گرچه برای نوشتن برنامه دو 
ساعتی وقت صرف شد. <span lang="en-us">[</span><a target="_blank" href="uploads/static/majles8.htm">نمونه 
کد خروجی</a><span lang="en-us">] </span>ضمناً تصویر به اصطلاح امنیتی هم مثل آب خوردن دور زدم!!! قابل توجه net. کارهایی که 
با wizard های studio .net و فقط با drag and drop مثلاً سایت طراحی میکنند !!!<br />
<br />
توجه داشته باشید هدف از این نوشته و همچنین 
<a target="_blank" href="http://weblog.nabi.ir/post-14.html">نوشته پیشین</a> صرفاً بحث فنی بوده است.<br />
</p>
<br />
        <p><b>+ پی نوشت: </b>دومین majles8.com هم هک شد !!!<br />
پیشبینی هم میشد !<br />
البته سرور هک نشده، تنها از ضعف سایت سرویس دهنده دومین که خارجی بوده استفاده شده و dns ها روی سرور دیگه ست شده.<br />
مسئولین هم تنها کاری که تونستن بکنند این بوده که دومین رو فیلتر کنند!</p>        ]]></content:encoded>
      </item>
      <item>
        <guid>http://weblog.nabi.ir/post-14.html</guid>
        <title>ما جوونا میخوایم یه حرکت بزرگ کنیم... طراحي وب سايت!</title>
        <link>http://weblog.nabi.ir/post-14.html</link>
        <comments>http://weblog.nabi.ir/comment-14.html#comments</comments>
        <pubDate>Thu, 15 Nov 2007 00:24:23 GMT</pubDate>
        <dc:creator>نبی</dc:creator>
        <category>اینترنت</category>
                        <content:encoded><![CDATA[
        <div class="img_left">
<img alt="سایت اینترنتی انتخابات مجلس هشتم" src="uploads/images/majles8.gif" width="130" height="117" /></div>
ما جوونا میخوایم یه کار بزرگ کنیم...
<p>
يک حرکت بزرگ...</p>
<p>
طراحي وب سايت...!</p>
<p>
اینو که از تلوزیون شبکه سه شنیدم میخ کوب شدم ! آخه دفعه اول بود عبارت "طراحی وب 
سایت" رو از تلوزیون میشنیدم...!</p>
<p>
جديداً تلوزيون داره تبليغ يک طرح جديد براي برگزاري انتخابات از طريق اينترنت رو 
ميده که حتماً جزئياتش رو ميدونيد و یا با مراجعه به وب سایتش به نشانی
<span lang="en-us"><a target="_blank" href="http://www.majles8.com">www.majles8.com</a></span> 
در جریان قرار خواهید گرفت.</p>
<p>
در ادامه توجهتون رو به متن خبر اصلی از سایت رسمی وزارت کشور جلب میکنم:</p>
<br />
<p style="background-color:#edf3fa">
&quot;موسي پور: به منظور آزمايش زيرساخت ها و نرم افزار انتخابات رايانه اي، مسابقه اي 
اينترنتي در روز پنجشنبه برگزار مي شود<br />
رئيس شوراي اطلاع رساني وزارت كشور از برگزاري مسابقه اينترنتي به منظور آزمايش 
زيرساخت‌ها و نرم افزار انتخابات رايانه اي، در روز پنجشنبه هفته جاري خبر داد.<br />
به گزارش پايگاه اطلاع رساني وزارت كشور، حجت الاسلام والمسلمين &quot;محمدحسين موسي 
پور&quot; با اعلام اين خبر گفت: در اين مسابقه اينترنتي كه از ساعت 10 تا 12 روز 
پنجشنبه هفته جاري (24 آبان) برگزار مي شود، كاربران با اتصال به شبكه اينترنت و 
مراجعه به آدرس اينترنتي <a target="_blank" href="http://www.majles8.com">www.majles8.com</a> مي توانند با ورود اعداد مختلف در اين 
مسابقه شركت نمايند.<br />
وي افزود: هركاربري كه بيشترين تعداد ورود اعداد را داشته باشد، برنده اين مسابقه 
اينترنتي خواهد بود.<br />
به گفته معاون حقوقي و امور مجلس وزير كشور، پس از برگزاري اين مسابقه اينترنتي، 
تعدادي از كاربران كه حائز مقام برتر در ورود اعداد باشند به عنوان برنده انتخاب و 
جوايز نفيسي به آنان اهدا خواهد شد.&quot;<br />
<span lang="en-us">[</span><a target="_blank" href="http://www.moi.ir/Portal/Home/ShowPage.aspx?Object=News&amp;CategoryID=832a711b-95fe-4505-8aa3-38f5e17309c9&amp;LayoutID=dd8faff4-f71b-4c65-9aef-a1b6d0160be3&amp;ID=0d74daa1-049e-43a9-868d-2ae7ea6532e1">منبع</a><span lang="en-us">]</span></p>
<p>
سایت به لحاظ طراحی فوق العاده ضعیف طراحی شده و اشکالات زیادی داره که کاملاً 
واضحه کاره یک شخص مبتدی بوده که برای یک طرح گسترده ملی واقعاً جای تاسف داره که 
البته دفعه اول نیست! این مسئله رو با یک نگاه سطحی هم میشه متوجه شد. در
<span lang="en-us">[</span><a target="_blank" href="http://forum.persiantools.com/t96043.html">این 
لینک</a><span lang="en-us">] </span>میتونید نظرات و بحث های فنی درمورد این سایت 
و این طرح رو دنبال کنید.</p>
<p>
از جمله اشکالات وارده به طور کلی میشه به <span lang="en-us">layout tablebase</span> 
و اسکلت بندی بسیار بد صفحه، مشخص نکردن <span lang="en-us">Doctype</span> ، 
پاراگراف بندی بسیار بد، ترکیب رنگ و گرافیک ضعیف، <span lang="en-us">css</span> 
نامناسب، ناهماهنگی در مرورگرهای غیر از <span lang="en-us">IE</span> و... اشاره 
کرد. همچنین از همه 
مهمتر استفاده نکردن از پروتکل <span lang="en-us">SSL</span> که اونهم برای چنین 
سایتی که قراره اطلاعات محرمانه افراد رو ثبت کنه نبودش جای تعجب بسیار داره. شاید 
بشه عمده ترین حسن اون رو قرار گرفتن سایت بر روی یک سرور 
اختصاصی و ایرانی دونست که باز هم با چک کردن دامین و <span lang="en-us">IP</span> 
میشه متوجه شد که سایت توسط یک شرکت خصوصی ثبت و میزبانی شده. </p>
<p>
از طرفی اعتقاد دارم قبل از پیاده سازی اینگونه طرح ها باید فرهنگ سازی 
صورت بگیره، مثلاً همین الان هستند افرادی که کلاً اعتقادی به بانکداری الکترونیکی 
ندارند. طبعاً همین افراد به این شیوه انتخاباتی هم اعتقاد نخواهند داشت. در این 
صورت چطور میشه از اونها خواست تا سرنوشت مملکتشون رو به شیوه ای تعیین کنند که حتی 
اعتقادی به آن ندارند!</p>
<p>
البته بعید نیست که هدف از برگزاری چنین مسابقه ای سوای از تست بسترهای 
مخابراتی و سخت افزاری، همین قضیه فرهنگ سازی و به نوعی آشنایی مردم با این شیوه 
نویین باشه که در این صورت میتونه خیلی مفید باشه.</p>
<p>
انشااله که با توجه بیشتر به استانداردها، برای این طرح موفقیت حاصل گردد.</p>
<p>
</p>                ]]></content:encoded>
      </item>
      <item>
        <guid>http://weblog.nabi.ir/post-13.html</guid>
        <title>شما هم SubVersion را لمس کنید !</title>
        <link>http://weblog.nabi.ir/post-13.html</link>
        <comments>http://weblog.nabi.ir/comment-13.html#comments</comments>
        <pubDate>Sat, 03 Nov 2007 07:19:07 GMT</pubDate>
        <dc:creator>نبی</dc:creator>
        <category>پی اچ پی</category>
                        <content:encoded><![CDATA[
        <div class="img_left">
<img alt="سیستم کنترل نسخه" title="سیستم کنترل نسخه" src="uploads/images/subversion.gif" width="250" height="34" /></div>
همیشه با <span lang="en-us">SVN</span> و <span lang="en-us">VCS</span> و ... 
برخورد میکردم ولی بی توجه از کنارشون رد میشدم. چندی پیش در وبلاگ
<a target="_blank" href="http://farhadi.ir/blog/1386/07/20/going-to-freedom/">
علی فرهادی</a> خیلی گذرا اسم برنامه <span lang="en-us">TortoiseSVN</span> رو 
شنیدم که اینبار کمی بیشتر کنجاو شدم و در موردش از ایشون پرسیدم که البته فراموش 
کردم برای گرفتن پاسخ، مجدد به سایت مراجعه کنم و تقریباً فراموش شد. خیلی 
نگذشته بود تا اینکه چند وقت پیش وقتی از  Pablo Fischer یکی از توسعه دهنده 
های اصلی فریم ورک <span lang="en-us">
<a target="_blank" href="http://jaws-project.com">jaws</a></span> سراغ بسته <span lang="en-us">
piwi</span> رو گرفتم، ایشون گفتند که میتونی از اینجا برداری: svn://dev.jaws-project.com/piwi  ، راستش منم دیگه روم نشد که بپرسم 
این چه پروتوکلیه... این بود که خودم دست به 
کار شدم و شروع به جستجو کردم.<br />
<p>من (و شاید خود شما) همیشه در برنامه نویسی اینطور عمل میکنم که زمانی که تصمیم 
دارم تغییرات کلی در فایل ایجاد کنم که مطمئن نیستم نتیجه مطلوب خواهد داشت یا خیر، 
از فایل مورد نظر یک کپی به عنوان <span lang="en-us">backup </span>در همان مسیر قرار میدم و ابتدای نام فایل یک علامت <span lang="en-us">under line</span> (_) قرار میدم. سپس تغییرات را شروع میکنم. 
اگر تغییرات به نتیجه نرسید مجدداً آن فایل پشتیبان را جایگزین میکنم. اما همیشه 
داستان به همین سادگی نیست. گاهی فایلها زنجیروار به یکدیگر مرتبط هستند و تغییر 
کلی در یک فایل مستلزم تغییرات در فایلهای دیگر نیز هست. در این صورت اگر بعد از 
چند روز کار متوجه بشم که ایده اولیه و کلی من غلط بوده و کار از اصل اشکال داشته و 
تصمیم بگیرم که به همان سبک و روش قدیمی کار را ادامه دهم. اینجاست که پیدا 
کردن و اصلاح تغییرات و بازگرداندن تغییرات فایلها مثلا به چند روز قبل تقریباً غیر 
ممکن خواهد بود. همچنین همیشه با این قضیه مشکل داشتم که از کجا بدونم کدوم فایل رو 
مجدد ویرایش کردم و نیاز به آپ لود مجدد بر روی سایت داره و کدوم فایلها تغییری 
نکرده اند و نیاز به آپ لود مجدد ندارند. از طرف دیگه همیشه به این مسئله اعتقاد 
داشتم که انجام پروژه های برنامه نویسی به صورت گروهی تقریباً ناممکنه چون اعتقاد 
داشتم هماهنگی و گردآوری افراد درکنار یکدیگر کار مشکلیست. اما باز هم از اینکه 
پروژه های زیادی روی وب میدیدم که افراد زیادی در انجام اونها مشارکت دارند و جالب 
اینکه هر کدوم از این افراد در یک نقطه کره زمین زندگی میکنند، بیشتر متعجب میشدم.</p>
<p>پاسخ به سوالات و مشکلات مطرح شده در بالا مبحثی است که در ادامه به آن خواهیم 
پرداخت. </p>
<br />
از وقتی که با مفهومی به  نام "سیستم کنترل نسخه" و نرم افزار
<span lang="en-us">Subversion</span> آشنا شدم به تمام سوالاتم پاسخ داده شد. و به 
قول آقای بیژن هومند در <span lang="en-us">[</span><a target="_blank" href="http://www.irantux.org/html/index.php?name=Sections&req=viewarticle&artid=95">این 
مقاله</a><span lang="en-us">] : "</span>بعد از یکبار نصب subversion و کار کردن با آن و عادت کردن به این محیط، 
مطمئن باشید که این سوال را بارها از خود خواهید پرسید که من تا بحال چگونه بدون آن 
کار میکردم؟!"
<p><a target="_blank" href="http://fa.wikipedia.org/wiki/سورس_کنترل">سیستم کنترل 
نسخه</a> <span lang="en-us">(<a target="_blank" href="http://en.wikipedia.org/wiki/Revision_control">Version 
Control System</a></span> یا همون <span lang="en-us">VCS)</span> سیستمیه که بر 
روی فایلهای پروژه مدیریت میکنه و هرگونه تغییراتی در فایلهای پروژه اعم از ایجاد، 
حذف و یا تغییر رو به طور دقیق ثبت میکنه .</p>
<p>برنامه های زیادی در این زمینه وجود دارند که  از معروف ترین اونها میشه به
<span lang="en-us">
<a target="_blank" href="http://en.wikipedia.org/wiki/Subversion_(software)">
Subversion</a></span> یا اختصاراً <span lang="en-us">SVN</span> محصول شرکت
<a target="_blank" href="http://en.wikipedia.org/wiki/CollabNet">CollabNet</a> 
اشاره کرد که از <a target="_blank" href="http://subversion.tigris.org/">سایتش</a> 
به صورت رایگان قابل دریافت و نصب است. <span lang="en-us">subversion</span> قابلیت نصب بر 
روی هر سیستمی که <span lang="en-us">Apache</span> بر روی آن نصب میگردد را داراست. در
<span lang="en-us">[</span><a target="_blank" href="http://en.wikipedia.org/wiki/List_of_revision_control_software">اینجا</a><span lang="en-us">]</span> 
یک لیست کامل از اینگونه نرم افزارها رو میتونید مشاهده کنید. </p>
<p>این برنامه امکان مدیریت کامل بر روی فایلهای پروژه رو همراه با ثبت نام ویرایش 
کننده و تاریخ ویرایش رو فراهم می آوره و کلیه تغییرات رو یک بانک اطلاعاتی قوی 
ذخیره میکنه به طوری که در هر لحظه میشه  پروژه رو به حالتی که مثلا چندین روز 
و یا سال پیش به اون شکل بوده درآورد و این خیلی فوق العادست! سایت
<span lang="en-us"><a target="_blank" href="http://wikipedia.org">wikipedia</a></span> 
هم در مورد مقالات درست همین عمل رو انجام میده، یعنی درسته که مقالات به صورت آزاد 
قرار گرفته اند و هر شخصی میتونه اونها رو ویرایش کنه اما کلیه تغییرات ثبت میشه و 
لازم نیست نگران از بین رفتن اطلاعات بود. ضمناً اینکه از واژه "پروژه" استفاده 
میکنم ببه این دلیله که هیچ محدودیتی در نوع پروژه وجود نداره و حتی در مورد پروژه 
های صوتی، تصویری و... هم میشه از این سیستم استفاده کرد که احتمالاً تنها نرم 
افزارهای مروبطه فرق دارند.</p>
<p>بد نیست کمی در مورد روش کار اینگونه سیستمها صحبت کنم. در اغلب این سیستم ها که نرم افزار <span lang="en-us">subversion</span> هم از اون استفاده میکنه، بدین 
ترتیب عمل میشه که یک مخزن جهت نگهداری فایلهای پروژه درنظر گرفته میشه. این مخزن 
بر روی سرور اصلی قرار گرفته که در پروژه های گروهی هر شخص اطلاعات مخزن رو میخونه 
اصطلاحاً <span lang="en-us">checkout</span> میکنه. با اینکار یک نسخه از کلیه 
اطلاعات مخزن به سیستمش منتقل میشن و هر تغییری که دلش بخواد بر روی اون اطلاعات 
میده و سپس اونها رو به مخزن برمیگردونه اصطلاحاً <span lang="en-us">commit</span> 
میکنه. در صورتی که در این فاصله فایل توسط شخص دیگری تغییر کرده باشه به کاربر 
هشدار میده و کلاً درمورد تغییرات فایلها بسیار هوشمند عمل میکنه، مثلا میتونه 
متوجه بشه کاربران کدوم خطوط رو ویرایش کردند و تا حد امکان خودش فایلها رو ادغام 
میکنه ...</p>
<p>یکی از نرم افزارهایی که جهت کار با <span lang="en-us">subversion</span> محیط 
گرافیکی <span lang="en-us">GUI </span>بسیار خوب و قوی در اختیار کاربر قرار میده
<a target="_blank" href="http://www.tortoisesvn.net/">TortoiseSVN</a> است که به 
صورت رایگان قابل دریافت و نصب است. این نرم افزار تنها تحت ویندوزه و برای لینوکس 
میشه از <a target="_blank" href="http://rapidsvn.tigris.org/">RapidSVN</a> 
استفاده کرد. احتمالاً موقع  نصب <span lang="en-us">Visual Studio</span> با 
گزینه <span lang="en-us">Source Safe</span> برخورد کردید، این نرم افزار هم جزو 
همین دسته است.</p>
<p>در پایان توجهتون رو به مقاله فارسی 9 قسمتی آقای "بیژن هومند" تحت عنوان "آشنایی با 
Subversion" جلب میکنم: <br />
[بخش نخست:
<a target="_blank" href="http://www.irantux.org/pdf/13/subversion-I.pdf">pdf </a>
<a target="_blank" href="http://www.irantux.org/html/index.php?name=Sections&req=viewarticle&artid=82">html</a>] [بخش دوم:
<a target="_blank" href="http://www.irantux.org/pdf/14/subversion-II.pdf">pdf
</a>
<a target="_blank" href="http://www.irantux.org/html/index.php?name=Sections&req=viewarticle&artid=89">html</a>] [بخش سوم:
<a target="_blank" href="http://www.irantux.org/pdf/15/subversion-III.pdf">pdf
</a>
<a target="_blank" href="http://www.irantux.org/html/index.php?name=Sections&req=viewarticle&artid=95">html</a>] [بخش چهارم:
<a target="_blank" href="http://www.irantux.org/pdf/16/subversion-IV.pdf">pdf
</a>
<a target="_blank" href="http://www.irantux.org/html/index.php?name=Sections&req=viewarticle&artid=101">html</a>] [بخش پنجم:
<a target="_blank" href="http://www.irantux.org/pdf/17/subversion-V.pdf">pdf </a>
<a target="_blank" href="http://www.irantux.org/html/index.php?name=Sections&req=viewarticle&artid=113">html</a>] [بخش ششم:
<a target="_blank" href="http://www.irantux.org/pdf/18/subversion-VI.pdf">pdf
</a>
<a target="_blank" href="http://www.irantux.org/html/index.php?name=Sections&req=viewarticle&artid=117">html</a>] [بخش هفتم:
<a target="_blank" href="http://www.irantux.org/pdf/19/subversion-VII.pdf">pdf
</a>
<a target="_blank" href="http://www.irantux.org/html/index.php?name=Sections&req=viewarticle&artid=126">html</a>] [بخش هشتم:
<a target="_blank" href="http://www.irantux.org/pdf/20/subversion-VIII.pdf">pdf
</a>
<a target="_blank" href="http://www.irantux.org/html/index.php?name=Sections&req=viewarticle&artid=131">html</a>] [بخش پایانی:
<a target="_blank" href="http://www.irantux.org/pdf/21/subversion-IX.pdf">pdf
</a>
<a target="_blank" href="http://www.irantux.org/html/index.php?name=Sections&req=viewarticle&artid=143">html</a>]</p>

<p>اگر فقط دو بخش اول این مقاله رو بخونید با پی بردن به قابلیت ها و مزایای
<span lang="en-us">subversion</span> ، شک ندارم تا انتهای مقاله رو دنبال میکنید 
و با من هم عقیده میشید که وجود اون برای ما برنامه نویسا و الاخصوص
<span lang="en-us">PHP</span> کاران مخصوصاً اگر کار گروهی باشه یک ضرورته.</p>        <p><b>+ پی نوشت: </b>از اونجا که مطالب این مقاله نتایج جستجو و تحقیقات این بنده آماتور بوده، طبیعیه که اشکالاتی داشته باشه، از شما پیشکسوت عزیز خواهشمندم آنها را گوشزد بفرمائید.</p>        ]]></content:encoded>
      </item>
      <item>
        <guid>http://weblog.nabi.ir/post-12.html</guid>
        <title>من و مجیدآنلاین و ماه مبارک رمضان</title>
        <link>http://weblog.nabi.ir/post-12.html</link>
        <comments>http://weblog.nabi.ir/comment-12.html#comments</comments>
        <pubDate>Sun, 07 Oct 2007 08:48:31 GMT</pubDate>
        <dc:creator>نبی</dc:creator>
        <category>مطالب روزانه</category>
                        <content:encoded><![CDATA[
        <div class="img_left"><img alt="رمضان ماه خدا" title="رمضان ماه خدا" src="uploads/images/mo_ramezan.gif" width="120" height="90" /></div>
سلام و نماز روزه هاتون قبول حق باشه ؛
<p>چندی پیش در سایت محبوب <a target="_blank" href="http://www.majidonline.com">مجیدآنلاین</a> مسابقه حرفه ای طراحی وب سایت 
استاندارد برگزار شد که 
بنده هم در اون شرکت کردم. اینکه میگم حرفه ای به دلیل اینکه معیارها و شرایط سنجش 
مسابقه بسیار دقیق و تخصصی وضع شده بود. هنوز تاپیکش باقیست ، میتونید 
<a target="_blank" href="http://forum.majidonline.com/showthread.php?t=77212">مشاهده</a> کنید.</p>
<p>حمل بر تکبر نباشه بنده در این مسابقه اول شدم. جایزه هم یک دومین همراه با 1 
گیگ فضای هاست به اضافه یک کاپ که در زیر نام کاربری در سایت به مدت یکسال درج 
خواهد شد. </p>
<br />
البته راستش استقبال از مسابقه ضعیف بود اما سطح مسابقه بسیار بالا بود. که با این اوضاعی که حاکمه 
و اکثر طراحان وب، نسبت به مقوله استاندارد سازی وب بی توجه یا کم توجه هستند، جای امیدواری داره.<br />
<br />
<div class="img_left"><img alt="نفر اول مسابقه طراحی وب سایت مجیدآنلاین" title="نفر اول مسابقه طراحی وب سایت مجیدآنلاین" src="uploads/images/majidonline_race.gif" width="184" height="467" /></div>
کلیه طرح های ارسالی برای مسابقه به همراه آنالیز دقیق اونها و جدول امتیازات رو از
<span lang="en-us">[</span><a target="_blank" href="http://match.majidonline.com/webdesign1/">اینجا</a><span lang="en-us">]</span> 
میتونید مشاهده کنید و نکات آموزشی زیادی از طرح ها برداشت کنید.<p>
همچنین جا داره از آقا <a target="_blank" href="http://www.echessdesign.com/">حسین</a>، استاد بنده که زحمات زیادی در برپایی این مسابقه 
متحمل شدند تشکر ویژه ای داشته باشم.</p>
<p>
یه چیز دیگه  اینکه، چند روز پیش در  سایت مجیدآنلاین هزار پست ه شدم ...!</p>
<p>
<a target="_blank" href="http://www.majidonline.com">سایت مجیدآنلاین</a> یه سایت 
تخصصی گرافیک و طراحی است که مختص گرافیست ها، طراحان و وب مسترها می باشه و حاوی 
مقالات بسیار جالبی در مورد این مقولات می باشد. اگر اشتباه نکنم 5 سالی هست که از افتتاح سایت میگذره. 
البته ، <a target="_blank" href="http://forum.majidonline.com/member.php?u=1">مجید</a> مدیر سایت رو من از 
<a target="_blank" href="http://www.shahraknaft.net/modules.php?name=About_Me">حدود 7 سال پیش</a> از طریق شبکه های <span lang="en-us">
<a target="_blank" href="http://fa.wikipedia.org/wiki/سیستم_تابلوی_اعلانات">BBS</a></span> میشناختم... 
پیشنهاد میکنم اگر عضو  این سایت نیستند همین حالا
<a target="_blank" href="http://forum.majidonline.com/register.php">عضو بشید</a> و از <a target="_blank" href="http://forum.majidonline.com">انجمن های 
پرسش و پاسخ</a> 
اون استفاده کنید.</p>
<p>
خب! بد نیست در جریان باشید که یک مسابقه طراحی گرافیک در حال حاضر در سایت در حال 
برگزاریه که جایزه نفر اول یک ربع سکه بهار آزادیه که در بین فروم های ایرانی 
تقریباً بی سابقه بوده. عنوان مسابقه "مجیدآنلاین و ماه مبارک رمضان" است که 
پیشنهاد میکنم همه در این مسابقه شرکت کنیم. نه به هدف جایزه بلکه صرفاً به هدف 
ارزش گزاری به این جور مسابقه ها و حضور داشتن در مسابقه. فرصت ارسال طرح ها تا 
پایان ماه مبارک است. برای اطلاع از شرایط مسابقه <span lang="en-us">[</span><a target="_blank" href="http://forum.majidonline.com/showthread.php?t=79641">اینجا</a><span lang="en-us">]</span> 
را کلیک کنید.</p>
<p>التماس دعا</p>        <p><b>+ پی نوشت: </b><a target="_blank" href="http://forum.majidonline.com/showthread.php?t=79641&amp;page=11">
نتیجه مسابقه گرافیک مجیدآنلاین و ماه مبارک رمضان</a></p>        ]]></content:encoded>
      </item>
      <item>
        <guid>http://weblog.nabi.ir/post-11.html</guid>
        <title>استخراج کارنامه های کنکور دانشگاه با HTTP_Request و CURL</title>
        <link>http://weblog.nabi.ir/post-11.html</link>
        <comments>http://weblog.nabi.ir/comment-11.html#comments</comments>
        <pubDate>Sun, 16 Sep 2007 03:16:58 GMT</pubDate>
        <dc:creator>نبی</dc:creator>
        <category>پی اچ پی</category>
                        <content:encoded><![CDATA[
        <div class="img_left"><img alt="دانشگاه آزاد" src="uploads/images/logo_azad.gif" width="66" height="66" /></div>
شبکه سه، شبهای چهارشنبه یه سریالی پخش میکنه به اسم "راه بی پایان" ، توی یکی 
از قسمتها یه حسابرسی هست وقتی داره پرونده های مالی اون شرکت رو وارسی میکنه تا از 
کار اون حسابدار خلاف کاره سردربیاره یه جمله قشنگی میگه، میگه: "مثه ماهی می مونه، 
توی دست لیز میخوره، تازه داره ازش خوشم میاد".<br />
چند روز پیش یه پروژه ای به نام "<span lang="en-us"><a target="_blank" href="http://weblog.nabi.ir/post-10.html">KonkoorKill</a></span>" 
رو شروع کردم که کارش استخراج کارنامه های کنکور سازمان سنجش بود. بعد از اون سعی 
کردم برم سراغ کنکور دانشگاه آزاد. انصافاً هم خیلی روش وقت گذاشتم. چند روز همه 
کارهامو کنسل کردم چسبیدم به این کار. اما اعتراف میکنم که واقعاً اشکم رو در آورد. 
یه جورایی به قول همون حسابرس باید بگم واقعاً مثه ماهی میموند، بدجوری توی دست لیز 
میخورد. هر جاشو میگرفتی یه جای دیگش در میرفت. درست درلحظه ای که خیال میکردم همه 
چیز درسته، با خطا مواجه میشدم. دست آخری درست در لحظه ای که دیگه قطع امید کرده 
بودم و تصمیم داشتم دستامو به نشانه تسلیم بالا ببرم، گفتم بزار یه ایمیل به اساتید 
فن بزنم و سوال کنم. خیلی طول نکشید که استاد و دوست عزیز و بامعرفتم "<a target="_blank" href="http://blog.phpmystery.com">نیما 
شایافر</a>" که همیشه بهم کمک کرده بهم ایمیل زد و وقتی که گفت بابا این که کاری 
نداره ...! کلی شاخ در آوردم! با اضافه کردن یه خط کوچولو به برنامه مشکل رو رفع 
کرد و برنامه جواب داد. واقعاً دستش درد نکنه، همینجا ازش تشکر میکنم. البته همچنین 
از "<a target="_blank" href="http://www.phpclasses.org/browse/author/447221.html">نیما جوهری زاده</a>" عزیز که اون هم سعیش رو 
برای کمک کرد و باهم همفکری داشتیم.<br />
<br />
<p>در حال حاظر نسخه 2 و 3 برنامه حاظر شده که در زیر توضیحاتشون رو آوردم: </p>
<p><strong>توضیح نسخه2:</strong> این نسخه مربوط به استخراج نتایج نهایی آزمون سراسری 
سازمان سنجش است. مشابه نسخه شماره 1 ، امکان جستجوی موردی، جستجوی یک محدوده مشخص 
و جستجو از روی فایل رو داره.<br />
امکانی که در این نسخه اضافه شده امکان ذخیره کارنامه ها به صورت فایل و تفکیک شده 
بر اساس شماره داوطلبی می باشه. برای اینکار کافیه در سورس فایل و چند خط ابتدای 
فایل، مسیر شاخه ای که تمایل دارید کارنامه ها در اونجا ذخیره بشن رو به متغییر
<span lang="en-us">logfile_results$ </span>(سطح دسترسی شاخه بر روی سرور را بر 
روی 777 تنظیم کنید.) بدید. و در غیر این صورت مقدار هیچی "" 
رو بهش نسبت بدید.<br />
همچنین اسم فایلی که تمایل دارید اطلاعات صحیح و یافت شده در اون ذخیره بشه رو به 
متغییر <span lang="en-us">logfile_found$</span> (سطح دسترسی فایل بر روی سرور را 
بر روی 702 تنظیم کنید.) نسبت بدید و اسم فایلی که اطلاعات 
اشتباه و کارنامه ای برای اونها پیدا نشده رو به فایل <span lang="en-us">
logfile_notfound$ </span>(سطح دسترسی فایل بر روی سرور را بر روی 702 تنظیم کنید.)<span lang="en-us">
</span>نسبت بدید. در صورتی که تمایل به ثبت <span lang="en-us">log 
file</span> ها نداشتید مقدار هیچی "" رو به متغییرها نسبت بدید.</p>
<p><strong>توضیح نسخه3:</strong> این نسخه مربوط به استخراج کارنامه های کنکور 
دانشگاه آزاد است. و امکانات مشابه نسخه قبلی که توضیح داده شد رو داره.<br />
تنها نکته مهم اینکه در بخش جستجو از روی فایل، فایل ورودی این نسخه، بر خلاف فایل 
نسخه 1 و 2 کنکور دولتی که بایستی فورمت <span lang="en-us">text ansi</span> داشته 
باشد. این نسخه یعنی نسخه 3 بایستی فورمت فایل ورودی از نوع <span lang="en-us">
text utf-8</span> باشد. برای این منظور در Notepad در پنجره Save As ، گزينه 
Encoding را بر روي UTF-8 تنظيم و فايل را ذخيره نمائيد.</p>
<p>و این هم لینک دون لود و نسخه نمایشی آنلاین تمام نسخه ها:</p>
<p style="direction: ltr;"><span lang="en-us"><a target="_blank" href="http://konkoorkill.nabi.ir">
http://konkoorkill.nabi.ir</a></span></p>
<p>ضمناً برای آزمون های دیگه مثل کارشناسی ناپیوسته و فنی و حرفه ای سازمان سنجش و 
یا کارشناسی ارشد دانشگاه آزاد ... تا اونجایی که من بررسی کردم متوجه شدم تنها با 
عوض کردن <span lang="en-us">url$</span> و <span lang="en-us">referer$</span> 
ابتدای سورس فایل، میتونید برنامه رو برای اونها تعمیم بدید.</p>
<p>نسخه های آینده در همون لینک بالا قرار خواهند گرفت. </p>
<p><strong>اما از اونجایی که این مطلب رو من در گروه </strong> <span lang="en-us">
<strong>PHP</strong></span><strong> نوشتم، 
لازمه کمی در مورد سورس برنامه صحبت کنم. پس از اینجا به بعد صحبت تخصصی میشه.</strong></p>
<p>این برنامه رو توسط <span lang="en-us">
<a target="_blank" href="http://www.php.net">PHP</a></span> و  <span lang="en-us">
<a target="_blank" href="http://pear.php.net/manual/en/package.http.http-request.intro.php">HTTP_Request</a></span> که از کتابخانه های 
مجموعه <span lang="en-us"><a target="_blank" href="http://pear.php.net/">PEAR</a></span> است نوشتم. پیش از این درمورد این کتابخانه 
در <a target="_blank" href="http://weblog.nabi.ir/post-9.html">مطلبی که در مورد ارسال ایمیل</a> نوشته بودم صحبت کرده بودم. پس توضیح اضافی نمیدم 
و بیشتر در مورد هسته اصلی برنامه صحبت میکنم.</p>
<p>سورس هسته اصلی برنامه بدین شکله:</p>
<pre class="php" style="color: #000066; border: 1px solid #C0D5ED; background-color: #EDF3FA; overflow: auto; width:100%;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #0000ff;">$drpExamCode</span> = <span style="color: #ff0000;">&quot;نوع آزمون&quot;</span>; <span style="color: #808080; font-style: italic;">//options: 1 or 2 or 3</span>
<span style="color: #0000ff;">$txtName</span> = <span style="color: #ff0000;">&quot;نام&quot;</span>;
<span style="color: #0000ff;">$txtFamily</span> = <span style="color: #ff0000;">&quot;نام خانوادگی&quot;</span>;
<span style="color: #0000ff;">$txtFather</span> = <span style="color: #ff0000;">&quot;نام پدر&quot;</span>;
<span style="color: #0000ff;">$txtIdNumbert</span> = <span style="color: #ff0000;">&quot;شماره شناسنامه&quot;</span>;
&nbsp;
<span style="color: #b1b100;">include</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'HTTP/Request.php'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0000ff;">$url</span> = <span style="color: #ff0000;">'http://www.azmoon.com/Karshenasi/Year1386/Index1.aspx'</span>;
<span style="color: #0000ff;">$req</span> = <span style="color: #000000; font-weight: bold;">&amp;new</span> HTTP_Request<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$url</span><span style="color: #66cc66;">&#41;</span>;	
<span style="color: #0000ff;">$req</span>-&gt;<span style="color: #006600;">setMethod</span><span style="color: #66cc66;">&#40;</span>HTTP_REQUEST_METHOD_POST<span style="color: #66cc66;">&#41;</span>;
<span style="color: #0000ff;">$req</span>-&gt;_allowRedirects = <span style="color: #000000; font-weight: bold;">true</span>;
<span style="color: #0000ff;">$req</span>-&gt;<span style="color: #006600;">addPostData</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'drpExamCode'</span>, <span style="color: #0000ff;">$drpExamCode</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0000ff;">$req</span>-&gt;<span style="color: #006600;">addPostData</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'txtName'</span>, <span style="color: #0000ff;">$txtName</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0000ff;">$req</span>-&gt;<span style="color: #006600;">addPostData</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'txtFamily'</span>, <span style="color: #0000ff;">$txtFamily</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0000ff;">$req</span>-&gt;<span style="color: #006600;">addPostData</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'txtFather'</span>, <span style="color: #0000ff;">$txtFather</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0000ff;">$req</span>-&gt;<span style="color: #006600;">addPostData</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'txtIdNumbert'</span>, <span style="color: #0000ff;">$txtIdNumbert</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0000ff;">$req</span>-&gt;<span style="color: #006600;">addPostData</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'__VIEWSTATE'</span>, <span style="color: #ff0000;">&quot;/wEPDwUKMjAzOTYwNDI1MmRk&quot;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0000ff;">$req</span>-&gt;<span style="color: #006600;">addPostData</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'__EVENTVALIDATION'</span>, <span style="color: #ff0000;">&quot;/wEWCgKqyZDNBALUkYGVAwLYkc2WAwLZkc2WAwLakc2WAwLEhISFCwLvhLKADgLJm+SFAgKRiee2DAKC3IeGDA==&quot;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0000ff;">$req</span>-&gt;<span style="color: #006600;">addPostData</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'btnLogin'</span>, <span style="color: #ff0000;">&quot;&quot;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0000ff;">$req</span>-&gt;<span style="color: #006600;">addCookie</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'ASP.NET_SessionId'</span>, <span style="color: #ff0000;">&quot;kn1ndx45pgfqfnav05zkkh3s&quot;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0000ff;">$req</span>-&gt;<span style="color: #006600;">sendRequest</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #0000ff;">$req</span>-&gt;<span style="color: #006600;">getResponseBody</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre>
<p><span lang="en-us">HTTP_Request</span> یه کلاس قوی برای کار با
<span lang="en-us">URL</span> هاست و امکان ارسال و دریافت داده ها به
<span lang="en-us">URL</span> رو آسون میکنه، درواقع <span lang="en-us">
HTTP_Request</span> از توابع داخلی <span lang="en-us">PHP</span> مخصوصاً تابع  
<a target="_blank" href="http://ir.php.net/manual/en/function.fsockopen.php">fsockopen</a><span lang="en-us"> </span>استفاده میکنه. و هدر مورد نیاز برای ارسال 
داده به <span lang="en-us">URL</span>  رو بسادگی و با پارامترهای ورودی میسازه و مقدار 
برگشتی رو به ما تحویل میده.</p>
<p>به 
<a target="_blank" href="http://pear.php.net/manual/en/package.http.http-request.intro.php">نقل از سایت <span lang="en-us">PHP</span></a><span lang="en-us"><span lang="fa">، کلاس </span>
HTTP_Request</span> از GET/POST/HEAD/TRACE/PUT/DELETE, Basic authentication, 
Proxy, Proxy Authentication, SSL, file uploads پشتیبانی میکنه.</p>
<p>سورسی که در بالا نوشتم، یک <span lang="en-us">URL</span> رو به عنوان ورودی 
دریافت میکنه و یک آبجکت از نوع کلاس<span lang="en-us"> HTTP_Request</span> ایجاد 
میکنه. سپس با انتساب مقدار HTTP_REQUEST_METHOD_POST به متد setMethod مشخص میکنیم 
که داده ها به صورت <span lang="en-us">POST</span> ارسال بشن. به این ترتیب 
میتونیم فیلدهای فرم رو براحتی به <span lang="en-us">URL</span> پاس بدیم. با قرار 
دادن متد allowRedirects_ به <span lang="en-us">true</span> ، اجازه
<span lang="en-us">direct</span> شدن <span lang="en-us">url</span> رو میدیم که 
در مورد این پروژه لازمه. سپس توسط متد addPostData کلیه پارامتر ها و فیلد های 
درون فرم مورد نظر رو مقدار دهی میکنیم. باید مراقب <span lang="en-us">cookie</span> 
ها و <span lang="en-us">session</span> ها نیز باشیم و در صورت نیاز اونها رو ست 
کنیم. در اینجا به دلیل اینکه سایت هدف توسط <span lang="en-us">asp.net</span> 
برنامه نویسی شده است. به صورت خودکار <span lang="en-us">session</span> یی ایجاد 
میشود که ما باید  اون رو به همراه فرم ارسال کنیم. (این همون نکته ریزی بود 
که دوست خوبم نیما متوجه شد.)  این عمل رو متد addCookie انجام خواهد داد. حال 
وقت ارسال داده هاست و منتظر پاسخ. توسط متد sendRequest داده ها ارسال میشود و 
نهایتاً توسط متد getResponseBody مقدار برگشتی <span lang="en-us">URL</span> رو 
به خروجی ارسال میکنیم. به همین سادگی.</p>
<p>کلاس HTTP_Request پارامترها و متد های دیگری دارد که در این پروژه نیازی به استفاده 
نداشتند. مثل getResponseCode, getResponseHeader, setBasicAuth, 
getResponseCookies, addFile, addHeader, setProxy و... که کاربرد هرکدوم از روی 
اسمش مشخصه. فهرست تموم این متدها و نحوه استفادشون رو میتونید در
<span lang="en-us">[</span><a target="_blank" href="http://pear.php.net/package/HTTP_Request/docs/latest/HTTP_Request/HTTP_Request.html">اینجا</a><span lang="en-us">]</span> 
مشاهده کنید.</p>
<p>شخصاً خیلی به بسته <span lang="en-us">PEAR</span> علاقه پیدا کردم با اینکه 
فقط با چند تا از کلاس هاش بیشتر کار نکردم ولی چیز کامل و جالبیه. به همه
<span lang="en-us">PHP</span> کارها پیشنهاد میکنم راهنمای <span lang="en-us">
PEAR</span> رو با فورمت <span lang="en-us">CHM</span> از <span lang="en-us">[</span><a target="_blank" href="http://pear.php.net/distributions/manual/chm/pear_manual_en.chm">این 
لینک</a><span lang="en-us">]</span> دون لود کنند تا همیشه راهنمای کامل و جامع 
اون رو بصورت <span lang="en-us">offline</span> دم دستشون داشته باشند. و البته
<a target="_blank" href="http://ir.php.net/get/php_manual_en.chm/from/this/mirror">
راهنمای <span lang="en-us">PHP</span></a> را.</p>
<p>این بود داستان <span lang="en-us">HTTP_Request</span>. اما چند وقت پیش یکی دو 
تا از دوستان پرسیدند که آیا این برنامه رو توسط <span lang="en-us">CURL</span> هم 
میشه نوشت یا خیر. بعد از تحقیق متوجه شدم که قدرت دسته توابع <span lang="en-us">
CURL</span> فراتر از این حرفهاست ! حتی با <span lang="en-us">CURL</span> میشه به 
پروتکل <span lang="en-us">https</span> وصل شد یا حتی فایل رو به سرور
<span lang="en-us">POST</span> کرد و کارای جالب دیگه.</p>
<p>هسته اصلی ورژن 1 برنامه کنکور رو  با <span lang="en-us">CURL</span> هم نوشتم 
که در زیر آوردم:</p>
<pre class="php" style="color: #000066; border: 1px solid #C0D5ED; background-color: #EDF3FA; overflow: auto; width:100%;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #0000ff;">$sds</span> = <span style="color: #ff0000;">&quot;شماره داوطلبی&quot;</span>;
<span style="color: #0000ff;">$slns</span> = <span style="color: #ff0000;">&quot;نام خانوادگی&quot;</span>;
<span style="color: #0000ff;">$sns</span> = <span style="color: #ff0000;">&quot;نام&quot;</span>;
<span style="color: #0000ff;">$sshs</span> = <span style="color: #ff0000;">&quot;شماره شناسنامه&quot;</span>;
<span style="color: #0000ff;">$stts</span> = <span style="color: #ff0000;">&quot;دو رقم سمت راست سال تولد&quot;</span>;
&nbsp;
<span style="color: #0000ff;">$data</span> = <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a> <span style="color: #66cc66;">&#40;</span>
	<span style="color: #ff0000;">&quot;sds&quot;</span> =&gt; <span style="color: #0000ff;">$sds</span>,
	<span style="color: #ff0000;">&quot;slns&quot;</span> =&gt; <span style="color: #0000ff;">$slns</span>,
	<span style="color: #ff0000;">&quot;sns&quot;</span> =&gt; <span style="color: #0000ff;">$sns</span>,
	<span style="color: #ff0000;">&quot;sshs&quot;</span> =&gt; <span style="color: #0000ff;">$sshs</span>,
	<span style="color: #ff0000;">&quot;stts&quot;</span> =&gt; <span style="color: #0000ff;">$stts</span>,
<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #0000ff;">$vars</span>=<span style="color: #000000; font-weight: bold;">null</span>;
<span style="color: #b1b100;">foreach</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$data</span> <span style="color: #b1b100;">as</span> <span style="color: #0000ff;">$key</span>=&gt;<span style="color: #0000ff;">$value</span><span style="color: #66cc66;">&#41;</span>
	<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$key</span> &amp;&amp; <span style="color: #0000ff;">$value</span><span style="color: #66cc66;">&#41;</span>
		<span style="color: #0000ff;">$vars</span>.=<span style="color: #0000ff;">$key</span>.<span style="color: #ff0000;">&quot;=&quot;</span>.<a href="http://www.php.net/urlencode"><span style="color: #000066;">urlencode</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$value</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #ff0000;">&quot;&amp;&quot;</span>;
&nbsp;
<span style="color: #0000ff;">$url</span> = <span style="color: #ff0000;">&quot;http://www.sanjesh.org/result_dav.php&quot;</span>;
<span style="color: #0000ff;">$ch</span> = curl_init<span style="color: #66cc66;">&#40;</span> <span style="color: #0000ff;">$url</span> <span style="color: #66cc66;">&#41;</span>;
&nbsp;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$ch</span>, CURLOPT_REFERER    , <span style="color: #ff0000;">&quot;http://www.sanjesh.org/index.php&quot;</span><span style="color: #66cc66;">&#41;</span>;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$ch</span>, CURLOPT_POST       , <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$ch</span>, CURLOPT_POSTFIELDS , <span style="color: #0000ff;">$vars</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #0000ff;">$content</span> = curl_exec<span style="color: #66cc66;">&#40;</span> <span style="color: #0000ff;">$ch</span> <span style="color: #66cc66;">&#41;</span>;
curl_close<span style="color: #66cc66;">&#40;</span> <span style="color: #0000ff;">$ch</span> <span style="color: #66cc66;">&#41;</span>;
&nbsp;
<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #0000ff;">$content</span>;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre>
<p>همونطور که میبینید ، ابتدا داده هایی که باید ارسال بشن در آرایه قرار گرفتند 
و سپس توسط foreach تمام اندیس ها و مقادیر آرایه ها از urlencode عبور داده میشن و 
به یک رشته یکپارچه تبدیل میشن، در مورد <span lang="en-us">HTTP_Request</span> ، 
استفاده از urlencode نیازی نیست چون اینکار رو توابع داخلی این کلاس انجام میده، 
اما در مورد <span lang="en-us">CURL</span> اینکار لازمه. بعد از اینکه رشته حاوی 
فیلدها و مقادیر فرم مورد نظر جهت ارسال ساخته شد. توسط curl_init یک ارتباط به
<span lang="en-us">URL</span> مورد نظر ایجاد شده. بعد از اون تموم کارها رو 
curl_setopt انجام میده، پارامتر اول این تابع همون اشاره گر به <span lang="en-us">
url</span> است، پارامتر دوم نام <span lang="en-us">option</span> و پارامتر سوم 
مقدار اون است. در مورد این برنامه ما باید آدرس <span lang="en-us">referer</span> 
رو به CURLOPT_REFERER نسبت بدیم. مقدار 1 برای CURLOPT_POST مشخص میکنه که قصد 
داریم از متد <span lang="en-us">POST</span> استفاده کنیم. رشته ای که حاوی مقادیر 
فیلدهای فرم بود و ابتدا ساخته بودیم رو هم به CURLOPT_POSTFIELDS نسبت میدیم. حال 
وقت اجرای ارتباط ایجاد شده توسط curl_exec است، آن را درون متغییر content$ 
میریزیم و توسط curl_close ارتباط را قطع میکنیم. تنها کاری که باقی میمونه فرستادن 
متغییر content$ به خروجی است.</p>
<p><span lang="en-us">CURL</span> دارای <span lang="en-us">option</span> های 
خیلی زیادی است. مثل CURLOPT_AUTOREFERER, CURLOPT_TIMEOUT, CURLOPT_USERAGENT, 
CURLOPT_HTTPHEADERو... <span lang="en-us">[</span><a target="_blank" href="http://us2.php.net/manual/en/function.curl-setopt.php">لیست 
کامل <span lang="en-us">option</span> ها</a><span lang="en-us">]</span> با نگاه 
به اسم این پارامترها، مورد استفاده اونها رو متوجه میشید. با این حال
<a target="_blank" href="http://us2.php.net/manual/en/ref.curl.php">راهنمای
<span lang="en-us">CURL</span></a> هم تمام این پارامترها رو باز کرده و همراه با 
مثال های متعدد توضیح داده.</p>
<p>یکی از امکانات جالبی که <span lang="en-us">CURL</span> داره و من باش حال 
کردم، پشتیبانی از <span lang="en-us">SSL</span> و ارسال داده ها به <span lang="en-us">URL</span> با پروتوکل
<span lang="en-us">HTTPS</span> است. به این روش، میشه فرم سایتهایی که از این 
پروتکل استفاده میکنند و به اصطلاح ادعای امنیتشون میشه رو <span lang="en-us">
submit</span> کرد. نمونه سورس جهت انجام اینکار رو در زیر آوردم: </p>
<pre class="php" style="color: #000066; border: 1px solid #C0D5ED; background-color: #EDF3FA; overflow: auto; width:100%;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
<span style="color: #0000ff;">$user</span> = <span style="color: #ff0000;">&quot;&quot;</span>;
<span style="color: #0000ff;">$pass</span> = <span style="color: #ff0000;">&quot;&quot;</span>;
&nbsp;
<span style="color: #0000ff;">$url</span> = <span style="color: #ff0000;">'https://www.example.com/'</span>;
<span style="color: #0000ff;">$params</span> = <span style="color: #ff0000;">&quot;username=$user&amp;password=$pass&amp;&quot;</span>;
&nbsp;
<span style="color: #0000ff;">$ch</span> = curl_init<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
curl_setopt <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$ch</span>, CURLOPT_POST,             <span style="color: #cc66cc;">1</span>       <span style="color: #66cc66;">&#41;</span>;
curl_setopt <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$ch</span>, CURLOPT_POSTFIELDS,       <span style="color: #0000ff;">$params</span> <span style="color: #66cc66;">&#41;</span>;
curl_setopt <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$ch</span>, CURLOPT_URL,              <span style="color: #0000ff;">$url</span>    <span style="color: #66cc66;">&#41;</span>;
curl_setopt <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$ch</span>, CURLOPT_SSL_VERIFYPEER,   <span style="color: #000000; font-weight: bold;">FALSE</span>   <span style="color: #66cc66;">&#41;</span>;
curl_setopt <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$ch</span>, CURLOPT_HEADER,           <span style="color: #cc66cc;">0</span>       <span style="color: #66cc66;">&#41;</span>;
curl_setopt <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$ch</span>, CURLOPT_RETURNTRANSFER,   <span style="color: #cc66cc;">1</span>       <span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #0000ff;">$result</span> = curl_exec <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$ch</span><span style="color: #66cc66;">&#41;</span>;
curl_close <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$ch</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #0000ff;">$result</span>;
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre>
<p>پارامترهایی که برای انجام اینکار لازمه رو در بالا میبینید، همچنین پارامتر 
CURLOPT_SSL_VERIFYPEER که در اینجا نقش کلیدی ایفا میکنه.</p>
<p>همچنین پست داده ها به صورت multipart/form-data ، مثلا برای ارسال یک فایل به 
یک <span lang="en-us">URL</span> از دیگر امکانات جالب <span lang="en-us">
CURL</span> است.</p>
<p>خب این هم گریزی کوتاه بود به <span lang="en-us">CURL.</span> که البته در 
مقایسه با <span lang="en-us">HTTP_Request</span> توانایی های اونها بسیار به هم 
نزدیک هستند.</p>
<p>منبع اصلی سورسها سایت رسمی <span lang="en-us">
<a target="_blank" href="http://www.php.net">PHP</a></span> و <span lang="en-us">
<a target="_blank" href="http://pear.php.net">PEAR</a></span> بود. این رو هم 
اضافه کنم که تمام 
این مطالب رو در قالب چند مقاله هم میشد بنویسم، در هر صورت امیدوارم مورد استفاده 
قرار گرفته باشه. </p>        <p><b>+ پی نوشت: </b>نکته بسیار مهم: الان که مدت زیادی از این مطلب میگذره، در مورد آزمون دانشگاه آزاد تست کردم و متوجه شدم برنامه کار نمیکنه، برای حل مشکل بایستی به صفحه اصلی اعلام نتایج یعنی آدرسی که در متغییر url$ قرار گرفته برید و view source کنید و مقادیر فیلدهای __VIEWSTATE و __EVENTVALIDATION رو با مقادیر جدید اون در سورس جایگزین کنید، در غیر این صورت برنامه کار نخواهد کرد.</p>        ]]></content:encoded>
      </item>
      <item>
        <guid>http://weblog.nabi.ir/post-10.html</guid>
        <title>استخراج کارنامه هاي کنکور سراسري و آزاد به صورت پيشرفته</title>
        <link>http://weblog.nabi.ir/post-10.html</link>
        <comments>http://weblog.nabi.ir/comment-10.html#comments</comments>
        <pubDate>Thu, 06 Sep 2007 07:00:31 GMT</pubDate>
        <dc:creator>نبی</dc:creator>
        <category>پی اچ پی</category>
                        <content:encoded><![CDATA[
        <div class="img_left"><img alt="سازمان سنجش" src="uploads/images/logo_sanjesh.gif" width="56" height="56" /></div>
چندی پیش که نتایج اولیه آزمون سراسری منتشر شده بود، یکی از دوستان به من گفت 
که شماره داوطلبیش رو گم کرده و به این ترتیب من هم سعی در نوشتن برنامه ای کردم که 
بتونه تعداد زیادی شماره داوطلبی رو با روش سعی و خطا امتحان کنه و شماره صحیح رو 
پیدا کنه. توابع <span lang="en-us">PEAR</span> مثل همیشه کار رو ساده کرده بود، 
این بود که دست به کار شدم و کد اولیه رو نوشتم. اما وقتی تست کردم دیدم کد کار 
نمیکنه، بنابراین مشکل رو در سایت 
<a target="_blank" href="http://forum.majidonline.com/">مجیدآنلاین</a> مطرح کردم و بلاخره با کمک دوستان 
موفق شدم کد رو تکمیل کنم و ازش نتیجه بگیرم. اما  بعد از اون تاپیک دوستانی 
پیغام گذاشتند و گفتند که این مشکل ما هم هست و هر کدام به نحوی خواستار سورس کامل 
برنامه شدند. راستش فکر نمیکردم اینطور با استقبال مواجه بشه و این بود که سورس 
هسته اصلی برنامه به همراه توضیحات مختصری رو در 
<a target="_blank" href="http://forum.majidonline.com/showthread.php?t=76725">همون تاپیک</a> قرار دادم. اما از 
اونجا که برخی دوستان آشنایی با زبان <span lang="en-us">PHP</span> نداشتند، موفق 
نشدند با برنامه کار کنند. به همین خاطر و با توجه به اینکه هیچگونه برنامه مشابه 
درباره این موضوع بر روی اینترنت وجود ندارد، فکر نوشتن یه نرم افزار کامل افتادم.
<p>با وجود مشغله زیاد تونستم امروز این برنامه رو آماده کنم و برای دون لود قرار 
بدم.</p>
<br />
<p>توضیح در مورد این برنامه اینکه این برنامه شامل سه بخش کلی است.</p>
<ul>
	<li>
	<p><strong>جستجوی موردی:</strong> که شما با داشتن اطلاعات کامل هر داوطلب 
	میتونید کارنامه را استخراج کنید. یعنی درست مثل اینکه به سایت اصلی مراجه 
	کردید و اطلاعات رو وارد کردید.</p>
	</li>
	<li>
	<p><strong>جستجوی یک محدوده مشخص:</strong> این گزینه برای کسانی مفید است که 
	شماره داوطلبی خودشون رو فراموش کرده اند ، اونها میتوانند با وارد کردن یک حداقل 
	و حداکثر، کلیه شماره های موجود بین اون بازه رو در زمان کوتاهی جستجو کنند. و 
	در صورتی که شماره داوطلبی اونها بین اون بازه باشه، کارنامه رو مشاهده نمایند.</p>
	</li>
	<li>
	<p><strong>جستجو از روی فایل: </strong>ممکن است شما اطلاعات تعداد زیادی از 
	داوطلبین رو داشته باشید و بخواهید کارنامه همه رو استخراج کنید. با این گزینه 
	میتونید کلیه اطلاعات رو در قالب یک فایل <span lang="en-us">text</span> به 
	برنامه بدید و نتیجه رو مشاهده کنید. توجه داشته باشید که فایل
	<span lang="en-us">text</span> شما بایستی از یک قالب خاص پشتیبانی کند. قالب 
	فایل باید طوری باشد که به ازای هر سطر، اطلاعات یک داوطلب درج شده باشد. این 
	اطلاعات به ترتیب از سمت چپ عبارتند از: "شماره داوطلبی"، "نام خانوادگی"، 
	"نام"، "شماره شناسنامه"، "دو رقم سمت راست سال تولد". که هر یک از آنها بایستی 
	با یک <span lang="en-us">TAB</span> 
	(این کلید بر روی صفحه کلید موجود می باشد) از یکدیگر جدا شوند.</p>
	</li>
</ul>
<p>لازمه یه توضیح بدم و اون اینکه یکی از دوستان گفته بود که 
اطلاعات تعداد زیادی داوطلب رو داره و میخواد ببینه که کدومیک قبول شدند و کدم 
نشدند. فورمت اون اطلاعات بصورت <span lang="en-us">Excel</span> بود، البته این 
برنامه تنها فایل <span lang="en-us">text</span> رو قبول میکنه. اما این مشکلی 
ایجاد نمیکنه. شما براحتی میتونید از فایل <span lang="en-us">excel</span> طوری 
خروجی بگیرید که با فورمت ذکر شده مطابقت داشته باشه. برای اینکار ابتدا ستون های 
اضافی رو حذف کنید و تمام ستون ها رو به ترتیبی که ذکر شد مرتب کنید. تنها نکته ای 
که باقی میمونه اینه که ممکنه تاریخها به صورت مثلاً 1367/05/25 باشند ولی برنامه 
تنها عدد 67 رو نیاز داره. تبدیل این دو براحتی انجام پذیره ، مثلاً اگر تاریخ ها 
در ستون <span lang="en-us">D</span> واقع هستند، کافیه در یک ستون خالی بر روی 
اولین سلول خالی کلیک کنید و در قسمت <span lang="en-us">Fx</span> این دستور رو 
وارد کنید: <span style="direction:ltr">=MID(D:D;3;2)</span> (چپ به راست کنید تا 
صحیح دیده بشه) و نهایتاً  با کشیدن اون سلول به پایین، خاصیت اون 
سلول رو به تمام سلول های زیر اون نسبت بدید. پس از انجام مراحل فوق گزینه
<span lang="en-us">Save as</span> رو انتخاب کنید و در قسمت <span lang="en-us">
Save as type</span> گزینه <span style="direction:ltr;">Text (Tab delimited) (*.txt) 
رو انتخاب کنید. فایل خروجی درست همونطوری است که این برنامه لازم دارد.</span></p>
<p>من شخصاً با اینکه کاملاً موافق سیاستهای <span lang="en-us">Open Source</span> 
هستم. اما اصولاً آدم <span lang="en-us">Open Source</span> یی نیستم ! و معمولاً 
بیشتر به <span lang="en-us">Close Source</span> معروف هستم ! اما ایندفعه نمیدونم 
آفتاب از کدوم طرف در اومده که میخوام سورس رو اون هم به صورت رایگان منتشر کنم! خب 
شاید میخوام ببینم مزش چطوریه، اگر خوشمزه بود که در آینده بیشتر به نفع شما میشه
<span lang="en-us">;-) [ </span>حالا اگر خیلی حال کردید میتونید طبق روال دیگر 
سایتها، جهت پشتیبانی از چنین پروژه هایی، مبلغی ناچیز واریز کنید!
<span lang="en-us">;-) ] </span></p>
<p>این برنامه به خوبی بر روی <span lang="en-us">localhost</span> 
هم 
جواب میده و با آزمونی که من انجام دادم به طور میانگین و با سرعت 33.6Kbps به ازای 
استخراج هر کارنامه حدود 2 ثانیه زمان صرف میشه.</p>
<p>نکته: در صورتی که میخواهید اطلاعات وارد شده در فایلی ذخیره 
گردند، در ابتدای فایل <span lang="en-us">index.php</span> متغییر logfile$ را به 
حالت <span lang="en-us">true</span> درآورید و سطح دسترسی فایل <span lang="en-us">
logs.txt </span>را بر روی سرور به 
702 تغییر دهید.</p>
<p>شما سورس کامل این برنامه رو میتونید از لینک زیر دون لود کنید:</p>
<p style="direction:ltr;"><span lang="en-us">
<a target="_blank" href="http://konkoorkill.nabi.ir/download/KonkoorKill_v1.0.0_karnameh_azmoon_sarasari_86.zip">http://konkoorkill.nabi.ir/download/KonkoorKill_v1.0.0_karnameh_azmoon_sarasari_86.zip</a></span></p>
<p>همچنین نسخه آنلاین اون رو اینجا نصب کردم که همین الان میتونید 
امتحانش کنید:</p>
<p style="direction:ltr;">
<a target="_blank" href="http://konkoorkill.nabi.ir/view/KonkoorKill_v1.0.0_karnameh_azmoon_sarasari_86/">http://konkoorkill.nabi.ir/view/KonkoorKill_v1.0.0_karnameh_azmoon_sarasari_86/</a></p>
<p>توجه داشته باشید که این برنامه تنها برای استخراج "کارنامه 
نتايج علمي داوطلبان آزمون سراسري سال 1386" جواب میده. ایشااله برای سایر آزمون ها 
از جمله آزمون دانشگاه آزاد فایل تصحیح شده در لینک زیر در دسترس خواهد بود. </p>
<p style="direction:ltr;"><span lang="en-us">
<a target="_blank" href="http://konkoorkill.nabi.ir">http://konkoorkill.nabi.ir</a></span></p>
<p>خواهشاً کپی رایت نرم افزار را حذف یا ویرایش نفرمائید. </p>
<p>هر سوال یا نظری در این باره دارید در کامنت های همین پست 
بنویسید. </p>
<p>امیدوارم مفید بوده باشه.</p>        <p><b>+ پی نوشت: </b><p>در ادامه همین موضوع خوندن <span lang="en-us">[</span><a target="_blank" href="http://weblog.nabi.ir/post-11.html">این 
مطلب</a><span lang="en-us">] </span>هم خالی از لطف نیست.</p></p>        ]]></content:encoded>
      </item>
      <item>
        <guid>http://weblog.nabi.ir/post-9.html</guid>
        <title>ارسال ایمیل به صورت قانونی توسط SMTP - بخش نخست</title>
        <link>http://weblog.nabi.ir/post-9.html</link>
        <comments>http://weblog.nabi.ir/comment-9.html#comments</comments>
        <pubDate>Thu, 12 Jul 2007 04:06:17 GMT</pubDate>
        <dc:creator>نبی</dc:creator>
        <category>پی اچ پی</category>
                        <content:encoded><![CDATA[
        <p>شاید شما هم به عنوان یک برنامه نویس 
<a target="_blank" href="http://www.php.net">PHP</a> جهت ارسال ایمیل از 
قطعه کد زیر استفاده میکنید:</p>
<pre class="php" style="color: #000066; border: 1px solid #C0D5ED; background-color: #EDF3FA; overflow: auto; width:100%;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<a href="http://www.php.net/mail"><span style="color: #000066;">mail</span></a> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;recipient@nabi.ir&quot;</span>, <span style="color: #ff0000;">&quot;subject&quot;</span>, <span style="color: #ff0000;">&quot;body&quot;</span>, <span style="color: #ff0000;">&quot;From: sender@nabi.ir&quot;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre>
<p>همانطور که میدانید تابع 
<a target="_blank" href="http://ir2.php.net/manual/en/function.mail.php">()mail</a> در 
<a target="_blank" href="http://www.php.net">PHP</a> از انعطاف پذیری زیادی برخوردار نمی باشد و ایمیلهایی که توسط این تابع ارسال 
می شوند، غالباً به صورت گمنام یا اصطلاحاً nobody ارسال خواهند شد. این مسئله برای یک مدیر سرور از اهمیت ویژه ای برخوردار است. چراکه احتمال اینکه 
آن ایمیل از سمت گیرنده، به صورت خودکار spam محسوب شود و به bulk انتقال یابد بسیار زیاد است. چـه بسـا ممکن اسـت IP سـرور مسدود (block) شود و مشکلات دیگری را ناشی شود.</p>
<p>راه حلی که وجود دارد استفاده از 
<a target="_blank" href="http://en.wikipedia.org/wiki/Smtp_server">SMTP Server</a> به صورت قانونی (<a target="_blank" href="http://en.wikipedia.org/wiki/E-mail_authentication">Authentication</a>) 
می باشد. خوشبختانه وجود بستۀ 
<a target="_blank" href="http://pear.php.net/package/Mail">PEAR Mail</a> برای 
<a target="_blank" href="http://www.php.net">PHP</a> کار را آسان کرده است و توسط آن بسادگی میتوان ایمیل های مطمئن ارسال کرد. 
ایمیلهایی که بدین صورت ارسال خواهند شد غالباً در inbox دریافت کننده قرار خواهند گرفت.</p>
<br />
<p>نکته مهم اینکه کدی که در این مقاله ارائه خواهد شد نیاز به بستۀ کلی 
<a target="_blank" href="http://pear.php.net/package/PEAR/">PEAR</a> 
و همچنین بسته های تکمیلی
<a target="_blank" href="http://pear.php.net/package/Net_Socket">Net_Socket</a> 
، <a target="_blank" href="http://pear.php.net/package/Net_SMTP">Net_SMTP</a>،
<a target="_blank" href="http://pear.php.net/package/Mail">Mail</a> دارد.</p>
<p>بسته <a target="_blank" href="http://pear.php.net/package/PEAR/">PEAR</a> معمولاً به طور پیشفرض بر روی سرور نصب است. 
اما در مورد بسته های تکمیلی ذکر شده همیشه اینگونه نیست.<br />
در هر صورت شما هم به عنوان مدیر یک سرور و هم به عنوان کاربر مصرفی و برنامه نویس 
میتوانید براحتی اقدام به نصب آنها نمائید.</p>
<p>در مورد مدیران سرور کافیست از وجود بسته های ذکر شده 
در مسیر include_path که اغلب به صورت usr/lib/php:/usr/local/lib/php/:. و یا 
مشابه می باشد اطمینان حاصل کنند. مسیر دقیق بسته های الحاقی را میتوانند در فایل
php.ini جستجو کنند. در صورت موجود نبودن هر یک از بسته 
ها، تنها کافیست آن بسته را از لینک مربوطه دون لود و در مسیر بسته های الحاقی قرار 
دهند.</p>
<p>اما چنانچه به مدیر سرور دسترسی نبود و یا به هر دلیلی از سمت مدیر سرور این 
کار صورت نگرفت نگران نباشید. چون خود شما به عنوان 
برنامه نویس نیز براحتی هر چه تمام می توانید کلیه بسته های فوق الذکر را دون لود 
کنید و در مسیر اجرای اسکریپت ایمیل خود آنها را قرار دهید.</p>
<p>فایلهای مورد نیاز همراه با لینک دون لود آنها به صورت زیر می باشند که می بایستی در مسیر های 
مشخصه قرار داشته باشند:</p>
<pre class="text" style="color: #000066; border: 1px solid #C0D5ED; background-color: #EDF3FA; overflow: auto; width:100%;">PEAR.php		http://pear.php.net/package/PEAR/download
Mail.php		http://pear.php.net/package/Mail/download
Mail/mail.php		http://pear.php.net/package/Mail/download
Mail/null.php		http://pear.php.net/package/Mail/download
Mail/RFC822.php		http://pear.php.net/package/Mail/download
Mail/sendmail.php	http://pear.php.net/package/Mail/download
Mail/smtp.php		http://pear.php.net/package/Mail/download
Net/SMTP.php		http://pear.php.net/package/Net_SMTP/download
Net/Socket.php		http://pear.php.net/package/Net_Socket/download</pre>
<p>پس از حصول اطمینان از نصب بسته های الحاقی ، شما توسط کد PHP زیر میتوانید به SMTP 
Server وصل شده و ایمیل قانونی و مطمئن ارسال نمائید:</p>
<pre class="php" style="color: #000066; border: 1px solid #C0D5ED; background-color: #EDF3FA; overflow: auto; width:100%;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #b1b100;">require_once</span> <span style="color: #ff0000;">&quot;Mail.php&quot;</span>;
&nbsp;
<span style="color: #0000ff;">$from</span> = <span style="color: #ff0000;">&quot;Sandra Sender &lt;sender@nabi.ir&gt;&quot;</span>; <span style="color: #808080; font-style: italic;">//نام و ایمیل ارسال کننده</span>
<span style="color: #0000ff;">$to</span> = <span style="color: #ff0000;">&quot;Ramona Recipient &lt;recipient@nabi.ir&gt;&quot;</span>; <span style="color: #808080; font-style: italic;">//نام و ایمیل دریافت کننده</span>
<span style="color: #0000ff;">$subject</span> = <span style="color: #ff0000;">&quot;Hi!&quot;</span>; <span style="color: #808080; font-style: italic;">//موضوع ایمیل</span>
<span style="color: #0000ff;">$body</span> = <span style="color: #ff0000;">&quot;Hi,<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>How are you?&quot;</span>; <span style="color: #808080; font-style: italic;">//متن ایمیل ارسالی</span>
&nbsp;
<span style="color: #0000ff;">$host</span> = <span style="color: #ff0000;">&quot;mail.example.com&quot;</span>; <span style="color: #808080; font-style: italic;">//آدرس میل سرور</span>
<span style="color: #0000ff;">$username</span> = <span style="color: #ff0000;">&quot;smtp_username&quot;</span>; <span style="color: #808080; font-style: italic;">//نام کاربری میل سرور</span>
<span style="color: #0000ff;">$password</span> = <span style="color: #ff0000;">&quot;smtp_password&quot;</span>; <span style="color: #808080; font-style: italic;">//کلمه عبور میل سرور</span>
&nbsp;
<span style="color: #0000ff;">$headers</span> = <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'From'</span> =&gt; <span style="color: #0000ff;">$from</span>,
  <span style="color: #ff0000;">'To'</span> =&gt; <span style="color: #0000ff;">$to</span>,
  <span style="color: #ff0000;">'Subject'</span> =&gt; <span style="color: #0000ff;">$subject</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0000ff;">$smtp</span> = <a href="http://www.php.net/mail"><span style="color: #000066;">Mail</span></a>::<span style="color: #006600;">factory</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'smtp'</span>,
  <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'host'</span> =&gt; <span style="color: #0000ff;">$host</span>,
    <span style="color: #ff0000;">'auth'</span> =&gt; <span style="color: #000000; font-weight: bold;">true</span>,
    <span style="color: #ff0000;">'username'</span> =&gt; <span style="color: #0000ff;">$username</span>,
    <span style="color: #ff0000;">'password'</span> =&gt; <span style="color: #0000ff;">$password</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #0000ff;">$mail</span> = <span style="color: #0000ff;">$smtp</span>-&gt;<span style="color: #006600;">send</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$to</span>, <span style="color: #0000ff;">$headers</span>, <span style="color: #0000ff;">$body</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>PEAR::<span style="color: #006600;">isError</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$mail</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
  <a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;&lt;p&gt;&quot;</span> . <span style="color: #0000ff;">$mail</span>-&gt;<span style="color: #006600;">getMessage</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> . <span style="color: #ff0000;">&quot;&lt;/p&gt;&quot;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">//پیغام خطای احتمالی</span>
 <span style="color: #66cc66;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#123;</span>
  <a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;&lt;p&gt;Message successfully sent!&lt;/p&gt;&quot;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">//پیغام صحت ارسال ایمیل</span>
 <span style="color: #66cc66;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre>
<p>کد بالا نیاز به توضیح  ندارد و کاملاً واضح است. ضمن اینکه توضیحات برخی 
خطوط در جلوی آنها نوشته شده است.</p>
<p>یک نکته هم بد نیست متذکر بشوم و آن اینکه این روش جلوی ارسال اسپم را نمیگیرد، و شما از هر راه و روشی برای ارسال ایمیل استفاده کنید، نهایتاً کاربر با قرار دادن آن کدها در یک حلقه for میتواند ایمیلهای زیادی را در مدت کوتاهی ارسال کند و این یعنی اسپم! یا حتی در صورتی که متغییر ایمیل مربوط به شخص دریافت کننده را از طریق پارامتر های ورودی و از url بصورت get دریافت کند، آن وقت است که url حکم یک exploit را خواهد داشت و اشخاص دیگر با قرار دادن آن url در حلقه میتوانند از روی سرور های دیگر ولی توسط سرور شما به هر کجا اسپم ارسال کنند. پس این کد تنها کنترل مدیران بر روی ایمیل های ارسالی از طرف سرور را افزایش خواهد داد و احتمال دریافت در inbox را بسیار بالاتر خواهد برد. یکی از روشهای مقابله با مشکلات نامبرده استفاده از کد امنیتی می باشد. </p>
<p>امیدوارم مفید بوده باشد. در مقاله بعد، در مورد ارسال ایمیل های قانونی پیشرفته 
با امکان ارسال بصورت html ، پیوست فایل به ایمیل و 
تعیین دریافت رسید ایمیل و ... صحبت خواهیم کرد.</p>
<p>+ کد این مقاله اقتباسی بود از
[ 
<a target="_blank" href="http://email.about.com/od/emailprogrammingtips/qt/et073006.htm">اینجا</a> ] 
بعلاوه کاستی و افزودنی های مجاز اینجانب.</p>                ]]></content:encoded>
      </item>
      <item>
        <guid>http://weblog.nabi.ir/post-8.html</guid>
        <title>اوبونتو به دستم من هم رسید</title>
        <link>http://weblog.nabi.ir/post-8.html</link>
        <comments>http://weblog.nabi.ir/comment-8.html#comments</comments>
        <pubDate>Sat, 30 Jun 2007 19:43:10 GMT</pubDate>
        <dc:creator>نبی</dc:creator>
        <category>لینوکس</category>
                        <content:encoded><![CDATA[
        <div class="img_left"><img alt="ubuntu" title="ubuntu" src="uploads/images/ubuntulogo.png" width="202" height="55" /></div>
<p>امروز که از خواب پا شدم دیدم یه بسته برام اومده که همش روش خارجی نوشته ! آدرسش 
که میگفت از هلند اومده، شماره تلفن هاش مال آفریقای جنوبی بود، یه
UK هم اون وسط به چشم میخورد، بالاخره نفهمیدیم از کجا 
اومده! به صورت درشت تر هم نوشته 
شده بود <strong>ubuntu</strong>,... </p>
<div class="img_right">
<a target="_blank" href="uploads/images/ubuntu_post.jpg">
<img alt="تصویر بسته ارسالی اوبونتو" title="تصویر بسته ارسالی اوبونتو" src="uploads/images/ubuntu_post_small.jpg" width="120" height="119" /></a></div>
<div class="img_center">
<a target="_blank" href="uploads/images/ubuntu_cd.jpg">
<img alt="تصویر سی دی اوبونتو" title="تصویر سی دی اوبونتو" src="uploads/images/ubuntu_cd_small.jpg" width="205" height="119" /></a></div>
<p>یادم اومد که چند وقت پیش حدود 30 روز پیش در 1 جون، در وبلاگ دوست خوبم آقای<a target="_blank" href="http://weblog.alvanweb.com"> 
مرتضی الوانی</a> مطلبی خوندم در مورد<a target="_blank" href="http://weblog.alvanweb.com/2007/05/15/i-received-ubuntu-cds/"> 
دریافت توزیعی از لینوکس به اسم اوبونتو</a> و از محاسن اون گفتند و گفتند که 
دریافت این توزیع به صورت رایگان است و علاوه بر امکان دون لود رایگان، امکان دریافت از 
طریق پست به صورت رایگان هم وجود دارد. و ایشون هم به همین نحو اون رو دریافت کرده 
بودند. ما هم چشممون رو بستیم و تیری توی تاریکی گفتیم سنگ مفت گنجیشک مفت، بزار 
فرم رو پر کنیم ببینیم چجوری ها میشه.</p>
<p>از اون طرف هم چون چند وقتی بود که به سمت لینوکس متمایل شده بودم و توزیعی از 
لینوکس به اسم <a target="_blank" href="http://www.slax.org">
Slax</a> با حجم حدود 190 مگ رو دون لود کرده بودم اون هم با خط دایل آپ! و از طرف 
دیگه هم با گرفتن سرور با سیستم عامل لینوکس توزیع 
<a target="_blank" href="http://www.centos.org">CentOS</a> به نوعی نیاز 
به آشنایی بیشتر با خانواده لینوکس رو احساس کردم، این بود که بدم نمی اومد توزیع 
های دیگر رو هم امتحان کنم. این چنین شد که بعد از خوندن اون مطلب در وبلاگ مذکور، 
بعد از پر کردن فرم درخواست اوبونتو سعی در دون لود کردن اون هم کردم، حجمش 
بالای 600 مگابایت بود و البته در طی چندین روز حدود 40 مگابایت اون رو دونلود کرده 
بودم. اما الان دیگه کنسلش کردم! چون همون طور که گفتم سی دی اصل اون رو به صورت 
مجانی برام ارسال کردند! </p>
<p>بر روی پاکت سی دی توصیه شده که سی دی رو به صورت رایگان کپی کنید و در اختیار 
دوستانتون قرار بدید! ضمناً بلافاصله پس از دریافت سی دی، تنها کاری که از دستم بر 
می اومد این بود که از طریق ایمیل ازشون تشکر کنم و اون رو اینجا معرفی کنم تا شاید 
به نوعی باعث معرفی و انتشار بیشتر این سیستم عامل بشم. این حداقل کاری بود که از 
دستم ساخته است.</p>
<p>همون طور که آقای الوانی هم در وبلاگشون نوشتند در پاکت سی دی چند عدد لیبل با 
نام ubuntu با شعار linux for human 
beings هم وجود داره. هنوز فرصت نکردم خیلی باهاش کار کنم... شاید در آینده 
درموردش بیشتر نوشتم.<br />
جالب اینجاست که مادرم که باور نمیکرد یه بسته مجانی از اون ور آب 
رسیده باشه، همش اصرار میکرد خوب داخلش رو نگاه کنید شاید صورت حسابی چیزی توش باشه 
!!! ;-)</p>
<p>به نقل از سایت فارسی اوبونتو: "اوبونتو یک واژه قدیمی آفریقایی، به معنای
'انسانیت با دیگران' و یا
'من مثل خودم هستم، چون ما مثل خودمان هستیم'. 
توزیع اوبونتو گنو لینوکس، روح و معنای واژه اوبونتو را در کالبد دنیای نرم افزار 
می دمد."</p>
<br />
<p>چند لینک مرتبط:</p>
<p><a target="_blank" href="http://www.ubuntu.com/">سایت رسمی اوبونتو</a></p>
<p><a target="_blank" href="http://www.canonical.com/">سایت Canonical شرکت ارسال 
کننده اوبونتو</a></p>
<p><a target="_blank" href="https://shipit.ubuntu.com/">فرم سفارش دریافت اوبونتو</a></p>
<p>
<a target="_blank" href="http://www.thecodingstudio.com/opensource/linux/screenshots/index.php">
مشاهده تصاویر میزکار خانواده اوبونتو</a></p>
<p><a target="_blank" href="http://www.ubuntu.ir/">سایت فارسی اوبونتو</a></p>
<p><a target="_blank" href="http://www.fullcirclemagazine.org/">یک مجله با موضوع 
اوبونتو</a></p>                ]]></content:encoded>
      </item>
      <item>
        <guid>http://weblog.nabi.ir/post-7.html</guid>
        <title>چه زود Page Rank در گوگل 3 شد!</title>
        <link>http://weblog.nabi.ir/post-7.html</link>
        <comments>http://weblog.nabi.ir/comment-7.html#comments</comments>
        <pubDate>Sat, 19 May 2007 04:03:58 GMT</pubDate>
        <dc:creator>نبی</dc:creator>
        <category>مطالب روزانه</category>
                        <content:encoded><![CDATA[
        خیلی جالبه با اینکه فقط حدود 3 ماه از تأسیس این سایت میگذره و خیلی هم کم بروز میشه، بازدید آنچنانی هم نداشته چون تبلیغی صورت نگرفته. ولی Page Rank سایت در گوگل به عدد 3 رسیده !<br />
<br />
راستی چرا ؟!<br />
<br />
پ.ن: به خدا توی گوگل پارتی ندارم !!! ;-)<br />
<br />
                ]]></content:encoded>
      </item>
      <item>
        <guid>http://weblog.nabi.ir/post-6.html</guid>
        <title>سه روش برای مخفی سازی ایمیل از دست روبوت های ایمیل یاب</title>
        <link>http://weblog.nabi.ir/post-6.html</link>
        <comments>http://weblog.nabi.ir/comment-6.html#comments</comments>
        <pubDate>Mon, 09 Apr 2007 15:31:06 GMT</pubDate>
        <dc:creator>نبی</dc:creator>
        <category>طراحی وب</category>
                        <content:encoded><![CDATA[
        <p>احتمالاً شما هم با مشکل ایمیل های ناخواسته دست و پنجه نرم میکنید. حتماً 
میدانید که روبوت های ایمیل یابی وجود دارند که صفحات وب را کاوش میکنند و از درون کدهای 
html سایت شما، رشته های ایمیل را خوانده و استخراج میکنند و به آنها ایمیلهای تبلیغاتی 
ارسال میکنند.<br />
حتماً شما هم در قسمت 'تماس با ما' سایتتان، ایمیل آدرستان را به صورت یک لینک قرار 
داده اید.
اگر به همین سادگی اینکار را کرده باشید مطمئن باشید کار روبوت های ایمیل یاب را 
بسیار ساده کرده اید. مخصوصاً اگر ایمیل آدرس را بعد از متد 
:mailto بکار برده باشید.<br />
پس راه حل چیست؟<br />
در این جا  به ارائه سه راه حل خواهیم پرداخت.</p>
<br />
<p>راه حل اول: <b>قالب شکنی</b><br />
حداقل یک کارکتر، سپس کارکتر @، مجدداً حداقل یک کارکتر، 
علامت نقطه و مجدداً حداقل یک کارکتر! این میتواند قالب یک ایمیل معمولی باشد. همان 
طور که من و شما این مسئله را میدانیم، روبوت ها نیز به این مسئله آگاه هستند. پس 
آنها در ابتدا به دنبال اینگونه قالب های ثابت میگردند. کاری که در اینجا مفید به 
نظر میرسد قالب شکنی است. یعنی بجای اینکه ایمیل خود را در صفحه وب به صورت مثلاً
info@yoursite.com بکار ببریم، آن را بصورت
info[at]yoursite[dot].com یا هر قالب دیگری که کار 
روبوت ها را مشکل خواهد ساخت بکار ببریم. حتی میتوان بین کارکترهای ایمیل از فاصله 
بدین صورت i n f o @ y o u r s i t e . c o m بکار برد 
که بی تأثیر نخواهد بود.<br />
این روش دیر یا زود توسط روبوت ها قابل کشف است! و شاید از دید روبوتهای کوچک مخفی 
بماند اما روبوت های هوشمند و بزرگی نیز هستند که اینگونه قالب شکنی ها را خوب 
میشناسند.</p>
<p>راه حل دوم: <b>استفاده از
تصویر<br />
</b>راه حل دیگری که به نظر میرسد، استفاده از تصویر بجای متن است. برای این منظور 
کافیست توسط نرم افزارهای ویرایش تصویر مانند photoshop 
ایمیل خود را به صورت تصویر تبدیل کرده و آن تصویر را در صفحه وب استفاده کنید. حتی 
میتوان از برنامه های سمت سرور جهت تبدیل ایمیل به تصویر و تولید خودکار تصاویر 
استفاده نمود. این کار زمانی کاربرد بیشتری پیدا میکند که لازم باشد ایمیل از بانک 
اطلاعاتی خوانده شود و در صفحه وب نمایش داده شود. در این حالت استفاده از یک قطعه 
کد به زبان PHP میتواند مفید باشد. برای اینکار کافیست 
ایمیل را از بانک اطلاعاتی و یا هر منبع دیگری استخراج کرده و آن را توسط قطعه کد
PHP که در زیر آمده است به تصویر تبدیل کنید و تصویر 
حاصل را به خروجی ارسال کنید.</p>
<pre class="php" style="color: #000066; border: 1px solid #C0D5ED; background-color: #EDF3FA; overflow: auto; width:100%;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<a href="http://www.php.net/header"><span style="color: #000066;">header</span></a> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Content-type: image/png&quot;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0000ff;">$string</span> = <span style="color: #ff0000;">&quot;spam@mvoncken.nl&quot;</span>;
<span style="color: #0000ff;">$font</span> = <span style="color: #cc66cc;">4</span>;
<span style="color: #0000ff;">$width</span> = ImageFontWidth<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$font</span><span style="color: #66cc66;">&#41;</span> * <a href="http://www.php.net/strlen"><span style="color: #000066;">strlen</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$string</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0000ff;">$height</span> = ImageFontHeight<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$font</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0000ff;">$im</span> = @imagecreate <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$width</span>,<span style="color: #0000ff;">$height</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0000ff;">$background_color</span> = imagecolorallocate <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$im</span>, <span style="color: #cc66cc;">255</span>, <span style="color: #cc66cc;">255</span>, <span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0000ff;">$text_color</span> = imagecolorallocate <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$im</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>;
imagestring <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$im</span>, <span style="color: #0000ff;">$font</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #0000ff;">$string</span>, <span style="color: #0000ff;">$text_color</span><span style="color: #66cc66;">&#41;</span>;
imagepng <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$im</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre>
<p>در صورتی که تصاویر تولید شده را با زمینه یا رنگهای متفاوت ایجاد کنید و یا از 
افکت هایی جهت به هم ریختگی نوشته روی تصویر استفاده 
کنید، ضریب اطمینان کار بالا تر رفته و میتوان بیشتر به پنهان سازی ایمیل از دید 
روبوت ها اطمینان داشت.<br />
مشکلی که این روش دارد این است که به دلیل استفاده از تصویر انعطاف پذیری در طراحی 
پایین آمده و دست طراح در استفاده از ایمیل به صورت یک تصویر بسته تر است. همچنین 
این احتمال وجود دارد که کاربر نمایش تصاویر توسط مرورگر خود را خاموش کرده باشد که 
این موجب نمایش داده نشدن ایمیل خواهد شد.</p>
<p>راه حل سوم: <b>استفاده از جاوا اسکریپت<br />
</b>obfuscate به طور خلاصه به معنی به هم ریختگی کدها می باشد. اینکار خوانایی 
کدها را بسیار مشکل میکند اما در نتیجه و خروجی کد تأثیری ندارد. در این روش بجای 
استفاده مستقیم ایمیل در صفحه وب، با کمک گرفتن از جاوا اسکریپت آن را به هم میریزیم 
تا تنها توسط همان کد جاوا قابل نمایش در خروجی باشد. برای اینکار برنامه های 
بسیاری در اینترنت وجود دارد که یکی از بهترین برنامه هایی که برای اینکار در 
اینترنت یافتم برنامه
<a target="_blank" href="http://www.automaticlabs.com/products/enkoderform">Enkoder</a> 
محصول سایت <a target="_blank" href="http://www.automaticlabs.com/">
automaticlabs.com</a> می باشد. این برنامه تحت وب است. با مراجعه به سایت با فرمی 
مواجه میشوید که جزئیات لینک ایمیل خود را دریافت کرده و به شما کد جاوا اسکریپتی 
تحویل خواهد داد که سر در آوردن از آن تقریباً ممکن نیست. این کد را براحتی در صفحه 
وب خود میتوانید استفاده نمائید. نمونه ای از کد تولید شده توسط این نرم افزار بدین 
صورت می باشد:</p>
<pre class="javascript" style="color: #000066; border: 1px solid #C0D5ED; background-color: #EDF3FA; overflow: auto; width:100%;">&nbsp;
&lt;script type=<span style="color: #3366CC;">&quot;text/javascript&quot;</span>&gt;
<span style="color: #009900; font-style: italic;">/* &lt;![CDATA[ */</span>
<span style="color: #003366; font-weight: bold;">function</span> hivelogic_enkoder<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><span style="color: #003366; font-weight: bold;">var</span> kode=
<span style="color: #3366CC;">&quot;kode=<span style="color: #000099; font-weight: bold;">\&quot;</span>)''(nioj.)(esrever.)''(tilps.edok=edok;<span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\&quot;</span>kode=<span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\&quot;</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span>oked<span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span>&quot;</span>+
<span style="color: #3366CC;">&quot;<span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\&quot;</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span>=rnhg%@,&gt;**,=04wkqjohh1rg+nDwdufkh1rgBnwkqjohh1rg?n+l{.h@rg<span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span>&quot;</span>+
<span style="color: #3366CC;">&quot;<span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span>n00,0+lDwdufkh1rg.n4,l.w+uDkd1fghnr.@~{5,.@&gt;l4,k0jwhq1oghnr?+&gt;&quot;</span>+
<span style="color: #3366CC;">&quot;l@3+lru&gt;i**{@_&gt;@%g{nh,r0<span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span>00f+hgrFudkFprui1jqluwV@.{&gt;;54@.f,&quot;</span>+
<span style="color: #3366CC;">&quot;3?f+il&gt;60,l+wDhgrFudkf1hgrn@f~,..l&gt;kwjqho1hgrn?l&gt;3@l+uri&gt;**@{&gt;_A_%(_g/BDo5&quot;</span>+
<span style="color: #3366CC;">&quot;sr&amp;gsK1<span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span>77D(brogsK1<span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span>77(&amp;Csrbok&amp;zbzo(oxg44h}t&quot;</span>+
<span style="color: #3366CC;">&quot;C}i}pz{kEhuy4sziyk{o<span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span>x71u7Fulto@uzrogs(bClkxn&amp;gB(.kzox}4ztk&quot;</span>+
<span style="color: #3366CC;">&quot;s{iuj_@_%g_nh_r@%ghnr&gt;%rnhgn@gr1hsvlo+w**1,huhyvu+h1,rmql*+,*;<span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span>+
<span style="color: #3366CC;">&quot;<span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span>=x''f;roi(0=i;k&lt;do.eelgnhti;++{)=cokedc.ahCrdoAe(t)i3-i;(f&lt;c)0+c1=82x;&quot;</span>+
<span style="color: #3366CC;">&quot;=+tSirgnf.orCmahCrdo(e)ck}do=ex<span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\&quot;</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span>;x='';for(i=0;i&lt;(kode.length-1);i+=&quot;</span>+
<span style="color: #3366CC;">&quot;2){x+=kode.charAt(i+1)+kode.charAt(i)}kode=x+(i&lt;kode.length?kode.charAt(ko&quot;</span>+
<span style="color: #3366CC;">&quot;de.length-1):'');<span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\&quot;</span>=edok<span style="color: #000099; font-weight: bold;">\&quot;</span>;kode=kode.split('').reverse().join('')&quot;</span>
;var i,c,x;while<span style="color: #66cc66;">&#40;</span><span style="color: #000066; font-weight: bold;">eval</span><span style="color: #66cc66;">&#40;</span>kode<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;<span style="color: #66cc66;">&#125;</span>hivelogic_enkoder<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #009900; font-style: italic;">/* ]]&gt; */</span>
&lt;/script&gt;
&nbsp;</pre>
<p>در صورتی که ایمیل شما ثابت می باشد و از منبع بانک اطلاعاتی خاصی آن را استخراج 
نمیکنید، بنده این روش را پیشنهاد میکنم اما چنانچه ایمیل از منبعی خاصی استخراج 
میشود باید به دنبال کد سمت سروری که این کد جاوا اسکریپت را تولید میکند بگردید تا 
ایمیل را از آن فیلتر عبور دهید.</p>                ]]></content:encoded>
      </item>
      <item>
        <guid>http://weblog.nabi.ir/post-5.html</guid>
        <title>امسال ساله چیه ...؟!</title>
        <link>http://weblog.nabi.ir/post-5.html</link>
        <comments>http://weblog.nabi.ir/comment-5.html#comments</comments>
        <pubDate>Wed, 21 Mar 2007 14:07:28 GMT</pubDate>
        <dc:creator>نبی</dc:creator>
        <category>مطالب روزانه</category>
                        <content:encoded><![CDATA[
        <p align="center">سال و فال و مال و حال و اصل و نسل و تخت و بخت&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;بــادت انـدر شهریــاری بـرقــرار و بــر دوام</p>
<p align="center">ســال خـــرم فـــال نیکــو مــال وافــر حــال خـــوش&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
اصل ثابت نسل باقی تخت عالی بخت رام</p>
<p align="left">حافظ</p>
<p>یادش بخیر! یادم میاد فکر کنم کلاس سوم راهنمایی بودم، حدود 14 سالم بود، یه معلمی داشتیم به نام 
آقای &quot;چوبینه&quot;، این معلم نازنین و البته سخت گیر، همه چیز تدریس میکرد، تاریخ، جغرافی، 
مدنی، دینی، قرآن، ادبیات، دستورزبان، حرفه، نقاشی و خطاطی، پرورشی و... انصافاً بر روی 
تمامی مباحث هم اشراف کامل داشت و خیلی بالاتر از سطح کتابها درس میداد و در همون 
حد هم ازمون درس میخواست. میگفت من کتابها رو قبول ندارم و به قدری متفرقه و خارج 
از کلاس درس میداد که ما هم مجبور میشدیم برای نت برداری، از حاشیه کتابهامون استفاده 
کنیم و همیشه کتابهامون سیاه بود و آخر هم جا کم می آوردیم! یادش بخیر...<br />
لازمه این رو هم اضافه کنم که ایشون ناراحتی قلبی داشتند و سنشون تقریباً بالا بود، 
و من ازشون خبری ندارم، به همین دلیل در همینجا برای ایشون و همه معلمین عزیزم 
آرزوی سلامتی دارم.<br />
میخواستم یه چیز دیگه بگم که این حرفا پیش اومد... <br />
یادم نیست بحث و صحبت چطوری به اونجا کشید که آقا چوبینه رفت پای تابلو و بهمون یه 
فرمول جالب رو یاد داد، فرمولی که اون لحظه برای من بسیار جالب به نظر اومد و مطمئن بودم 
که یه جایی این فرمول بدرد میخوره، اما اون روز هیچوقت فکر نمیکردم شاید سوژه 
وبلاگم در آینده باشه ! آخه اون موقع حتی نمیدونستم کامپیوتر خوردنیه یا پوشیدنیه 
...! الان هم که تو اینترنت جستجو کردم هیچ جا همچین چیزی رو ندیدم، خلاصه یه فرمول 
بسیار جالب و تک! که فکر میکنم دفعه اول دارید اینجا میخونید. بزارید پای حساب عیدی 
من به شما...<br />
فرمول مربوط میشه به پیدا کردن اینکه امسال و یا هر سال شمسی دیگه، سال چیه ؟!<br />
برای اینکار ابتدا سال مورد نظر رو منهای 6 میکنیم. عدد حاصل رو تقسیم بر 12 میکنیم. 
سپس باقی مانده تقسیم رو بر روی جدول زیر برده و حیوان مورد نظر رو از روی جدول 
پیدا میکنیم.</p>
	<table width="100%" cellspacing="0" cellpadding="0" class="table1">
		<tr>
			<td>1</td>
			<td>2</td>
			<td>3</td>
			<td>4</td>
			<td>5</td>
			<td>6</td>
			<td>7</td>
			<td>8</td>
			<td>9</td>
			<td>10</td>
			<td>11</td>
			<td>0</td>
		</tr>
		<tr>
			<td>موش</td>
			<td>گاو</td>
			<td>پلنگ</td>
			<td>خرگوش</td>
			<td>نهنگ</td>
			<td>مار</td>
			<td>اسب</td>
			<td>گوسفند</td>
			<td>میمون</td>
			<td>مرغ</td>
			<td>سگ</td>
			<td>خوک</td>
		</tr>
	</table>
<p>به عنوان مثال، امسال سال 1386 شمسی است. پس 1380 = 6 - 1386 حال باقی مانده تقسیم 
عدد 1380 بر 12 رو بدست می آوریم، که میشه عدد صفر. عدد صفر در جدول معادل حیوان 
&quot;خوک&quot; است. پس امسال سال خوک است. به همین راحتی.</p>
<p>با اینکه حدود 12 سال از این داستان میگذره اما از اونجا که من آشغال جمع کن 
خوبی هستم! هنوز هم اون تکه کاغذی که از پای تابلو این فرمول رو روش یادداشت کردم 
رو نگه داشتم. که تصویر اون رو در زیر میبینید.<br />
شاید همین به اصطلاح آشغال های قدیمی باشند که امروز عتیقه به حساب میان!</p>
<div class="img_center"><a target="_blank" href="uploads/images/nourooz_animal_larg.jpg">
<img border="0" src="uploads/images/nourooz_animal_small.jpg" width="450" height="185" alt="ساله چیه؟" title="ساله چیه؟" /></a></div>
<p>حالا خوشتون اومد...؟!<br />
نکته اینکه در تصویر بالا تقسیم رو اشتباه حساب کردم، تو رو خدا به ریاضیاتم شک 
نکنید ها ! به خدا من نمره ریاضی هیچوقت کمتر 20 نشدم، شما فکر کنید حول شده بودم 
دیگه... ;-)</p>
<p>امروز روز اول سال 1386 است. نوروز 86 رو خدمت تمام دوستان خوبم تبریک عرض میکنم و برای همه آرزوی سلامتی 
دارم.</p>
<br />
                ]]></content:encoded>
      </item>
      <item>
        <guid>http://weblog.nabi.ir/post-4.html</guid>
        <title>از Gmail به عنوان يك درايو استفاده كنيد!</title>
        <link>http://weblog.nabi.ir/post-4.html</link>
        <comments>http://weblog.nabi.ir/comment-4.html#comments</comments>
        <pubDate>Sun, 18 Mar 2007 14:55:35 GMT</pubDate>
        <dc:creator>نبی</dc:creator>
        <category>اینترنت</category>
                        <content:encoded><![CDATA[
        روز به روز بر تعداد 
مشتاقان Gmail اضافه مي‌شود و گوگل هم در پاسخ به اين استقبال، دائم به 
امكانات خود مي‌افزايد. در طول چند ماه گذشته خبرهاي زيادي راجع به 
افزايش ظرفيت Gmail خوانده‌ايد. <br />
شركت‌هاي رقيب گوگل مدعي بودند كه اين افزايش ظرفيت يك ترفند تبليغاتي 
است و گوگل مي‌داند كه كاربران نمي‌توانند از اين همه فضاي Gmail 
استفاده كنند. اما گوگل در پاسخ مي‌گويد كه كاربران مي‌توانند از اين 
فضا به عنوان يك مكان براي ذخيره فايل‌هاي خود استفاده كنند. مهم‌ترين 
مزيت اين مسأله اين است كه شما مي‌توانيد به فايل‌هاي ذخيره شده در اين 
درايو از پشت هر كامپيوتري كه به اينترنت متصل است، دسترسي داشته 
باشيد، مانند يك حافظه كوچك كه هميشه همراه شماست.<br />
<br />
اگر بخواهيد فايل‌هاي خود را در Gmail اكانت خود ذخيره كنيد، بايد 
آن‌ها را از طريق يك آدرس E-mail ديگر به آن ارسال كنيد، به عبارت ديگر 
بايد فايل‌هاي مورد نظرتان را به نامه Attach كنيد و سپس آن را براي 
Gmail بفرستيد.<br />
اين كار كمي وقت‌گير و پر دردسر است، براي همين عده‌اي تصميم گرفتند تا 
با نوشتن برنامه‌هايي انجام اين كار را آسان‌تر كنند. ظاهرا ايده اوليه 
اين برنامه را آقاي Richard Jones براي سيستم عامل لينوكس ارائه داده 
است، اما در حال حاضر چند برنامه براي اين كار در ويندوز وجود دارد.<br />
از جمله برنامه‌هاي خوب مي‌توان به Gmail Drive از آقاي Bjarke Vikose 
اشاره كرد.<br />
مي‌توانيد آخرين نسخه اين برنامه را از آدرس: 
<a target="_blank" href="http://www.viksoe.dk/code/gmail.htm">http://www.viksoe.dk/code/gmail.htm</a> &nbsp;دريافت كنيد. Gmail Drive به 
صورت فايل Zip شده با حجم 121 كيلوبايت است و پس از دريافت و باز كردن 
آن با برنامه‌هاي مخصوص Unzip، (يكي از اين برنامه‌ها در بخش دريافت 
فايل موجود است) كافي است روي Setup كليك كنيد تا اجرا شود.<br />
پس از اجراي فايل Setup، اگر پنجره My Computer را باز كنيد، خواهيد 
ديد كه يك درايو به نام Gmail Drive به درايوهاي قبلي اضافه شده است. 
حجم اين درايو به اندازه ظرفيت Gmail يعني حدود 2 گيگابايت است و شما 
مي‌توانيد فايل‌هاي مورد نظر خود را به راحتي درون آن كپي كرده و يا از 
آن كپي كرده و يا از آن پاك كنيد. دقت داشته باشيد Gmail Drive يك 
درايو مجازي است كه در حقيقت به عنوان يك لينك به درون Gmail Account 
شما عمل مي‌كند، بنابراين زماني Online نيستيد نمي‌توانيد فايل‌هاي خود 
را به اين درايو كپي كنيد.<br />
براي كار كردن با اين برنامه علاوه بر داشتن يك اكانت در Gmail، به 
سيستم عامل ويندوز XP نياز داريد. مرورگرهاي اينترنت اكسپلورر از نگارش 
5/5 به بعد، NetScape نگارش 1/7 به بعد، موزيلا از 4/1 به بعد و فاير 
فاكس 8/0 نيز به خوبي از اين برنامه پشتيباني مي‌كنند.<br />
بعد از كپي كردن فايل‌ها به اين درايو مجازي، اگر به آدرس Gmail خود 
Login كنيد، تعدادي E-mail حاوي Attachment خواهيد ديد كه در قسمت 
Subject ، نام و حجم آن فايل‌ها وجود دارد.<br />
نكته مهم ديگر راجع به اين برنامه اين است كه در حالت عادي با اغلب 
سرويس‌هاي E-mail نمي‌توانيد بيش از 10 مگابايت فايل Attach كنيد. اما 
با استفاده از Gmail Drive مي‌توان به اندازه حجم خالي Gmail Box فايل 
كپي كرد و اين برنامه به صورت خودكار آن را به Gmail Account ارسال 
مي‌كند. به اين ترتيب ديگر محدوديت 10 مگابايت را نخواهيد داشت. همچنين 
اگر فايلي از درون اين درايو حذف شود، به طور خودكار از اكانت Gmail 
پاك خواهد شد.<br />
اين برنامه بسيار جالب، كاربردي و مفيد است و نصب آن را به شما پيشنهاد 
مي‌كنيم. اگر پس از نصب آن، از برنامه راضي نبوديد، مي‌توانيد به راحتي 
از Control Panel وارد add/Remove Programs شده و Gmail Drive Shell 
Extension را Remove كنيد.<br />
منبع: مجله اينترنت<br />
&nbsp;
<br />
                ]]></content:encoded>
      </item>
      <item>
        <guid>http://weblog.nabi.ir/post-3.html</guid>
        <title>چون حوصله نداشتم این وبلاگ رو ساختم !</title>
        <link>http://weblog.nabi.ir/post-3.html</link>
        <comments>http://weblog.nabi.ir/comment-3.html#comments</comments>
        <pubDate>Sat, 24 Feb 2007 03:33:33 GMT</pubDate>
        <dc:creator>نبی</dc:creator>
        <category>مطالب روزانه</category>
                        <content:encoded><![CDATA[
        <p>ببخشید دیر آپ میکنم ، خب شروع کاره یکمی دستم کنده، یواش یواش راه میافتم ;-)<br />
<br />
<a target="_blank" href="http://forum.majidonline.com/showthread.php?t=65705">
بحث و جدل و البته محبت دوستان در مورد ساختن این وبلاگ زیاد بوده.</a><br />
دوستان میگن بابا حوصله داری این همه وقت گذاشتی روی این وبلاگ...<br />
در جواب فقط این دو جمله رو میگم:<br />
<br />
کسی که یه کاری رو دوست نداره، باید حوصله داشته باشه تا بتونه اون کار رو انجام 
بده.<br />
ولی کسی که کاری رو دوست داره، هر وقت که حوصله نداشته باشه اون کار رو انجام میده.<br />
<br />
و ماجرای من و ساختن این وبلاگ جزو دسته دومه. یعنی چون حوصله نداشتم این وبلاگ رو 
ساختم !!!<br />
 </p>
<br />
                ]]></content:encoded>
      </item>
      <item>
        <guid>http://weblog.nabi.ir/post-2.html</guid>
        <title>نمایش خروجی html شما در سایتهای دیگر توسط JavaScript و PHP</title>
        <link>http://weblog.nabi.ir/post-2.html</link>
        <comments>http://weblog.nabi.ir/comment-2.html#comments</comments>
        <pubDate>Tue, 13 Feb 2007 01:00:56 GMT</pubDate>
        <dc:creator>نبی</dc:creator>
        <category>پی اچ پی</category>
                        <content:encoded><![CDATA[
        <p>نگران سوژه برای نوشتن بودم .<br />
تا اینکه <a target="_blank" href="http://www.1nafar.com">فرحان</a> از دوستان خوبم یه سوال پرسید که برام شد سوژه و بد ندونستم در این 
باره بنویسم.<br />
<br />
حتماً دقت کرده اید سایتهایی مثل <a target="_blank" href="http://www.netsups.com">
netsups</a> ، <a target="_blank" href="http://www.persianstat.com">persianstat</a>  و یا 
<a target="_blank" href="http://www.webstats4u.com">webstats4u</a> و امثالهم در 
سرویس هایی که ارائه میدهند، اغلب یک کد جاوا اسکریپت در اختیار شما قرار میدهند که با 
قرار کد دادن آن در سایتتان آمار بازدید و یا فرم های مختلف لابلای کدهای سایتتان 
ظاهر میشود.<br />
شاید شما یک <a target="_blank" href="http://www.gamesara.com">سایت فروش سی دی</a> داشته باشید. و بخواهید یک محصول را به طور تصادفی در 
سایتهای دیگر نمایش دهید.  چه راهی به ذهنتان میرسد؟<br />
در همچین مواقعی شاید منطقی ترین راه استفاده از فنآوری
<a target="_blank" href="http://fa.wikipedia.org/wiki/اکس‌ام‌ال">XML</a> 
و البته فرمت معروف
<a target="_blank" href="http://fa.wikipedia.org/wiki/آراس‌اس">RSS</a> باشد. این نوع فایلها 
به تعبیر <a target="_blank" href="http://www.nabi.ir">من</a> و به زبان ساده در واقع  
میشود گفت یک بانک اطلاعاتی کوچک مبتی بر فایل با فرمت و ساختار مشخص و تعریف شده هستند. 
این فایلها میتوانند جدیدترین اطلاعات سایت را برای ارائه به کاربران در خود داشته 
باشند و با هر بار تقاضای کاربر بروز خواهند شد. این فایلها برای خوانده شدن نیاز به برنامه نویسی و کد نویسی  
و تعریف ساختار و قالب نمایشی دارند چرا که اطلاعات درون این فایلها داده های 
خام هستند و ایجاد و ساخت قالب نمایشی به عهده استفاده کننده می باشد. که البته این 
خود مزیت بزرگی محسوب میشود و انعطاف پذیری این تکنولوژی را باعث شده است و شاید همین  مسئله باعث محبوبیت آنها 
نیز شده است.  اما مشکلی که در این میان وجود دارد این است که شاید کاربر 
استفاده کننده دانش برنامه نویسی نداشته باشد و نتواند خروجی این فایلها را تجزیه و 
تحلیل کند و در سایت خود استفاده نماید. پس راه حل چیست ؟!</p>
<br />
<p>راه حل دیگری که برای صورت مسئله فوق الذکر وجود دارد و کاربر نیاز به داشتن هیچ 
دانش برنامه نویسی ندارد، استفاده از یک زبان برنامه 
نویسی Client Side در کنار یک زبان برنامه نویسی 
Server Side برای تولید فایل 
خروجی می باشد. مثل 
JavaScript در کنار PHP . جاوا اسکریپت توانایی این را دارد که کدهای html را 
مستقیماً به خروجی پاس دهد. در این روش تنها کافیست اطلاعات مورد نیاز را توسط php 
از منبع اطلاعات خوانده و اطلاعات را به صورت html طوری در اختیار جاوا اسکریپت 
قرار دهیم که در زمان بارگذاری صفحه، اطلاعات توسط جاوا اسکریپت به خروجی ارسال 
شوند.</p>
<p>پس به زبان ساده میبایستی اسکریپت جاوایی بنویسیم که هر کاربر با اضافه کردن آن 
به سایت و یا وبلاگ خود، با هر بار نمایش صفحه، درست در محل قرار گیری کد جاوا، به 
طور تصادفی یکی از محصولات سایت ما را مشاهده کند. جهت کامل تر شدن مثال، اجازه 
دهید ترتیبی دهیم تا رنگ زمینه فرم خروجی نیز به صورت دستی توسط پارامتری که کاربر 
به روش Get ارسال میکند تعیین شود.</p>
<p>خب دست به کار میشویم.</p>
<p>این بانک اطلاعاتی فرضی ماست :</p>
<pre class="mysql" style="color: #000066; border: 1px solid #C0D5ED; background-color: #EDF3FA; overflow: auto; width:100%;">&nbsp;
<span style="color: #808080; font-style: italic;"># Database: `products_db`</span>
&nbsp;
<span style="color: #993333; font-weight: bold;">CREATE TABLE</span> `products` <span style="color: #66cc66;">&#40;</span>
`id` <span style="color: #aa9933; font-weight: bold;">INT</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span> <span style="color: #aa3399; font-weight: bold;">UNSIGNED</span> <span style="color: #aa3399; font-weight: bold;">NOT NULL</span> <span style="color: #aa3399; font-weight: bold;">AUTO_INCREMENT</span>,
`title` <span style="color: #aa9933; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span> <span style="color: #aa3399; font-weight: bold;">NOT NULL</span> <span style="color: #aa3399; font-weight: bold;">DEFAULT</span> <span style="color: #ff0000;">''</span>,
`comments` <span style="color: #aa9933; font-weight: bold;">TEXT</span> <span style="color: #aa3399; font-weight: bold;">NOT NULL</span>,
`price` <span style="color: #aa9933; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span> <span style="color: #aa3399; font-weight: bold;">NOT NULL</span> <span style="color: #aa3399; font-weight: bold;">DEFAULT</span> <span style="color: #ff0000;">''</span>,
<span style="color: #993333; font-weight: bold;">PRIMARY KEY</span> <span style="color: #66cc66;">&#40;</span>`id`<span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#41;</span> ENGINE=MyISAM <span style="color: #aa3399; font-weight: bold;">DEFAULT</span> <span style="color: #aa3399; font-weight: bold;">CHARSET</span>=latin1;
&nbsp;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> `products` <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span>, <span style="color: #ff0000;">'FIFA 07'</span>, <span style="color: #ff0000;">'محصول شرکت Ea Sport - بدون نياز به ساخت درايو مجازي'</span>, <span style="color: #ff0000;">'3200 تومان'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> `products` <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">2</span>, <span style="color: #ff0000;">'Resident Evil 4'</span>, <span style="color: #ff0000;">'بالاخره رزيدنت اويل 4 هم رسيد، دوستداران اين بازي هيجان انگيز ميدانند که اين بازي با بقيه بازي هاي ترسناک تفاوت زيادي دارد و هنگام بازي کردن مخصوصا نيمه هاي شب هيجان واقعي را احساس خواهيد کرد.'</span>, <span style="color: #ff0000;">'4000 تومان'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> `products` <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">3</span>, <span style="color: #ff0000;">'Need For Speed Carbon'</span>, <span style="color: #ff0000;">'نسخه شماره 4 بازي محبوب جنون سرعت'</span>, <span style="color: #ff0000;">'3200 تومان'</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;</pre>
<p>توسط MySQL یک بانک اطلاعاتی به نام
products_db ایجاد کرده و کدهای بالا را در آن
import نمائید. پس از تعریف و ایجاد بانک اطلاعاتی، یک فایل جدید باز میکنیم و کدنویسی با
PHP را آغاز میکنیم. ابتدا به بانک اطلاعاتی متصل میشویم:</p>
<pre class="php" style="color: #000066; border: 1px solid #C0D5ED; background-color: #EDF3FA; overflow: auto; width:100%;">&nbsp;
<span style="color: #000000; font-weight: bold;">&lt;?PHP</span>
<span style="color: #0000ff;">$db_host</span> = <span style="color: #ff0000;">&quot;localhost&quot;</span>;
<span style="color: #0000ff;">$db_user</span> = <span style="color: #ff0000;">&quot;root&quot;</span>;
<span style="color: #0000ff;">$db_password</span> = <span style="color: #ff0000;">&quot;&quot;</span>;
<span style="color: #0000ff;">$db_name</span> = <span style="color: #ff0000;">&quot;products_db&quot;</span>;
<span style="color: #0000ff;">$conn</span> = <a href="http://www.php.net/mysql_pconnect"><span style="color: #000066;">mysql_pconnect</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$db_host</span>, <span style="color: #0000ff;">$db_user</span>, <span style="color: #0000ff;">$db_password</span><span style="color: #66cc66;">&#41;</span> 
   or <a href="http://www.php.net/die"><span style="color: #000066;">die</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Connection failed: Please try later.&quot;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0000ff;">$db_flag</span> = <a href="http://www.php.net/mysql_select_db"><span style="color: #000066;">mysql_select_db</span></a> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$db_name</span>, <span style="color: #0000ff;">$conn</span><span style="color: #66cc66;">&#41;</span> 
   or <a href="http://www.php.net/die"><span style="color: #000066;">die</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Could not select database:&quot;</span>.<a href="http://www.php.net/mysql_error"><span style="color: #000066;">mysql_error</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;</pre>
<p>یک محصول را به صورت تصادفی از بانک اطلاعاتی استخراج کرده:</p>
<pre class="php" style="color: #000066; border: 1px solid #C0D5ED; background-color: #EDF3FA; overflow: auto; width:100%;">&nbsp;
<span style="color: #0000ff;">$result</span> = <a href="http://www.php.net/mysql_query"><span style="color: #000066;">mysql_query</span></a> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;SELECT * FROM `products` ORDER BY RAND() LIMIT 1&quot;</span><span style="color: #66cc66;">&#41;</span>;
<a href="http://www.php.net/list"><span style="color: #000066;">list</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$id</span>, <span style="color: #0000ff;">$title</span>, <span style="color: #0000ff;">$comments</span>, <span style="color: #0000ff;">$price</span><span style="color: #66cc66;">&#41;</span> = <a href="http://www.php.net/mysql_fetch_array"><span style="color: #000066;">mysql_fetch_array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$result</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;</pre>
<p>حال وجود پارامتر ورودی به عنوان رنگ را چک میکنیم تا در صورت تعریف نشدن رنگ 
توسط کاربر، از رنگ دلخواه به عنوان رنگ پیشفرض استفاده گردد.</p>
<pre class="php" style="color: #000066; border: 1px solid #C0D5ED; background-color: #EDF3FA; overflow: auto; width:100%;">&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/isset"><span style="color: #000066;">isset</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$_GET</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'bg'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span> &amp;&amp; <span style="color: #0000ff;">$_GET</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'bg'</span><span style="color: #66cc66;">&#93;</span> != <span style="color: #ff0000;">&quot;&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
   <span style="color: #0000ff;">$background_color</span> = <span style="color: #ff0000;">&quot;#&quot;</span>.<span style="color: #0000ff;">$_GET</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'bg'</span><span style="color: #66cc66;">&#93;</span>;
<span style="color: #66cc66;">&#125;</span><span style="color: #b1b100;">else</span><span style="color: #66cc66;">&#123;</span>
   <span style="color: #0000ff;">$background_color</span> = <span style="color: #ff0000;">&quot;#EBEFFE&quot;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;</pre>
<p>اکنون همان طور که ذکر شد، آن را در قالب یک کد html بسته به سلیقه خود جدول 
بندی کرده و در اختیار جاوا اسکریپت قرار میدهیم، و البته کد جاوا اسکریپت را نیز 
در اختیار php در قالب یک متغییر، بدین صورت:</p>
<pre class="php" style="color: #000066; border: 1px solid #C0D5ED; background-color: #EDF3FA; overflow: auto; width:100%;">&nbsp;
<span style="color: #0000ff;">$out_html</span> = <span style="color: #ff0000;">&quot;document.write ('&lt;table style=<span style="color: #000099; font-weight: bold;">\&quot;</span>width: 180px; border: 1px solid #000080; background-color: &quot;</span> . <span style="color: #0000ff;">$background_color</span> . <span style="color: #ff0000;">&quot;; font-size: small; font-family: Tahoma;<span style="color: #000099; font-weight: bold;">\&quot;</span> dir=<span style="color: #000099; font-weight: bold;">\&quot;</span>rtl<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;');<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
. <span style="color: #ff0000;">&quot;document.write (' &lt;tr&gt;');<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
. <span style="color: #ff0000;">&quot;document.write (' &lt;td style=<span style="color: #000099; font-weight: bold;">\&quot;</span>text-align: center; color: #FFFFFF; background-color: #000080;<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;&lt;strong&gt;&quot;</span> . <span style="color: #0000ff;">$title</span> . <span style="color: #ff0000;">&quot;&lt;/strong&gt;&lt;/td&gt;');<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
. <span style="color: #ff0000;">&quot;document.write (' &lt;/tr&gt;');<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
. <span style="color: #ff0000;">&quot;document.write (' &lt;tr&gt;');<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
. <span style="color: #ff0000;">&quot;document.write (' &lt;td style=<span style="color: #000099; font-weight: bold;">\&quot;</span>text-align: justify;<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;&quot;</span> . <span style="color: #0000ff;">$comments</span> . <span style="color: #ff0000;">&quot;');<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span> 
. <span style="color: #ff0000;">&quot;document.write (' &lt;/td&gt;');<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
. <span style="color: #ff0000;">&quot;document.write (' &lt;/tr&gt;');<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
. <span style="color: #ff0000;">&quot;document.write (' &lt;tr&gt;');<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
. <span style="color: #ff0000;">&quot;document.write (' &lt;td style=<span style="color: #000099; font-weight: bold;">\&quot;</span>text-align: center; font-size: x-small; background-color: #C7D1FC;<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;&quot;</span> . <span style="color: #0000ff;">$price</span> . <span style="color: #ff0000;">&quot;&lt;/td&gt;');<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
. <span style="color: #ff0000;">&quot;document.write (' &lt;/tr&gt;');<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
. <span style="color: #ff0000;">&quot;document.write ('&lt;/table&gt;');<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>;
&nbsp;</pre>
<p>حال زمان آن رسیده که متغییر تولید شده که حاوی کدهای جاوا اسکریپت است را به 
خروجی ارسال کنیم. البته قبل از آن باید header را از نوع application/x-javascript 
تعریف کنیم تا فایل تولید شده فرمت یک فایل جاوا اسکریپت را به خود بگیرد:</p>
<pre class="php" style="color: #000066; border: 1px solid #C0D5ED; background-color: #EDF3FA; overflow: auto; width:100%;">&nbsp;
<a href="http://www.php.net/header"><span style="color: #000066;">header</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Content-type: application/x-javascript&quot;</span><span style="color: #66cc66;">&#41;</span>;
<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #0000ff;">$out_html</span>;
<span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;</pre>
<p>این فایل را با نام rnd_product.php ذخیره میکنیم.</p>
<p>اکنون تقریباً کار تمام است ! تنها کافیست کد جاوا اسکریپتی بنویسیم که این فایل 
را به سایتمان الحاق کند، بدین صورت:</p>
<pre style="color: #000066; border: 1px solid #C0D5ED; background-color: #EDF3FA; overflow: auto; width:100%;">
&lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot; src=&quot;rnd_product.php&quot;&gt;&lt;/script&gt;
&nbsp;</pre>
<p>در کد جاوای بالا به دلیل مشخص نکردن رنگ به عنوان پارامتر ورودی از رنگ پیشفرض 
استفاده میشود. در صورتی که بخواهیم از رنگ دلخواه جهت رنگ پس زمینه جدول استفاده کنیم 
بدین صورت عمل میکنیم:</p>
<pre style="color: #000066; border: 1px solid #C0D5ED; background-color: #EDF3FA; overflow: auto; width:100%;">
&lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot; src=&quot;rnd_product.php?bg=FFCCCC&quot;&gt;&lt;/script&gt;
&nbsp;</pre>
<p>به این ترتیب رنگ زمینه جدول در خروجی برای کاربر به رنگ قرمز فسفری ظاهر خواهد 
شد و در میان جدول نیز یک محصول از سایت شما به صورت تصادفی نمایش داده خواهد شد که این همان هدف اصلی ما بود.<br />
فایلها را آپ لود کنید. اکنون هر کاربری که این یک خط کد جاوا اسکریپت بالا را 
به سایت یا وبلاگ خود اضافه کند، درست در همان محل، فرمی که حاوی یک محصول تصادفی 
از سایت شماست را مشاهده خواهد کرد.<br />
(البته به مسیر صحیح فایلها نیز دقت کنید)</p>
<p>کدهای کامل این مقاله را از
<a href="http://weblog.nabi.ir/uploads/samples/rnd_products.zip">اینجا</a> دون لود 
کنید.</p>
<p>امیدوارم استفاده کرده باشید.</p>
<p>از نظراتتون خوشحال میشم. اگر سوالی بود در همین کامنتها بفرمائید.</p>
<p>ضمناً
وقتی منبع ذکر نمیشه یعنی منبع <a target="_blank" href="http://www.nabi.ir">همینجاست</a> !</p>                ]]></content:encoded>
      </item>
      <item>
        <guid>http://weblog.nabi.ir/post-1.html</guid>
        <title>به نام خدا میگشاییم دفتر را ...</title>
        <link>http://weblog.nabi.ir/post-1.html</link>
        <comments>http://weblog.nabi.ir/comment-1.html#comments</comments>
        <pubDate>Fri, 02 Feb 2007 09:00:00 GMT</pubDate>
        <dc:creator>نبی</dc:creator>
        <category>مطالب روزانه</category>
                        <content:encoded><![CDATA[
        <p style="text-align:center"><strong>به نام خدا</strong></p>
<div class="img_left"><img alt="تولدم مبارک" src="http://weblog.nabi.ir/uploads/images/birthday.jpg" width="100" height="89" /></div>
به نام خدا میگشاییم دفتر را ...<br />
تولدت مبارک ! تولدت مبارک ! ... اما چرا دو مرتبه گفتم؟!<br />
اولیش تبریک به خاطر راه اندازی این وب لاگ و دومیش به خاطر اینکه امروز  25 سالم تموم شد. تصمیم گرفتم در روز تولدم، خودم به خودم هدیه بدم ! نمیشه؟ این وبلاگ هدیه من به خودم در روز تولدم است. هدیه شما چیست ؟!<br />
در این دور و زمونه <a href="http://www.jamejamonline.ir/shownews2.asp?n=45246&amp;t=esp" target="_blank">وبلاگ نویسی رسم شده</a>، از افراد عادی تا اشخاص بزرگ و مهم برای خودشون در این محیط مجازی مینویسند. من انشائم بد نبوده ولی خیلی اهل نوشتن نیستم و خیلی هم مایل نیستم که دیگران از افکارم آگاه بشن. ولی طبق رسم و رسوم اینترنت لازم دونستم اینجا رو بسازم تا شاید هر وقت به مطلب جالبی برخورد کردم اون رو با شما به اشتراک بزارم. شایدم دلیلش رو کم کنی باشه! <br />
نمیدونم از چی میخوام بنویسم، ولی فکر میکنم از دنیای صفر و یک ها بنویسم و بیشتر مطالبم چهار چوب کامپیوتری داشته باشند و البته با گرایش به سمت طراحی وب و برنامه نویسی که بیشتر از شاخه های دیگه بهشون علاقه مندم. شاید به خاطر اینکه به چیز دیگه ای علاقه ندارم شایدم به خاطر اینکه چیز دیگه ای بلد نیستم که در موردش صحبت کنم.<br />
نظرتون در مورد طراحی این وبلاگ چیه؟ این وبلاگ حاصل 10 روز کار مداومم است، کلی از خواب و خوراکم زدم تا برای امروز آمادش کنم. تقریباً تکمیله ولی هنوز کار داره. <br />
طراحی و برنامه نویسیش رو خودم و از صفر مطلق انجام دادم و تک تک پیکسل هاشو دستی کنار هم قرار دادم تا این شد. انصافاً خیلی وسواس به خرج دادم و از هیچ برنامه آماده ای استفاده نکردم. چیزی از امکانات یه وبلاگ کامل کم نداره. با XHTML و CSS پایه ریزیش کردم و از زبان قدرتمند و محبوب <a href="http://www.php.net" target="_blank">PHP</a> و بانک اطلاعاتی <a href="http://www.mysql.com" target="_blank">MySQL</a> استفاده کردم. خیلی هم سعی کردم که تمام استاندارد های بروز وب (<a href="http://www.w3c.org" target="_blank">W3C</a>) رو توش پیاده کنم اما نمیدونم تا چه حد موفق بودم، امیدوارم در این باره پیشکسوتان نظر بدن و راهنمایی کنند. شاید هم بعدها تکمیل ترش کردم و به عنوان یه CMS بیرون دادم.<br />
الان دیگه چیزی به ذهنم نمیرسه برای گفتن. بازم خوشحال هستم که به جمع وبلاگ نویسان پیوستم و به زودی با مطالب تازه برمیگردم.<br />
منتظر نظرات ارزشمندتون هستم.<br />
<br />
                ]]></content:encoded>
      </item>
  </channel>
</rss>

