برترین مقالات کامپیوتر

برترین مقالات کامپیوتر

برترین مقالات کامپیوتر

برترین مقالات کامپیوتر

چگونه page rank خود را در گوگل افزایش دهیم ؟

گونه page rank خود را در گوگل افزایش دهیم ؟
همانطور که می‌دانید، سیستم رتبه بندی گوگل در دوره‌های زمانی خاصی مجددا سایت‌های موجود را رتبه‌بندی می‌کند و سایت‌های زیادی در این میان با کاهش رتبه مواجه می‌شوند. در این مقاله می خواهیم در مورد روش‌های جلوگیری از کاهش رتبه و همچنین راه های کسب امتیاز صحبت کنیم.

1- تنوع در لینک ورودی:
یکی از بهترین مکان‌هائی که مشتریان می‌توانند سایت شما را پیدا کنند موتورهای جستجو هستند. اما شما نباید فقط به این بسنده کنید. شما بایستی سعی نمائید لینک سایتتان را در سایت‌های دیگران منتشر کنید.
به طور خلاصه می توان اینگونه بیان کرد: سعی کنید توسط دیگر وبلاگها یا وب‌سایت‌ها به شما لینک داده شود اگر لینک شما یک سویه و ورودی باشد تنها دیگران به وبلاگتان لینک دهند رتبه شما افزایش می یابد .لینک دوسویه یعنی لینکها در هر دوطرف باشد که امتیاز کمتری دارد و اگر تنها لینک دیگر سایت‌ها و وبلاگها را یک سویه بگذارید، به طور شدید نمره شما کم می شود .
نرم افزار رتبه بندی چنین محاسبه می کند که هر چقدر بیشتر به یک صفحه اینترنتی لینک داده شده باشد پس از اهمیت خاصی برخوردار است .
توجه داشته باشید که تلاش برای افزایش رتبه وبلاگ و سایتی بی محتوا یا کم محتوا کار بیهوده ایست ، آنچه بیش از همه در بالا بردن رتبه شما در موتورهای جست و جو نقش دارد میزان محتوای سایت شماست، پس تلاش خود را بیشتر بر روی محتوای خود متمرکز کنید و بدانید که اگر محتوای بهتری ارائه کنید از سوی دیگران مورد حمایت قرار خواهید گرفت.

2- استفاده از سایت‌های با رتبه بالا:
نکته دیگر اینکه سعی کنید از سایت‌هائی که رتبه بالائی دارند برای اضافه کردن لینک استفاده کنید. فرستادن اخبار مربوط به سایت شما به‌همراه لینک سایت به سایت‌های خبری با رتبه بالا، یا حتی ارائه مقالات سایت‌تان در سایت‌های با رتبه بالا می‌تواند تاثیر مناسبی در افزایش یا نگهداری رتبه سایت شما داشته باشد.

3- نام دامنه مناسب :
تا حد امکان سعی کنید از نام دامنه کوتاه استفاده نمائید. بسیاری از افراد در معرفی حضوری یک وب سایت ، نامهای کوتاه‌تر را به سادگی معرفی می‌کنند و شنوندگان هم آسانتر نامهای کوتاه را به خاطر می‌سپارند. این نکته را فراموش نکنید که راحتی نام اثر غیرمستقیم دارد یک کارشناس SEO در وبلاگش آورده بود که سعی کنید در نام دامنه یاهمان آدرس اینترنتی وبلاگ و وب سایت خود از دو مقوله بهره ببرید اول، از کلمات معنادار لاتین بهره ببرید به خصوص کلمات کلیدی در گروهی گه نگارش می کنید؛ کلمات فارسی با حروف انگلیسی به شدت رتبه شما را کاهش می دهد، می توانید از دامینی مشابه دامین های مشهور با رنک بالا استفاده کنید .

4- استفاده از تبلیغات معمولی :
سعی کنید نام سایت خودتان را بر روی خودکار یا اجناس تبلیغاتی دیگر منتشر کنید. به این ترتیب بازدیدکنندگان زیادی را به سایت خود اضافه خواهید نمود. این توصیه شاید بطور مستقیم باعث افزایش یا نگهداری رتبه سایت شما نشود اما بطور غیر مستقیم در معرفی سایت شما به موتورهای جستجو موثر خواهد بود.

5- استفاده از محصولات با قابلیت توزیع :
ارائه کتاب‌های الکترونیکی یا مقالات مفید یا حتی ارائه محصولات نرم‌افزاری رایگان در سایت شما، کمک زیادی به افزایش بازدیدکنندگان و همچنین معرفی سایت شما در دیگر سایت‌ها و در نتیجه افزایش رتبه شما خواهد داشت.

6- بررسی وضعیت لینک‌های سایت :
همیشه در معرفی سایت‌های دیگران در سایت‌تان مراقب باشید. بسیاری از این نوع سایت‌ها بعد از مدتی لینکشان را عوش می‌کنند یا اینکه بدلیل مشکلات فنی درست کار نمی‌کنند. سعی کنید مجموعه لینک‌های سایت خودتان را مرتب بررسی نمائید و لینکها نادرست را حذف یا تصحیح نمائید. تعداد بیشتر لینک‌های بدون استفاده در یک سایت باعث کاهش بیشر رتبه سایت در موتورهای جستجو خواهد‌شد.

7- استفاده از کلمات کلیدی :
هیچگاه از استفاده صحیح از کلمات کلید غافل نشوید. مرتب کلمات کلید سایت خود را بررسی کرده و در صورت نیاز کلمات آنرا تصحیح نمائید. به خاطر داشته باشید که این تغییرات بصورت افزایش باشد. تغییر یکباره کل کلمات کلید سایت می‌تواند تاثیر بسیار مخربی بر روی رتبه سایت شما در موتورهای جستجو داشته ‌باشد.

انتقال Add list ها از یک ID به ID دیگر

در ورژنهای قبلی یاهو مسنجر یکی از مشکلات کاربران پس از ساخت ID جدید این بود که تمامی Add list های خودشان را در ID قبلی از دست میدادند. اما در یاهو7 قابلیتی به یاهو مسنجر اٿزوده شد که به وسیه آن میتوانید تمامی Add های خود را در ID قبلی به ID جدیدی که ساختید انتقال دهید. این عمل به سادگی و با یک ترٿند قابل انجام است.

برای این کار:
ابتدا میبایست به ID که لیست دوستانتان در آن است login بشوید.
سپس ID جدید را که میخواهید Add list هایتان را به آن اضاٿه کنید add کنید.
بعد از add شدن ID جدید بر روی آن راست کلیک کرده و گزینه Send My Messenger List را انتخاب کنید.
در پنجره باز شده ، ID دوستانی را که میخواهید انتقال یابند را تیک زده و بر روی دکمه Finish کلیک کنید.
حال پیغامی را مبنی بر اینکه تعداد مشخصی از دوستانتان به ID جدید انتقال یاٿته اند مشاهده خواهید کرد.
در مرحله پایانی میبایست با ID که add list را برایش ٿرستاده اید لوگین بشوید.
به محض ورود با پیغامی روبرو خواهید شد که باید بر روی View Contacts کلیک کرده تا ID های ٿرستاده شده را دریاٿت کنید.
حال تمامی add list های ID قبل را در ID جدید خود دارید.

نکته مهم جهت بهبود سرعت اینترنت

شما میدانید که هر گاه که یک URL را از مرورگر درخواست میکنید مرورگر(Internet Explorer )جهت مشخص شدن IP ادرس (هر کامپیوتر درشبکه یک ادرس منحصر به فرد دارد که به فرم چهار عدد که میتوانند از صفر تا 255 باشند و با یک نقطه از هم جدا میشوند مثل.127.0.0.1 که ادرس خود ماشین محلی است) ان به یک تحلیلگر حوزه (DNS) یک درخواست میدهد که حال اگر ان DNS ان IP راداشت که میفرستد والا او هم درخواستی به یک DNS دیگر میفرستد تا بلاخره این ادرس کشف شود در تمامی این مراحل هنوز کاربر هیچ داده ای از ان ادرس را دریافت نکرده است حال اگر ما به نحوی این ادرسها را در کامپیوتر خود ذخیره کنیم دیگر نیازی به تکرار این عملیات نیست . ومستقیما با ان ادرس ارتباط برقرار میکنیم حتی میتوانیم در مرورگر هم با نوشتن ادرس IP مستقیما با سرور ارتباط برقرار کنیم و DNS را دور بزنیم...

www.isfahan4u.com

"

نوشتن Email به فارسی

نوشتن Email به فارسی و به صورتی که بتوان برای آن راه حلی کلی و جامع ارائه کرد ، تا قبل از آمدن Windows 2000 امکان پذیر نبود. برای نوشتن نامه های فارسی و Chat کردن رایج ترین روش استفاده از زبان Pinglish بود (و چه بسا بتوان گفت هست) . در این روش کلمات فارسی با استفاده از کاراکترهای انگلیسی تایپ می شدند:

Hale Shoma Khoob ast? در مورد وب سایت های فارسی نیز دو روش رایج بود: اول استفاده از فونت هایی که برای هر سایت میتوانست فرق کند . بنابراین شما برای خواندن یک وب سایت فونت مخصوصش را download و نصب می کنید و برای سایت دیگر فونت دیگری را و الی آخر.

روش دوم استفاده از سیستم PDF است که گر چه از نظر نصب فونت و ... مشکلات اولی را ندارد ، ولی به خاطر حجیم بودن فایلها معمولاً در اینترنت از آن استقبال زیادی نمی شود. در همین روش می توان به تبدیل مطالب به عکس نیز اشاره کرد ( البته PDF هم به نوعی همین ساختار است ، ولی با امکانات بیشتر ، مثل قابلیت جست و جو درون مطالب PDF شده ، امکان گذاردن link و...). در روش تبدیل مطالب فارسی به عکس با استفاده از نرم افزارهای گرافیکی مطلبی که در آن نرم افزار و یا جای دیگر تایپ شده است ، به عکس با فورمت GIF و یا JPG تبدیل می شود . دراین حالت نیز اگر چه حجم فایل ها به اندازه سیستم PDF حجیم نخواهد بود ولی باز هم حجیم بودن مطالب از مشکلات استفاده از آن است.

در حال حاضر با توجه به سیستم UniCode که شرکت مایکروسافت آن را همزمان با Windows 2000 معرفی کرد ، استفاده از زبان فارسی چه در وب سایت ها و چه در email ها حالتی استانداردتر به خود گرفته است. UniCode که مخفف Universal Code و به معنی کد جهانی است مجموعه ای از بسیاری از زبان های رایج در دنیا و از جمله فارسی را دارد که در صورت استفاده از سیستم عامل ویندوز ، دیگر نیازی به نصب فونت بخصوصی وجود ندارد و کافی است روی آن صفحه right click کنید ، Encoding و سپس UTF-8) UniCode ) را انتخاب کنید.

