بررسی کامل Google Webmaster Tools

22 07 2009

Google Webmaster Tools
Webmaster Tools یکی از سرویس های ویژه مدیران سایتها است که با هدف افزایش کیفیت سایتها با توجه به معیارهایی شرکت گوگل است. این کار برای افزایش کیفیت نتیایج مرتبط با عبارات جستجو طراحی شده است. این سرویس مدت چندین سال است که راه اندازی شده و اخیرا بازبینی بر روی برخی امکانات و ظاهر آن صورت گرفته است.

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

  • بررسی ویژگی و مزایا

قبل از هر کاری باید سایت را در این سرویس ثبت کنید و سپس آن را تایید هویت کنید. این مراحل را در آخر این مقاله خواهید خواند. پس از وارد شدن به حساب خود موارد زیر را مشاهده خواهید کرد.

بخش Dashboard

در این صفحه که صفحه آغازین سایتی که ثبت کرده اید است، اطلاعات مختصری از آخرین وضعیت سایت نمایش داده می شود. اینها شامل اطلاعاتی در مورد وضعیت sitemap ها، وضعیت بازبینی سایت توسط موتور گوگل و وضعیت کلمات کلیدی جستجو شده برای ورود به سایتتان است.

در منوی سمت چپ لیستی منویی می بینید که از طریق آن را سایر قسمت های این سرویس می توانید دست پیدا کنید.

مدیریت Sitemap

Sitemap یا به فارسی نقشه سایت، به صورت تعدادی استاندارد عرضه شده که اکثر آنها را گوگل در این سرویس پشتیبانی می کنه. همچنین گوگل این امکان رو میده که نقشه سایت رو به صورت Feed یا «خوراک» ثبت کنید.

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

پس از ثبت نقشه سایت می توانید آخرین وضعیت آن را بررسی و تعداد لینکهای اضافه شده به موتور جستجوی گوگل را مشاهده کنید.

مدیریت دسترسی به قسمتهای سایت (Crawler access)

قبل از پیدایش سرویس هایی مانند Webmaster Tools صاحبان سایت برای جلوگیری از دسترسی و اندیس شدن برخی صفحات مجبور به استفاده از فایلی به نام robots.txt بودند. این فایل فرمت خاصی دارد که این امکان را می دهد که به صفحات خاص دسترسی داد و یا دسترسی را ممنون اعلام کرد.

تمام موتور جستجو های کنونی از این فایل پشتیبانی می کنند ولی گوگل در این سرویس و در این بخش این اجازه را می دهد که کنترل بیشتری بر روی دسترسی ها داشته باشید. امکان حدف آدرسها یکی از این موارد است.

همچنین در این بخش می توان به تولید فایل robots.txt پرداخت و آن را در موتور های جستجوی مختلف گوگل مورد آزمایش قرار داد.

مدیریت SiteLinks

در صورتی که خوش شانس باشید و سایت شما دارای بازدید زیاد و همچنین PageRank بالایی باشد در این صورت ممکن است که گوگل لینک سایت شما را به صورت دیگری نشان بدهد. مانند زیر:

Sitelinks

Sitelinks

در این قسمت می توانید لینکهایی که در Sitelinks داده شده را ویرایش کنید.

تنظیمات کلی سایت (Settings)

این تنظیمات در داخل بخش Site configuration با نام Settings قرار دارند. کارهای می توانید انجام بدهید به شرح زیر است.

Site Settings

Site Settings

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

همچنین می توانید به گوگل بگویید که آدرس سایت شما را با www نمایش بدهد یا نه و یا اینکه با توجه به لینک ها این کار را انجام دهد. این گزینه با نام Preferred domain مشخص شده است.

و سرانجام تنظیم تعداد دفعات مراجعه موتور کاوشگر گوگل به سایت در قسمت Crawl rate قابل تنظیم است. ممکن است که به علت بزرگ بودن سایت و مشکلات سرور نتوان پاسخ گوی درخواستهای اضافی بود که در این صورت این مقدار باید کم شود. در صورتی هم که از عدم شناسایی به موقع تغییرات سایت ناراضی هستید مقدار آن را افزایش دهید.

توجه کنید که این گزینه بر ترافیک سایت و همچنین به روز بودن لینکها تاثیر زیادی دارد و در تغییر این مقادیر دقت کند.

بهترین کلمات کلیدی – Top search queries
در این قسمت کلمات کلیدی که در موتور جستجو بیشترین مراجعه را به سایت شما کرده است نمایش داده می شود. همچنین موقعیت شما در نتایج جستجو با استفاده از کلمات کلیدی که در سایت استفاده کرده اید نمایش داده می شود.

