دوره ی آموزشی پروژه محور دفترچه تلفن با Vue.js و Laravelhttps://avasam.ir/product/27
دوره ی آموزش پروژه محور ساخت دفترچه مخاطبین بصورت single page application یا سایت تک صفحه ای توسط فریمورک Laravel و فریمورک Vue.js و فریمورک Bulma میباشد . در این پروژه تمرکز اصلی و هدف اصلی ما یادگیری کامل Vue.js نسخه ی دوم میباشد که جدیدترین و بروزترین نسخه ی این فریمورک است . شما با طی کردن این دوره ی آموزشی علاوه بر اینکه خود مبحث ویو جی اس را بصورت کامل یاد میگیرید بلکه نحوه ی استفاده ی Vue در فریمورک محبوب توسعه ی وب سایت به نام Laravel را نیز یاد خواهید گرفت .
از آنجایی که Vue.js یک فریمورک برای JavaScript خالی است برای دیزاین و طراحی نهایی سایت نیز باید یک فریمورک دیگر استفاده کنید البته چه بهتر که فریمورک شما عاری از هرگونه کد JavaScript باشد ( برعکس بوت استرپ که به جاوااسکریپت محتاج است ) چونکه کارهای مربوط به جاوا اسکریپت را Vue.js برای شما انجام خواهد داد پس برای فرانت اند وب سایت دیگر نیازی به چیز اضافه دیگر مربوط به جاوااسکریپت نیست .
پس ما انتخابمان فریمورک Bulma است یک فریمورک کاملا ریسپانسیو برای طراحی انواع وب سایت ها به زیبایی هر چه تمام تر ...
Bulma کاملا سازگار با رزولیشین های مختلف از جمله موبایل است . همچنین بولما سبک و سریع تر است و همچنین شما دستتان برای شخصی سازی آن توسط sass آزاد است .
همچنین Bulma بر پایه ی طراحی جدید Flex است .
سایت single page application همانطور که از اسمش هم پیداست با هدف این بوجود آمده است که سایت ها را درون یک صفحه ی واحد درست همانند یک اپلیکیشن دسکتاپ که باز میشود به اجرا بگذارد .
یعنی با باز کردن صفحه ی یک سایت ابتدا آن صفحه لود شود و بعد دیگر درون همان صفحه هر اتفاقی بیوفتد بدون اینکه کاربر احساس کند مرورگر ریفرش میخورد یا به جای دیگری میرود .
در واقع جرقه ی اصلی این شیوه از طراحی وب سایت با بوجود آمدن AJAX خورد که توسعه دهندگان با AJAX دوست داشتند تمام وب سایت خود را پیاده سازی کنند تا کاربری که به سایت آنها مراجعه میکند هیچ ریفرشی نداشته باشه دریافت و ارسال اطلاعات به سمت سرور فقط درون یک درخواست مبتنی بر HTTP کوچک به سمت سرور و برعکس ارسال میشد .
این درخواست کوچک هرگز از مرورگر درخواست نمیکرد که برای دیدن یک بخش جدید ،برای ثبت یک نظردر سایت ، برای جستجوی محصول خاص ،برای خرید کردن و ... سایت به صفحات مختلفی برود و هر بار آن صفحات لود شوند .
بلکه بصورت خیلی ساده هدف این بود که سایت ها مثل یک اپلیکیشن نصب شده باشند که به این هدف هم کاملا رسیده شد .
فریمورک ها و کتابخانه های JavaScript دست از تلاش خود برنداشتن و Vuejs و Reactjs و Angularjs فریمورک ها و کتابخانه هایی بودن که به توسعه دهنده ساخت سایت های بدون نیاز به ریفرش را به ارمغان آورندند .
پس سایت SPA یا Single Page Application سایتی است که تک صفحه ای هست و نیاز نیست برای کارهای مختلف ریفرش در مرورگر اتفاق بیوفتد مثل یک برنامه ی نصب شده درون یک مرورگر است . مثلا برنامه ی چت نسخه ی وب تلگرام :) که با انگولار نوشته شده
در بحش پروژه محور این دوره ی آموزشی ، دفترچه مخاطبین آنلاین ساخته میشود که بتوانیم عملیات CRUD دیتابیس یا همان عملیات CREATE READ UPDATE DELETE را بدون ریفرش کردن صفحه ی مرورگر و بصورت AJAX با استفاده از Vue.js انجام دهیم .
در این دوره ی آموزشی از فریمورک Laravel پی اچ پی برای ایجاد پروژه و ارتباط آن با Vue.js استفاده میکنیم .
از فریمورک Bulma که یک فریمورک جدید برای css هست بهره میبریم که باعث بالا رفتن سرعت سایت و همچنین ریسپانسیو بودن آن میشود که در دستگاه های موبایل به خوبی یک اپلیکیشن موبایلی نصب شده اجرا میشود .
نحوه ی کار با axios برای ارسال داده ها بصورت AJAX را آموزش میدهیم و در نهایت میتوان گفت شما الفبای فریمورک قوی Vue.js را در این دوره طی خواهید کرد و مطمئنا مباحث مطرح شده در این دوره هم برای فریمورک Vue.js و هم برای Laravel و هم برای Bulma بی نظیر است .
جلسه ۱ :
جلسه ۲ :
جلسه ۳ :
جلسه ۴ :
جلسه ۵ :
جلسه ۶ :
جلسه ۷ :
جلسه ۸ :
جلسه ۹ :
جلسه ۱۰ :
جلسه ۱۱ :
جلسه ۱۲ :
جلسه ۱۳ :
جلسه ۱۴ :
جلسه ۱۵ :
جلسه ۱۶ :
جلسه ۱۷ :
جلسه ۱۸ :
جلسه ۱۹ :
جلسه ۲۰ :
جلسه ۲۱ :
جلسه ۲۲ :
جلسه ۲۳ :
جلسه ۲۴ :
جلسه ۲۵ :
جلسه ۲۶ :
جلسه ۲۷ :
جلسه ۲۸ :
جلسه ۲۹ :
جلسه ۳۰ :
در بالا خلاصه ای از سرفصل های دو دوره ی آموزشی فوق العاده برای شما آورده شده است که میتوانید با مطالعه سرفصل ها ، قبل از تهیه این دوره دید کلی نسبت به این دوره داشته باشید
در این آموزش به سیستم احراز هویت لاراول نسخه ی ۶ بپردازیم . سیستمی که در آن عمل ثبت نام کاربران ، ورود و خروج و بازیابی پسورد ساخته میشود .
قبل از اینکه این آموزش را شروع کنید مطمئن شوید یک نسخه ی جدید از لاراول را نصب کرده اید و سرور آنرا استارت کرده اید با php artisan serve و سپس در localhost:۸۰۰۰ پروژه ی جدید لاراول خود را مشاهده میکنید .
در نسخه ی ۶ لاراول سیستم احراز هویت کاربران به داخل یک پکیج دیگری به نام Laravel/UI انتقال داده شده است و برای استفاده از سیستم احراز هویت باید ابتدا این پکیج را نصب کنید .
از طریق دستورات زیر در ترمینال یا cmd میتوانید این بسته را نصب کنید :
نکته : در ترمینال یا cmd حتما به محل نصب پروژه ی خود بروید .
composer require laravel/ui
بعد از زدن این دستور اینتر را بزنید و سپس نتیجه ی خروجی در ترمینال شما باید به شکل زیر باشد
Using version ^1.0 for laravel/ui
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Installing laravel/ui (v1.0.1): Downloading (100%)
Writing lock file
[...]
سپس میتوانید دستور زیر را در ترمینال وارد کنید
php artisan ui vue --auth
و خروجی این دستور نیز طبق زیر خواهد بود
Vue scaffolding installed successfully.
Please run "npm install && npm run dev" to compile your fresh scaffolding.
Authentication scaffolding generated successfull
شما باید این دستورات را در ترمینال وارد کنید تا یک سیستم احراز هویت کامل به همراه رابط کاربری آن ساخته شود که شامل بخش های ثب نام ، ورود و بازیابی رمز عبور است .
view ها و route های احراز هویت باید به پروژه ی لاراول شما اضافه شده باشد . همچنین یک کنترلر به نام HomeController باید ساخته شود که احراز هویت را کنترل کند .
دستور php artisan ui vue --auth ویوهای ضروری را میسازد و در مسیر resources/views/auth قرار میدهد .
دستور ui هم مسیر resources/views/layouts را میسازد که قالب پایه ی پروژه را بر مبنای فریمورک سی اس اس به نام بوت استرپ ، میسازد .
خب حالا که این سیستم بصورت خودکار ساخته شده کاربر میتواند ثبت نام کند ،سپس وارد سیستم شود و خارج شود ، اگر رمز خود را فراموش کرد بازیابی رمز را بزند .
کنترلر مربوط به احراز هویت که ساخته شده است منطق ثبت نام و احراز هویت کاربران را برای ما انجام میدهد زمانی که یک کاربر جدید ثبت نام میکند کاربر جدیدی را در پایگاه داده نیز میسازد . خب شما عملا هیچ کار خاصی برای سیستم احراز هویت و ثبت نام نباید انجام بدهید و تنها کاری که باید انجام بگیرد کاستوم کردن یا اختصاصی کردن آن است که بحث دیگریست .
حالا اگر در مرورگر خود بزنید http://localhost:۸۰۰۰/register باید سیستم ثبت نام کاربر برای شما بالا بیاد .
حالا اگر در مرورگر بزنید : localhost:۸۰۰۰/login تصویر زیر باید برای شما نمایش داده شود
و در آدرس http://localhost:۸۰۰۰/password/reset باید شکل زیر باشد :
همانطور که مشاهده میکنید view ها ساخته شده هیچ گونه استایلی ندارند . شما میتوانید view ها را با استفاده از نصب وابستگی های مورد نیاز دستکاری کنید
$ npm install
$ npm run dev
اگر شما خطای Unhandled rejection Error: EACCES: permission denied را دارید شما باید دسترسی لازم را با استفاده از دستور sudo بدهید :
$ sudo npm install
$ sudo npm run dev
حالا رابط کاربری و استایل view ها بهتر شد تصویر زیر را ببینید :
vدر این سیستم اگر شما ثبت نام کنید بصورت خودکار لاگین میشوید و به صفحه ی اصلی منتقل میشوید همان مسیر /home که در کنترلر HomeController وجود دارد .
برای دیدن route های ایجاد شده به مسیر routes/web.php بروید محتویات این فایل باید شکل زیر باشد :
<?php
Route::get('/', function () {
return view('welcome');
});
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
در کد های بالا متد Auth::routes() را مشاهده میکنید این متد شامل تمام route های مورد نیاز مثل login, registration, logout و password reset است .
این متد زمانی به فایل web.php اضافه شد که شما دستورات نصب و راه اندازی سیستم auth لاراول را در ابتدای این مقاله وارد کردید .
لاراول سه کنترلر آماده میکند که نام آنها LoginController, RegisterController و ResetPasswordController است . اینها کنترلرهای اصلی برای ثبت نام ، ورود و بازیابی پسورد هستند که شما میتوانید این کنترلرها را در مسیر app/Http/Controllers/Auth پیدا کنید و آنها را شخصی سازی کنید .
یکی از دلایل اصلی که سیستم ثبت نام و ورود در سایت ها پیاده سازی میشود این است که بخشی از وب سایت فقط برای کاربران وارد شده نمایش داده شود . در لاراول نیز شما میتوانید route های خود را محدودسازی کنید تا این مسیرها فقط برای کاربران قابل نمایش باشد نه همه
برای این کار در لاراول شما باید از middelware ها کمک بگیرید .
لاراول برای احراز هویت middleware دارد به نام auth که در مسیر Illuminate\Auth\Middleware\Authenticate قرار گرفته است . همچنین در سیستم HTTP هسته ی پروژه نیز ثبت شده است .
شما میتوانید به راحتی از آن استفاده کنید تا هر بخشی که دوست دارید فقط به کاربرانی که وارد سیستم شده اند نمایش داده شود نه بقیه ...
خب بیایید بررسی کنیم که صفحه ی اصلی چطور محافظت شده است و طبق این مثال باقی قسمت ها را نیز محافظت سازی کنیم .
فایل app/Http/Controllers/HomeController.php را باز کنید محتویات این فایل باید مثل زیر باشد :
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HomeController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function index()
{
return view('home');
}
}
در کدهای بالا در متد __construct شما میبینید که middleware فراخوانی شده است و مقدار auth به معنای اینکه ما middleware مربوط به auth را نیاز داریم ارسال شده است .
middleware ها میتوانند درون کنترلر یا در route ها ضدا زده شوند . خب حالا فایل routes/web.php را باز کنید و route مربوط به /home را به شکل زیر بروزرسانی کنید :
Route::get('/home', 'HomeController@index')->name('home')->middleware('auth');
خب در این آموزش با نحوه ی پیاده سازی سیستم auth لاراول آشنا شدید سیستمی که بصورت خودکار تمام چیزهایی که برای ثبت نام ، ورود و فراموشی رمز عبور کاربران نیاز است .
شما میتوانید این سیستم را کاملا شخصی سازی کنید و هر چیزی که نیاز دارد به آن اضافه کنید یا بخش هایی را ویرایش کنید .
یا شما میتوانید کلا از این سیستم استفاده نکنید چون این سیستم چیزی نیست جز یک سری کدهای آماده نوشته شده که آنها را خودتان هم میتوانید بنویسید ولی باید کمی زحمت بیشتری بکشید .
ضمنا با استفاده از این پکیج استانداردهای مورد نیاز را درک میکنید و اگر بخواهید سیستم اختصاصی احراز هویت بنویسید حداقل الان میدونید باید چیکار کنید !
خب اگر قبلا با لاراول کار کرده باشید میبینید که سیستم auth در نسخه ی ۶ لاراول کمی تفاوت داشت :
اتمام مقاله
تصور کنید شما سایتی برای خود یا یکی از مشتریان خود ساختید . اگر گوگل صفحات سایت شما را ایندکس نکند احتمال اینکه از جستجو کردن کسی سایت شما را پیدا کند صفر درصد است و این یعنی فاجعه برای یک وب سایت .
در این مقاله قصد داریم به شما آموزش دهیم که چطور سریعا صفحات سایت خود را در گوگل ایندکس کنید .
ایندکس کردن صفحات توسط گوگل بطور خلاصه با روش های زیر انجام میگیرد :
در این لینک شما میتوانید ببینید که جستجوگر گوگل چطور کار میکند و چطور صفحات را گزینش میکند .
ما در این مقاله قصد داریم روی این مسئله کار کنیم که چطور ربات گوگل صفحات را بیشتری را در مدت زمان سریع از سایت شما ایندکس کند .
قبل از هر چیزی شما باید بدانید indexation rate سایت شما چطور است .
برای این کار ابتدا وارد google search console شوید و از بخش Index بخش Coverage را انتخاب کنید ، باید مشابه تصویر زیر باشد.
اگر شما در این بخش error میبینید یا تعداد زیاد صفحاتی که index نشده اند یکی از اتفاقات زیر در سایت شما رخ داده است :
شما میتوانید مشکلات را بصورت کامل در جدول زیرین همین بخش مشاهده کنید . تصویر زیر را ببینید
من از کلیشه بدم میاد ولی برای اینکه توجه گوگل را به سمت سایتتون جلب کنید باید حتما تجربه ی کاربری خوبی ایجاد کنید ( UX ) .
برای اینکه این نکات برای سایت شما مفید باشد حتما راهنمای گوگل در این باره را مطالعه کنید .
با استفاده از این تکنیک ها شما میتوانید indexation rate یا نرخ ایندکس شدن صغحات خود را بهبود ببخشید .
در کنسول جستجوی گوگل وارد شوید و سپس به بخش url inspection بروید . شما در این بخش میتوانید قابل دسترس بودن لینک خاصی توسط گوگل را بررسی کنید سپس میتوانید یک لینک خاص را ثبت کنید تا توسط گوگل index شود البته index شدن یک لینک در این بخش ممکن است زمانی طول بکشد .
طبق تصاویر زیر عمل کنید
- ابتدا روی url inspection کلیک کنید
- سپس روی بخش سرچ در بالای صفحه ی لینک مورد نظر را تایپ کنید
- بعد از اینکه لینک خود را وارد کردید و enter زدید گوگل شروع میکند به بررسی اینکه این لینک قبلا index شده است یا نه .
- سپس اگر لینک وارد شده توسط گوگل index شده باشد با تیک سبز رنگ به شما اعلام میکند که این لینک قبلا در گوگل index شده است ولی اگر ثبت نشده باشد به شما اعلام میکند که URL is not on Google یعنی لینک مورد نظر شما توسط گوگل ثبت نشده است .
- برای ثبت کردن یا index کردن یک لینک در گوگل ابتدا میتوانید live یا قابل دسترس بودن آن لینک توسط گوگل را بررسی کنید . کافیست روی دکمه ی TEST LIVE URL را کلیک کنید
سپس کنسول شروع میکند به بررسی اینکه ایا لینک وارد شده توسط گوگل قابل شناسایی است یا نه
- بعد از تست شدن لینک وارد شده به شما اعلام میشود که لینک روی دستگاه موبایل و دستگاه های دسکتاپ قابل دسترس است و میتواند توسط گوگل INDEX شود . سپس برای INDEX کردن صفحه روی گزینه ی GOOGLE INDEX طبق تصویر زیر کلیک کنید .
و بعد صفحه ی زیر باز میشود و به شما اعلام میکند که لینک شما در گوگل ثبت نشده است برای درخواست ثبت صفحه یا لینک مورد نظر باید روی گزینه ی REQUEST INDEXING طبق تصویر زیر کلیک کنید
- سپس کنسول گوگل شروع میکند به ثبت کردن لینک و سپس پیام زیر را نمایش میدهد مبنی بر اینکه درخواست شما برای INDEX کردن این لینک ثبت شد و بعد روی GOT IT کلیک کنید
به همین سادگی میتوانید یک به یک لینک های خود را در گوگل ثبت کنید البته وقتی sitemap باشد تمام لینک ها بصورت خودکار از درون sitemap فراخوانی میشوند .
خزنده های موتور جستجویی مثل گوگل روی لینک های درون سایت شما کلیک میکند و بین لینک های HTML میخزد !
با این وجود که سنگ بنای یک وب سایت با کیفیت ، محتوای آن است در همین حال محتوای بد یا بی کیفیت نیز سایت را به نابودی می کشاند .
هر چه بیشتر تعداد مطالب بی کیفیت در سایت شما وجود داشته باشد همانقدر ، بازدید خزنده های گوگل ، تعداد index های شما و رتبه ی سایت شما کاهش خواهد داشت .
بنابراین پاکسازی یا بلاک کردن صفحات کم کیفیت یا بد ، همانند هرس کردن یک درخت است .
صفحاتی که احساس میکنید محتوای خوب و به درد بخوری ندارند باید کارهای زیر را برای آنها انجام دهید :
sitemap یک فایل xml است که به خزنده ی موتور جستجو میگوید در سایت شما کدام لینک ها و صفحات مهم هستند . همانطور که از اسمش پیداست نقشه ی سایت شما را در اختیار موتور جستجوگر قرار میدهد .
وجود لینک ها درون sitemap تضمین کننده ی این نیست که حتما لینک توسط موتور های جستجو index میشود ولی نبودن لینک ها در sitemap حتما روی index نشدن آنها تاثیر دارد .
اگر سایت شما روی WordPress است به راحتی میتوانید sitemap سایت خود را با استفاده از پلاگین ها انجام دهید و اگر سایت شما اختصاصی است میتوانید با کدنویسی مقالات یا محصولات یا هر چیزی که مهم است را اضافه کنید .
زمانی که شما sitemap سایت خود را ساختید میتوانید به کنسول جستجوی گوگل بروید و آنرا به گوگل معرفی کنید .
همانطور که در تصویر بالا میبینید ابتدا بخش Sitemaps را کلیک کنید سپس در بخش Add a new sitemap آدرس sitemap خود را وارد کنید و سپس دکمه ی SUBMIT را بزنید .
اگر خطایی وجود نداشته باشد در لیست Submited sitemaps میتوانید سایت مپ خود را بصورت Success مشاهده کنید . جزئیات دیگر هم آنجا موجود است و میتوانید با کلیک روی آن مشاهده کنید .
یکبار دیگر بررسی کنید تا مطمئن شوید لینک هایی که میخواهید index شود درون sitemap قرار گرفته است و صد در صد مطمئن شوید لینک هایی که نمیخواهید index شوند درون sitemap وجود نداشته باشند .
گوگل یک شبکه ی قدرتمند است که خزنده های گوگل هم ارتباط خوبی با آن دارند و دائما در حال خزیدن در توئیتر هستند .
اشتراک گذاری در شبکه های اجتماعی شاید تاثیر مستقیم روی indexing سایت شما نداشته باشند ولی به خزنده ی گوگل از انتشار مطلب جدید و مهم در سایت شما مطلع میشود که قرار است index شود .
سایت هایی مثل Reddit و Quora سایت های محبوبی هستند که به شما اجازه میدهند لینک بگذارید .
میتوانید برای تبلیغات صفحاتی که اخیرا منتشر شده از Quora استفاده کنید . این کار علاوه بر اینکه ترافیک به سایت شما جذب میکند بلکه به راحت شدن indexing صفحات شما کمک میکند .
اگر احساس تنبلی میکنید یا وقت کافی برای اشتراک گذاری مطالب در جامعه های مجازی را ندارید حتما کسی را پیدا کنید این کار را انجام دهد
چون یکی از کلید های موفقیت سایت شماست .
همانطور که بالاتر گفتیم خزنده ی گوگل روی لینک های سایت ها کلیک میکند و آنها را تحلیل میکند .
لینک دادن به سایت های دیگر درسته که بعنوان یک فاکتور مهم در رتبه بندی و افزایش ترافیک سایت مقصد نیست ولی روی indexing سایت مقصد تاثیر زیادی دارد .
شما میتوانید به شکل های زیر برای خود لینک ورودی بسازید :
سایت هایی مثل Ping-O-Matic به موتورهای جستجو یک ping ارسال میکنند و اعلام میکنند که سایت یا وبلاگ شما بروزرسانی شده است .
راستش ، این بهترین روش نیست - اما سریع ، رایگان و قابل استفاده است
تمام :)
برنامه نویسی یک فعالیت ساده نیست. نیازها در وسط پروژه تغییر می کند. فناوری ها به سرعت و بی رحمانه پیشرفت می کند. مشتریان سریع قضاوت می کنند ولی آهسته توضیح میدهند. برنامه نویسی آسان تر نمی شود بلکه برنامه نویسان باهوش تر می شوند.
اولین باری که به یک باگ برخورد میکنید شما تا وقتی که آنرا حل نکنید خود را شکست خورده تلقی میکنید . بعد از حل کردن این معما شما احساس خدایی میکنید .
اصل ترفند این است : سری بعدی وقتی به آن باگ یا مشابه آن برخورد کردید سریعا حل میکنیدش چون قبلا پیچ و خم راه را رفتید . احساس میکنید مشکل ساده ای بود نه اینطور نیست راحت نبود شما باهوش تر شدید !
در دنیای برنامه نویسی همه چیز در حال اپدیت شدن و همه چیز در حال منسوخ شدن هستند . اگر در حال یادگیری نباشید شما هم به همراه دانش قبلی خود منسوخ خواهید شد :) برای اینکه دیگر برنامه نویسان از ما عقب نباشند این فناوری و این زمینه ی شغلی یا هر چیزی با سرعت جت در حال پیشرفته !!!
دشوارترین نکته در این مورد این است که یاد بگیرید چطور یاد بگیرید .
سالها طول می کشد تا بتوانید در یک زبان برنامه نویسی مهارت داشته باشید و سالها بیشتر طول میکشد تا بتوانید آنچه را که می دانید بشناسید و آنچه را که لازم ندارید رها کنید. نگران نباشید شما موفق میشوید مثل افراد دیگر که شدن ، فقط وقت بگذارید.
برنامه نویسی سخت است . ما در دنیایی کار میکنیم که قوانین بین المللی هم حتی ندارد . دنیایی که در ان وقتی مشتری از ما ماشین میخواهد میتواند بجای ماشین هواپیما هم بخواهد و انتظار هم دارد که طی یک هفته تحویل دهیم !
زمینه ی کاری ما طوری است که تقریبا همه روزه عوض میشود و انتظار میرود که همیشه سرحال باشید و کارتان را بکنید
شما اگر احساس عدم تعادل کردید باید جوری به آن عادت کنید . توجه کنید که همه ی ما این احساس را داریم . ما نمیتوانیم همه چیز را درآن واحد حل و فصل کنیم .
همه ی ما گاهی احساس سردرگمی و گم شدن در مسائل پیدا میکنیم اما مشکلی نیست . رو به جلو حرکت کنید همه چیز خوب خواهد شد .
من برای ده سال است که برنامه نویسی حرفه ای انجام میدم ( حتما میگید ایول ) . ابتدای کار من ممکن بود چهار هفته کار کنم و اصلا ندونم که دقیقا دارم چیکار میکنم . از این چهار هفته ها در اوایل اتفاق میوفتاد سرانجام متوجه شدم که همیشه این حس وجود دارد .
وقتی برای اولین بار این حس را تجربه میکنید شاید احساس کمبود کنید . اما با این احساس شما میتوانید از شغلتان لذت ببرید ؟ قطعا نه و شما را سریعا دلزده میکند .
پس سقوط نکنید . سعی کنید دیدگاهتان را به این مسئله عوض کنید به این فکر کنید که مسئله ساده است ولی شما هنوز راه حل آنرا فرا نگرفته اید . بعضی برنامه نویس ها پازل را در قلب شان حل میکنند . یاد بگیرید که معماهای برنامه نویسی را دوست بدارید و دنبال کسب حرفه و مهارت بیشتر باشید .
استرس برای همه ما پیش می آید. می توانید سعی کنید آن را دفع کنید یا آن را به تاخیر بیاندازید ، اما سرانجام از راه می رسد و کافئین در این مواقع خیلی کمک کننده است. اینکه چگونه به فشارهای شغلی خود واکنش نشان دهید مشخص می کند که این زمینه ی شغلی را چقدر دوست دارید .
کار خود را دو چندان نکنید! کوهی از کارهای انجام شده را مقابل خود تصور نکنید و نگویید "اگر من فقط کمی سخت تر کار کنم ، همه چیز درست میشود." این راه منجر به فرسودگی شما می شود.
شغل خود را ادامه دهید در همین حال سعی کنید از زندگی کردن هم لذت ببرید اینطوری مسائل و مشکلات شما حل میشود . امتحان کنید !
شما میتوانید هر زبان برنامه نویسی را یاد بگیرید ، میتوانید هر ابزار و سیستم عاملی را یاد بگیرید ، میتوانید هر فریمورک و تکنولوژی را یاد بگیرید اما اگر قدرت ارتباطات شما ضعیف باشد عملا آن تخصص ها به هیچ دردی نخواهند خورد چون شما نمیتوانید خود را به دیگران تعریف کنید .
مشتری ها و کارفرماهای ما نمیتوانند مسائل فنی که ما بلد هستیم را درک کنند ما فقط باید این کارها را انجام دهیم ولی باید بتوانیم آنها را به یک فرد غیر متخصص هم توضیح دهیم .
اگر ارتباطات قوی ندارید نیاز به تمرین و تجربه در این زمینه دارید . چیزی نیست که نتوانید آنرا بدست بیاورید .
به خودتان فرصت برقرار کردن ارتباط با دیگران را بدهید بهترین برنامه نویسان جهان در اغلب موارد ارتباطات خوبی با دیگران دارند زیرا به مردم این اجازه را میدهند که کار آنها را درک کنند .
اگر احساس میکنید در اتاقی هستید که از همه بیشتر میدانید سریعا انرا عوض کنید چون آنجا پیشرفتی نخواهید کرد .
خیلی از برنامه نویسان یک شغل پیدا میکنند یا مسیری پیش میگیرند که با دانسته های قبلی آنها قابل انجام است پس دنبال یادگیری چیزهای جدید نمی روند یا اصلاح خودمانی راحت طلب هستند .
این افراد چون در کار قدیمی خوب تبحر دارند مطمئنا از کار قبلی خود درآمد کسب خواهند کرد ولی در همان جایی که هستند باقی خواهند ماند و پیشرفت نخواهند کرد .
پس اگر در یک اتاقی هستید که احساس میکنید هیچکس از شما بیشتر نمیداند یا از کسی چیز جدیدی یاد نمیگیرید آنجا را ترک کنید و به اتاقی بروید که آنجا یک احمق حساب شوید .
همه چیز پول نیست اگر با شغلتان راحت نیستید یا استرس بیش از اندازه به شما وارد میکند آن محیط مناسب شما نیست و سریعا جای خود ا عوض کنید .
من میدانم که ترک یک شرکت یا تغییر شغلی که حقوقتان از آن شرکت تامین میشود کار ساده ای نیست و ممکن است خودتان و خانواده تان متضرر شود ولی اگر نمیتوانید یک شغل را تغییر دهید حداقل کاری کنید آنرا دوست داشته باشید و همانجا پیشرفت کنید .
با رئیس خود درباره ی استرس های خود صحبت کنید شاید بخش جدید یا کار جدیدی برای شما داشته باشد . مشکل خود را با هم تیمی های خود در میان بگذارید شاید هم تیمی های شما یا همکاران شما راه چاره را بدانند و این را هم بدانید که صاحبان کسب و کار ها حاضر هستند خیلی کارها را برای کارمندان خود انجام دهند تا استرس انها کم شده و خلاقیت انها افزایش پیدا کند .
برنامه نویسی یک کار ثابت است و نیاز به فعالیت بدنی ندارد پس مراقب اضافه وزن و سلامتی خود هم باشید پول را میتوان پیدا کرد ولی سلامتی را دوباره نه !
اما در آخر این مطلب به یاد داشته باشید که هر چند برنامه نویسی شغل سخت و گیج کننده ای است ولی چیزی نیست که همه بتوانند از پس آن بر بیایند اگر برنامه نویس هستید به شما تبریک میگم چون شما یک ذهن بسیار باهوش و خلاق دارید انعطاف پذیری بالایی دارید و کاری را انجام میدهید که به نظر خیلی ها بسیار سخت و جادویی است .
مطمئنا کارهای سخت پول خوبی هم دارند و به همین خاطر است که بیشتر پولدارهای دنیا برنامه نویس هستند .
موتورهای جستجوگر امروزه بخش جدا ناپذیر از اینترنت هستند . در این مقاله میخواهیم موتورهای جستجوگر و مفاهیم آنرا بصورت کامل پوشش دهیم .
موتور های جستجوگر به ابزار بسیار کاربردی در زمینه اینترنت تبدیل شده اند و این ابزارها برای برنامه نویسان ، توسعه دهندگان ، مدیر شرکت ها ، کسب و کارهای آنلاین و دیگر کاربران اینترنتی بسیار کمک کننده و مفید هستند .
با استفاده از موتور جستجوگر ما میتوانیم اطلاعاتی درباره ی موضوع خاص را به راحتی بدست بیاوریم .
ما در این مقاله قصد داریم علاوه بر بررسی تخصصی موتور جستجوگر و مفاهیم آن ، به شما آموزش بدیم چطور موتور جستجوی شخصی خودتان را با PHP و MySQL بسازید ! تعجب نکنید شما هم میتوانید گوگل اولش انقدر قدرتمند نبود طی سالهای درازی اینطوری شده و تبدیل شده به یک سیستم عالی !ولی شما هم میتوانید از یه سیستم ساده ی موتور جستجو شروع کنید و آنرا هر روز بهتر از دیروز بکنید .
البته در این مقاله ما قصد نداریم چیزی به شما یاد بدهیم که جایگزینی برای گوگل یا یاهو بسازید چون طبیعتا این امر فعلا امکان پذیر نیست ولی شما با این آموزش به مفاهیم موتورهای جستجو و طرز عمل آنها مسلط میشوید و یاد میگیرید چطور با PHP یک موتور جستجو بسازید .
بصورت کلی موتور جستجو یک ابزاری در بستر اینترنت است که به کاربران کمک میکند اطلاعات مختلف را از بین میلیون ها سایت به راحتی پیدا کنند . موتور جستجوهای پرکاربرد در جهان عبارتند از Google, Yahoo!, MSN, Bing , Ask و غیره ...
موتورهای جستجو مثل یک برنامه ی کامپیوتری هستند که در بین اسناد زیادی که دارید بین یک کلمه ی خاصی میگردند و آن اسناد را برای شما طبقه بندی میکنند .
به هر حال بصورت عامیانه موتور جستجو چیزی است مثل Google , Bing , Yahoo و غیره ...
موتورهای جستجوگر ابزار خودکاری مثل ربات ها و خزنده ها را دارند که به سرتاسر اینترنت میفرستند و آنها وقتی به یک سایتی وارد میشوند تمام آن سایت را تحلیل و بررسی میکنند بعد از جمع آوری اطلاعات وارد لینک های آنها میشوند و بعد از ورود به صفحه ی دیگر یا سایت دیگر دوباره آنرا بررسی میکنند و بعد روی لینک های روی آن صفحه کلیک میکنند و دوباره به مقصد بعدی کوچ میکنند . همینطور کل اینترنت را گشته و اطلاعات را جمع آوری میکنند و به پایگاه های داده موتور انتقال میدهند .
سپس این اطلاعات جمع بندی و طبقه بندی میشود ، به این کار index کردن سایت ها میگویند . وقتی کاربر کلمه ی گرگ را جستجو میکند موتور جستجو در پایگاه داده خود میگردد و بین سایت هایی که این کلمه را ربات ها و خزنده ها جمع آوری کرده اند براساس رتبه ی آنها لیست میکند و به کاربر نمایش میدهد .
هر موتور جستجو یک الگوریتمی برای لیست کردن و نمایش اطلاعات طبقه بندی شده از سایت ها دارد.
نتیجه ی جستجو در موتور های جستجو گر در یک لیستی به نام SERP که مخفف Search Engine Results Page است نمایش داده میشود .
معمولا الگوریتم موتور های جستجوگر به دنبال کلمات کلیدی در بخش های مختلف سایت میگردد و آنها را مهم میداند مثلا عبارت هایی که در title صفحه یا درون محتوای یک صفحه یا کلمات کلیدی آن وجود دارد .
سپس وب سایت ها در موتور جستجو Rank بندی یا رتبه بندی میشود که کدام سایت اول نمایش داده شود و سپس کدام سایت ها یعنی به ترتیب کیفیت و محتوای سایت ها بیشتر توجه میشود و الگوریتم های موجود در موتورهای جستجوگر تقریبا همگی به کیفیت بالا اهمیت میدهند چون هر سایتی که کیفیت بالاتری داشته باشد بهتر است ابتدا دیده شود .
البته هر موتور جستجوگر الگوریتم خاص خودش را دارد مثلا یک وب سایتی ممکن است در گوگل در رتبه ی ۱ باشد ولی در موتور جستجوی یاهو در رتبه ی ۱۰ باشد و این بستگی دارد به الگوریتمی که پشت آن موتور است .
الگوریتم های استفاده شده در موتور های جستجوگر تقریبا در حالت مخفی و سرّی و دائما هم در حال بروزرسانی و بهبود هستند بنابراین صاحبان وب سایت ها باید مرتبا روی سئو سایت خود کار کنند تا الگوریتم های جدید سایت ها را بهتر بشناسد .
اگر راز الگوریتم موتور جستجو فاش شود شرکت ها سعی میکنند آنرا دور بزنند و با ایجاد رتبه ی جعلی به جاهای بالاتری بروند که این باعث میشود موتور جستجو نتایج خوبی بدست نیاورد . گاهی نحوه ی کار کردن الگوریتم ها کشف میشود و اینجاست که خیلی ها سعی میکنند تقلب کنند و دقیقا بعد از این اتفاق توسعه دهندگان آن موتور جستجو الگوریتم را بروزرسانی میکنند و یک برچسب spam به آن سایت های متقلب میزنند و رتبه ی آنها به شدت کاهش پیدا میکند .
موتورهای جستجو گر به سورس یک وب سایت مراجعه میکنند یعنی چیزی که موتور جستجوگر از یک سایت میبینید با چیزی که یک انسان میبیند متفاوت است . موتور جستجو متن ها را میخواند و برایش تصاویر و انیمیشن ها بی مفهوم است .
به همین علت هم بود که سریعا بساط سایت هایی که کلا با فلش طراحی میشدند جمع شد چون انیمیشن ها و گرافیک فلش برای موتور نامفهوم بود و رتبه ی سایت هایی که با HTML و CSS ساخته شده بودند بسیار بهتر بود .
در هر صورت اگر شیوه ای را اتخاذ کنیم که متن خالی توسط موتور ها قابل رویت نباشد به احتمال زیاد رتبه ای هم در موتور های جستجو نخواهیم داشت .
در متن بالا که درباره ی موتورهای جستجو صحبت میکردیم اشاره ی کوتاهی هم به موتور جستجوی وب داشتیم . همانطور که بالا هم گفتیم این موتور ها یک خزنده به سمت سایت شما ارسال میکنند و این توانایی را دارد که محتوای وب سایت شما را به همراه کلمات کلیدی یک صفحه واکشی کند . یک برنامه ی دیگری به نام indexer وجود دارد اسنادی که خرنده آورده است را میخواند و دسته بندی میکند و به آنها رتبه میدهد .
هر موتور جستجوگری بر اساس الگوریتم خاص خود این رتبه بندی را انجام میدهد .
از آنجایی که سازندگان وب سایت ها میدانند که قرار است خزنده های موتور جستجو گر های مختلف به سایت آنها مراجعه کند پس شروع میکنند به بهینه کردن وضعیت سایت خود و آماده کردن آن برای خزنده های موتور جستجو که به این کار SEO یا بهینه سازی موتورهای جستجوگر گفته میشود .
موتورهای جستجو بدون نظارت انسان کار میکنند . هر شخصی میتواند از آنها استفاده کند و برخی از موتورهای جستجو نیز دارای نقص های درونی هستند .
اما اگر کسی بخواهد موتورهای جستجو و الگوریتم واقعی آن را دور بزند ممکن است موتور جستجو آنرا بعنوان spam بشناسد .
موتورهای جستجو دارای انواع اطلاعات بصورت یکجا میباشد مانند : شماره تلفن ها ، جزوات و مقالات اموزشی ، ویدیوها ، موسیقی ، روزنامه ها ، وضعیت آب و هوا و خیلی اطلاعات دیگر ...
موتورهای جستجو این قابلیت را دارند که انواع نیاز های کاربران را فراهم کنند .
ما بعنوان یک جستجوگر باید یاد بگیریم که چطور عبارت دلخواهمان را به موتور جستجو بگوییم تا بهترین نتیجه را برای ما بیاورد .
اپراتورهای جستجو به دو دسته ی اصلی تقسیم بندی میشوند :
در اینجا منظور ما از اپراتور یک کلمه یا یک سمبلی است که تایپ میکنیم .اپراتور کلمه یا نمادی است که تایپ می کنیم. این راهنما را به موتور جستجو راهنمایی می کند تا بداند چه چیزی را جستجو کند. با استفاده از این اپراتورها می توانیم جستجوی خود را محدود یا گسترده تر کنیم ، بنابراین به ما کمک می کنیم تا وب سایت هایی را که برای شما مفید است پیدا کنیم.
اپراتورهای هر موتور جستجوگر ویژه ی خودش میباشد و باید نسبت به موتوری که استفاده میکنید اپراتور های انها را یاد بگیرید .
عبارت AND :
این عبارت به موتور جستجو گر میگوید یک عبارت یا عبارت دیگر اگر در محتوا بود به من نمایش بده . این راه کار باعث محدود شدن وب سایت ها و بهتره پیدا شدن نتیجه ی مورد نظر میشود مثلا اگر بخواهیم به موتور بگوییم گل و قرمز را برای ما پیدا کن یا گل و قرمز و آبی را پیدا کن باید رشته های زیر را جستجو کنیم :
در تصویر زیر من عبارت گل AND قرمز AND آبی را در بخش تصاویر گوگل جستجو کردم نتیجه را ببینید :
عبارت OR :
این عبارت به موتور جستجو میگوید هر چیزی که OR بین آنها قرار گرفت یکی از آنها را پیدا کن مثلا گل یا آسمان فرقی ندارد پس گل OR آسمان ممکن است در نتایج جستجو هم آسمان داشته باشد هم گل !
این مورد باعث زیاد شدن نتایج جستجو و سخت تر شدن پیدا کردن هدف اصلی میشود ولی بازه ی جستجو را گسترده میکند که کاربرد های خاص خود را دارد .
برای مثال من در تصویر زیر کیبورد OR ساعت را جستجو کرده ام که هم نتایج ساعت و هم نتایج کیبورد را برای من آورده است .
عبارت NOT :
این عبارت باعث حذف شدن یک کلمه خاص از نتایج جستجو میشود مثلا اگر ما به دنبال گوشی موبایل هستیم ولی نمیخواهیم مدل LG را نمایش دهد به راحتی مینویسیم موبایل -ال جی . توجه کنید که این عبارت در دستورات جستجوی گوگل با علامت منفی یا - انجام میگیرد تصویر زیر را ببینید
عبارت + : این درست مثل AND عمل میکند یعنی اگر در بین دو یا چند عبارت قرار گیرد همه ی آنها باید در نتیجه ی جستجو باشند مثلا گل + أبی + قرمز
باز مثالی در تصویر زیر آماده کرده ایم ببینید .
عبارت - :
این عبارت هم دقیقا مثل NOT عمل میکند که البته در مثال بالا در گوگل ما فقط توانستیم از - استفاده کنیم چون دستور گوگل همین است .
عبارت "" :
هر چیزی که بین " " قرار بگیرد به موتور جستجو میگوید عینا همین را جستجو بکن و جستجوی شما را خاص میکند . برای مثال تصویر زیر را ببینید
شاید خیلی هیجان انگیز باشه که یه موتور جستجو بسازید هر چند ساده ! کلی مفاهیم یاد میگیرید و کلا دستتون میاد که موتور های جستجو چطور کار میکنند .
ما قصد نداریم موتور جستجو گر حرفه ای بسازیم که در اندازه ی Yahoo یا Google باشه ما داریم تمرین میکنیم و حداقل یک موتور جستجو در حد موتور جستجوهای بومی که میتونیم بسازیم باهاش تفریح کنیم .
پس شروع میکنیم و با استفاده از ابزارهای اوپن سورس مثل PHP و MySQL این کار را انجام میدیم .
خب از آنجایی که ما در این آموزش از زبان برنامه نویسی PHP استفاده خواهیم کرد طبیعتا شما باید با مفاهیم این زبان برنامه نویسی آشنا باشید و اگر آشنا نیستید اشکالی ندارد ما قبلا یک دوره ی آموزشی برای این زبان برگزار کردیم که از لینک زیر میتوانید تهیه کنید .
دوره ی آموزش کامل زبان برنامه نویسی PHP به فارسی
همچنین اگر قصد دارید در زبان PHP تسلط شما بیشتر شود ما دو دوره ی پیشرفته دیگری هم برگزار کردیم که مطمئنا باعث ارتقای دانش و تخصص PHP در شما میشود و در تمامی زمینه های ساخت وب سایت به درد شما میخوره .
از لینک های زیر میتوانید این دوره های پیش رفته را ببینید و در صورت تمایل در انها شرکت کنید .
دوره ی آموزش ساخت فریمورک MVC با PHP
دوره ی آموزش پروژه محور ساخت سیستم هتلداری با زبان PHP و الگوی MVC
همچنین به علت اینکه پایگاه داده مورد استفاده ی ما MySQL است بهتره کمی کار با این پایگاه داده و کوئری های sql آشنا باشید ( با یه سرچ ساده پیدا میکنید ) .
خب با این فرضیات ما شروع میکنیم ابتدا یک فرم خالی HTML میسازیم که کاربران عبارت مورد جستجو را آنجا وارد کنند و سپس یک دکمه میزاریم برای جستجو که وقتی کلیک شد جستجو انجام بگیرد .
خب همانطور که بالا اشاره کردیم پایگاه داده ی ما MySQL است پس باید ابتدا این پایگاه داده را نصب و راه اندازی کنید اگر ویندوزی هستید بهتره یکی از برنامه های زیر را بگیرید که PHP و MySQL و دیگر مخلفات را داخل خودش دارن :
توجه کنید که یکی از موارد بالا را به انتخاب خودتان نصب و اجرا کنید و ما Xampp را پیشنهاد میکنیم .
برای شروع یک پایگاه داده با هر اسمی که دوست دارید بسازید و سپس یک جدول درونش به نام SEARCH_ENGINE بسازید .
کد sql زیر به شما کمک میکند یک جدول با نام SEARCH_ENGINE بسازید .
CREATE TABLE SEARCH_ENGINE (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`pageurl` VARCHAR(255) NOT NULL,
`pagecontent` TEXT NOT NULL,
PRIMARY KEY (`id`))
خب ، بعد از اینکه پایگاه داده آماده شد و جدول مورد نظر را ساختیم الان نوبت اینه که یک فرم HTML بسازیم که کاربران نهایی ما وقتی موتور جستجوگر ما را باز میکنند آنرا ببینند و بتوانند عبارت مورد نظر خود را تایپ کنند و دکمه ی جستجو را بزنند .
در ریشه ی اصلی سرور مجازی که نصب کردید یه فایل جدید به نام index.php بسازید و محتویات زیر را درونش کپی کنید .
<html>
<head>
<title> My search engine </title>
</head>
<body>
< form action = 'search.php' method = 'GET' >
< center >
<h1 > My Search Engine </h1 >
< input type = 'text' size='90' name = 'search' >
</ br >
</ br >
< input type = 'submit' name = 'submit' value = 'Search source code' >
< option > 10 </ option >
< option > 20 </ option >
< option > 50 </ option >
</ center >
</ form >
</ body >
</ html >
فرم ما اکنون تکمیل شده و آماده استفاده است. این فرم توسط کاربران نهایی برای ورود به جستجوگر استفاده می شود و در عین حال به کاربران این امکان را می دهد که شماری از نتایج را که باید نشان داده شوند محدود کنند.
برای این کار ابتدا یک فایل دیگر PHP به نام search.php بسازید و در کنار همان index.php که بالا ساختیم قرار دهید . این فایل از بخش های زیر تشکیل خواهد شد .
اتصال به پایگاه داده
از کد زیر برای اتصال به پایگاه داده استفاده کنید
mysql_connect ( "localhost", "USER_NAME", "PASSWORD" ) ;
mysql_select_db ( "DB_NAME" );
خب حالا که اتصال به پایگاه داده برقرار شد بهتره که کوئری مناسب با کلمه یا عبارت مورد جستجو توسط کاربر را بنویسیم .
نوشتن کوئری متناسب با عبارت جستجو شده
کوئری مناسب برای این کار بصورت خیلی ساده طبق کدهای زیر است .
$search_exploded = explode ( " ", $search );
$x = 0;
foreach( $search_exploded as $search_each ) {
$x++;
$construct = " ";
if( $x == 1 )
$construct .= "keywords LIKE '%$search_each%' ";
else
$construct .= "AND keywords LIKE '%$search_each%' ";
}
$construct = " SELECT * FROM SEARCH_ENGINE WHERE $construct ";
$run = mysql_query( $construct );
کار بعدی ما واکشی اطلاعات از پایگاه داده و نمایش آن به کاربر است . اگر جستجو نتیجه ای دربرنداشت هم باید پیامی به کاربر ارسال کنیم .
واکشی نتیجه از پایگاه داده و قرار دادن نتیجه در اختیار کاربر . طبق کدهای زیر باید انجام بگیرد .
if ($foundnum == 0)
echo "Sorry, there are no matching result for <b> $search </b>.
</ br >
</ br > 1. Try more general words. for example: If you want to search 'how to create a website' then use general keyword like 'create' 'website'
</ br > 2. Try different words with similar meaning
</ br > 3. Please check your spelling";
else {
echo "$foundnum results found !<p>";
while ( $runrows = mysql_fetch_assoc($run) ) {
$title = $runrows ['title'];
$desc = $runrows ['description'];
$url = $runrows ['url'];
echo "<a href='$url'> <b> $title </b> </a> <br> $desc <br> <a href='$url'> $url </a> <p>";
}
}
اکنون موتور جستجوی ساده ی ما آماده است . در زیر کد کامل search.php را میبینید .
<?php
$button = $_GET[ 'submit' ];
$search = $_GET[ 'search' ];
if( !$button )
echo "you didn't submit a keyword";
else {
if( strlen( $search ) <= 1 )
echo "Search term too short";
else {
echo "You searched for <b> $search </b> <hr size='1' > </ br > ";
mysql_connect( "localhost","USERNAME","PASSWORD") ;
mysql_select_db("DBNAME");
$search_exploded = explode ( " ", $search );
$x = 0;
foreach( $search_exploded as $search_each ) {
$x++;
$construct = "";
if( $x == 1 )
$construct .="keywords LIKE '%$search_each%'";
else
$construct .="AND keywords LIKE '%$search_each%'";
}
$construct = " SELECT * FROM SEARCH_ENGINE WHERE $construct ";
$run = mysql_query( $construct );
$foundnum = mysql_num_rows($run);
if ($foundnum == 0)
echo "Sorry, there are no matching result for <b> $search </b>. </br> </br> 1. Try more general words. for example: If you want to search 'how to create a website' then use general keyword like 'create' 'website' </br> 2. Try different words with similar meaning </br> 3. Please check your spelling";
else {
echo "$foundnum results found !<p>";
while( $runrows = mysql_fetch_assoc( $run ) ) {
$title = $runrows ['title'];
$desc = $runrows ['description'];
$url = $runrows ['url'];
echo "<a href='$url'> <b> $title </b> </a> <br> $desc <br> <a href='$url'> $url </a> <p>";
}
}
}
}
?>
موتور های جستجوگر معمولا پیشرفته تر هستند یعنی شامل بخش ها و کدهای زیادی هستند که برای مثال یک عبارت خاص را از بین میلیون ها اسناد واکشی میکنند و نتایج را دسته بندی و مرتب سازی کرده و به کاربر نهایی نمایش میدهند .
حالا این وسط ممکن است کاربر نهایی یکی از عبارت ها را اشتباه تایپ کرده باشد ولی موتور جستجوگر شما باید قادر باشد آنرا بفهمد
یا مثلا کاربر کلمه ی دقیق یک چیزی را به یاد نمی آورد و با اشاره به کلمات مشابه آن میخواهد آنرا پیدا کند گوگل این قابلیت را دارد که به این شخص در پیدا کردن گمشده ی خود کمک کند
پس موتور های جستجوگر بزرگ در اینترنت بسیار گسترده تر از حوصله ای این آموزش و گنجایش اینجاست . ما قصد داریم اساس و پایه را یاد بگیرید سپس میتوانید آنرا گسترش دهید و حداقل یک موتور جستجو متوسط برای ایران بسازید که بومی باشد و به درد بخور !!!
همانگونه که بالا هم گفتیم خزنده ها یا crawler ها در سرتاسر اینترنت میچرخند و اطلاعات سایت ها را جمع آوری میکنند اما خزنده ها باید لیستی از URL های اینترنتی داشته باشند که به آنها رجوع کنند . برای این کار چند روش کلی وجود دارد که در زیر به آنها پرداخته ایم .
ابتدا یک تجزیه کننده ی لینک ها مینویسیم تا لینک های واقعی را بشناسیم . کدهای زیر را ببینید .
$file_handle = fopen( " Quantcast-Top-Million.txt ", "r" );
while ( !feof ( $file_handle ) ) {
$line = fgets( $file_handle );
if( preg_match( '/^\d+/',$line ) ) { # if it starts with some amount of digits
$tmp = explode( "\t",$line );
$rank = trim( $tmp[0] );
$url = trim( $tmp[1] );
if( $url != 'Hidden profile' ) { # Hidden profile appears sometimes just ignore then
echo $
}
}
}
fclose( $file_handle );
سپس کد خزنده را برای دریافت محتوای یک URL مینویسیم که دانلود کردن دااده های سایت های در لیست ممکن است کمی زمان ببرد .
$file_handle = fopen("urllist.txt", "r");
while (!feof($file_handle)) {
$url = trim(fgets($file_handle));
$content = file_get_contents($url);
$document = array($url,$content);
$serialized = serialize($document);
$fp = fopen('./documents/'.md5($url), 'w');
fwrite($fp, $serialized);
fclose($fp);
}
fclose($file_handle);
خزنده ی بالا یک خزنده ساده ی تک رشته ای است که داخل حلقه ای تمامی URL ها را واکشی میکند اطلاعات آنها را دریافت و در دیسک ذخیره سازی میکند .
نکته ای که وجود دارد این است که URL به همراه محتوای آن هم در یک فایل ذخیره میکنیم و این URL به رتبه بندی لیست و همچنین برای اینکه متوجه شویم منبع این محتوا کجاست به درد میخورد .
بخش INDEX
این بخش باید مسئولیت هایی را برعهده ی خود داشته باشد :
با تعاریف بالا باید interface خود را به شکل زیر داشته باشیم
interface iindex {
public function storeDocuments($name,array $documents);
public function getDocuments($name);
public function clearIndex();
public function validateDocument(array $document);
}
هر چند پیاده سازی یک موتور جستجو کار ساده ای نیست ولی ما سعی کردیم کلیت موضوع را در این مقاله برای شما آشکار کنیم . چیزی که شما نیاز دارید این است که الان بدون ترس وارد کدها شوید و تمرین و تست کنید برای هر بخشی کی راه کاری مطمئنا وجود دارد .