استفاده از سیستم UniCode علاوه بر تمام مزایای فوق ، یک مزیت دیگر نیز دارد و آن این است که آن سایت بخصوص راحت تر در جست و جوگرهای فارسی ثبت خواهد شد ، چرا که جست و جو گرهایی که خدمات جست و جو به زبانهای دیگر را می دهند ( مثلgoogle.com که از جمله قابلیت جست و جو به زبان فارسی را دارد) ساختار جست و جوی خود را بر اساس سیستم Unicode بنا نهاده اند و بنابراین عدم استفاده از این سیستم سایت شما را از ثبت شدن در این جست و جو گرها باز می دارد. البته همانطور که اشاره شد این سیستم فقط در سیستم عامل ویندوز و مرورگر Internet Explorer کاربرد دارد . بنابراین اگر شما سیستم عامل مکینتاش و یا مرورگر Netscape داشته باشید نمی توانید این گونه صفحات را ببینید. و اما برای نامه نگاری در اینترنت – ارسال و دریافت e-mail نیز همان دو روش که در مورد وب سایت ها اشاره شد کاربرد دارد: یکی استفاده از عکس و دیگری استفاده از سیستم Unicode توصیه می شود. البته در این حالت علاوه بر ایرادهایی که اشاره شد این محدودیت نیز وجود دارد که حتماًٌ باید دارای سیستم عامل windows 2000 و یا windows xp باشید. برای آنکه بتوانید از این سیستم استفاده کنید ابتدا لازم است قابلیت تایپ کاراکترهای فارسی را در ویندوز 2000 یا xp خود تعریف کنید. برای این کار به Control Panel بروید ، Regional , Language Options را انتخاب کنید و زبان فارسی را به مجموعه زبان های مورد استفاده کامپیوتر خود اضافه کنید. از این به بعد در پایین صفحه سمت راست کنار ساعت کامپیوتر شما مربعی ظاهر خواهد شد که درآن FA ( برای فارسی) و یا EN ( برای انگلیسی) ظاهر می شود که با کلیک کردن روی آن می توانید بین این دو زبان سوئیچ کنید.

بعد از آنکه زبان کاراکترهای کامپیوتر خود را فارسی کردید ، کافی است به همان صورتی که مثل همیشه Email می نویسید ، عمل کنید و تنها هنگامی که می خواهید متن نامه را بنویسید از زبان فارسی استفاده کنید. در این حالت مهم نیست که شما از سیستم Web based email و یا نرم افزارهای ویرایشگر مثل Outlook Express استفاده می کنید.

برای خواندن چنین نامه هایی نیز کافی است که محیطی که در آن نامه را می خوانید سیستم Unicode را پشتیبانی کند. بنابراین اگر از سیستم Web based email استفاده می کنید کافی است تا تنظیمات Internet Explorer را به گونه ای تغییر دهید که Unicode را پشتیبانی کند و اگر از Outlook Express استفاده می کنید کافی است تا در قسمت view, Encoding, Unicode را انتخاب کنید. بعدا در این رابطه بیشتر صحبت خواهیم کرد.

ADSL چیست؟

ADSL یکی از خانواده های Digital Subscriber Line (DSL) یا همان خطوط دیجیتال استیجاری می باشد. اعضای DSL معمولا به صورت xDSL نامگذاری می شوند. این خطوط از تمامی پهنای موجود در خطوط مسی دوطرفه استفاده می کنند تا بالاترین سرعت ممکن در ثانیه را بر خلاف خطوط معمول ارائه دهند.ADSL(Assymetric DSL) در واقع نوعی از DSL ها می باشد که ارتباط آن نامتقارن می باشد;یعنی سرعت ارسال داده در ثانیه کمتر از دریافت آن می باشد.انواع دیگری از xDSL ها موجود می باشند که از جمله آنها می توان به HDSL(High-Speed DSL) و SDSL(Symetric DSL) اشاره کرد.

ADSL پهنای باند 1.1 مگاهرتزی خطوط مسی را به کانال های 4 کیلوهرتزی تقسیم می کند و آخرین کانال را جهت ارسال صدا و فاکس معمولی تخصیص می دهد و 256 کانال دیگر را برای انتقال دو طرفه اطلاعات استفاده می کند; به این ترتیب که 64 کانال را برای خط ارسال اطلاعات و 128 کانال دیگر را جهت دریافت اطلاعات استفاده می کند. در بهترین حالت اگر 192 کانال 4 کیلو هرتزی موجود را استفاده کند، در تئوری سرعت باید به حدود 9 مگابیت در ثانیه برسد. در حال حاضر سرعت خطوط ADSL در بهترین حالت 2 مگابیت در ثانیه می باشد.در عمل، این خطوط اطلاعات زنجیره وار دیجیتال را به اطلاعات پارالل در دو سر انتقال اطلاع تبدیل می کنند. دقیقا مشابه کاری که در مودم های خطوط عادی انجام می شود.

 


سرعت انتقال اطلاعات در محدوده ذکر شده به عواملی از جمله فاصله ارتباطی و نوع سیم استفاده شده بستگی دارد.