این لیست خیلی مهم است و با استفاده از آن می توان فهمید که کاربران به چه چیزهایی علاقه دارند. همچنین چه کلمات کلیدی شانس بیشتری برای کلیک دارند. با استفاده از این کلمات می توانید سایت خود را بهینه تر کنید.

Top search queries

Top search queries

لینک ها به سایت – Links to your site
در این صفحاتی که لینکهایی از سایت های دیگر به آن داده شده است لیست می شوند. همچنین می توان متن لینکی که برای لینک دادن استفاده شده است را مشاهده کرد.

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

کلمات کلیدی – Keywords

در این صفحه لیست پر کاربردترین کلمات کلیدی قرار دارد. برای درک ساختار مطالب صفحات شما برای تنظیم مقادیر Keyword مناسب است.

برای فارسی این مشکل وجود دارد که حروف اضافه مانند «در» در بالاترین مکان قرار می گیرند.

لینک های داخلی – Internal Links

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

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

مشترکین خوراک – Subscriber stats

در صورتی که سایت شما Feed یا خوراک ارائه میده در این صفحه می تونید وضعیت مشتریک خود را در سرویس Google Reader مشاهده کنید. در صورتی که این feed ها را قبلا در قسمت sitemap ثبت نکرده باشید می توانید آنها را مستقیما از اینجا به لیست Sitemap ها اضافه کنید.

خطاهای موتور کاوشکر – Crawl errors

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

این خطاها در سه گروه عمده Web و Mobile-Chtml و Mobile-Xhtml تقسیم بندی شده که نشان دهنده وجود سه موتور کاوشگر متفاوت برای این نوع صفحات است.

به غیر از Web بقیه موارد زمانی نشان داده می شود که سایت سرویس هایی برای موبایل ارائه کند.

بخش های فرعی شامل جزئیات خطاها هستند که درتصویر مشاهده می کنید:

Crawl Errors

Crawl Errors

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

در این لیست تنها موردی که ممکن شما را به اشتباه بیاندازد و باید به آن توجه کنید قسمت «Restricted by robots.txt» است. صفحات لیست شده در این قسمت دارای اشکال نیستند و فقط توسط robots.txt که قبلا گفته شد، از لیست نتایج حذف شده اند و در نتیجه موتور کاوشکر آنها را کاوش نکرده است. این لیست کمک خواهد کرد که بدانید دقیقا کدام صفحات از نتایج جستجو حذف شده اند.

گزارش موتور کاوشگر – Crawl stats
این گزارش عملکرد موتور کاوشگر بر روی سایت است که شامل میانگین مدت زمان صرف شده برای دریافت صفحات و تعداد روزانه صفحات بازدید شده و همچنین حجم باند مصرفی است.

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

Crawl Stats

Crawl Stats

همچنین در زیر این آمار خلاصه وضعیت سایت از نظر Page Rank نمایش داده شده است. یعنی در حالت کلی سایت بیشتر در بالای نتایج نمایش داده می شود یا نه.

در ادامه صفحه ای که در هر ماه دارای بیشترین Page Rank بوده نیز نمایش داده می شود.

پیشنهادات بهینه سازی – HTML suggestions

به نظر من این بخش یکی از جالب تری قسمت های این سرویس گوگل است. در این قسمت لیست صفحاتی که دارای مشکلات جزئی هستند که مانع از ارتقاء رتبه آنها در نتایج جستجو می شوند وجود دارد.

برای نمونه در صورتی که دو صفحه از یک عنوان استفاده کنند، این مورد در قسمت Duplicate title tags با عنوان وجود یک مشکل نمایش داده خواهد و با ورود به جزئیات امکان مشاهده صفحاتی که دارای اشکال هستند نمایش داده خواهد شد.

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

  • نحوه ثبت سایت در این سرویس

پس از اینکه وارد صفحه Webmaster Tools شدید بر روی گزینه Add site کلیک کرده و آدرس سایت رو وارد کنید. پس از آن آدرس سایت نمایش داده خواهد شد که نیاز به تایید دارد. برای تایید سایت بر روی گزینه Verify this site کلیک کنید:

افزودن سایت به Webmaster Tools

افزودن سایت به Webmaster Tools

تایید هویت سایت را به دو صورت می توانید انجام دهید. اول اینکه یک تکه کد Html را به صفحه اصلی سایت اضافه کنید و راه دوم اینکه یک فایل با نام مشخص در مسیر اصلی سایت قرار دهید.

در صورتی که به ساختار صفحات html آشنایی ندارید بهتر است که از روش دوم و قرار دادم فایل در مسیر اصلی سایت استفاده کنید. این فایل یک فایل خالی خواهد بود که نام آن را با انتخاب گزینه HTML file در قسمت Verification method به شما نمایش خواهد داد. این نام معمولا فرمتی مانند googlee30bf8a27611ecb4.html دارد.

