<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>وب نویس</title>
	
	<link>http://webnevis.net</link>
	<description>وب نوشته های يك دانشجوی كامپیوتر</description>
	<lastBuildDate>Tue, 18 Jun 2013 20:22:45 +0000</lastBuildDate>
	<language>fa-IR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/webnevis" /><feedburner:info uri="webnevis" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>اشکال زدایی برنامه در کیک پی اچ پی</title>
		<link>http://feedproxy.google.com/~r/webnevis/~3/AolwiAV1qCU/</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>
<img src="http://feeds.feedburner.com/~r/webnevis/~4/AolwiAV1qCU" height="1" width="1"/>]]></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>
		<feedburner:origLink>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/</feedburner:origLink></item>
		<item>
		<title>تغییر قوانین اعتبارسنجی به صورت پویا در کیک پی اچ پی</title>
		<link>http://feedproxy.google.com/~r/webnevis/~3/uVvCPllWQdw/</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>
<img src="http://feeds.feedburner.com/~r/webnevis/~4/uVvCPllWQdw" height="1" width="1"/>]]></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>1</slash:comments>
		<feedburner:origLink>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/</feedburner:origLink></item>
		<item>
		<title>ابزار ADB در اندروید</title>
		<link>http://feedproxy.google.com/~r/webnevis/~3/hRyblg-tUvk/</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>