راهنمای ارسال سایت به دایرکتوری باز(Search engines

اولین قدم برای بالا بردن رتبه یک سایت در موتورهای جستجو ثبت سایت در دایرکتوری باز است. موتورهای جستجو خصوصا گوگل به سایتهای ثبت شده در دایرکتوری باز اهمیت می دهند.

لیست شدن در دایرکتوری باز (Open directory) خیلی مهم است زیرا گوگل به سایتهایی که در دایرکتوری باز لیست شده اند خیلی اهمیت می دهد. قبل از ارسال نگاهی به کل سایت بیندازید تا مطمئین شوید هیچ گرافیک (عکس) گم شده  ، پیوند خراب (به هیچ صفحه ای اشاره نمی کند) و علامت در دست ساخت وجود ندارد. غلت املایی و گرامری متنها را بررسی کنید. بعلاوه سایت شما باید محتوای بکر داشته باشد. اگر فقط پیوند به سایتهای دیگر باشد یا از محتوای سایر سایتها (affiliate) استفاده کنید با مشکل مواجه می شوید ، دایرکتوری باز این سایتها را نگه نمی دارد. انتخاب عنوان و توصیف

در ابتدا دو کلمه کلیدی مهم را (بر پایه ی محبوبیت کلمه) برای سایت انتخاب کنید. دو کلمه که با استفاده از آن جستجوگران به سایت شما می رسند. شما انتخاب زیادی برای عنوان سایت ندارید دایرکتوری باز اصرار می ورزد که عنوان سایت باید اسم رسمی سایت باشد ، هیچ راه دیگری نیست. توصیف باید یک جمله باشد که موضوع سایت را برساند. همچنین حاوی دو کلمه کلیدی که انتخاب کرده اید و تا آنجایی که ممکن است این کلمات در ابتدای توصیف باشند. اما توصیف شما نباید فقط کلمه کلیدی باشد توصیف باید یک جمله کامل با گرامر درست باشد. به یاد داشته باشید زمانی که توصیف صفحه را می نویسید تا آنجا که می توانید کار ویرستارها را ساده کنید. شما نباید بگذارید ویرستارها احساس کنند که متن شما به هر طریقی نیاز به ویرایش دارد. زمانی که ویرستارها شروع به ویرایش می کنند شما با خطر حذف شدن کلمات کلیدی که انتخاب کرده اید مواجه می شوید. این قوانید را برای ساختن توصیف به خاطر بسپارید :

مطمئین باشید که توصیف سایت به بازدید کنندگان می گوید که سایت درباره ی چه موضوعی است جملاتی مثل "از سایت ما دیدن کنید" یا "به سایت من خوش آمدید" به بازدید کنندگان نمی گویند که سایت شما چکار می کند.

از علامت تعجب دوری کنید. همچنین از جمله هایی با تمام حروف بزرگ استفاده نکنید ، فقط حرف اول کلمه می تواند بزرگ باشد آنهم نه همه ی کلمات فقط اولین کلمه یا اسم ها.

متن توصیف را سوم شخص بنویسید . نگویید ما ارائه می دهیم بگویید ارائه ی

توصیف سایت را به 15 کلمه محدود کنید. اگر خوش شانس باشید ممکن است توصیف بیشتر از 15 کلمه قبول شود اما توصیفهای طولانی تر احتمال بیشتری دارند که ویرایش شوند.

بررسی غلت املایی و گرامری را فراموش نکنید.

انتخاب طبقه

به دایرکتوری باز بروید و با دو کلمه کلیدی که انتخاب کرده اید جستجو کنید. آیا طبقه (Category) خاصی در قسمت طبقه ها نمایان می شود؟ به آن طبقه بروید و بررسی کنید که آیا سایتهای آن طبقه شبیه سایت شما هستند. همچنین توصیف آن طبقه را بخوانید تا بفهمید آیا آن طبقه مناسب است. اگر چند طبقه نمایان شد به همه آنها سر بزنید و مناسب ترین را انتخاب کنید.  برای بعضی از کلمات هیچ طبقه ای نمایان نمی شود در این حالت بررسی کنید بیشتر سایتهای لیست شده به کدام طبقه تعلق دارند ، آن طبقه  را انتخاب کنید. زمانی که طبقه مناسب را پیدا کردید روی add URL کلیک کنید و فرم آن را پر کنید. با وجود این که میل اختیاری است توصیه می کنم آن را وارد کنید. تا در صورتی که سایت شما رد شد ویرستارها بتوانند با شما تماس بگیرند.اگر سایت قبول نشد

بعد از ارسال سایت ، به طبقه ای که آن را ارسال کرده اید سر بزنید تا ببینید چه موقع لیست می شود. اگر سایت در آن طبقه نبود با نام حوزه جستجو کنید تا مطمئین شوید در طبقه دیگری لیست نشده. لیست شدن سایتها معمولا دو تا سه هفته زمان می برد. اگر سایت شما بعد از سه هفته لیست نشد ، دوباره آن را به همان طبقه ارسال کنید و تا سه هفته دیگر منتظر شوید. اگر باز هم سایت شما لیست نشد ، به سایت خود نگاه کنید تا مطمئین شوید هیچ عکس گم شده ، پیوند خراب یا علامت در دست ساخت وجود ندارد به غلت املایی و گرامری توجه کنید. همچنین سایت باید محتوای خوبی ارائه کند. اگر متقاعد شدید که سایت شما واجد شرایت برای دایرکتوری باز است. سایت شما به خاطر یکی از این دلایل لیست نشده :

ویرستار این طبقه فعال نیست و سایتها را باز بینی نمی کند.

ویرستار طبقه رقیب شما است و نمی خواهد شما لیست شوید.

در این حالت برای برای ویرستار میل بفرستید. برای فرستادن میل روی اسم ویرستار در پایین صفحه کلیک کنید. اگر آن طبقه ویرستار ندارد به طبقه ی بالا بروید . روی "Send to editorname" کلیک کنید و یک پیام مودبانه برای ویرستار بفرستید. بگویید که سعی می کنید یک سایت را به دایرکتوری باز ارسال کنید اما موفق نمی شوید. جزئیات ارسال را بگویید ( طبقه ای که انتخاب کرده اید ، URL ، عنوان و توصیف) و سوال کنید اشتباه شما کجا است. اگر بعد از دو هفته هیچ پاسخی دریافت نکردید یک طبقه مناسب دیگر انتخاب کنید و از همان روش قبلی برای ارسال استفاده کنید.

لیست شدن مجدد

ممکن است بخواهید سایت خود را بیش از یک بار لیست کنید. برای این کار دو کلمه کلیدی که با کلمات قبلی متفاوتند انتخاب کنید. یک طبقه دیگر که مناسب سایت شما است اتخاب کنید و سایت خود را با توصیف جدید که حاوی کلمات کلیدی است ارسال کنید. اگر خوش شانس باشید ممکن است در طبقه جدید لیست شوید. مخصوصا اگر ویرستار این طبقه با طبقه ای که سایت شما هم اکنون در آن لیست شده متفاوت باشد. اگر طبقه دومی که انتخاب کرده اید یک طبقه ناحیه ای باشد شانس شما بیشتر می شود. به همین شکل اگر در یک شاخه ناحیه ای لیست شده اید می توانید در یکی از شاخه های اصلی لیست شوید به شرط این که خدمات و محصولات شما محدود به یک ناحیه خاص نشود. با ارسال یکی از صفحات داخلی باز هم شانس شما بیشتر می شود. ارسال صفحات داخلی این مزیت را دارد که دیگر نیاری نیست عنوان ، اسم رسمی سایت باشد در نتیجه می توانید کلمات کلیدی را در عنوان قرار دهید. قبل از ارسال صفحات داخلی عنوان صفحه را (که در بالای پنجره کاوشگر نشان داده می شود ، تگ Title) به آنچه که به دایرکتوری باز ارسال می کنید تغییر دهید. این کار شانس قبول سایت را توسط ویرستاران افزایش می دهد.

فراموش نکنید صفحات داخلی باید یگانه داشته مناسب آن شاخه باشند. صفحات راه رو را ارسال نکنید. همچنین صفحات را بیش از اندازه ارسال نکنید ، این کار خرابکاری در نظر گرفته می شود

 

پروکسی و فیلتر چیست ؟

کلمه پروکسی Proxy که امروزه زیاد شنیده می شود و همه جا مترادف با فیلتر و محدودیت بیان می شود .
اما فیلتر چیست ونحوه کار آن به چه صورت است ؟
Proxy Server معمولا به عنوان بخشی از دیوار آتش سرویس دهندگان اینترنت مورد استفاده قرار می گیرد و نحوه کار آن به این صورت است :
وقتی که کاربر در یک شبکه محلی می خواهد به یک سرویس دهنده اینترنت دست رسی داشته باشد یک در خواست از کامپیوتر به سرویس دهنده Proxy می فرستد . سپس سرویس دهنده Proxy اطلاعات را از سرویس دهنده اینترنت به کامپیوتر درون شبکه داخلی می فرستد .
و به صورت دقیق تر Proxy بسته های اطلاعات یعنی اطلاعات در حال عبور از شبکه را مورد کنترل و برسی قرار می دهد 0(اطلاعات در حال عبور شامل IP فرستنده و دریافت کننده همچنین Protocol مورد استفاده برای ارسال بسته های اطلاعاتی و اطلاعاتی از این قبیل می باشد )و می تواند انتقال بسته های مشخص را از اینترنت به شبکه داخلی و برعکس را مسدود کند.
این مطالب یک تعریف بسیار ساده از پروکسی است

مقدمه ای بر برنامه نویسی شی گراء در دات نت

برنامه نویسی شی گراء، بدون شک مهمترین تحول در دنیای نرم افزار طی سالیان گذشته بوده که بیشترین تاثیر را در پیشبرد نرم افزار بدنبال داشته  و ما امروز در صنعت گسترده نرم افزار از دستاوردهای وسیع  آن بهره مند هستیم . در این مقاله قصد داریم ، به بررسی برنامه نویسی شی گراء پرداخته و از این زاویه نگاهی به دات نت  داشته باشیم .

بمنظور شناخت برنامه نویسی شی گراء ، کافی است به اطراف خود نگاهی داشته باشیم .جارو برقی ، قهوه جوش ، پنکه سقفی  و مجموعه بسیار گسترده ای  از سایر اشیاء را پیرامون زندگی خود مشاهده می نمائیم . اشیاء ما را محاصره و یا در محاصره اشیاء می باشیم . برخی از این اشیاء نظیر دوربین ، مستقل عمل نموه و برخی دیگر نظیر تلفن و ماشین های پاسخگو با سایر اشیاء ارتباط دارند . برخی از اشیاء دارای داده ها ئی می باشند که بین کاربران استفاده می گردد(یک دفترچه تلقن) . برخی از اشیاء شامل اشیاء دیگری می باشند، یک دستگاه بستنی ساز درون فریزر ، نمونه ای در این زمینه است .
بسیاری از اشیاء از لحاظ عملکرد با یکدیگر مشابه ولی از لحاظ اهداف با یکدیگر متفاوت می باشند . مثلا" وان حمام و سینک آشبزخانه هر دو امکان استفاده از آب را فراهم می نمایند ،ولی این کار بندرت اتفاق خواهد افتاد که شما در سینک آشبزخانه دوش گرفته و یا ظروف آشبزخانه خود را در وان حمام بشوئید! بهرحال وان حمام و سینک آشبزخانه موجود در منزل ، احتمالا" از یک لوله آب مشترک در ساختمان استفاده و اینترفیس آنها در موارد متعددی مشترک است ( پیچ آب گرم وسرد ، یک شیر آب ، یک فاضلاب ) .
در صورت تامل در ارتباط با اشیاء فوق ، با سوالات متعددی مواجه خواهیم شد . چه تفاوت هائی بین یک وان حمام و سینک آشبزحانه ، وجود دارد ؟ آیا اختلاف موجود به  محل آنها ، اندازه لگن و یا  گودی  آنها از سطح زمین برمی گردد. شباهت موجود بین اشیاء فوق چیست ؟
در برخی موارد انجام عملات یکسان در ارتباط با یک شی ، رفتارهای متفاوتی را بدنبال خواهد داشت . یک شی  قادر به انجام عملیات متفاوتی با توجه به ماهیت وضعیت بوجود آمده است . مثلا "  زمانیکه دکمه
Play  یک دستگاه کنترل کننده DVD و یا VCD فعال می گردد ، دستگاه قوق ، یک فیلم را پخش و ما شاهد نمایش آن بر روی صفحه تلویزیون خواهیم بود. اما اگر یک CD در دستگاه Player باشد ، همزمان با فشردن دکمه Play ، دستگاه Player باعث پخش CD صوتی شده و ما شاهد نواختن موسیقی از بلندگوهای مربوطه خواهیم بود.  همانگونه که مشاهده می گردد در چنین وضعیتی ، فعال نمودن دکمه ها ی مشابه ، عملیات یکسان ولی با  نتایج متفاوت را بدنبال داشته است .
به بسیاری از اشیاء پیرامون خود، می توان بعنوان جعبه های سیاه  (
black box ) ، نگاه نمود.در چنین حالتی نسبت به اصول اولیه عملکرد شی مورد نظر و پردازش های اولیه آن شناخت لازم وجود خواهد داشت ولی بسیاری از جزئیات عملیاتی که یک شی انجام می دهد برای ما ناشناخته خواهد بود. اکثرا" در زمان استفاده از یک شی علاقه مند به رویکرد فوق می باشند ( آشنائی با پتانسیل های شی و نحوه بالفعل نمودن آنان و پرهیز از درگیر شدن و آگاهی از جزئیات مربوطه ) . در چنین مواردی برای استفاده از اشیاء موجود در منزل ، ضرورتی به آگاهی از مکانیزم داخلی بعنوان شرط لازم وجود نخواهد داشت و می توان بدون درگیر شدن در جزئیات از شی موجود استفاده نمود.
بمنظور بررسی موضوع اشاره شده ، می توانیم  نگاهی به عملکرد یک لامپ  100 وات ، داشته باشیم . سیم پیچ درون لامپ چیزی بیشتر از یک مقاومت ساده نیست . زمانیکه برق فعال ( سوئیج  فعال گردد) شده باشد ، حرارت سیم پیچ درون لامپ در حدود 2500 درجه سلسیوس ، خواهد بود.وضعیت فوق ، باعث تشعش گرما ئی متناسب با طول رشته سیم درون لامپ ( قطر خیر ) و حدود 1750 لومن ( واحد پخش نور) می گردد .بدین ترتیب نور مرئی با طول موجی حدود 555 نانومنر را شاهد خواهیم بود. رشته موجود در لامپ از تنگستن تشکیل شده است . آیا به این حجم ازاطلاعات بهمراه جزئیات مربوطه  در زمان استفاده از لامپ ، نیاز خواهیم داشت و یا  صرفا"  می خواهیم زمانیکه سوئیچ فعال می گردد، لامپ روشن و با سایر مسائل و نحوه انجام این کار ، کاری نداریم ؟ در این راستا ، استفاده کنندگان از لامپ آن را بمنزله یک جعبه سیاه در نظر گرفته و صرفا" تمایل به آگاهی از نحوه استفاده از اینترفیس مربوطه برای بخدمت گرفتن پتانسیل موجود را دارند .
هر شی دارای دو خصلت ذاتی است : وضعیت ( 
state ) و رفتار ( Behavior ) . مثلا" یک لامپ  دارای اطلاعاتی نظیر :  روشن/خاموش بودن  ، نام تجاری ، طول عمر و موارد دیگر است که جملگی وضعیت شی فوق را مشخص می نمایند. رفتار لامپ ، شامل ارائه نور و روشنائی است .
یک شی مسلما" نسبت به خود ، بمنزله  یک جزیره است . بسیاری از اشیاء بصورت دسته جمعی و با  تشریک مساعی در یک سیستم  قرار خواهند گرفت . مثلا"  تلویزیون و بلندگوهای آن بخشی از سیستمی می باشند که موسوم به تئاتر خانوادگی است . یخچال و اجاق گاز بخشی از سیستمی با نام آشپزخانه می باشند. این نوع سیستم ها خود متعلق به یک سیستم بزرگتر و با نام آپارتمان و یا خانه می باشند . مجموعه ای از آپارتمانها سیستم دیگری را با نام مجتمع ایجاد می نمایند.
یک نرم افزار را می توان  مشتمل بر مجموعه ای از اشیاء در نظر گرفت که هر یک پتانسیل های لازم را ارائه و با بخدمت گرفتن آنان و بهره گیری از پتانسیل های موجود زمینه نیل به اهداف  مورد نظر فراهم خواهد شد.   بمنظور طراحی و پیاده سازی یک برنامه شی گراء در اولین  مرحله می بایست ، اقدام به طراحی و ایجاد اشیاء مورد نظر با توجه به اهداف نرم افزار نمود.مرحله فوق ، اولین گام و بدون شک مهمترین مرحله در فرآیند ایجاد یک سیستم است . در مرحله دوم که ارزش آن شاید بمراتب بالاتر از مرحله قبل باشد ، می بایست نحوه ارتباط اشیاء با یکدیگر بدرستی مشخص گردد. در زمان ایجاد یک سیستم بزرگ که دارای پیچیدگی های خاص خود است ، می بایست نسبت به دو مرحله فوق ، شناخت لازم وجود داشته و بدون آگاهی لازم ، امکان ایچاد اینچنین سیستم های بزرگی با رویکرد شی گراء ، چالش های خاص خود را بدنبال خواهند داشت .  در چنین مواردی می توان فرآیند پیاده سازی یک سیستم را شامل دو مرحله مهم طراحی شی گراء و برنامه نویسی شی گراء در نظر گرفت . برنامه نویسی مبتنی بر عنصر ، پایه و اساس این نوع سیستم ها محسوب می گردد .  برنامه نویسی اشیاء در نرم افزار ، نیازمند یک زبان برنامه نویسی شی گراء نمی باشد و اگر از یک زبان برنامه نویسی شی گراء استفاده می گردد ، بدین مفهوم نخواهد بود که کد نوشته شده ، شی گراء خواهد بود. زبان ها صرفا" می توانند کمکی در فرآیند فوق را ارائه و هیچگونه تضمینی در این رابطه را ارائه نخواهند داد. با استفاده از ویژوال بیسیک ، امکان نوشتن نرم افزار شی گراء وجود خواهد داشت . البته لازم است به این موضوع اشاره گردد که نوشتن برنامه شی گراء در ویژوال بیسیک همواره بسادگی انجام نخواهد شد ، چراکه  ویژوال بیسیک همواره دارای رویکردی شی گراء نمی باشد. پیاده سازی عناصر باینری با قابلیت استفاده مجدد در ویژوال بیسک در حال حاضر میسر و امکان پذیراست ولی استفاده از اینگونه عناصر  بین زبان های متفاوت چالش های خود را بدنبال خواهد داشت . با عرضه دات نت که مطابق آخرین دستاوردهای علمی ایجاد شده است ، ویژوال بیسیک دات نت بعنوان یکی از زبانهای حمایت شده ،  دارای امکانات قدرتمند وغنی بمنظور استفاده ازمزایای آخرین دستاوردهای پیاده سازی در برنامه نویسی شی گراء است .

ویژوال بیسیک دات نت و برنامه نویسی شی گراء
ویژوال بیسیک دات نت یک زبان برنامه نویسی شی گراء کامل است . این بدان معنی است که زبان فوق از چهار اصل برنامه نویسی شی گراء یعنی : انتزاع (abstraction ) ، کپسوله سازی کد و داده  ( encapsulation  ) ، وراثت  ( inheritance) ، چند ریختی ( polymorphism ) حمایت می نماید. در ادامه با اصول چهار گانه فوق بیشتر آشنا شده و مشاهده خواهیم کرد که هر یک از اصول فوق، چه دستاوردی را  برای پیاده کنندگان نرم افزار شی گراء بدنبال خواهند داشت .

انتزاع  ( abstraction )
رادیو دارای یک تیونر ، یک آنتن ، یک پیچ صدا و یک سوئیچ روشن و خاموش است . بمنظور استفاده از رادیو، ضرورتی به به آگاهی از نحوه دریافت سیگنال هائی رادیوئی توسط آنتن مربوطه ، تبدیل آنان به سیگنال های الکتریکی ، تقویت قدرت آنان بر اساس یک مدار تقویت کننده فرکانس بالا ، نخواهد بود. در این راستا لازم نیست از نحوه فیلتر نمودن نتایج ، تقویت و تبدیل آنان به صوت ، آگاهی داشت .ما صرفا" رادیو را روشن و پس از تنظیم ایستگاه مورد علاقه خود ، از آن استفاده می نمائیم . بدین ترتیب استفاده کنندگان می توانند بدون آگاهی از جزئیات داخلی از رادیو استفاده نمایند. ویژگی فوق ،  بسیار مهم بوده و امکان استفاده از رادیو برای هر شخص فراهم می گردد ( نه فقط افرادیکه دارای اطلاعات فنی در رابطه با نحوه عملکرد آن می باشند). بنابراین می توان این استنباط را داشت که رادیو یک شی است که بگونه ای طراحی شده است که پیچیدگی ها ی مربوط نمایان نباشد ( مخفی شدن پیچیدگی ) .
در نرم افزار شی گراء ، پیچیدگی با استفاده از انتراع ، مدیریت می گردد . انتزاع ، فرآیندی است که بر اساس آن رفتار حیاتی و مهم یک شی مشخص و جزئیات نامرتبط  ، حذف می گردد. یک انتزاع خوش فکر ، عموما" ساده بوده و  سمت و سوی آن نگریستن به موضوع (شی ) از دیدگاه کاربر است . فرآیند انتزاع ، نسبت به ساختار و ماهیت شی مورد نظر متفاوت بوده و لازم است برای ایجاد یک انتزاع برتر و مناسب ، موضوع بدفعات و از زوایای متفاوت مورد بررسی قرار گیرد.مثلا" در صورتیکه  بخواهیم  از رادیو با دو هدف متفاوت : گوش دادن به موزیک و یا آمورش اصول الکترونیک ، استفاده نمائیم ، نگرش به انتزاع رادیو در هر یک از موارد فوق با یکدیگر متفاوت خواهد بود .
انتزاع ، یک باید غیر قابل اتتخاب و جزء لاینفک یک شی است . مثلا"  شی
Button که در فرم های ویندوز و یا وب از آن بدفعات استفاده می گردد ، دارای متدی با نام  Click  است . متد فوق ، یک انتزاع است و چه بخواهیم و یا نخواهیم وجود خواهد داشت . ( تغییر شکل اولیه Button در زمانیکه بر روی آن کلیک می گردد ).  در این رابطه رویداد OnClick  یک انتخاب است که پیاده کنندگان می توانند با توجه به سیاست های موجود در نرم افزار نحوه برخورد با رویداد فوق را تبین و مشخص نمایند .

کپسوله سازی کد و داده   (encapsulation)
زبانهای برنامه نویسی نظیر
C و پاسکال قادر به ایجاد ساختارهائی مشابه شی می باشند. در C ، این ویژگی یک struct و در پاسکال از آن با نام رکورد یاد می گردد . هر دو نمونه، نوع های داده تعریف شده توسط کاربر می باشند . در هر دو زبان ، یک تابع قادر به عمل بر روی بیش از یک نوع است عکس حالت فوق نیز صادق است (بیش از یک نابع قادر به عملیات بر روی یک نوع داده است ). داده بطور کامل ارائه و آسیب پذیری خاص خود را خواهد داشت .
در مقابل وضعیت فوق ،  برنامه نویسی شی گراء بر اساس کپسوله سازی است . وضعیت شی و رفتار آن  با یکدیگر نگهداری و اصطلاحا" کپسوله می گردند. داده ئی که وضعیت  یک شی را ارائه داده بهمراه متدهائی  ( توابع و روتین ها ) که بر روی داده ها عملیاتی را انجام خواهند داد ، با یکدیگر و بعنوان یک واحد منسجم  ذخیره می گردند. بعبارت دیگر ، استقرار ساختمان داده ها و کدهای مربوطه جهت پردازش داده های فوق ، بمنظور رسیدن به یک هدف مشخص در یک
Box و تولید یک شی مشخص با اهداف از قبل تعریف شده ، کپسوله سازی نامیده می گردد.
کپسوله سازی ، اغلب با نام مخفی سازی اطلاعات نیز نامیده می شود. اما با اینکه این دو واژه در برخی حالات بجای یکدیگر استفاده می گردند ، نمی توان آنان را مترادف هم در نظر گرفت . آنان دارای مفاهیمی مجزاء می باشند. کپسوله سازی ، پیاده سازی یک شی را از رفتار آن  تفکیک و بنوعی محدودیتی را  بمنظور دستیابی به داده داخلی  ایجاد می نماید . محدودیت فوق ، باعث می گردد که جزئیات خاصی از رفتار یک شی مخفی گردد . بدین ترتیب ، امکان ایجاد یک جعبه سیاه فراهم که وضعیت داخلی یک شی در مقابل استفاده کنندگان وو آسیب های احتمالی حفاظت خواهد شد .
کپسوله سازی معمولا" با "انتزاع " نیز اشتباه گرفته می شود. با اینکه دو مفهوم فوق تا حدود زیادی با یکدیگر مشابه  می باشند ، ولی  ایده های متفاوتی را ارائه می نمایند. انتزاع یک فرآیند بوده و شامل عملیات لازم بمنظور مشخص نمودن خصایص و رفتار یک  شی برای  پردازش است . کپسوله سازی ، مکانیزمی است که توسط  "انتزاع " ، پیاده سازی می گردد .مثلا" شی رادیو ، تکنولوژی های متفاوتی را کپسوله نموده است ، تکنولوژی هائی که امکان درک مناسب آنان برای اغلب افراد امکان پذیر نخواهد بود.
در ویژوال بیسیک دات نت ، ساختاری که امکان تعریف یک "انتزاع " را فراهم می نماید ، کلاس (
class ) ، نامیده می شود. واژه کلاس و شی ، اغلب بجای یکدیگر استفاده می گردند ، اما  شی در واقع یک نمونه از یک کلاس است . یک عنصر شامل مجموعه ای از یک و یا چندین شی نظیر یک کتابخانه کلاس در یک DLL است .

توارث  (inheritance)
توارث ، قابلیت تعریف یک کلاس جدید است که رفتارهای خود ( و کد ) را ااز یک کلاس موجود ، به ارث می برد. کلاس جدید ، کلاس مشتق شده و یا کلاس فرزند ، نامیده می شود . کلاس اولیه بعنوان کلاس پایه و یا مادر  نامیده می شود .
توارث بمنظور ارائه ارتباطات از نوع "
Is-a " و یا "kind-of" ، است. یک اتومبیل یک وسیله نقلیه است . یک قایق یک وسیله نقلیه است . یک زیردریائی یک وسیله نقلیه است . در برنامه نویسی شی گراء ، کلاس پایه "وسیله نقلیه " ، می تواند رفتارهای عمومی تمامی انواع وسائط نقلیه را مشخص می نماید. یک کلاس زیرمجموعه که از کلاس پایه مشتق می گردد می تواند بگونه ای پیاده سازی گردد که نشاندهنده رفتار نوع خاصی از یک وسیله نقلیه باشد .مهمترین دستاورد توارث ، قابلیت توسعه و استفاده مجدد از کد است .  علاوه بر امکان فوق ، یکی دیگر از دستاوردهای توارث ، قابلیت ارتباط بین اشیاء متفاوتی است که از یک شی واحد ، مشتق شده اند .
در مقابل توارث ، نوع خاص دیگری از ازتباط  و از نوع "
has - a" وجود دارد . این نوع ارتباط با استفاده از ترکیب ( Composition)  که در برخی حالات از آن با نام تجمع ( aggregation ) نیز یاد می گردد، ایجاد می گردد. ارتباط فوق، نشاندهنده این موضوع است که  یک شی در مقابل توارث خصلت ها و رفتار خود از یک شی دیگر ، خود شامل شی دیگر است ( ترکیب خصلت ها و رفتار در مقابل توارث خصلت ها و رفتار ) .  طبیعتا"  اتومبیل دارای یک موتور است ، اما نمی توان این ادعا را داشت که اتومبیل نوعی از یک موتور است .
در
++C ، نوع خاصی از توارث و با نام توارت چندگانه ، استفاده می گردد. در سناریوی فوق ، یک کلاس از بیش از یک کلاس پایه مشتق می شود . تعداد زیادی از برنامه نویسان ++C ، استفاده از توارث چندگانه  را دارای چالش های خاص خود دانسته و در مواردیکه از کلاس های پایه با اسامی توابع یکسان  استفاده می گردد بکارگیری صحیح آنان برای حتی برنامه نویسان با تجربه مسائل خاص خود را بدنبال خواهد د اشت .ویژوال بیسیک دات نت ، نظیر جاوا صرفا" امکان توارث یگانه را حمایت می نماید.
در زمان طراحی شی گراء ، می بایست شناخت لازم و عمیقی از توارث و تاثیرات آن وجود داشته باشد . ایجاد یک شی که از شی دیگر مشتق خواهد شد ، همواره عملیات آسانی نخواهد بود و با مجموعه ای از سوالات روبرو خواهیم شد . مثلا"  آیا  دایره نوع خاصی از بیضی است ؟ آیا مربع شکل خاصی از مستطیل است ؟ . 

چند ریختی ( polymorphism  )
چندریختی ، تصور( برداشت )  اشکال متفاوت از یک شی ، است. در برنامه نویسی شی گراء ، این انتظار وجود دارد که پتانسیل های زبان استفاده شده برخوردی مناسب و متفاوت با اشیاء را در زمان اجراء داشته باشند. در مواردیکه اشیاء با یکدیگر ارتباط برقرار می نمایند عملا" پیام هائی را ارسال و یا دریافت می دارند . در این راستا ، فرستنده پیام ضرورتی به آگاهی ازاینکه چه کلاسی از دریافت کننده عضوء است ، نخواهد داشت. (می تواند هر کلاس دلخواهی باشد) . شی فرستنده صرفا"می بایست  دارای دانش لازم در ارتباط با توانائی شی دریافت کننده  بمنظور انجام یک رفتار خاص باشد. وضعیت فوق ، مهمترین مزیت چندریختی  است .
مثلا" فرض کنید ما دارای یک مستطیل ، مربع و یک دایره باشیم . هر کلاس  یک
shape بوده و هر یک دارای متدی با نام Draw می باشند که مسئولیت  تفسیر و رسم شکل بر روی صفحه را بر عهده دارند. با استفاده از چند ریختی  ، می توان متدی را ایجاد که  یک شی Shape  و یا  آرایه ای  از اشیاء Shape را بعنوان پارامتر دریافت نماید. می توان مربع ، مستیطل و دایره را به این متدها بدون هیچگونه مسئله ای پاس دهیم . (مراجعه به یک کلاس از طریق مادر آن بطور کامل معتبر و قانونی خواهد بود ). در مثال فوق ، گیرنده صرفا" از این موضوع که  یک Shape را دریافت که دارای متدی با نام Draw است ، آگاه  و اطلاعات خاصی در ارتباط با نوع خاص Shape  نخواهد بود. در صورتیکه Shape ، مستطیل باشد ، در ادامه نسخه Draw مربوط به مستطیل فراخوانده خواهد شد. اگر شکل مورد نظر ، مربع باشد ، نسخه  Draw مربوط به  مربع ،  فراخوانده می شود.
مفهوم فوق را می توان از زاویه ای دیگر نیز بررسی نمود . فرض کنید از یک نرم افزار گرافیکی کوچک  بمنظور ترسیم اشکال متفاوت استفاده می گردد و بخواهیم در یک لحظه چندین شکل را بر روی صفحه رسم نمائیم . بمنظور پیاده سازی قابلیت فوق ، کلاسی با نام
Scene ، ایجاد می گردد. کلاس فوق، دارای متدی با نام Render است که یک آرایه از اشیاء Shape را بعنوان ورودی دریافت می نماید . در چنین حالتی می توان آرایه ای  از اشکال متفاوت را ایجاد و آن را برای متد Render پاس نمود . متد فوق ، قادر به تکرار بین آرایه و فراخوانی متد Draw برای رسم هر یک از عناصر آرایه است . در این راستا و  متناسب با نوع شکل ، نسخه Draw  مربوط به شکل مورد نظر فراخوانده می گردد . متد  Render ، دارای ایده و یا اطلاعاتی  در ارتباط با نوع شکلی که در حا ل کار با آن است،  نخواهد بود.
مهمترین مزیت پیاده سازی کلاس
Scene و متد مربوطه آن یعنی Render ، جایگاه آنان در توسعه سیستم است . مثلا" در صورتیکه کلاس جدیدی با نام Ellipse ، اضافه گردد  ( کلاسی برای نرم افزار مربوطه ) ، ضرورتی به اعمال تغییرات در کلاس Scene وجودد نخواهد داشت . . متد Render قادر به رسم Ellipse نظیر سایر اشکال خواهد بود چراکه متد فوق با اشیاء مربوط یک ارتباط عمومی دارد . دراین حالت ، کلاس های Shape و Scene بدرستی با یکدیگر جفت وجور شده اند. این نوع از چند ریختی  ، عام و یا parametricpolymorphism نامیده می شود.  نوع دیگری از چند ریختی  ، Overloading
نامیده می شود. در مدل فوق ،  یک شی دارای دو و یا بیش از دو رفتار است که دارای اسامی یکسان می باشند . متدها صرفا" از طریق پیامهائی که دریافت می نمایند ( توسط پارامترهای متد ) مشخص خواهند شد . ایجاد یک متد مشترک با نام power  بمنظور محاسبه توان اعداد صحیح  و اعشاری ، نمونه ای مناسب در این زمینه است . با اینکه می دانیم برای محاسبه توان اعداد صحیح و اعشاری از الگوریتم ها ی متفاوتی استفاده می گردد ، می خواهیم با داشتن یک متد از قابلیت های آن بمنظور محاسبه توان اعداد صحیح و یا اعشاری استفاده نمائیم . استفاده کننده از متد Power ، با سناریوی طراحی شده درون متد کاری نداشته و صرفا" پارامتر خود را در اختیار متد قرار خواهد داد . با تمهیداتی که درون متد پیش بینی شده است ، تصمیم لازم در خصوص استفاده از روتین های جانبی ( متدهای جانبی ) بمنظور محاسبه توان اعداد صحیح و یا اعشاری یک عدد ، اتخاذ خواهد شد .
چند ریختی ، یکی از مفاهیم و ویژگی های مهم  برنامه نویسی شی گراء بوده که انعطاف شگفت انگیزی را در ارتباط با طراحی برنامه ها بدنبال خواهد داشت .

فریمورک دات نت
اشیائی که با استفاده از ویژوال بیسیک دات نت ایجاد می گردند، تداوم و ادامه حیات خود را مدیون فریمورک دات نت می دانند. پلات فرم فوق، با استفاده از استانداردهای های باز و پروتکل هائی نظیر
XML  ، HTTP و SOAP ایجاد شده است . فریمورک دات نت ، شامل یک کتابخانه استاندارد غنی است که سرویس های اساسی را در اختیار تمامی زبانهای سازگار با دات نت ، قرار می دهند.هدف از معماری فوق ، ارائه امکانات و تسهیلات لازم برای برای ایجاد ، بکارگیری و اجراء سرویس های مبتنی بر وب است . علیرغم هدف  فوق ، فریمورک دات نت ، محلی ایده آل برای  پیاده سازی تمامی انواع برنامه ها  صرفنظر از طراحی است .  برخی از مزایای معماری فوق بشرح زیر می باشد :

  • عملیات توزیع شده بر اساس استانداردهای اینترنت و پروتکل هائی نظیر HTTP,XML و SOAP 
  • ارائه سرویس های جهانی و بزرگ نظیر Object pooling, پیام ، امنیت و تراکنش
  •  زیرساخت  مناسب بمنظور تسهیل در پیاده سازی کدها و عناصر با قابلیت استفاده مجدد
  • تسهیل در پیاده سازی تحت وب با استفاده از استانداردهای باز .
  • ارتباط کامل بین زبانها که  دستاوردهائی نظیر : توارث کلاس ها ،  Catch exceptions و اشکال زدائی بین زبان های متفاوت را بدنبال خواهد داشت .
  • بکارگیری نرم افزار در دات نت بمراتب ساده ترنسبت به گذشته خواهد بود ، چراکه تنظیمات در فایل های پیکربندی از نوع XML ذخیره و در دایرکتوری مربوط به نرم افزار ذخیره خواهند شد. در این راستا ضرورتی به استفاده از ریجستری نخواهد بود

دو بخش بسیار مهم دات نت که توجه طراحان و پیاده کنندگان نرم افزار را بسرعت بسوی خود جلب می نماید : CLR)Common Language Runtime) و  کتابخانه کلاس دات نت است . CLR ،  سرویس های لازم برای عناصری را که تحت دات نت اجراء می گردند ، ارائه می نماید .کتابخانه کلاس دات نت ، مجموعه ای گسترده از کلاس ها را برای هر چیزی  از دستیابی به داده گرفته تا طراحی رابط کاربر، امنیت ، شبکه و ... ارائه می نماید. کتابخانه همچنین شامل تعاریف مورد نیاز برای تمامی نوع های داده اولیه نظیر : bytes,integers و string است . تمامی این نوع ها ، از یک کلاس پایه با نام  System.object  مشتق می گردند. محدودیتی بین نوع هائی که توسط سیستم تعریف شده اند با نوع هائی که شما ایجاد می نمائید ،وجود نخواهد داشت . هر چیزبمنزله  یک شی خواهد بود.
در گذشته ، پاس دادن یک
string از یک عنصر نوشته شده به زبان ویژوال بیسیک به عنصر دیگری که با ++C نوشته شده بود ، ( و یا برعکس ) مسائل و مشکلات خاص خود را بدنبال داشت . رشته ها در ویژوال بیسیک ، مشابه رشته ها در ++C نبودند . در حقیقت،در برخی موارد خاص ، استفاده از یک عنصر نوشته شده با ++C
از طریق ویژوال بیسیک ، بدلیل تفاوت در نوع داده آنان ، غیر ممکن بود. هر زبان سازگار با  دات نت ، از نوع های یکسان تعریف شده  و موجود در کتابخانه کلاس پایه استفاده می نماید. بدین ترتیب ، با مسائل مربوط به ارتباط عملیاتی بین زبانها که در گذشته شاهد آنان بودیم ، برخورد نخواهیم کرد.