تایید سایت

تایید سایت

پس از تایید سایت امکانات این سرویس فعال خواهند شد.

نکته ای برای وبلاگها: سرویس های وبلاگ در صورتی می توانند از این سرویس گوگل استفاده کنند که اجازه ویرایش صفحه Html وبلاگ را داشته باشند. به این علت که برای تایید سایت نیاز به افزودن کدی به صفحه است. خوشبختانه بیشتر سرویس ها شامل blogfa، mihanblog ، blogspot و غیره این امکان را می دهند. توجه کنید که این امکان در سرویس wordpress.com وجود ندارد.

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

موفق باشید.





ایران و ترکیب احتمالی IBM و SUN

24 03 2009
IBM Sun

اگه در جریان خبرهای دنیای IT باشید حتما شنیده اید که IBM بر سر میز مذاکره خرید Sun به مبلغ 6.5 بـیلیـون دلار آمریکا هست.
این خرید در صورتی که اتفاق بیفته یکی از رویداد بسیار مهم سالهای اخیر خواهد بود چرا که Sun سازنده Java و پیشتاز تکنولوژی های وابسته در 15 سال گذشته هست.

قبل از اینکه به مقوله ایران بپردازم به بررسی تاثیرات این ترکیب بر محصولات این دو غول می پردازم.

Java
جاوا پرکاربردترین زبان برنامه نویسی و صد البته مهمترین تکنولوژی در دست این دو شرکت است. همانطور که شاید بدانید هردو شرکت IBM و SUN دارای کتابخانه زمان اجرای جاوا (JVM) هستند.
نتیجه این ترکیب می تواند open source تر شدن کتابخانه های Sun به عنوان اصلی ترین سازنده کتابخانه های جاوا بشود. چرا که sun با داشتن لیسانس opensource مخصوص به خود محدودیت هایی را ایجاد کرده است.
آنچه که از وابستگی محصولات IBM به جاوا و تاریخچه این شرکت نتیجه می شه اینه که این شرکت به هیچ وجه کنترل و توسعه جاوا را به شرکت زیر مجموعه احتمالی sun خود نخواهد داد و سعی خواهد کرد محصولی قوی تر و ترکیبی از این دو کتابخانه بدست بیاورد.

ابزارهای Java
IBM قبلا محیط توسعه مخصوص خود را برای Java داشت که البته به Eclipse انتقال یافت. هم اکنون نیز این شرکت به شدت از Eclipse همایت می کند. در آن طرف Netbeans قرار دارد که به شدت توسط Sun توسعه داده می شود.
تنیجه این ترکیب می تونه به سیاست های بعدی شرکت ترکیب شده IBM/Sun بستگی داشته باشه که پشتیبانی حرفه ای از یکی از این محصولات را به مرور زمان حذف کند. به هر حال در طولانی مدت این دو محصول نخواهند توانست با هم کنار بیایند و یکی باید حذف شود.

بانک اطلاعاتی

MySQL محصول فعلی Sun رو می توان گل سرسبد شرکت ترکیب شده دانست. دلیل آن هم به خاطر تعداد کاربران و همچنین متخصصین آن کاملا مشخص است.
در آن طرف DB2 محصول IBM قرار دارد که برای پایگاه داده های بزرگ و سرور ها طراحی شده است.
از اونجایی که MySql محدودیت کاری برای کاربران سطح پایین تا سرور های بزرگ را ندارد که این حیطه گسترده برای DB2 وجود ندارد، مطمئنا شرکت ترکیب شده از MySql برای جذب کاربران بیشتر و سپس سوق دادن آنها به سمت DB2 استفاده خواهد.
به هر حال شاید همکاری و تعامل هرچه بیشتر این دو پایگاه داده خواهیم بود.

سیستم عامل

AIX سیستم عامل بر مبنای Unix شرکت IBM در مقابل Solaris شرکت Sun که آن هم بر مبنای Unix است حرفی برای گفت ندارد. این احتمال قوی است که کاربران AIX به یک نسخه ویژه از Solaris انتقال داده بشوند.
از آنجایی که Sun هیچ نسخه ای از سیستم عامل مبتنی بر Linux ندارد این احتمال بعید به نظر نمی رسد که آبی بزرگ هم از ویژگی Solaris به سیستم عامل لینوکس خود اضافه کند.

در حال حاضر هر دو شرکت به شدت در حال تلاش در پیشرفت در محاسبات ابری (cloud-computing) هستند. آنچه که مسلم است ترکیب تیم تحقیقات این دو شرکت و پیشرفت سریع تر شرکت ترکیب شده در این زمینه است.

