Sourceforge.net هم برای ایران تحریم شد

24 01 2010
SF.net

Sourceforge.net از معدود سرویس های پروژه های باز برای ایران بسته شد! بخوانید

Users residing in countries on the United States Office of Foreign Assets Control sanction list, including Cuba, Iran, North Korea, Sudan and Syria, may not post Content to, or access Content available through, SourceForge.net.

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

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

ایمان در این پست سایتهای مختلف میزبانی پروژه های باز رو معرفی کرده. البته مدتی قبل برای یه کار گروهی با xp-dev.com کار کرده بودم و جالب بود.

  • نحوه دانلود با وجود تحریم ها

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

تنها کاری که لازمه رفتن به این آدرس و جستجو برای پروژه مورد نظرتون هست. برای مثال پروژه ++Notepad در این آدرس قرار داره و صفحه دانلودش اینجا هست.





رفع غلط های املایی سایت با Firefox

10 09 2009

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

در این روشی که معرفی می کنم هیچ کاری لازم نیست انجام بدید فقط کد زیر رو در نوار آدرس سایتتون وارد کنید. توجه کنید که مرورگر باید Firefox باشه (روی opera 10 امتحان کردم و جواب داد):

javascript:document.body.contentEditable='true'; document.designMode='on'; void 0

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

Firefox Spell Checking Website

Firefox is spell checking a website

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

نکته: برای اینکه این غلط یابی برای فارسی درست کار کنه باید دیکشنری فارسی فایرفاکس رو نصب کنید. اینجا.

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





وصله ماکروسافت برای رفع مشکل 7 ماهه من

31 07 2009

یک هفته پیش متوجه منشا و علت اصلی اشکالی شدم که نزدیک به 7 ماه بود من رو مشغول به خود کرده بود و نمی توانستم دلیل اصلی اون رو پیدا کنم.
مشکل مروبط به عملکرد کلاس CookieContainer هست که اشکال داره و در شرایط خیلی خاص دچار مشکل کوچکی می شه که باعث اشکالات عجیبی برای یکی از پروژه هام شده.
به هر حال بعد از گزارش دیروز من به ماکروسافت امروز خبر دار شدم که مشکل رو حل کردن و قراره در dotNET 4 قرار داده بشه.
برام خیلی خوشحال کننده است که تونستند در یک روز مشکل رو حل کنند. اما چه فایده که همچنان مشکل فعلی باقی خواهد ماند.
مشکل مربوطه رو اینجا بخونید:
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=478521

اینجا هم گذاشته بودم:
http://stackoverflow.com/questions/1047669/cookiecontainer-bug





بررسی کامل 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 که برای دلفی نوشته شده است می توانید، وظایف و یا کارهای طولانی خود را بدون وقفه در کار برنامه انجام دهید.