CLR و قابلیت های آن
CLR ، موتور اجرائی فریمورک دات نت است . سیستم  فوق ، مدیریت تمامی کدهای ترجمه شده را بر عهده خواهد داشت .کد ترجمه شده که در دات نت اجراء می گردد را کد مدیریت یافته (اداره شده) می گویند. علاوه بر مسئولیت لود و اجراء یک برنامه ، CLR
سرویس هائی را ارائه که تمامی  پیاده کنندگان عناصر می توانند از مزایای آن بهره مند گردند:

  • فراخوانی و توقف threads و پردازه ها
  • چرخه حیات شی و مدیریت حافظه
  • ارتباط و همبستگی بین زبان ها
  •  کد قابل استفاده در محیط های  متفاوت ( Cross-code )  و  عملیات مبتنی بر امنیت
  •  Exception handling ( حتی بین زبانها )
  • بکارگیری و مسئله ورژن سازی
  •  ارتباط بین کد اداره شده ( مدیریت یافته ) و کد غیر اداره شده (غیرمدیریت یافته )
  • اشکال زدائی بین تمامی زبانها

Runtime ها چیزی جدیدی نمی باشند . ویژوال بیسیک همواره دارای نوع خاصی از یک runtime  بوده است . ویژوال ++C ، دارای یک runtime با نام MSVCRT.DLL است . perl ، Python و SmallTalk نیز از runtime استفاده می نمایند. تفاوت بین این نوع از Runtime ها و CLR در این است که CLR بمنظور کار با چندین زبان برنامه نویسی طراحی شده است .هر برنامه ای که مقصد کمپایلر آن فریمورک دات نت باشد ، قادر به استفاده از تمامی مزایای CLR است .
دات نت در این رابطه قابل مقایسه با جاوا نیز می باشد . جاوا از یک
Runtime با نام JVM)Java Virtual Machine) استفاده و صرفا" قادر به اجراء کد نوشته شده توسط جاوا می باشد . لازم است به این نکته مهم نیز اشاره گردد که JVM یک مفسر است . در دات نت ، تمامی برنامه های نوشته شده با هر یک از زبان های سازگار با دانت نت ،در ایتدا به یک زبان مستقل از پردازنده ترجمه می گردند که IL)Intermediate Language) نامیده می شود( قابل مقایسه با بایت کدهای جاوا ) . IL ، نظیر جاوا در زمان اجراء تفسیر نمی گردد و زمانیکه کد در اولین مرتبه اجراء می گردد ، یک و یا چندین کمپایلر JIT)Just-in-time) مسئولیت ترجمه کدهای IL به کد مختص یک ماشین را برعهده می گیرند.
ارتباط و همبستگی بین زبانها یک از مهمترین مزایای ارائه شده توسط
CLR است . اگر برنامه نویسی ، کلاسی را با استفاده از ++C نوشته باشد ، می توان کلاسی در VB.NET را با استفاده از آن ایجاد نمود( توارث بین زبانها ). ویژگی فوق ، توارث بین زبان ها نامیده می گردد. اشیاء نوشته شده با زبان متفاوت دیگر قادر به ارتباط عملیاتی  با یکدیگر می باشند . دو بخش مهم CLR که  امکان فوق را فراهم می نمایند CTS)Common Type System) و CLS) Common Language Specification)
، می باشند .