و سرانجام از لحاظ سخت افزار از آنجایی که IBM ارادت خاصی به پردازنده Power خود دارد به احتمال قوی شاهد توقف خط تولید پزدازنده های SPARC و اضافه شده تیم آن به تیم پردازنده Power و PowerPC باشیم.

و اما ایران

حدس من در مورد ایران، تغییرات ناچیز هست. متاسفانه منبع خاصی برای تایین تعداد کاربران زبانهای برنامه نویسی وجود ندارد و البته آماری هم تهیه نمی شود.
اما آنچه از فروم ها و سایتهای برنامه نویسی ایرانی هویدا است تعداد کاربران جاوا در ایران بسیار کم. اگر رده بندی من را بخواهید خواهم گفت که جاوا بعد از C# ، VB ، C و احتمالا Delphi در رده بعدی قرار خواهد گرفت.
دلایل این کم احمیتی فعلا در بحث ما جایی ندارد ولی تا اینقدر بدانید که رایگان بودن محصولات ماکروسافت در ایران دلیل اصلی این مسئله است.

تغییرات حاصله از ترکیب این دو شرکت بیشتر در زمینه بانک اطلاعاتی و ابزارهای Java در ایران مشاهده خواهد شد.
هر دو محیط توسعه Netbeans و  Eclipse با توجه به نظر سنجی هایی که در فروم برنامه نویس و سایتی دیگر انجام شده تقریبا تعداد کاربر یکسانی دارند. پس می توان نتیجه گرفت که با محو یا حذف تدریجی یکی از این دو محصول شاهد مهاجرت کاربران به محیط دیگری باشیم که اتفاق مهمی نخواهد بود.

در مورد بانک اطلاعاتی همانطور که در بالا ذکر کردم MySql همچنان با قدرت به کار خود ادامه خواهد داد. با توجه به اینکه MySql در میان Php کاران و Linux کراران طرفدار بسیاری دارد، پس نگرانی در این زمینه وجود نخواهد داشت.
نتیجه ای که البته بعید هم به نظر نمی رسد حرکت عده ای به سمت DB2 خواهد بود تا از ویژگی های این پایگاه داده هم مطلع بشوند. با توجه به اینکه یک نسخه رایگان و کوچک از این پایگاه داده هم عرضه می شود.

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

این ترکیب بر دنیای برنامه نویسان جهان بسیار تاثیر گذار خواهد بود. بزرگترین اثر گرفته از این ترکیب Oracle خواهد بود. چراکه بسیاری از برنامه ها و سیستم های مدیریت پایگاه خود را بر پایه Java پایه نهاده و صد البته چشم به نتیجه این مذاکرات دوخته است.

موفق باشید.

منابع:

http://www.sdtimes.com/link/33356
http://www.infoworld.com
http://www.multicoreinfo.com
http://osnews.com

مطالب مرتبط:

دریافت نسخه جدید Netbeans 6.5 به همراه JDK





Threadها در جاوا اسکریپت

13 03 2009
WebWorker

در جاوا اسکریپت نیز همانند سایر زبانها انجام برخی محاسبات نیاز به زمان زیادی دارد.

همانند کد زیر که رشته فیبوناچی را محاسبه می کند:

function fibonacci(n) {
  if(n == 0)
    return 0;
  if(n == 1)
    return 1;
  return fibonacci(n - 1) + fibonacci(n - 2);
}

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

برای رفع چنین مشکلاتی در نسخه 3.1 فایرفاکس استاندارد جدیدی با نام web workers و یا به فارسی «کارگر وب» پیاده سازی شده است. این کارگر وب یکی از استاندارد های نهایی نشده کارگزار استانداردهای وب یا WhatWG است که در حال تکمیل موارد آن هستند.
کار اصلی کارگر وب انجام عملیات و دستورات طولانی در یک thread (به فارسی رشته) جداگانه است تا صفحه اصلی بتواند به طور همزمان و بدون قفل شدن به کار خود ادامه بدهد.
به طبع جدا بودن threadهای اصلی و کارگر وب سبب ایجاد تعدادی محدودیت می شود که برای جلوگیری از مشکلات هستند. یک محدودیت اساسی ارتباط داشتن دو thread با هم از طریق پیغام ها است.
همچنین امکان دسترسی و دستکاری اشیاء DOM وجود ندارد (منظور از DOM سرنام عبارت Dodcument Object Model که همان عناصر صفحه است).
و البته امکان استفاده از AJAX یا شیئ XMLHttpRequest وجود دارد.

  • تعدادی از ویژگیهای Web Workers