<img src="http://feeds.feedburner.com/~r/webnevis/~4/hRyblg-tUvk" height="1" width="1"/>]]></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>
		<feedburner:origLink>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/</feedburner:origLink></item>
		<item>
		<title>چیزهایی که دوست دارم یاد بگیرم …</title>
		<link>http://feedproxy.google.com/~r/webnevis/~3/aYsLi-HXTeY/</link>
		<comments>http://webnevis.net/1391/07/01/things-i-like-to-learn/#comments</comments>
		<pubDate>Sat, 22 Sep 2012 15:38:15 +0000</pubDate>
		<dc:creator>پیام</dc:creator>
				<category><![CDATA[یادداشت ها]]></category>

		<guid isPermaLink="false">http://webnevis.net/?p=270</guid>
		<description><![CDATA[امروز مثله روزهای قبل داشتم گودرم رو میخوندم که یه مطلب با عنوان &#8220;چیزهایی که دوست دارم یاد بگیرم&#8221; از وبلاگ اتوبان خوندم و از اونجایی که مواردی که حامد نویسنده اوتوبان گفته خیلی نزدیک به علایقم بود راغب شدم همچین پستی تو بلاگم بزارم &#8230; چیزهایی که همیشه تو ذهنم هست تا بیشتر در [...]]]></description>
				<content:encoded><![CDATA[<p>امروز مثله روزهای قبل داشتم گودرم رو میخوندم که یه مطلب با عنوان &#8220;چیزهایی که دوست دارم یاد بگیرم&#8221; از وبلاگ <a href="http://ootooban.com/1391/things-i-like-to-learn/" target="_blank">اتوبان</a> خوندم و از اونجایی که مواردی که حامد نویسنده اوتوبان گفته خیلی نزدیک به علایقم بود راغب شدم همچین پستی تو بلاگم بزارم &#8230;</p>
<p>چیزهایی که همیشه تو ذهنم هست تا بیشتر در موردشون مطالعه کنم و تسلط بیشتری روشون پیدا کنم رو لیست می کنم تا شاید یه حرکت رو به جلو باشه این حرکت وبلاگی &#8230;</p>
<p>۱- زبان پایتون : زبان پایتون و فریم ورک django از زبان ها و ابزارهای بروز در عرصه برنامه نویسی تحت وب هستند ، خیلی دوست دارم که با پایتون هم کار کنم ، اگر مشغله های روزمره اجازه بدن ! البته یه آشنایی با این زبان دارم اما تسلط ندارم .</p>
<p>۲- لینوکس : چند سالی هست که با لینوکس (اوبونتو) کار میکنم ، اما دوست دارم در زمینه مدیریت سرور مهارت کسب کنم .</p>
<p>۳- فریم ورک های PHP : حدودا ۴ سالی هست به صورت حرفه ای PHP کار می کنم و از فریم ورک cakePHP استفاده می کنم با فریم ورک های دیگه مثله CI هم کمی کار کردم اما دوست دارم فریم ورک هایی مثله Zend ، Symfony , Yii رو بیشتر بررسی کنم و با معماریشون آشنا بشم .</p>
<p>۴- سیستم های مدیریت محتوا PHP : در حال حاضر تسلط خوبی روی طراحی تم و نوشتن پلاگین برای وردپرس دارم اما دوست دارم با سیستم های مدیریت محتوای دروپال و جوملا هم بیشتر آشنا شم .</p>
<p>۵- photoshop و گرافیک : از سال ۸۵ که طراحی وب رو شروع کردم ، خیلی دوست داشتم که گرافیک کارهایی که انجام میدم رو هم خودم کار کنم و تقریبا الان همین هم شده ، اما خیلی علاقه دارم که تسلط بیشتری روی این نرم افزار پیدا کنم و بیشتر با دنیای گرافیک آشنا بشم .</p>
<p>۶- Html5 &amp; CSS3 : بی شک اگر این دو در برنامه مطالعاتی یک طراح وب نباشه آینده رو باخته !</p>
<p>۷- جاوا اسکریپت ، jQuery ،  node.js ، backbone.js و دیگر هیچ !</p>
<p>۸- موسیقی و گیتار  : یکی از دلایل اصلی اینکه به موسقی و نواختن گیتار علاقه مند شدم ، دوست خوبم <a href="http://alishokr.net" target="_blank">علی</a> بود ، اگر بتونم دوست دارم که تو این زمینه هم کار کنم تا بیرون از دنیای کامپیوتر هم یکم مهارت داشته باشم <img src='http://webnevis.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
فعلا که دغدغه اصلیم کنکور ارشد هست ،اما در کنار خوندن برای کنکور دوست دارم به موارد بالا هم عمل کنم تا کنکور خیلی خسته کننده نشه واسم .</p>
<p>با تشکر از وبلاگ <a href="http://ootooban.com" target="_blank">اتوبان </a>&#8230;</p>
<p>&nbsp;</p>
<img src="http://feeds.feedburner.com/~r/webnevis/~4/aYsLi-HXTeY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://webnevis.net/1391/07/01/things-i-like-to-learn/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://webnevis.net/1391/07/01/things-i-like-to-learn/</feedburner:origLink></item>
		<item>
		<title>روزهای نه چندان خوب من …</title>
		<link>http://feedproxy.google.com/~r/webnevis/~3/3ok0oQvnyvI/</link>
		<comments>http://webnevis.net/1391/04/27/%d8%b1%d9%88%d8%b2%d9%87%d8%a7%db%8c-%d9%86%d9%87-%da%86%d9%86%d8%af%d8%a7%d9%86-%d8%ae%d9%88%d8%a8-%d9%85%d9%86/#comments</comments>
		<pubDate>Mon, 16 Jul 2012 20:46:33 +0000</pubDate>
		<dc:creator>پیام</dc:creator>
				<category><![CDATA[یادداشت ها]]></category>

		<guid isPermaLink="false">http://webnevis.net/?p=267</guid>
		<description><![CDATA[حدودا ۹ ماهی هست که بلاگ رو آپدیت نکردم ، تو این مدت روز های پر فراز و نشیبی رو گذروندم و دارم میگذرونم ، از شروع یه کسب و کار جدید با چند تا از بچه های دانشگاه گرفته تا &#8230; . یکی از مثبت ترین کارهایی که تو این مدت کردم خوندن کتاب [...]]]></description>
				<content:encoded><![CDATA[<p>حدودا ۹ ماهی هست که بلاگ رو آپدیت نکردم ، تو این مدت روز های پر فراز و نشیبی رو گذروندم و دارم میگذرونم ، از شروع یه کسب و کار جدید با چند تا از بچه های دانشگاه گرفته تا &#8230; .<br />
یکی از مثبت ترین کارهایی که تو این مدت کردم خوندن کتاب &#8220;آموزش  HTML5 و  CSS3 در قالب پروژه&#8221; نوشته امیرعباس عبدالعلی از انتشارات ناقوس بود که برام خیلی لذت بخش بود و اطلاعاتی که تو این زمینه داشتم رو کامل کرد .<br />
این پست بهانه ای بود برای بروز شدن این بلاگ و ادامه نوشتن &#8230;</p>
<img src="http://feeds.feedburner.com/~r/webnevis/~4/3ok0oQvnyvI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://webnevis.net/1391/04/27/%d8%b1%d9%88%d8%b2%d9%87%d8%a7%db%8c-%d9%86%d9%87-%da%86%d9%86%d8%af%d8%a7%d9%86-%d8%ae%d9%88%d8%a8-%d9%85%d9%86/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://webnevis.net/1391/04/27/%d8%b1%d9%88%d8%b2%d9%87%d8%a7%db%8c-%d9%86%d9%87-%da%86%d9%86%d8%af%d8%a7%d9%86-%d8%ae%d9%88%d8%a8-%d9%85%d9%86/</feedburner:origLink></item>
		<item>
		<title>آشنایی با سوکت ها – مهندسی اینترنت</title>
		<link>http://feedproxy.google.com/~r/webnevis/~3/o72PQHfK40w/</link>
		<comments>http://webnevis.net/1390/08/26/%d8%a2%d8%b4%d9%86%d8%a7%db%8c%db%8c-%d8%a8%d8%a7-%d8%b3%d9%88%da%a9%d8%aa-%d9%87%d8%a7-%d9%85%d9%87%d9%86%d8%af%d8%b3%db%8c-%d8%a7%db%8c%d9%86%d8%aa%d8%b1%d9%86%d8%aa/#comments</comments>
		<pubDate>Thu, 17 Nov 2011 03:47:38 +0000</pubDate>
		<dc:creator>پیام</dc:creator>
				<category><![CDATA[پی اچ پی - php]]></category>
		<category><![CDATA[یادداشت ها]]></category>
		<category><![CDATA[آشنایی با پی اچ پی]]></category>
		<category><![CDATA[سوکت ها در پی اچ پی]]></category>
		<category><![CDATA[مهندسی اینترنت]]></category>
		<category><![CDATA[پی اچ پی]]></category>

		<guid isPermaLink="false">http://webnevis.net/?p=261</guid>
		<description><![CDATA[برای درس مهندسی اینترنت چند هفته پیش یه ارائه درباره سوکت ها و به کارگیری اون ها در پی اچ پی داشتم &#8230; اسلاید هاش رو اینجا میزارم تا سایر دوستان هم بتونند استفاده کنند ! لینک دانلود امیدوارم که مفید باشه]]></description>
				<content:encoded><![CDATA[<p>برای درس مهندسی اینترنت چند هفته پیش یه ارائه درباره سوکت ها و به کارگیری اون ها در پی اچ پی داشتم &#8230;<br />
اسلاید هاش رو اینجا میزارم تا سایر دوستان هم بتونند استفاده کنند !</p>
<p><a href="http://payamsp.persiangig.com/doc/Mohandesi_Internet.zip" target="_blank">لینک دانلود</a></p>
<p>امیدوارم که مفید باشه</p>
<img src="http://feeds.feedburner.com/~r/webnevis/~4/o72PQHfK40w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://webnevis.net/1390/08/26/%d8%a2%d8%b4%d9%86%d8%a7%db%8c%db%8c-%d8%a8%d8%a7-%d8%b3%d9%88%da%a9%d8%aa-%d9%87%d8%a7-%d9%85%d9%87%d9%86%d8%af%d8%b3%db%8c-%d8%a7%db%8c%d9%86%d8%aa%d8%b1%d9%86%d8%aa/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://webnevis.net/1390/08/26/%d8%a2%d8%b4%d9%86%d8%a7%db%8c%db%8c-%d8%a8%d8%a7-%d8%b3%d9%88%da%a9%d8%aa-%d9%87%d8%a7-%d9%85%d9%87%d9%86%d8%af%d8%b3%db%8c-%d8%a7%db%8c%d9%86%d8%aa%d8%b1%d9%86%d8%aa/</feedburner:origLink></item>
		<item>
		<title>کار با element ها در کیک پی اچ پی</title>
		<link>http://feedproxy.google.com/~r/webnevis/~3/tRDrln-S-uk/</link>
		<comments>http://webnevis.net/1390/04/29/%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-element-%d9%87%d8%a7-%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>Wed, 20 Jul 2011 06:09:55 +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=255</guid>
		<description><![CDATA[در صفحات مختلف یک وب سایت معمولا بخش هایی وجود دارند که ثابت هستند و در مکان های مختلف تکرار می شوند ، مانند بلوک آخرین مطالب ، لوگوهای دوستان ، فرم خبرنامه و &#8230; ، در این مواقع برای جلوگیری از تکرار کد و راحت تر شدن کار از element ها استفاده می کنیم [...]]]></description>
				<content:encoded><![CDATA[<p>در صفحات مختلف یک وب سایت معمولا بخش هایی وجود دارند که ثابت هستند و در مکان های مختلف تکرار می شوند ، مانند بلوک آخرین مطالب ، لوگوهای دوستان ، فرم خبرنامه و &#8230; ، در این مواقع برای جلوگیری از تکرار کد و راحت تر شدن کار از element ها استفاده می کنیم .</p>
<p>برای ایجاد یک فایل element در کیک پی اچ پی وارد پوشه elements از بخش views شوید و یک فایل با نام دلخواه و پسوند ctp. ایجاد کنید سپس کدهای مد نظرتان را داخل آن وارد کنید ، برای نمایش element مورد نظرتان در سایر فایلهای بخش view هم از دستور زیر استفاده کنید :</p>
<pre class="brush:php">echo $this-&gt;element('element_name');</pre>
<p>برای آشنایی بیشتر با این بخش یک element ایجاد می کنیم که آخرین مطالب موجود در پایگاه داده را نمایش دهد.</p>
<p><span id="more-255"></span></p>
<p>در مرحله اول یک متد در کنترلر مربوط به مطالب تعریف می کنیم که آخرین مطالب را به ما برگرداند</p>
<pre class="brush:php">class PostsController extends AppController
{

	var $name='Posts';

	function index()
	{
		$posts=$this-&gt;Post-&gt;find('all',array('limit'=&gt;10));
		if(isset($this-&gt;params['requested']))
		{
			return $posts;
		}
		else
		{
			$this-&gt;set('posts',$posts);
		}
	}

}</pre>
<p>در اینجا متد index از کنترلر posts رو به شکلی تعریف کردیم که وقتی با استفاده از متد requestAction این متد رو درخواست کردیم مطالب خوانده شده از دیتابیس return شود تا در فایل مربوط به element بتوانیم مورد استفاده قرار دهیم.</p>
<p>حالا در مسیر views/elements یک فایل با نام last_posts.ctp ایجاد کنید و کدهای زیر را داخل آن وارد کنید</p>
<pre class="brush:php">


<h3>Last Posts</h3>

&lt;?php

$posts=$this->requestAction('posts/index');

if(is_array($posts)) :

?&gt;
<ul>

		&lt;?php foreach($posts as $post) : ?&gt;
		<li>&lt;?php echo $this->Html->link($post['Post']['title'],array('controller'=>'posts','action'=>'view',$post['Post']['id'])); ?&gt;</li>
		&lt;?php endforeach; ?&gt;
		
</ul>
&lt;?php endif; ?&gt;

</pre>
<p>حالا هر جا که می خواهید این element رو نمایش بدید از دستور زیر استفاده کنید </p>
<pre class="brush:php" >

echo $this->element('last_posts');

</pre>
<p>موفق باشید</p>
<img src="http://feeds.feedburner.com/~r/webnevis/~4/tRDrln-S-uk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://webnevis.net/1390/04/29/%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-element-%d9%87%d8%a7-%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>7</slash:comments>
		<feedburner:origLink>http://webnevis.net/1390/04/29/%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-element-%d9%87%d8%a7-%d8%af%d8%b1-%da%a9%db%8c%da%a9-%d9%be%db%8c-%d8%a7%da%86-%d9%be%db%8c/</feedburner:origLink></item>
		<item>
		<title>یا مقلب …</title>
		<link>http://feedproxy.google.com/~r/webnevis/~3/KiKQs0h74c4/</link>
		<comments>http://webnevis.net/1390/01/01/%db%8c%d8%a7-%d9%85%d9%82%d9%84%d8%a8/#comments</comments>
		<pubDate>Sun, 20 Mar 2011 20:31:18 +0000</pubDate>
		<dc:creator>پیام</dc:creator>
				<category><![CDATA[یادداشت ها]]></category>
		<category><![CDATA[1390]]></category>
		<category><![CDATA[دهه 90]]></category>
		<category><![CDATA[سال نو]]></category>
		<category><![CDATA[نوروز]]></category>

		<guid isPermaLink="false">http://webnevis.net/?p=237</guid>
		<description><![CDATA[یا مقلب ، قلب من در دست توست یا محول ، حال من سرمست توست کن تدبیری که در لیل و نهار حال قلب من شود همچون بهار سال نو مبارک &#8230;]]></description>
				<content:encoded><![CDATA[<p><a href="http://webnevis.net/wp-content/uploads/2011/03/13901.jpg"><img class="alignnone size-full wp-image-249" title="13901" src="http://webnevis.net/wp-content/uploads/2011/03/13901.jpg" alt="" width="597" height="190" /></a></p>
<p>یا مقلب ، قلب من در دست توست<br />
یا محول ، حال من سرمست توست<br />
کن تدبیری که در لیل و نهار<br />
حال قلب من شود همچون بهار</p>
<p>سال نو مبارک &#8230;</p>
<img src="http://feeds.feedburner.com/~r/webnevis/~4/KiKQs0h74c4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://webnevis.net/1390/01/01/%db%8c%d8%a7-%d9%85%d9%82%d9%84%d8%a8/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://webnevis.net/1390/01/01/%db%8c%d8%a7-%d9%85%d9%82%d9%84%d8%a8/</feedburner:origLink></item>
		<item>
		<title>شیوه ارائه …</title>
		<link>http://feedproxy.google.com/~r/webnevis/~3/FRF64p4GWs0/</link>
		<comments>http://webnevis.net/1389/08/06/%d8%b4%db%8c%d9%88%d9%87-%d8%a7%d8%b1%d8%a7%d8%a6%d9%87/#comments</comments>
		<pubDate>Thu, 28 Oct 2010 18:11:25 +0000</pubDate>
		<dc:creator>پیام</dc:creator>
				<category><![CDATA[یادداشت ها]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[الگوی طراحی mvc]]></category>

		<guid isPermaLink="false">http://webnevis.net/?p=230</guid>
		<description><![CDATA[برای درس شیوه ارائه موضوعی که انتخاب کردم الگوی طراحی MVC هست که هر دانشجو باید یک مقاله به اضافه کنفرانس سر کلاس رو برای موضوعی که انتخاب کرده انجام بده ، امروز کنفرانس سر کلاس رو دادم و مقاله ای که برای این موضوع انتخاب کردم هم تا آخر ترم وقت دارم ترجمش کنم، [...]]]></description>
				<content:encoded><![CDATA[<p>برای درس شیوه ارائه موضوعی که انتخاب کردم الگوی طراحی MVC هست که هر  دانشجو باید یک مقاله به اضافه کنفرانس سر کلاس رو برای موضوعی که انتخاب  کرده انجام بده ، امروز کنفرانس سر کلاس رو دادم و مقاله ای که برای این  موضوع انتخاب کردم هم تا آخر ترم وقت دارم ترجمش کنم، به همین خاطر فایل  پاورپوینتی که برای ارائه امروز درست کرده بودم رو تصمیم گرفتم  تو اینجا  بزارم تا بقیه دوستان هم بتونن ازش استفاده کنن و با این الگو آشنا بشن ،  امیدوارم که مفید واقع بشه .<br />
برای دانلود روی <a href="http://payamsp.persiangig.com/doc/mvc.zip" target="_blank">اینجا </a>کلیک کنید .</p>
<img src="http://feeds.feedburner.com/~r/webnevis/~4/FRF64p4GWs0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://webnevis.net/1389/08/06/%d8%b4%db%8c%d9%88%d9%87-%d8%a7%d8%b1%d8%a7%d8%a6%d9%87/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		<feedburner:origLink>http://webnevis.net/1389/08/06/%d8%b4%db%8c%d9%88%d9%87-%d8%a7%d8%b1%d8%a7%d8%a6%d9%87/</feedburner:origLink></item>
		<item>
		<title>نمایش آمار بازدید روزانه با PHP</title>
		<link>http://feedproxy.google.com/~r/webnevis/~3/Ogm1C5iYHMk/</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>
<img src="http://feeds.feedburner.com/~r/webnevis/~4/Ogm1C5iYHMk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://webnevis.net/1389/06/14/statistics-show-daily-with-php/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		<feedburner:origLink>http://webnevis.net/1389/06/14/statistics-show-daily-with-php/</feedburner:origLink></item>
	</channel>
</rss>