سیستم CTS
سیستم
CTS ، قوانین لازم بمنظورتبعیت یک زبان در جهت  بهره گیری از مزایای فریمورک دات نت را تعریف می نماید. سیستم فوق، همچنین مجموعه ای از نوع های متداول و عملیاتی که در بین زبان های برنامه نویسی متفاوت موجود است را تعریف و مشخص می نماید که چگونه این نوع ها استفاده و توسط CLR مدیریت گردند ، چگونه اشیاء قابلیت های خود را عرضه و چگونه با یکدیگر ارتباط برقرار نمایند . CTS
 ، فونداسیون لازم بمنظور ارتباط متقابل بین زبانها در دات نت را ایجاد  می نماید.

سیستم CLS)Common Language Specification)
CLS ، زیر مجموعه ای از CTS بوده که مسئول تشریح پارامترهای پایه و مهم استفاده شده توسط مجموعه ای گسترده از زبان های برنامه نویسی است . عناصری که از ویژگی های CLS ، استفاده می نمایند ، سازگار با CLS بوده و امکان استفاده و دستیابی به عناصر فوق ، از طریق سایر زبانهای برنامه نویسی سازگار با  دات نت ، وجود خواهد داشت . VB.NET یک زبان سازگار با CLS است . بنابراین ، هر کلاس ، شی و یا عنصری که ایجاد می گردد ، توسط سایر زبا ن های سازگار با CLS در دا ت نت ، قابل استفاده خواهد بود.