دسترسی به شیئ navigator در درون کارگر وب که امکان شناسایی مرورگر را می دهد. ویژگی های appName، appVersion، platform و userAgent قابل استفاده هستند.
امکان خاتمه دادن کار کارگر وب با استفاده از دستور terminate .
اسکریپتهای کارگر وب باید در یک فایل جداگانه و در مسیر یکسان از محل اجرای صفحه قرار داشته باشند.
امکان کنترل خطاهای رخ داده در درون کارگر وب با استفاده از رویداد onerror . در درون این رویداد با استفاده از ویژگی preventDefault  میتوان از خطای رخ داده چشم پوشی کرد.
امکان ارسال اعداد، boolean و اشیاء وجود دارد. تنها محدودیت در این زمینه عدم امکان استفاده از توابع و اشیاء ارجاع داده شده به DOM است.

  • نمونه پیاده سازی

در اینجاها نمونه پیاده سازی شده کامل وجود دارد
http://people.mozilla.com/~bturner/weaveworker/weaveDecryptor.html
https://wiki.mozilla.org/DOMWorkerThreads_current

ابتدا باید آخرین نسخه از Firefox را دریافت کنید. در حال حاظر Firefox 3.1 Beta 3 برای دانلود موجود است. لینک دریافت. (نسخه فارسی نیز موجود است)

در صفحه خود باید یک نمونه از شیئ Worker ایجاد کنید. مانند کد زیر:

var webworker = new Worker("workerScript.js");

در این کد به سازنده کلاس اسکریپت workerScript.js ارسال می شود. سپس برای اینکه بتوانیم پیغام ارسالی توسط کارگر را دریافت کنیم باید رویداد onmessage را پیاده سازی کنیم:

webworker.onmessage = function(event) {
	document.getElementById("result").textContent = event.data;
};

این کد در thread اصلی صفحه اجرا خواهد شد پس امکان تغییر اطلاعات DOM وجود دارد. در اینجا فیلدی با نام result تغییر خواهد کرد.
در صورت تمایل می توان OnError را هم برای دریافت خطاهای احتمالی پیاده سازی کرد:

webworker.onerror = function(event) {
	document.getElementById("result").textContent = "Worker error: " + event.data + "n";
};

پیاده سازی فایل اسکریپت workerScript.js
این فایل که در thread جداگانه ای اجرا خواهد شد باید حداقل دارای یک پیاده سازی ار رویداد onmessage باشد تا بتواند کار مورد نظر را درون خود انجام دهد.

onmessage = function(event) {
  var n = parseInt(event.data);

  if (n == 0 || n == 1) {
    postMessage('Hello');
    return;
  }
}

توجه کنید که تعریف رویداد onmessage مستقیما بوده است. این رویداد پس از اجرای postMessage در thread اصلی اجرا خواهد شد. در این رویداد مقدار ورودی آن را بررسی می کنیم و در صورت برقرار بودن شرط پیغامی به صفحه ارسال می شود.

هم اکنون می توان به کارگر وب دستور اجرا را صادر کرد. برای این منظور باید از متد postMessage استفاده کنید. پس از اولین postMessage ارسالی کارگر وب شروع به کار کرده و اجرا می شود.
توجه کنید که این کد را باید در صفحه بنویسید و نه در فایل اسکریپت.
worker.postMessage(10);

منابع
https://developer.mozilla.org/web-tech/2008/09/04/web-workers-part-1/
https://developer.mozilla.org/web-tech/2008/12/04/web-workers-part-2/
https://developer.mozilla.org/web-tech/2009/01/05/web-workers-part-3/
https://wiki.mozilla.org/DOMWorkerThreads
https://wiki.mozilla.org/DOMWorkerThreads_current
http://www.whatwg.org/specs/web-workers/current-work/
http://ajaxian.com/archives/web-workers-update-for-firefox-31





دو مقاله دو ابزار

11 03 2009

چند روز پیش کار بر روی دو تا مقاله  توصیفی برای ابزارهایی که قبلا نوشته بودم روبه پایان رسوندم که لینک آنها رو اینجا میذارم.

ابزار اولی مربوط به کنترل خطاها در Asp.Net و بعدی در مورد کار با thread ها در دلفی است.

در این مقاله به بررسی ابزار CustomErrorHandler می پردازیم که به ما این امکان را می دهد که شیوه نمایش خطاها را در ASP.NET تغییر دهیم. این خطاها از لحاظ ساختار بسیار استاندارد تر و برای گوگل قابل تشخیص تر هستند.

با استفاده ابزار ThreadWorker که برای دلفی نوشته شده است می توانید، وظایف و یا کارهای طولانی خود را بدون وقفه در کار برنامه انجام دهید.





