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

<channel>
	<title>وب نویس &#187; برنامه نویسی</title>
	<atom:link href="http://webnevis.net/tag/programing/feed/" rel="self" type="application/rss+xml" />
	<link>http://webnevis.net</link>
	<description>وب نوشته های يك دانشجوی كامپیوتر</description>
	<lastBuildDate>Mon, 29 Aug 2016 18:56:58 +0000</lastBuildDate>
	<language>fa-IR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>اشکال زدایی برنامه در کیک پی اچ پی</title>
		<link>http://webnevis.net/1392/03/29/%d8%a7%d8%b4%da%a9%d8%a7%d9%84-%d8%b2%d8%af%d8%a7%db%8c%db%8c-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d8%af%d8%b1-%da%a9%db%8c%da%a9-%d9%be%db%8c-%d8%a7%da%86-%d9%be%db%8c/</link>
		<comments>http://webnevis.net/1392/03/29/%d8%a7%d8%b4%da%a9%d8%a7%d9%84-%d8%b2%d8%af%d8%a7%db%8c%db%8c-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d8%af%d8%b1-%da%a9%db%8c%da%a9-%d9%be%db%8c-%d8%a7%da%86-%d9%be%db%8c/#comments</comments>
		<pubDate>Tue, 18 Jun 2013 19:58:17 +0000</pubDate>
		<dc:creator>پیام</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[پی اچ پی - php]]></category>
		<category><![CDATA[کیک پی اچ پی - CakePHP]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[آموزش کیک پی اچ پی]]></category>
		<category><![CDATA[پی اچ پی]]></category>
		<category><![CDATA[کیک پی اچ پی]]></category>

		<guid isPermaLink="false">http://webnevis.net/?p=306</guid>
		<description><![CDATA[موقع توسعه یک برنامه مسلما بارها پیش آمده که بخواهید برنامه ای که نوشتید را trace کنید و یا مقادیری که به صورت داینامیک داخل یک آرایه ذخیره کردید را مشاهده نمایید و کارهایی از این قبیل انجام دهید . کیک پی اچ پی توابع و کلاس هایی را برای این کار در نظر گرفته [...]]]></description>
				<content:encoded><![CDATA[<p>موقع توسعه یک برنامه مسلما بارها پیش آمده که بخواهید برنامه ای که نوشتید را trace کنید و یا مقادیری که به صورت داینامیک داخل یک آرایه ذخیره کردید را مشاهده نمایید و کارهایی از این قبیل انجام دهید .<br />
کیک پی اچ پی توابع و کلاس هایی را برای این کار در نظر گرفته که بسیار مفید و سودمند هستند و قطعا استفاده و به کاربردن انها کمک بسیاری در روند توسعه یک برنامه خواهد کرد.</p>
<p>مهم ترین نکته ای که باید به ان توجه داشت این هست که در تنظیمات کیک،که در آدرس Core/config.php قرار دارد ، مقدار debug برابر با ۲ باشد تا تمام خطاها و اشکالات برنامه ، کوئری هایی که اجرا می شوند و همچنین خروجی های توابع و کلاس های مربوط به debugging به صورت کامل هنگام اجرای برنامه به ما نمایش داده شود و cache های ایجاد شده رفرش گردند.</p>
<pre class="brush:php"> Configure::write('debug', 2);</pre>
<p>به این ویژگی دو مقدار ۰ و ۱ هم می توانیم اختصاص دهیم که مقدار ۱ مانند همان حالت مقدار ۲ هست اما محدودیتهایی دارد و مقدار ۰ برای زمانیست که برنامه ما به صورت کامل نوشته و تست شده و آماده ارائه به کاربران می باشد.</p>
<p><span id="more-306"></span></p>
<p><strong>تابع debug</strong><br />
اولین و ساده ترین تابعی که کیک در اختیار ما قرار داده ، تابع debug هست ، که یک تابع سراسریست و در بخش های مختلف برنامه برای نمایش مقادیر متغیرها می توانیم از آن استفاده کنیم . prototype و یا امضای این تابع به صورت زیر هست :</p>
<pre class="brush:php">debug(mixed $var, boolean $showHtml = null, $showFrom = true)</pre>
<p>اولین پارامتر این تابع ، متغیری هست که قصد بررسی آن را داریم .<br />
پارامتر showHtml به صورت boolean هست و به صورت پیش فرض مقدار true را دارد،اگر کدهای html در متغیر وجود داشته باشد به جای اجرا ، نمایش داده می شود و پارامتر سوم نیز که به صورت پیش فرض true ست نام فایل و خطی که تابع debug را فراخوانی کرده،در خروجی نمایش می دهد .</p>
<p><strong>کلاس Debugger</strong></p>
<p>کلاس کاربردی و مفیدی هست که از نسخه ۱٫۲ به بعد تعریف شده و متدهای مختلفی برای ارزیابی کدهایی که نوشتیم در اختیارمان قرار می دهد، که در زیر برخی از کاربردی ترین آنها را بررسی میکنیم.همچنین متدهای این کلاس به صورت استاتیک هستند و نیازی به نمونه سازی از کلاس نیست و به صورت زیر قابل دسترس هستند :</p>
<pre class="brush:php"> Debugger::methodName();</pre>
<p>- متد dump<br />
متغیری که به عنوان وررودی دریافت کرده است ، خیلی حرفه ای تر و واضح تر نسبت به تابع debug برایمان تشریح می کند .</p>
<pre class="brush:php">//simple array
$arr=array(1,2,3);
Debugger::dump($arr);

//outputs
array(
	(int) 0 =&gt; (int) 1,
	(int) 1 =&gt; (int) 2,
	(int) 2 =&gt; (int) 3
)</pre>
<p>- متد log<br />
این متد تقریبا شبیه به متد dump هست اما با این تفاوت که خروجی خودش را به همراه یک سری اطلاعات مانند تاریخ و زمان اجرا ، stack trace اجرای برنامه تا خط مربوط به فراخوانی این متد را در شاخه tmp/logs در یک فایل متنی به نام debug ذخیره می کند . برای اجرای صحیح این متد دایرکتوری tmp/logs باید writable باشد .</p>
<p>- متد trace<br />
با فراخوانی این متد در هر بخش از کدهای برنامه stack trace برنامه بازگردانده می شوده که می توانیم با استفاده از تابع print_r خود پی اچ پی و یا تابع pr که کیک برای چاپ آرایه ها به صورت خواناتر در اختیارمان قرار داده ، آن را در خروجی چاپ کنیم .</p>
<pre class="brush:php">pr(Debugger::trace());

//outputs
PostsController::index() - APP/Controller/DownloadsController.php, line 48
Dispatcher::_invoke() - CORE/lib/Cake/Routing/Dispatcher.php, line 265
Dispatcher::dispatch() - CORE/lib/Cake/Routing/Dispatcher.php, line 237
[main] - APP/webroot/index.php, line 84</pre>
<p>- متد getType<br />
این متد همانطور که از نامش پیداست نوع (type) متغیری که به آن پاس داده شده را بر می گرداند و در صورتی که یک شی (object) به عنوان ورودی به آن داده شود نام کلاس آن شی رادر اختیارمان قرار می دهد .</p>
<p>- متد excerpt<br />
گاهی وقت ها شاید نیازمند این باشید که بخشی از کدهای هسته کیک را ببینید تا روند اجرای کدها را بهتر درک کنید . با استفاده از این متد می توان بخشی از کدهای یک فایل از هسته کیک را استخراج و بررسی کرد .</p>
<pre class="brush:php">Debugger::excerpt($file, $line, $context)</pre>
<p>اولین وردی آدرس فایلی است که قصد داریم بخشی از کدهای آن را بررسی کینم<br />
دومین ورودی شماره خط شروع<br />
و سومین پارامتر تعداد خطهایی که قصد داریم بازگردانده شوند (از صفر شروع می شود و نتیجه به صورت آرایه بازگردانده می شود)</p>
<pre class="brush:php">pr(Debugger::excerpt(ROOT . DS . 'index.php', 1, 7));</pre>
<p>برای اطلاعات بیشتر و مشاهده مثال های کاملتر در مورد این کلاس می توانید <a href="http://book.cakephp.org/2.0/en/development/debugging.html#using-the-debugger-class" target="_blank">اینجا </a>را مطالعه نمایید.</p>
<p>&nbsp;</p>
<p><strong>کلاس CakeLog </strong></p>
<p>log کردن یکی از روش های مرسوم برای خطایابی و اشکال زدایی برنامه هست ، در کیک برای این منظور کلاس CakeLog در نظر گرفته شده که در ابتدا باید این کلاس را در برنامه بارگذاری و سپس با استفاده از متد write اقدام به نوشتن log مورد نظرمان کنیم .</p>
<pre class="brush:php">//Config/bootstrap.php
App::uses('CakeLog', 'Log');

//Anywhere in your application
CakeLog::write('debug', 'successfully!!');</pre>
<p>توجه داشته باشید که در ابتدای اجرای کیک فایل bootstarp.php اجرا می شود بنابراین محل مناسبی برای بارگذاری کلاس cakeLog هست تا در هر نقطه از برنامه بتوانیم از این کلاس استفاده کنیم همچنین همانطور که فبلا اشاره کردم فایل debug در شاخه tmp/logs قرار دارد .</p>
<p>&nbsp;</p>
<p><strong>Debug Kit<br />
</strong></p>
<p>debug kit پلاگینی بی نظیر و حرفه ای برای اشکال زدایی application مان هست  و به نظرم باید ابزار همیشگی یک آشپز کیک پی اچ پی باشد .<br />
این پلاگین اطلاعات سودمند و مفیدی همچون لیست کوئری های اجرا شده ، لیست request ها ، sesssion های ثبت شده ، لیست متغیرهای پاس داده شده به view و &#8230; در دسترس برنامه نویس قرار میدهد که مطئنا برای یک توسعه دهنده مفید خواهد بود .<br />
از طریق لینک <a href="https://github.com/cakephp/debug_kit">https://github.com/cakephp/debug_kit</a> قابل دسترس هست.<br />
برای نصب مراحل زیر را دنبال کنید :<br />
- پس از دانلود ، پلاگین رو از حالت فشرده در بیارید و به DebugKit تغییر نام بدید.<br />
- پلاگین رو به پوشه Plugin در برنامه تان منتقل کنید.<br />
- در فایل bootstrap.php پلاگین را لود کنید .</p>
<pre class="brush:php">CakePlugin::load('DebugKit');</pre>
<p>- در فایل AppController.php به لیست کامپوننت ها toolbar پلاگین را اضافه کنید .</p>
<pre class="brush:php">public $components = array('DebugKit.Toolbar');</pre>
<p>- از داشتن یک تولبار حرفه ای در هنگام توسعه برنامه تان لذت ببرید &#8230; !</p>
<p>&nbsp;</p>
<p>موفق و پیروز باشید &#8230;</p>
<p>&nbsp;</p>
<p>منبع : <a href="http://book.cakephp.org/2.0/en/development/debugging.html" target="_blank">http://book.cakephp.org/2.0/en/development/debugging.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://webnevis.net/1392/03/29/%d8%a7%d8%b4%da%a9%d8%a7%d9%84-%d8%b2%d8%af%d8%a7%db%8c%db%8c-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d8%af%d8%b1-%da%a9%db%8c%da%a9-%d9%be%db%8c-%d8%a7%da%86-%d9%be%db%8c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>تغییر قوانین اعتبارسنجی به صورت پویا در کیک پی اچ پی</title>
		<link>http://webnevis.net/1392/03/27/%d8%aa%d8%ba%db%8c%db%8c%d8%b1-%d9%82%d9%88%d8%a7%d9%86%db%8c%d9%86-%d8%a7%d8%b9%d8%aa%d8%a8%d8%a7%d8%b1%d8%b3%d9%86%d8%ac%db%8c-%d8%af%d8%b1-%da%a9%db%8c%da%a9-%d9%be%db%8c-%d8%a7%da%86-%d9%be%db%8c/</link>
		<comments>http://webnevis.net/1392/03/27/%d8%aa%d8%ba%db%8c%db%8c%d8%b1-%d9%82%d9%88%d8%a7%d9%86%db%8c%d9%86-%d8%a7%d8%b9%d8%aa%d8%a8%d8%a7%d8%b1%d8%b3%d9%86%d8%ac%db%8c-%d8%af%d8%b1-%da%a9%db%8c%da%a9-%d9%be%db%8c-%d8%a7%da%86-%d9%be%db%8c/#comments</comments>
		<pubDate>Mon, 17 Jun 2013 16:59:29 +0000</pubDate>
		<dc:creator>پیام</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[پی اچ پی - php]]></category>
		<category><![CDATA[کیک پی اچ پی - CakePHP]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[آموزش php]]></category>
		<category><![CDATA[آموزش کیک پی اچ پی]]></category>
		<category><![CDATA[پی اچ پی]]></category>
		<category><![CDATA[کیک پی اچ پی]]></category>

		<guid isPermaLink="false">http://webnevis.net/?p=300</guid>
		<description><![CDATA[یکی از امکانات جدید اضافه شده در نسخه ۲٫۲ از کیک پی اچ پی امکان تغییر قوانین تعریف شده در Model به صورت داینامیک از طریق متد validator که در Model پیاده سازی شده است می باشد. در این پست به بررسی این ویژگی جدید می پردازیم . در ابتدای کار فرض می کنیم در [...]]]></description>
				<content:encoded><![CDATA[<p>یکی از امکانات جدید اضافه شده در نسخه ۲٫۲ از کیک پی اچ پی امکان تغییر قوانین تعریف شده در Model به صورت داینامیک از طریق متد validator که در Model پیاده سازی شده است می باشد. در این پست به بررسی این ویژگی جدید می پردازیم .</p>
<p>در ابتدای کار فرض می کنیم در model قوانین زیر رو تعریف کردیم :</p>
<pre class="brush:php">class User extends AppModel{

	public $validate = array(
		'username'=&gt;array(
			'rule-1'=&gt;array(
				'rule'=&gt;'notEmpty',
				'required'=&gt;TRUE,
				'message'=&gt;'لطفا نام کاربری خود را وارد کنید'
			),
			'rule-2'=&gt;array(
				'rule'=&gt;'isUnique',
				'message'=&gt;'نام کاربری وارد شده تکراری است',
				'on'=&gt;'create'
			),
		),
		'password'=&gt;array(
			'rule'=&gt;'notEmpty',
			'required'=&gt;TRUE,
			'message'=&gt;'لطفا رمزعبور خود را وارد کنید'
		),
	);

}</pre>
<p><span id="more-300"></span></p>
<p><strong>اضافه کردن قانون جدید :</strong><br />
برای اضافه کردن قانون جدید از متد add استفاده می کنیم</p>
<pre class="brush:php">$this-&gt;validator()-&gt;add('password','rule-2',array(
		'rule'=&gt;'alphaNumeric',
		'message'=&gt;'رمزعبور تنها باید شامل حروف و اعداد باشد'	
));</pre>
<p>همچنین می توانیم از روش method chaining استفاده کنیم و متد add رو چندین بار فراخوانی کنیم .</p>
<pre class="brush:php">$this-&gt;validator()
	-&gt;add('password','rule-2',array(
		'rule'=&gt;'alphaNumeric',
		'message'=&gt;'رمزعبور تنها باید شامل حروف و اعداد باشد'
	))
	-&gt;add('password','rule-3',array(
		'rule'=&gt;array('minLength',6)
		'message'=&gt;'رمزعبور حداقل باید شامل ۶ کاراکتر باشد'
	));</pre>
<p>به جای روش بالا می توانیم به صورت زیر هم عمل کنیم و قوانین جدید رو به صورت آرایه به عنوان پارامتر دوم به متد پاس بدیم</p>
<pre class="brush:php">$this-&gt;validator()
	-&gt;add('password',array(
		'rule-2'=&gt;array(
		'rule'=&gt;'alphaNumeric',
		'message'=&gt;'رمزعبور تنها باید شامل حروف و اعداد باشد'
		),
		'rule-3'=&gt;array(
			'rule'=&gt;array('minLength',6)
			'message'=&gt;'رمزعبور حداقل باید شامل ۶ کاراکتر باشد'
		)
	));</pre>
<p><strong>ویرایش قوانین موجود :</strong></p>
<p>برای مثال قانون rule-2 از فیلد password  رو می خواهیم ویرایش کنیم</p>
<pre class="brush:php">$this-&gt;validator()-&gt;getField('password')-&gt;setRule('rule-2',array(
		'rule'=&gt;'numeric',
		'message'=&gt;'رمزعبور باید تنها شامل اعداد باشد'
	)
);</pre>
<p>و برای تغییر تمامی قوانین تعریف شده برای یک فیلد با استفاده از متد setRules داریم :</p>
<pre class="brush:php">$this-&gt;validator()-&gt;getField('password')-&gt;setRules(array(
		'required'=&gt;array(
			'rule'=&gt;'notEmpty',
			'required'=&gt;TRUE,
			'message'=&gt;'رمزعبور خود را وارد کنید'
		),
		'length'=&gt;array(
			'rule'=&gt;array('between',6,12),
			'message'=&gt;'رمزعبور باید شامل حداقل ۶ و حداکثر ۱۲ کاراکتر باشد'
		)
	)
);</pre>
<p>همچنین اگر فقط بخوایم یک بخش از قانون تعریف شده رو تغییر بدیم :</p>
<pre class="brush:php">$this-&gt;validator()-&gt;getField('password')-&gt;getRule('length')-&gt;message='رمزعبور وارد شده معتبر نیست';</pre>
<p><strong>حذف قوانین :</strong></p>
<p>قطعه کد زیر قوانین تعریف شده برای فیلد password رو به طور کلی پاک میکنه .</p>
<pre class="brush:php">$this-&gt;validator()-&gt;remove('password');</pre>
<p>و کد زیر قانون length رو از بین قوانین تعریف شده برای فیلد password حذف میکنه</p>
<pre class="brush:php">$this-&gt;validator()-&gt;remove('password','length');</pre>
<p>اگر از کنترلر بخواهیم به این متد دسترسی داشته باشیم،برای مثال در کدهایی که توی این پست تعریف کردیم،به شکل زیر عمل می کنیم</p>
<pre class="brush:php">$this-&gt;User-&gt;validator()-&gt;remove('password','length');

//other sample
$this-&gt;User-&gt;validator()-&gt;getField('password')-&gt;setRules(array(
		'required'=&gt;array(
			'rule'=&gt;'notEmpty',
			'required'=&gt;TRUE,
			'message'=&gt;'رمزعبور خود را وارد کنید'
		)
	)
);</pre>
<p>امیدوارم این پست مفید بوده باشه ، موفق باشید .</p>
]]></content:encoded>
			<wfw:commentRss>http://webnevis.net/1392/03/27/%d8%aa%d8%ba%db%8c%db%8c%d8%b1-%d9%82%d9%88%d8%a7%d9%86%db%8c%d9%86-%d8%a7%d8%b9%d8%aa%d8%a8%d8%a7%d8%b1%d8%b3%d9%86%d8%ac%db%8c-%d8%af%d8%b1-%da%a9%db%8c%da%a9-%d9%be%db%8c-%d8%a7%da%86-%d9%be%db%8c/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>ابزار ADB در اندروید</title>
		<link>http://webnevis.net/1392/03/14/%d8%a7%d8%a8%d8%b2%d8%a7%d8%b1-adb-%d8%af%d8%b1-%d8%a7%d9%86%d8%af%d8%b1%d9%88%db%8c%d8%af/</link>
		<comments>http://webnevis.net/1392/03/14/%d8%a7%d8%a8%d8%b2%d8%a7%d8%b1-adb-%d8%af%d8%b1-%d8%a7%d9%86%d8%af%d8%b1%d9%88%db%8c%d8%af/#comments</comments>
		<pubDate>Tue, 04 Jun 2013 11:22:49 +0000</pubDate>
		<dc:creator>پیام</dc:creator>
				<category><![CDATA[اندروید]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[آموزش اندروید]]></category>
		<category><![CDATA[ابزار adb در اندروید]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[برنامه نویسی موبایل]]></category>

		<guid isPermaLink="false">http://webnevis.net/?p=281</guid>
		<description><![CDATA[چند مدتی هست که در حال یادگیری توسعه برنامه ، تحت پلتفرم اندروید هستم و از اونجا که منابع فارسی در این زمینه خیلی کم ، محدود و اغلب تکراری هست ، تصمیم گرفتم تجربیات و آموخته هام رو با شما دوستان به اشتراک بزارم  . همچنین به دلیل اینکه منابع آموزشی لازم برای شروع کار [...]]]></description>
				<content:encoded><![CDATA[<p>چند مدتی هست که در حال یادگیری توسعه برنامه ، تحت پلتفرم اندروید هستم و از اونجا که منابع فارسی در این زمینه خیلی کم ، محدود و اغلب تکراری هست ، تصمیم گرفتم تجربیات و آموخته هام رو با شما دوستان به اشتراک بزارم  . همچنین به دلیل اینکه منابع آموزشی لازم برای شروع کار با اندورید و نصب ابزارهای لازم برای برنامه نویسی تحت این پلتفرم به زبان فارسی وجود داره و هدفم آموزش گام به گام نیست ، از ابتدا شروع به آموزش نکردم و تنها ابزار ها ، تکنیک ها و مواردی که به نظرم می تونه برای یک توسعه دهنده تازه کارِ اندروید مفید باشه رو معرفی میکنم که ADB هم یکی از اون ابزارها هست .</p>
<p>ADB یا Android Debug Bridge  یک ابزار خط فرمان برای ارتباط و کنترل emulator و یا دستگاه اندرویدی متصل به سیستم ما هست و دستورات و فرمان های مفید و کاربردیِ مختلفی مانند نصب برنامه بر روی emulator ، دسترسی به فایل های موجود بر روی emulator و &#8230; رو در اختیار ما قرار میده  که تعدادی از اونها رو با هم مرور میکنیم .</p>
<p>اگر کاربر ویندوز هستید ، برای اینکه به راحتی بتونید از adb در داخل cmd استفاده کنید آدرس دایرکتوری adb.exe رو که در شاخه SDK_Directory/platform_tools قرار داره ، در بخش environment variables ویندوز در انتهای متغیر path اضافه کنید و یا اینکه بعد از اجرای cmd به شاخه platform_tools بر روی سیستمتون برید و دستورات adb رو اجرا کنید .</p>
<p style="text-align: left;">adb devices</p>
<p>لیست emulator ها و دستگاه های اندرویدی در دسترس ، رو نمایش میده  .</p>
<p>&nbsp;</p>
<p><span id="more-281"></span></p>
<p style="text-align: left; direction: ltr;">adb push &lt;local path&gt; &lt;device path&gt;</p>
<p style="text-align: right;">انتقال فایل از روی کامپیوتر به emulator یا دستگاه اندرویدی</p>
<p style="text-align: left; direction: ltr;">adb pull &lt;device path&gt; &lt;local path&gt;</p>
<p style="text-align: right;">انتقال فایل از روی emulator یا دستگاه اندرویدی به کامپیوتر</p>
<p style="text-align: left; direction: ltr;">adb install &lt;apk file path&gt;</p>
<p style="text-align: right;">نصب برنامه</p>
<p style="text-align: left; direction: ltr;">adb uninstall &lt;pakage name&gt;</p>
<p style="text-align: right;">حذف برنامه</p>
<p style="text-align: left;">adb -s &lt;serial-number&gt; command</p>
<p>با استفاده از این دستور می تونیم  فرمان مورد نظرمون رو بر روی emulator یا دستگاه اندورویدی متصل به سیتسم مون اجرا کنیم .<br />
برای مثال دستور adb -s emultaor-5554 shell خط فرمان emulator-5554 رو در اختیار ما قرار میده  و یا به عنوان مثال دستور adb -s emulator-5554 install androidapp.apk  برنامه androidapp رو بر روی emulator-5554 نصب میکنه.</p>
<p>در رابطه با بحث پایگاه داده ها ، اندروید از پایگاه داده کم حجم و در عین حال قوی SQLite پشتیبانی میکنه و از طریق خط فرمان adb  و دسترسی به shell ایمولاتور و یا دستگاه اندرویدی که در حال تست گیری بر روی اون هستیم ، می تونیم به پایگاه داده ای که در برنامه مان ایجاد کردیم دسترسی داشته باشیم  و ساختار و محتوای آن را بررسی کنیم ، این ابزار به این دلیل اهمیت داره که در اندروید  پایگاه داده ای که ایجاد می کنیم به طور مستقیم قابل مشاهده و ویرایش نیست و باید از ابزارها و روش های جانبی برای دسترسی  به اون استفاده کرد .</p>
<p style="text-align: left;">adb -s emulator-5554 shell</p>
<p style="text-align: right;">اول با دستور بالا به shell دسترسی پیدا میکنیم</p>
<p style="text-align: left; direction: ltr;">sqlite3  /data/data/net.webnevis.example/database/database_name</p>
<p style="text-align: right;">و با استفاده از این دستور وارد خط فرمان sqlite می شیم و می تونیم دستورات مورد نظرمون رو اجرا کنیم . توجه داشته باشدی که به جای net.webnevis.example باید نام package برناموتون رو بنویسید و به جای databse_name نام پایگاه دادهای که ایجاد کردید .<br />
برای مشاهده راهنمای دستوراتی که در این بخش می تونید استفاده کنید ، فرمان help. رو اجرا کنید.</p>
<p style="text-align: right;">توضیحاتی که در بالا خدمتتون عرض کردم تنها یک آشنایی اولیه با adb و امکاناتی که در اختیارمون قرار میده بود ، توصیه می کنم برای آشنایی کامل و دقیق مستندات اندروید که در آدرس  <a href="http://developer.android.com/tools/help/adb.html" target="_blank">developer.android.com/tools/help/adb.html</a> قرار داره رو مطالعه کنید .</p>
<p style="text-align: right;">پی نوشت : برای دسترسی به مستندات اندروید باید از پروکسی استفاده کنید!!</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://webnevis.net/1392/03/14/%d8%a7%d8%a8%d8%b2%d8%a7%d8%b1-adb-%d8%af%d8%b1-%d8%a7%d9%86%d8%af%d8%b1%d9%88%db%8c%d8%af/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>نمایش آمار بازدید روزانه با PHP</title>
		<link>http://webnevis.net/1389/06/14/statistics-show-daily-with-php/</link>
		<comments>http://webnevis.net/1389/06/14/statistics-show-daily-with-php/#comments</comments>
		<pubDate>Sun, 05 Sep 2010 17:34:30 +0000</pubDate>
		<dc:creator>پیام</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[پی اچ پی - php]]></category>
		<category><![CDATA[آموزش php]]></category>
		<category><![CDATA[پایگاه داده mysql]]></category>

		<guid isPermaLink="false">http://webnevis.net/?p=223</guid>
		<description><![CDATA[اسکریپتی که توی این پست قصد آموزشش رو دارم ، اسکریپت نمایش آمار بازدید امروز ، دیروز و کل بازدید ها هست که توی اکثر سایت ها به اون نیاز هست و مطمئنا به دردتون می خوره. برای شروع کار یک جدول با نام counter با فیلدهای today,yesterday,total,last_visit بسازید. CREATE TABLE IF NOT EXISTS `counter` [...]]]></description>
				<content:encoded><![CDATA[<p>اسکریپتی که توی این پست قصد آموزشش رو دارم ، اسکریپت نمایش آمار بازدید امروز ، دیروز و کل بازدید ها هست که توی اکثر سایت ها به اون نیاز هست و مطمئنا به دردتون می خوره.<br />
برای شروع کار یک جدول با نام counter با فیلدهای today,yesterday,total,last_visit بسازید.</p>
<pre class="brush:php">CREATE TABLE IF NOT EXISTS `counter` (
  `today` INT(11) NOT NULL,
  `yesterday` INT(11) NOT NULL,
  `total` varchar(11) NOT NULL,
  `last_visit` varchar(20) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
</pre>
<p>و یک سطر جدید درج کنید .</p>
<pre class="brush:php">INSERT INTO `counter` (`today`, `yesterday`, `total`, `last_visit`) VALUES
('0', '0', '0', '');
</pre>
<p>نحوه کار به این شکل هست که ابتدا مقدار فیلد last_visit رو که مربوط به تاریخ آخرین بازدید انجام شده از سایت هست رو از دیتابیس می خونیم ، بعد با استفاده از تابع ()date تاریخ فعلی رو بدست میاریم  و با مقدار موجود در last_visit مقایسه می کنیم ، در صورتی که این دو تاریخ باهم برابر باشند مقدار فیلد today رو یکی افزایش میدیم در غیر این صورت متوجه میشیم که آخرین بازدید در روز دیگه ای انجام شده که ما اونو روز قبل در نظر می گیریم و مقدار فیلد yseterday رو برابر با today قرار میدیم و مقدار فیلد today رو مساوی با یک می زاریم و تاریخ آخرین بازید رو هم به روز می کنیم .<br />
توجه داشته باشید که در هر دو حالتی که پیش میاد مقدار فیلد total رو هم یکی افزایش میدیم .<br />
در مرحله آخر هم مقادیر موجود در دیتابیس رو select و چاپ می کنیم .</p>
<p>۱ &#8211; خواندن اطلاعات از دیتابیس</p>
<pre class="brush:php">$con=mysql_connect('localhost','root','');
if(!$con)
	die('error in connect to db');
$select_db=mysql_select_db('test');
if(!$select_db)
	die('error in select db');
$query=mysql_query('select last_visit from counter');
$field=mysql_fetch_array($query);
</pre>
<p>برای آشنایی بیشتر با توابع دیتابیس و کار با اون می تونید <a href="http://webnevis.net/1387/11/18/connect-to-mysql-by-php/" target="_blank">این</a> و <a href="http://webnevis.net/1387/12/28/reading-data-from-mysql-by-php/" target="_blank">این</a> پست رو بخونید .</p>
<p><span id="more-223"></span></p>
<p>۲ &#8211; مقایسه تاریخ آخرین بازدید با تاریخ جاری</p>
<pre class="brush:php">$now=date('Y-m-d');
if($field['last_visit']==$now)
	$query='update counter set today=today+1,total=total+1';
else
	$query="update counter set yesterday=today,today=1,last_visit='$now',total=total+1";
mysql_query($query);
</pre>
<p>3 &#8211; نمایش آمار<br />
برای نمایش مقادیر ذخیره شده هم دوباره از دیتابیس یه select انجام میدیم و مقادیر رو چاپ می کنیم .</p>
<pre class="brush:php">$query=mysql_query('select * from counter');
$field=mysql_fetch_array($query);
echo "

	بازدیدهای امروز : $field[today] 

	بازدیدهای دیروز : $field[yesterday] 

	کل بازدیدها : $field[total]

";
</pre>
<p>کد کامل اسکریپت :</p>
<pre class="brush:php">//read last_visit from db
$con=mysql_connect('localhost','root','');
if(!$con)
	die('error in connect to db');
$select_db=mysql_select_db('test');
if(!$select_db)
	die('error in select db');
$query=mysql_query('select last_visit from counter');
$field=mysql_fetch_array($query);
//Compare dates
$now=date('Y-m-d');
if($field['last_visit']==$now)
	$query='update counter set today=today+1,total=total+1';
else
	$query="update counter set yesterday=today,today=1,last_visit='$now',total=total+1";
mysql_query($query);
//display counter
$query=mysql_query('select * from counter');
$field=mysql_fetch_array($query);
echo "

	بازدیدهای امروز : $field[today] 

	بازدیدهای دیروز : $field[yesterday] 

	کل بازدیدها : $field[total]

";
</pre>
]]></content:encoded>
			<wfw:commentRss>http://webnevis.net/1389/06/14/statistics-show-daily-with-php/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>اعتبارسنجی اطلاعات در کیک پی اچ پی</title>
		<link>http://webnevis.net/1389/01/29/cakephp-validation/</link>
		<comments>http://webnevis.net/1389/01/29/cakephp-validation/#comments</comments>
		<pubDate>Sun, 18 Apr 2010 11:29:03 +0000</pubDate>
		<dc:creator>پیام</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[پی اچ پی - php]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[آموزش php]]></category>
		<category><![CDATA[آموزش کیک پی اچ پی]]></category>

		<guid isPermaLink="false">http://webnevis.net/?p=209</guid>
		<description><![CDATA[یکی از مهم ترین بخش های هر برنامه بررسی و اعتبارسنجی اطلاعات دریافتی از کاربر هست در واقع با این کار برنامه نویس مطمئن خواهد شد که کاربر داده ای را که مد نظر اوست وارد کرده و با خیال راحت این اطلاعات را مورد استفاده قرار می دهد . برای چک کردن مقادیر در [...]]]></description>
				<content:encoded><![CDATA[<p>یکی از مهم ترین بخش های هر برنامه بررسی و اعتبارسنجی اطلاعات دریافتی از کاربر هست در واقع با این کار برنامه نویس مطمئن خواهد شد که کاربر داده ای را که مد نظر اوست وارد کرده و با خیال راحت این اطلاعات را مورد استفاده قرار می دهد .<br />
برای چک کردن مقادیر در کیک پی اچ پی باید تسلط و آشنایی خوبی با آرایه ها داشته باشید تا هنگام اعتبارسنجی های پیچیده مغزتون هنگ نکنه و به راحتی بتونید کارتون رو جلو ببرید . کدهای مربوط به اعتبارسنجی اطلاعات را باید در کلاس مربوط به  model بنوسید و با تعریف یک خصوصیت به نام validate و اختصاص دادن یک آرایه چند بعدی به آن ، نوع داده های مورد نظرتان را مشخص  نمایید  .</p>
<p>در ساده ترین حالت می تونید برای فیلدهای موردنظرتون که توی جدول تعریف کردید و مقدارش براتون مهم هست یک نوع رو مشخص نمایید</p>
<pre class="brush:php">class User extends AppModel{

	var $name='User';

	var $validate=array(
	'username'=&gt;'alphaNumeric',
	'password'=&gt;'alphaNumeric',
	'email'=&gt;'email'
	);
}</pre>
<p>در این حالت هنگام ذخیره و یا بروز رسانی اطلاعات مقادیر تعیین شده چک می شوند و در صورت مغایرت پیغام مناسب نمایش داده می شود .</p>
<p><span id="more-209"></span></p>
<p>همچنین شما می تونید پیغام هایی که برای هر قسمت نمایش داده می شوند رو تعیین کنید ، برای این کار به شکل زیر عمل کنید</p>
<pre class="brush:php">class User extends AppModel{

	var $name='User';

	var $validate=array(
	'username'=&gt;array('rule'=&gt;'alphaNumeric','message'=&gt;'نام کاربری معتبر نیست'),
	'password'=&gt;array('rule'=&gt;'alphaNumeric','message'=&gt;'رمز عبور معتبر نیست'),
	'email'=&gt;array('rule'=&gt;'email','message'=&gt;'پست الکترونیکی معتبر نیست')
	);
}</pre>
<p>کیک پی اچ پی به صورت پیش فرض یکسری pattern برای چک کردن ایمیل ، ip، تاریخ ،زمان ، کد پستی ، آدرس اینترنتی و سایر مقادیر داره که برای مشاهده کامل این pattern ها می تونید <a href="http://book.cakephp.org/view/134/Core-Validation-Rules" target="_blank">اینجا </a>رو ببینید.</p>
<p>در کیک پی اچ پی این امکان هم وجود داره که شما خودتون یک pattern خاص بنویسید تا مقدار فیلد بر اساس اون چک بشه برای این کار کافیه که فقط pattern دلخواه تون رو به فیلد مورد نظر نسبت بدید</p>
<pre class="brush:php">class User extends AppModel
{
	var $name='User';
	var $useTable='users';
	var $validate=array(
	'username'=&gt;array('rule'=&gt;'/[a-z0-9\-]{3,15}/i','message'=&gt;'نام کاربری معتبر نیست'),
	'password'=&gt;array('rule'=&gt;'/[a-z0-9\-]{6,20}/i','message'=&gt;'رمز عبور معتبر نیست'),
	'email'=&gt;array('rule'=&gt;'/[a-z0-9._\-+]+@[a-zA-Z0-9.\-]+.[a-zA-Z.]+/i','message'=&gt;'پست الکترونیکی معتبر نیست')
	);
}</pre>
<p>برای اینکه یک فیلد رو از چند نظر مورد بررسی قرار بدید کافیه که یک آرایه چند بعدی برای اون فیلد تعریف کنید</p>
<pre class="brush:php">class User extends AppModel
{
	var $name='User';
	var $validate=array(
		'username'=&gt;array(
			'alphaNumeric'=&gt;array('rule'=&gt;'alphaNumeric','message'=&gt;'نام کاربری معتبر نیست'),
			'maxLength'=&gt;array('rule'=&gt;array('maxLength',5),'message'=&gt;'حداکثر طول نام کاربری باید ۵ کاراکتر باشد')
		),
		'password'=&gt;array('rule'=&gt;'alphaNumeric','message'=&gt;'رمز عبور معتبر نیست'),
		'email'=&gt;array('rule'=&gt;'email','message'=&gt;'پست الکترونیکی معتبر نیست')
	);
}</pre>
<p>برای اطلاعات بیشتر در این مورد <a href="http://book.cakephp.org/view/133/Multiple-Rules-per-Field" target="_blank">این </a>صفحه رو بخونید.</p>
<p>همچنین برای تعیین اینکه یک الگو یا pattern در زمان افزودن رکورد چک بشه یا بروزرسانی رکورد می تونید به شکل زیر عمل کنید</p>
<pre class="brush:php">
class User extends AppModel
{
	var $name='User';
	var $validate=array(
		'username'=&gt;array(
			'alphaNumeric'=&gt;array('rule'=&gt;'alphaNumeric','message'=&gt;'نام کاربری معتبر نیست','on'=&gt;'create'),
			'maxLength'=&gt;array('rule'=&gt;array('maxLength',5),'message'=&gt;'حداکثر طول نام کاربری باید ۵ کاراکتر باشد','on'=&gt;'update')
		),
		'password'=&gt;array('rule'=&gt;'alphaNumeric','message'=&gt;'رمز عبور معتبر نیست','on'=&gt;'update'),
		'email'=&gt;array('rule'=&gt;'email','message'=&gt;'پست الکترونیکی معتبر نیست')
	);
}
</pre>
<p>این ها فقط چند مثال برای آشنایی شما با نحوه اعتبار سنجی اطلاعات در کیک پی اچ پی بود و بیشتر سعی کردم مهم ترین موارد رو بگم ، برای اینکه تسلط کاملی بر این موضوع پیدا کنید توصیه می کنم که حتما <a href="http://book.cakephp.org/view/125/Data-Validation" target="_blank">مستندات </a>خود کیک که کامل و گویا هست رو بخونید و <a href="http://lemoncake.wordpress.com/2007/07/03/all-about-validation-in-cakephp-12/" target="_blank">اینجا </a>رو هم یه نگاه بندازید .</p>
<p>موفق باشید</p>
]]></content:encoded>
			<wfw:commentRss>http://webnevis.net/1389/01/29/cakephp-validation/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>ساخت صفحات وب به کمک تابع include در PHP</title>
		<link>http://webnevis.net/1388/09/14/build-web-pages-with-include-in-php/</link>
		<comments>http://webnevis.net/1388/09/14/build-web-pages-with-include-in-php/#comments</comments>
		<pubDate>Sat, 05 Dec 2009 15:31:44 +0000</pubDate>
		<dc:creator>پیام</dc:creator>
				<category><![CDATA[پی اچ پی - php]]></category>
		<category><![CDATA[آموزش php]]></category>
		<category><![CDATA[برنامه نویسی]]></category>

		<guid isPermaLink="false">http://webnevis.net/?p=199</guid>
		<description><![CDATA[توی این پست قصد دارم نحوه ساخت راحت تر صفحات وب رو برای وب سایت هایی که با استفاده از PHP ایجاد می کنیم آموزش بدم . توی اکثر صفحاتی که برای یک وب سایت ایجاد می کنیم معمولا فقط بخش وسط صفحه تغییر میکنه و header و footer و sidebar به صورت ثابت توی [...]]]></description>
				<content:encoded><![CDATA[<p>توی این پست قصد دارم نحوه ساخت راحت تر صفحات وب رو برای وب سایت هایی که با استفاده از PHP ایجاد می کنیم آموزش بدم .<br />
توی اکثر صفحاتی که برای یک وب سایت ایجاد می کنیم معمولا فقط بخش وسط صفحه تغییر میکنه و header و footer و sidebar به صورت ثابت توی بقیه صفحه ها تکرار میشن به همین خاطر می تونیم این سه قسمت رو توی سه تا فایل جداگانه قرار بدیم و توی هر صفحه ای که ایجاد می کنیم این فایل ها رو include کنیم و سرعت انجام کار رو بالا ببریم و وقتی هم که می خوایم تم سایت رو تغییر بدیم کارمون راحت تر میشه .</p>
<p><span id="more-199"></span></p>
<p>بر فرض اگه کد تمپلیت ما به صورت زیر باشه</p>
<pre class="brush:php">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
    &lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
    &lt;link type="text/css" rel="stylesheet" href="style.css" media="screen"  /&gt;
    &lt;title&gt;Site Title&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;div id="main" &gt;
    	&lt;!-- header --&gt;
    	&lt;div id="header" &gt;&lt;/div&gt;
        &lt;div id="menu" &gt;
     		&lt;a href="home.php" &gt;Home&lt;/a&gt;|
            &lt;a href="About.php" &gt;About&lt;/a&gt;|
            &lt;a href="Contact.php" &gt;Contact&lt;/a&gt;
        &lt;/div&gt;
        &lt;!-- /header --&gt;

        &lt;div id="content" &gt;&lt;/div&gt;

        &lt;!-- sidebar --&gt;
        &lt;div id="sidebar" &gt;&lt;/div&gt;
        &lt;!-- /sidebar --&gt;

        &lt;div class="clear" &gt;&lt;/div&gt;

        &lt;!-- footer --&gt;
    	&lt;div id="footer" &gt;&lt;/div&gt;
        &lt;!-- /footer --&gt;
    &lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>کد های زیر رو از تمپلیت اصلی سایت جدا کرده و با نام header.php ذخیره می کنیم .</p>
<pre class="brush:php">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
    &lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
    &lt;link type="text/css" rel="stylesheet" href="style.css" media="screen"  /&gt;
    &lt;title&gt;Site Title&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;div id="main" &gt;
    	&lt;!-- header --&gt;
    	&lt;div id="header" &gt;&lt;/div&gt;
        &lt;div id="menu" &gt;
     		&lt;a href="home.php" &gt;Home&lt;/a&gt;|
            &lt;a href="About.php" &gt;About&lt;/a&gt;|
            &lt;a href="Contact.php" &gt;Contact&lt;/a&gt;
        &lt;/div&gt;
        &lt;!-- /header --&gt;</pre>
<p>کدهای زیر رو هم با نام sidebar.php ذخیره می کنیم</p>
<pre class="brush:php">        &lt;!-- sidebar --&gt;
        &lt;div id="sidebar" &gt;&lt;/div&gt;
        &lt;!-- /sidebar --&gt;</pre>
<p>و کدهای زیر رو با نام footer.php ذخیره می کنیم</p>
<pre class="brush:php">        &lt;div class="clear" &gt;&lt;/div&gt;

        &lt;!-- footer --&gt;
    	&lt;div id="footer" &gt;&lt;/div&gt;
        &lt;!-- /footer --&gt;
    &lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>حالا وقتی میخوایم یک صفحه جدید ایجاد کنیم فقط کافیه که این سه تا فایل رو include کنیم و اطلاعات مربوط به صفحه جدید رو وارد کنیم .</p>
<pre class="brush:php">&lt;?php include_once('header.php'); ?&gt;
&lt;div id="content" &gt; Content  &lt;/div&gt;
&lt;?php include_once('sidebar.php'); ?&gt;
&lt;?php include_once('footer.php'); ?&gt;</pre>
<p>برای اینکه بتونیم عنوان هر صفحه رو هم  مشخص کنیم تگ مربوط به عنوان صفحه رو توی فایل header.php به صورت زیر تغییر میدیم</p>
<pre class="brush:php">&lt;title&gt; &lt;?php echo $pagetitle; ?&gt; &lt;/title&gt;</pre>
<p>و توی هر صفحه ای که ایجاد می کنیم قبل از include کردن فایل header.php این متغیر رو مقداردهی می کنیم تا به عنوان title صفحه قرار بگیرد .</p>
<pre class="brush:php">&lt;?php
$pagetitle='Contact';
include_once('header.php');
?&gt;
&lt;div id="content" &gt; Contact Form  &lt;/div&gt;
&lt;?php include_once('sidebar.php'); ?&gt;
&lt;?php include_once('footer.php'); ?&gt;</pre>
<p>موفق باشید</p>
]]></content:encoded>
			<wfw:commentRss>http://webnevis.net/1388/09/14/build-web-pages-with-include-in-php/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>چند نکته در برنامه نویسی به زبان php &#8211; قسمت دوم</title>
		<link>http://webnevis.net/1388/04/27/few-tips-in-php-programing-part-2/</link>
		<comments>http://webnevis.net/1388/04/27/few-tips-in-php-programing-part-2/#comments</comments>
		<pubDate>Sat, 18 Jul 2009 02:23:18 +0000</pubDate>
		<dc:creator>پیام</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[پی اچ پی - php]]></category>
		<category><![CDATA[آموزش php]]></category>

		<guid isPermaLink="false">http://webnevis.net/1388/04/27/%da%86%d9%86%d8%af-%d9%86%d9%83%d8%aa%d9%87-%d8%af%d8%b1-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d9%86%d9%88%d9%8a%d8%b3%d9%8a-%d8%a8%d9%87-%d8%b2%d8%a8%d8%a7%d9%86-php-%d9%82%d8%b3%d9%85%d8%aa-%d8%af/</guid>
		<description><![CDATA[- سرعت پردازش تابع echo در مقایسه با تابع print بیشتر هست و خودم هم همیشه از این تابع استفاده می کنم در ضمن بهتره که به جای استفاده از تابع echo به شکل زیر echo 'my'.'name'.'is'.$name; از این تابع به صورت زیر استفاده کنید echo 'my','name','is',$name; همچنین در مورادی به شکل زیر echo 'string [...]]]></description>
				<content:encoded><![CDATA[<p>- سرعت پردازش تابع echo در مقایسه با تابع print بیشتر هست و خودم  هم همیشه از این تابع استفاده می کنم در ضمن  بهتره که به جای استفاده از تابع echo به شکل زیر</p>
<pre class="brush: php" >
echo 'my'.'name'.'is'.$name;
</pre>
<p>از این تابع به صورت زیر استفاده کنید</p>
<pre class="brush: php">echo 'my','name','is',$name;</pre>
<p>همچنین در مورادی  به شکل زیر</p>
<pre class="brush: php">echo 'string 1';
echo 'string 2';
echo 'string 3';
</pre>
<p>برای بالا بردن سرعت اجرای برنامه بهتره که این رشته ها یا خروجی ها را در یک متغیر بریزید و تنها همون متغیر رو چاپ کنید</p>
<pre class="brush: php">$output='string 1';
$output.='string 2';
$output.='string 3';
echo $output;
</pre>
<p><span id="more-149"></span></p>
<p>- در مواردی مثل  زیر</p>
<pre class="brush: php">$a=array('a','b','c','d','e','f','g','h','i');
for($i=0;$i&lt;count($a);$i++)
echo $a[$i];
</pre>
<p>برای جلوگیری از اجرا شدن مکرر تابع count بهتره که این تابع رو یکبار صدا بزنیم و مقدار اون رو داخل یک متغیر برزیم</p>
<pre class="brush: php">$a=array('a','b','c','d','e','f','g','h','i');
$len=count($a);
for($i=0;$i&lt;$len;$i++)
echo $a [$i];
</pre>
<p>- برای بالا بردن قابلیت حمل برنامه تون بهتره که از  php?&gt; به جای  ?&gt; استفاده کنید چون ممکنه که در برخی سرورها این امکان غیر فعال باشه .</p>
<p>- استفاده از @ برای جلوگیری از نمایش خطا باعث کاهش سرعت اجرای برنامه می شه .</p>
<p>- پس از استفاده از آرایه های بزرگ و متغیرهای سراسری برای آزاد سازی حافظه بهتره که اونها رو unset کنید ، با این کار سرعت پردازش بالا میره .</p>
<p>نکاتی که توی این پست و <a href="http://webnevis.net/1388/04/21/few-tips-in-php-programing/" target="_blank">پست قبلی</a> نوشتم بیشتر برای بالا بردن سرعت اجرای برنامه و بهینه کردن کدها بود امیدوارم که مفید باشه .</p>
]]></content:encoded>
			<wfw:commentRss>http://webnevis.net/1388/04/27/few-tips-in-php-programing-part-2/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>چند نکته در برنامه نویسی به زبان php</title>
		<link>http://webnevis.net/1388/04/21/few-tips-in-php-programing/</link>
		<comments>http://webnevis.net/1388/04/21/few-tips-in-php-programing/#comments</comments>
		<pubDate>Sun, 12 Jul 2009 19:33:28 +0000</pubDate>
		<dc:creator>پیام</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[پی اچ پی - php]]></category>
		<category><![CDATA[آموزش php]]></category>

		<guid isPermaLink="false">http://webnevis.net/1388/04/21/%da%86%d9%86%d8%af-%d9%86%da%a9%d8%aa%d9%87-%d8%af%d8%b1-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d9%86%d9%88%db%8c%d8%b3%db%8c-%d8%a8%d9%87-%d8%b2%d8%a8%d8%a7%d9%86-php/</guid>
		<description><![CDATA[- عبارات و مقدار هایی که بین دابل کوتیشن قرار می گیرند به هنگام اجرای برنامه بر روی آنها پردازش انجام می شود ، بنابراین بهتر است مقدار هایی که فقط شامل متن هستند رو بین سینگل کوتیشن قرار دهیم مخصوصا در مواردی که رشته مورد نظرمون طولانی هست. پس به جای استفاده از حالت [...]]]></description>
				<content:encoded><![CDATA[<p>- عبارات و مقدار هایی که بین دابل کوتیشن قرار می گیرند به هنگام اجرای برنامه بر روی آنها پردازش انجام می شود ، بنابراین بهتر است  مقدار هایی که فقط شامل  متن هستند رو بین سینگل کوتیشن قرار دهیم مخصوصا در مواردی که رشته مورد نظرمون طولانی هست.<br />
پس به جای استفاده از حالت زیر</p>
<pre class="brush: php">$msg="please enter all fields";</pre>
<p>بهتره که به شکل زیر عمل کنید</p>
<pre class="brush: php">$msg='please enter all fileds';</pre>
<p>- اگر بخواهیم مقادیر موجود در یک آرایه رو داخل دیتابیس وارد کنیم به جای استفاده از روش زیر</p>
<pre class="brush: php">$arr=array('ali','mohammad','pouya');
foreach($arr as $val)
mysql_query("insert into my_tbl values('$val')");</pre>
<p><span id="more-141"></span><br />
بهتره که از دستورهای زیر استفاده کنید</p>
<pre class="brush: php">$arr=array('ali','mohammad','pouya');
$values=array();
foraech($arr as $val)
$values[]='("'.$val.'")';
$query='insert into my_tbl values'.implode(',' ,$values);
mysql_query($query);</pre>
<p>اگر از حالت اول استفاده کنید با هر بار چرخش حلقه یک کوئری اجرا میشه و مقدار مورد نظر از آرایه به جدولمون وارد میشه اما در روش دوم دستور اس کیو ال مون رو به صورت پویا می نویسم و تنها با اجرای یک کوئری مقادیر مورد نظرمون رو وارد جدول می کنیم که باعث میشه تا سرعت برنامه بالا بره .</p>
<p>- مقادیری که از کاربر دریافت می کنید رو بی دلیل در متغیر اضافی قرار ندید یا آن را در داخل چند متغیر کپی نکنید تا حافظه کمتری مورد استفاده قرار بگیرد و برنامه با سرعت بیش تری اجرا شود .<br />
بنابراین به جای استفاده از روش زیر</p>
<pre class="brush: php">$a=htmlspecialchars($_GET['name']);
echo 'your name is'.$a;</pre>
<p>بهتره که از دستور زیر استفاده کنیم</p>
<pre class="brush: php">echo 'your name is'.htmlspecialchars($_GET['name']);</pre>
]]></content:encoded>
			<wfw:commentRss>http://webnevis.net/1388/04/21/few-tips-in-php-programing/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>خواندن اطلاعات از پایگاه داده mysql با php</title>
		<link>http://webnevis.net/1387/12/28/reading-data-from-mysql-by-php/</link>
		<comments>http://webnevis.net/1387/12/28/reading-data-from-mysql-by-php/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 13:38:37 +0000</pubDate>
		<dc:creator>پیام</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[پی اچ پی - php]]></category>
		<category><![CDATA[آموزش php]]></category>
		<category><![CDATA[پایگاه داده mysql]]></category>

		<guid isPermaLink="false">http://webnevis.net/?p=102</guid>
		<description><![CDATA[توی پست &#8221; آموزش ارتباط با پایگاه داده mysql در php &#8221; نحوه برقراری ارتباط با پایگاه داده mysql و اجرای دستورات sql رو توضیح دادم ، توصیه می کنم که ابتدا به این پست یک نگاه بندازید. در این آموزش فرض رو بر این بگیرید که یک پایگاه داده با نام test داریم که [...]]]></description>
				<content:encoded><![CDATA[<p>توی پست &#8221; آموزش ارتباط با پایگاه داده mysql  در php &#8221;  نحوه برقراری ارتباط با پایگاه داده mysql و اجرای دستورات sql  رو توضیح دادم ، توصیه می کنم که ابتدا به این پست یک نگاه بندازید.</p>
<p>در این آموزش فرض رو بر این بگیرید که یک پایگاه داده با نام test داریم که دارای یک جدول با نام mytable هست و این جدول ۳ فیلد با نام های   name ، id  و email  دارد.<br />
برای خواندن اطلاعات از پایگاه داده ابتدا شما باید یک دستور sql بنویسید ، در زبان sql برای خواندن اطلاعات از پایگاه داده از دستور select استفاده می شود.</p>
<p style="text-align: left;">;   شرط WHERE   نام جدول  FROM  نام فیلدهای مورد نظر  SELECT</p>
<p style="text-align: right;">بعد از دستور select باید نام فیلدهایی که می خواهید انتخاب کنید رو بنویسید و اگر قصد انتخاب همه فیلدها رو دارید می تونید از کاراکتر * استفاده کنید .<br />
همچنین برای انتخاب اطلاعات یک قسمت از جدول  باید از دستور where استفاده کنید و بعد از آن شرط مورد نظرتون رو بنویسید .</p>
<pre class="brush: php">SELECT * FROM mytable WHERE id &gt;10;
SELECT name,email FROM mytable;</pre>
<p style="text-align: right;"><span id="more-102"></span></p>
<p style="text-align: right;">ابتدا با پایگاه داده  ارتباط برقرار می کنیم و سپسس دیتابیس خودمون رو انتخاب می کنیم .</p>
<pre class="brush: php">$con=mysql_connect('localhost','root',' ');
mysql_select_db('test',$con);
</pre>
<p>سپس در داخل متغیر query کوئری خود رو مینویسیم و با استفاده از mysql_query آن را اجرا می کنیم.</p>
<pre class="brush: php">$query="SELECT * FROM mytable";
$select=mysql_query($query);
</pre>
<p style="text-align: right; ">حالا باید از حلقه ها برای خواندن اطلاعات به همراه یکی از دستورات زیر استفاده کنیم.</p>
<p style="text-align: right; ">mysql_fetch_row : این تابع اطلاعات انتخاب شده  رو به صورت یک آرایه عددی بر می گرداند.<br />
mysql_fetch_assoc : این تابع اطلاعات انتخاب شده  رو به صورت یک آرایه انجمنی بر می گرداند.<br />
mysql_fetch_array :  آرایه ای را بر می گرداند که هم به صورت انجمنی است و هم عددی  .<br />
mysql_fetch_object : این تابع هم اطلاعات انتخاب شده رو به صورت یک شی بر می گرداند .</p>
<p style="text-align: right; ">هر چهار تابع بالا نتیجه کوئری اجرا شده( متغیر select ) رو به عنوان پارامتر دریافت می کنند.</p>
<pre class="brush: php">while($row=mysql_fetch_array($select)){
echo $row['id'].' - '.$row['name'].' - '.$row['email'].'&lt;br&gt;';
}
</pre>
<p style="text-align: right;">در این جا از یک حلقه while استفاده کردیم و این حلقه تا زمانی که متغیر row دارای مقدار باشد اجرا می شود.<br />
اگر از تابع mysql_fetch_object استفاده کنید برای دسترسی به اطلاعات باید به شکل زیر عمل  نمایید</p>
<pre class="brush: php">while($row=mysql_fetch_object($select)){
echo $row-&gt;id.' - '.$row-&gt;name.' - '.$row-&gt;email.'&lt;br&gt;';
}
</pre>
<p style="text-align: right;">در آخر هم ارتباط ایجاد شده با پایگاه داده را قطع می کنیم.</p>
<pre class="brush: php">mysql_close($con);</pre>
<p style="text-align: right;">کد کامل :</p>
<pre class="brush: php">$con=mysql_connect('localhost','root',' ');
mysql_select_db('test',$con);
$query="SELECT * FROM mytable";
$select=mysql_query($query);
while($row=mysql_fetch_array($select)){
echo $row['id'].' - '.$row['name'].' - '.$row['email'].'&lt;br&gt;';
}
mysql_close($con);
</pre>
]]></content:encoded>
			<wfw:commentRss>http://webnevis.net/1387/12/28/reading-data-from-mysql-by-php/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>نمایش آمار بازدیدکنندگان با php</title>
		<link>http://webnevis.net/1387/12/13/php-counter/</link>
		<comments>http://webnevis.net/1387/12/13/php-counter/#comments</comments>
		<pubDate>Tue, 03 Mar 2009 18:05:06 +0000</pubDate>
		<dc:creator>پیام</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[پی اچ پی - php]]></category>
		<category><![CDATA[آموزش php]]></category>

		<guid isPermaLink="false">http://webnevis.net/?p=98</guid>
		<description><![CDATA[توی این پست قصد دارم نحوه نمایش تعداد بازدیدکنندگان از یک صفحه وب را به صورت گرافیکی و به کمک یک فایل با php آموزش بدم. برای این کار نیاز به عکس هایی از اعداد ۰ تا ۹ هست . من توی این مثال از تصاویری با فرمت gif استفاده کردم. یک فایل با نام [...]]]></description>
				<content:encoded><![CDATA[<p>توی این پست قصد دارم  نحوه نمایش تعداد بازدیدکنندگان از یک صفحه وب را به صورت گرافیکی و به کمک یک فایل با php آموزش بدم. برای این کار نیاز به عکس  هایی از اعداد ۰ تا ۹ هست . من توی این مثال از تصاویری با فرمت gif استفاده کردم.<br />
یک فایل با نام counter.txt بسازید و تصاویر اعداد ۰ تا ۹ رو هم در یک پوشه به نام img قرار بدید.<br />
در ابتدا یک  متغیر با نام file ایجاد می کنیم و آدرس فایل counter.txt رو توی اون قرار میدیم .</p>
<pre class="brush: php">$file="counter.txt";</pre>
<p>با استفاده از تابع file_get_content محتوای فایل counter.txt رو می خونیم و بعد برای اطمینان از اینکه محتوای فایل عدد باشد از روش type casting برای تبدیل داده ها به integer استفاده می کنیم و عدد خوانده شده رو در متغیر counter قرار میدیم.</p>
<pre class="brush: php">$counter=(int) file_get_contents($file);</pre>
<p>مقدار متغیر counter رو یک واحد افزایش میدیم .</p>
<pre class="brush: php">$counter++;</pre>
<p>بعد عدد رو به صورت گرافیکی نمایش میدیم ، در اینجا برای این کار از یک حلقه for استفاده شده که این حلقه به اندازه تعداد اعداد موجود در متغیر counter  می چرخد و در هر بار چرخش با استفاده از تابع substr یک عدد از متغیر counter را به عنوان آدرس تصویر قرار میدهد و سپس تصویر را چاپ میکند.</p>
<pre class="brush: php">for($i=0;$i&lt;strlen($counter);$i++) {
$image_src="img/".substr($counter,$i,1).".gif";
$image_tag="&lt;img src=\"$image_src\" border=\"0\" &gt;";
echo $image_tag;
}
</pre>
<p>در آخر هم فایل counter.txt رو با استفاده از تابع fopen و مد w  که برای نوشتن هست ، باز می کنیم  و مقدار متغیر counter  رو در فایل می نویسیم و بعد فایل رو با استفاده از تابع fclose میبندیم .</p>
<pre class="brush: php">$fp=fopen($file,"w");
fwrite($fp, $counter);
fclose($fp);
</pre>
<p style="text-align: right; direction:rtl;">برای دریافت این مثال به طور کامل روی <a href="http://payamsp.persiangig.com/php/counter.zip" target="_self">اینجا</a> کلیک کنید .</p>
]]></content:encoded>
			<wfw:commentRss>http://webnevis.net/1387/12/13/php-counter/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