ایمن سازی سرویس دهنده FTP

سرویس FTP)File Transfer Protocol) یکی از قدیمی ترین و متداولترین سرویس های موجود بر روی اینترنت است . از سرویس فوق ، بمنظور ارسال و دریافت فایل در یک شبکه استفاده می گردد. سرویس FTP ، توسط عموم کاربران اینترنت استفاده و بعنوان استانداردی برای ارسال و دریافت فایل در شبکه ( اینترانت ، اینترنت )  توسط اکثر سیستم های عامل پذیرفته  شده است
ویندوز 2000 بهمراه خود از یک سرویس دهنده FTP استفاده می نماید که بعنوان بخشی از IIS  در نظر گرفته می شود. مدیران سیستم با استفاده از سرویس فوق و ترکیب آن با  سایر امکانات ارائه شده توسط ویندوز ، قادر به ایجاد و پیکربندی یک سایت FTP با ضریب امنیتی مناسبی خواهند بود.در ادامه و بمنظور ایمن سازی یک سایت FTP ، پیشنهادات متعددی ارائه می گردد.

نکته اول : دستیابی از طریق  Anonymous account را غیر فعال نمائید . دستیابی از نوع Anonymouse، بصورت پیش فرض و پس از نصب اولین سرویس دهنده  FTP فعال می گردد. روش  فوق ، امکان دستیابی به سایت FTP را بدون نیاز به یک  account  خاص فراهم می نماید. بدین ترتیب استفاده کنندگان بصورت کاملا" ناشناس قادر به استفاده از منابع موجود بر روی سرویس دهنده FTP  بوده و امکان مشاهده سودمند ترافیک سایت و در صورت ضرورت، ردیابی آنان وجود نخواهد داشت . با حذف قابلیت دستیابی Anonymous ، امکان دستیابی به سایت FTP صرفا" در اختیار کاربرانی قرار خواهد گرفت که دارای یک account معتبر باشند.
پس از تعریف هر یک از account های مورد نظر، می توان در ادامه با استفاده از ACL)Access Control List) کنترل ها و مجوزهای مربوط به دستیابی به دایرکتوری FTP ( محل فیزیکی استقرار سایت FTP بر روی دیسک ) را تعریف و مشخص نمود . در این رابطه می توان از مجوزهای NTFS استفاده کرد. به منظور غیر فعال نمودن Anonymous account ، می توان از طریق صفحه Property مربوط به سایت FTP  (  برنامه Internet Information Service )  عملیات مورد نظر را انجام داد .

نکته دوم : فعال نمودن Logging . با فعال نمودن Logging بمنظور اتصال به سایت FTP ، این اطمینان بوجود خواهد آمد که اطلاعات لازم ( آدرس های IP و یا نام کاربران ) در خصوص کاربرانی که بصورت موفقیت آمیز به سایت متصل شده اند ، ثبت خواهد شد.با استفاده از فایل های لاگ که در این رابطه ایجاد خواهد شد ، می توان ترافیک موجود بر روی سایت را مشاهده و در صورت یک تهاجم ، امکان ردیابی اولیه آن فراهم گردد. بمنظور فعال نمودن ویژگی فوق، کافی است که  Chex box مربوطه  از طریق صفحه Property مربوط به سایت FTP انتخاب گردد .در ادامه ، فایل های لاگ  بر اساس فرمتی که مشخص شده است ، ایجاد خواهند شد . استفاده از فایل های لاگ ، بمنظور مشاهده و آنالیز ترافیک سایت  بسیار مفید خواهد بود.

نکته سوم : تنظیم و پیکربندی مناسب  لیست ACL ( لیست کنترل دستیابی ) .دستیتابی به دایرکتوری FTP می بایست با استفاده از مجوزهای NTFS و بکارگیری محدودیت های ACL ، کنترل گردد .  دایرکتوری FTP نباید دارای گروه Everyone با تمامی امتیازات و مجوزها باشد ( امکان کنترل مجوزها  و کاربرانی که سایت FTP متصل شده اند وجود نخواهد داشت ) .بدین منظور لازم است  بر روی دایرکتوری مربوط به سایت FTP مستقر و با انتخاب گزینه Property و  Security Option ، اسامی موجود را حذف و  با انتخاب دکمه Add از لیست موجود،  Authenticated user را انتخاب کرد . در ادامه می توان با توجه به سیاست های موجود مجوز Read,Write و List Folder contents را در اختیار گروه مربوطه قرار داد . در صورتیکه سیاست موجود اقتضاء می کند ، می توان صرفا" امکان دستیابی Write را در اختیار گروه مربوطه قرار و مجوزهای Read وList Folder Contents را از آنها سلب نمود .