ریستارت کردن سایت ASP.NET

13 02 2009

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

در ASP.NET یک متد اصلی برای این کار طراحی شده است و یک متد دیگر هم وجود دارد که این کار را انجام میدهد.

متد اول:

HttpRuntime.UnloadAppDomain()

این متد باعث پایان یافتن سایت می شود و تا رسیدن درخواست بعدی سایت مجددا اجرا نخواهد شد. نکته مهمی که در استفاده از این تابع است، فراخوانی رویداد Application_End در Global.asax است که به شما اجازه میده کارهای نهایی برای آزاد سازی حافظه را انجام بدید. مزیت اصلی این تابع طی کامل مراحل و عملیات آزاد سازی حافظه و پایان کار سایت است.

متد دوم:

HttpRuntime.Close()

این متد نیز همانند متد قبلی باعث پایان کار سایت خواهد شد و سایت در درخواست بعدی مجددا اجرا خواهد شد. نکته مهم در استفاده این تابع عدم فراخوانی رویداد Application_End هست. در حقیقت این تابع سایت را به یکباره متوقف می کند که هیچیک از مراحل پایان کار سایت اجرا نخواهند شد و می تواند برای مواقع اضطراری مناسب باشد.

نکته ای که در مورد HttpRuntime.Close هست این است که در حقیقت این مدت برای پاک کردن کش سایت طراحی شده، ولی ظاهرا این کار را با بستن سایت انجام می دهد که البته نتایجی مانند Restart کردن دارد! همانطور که گفته شد تفاوت عمده این مدت در این است مراحل بسته سایت به ترتیب انجام نشده و سایت به یکباره متوقف خواهد شد تا در خواست بعدی مجددا اجرا شود.

سعی کنید در قسمت مدیریت سایت خود صفحه ای را برای فراخوانی این دو مدت طراحی کنید.





SyntaxHighlighter با طعم JQuery

29 01 2009
SyntaxHighlighter JQuery

اگه تا حالا از اسکریپت SyntaxHighlighter استفاده کرده باشین میدونین که با استفاده از این اسکریپت می شه کدها یا همون Code Snipped ها را رنگی و فرمت کرد.
برای استفاده از این اسکریپت در حالت عادی لازم است که علاوه بر موتور اصلی این اسکریپت (shCore.js) اسکرپیت مخصوص زبان استفاده شده در کدتون رو هم اضافه کنید. برای مثال برای سی شارپ shBrushCSharp.js

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

در زیر اسکریپتی رو که با استفاده از JQuery نوشته ام اگر در صفحه خود استفاده کنید علاوه بر کاهش تعداد درخواست ها به سرور و کاهش حجم دریافتی، اعمال SyntaxHighlighter به صورت خودکار خواهد بود و نیازی به درج هیچ کد اضافه ای نخواهید داشت. این امکان هم هست که اگر در صفحه هیچ کدی(منظور code snipped) وجود نداشته باشد هیچ کدام از اسکریپتهای SyntaxHighlighter استفاده نشود.
پس برای استفاده، به جای لینک مستقیم به SyntaxHighlighter باید از اسکریپت زیر استفاده کنید:

// Coded by Salar Khalilzadeh 2009-01-29
// https://salarblog.wordpress.com/

if($){
// SyntaxHighlighter scripts path
var BrushBasePath='http://www.YourSite.com/SyntaxHighlighter/scripts/';

// SyntaxHighlighter style sheet
var StyleFilePath='http://www.YourSite.com/SyntaxHighlighter/styles/SyntaxHighlighter.css';
var BrushFileName='shBrushXXX.js';
var BrushCoreFile='shCore.js';
var BrushAliases=[
	['xml','xml'], ['xhtml','xml'], ['xslt','xml'], ['html','xml'] , ['xhtml','xml'],
	['vb','vb'], ['vb.net','vb'],
	['sql','sql'],
	//['asm','asm'], uncomment if you have assmbly brush
	['ruby','ruby'], ['rails','ruby'], ['ror','ruby'],
	['py','python'], ['python','python'],
	['php','php'],
	['js','jscript'], ['jscript','jscript'], ['javascript','jscript'],
	['java','java'],
	['delphi','delphi'], ['pascal','delphi']
];

var codeTags=$('pre,code');
var matchedElements=[];
codeTags.each(function(){
	var $item = $(this);
	var href = $item.attr("href");
	var i;
	for(i=0;i<BrushAliases.length;i++){
		var attr=$item.attr("class");
		if(attr.indexOf(BrushAliases[i][0])!=-1 && matchedElements[BrushAliases[i][1]]==null){
			matchedElements.push(BrushAliases[i][1]);
		}
	}
})

// Highlighter core, if there is any language
if(matchedElements.length>0){
	document.write("<link rel='stylesheet' type='text/css' href='"+StyleFilePath+"' />");
	var jsCore=BrushBasePath+BrushCoreFile;
	document.write(unescape("%3Cscript%20type%3D%27text/javascript%27%20src%3D%27")+ jsCore + unescape("%27%3E%3C/script%3E"));
}

// Brushes
for(i=0;i<matchedElements.length;i++){
	var jsSrc=BrushFileName.replace('XXX',matchedElements[i]);
	jsSrc=BrushBasePath+jsSrc;
	document.write(unescape("%3Cscript%20type%3D%27text/javascript%27%20src%3D%27")+ jsSrc + unescape("%27%3E%3C/script%3E"));
}}

نحوه استفاده: این کد رو در حتما در آخر صفحه درج کنید. علت این کار رو در ادامه توضیح می دم.
در این کد در مقدار BrushBasePath آدرس محل brush های SyntaxHighlighter خواهد بود که با توجه به اینکه آن ها را در کجای وبسایت خود قرار داده اید باید آن را مسیر دهی کنید.
StyleFilePath آدرس فایل CSS مورد استفاده SyntaxHighlighter است.

شیوه کار این کد به این صورت هست که با استفاده از لیست زبانهای قابل استفاده، در تگ های pre به جستجو می پردازد و در صورت یافتن، اسکریپت مربوط به آن زبان را به صفحه اضافه می کند.
تنها نکته مهمی که وجود داره عدم استفاده از $(document).ready() مربوط به JQuery هست. به این علت که این تکه کد مقداری اسکریپت در صفحه درج می کند و زمان وقوع رویداد ready کد html کامل دریافت شده است و درج مجدد یک اسکریپت جدید باعث refresh شده صفحه و از دست رفتن ظاهر اون میشه.

موفق باشید





تنظیم Http Proxy در CVS

25 01 2009

برای دریافت تعدادی کد نیاز داشتم تا از سرویس CVS (مخفف Concurrent Versions System) استفاده کنم و کدها رو که هاست شده بود دریافت کنم.

مشکل زمانی پیش اومد که ساختار اینترنت شرکت ما از یه Http Proxy برای دسترسی کاربران استفاده می کنه و تنظیم خاصی برای عبور از این proxy برای ابزار cvs پیدا نکردم. البته می تونستم از طریق سرور کد ها رو دریافت کنم، ولی این خلاف منطق به نظر می رسید که امکان تنظیم چنین ویژگی پیش پا افتاده ای رو نگذاشته باشند.

پس از جستجوی فراوان تعدادی پارامتر رو پیدا کردم کردم که امکان تنظیم این ویژگی ها رو می ده. جالبه بدونید که در هیچ یک از رفرنس های اصلی این ابزار که مشاهده کردم در مورد این پارامتر ها حرفی گفته نشده بود!! یک منبعی که پیدا کردم لیست پستی هست:

http://www.cvsnt.org/pipermail/cvsnt/2005-November/022467.html

برای رفع این مشکل از پارامتر های زیر می توانید استفاده کنید:

  • proxy: آدرس پراکـسـی سرور خواهد بود. برای مثال 192.168.0.1
  • proxyport: آدرس پورت پراکـسـی سرور خواهد یود. برای مثال 8080
  • proxyuser: نام کاربری برای لاگین شدن به پراکـسـی سرور هست که اختیاری است. یعنی در صورتی که پراکـسـی سرور شما نیاز به تایید هویت داره باید از ان پارامتر استفاده کنید.
  • proxypassword: کلمه عبور برای لاگین شدن به پراکسی سرور که اختیاری است.

توجه کنید موارد فوق فقط بر روی سرور هایی که از pserver استفاده می کنند کار خواهد کرد. pserver مخفف password server هست که دسترسی را از طریق کلمه عبور و رمز را امکان پذیر می کند.

یه نمونه از خط فرمانی که از موارد فوق استفاده می کند:

cvs -d :pserver;proxy=192.168.0.3;proxyport=6000:guest@test.com:/cvs

برای TortoiseCVS

در صورتی که از برنامه TortoiseCVS استفاده می کنید در قسمت «Protocol parameters» هست که باید موارد فوق را وارد کنید.

اگر مثال فوق رو بخواهیم از طریق TortoiseCVS انجام بدیم باید در فیلدی که گفتم مقدار زیر رو قرار بدید:

proxy=192.168.0.3;proxyport=6000

تصویر زیر این مورد رو نشان می ده.