نکته چهارم : پیکربندی سایت بعنوان دریافت کننده نه ارسال کننده  . در صورتیکه صرفا" نیاز است که کاربران فایل هائی را برای سرویس دهنده ، ارسال و امکان دریافت فایل از سرویس دهنده را نداشته باشند ، می توان سایت FTP را بصورت Blind put پیکربندی نمود. بدین ترتیب به کاربران امکان ارسال ( نوشتن ) فایل بر روی سرویس دهنده داده خواهد شد .( امکان  خواندن از دایرکتوری FTP  وجود نخواهد داشت ) . بدین منظور می توان پس از انتخاب سایت FTP از طریق Home Directory ، اقدام به تنظیمات مورد نظر نمود.

نکته پنجم : فعال نمودن Disk Quotas. با استفاده از امکانات ارائه شده توسط ویندوز 2000 ، می توان اقدام به تعیین ظرفیت و یا سهیه ذخیره سازی بر روی دیسک برای هر یک از کاربران نمود..ویژگی فوق ، باعث اعمال محدودیت در رابطه با میزان فضای ذخیره سازی مربوط به یک کاربر می گردد.بصورت پیش فرض ، مالکیت  به هر کاربر که در فایلی می نویسد اعطاء می گردد . با فعال نمودن و انجام تنظیمات مورد نظر، می توان پیشگیری لازم در ارتباط با تهاجم به یک سایت FTP را انجام داد ( پر نمودن ظرفیت دیسک ). در صورت تحقق وضعیت فوق ، دامنه اشکال بوجود آمده به سایر  سرویس هائی که از فضای ذخیره سازی دیسک استفاده می نمایند نیز سرایت خواهد کرد. برای فعال نمودن Quota Management ، بر روی درایو موردنظر مستقر و با کلیک سمت راست گزینه Property را انتخاب و در نهایت گزینه Quota Tab انتخاب شود .امکان فوق ، صرفا" در ارتبا ط با پارتیشن های NTFS قابل استفاده خواهد بود.استفاده از Disk Quota ، محدود به پارتیش های NTFS بوده و علاوه بر این  صرفا" می تواند در رابطه با یک کاربر استفاده شده وامکان بکارگیری آن در ارتباط با گروه ها وجود نخواهد داشت . با انتخاب دکمه Quota Entries می توان اقدام به تعریف یک Entry جدید و تعریف محدودیت های مورد نظر نمود.

نکته ششم : استفاده از محدودیت زمانی برای Logon . با استفاده از امکانات ارائه شده همراه  ویندوز 2000 ، می توان زمان خاصی را برای ورود به شبکه کا ربران تعریف نمود. بدین ترتیب کاربران صرفا" قادر به استفاده از سرویس دهنده در ساعات مشخص شده خواهند بود.ویژگی فوق ، بطرز محسوسی باعث کنترل دستیابی به سایت FTP خواهد شد. برای پیکربندی زمان  logon ، از برنامه Active Directory Users and Computers استفاده می گردد . پس از فعال شدن برنامه فوق ، کاربر مورد نظر را انتخاب و پس از مشاهده صفحه  Property مربوطه، با انتخاب دکمه Logon hours  از طریق Account Tab ، می توان اقدام به  مشخص نمودن زمان مورد نظر کاربر برای استفاده ازسرویس دهنده  نمود.


 

نکته هفتم : محدودیت دستیابی بر اساس آدرس IP . بمنظور دستیابی به سایت FTP می توان معیار دستیابی را بر اساس آدرس های IP خاصی در نظر گرفت . با اعمال محدودیت فوق ، اقدامات مناسبی بمنظور کنترل دستیابی به سایت در نظر گرفته خواهد شد . بمنظور فعال نمودن ویژگی فوق ، پس از انتخاب سایت FTP از طریق برنامهInternet Information Services و مشاهده  صفحه Property ، گزینه Directory Security Tab انتخاب گردد. در ادامه،  Denied Access فعال و می توان  با استفاده از دکمه Add آدرس های IP تائید شده را معرفی کرد.

نکته هشتم :ثبت رویدادهای Audit logon . با فعال نمودن  Auditing ( ممیزی ) مربوط به رویدادهای Account Logon ، می توان تمامی تلاش های موفقیت آمیز و یا با شکست مواجه شده جهت اتصال به سایت FTP را با استفاده از Security log مربوط به Event Viewer ، مشاهده نمود. مشاهده ادواری این لاگ می تواند عامل موثری در کشف ، تشخیص و ردیابی  تهاجم به یک سایت باشد. (تشخیص مزاحمین و مهاجمین اطلاعاتی ). بمنظور فعال نمودن ویژگی فوق ، از برنامه Local Security Policy و یا Group Policy استفاده می گردد (Programs|Administrative Tools ) . پس از فعال شدن برنامه فوق و استقرار در Local Policies/audit policy ، می توان اقدام به تغییر Local Setting به Success و Failure نمود.

 