TortoiseCVS




محاسبه تعداد کاربران آنلاین در ASP.NET

3 01 2009

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

در ASP.NET نیز چندین روش وجود دارد که یکی از آنها استفاده از رویدادهای Session است. در استفاده از شیئ Session در حالت عادی چندین مشکل مانند TimeOut وجود دارد که باعث عدم کارایی این روش می شود.

ابزار OnlineActiveUsers را به عنوان راه حلی ساده برای این مشکلات نوشتم تا به راحتی امکان آمار گیری از کاربران آنلاین سایت وجود داشته باشد.

  • توضیحی مختصر درباره OnlineActiveUsers

این ابزار از رویدادهای شیئ Session به نحوی متفاوت استفاده می کند، به گونه ای که مشکلات استفاده از آن مرتفع شده و روشی مطمئن برخوردار خواهید بود.

در صورتی که نیاز دارید تفکیکی بر کاربران عضو در سایت و کاربران میهمان داشته باشید، این ابزار این کار را برای شما می تواند انجام دهد و تنها کافی است تا فراخوانی های مورد نیاز انجام شود.

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

اگر نظرات و پیشنهادی در مورد توسعه این ابزار دارید خوشحال می شوم

* مطالب مرتبط

بررسی فعال بودن Javascript در ASP.NET

راهنمای کامل توابع JQuery و MooTools به صورت CHM





بررسی فعال بودن Javascript در ASP.NET

28 12 2008

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

  • استفاده از تگ noscript

البته این روش ربطی به ASP.NET نداره ولی با این حال مفید هست. با استفاده از کد زیر می تونید کاربر رو زمانی که جاوا اسکریپت در صفحه فعال نیست به صفحه خاصی هدایت کنید.

<meta http-equiv="refresh" content="0;url=EnableScripts.htm">

همانطور که از کد مشخصه این کار باعث میشه تا کاربر به صفحه EnableScripts.htm هدایت بشه. معمولا این روش زیاد کاربر پسند نیست ولی برای صفحاتی که بدون وجود جاوا اسکریپت به هم خواهند خورد و فعال بودن آن حیاطی هست می تونید از این روش استفاده کنید. دقت کنید که کد بالا باید در بخش Head سایت قرار بگیره، مانند زیر:<head>
<title>Welcome</title>
<noscript>
<meta http-equiv="refresh" content="0;url=http://www.google.com">
</noscript>
</head>

همچنین به جای کد بالا می تونید پیغامی رو در صفحه نمایش بدید:

<noscript>
کاربر گرامی، برای مشاهده این صفحه باید جاوا اسکریپت را در مرورگر خود فعال نمایید.
</noscript>

که این کد رو می تونید در هرجای صفحه قرار بدین.

  • استفاده از فیلد مخفی یا Hidden در ASP.NET

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

برای بررسی فعال بودن جاوا اسکریپت در رویداد های PostBack ابتدا باید یک فیلد hidden رو در فرم قرار بدین و مقدار این فیلد رو برابر 0 قرار بدین. چیزی شبیه این:
<asp:HiddenField ID="txtCheckJS" runat="server" Value="0" />

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

<script type="text/javascript">
document.getElementById('<%=txtCheckJS.ClientID %>').value='1';
</script>

کاری که این کد جاوا اسکریپت انجام میده تغییر مقدار فیلد به 1 هست، که یعنی جاوا اسکریپت فعال است. تنها کاری که باقی مونده بررسی این فیلد در رویداد کلیک هست. کافی هست که کدی مانند زیر رو استفاده کنید:
if (Page.IsPostBack)
{
if (Convert.ToInt32(txtCheckJS.Value) == 1)
{
// Javascript is enabled
}
else
{
// Oh No!
// Javascript is not enabled
}
}

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





راهنمای کامل توابع JQuery و MooTools به صورت CHM

20 12 2008

در زیر لینک دانلود مرجع کامل توابع اصلی JQuery همراه با توابع UI رو گذاشتم. حجم فایل 184 کیلوبایت و در فرمت chm هست.

برای آشنایی با JQuery می تونید به این پست و این پست آقای امیر عباس مراجعه کنید.

به روز رسانی 7 بهمن: JQuery 1.3  لینک دانلود

JQuery 1.2.1  لینک دانلود 1
JQuery 1.2.1  لینک دانلود 2

این هم لینک دریافت مرجع توابع کتابخانه MooTools:

MooTools لینک دانلود:

http://www.adrive.com/public/15c1ff4378301e96b18a9a56a1fa591f4ec46972ba49a5b5ad2ab0126e5570c5.html

منبع: http://charupload.wordpress.com/2007/12/07/jquery-documentation-chm