نکته نهم : فعال نمودن Strong Password . استفاده از رمزهای عبور پیچیده ،روشی مناسب بمنظور افزایش امنیت در خصوص ارائه یک سرویس خاص برای کاربران تائید شده است . با توجه به جایگاه سرویس دهنده FTP ، استفاده از رمزهای عبور قدرتمند می تواند عاملی موثر در جهت افزایش امنیت سایت های FTP باشد .  با استفاده از امکانات ارائه شده در ویندوز 2000 ، مدیران سیستم می توانند کاربران را مجبور به استفاده از رمزهای عبور مستحکم و قوی نمایند. بمنظور فعال نمودن ویژگی فوق ، از برنامه Local Security Policy و یا Group Policy استفاده می گردد (Programs|Administrative Tools ) . پس از فعال شدن برنامه فوق و استقرار در Account Policy/Password Policy  ، می توان گزینه Passwords Must Meet Complexity Requirements را فعال نمود . پس از فعال شدن ویژگی فوق ، هر یک از account های تعریف شده تابع شرایط و محدودیت های زیر خواهند بود :

  • رمز عبور تعریف شده نمی تواند شامل تمام و یا بخشی از نام Account کاربر باشد .
  • رمز عبور تعریف شده می بایست دارای طولی به اندازه حداقل  شش باشد .
  • رمز عبور تعریف شده می تواند شامل کاراکترها ئی از سه گروه از  چهار گروه زیر باشد :
    - حروف الفبائی  A-Z
    - حروف الفبائی a-z
    - ارقام صفر تا نه
    - کاراکترهای خاص ( %,#,$,!)

نکته دهم : فعال نمودن Account Lockout و Account Lockout Threshold .آگاهی و تشخیص رمزهای عبور یکی از موضوعات مورد علاقه اکثر مهاجمان و برنامه های تشخیص دهنده رمز عبوراست .با استفاده از امکانات ارائه شده بهمراه  ویندوز 2000 ، مدیران شبکه می توانند تعداد دفعاتی را که یک کاربرسعی در ورود به شبکه می نماید و عملیات وی با موفقیت همراه نمی گردد را مشخص و در صورت تحقق شرایط فوق ، account مربوطه غیر فعال گردد. با فعال نمودن ویژگی فوق و پیکربندی میزان آستانه ، مدیران شبکه می توانند عماکرد برنامه های تشخییص دهنده رمز های عبور و یا مهاجمان اطلاعاتی را محدود و ضریب ایمنی را افزایش دهند.  بمنظور فعال نمودن ویژگی فوق ، از برنامه Local Security Policy و یا Group Policy استفاده می گردد (Programs|Administrative Tools ) . پس از فعال شدن برنامه فوق و استقرار در Account Policy/Account Lockout Policy  ، می توان تنظیمات لازم در خصوص Account Lockout duration , Account lockout threshold و Reset account lockout counter after را انجام داد .

 

موتور جستجو چگونه کار می کند؟

وقتی جستجویی در یک موتور جستجوگر انجام و نتایج جستجو ارایه می شود، کاربران در واقع نتیجه کار بخش های متفاوت موتور جستجوگر را می بینند. موتور جستجوگر قبلا" پایگاه داده اش را آماده کرده است و این گونه نیست که درست در همان لحظه جستجو، تمام وب را بگردد. بسیاری از خود می پرسند که چگونه ممکن است گوگل در کمتر از یک ثانیه تمام سایت های وب را بگردد و میلیون ها صفحه را در نتایج جستجوی خود  ارایه کند؟

گوگل و هیچ موتور جستجوگر دیگری توانایی انجام این کار را ندارند. همه آنها در زمان پاسخ گویی به جستجوهای کاربران، تنها در پایگاه داده ای که در اختیار دارند به جستجو می پردازند و نه در وب! موتور جستجوگر به کمک بخش های متفاوت خود، اطلاعات مورد نیاز را قبلا" جمع آوری، تجزیه و تحلیل می کند، آنرا در پایگاه داده اش ذخیره می نماید و به هنگام جستجوی کاربر تنها در همین پایگاه داده  می گردد. بخش های مجزای یک موتور جستجوگر عبارتند از:

  • Spider یا عنکبوت
  • Crawler یا خزنده
  • Indexer یا بایگانی کننده
  • Database یا پایگاه داده
  • Ranker یا سیستم رتبه بندی


الف Spider- (عنکبوت)
اسپایدر یا روبوت (Robot)، نرم افزاری است که کار جمع آوری اطلاعات مورد نیاز یک موتور جستجوگر را بر عهده دارد. اسپایدر به صفحات مختلف سر می زند، محتوای آنها را می خواند، لینکها را دنبال می کند، اطلاعات مورد نیاز را جمع آوری می کند و آنرا در اختیار سایر بخش های موتور جستجوگر قرار   می دهد. کار یک اسپایدر، بسیار شبیه کار کاربران وب است. همانطور که کاربران، صفحات مختلف را بازدید می کنند، اسپایدر هم درست این کار را انجام می دهد با این تفاوت که اسپایدر کدهای HTML صفحات را می بیند اما کاربران نتیجه حاصل از کنار هم قرار گرفتن این کدها را. index.html صفحه ای است که کاربران آنرا به صورت شکل (1) می بینند:

شکل 1- نمونه ای از صفحات وب که توسط مرورگرها نشان داده می شود.

اما یک اسپایدر آنرا چگونه می بیند؟
برای این که شما هم بتوانید دنیای وب را از دیدگاه یک اسپایدر ببینید، کافی است که کدهای HTML صفحات را مشاهده کنید. برای این کار در مرورگر مورد استفاده خود، مسیر نشان داده شده در شکل (2) دنبال کنید. 

شکل 2- روش مشاهده کدهای HTML یک صفحه وب

با انجام این کار فایل متنی شکل (3)  به شما نشان داده می شود:

شکل 3- کدهای HTML سازنده یک صفحه وب

آیا این دنیای متنی برای شما جذاب است؟ 

اسپایدر، به هنگام مشاهده صفحات، بر روی سرورها رد پا برجای می گذارد. شما اگر اجازه دسترسی به آمار دید و بازدیدهای صورت گرفته از یک سایت و اتفاقات انجام شده در آن را داشته باشید، می توانید مشخص کنید که اسپایدر کدام یک از موتورهای جستجوگر صفحات سایت را مورد بازدید قرار داده است. یکی از فعالیتهای اصلی که در SEM انجام می شود تحلیل آمار همین دید و بازدیدها است. 

اسپایدرها کاربردهای دیگری نیز دارند، به عنوان مثال عده ای از آنها به سایت های مختلف مراجعه می کنند و فقط به بررسی فعال بودن لینک های آنها می پردازند و یا به دنبال آدرس ایمیل (Email) می گردند.

ب- Crawler (خزنده)
کراولر، نرم افزاری است که به عنوان یک فرمانده برای اسپایدر عمل می کند. آن مشخص می کند که اسپایدر کدام صفحات را مورد بازدید قرار دهد. در واقع کراولر تصمیم  می گیرد که کدام یک از لینک های صفحه ای که اسپایدر در حال حاضر در آن قرار دارد، دنبال شود. ممکن است همه آنها را دنبال کند، بعضی ها را دنبال کند و یا هیچ کدام را دنبال نکند.

کراولر، ممکن است قبلا" برنامه ریزی شده باشد که آدرس های خاصی را طبق برنامه، در اختیار اسپایدر قرار دهد تا از آنها دیدن کند. دنبال کردن لینک های یک صفحه به این بستگی دارد که موتور جستجوگر چه حجمی از اطلاعات یک سایت را می تواند (می خواهد) در پایگاه داده اش ذخیره کند. همچنین ممکن است اجازه دسترسی به بعضی از صفحات به موتورهای جستجوگر داده نشده باشد.

شما به عنوان دارنده سایت، همان طور که دوست دارید موتورهای جستجوگر اطلاعات سایت شما را با خود ببرند، می توانید آنها را از بعضی صفحات سایت تان دور کنید و اجازه دسترسی به محتوای آن صفحات را به آنها ندهید. موتور جستجو اگر مودب باشد قبل از ورود به هر سایتی ابتدا قوانین دسترسی به محتوای سایت را (در صورت وجود) در فایلی خاص بررسی می کند و از حقوق دسترسی خود اطلاع می یابد. تنظیم میزان دسترسی موتورهای جستجوگر به محتوای یک سایت توسط پروتکل Robots انجام می شود. به عمل کراولر ، خزش (Crawling) می گویند.

ج- Indexer (بایگانی کننده)
تمام اطلاعات جمع آوری شده توسط اسپایدر در اختیار ایندکسر قرار می گیرد. در این بخش اطلاعات ارسالی مورد تجزیه و تحلیل قرار می گیرند و به بخش های متفاوتی تقسیم می شوند. تجزیه و تحلیل بدین معنی است که مشخص می شود اطلاعات از کدام صفحه ارسال شده است، چه حجمی دارد، کلمات موجود در آن کدامند، کلمات چندبار تکرار شده اند، کلمات در کجای صفحه قرار دارند و ... .

در حقیقت ایندکسر، صفحه را به پارامترهای آن خرد می کند و تمام این پارامترها را به یک مقیاس عددی تبدیل می کند تا سیستم رتبه بندی بتواند پارامترهای صفحات مختلف را با هم مقایسه کند. در زمان تجزیه و تحلیل اطلاعات، ایندکسر برای کاهش حجم داده ها از بعضی کلمات که بسیار رایج هستند صرفنظر می کند. کلماتی نظیر a ، an ، the  ، www ، is و ... . از این گونه کلمات هستند.

د - DataBase (پایگاه داده)
تمام داده های تجزیه و تحلیل شده در ایندکسر، به پایگاه داده ارسال می گردد. در این بخش داده ها گروه بندی، کدگذاری و ذخیره می شود. همچنین داده ها قبل از آنکه ذخیره شوند، طبق تکنیکهای خاصی فشرده می شوند تا حجم کمی از پایگاه داده را اشغال کنند. یک موتور جستجوگر باید پایگاده داده عظیمی داشته باشد و به طور مداوم حجم محتوای آنرا گسترش دهد و البته اطلاعات قدیمی را هم به روز رسانی نماید. بزرگی و به روز بودن پایگاه داده یک موتور جستجوگر برای آن امتیاز محسوب می گردد. یکی از تفاوتهای اصلی موتورهای جستجوگر در حجم پایگاه داده آنها و همچنین روش ذخیره سازی داده ها در پایگاه داده است.

و- Ranker (سیستم رتبه بندی)
بعد از آنکه تمام مراحل قبل انجام شد، موتور جستجوگر آماده پاسخ گویی به سوالات کاربران است. کاربران چند کلمه را در جعبه جستجوی (Search Box) آن وارد می کنند و سپس با فشردن Enter منتظر پــاسخ می مانند. برای پاسخگویی به درخواست کاربر، ابتدا تمام صفحات موجود در پایگاه داده که به موضوع جستجو شده، مرتبط هستند، مشخص می شوند. پس از آن سیستم رتبه بندی وارد عمل شده، آنها را از بیشترین ارتباط تا کمترین ارتباط مرتب می کند و به عنوان نتایج جستجو به کاربر نمایش می دهد.

حتی اگر موتور جستجوگر بهترین و کامل ترین پایگاه داده را داشته باشد اما نتواند پاسخ های مرتبطی را ارایه کند، یک موتور جستجوگر ضعیف خواهد بود. در حقیقت سیستم رتبه بندی قلب تپنده یک موتور جستجوگر است و تفاوت اصلی موتورهای جستجوگر در این بخش قرار دارد. سیستم رتبه بندی برای پاسخ گویی به سوالات کاربران، پارامترهای بسیاری را در نظر می گیرد تا بتواند بهترین پاسخ ها را در اختیار آنها قرار دارد.

حرفه ای های دنیای SEM به طور خلاصه از آن به Algo ( الگوریتم) یاد می کنند. الگوریتم، مجموعه ای از دستورالعمل ها است که موتور جستجوگر با اعمال آنها بر پارامترهای صفحات موجود در پایگاه داده اش، تصمیم می گیرد که صفحات مرتبط را چگونه در نتایج جستجو مرتب کند. در حال حاضر قدرتمندترین سیستم رتبه بندی را گوگل در اختیار دارد.

می توان با ادغام کردن اسپایدر با کراولر و همچنین ایندکسر با پایگاه داده، موتور جستجوگر را شامل سه بخش زیر دانست که این گونه تقسیم بندی هم درست می باشد:

  • کراولر
  • بایگانی
  • سیستم رتبه بندی

تذکر- برای سهولت در بیان مطالب بعدی هر گاه صحبت از بایگانی کردن (شدن) به میان می آید، مقصود این است که صفحه تجزیه و تحلیل شده و به پایگاه داده موتور جستجوگر وارد می شود.

برای آنکه تصور درستی از نحوه کار یک موتور جستجوگر داشته باشید داستان نامتعارف زیر را با هم بررسی می کنیم. داستان ما یک شکارچی دارد. او تصمیم به شکار می گیرد:

-  کار کراولر:
او  قصد دارد برای شکار به منطقه حفاظت شده ابیورد، واقع در شهرستان درگز (شمالی ترین شهر خراسان بزرگ) برود.

-  پروتکل Robots :
ابتدا تمام محدودیت های موجود برای شکار در این منطقه را بررسی می کند:

  •  آیا در این منطقه می توان به شکار پرداخت؟
  • کدام حیوانات را می توان شکار کرد؟
  • حداکثر تعداد شکار چه میزانی است؟ 
  • و ... .

فرض می کنیم او مجوز شکار یک اوریال (نوعی آهو) را از شکاربانی منطقه دریافت می کند.

-  کار اسپایدر
او اوریالی رعنا را شکار می کند و سپس آنرا با خود به منزل می برد.

- کار ایندکسر
شکار را تکه تکه کرده، گوشت، استخوان، دل و قلوه، کله پاچه و ... آنرا بسته بندی می کند و بخش های زاید شکار را دور می ریزد.

-  کار پایگاه داده
بسته های حاصل را درون فریزر قرار داده، ذخیره می کند. 

- کار سیستم رتبه بندی
مهمانان سراغ او می آیند و همسرش بسته به ذائقه مهمانان برای آنها  غذا طبخ می کند. ممکن است عده ای کله پاچه، عده ای آبگوشت، عده ای ... دوست داشته باشند. پخت غذا طبق سلیقه مهمانان کار سختی است. ممکن است همه آنها آبگوشت بخواهند اما آنها مسلما" بامزه ترین آبگوشت را می خواهند!

نکته ها:

  • شکارچی می توانست برای شکار کبک یا اوریال و یا هر دو به آن منطقه برود همانطور که موتور جستجوگر می تواند از سرور سایت شما انواع فایل (عکس، فایل متنی، فایل اجرایی و ...) درخواست کند.
  • شکارچی می تواند شب به شکار برود یا روز. موتور جستجوگر هم ممکن است شب به سایت شما مراجعه کند یا روز. بنابراین همواره مطمئن باشید که سایت شما آپ است و موتور جستجوگر می تواند در آن به شکار فایلها بپردازد.
  • غذای خوشمزه را می توانید با نتایج جستجوی دقیق و مرتبط مقایسه کنید. اگر شکارچی بهترین شکار را با خود به منزل ببرد اما غذایی خوشمزه و مطابق سلیقه مهمانان طبخ نگردد، تمام زحمات هدر رفته است.
  • به عنوان آخرین نکته این بخش یاد آوری می کنم که به شکار اوریالی رعنا آن هم در منطقه حفاظت شده ابیورد (پارک ملی تندوره) اصلا فکر نکنید. اما توصیه می شود که حتما از طبیعت بکر آن دیدن فرمایید (بدون اسلحه!).