تو این یه مدت به شدت زدم تو خط WebKit که ازش سر در بیارم. برای اون هایی که نمی دونن WebKit چیه لازمه که توضیح بدم ایشون یه موتور رندرینگ صفحات وب هستن که میشه بر پایه اون حتی اقدام به ساخت یه مرورگر کرد. کاری که Google Chrome و Apple Safari و خیلی های دیگه انجامش دادن.
اما یه موتور رندرینگ صفحات وب چجوری میتونه برای یه برنامه نویس پایتون مفید باشه؟
برای پیدا کردن این جواب من 12 روز کامل رو با WebKit گذروندم و بعد این 12 روز تقریبا دید ذهنی من نسبت به برنامه نویسی دسکتاپ به طور کامل عوض شد!
من برنامه نویسی وب رو بیشتر از دسکتاپ دوست دارم چون از نظر من جالب تره. سر و کله زدن با کدهای جاوا اسکریپت و تگ های HTML و بازی با CSS برام لذت بخشه. نوع مدلی که یه برنامه ی وب با کاربراش ارتباط برقرار میکنه هم برام جالبه. درسته که در محیط دسکتاپ حیطه ی اختیارات برنامه نویس بالاتره و میشه برنامه های متنوع تری خلق کرد اما حداقل برای من به اندازه ی برنامه نویسی وب لذت بخش نیست. ماهیگیری کاریه که خیلی دنگ و فنگ داره اما واسه ی همین دنگ و فنگ هاشه که آدم میره ماهیگیری چون از تک تک لحظاتش لذت میبره, وگرنه خیلی راحت تره که آدم بخواد بره بازار و یه ماهی سفید گنده بخره.
اما برسیم به اینکه توی این 12 روز چی گذشت. برای انگولک کردن WebKit با پایتون گزینه های جالبی پیش روم بود که دو تا شون بیشتر نظر من رو جلب کرد.
پایتون برای کار با تولکیت GTK از رابط PyGTK استفاده میکنه. این بسته ی نرم افزاری باعث میشه که بتونید از طریق GTK و PyGTK از WebKit استفاده کنید. بهر حال WebKit برای رندر کردن صفحات نیاز به رابط گرافیکی داره که به صورت پیش فرض در خود WebKit موجود نیست اما با امکاناتی که در اختیار توسعه دهنده ها میزاره این امکان رو میده که برنامه نویس ها بتونن به راحتی با استفاده از تولکیت هایی مثل GTK این کار رو انجام بدن. در این حالت وقتی شما از تگ <button> تو html استفاده میکنید WebKit برای به تصویر درآوردن یک دکمه در صفحه ی وب از تولکیت GTK کمک میگیره.
اینم رابط برنامه نویسی پایتون واسه تولکیت QT هستش که تو نسخه های جدیدش WebKit رو جزو API های پیش فرض خودش قرار داده. من خودم فقط با GTK کد زده بودم و تاحالا با QT کار نکرده بودم ولی در این مورد خاص تصمیم گرفتم از QT استفاده کنم! خواهشا نگید چرا, چون علاوه بر اینکه هیچ دلیل خاصی واسه برتری QT به GTK وجود نداره, به همون اندازه هم هیچ دلیلی برای استفاده از جفتشون وجود نداشت! من قرار نبود با QT یا GTK خیلی کار داشته باشم و این وسط مساله ی مهم WebKit بود.
تصاویر این پایین رو ببینید:


واستون جالب نیست اگه بگم تمام چیزی که دارید میبینید یه صفحه ی HTML هست؟ این همون دلیله که من گفتم اصلا فرقی نمیکرد که از GTK استفاده کنم یا QT. وقتی میتونم GUI هایی با کمک HTML و جاوا اسکریپت بسازم چرا باید به خودم زحمت بدم و از این تولکیت ها استفاده کنم. درسته که به وقتش ازشون استفاده خواهم کرد ولی مسلما در زمینه طراحی GUI برنامه هام نخواهد بود!
WebKit به من این امکان رو میده بتونم همون طوری که واسه وب کد میزدم برای دسکتاپ هم کد بزنم. تازه از اونجایی که من دارم با یه مرورگر تمام عیار برنامه هام رو میسازم ارتباط با سرویس ها و یا برنامه های دیگه ی اینترنتی کار زیاد سختی نیست.
ممکنه واستون یه سری سوال پیش اومده باشه. سوال هایی که واسه منم پیش اومد و تو این 12 روز تمام وقتم رو گرفتن (این قضیه که من تاحالا با QT کار نکرده بودم رو هم حساب کنید):
1. اگه این یه صفحه ی HTML هست چجوری کاری کردی که مثل یه برنامه ی معمولی دسکتاپ خودشو نشون بده؟ مثلا چرا پشت صفحه سفید رنگ نیست؟
2. دیالوگ های مختلف رو چجوری می خوای تو برنامت نشون بدی. WebKit که فقط یه موتور رندرینگه و نمی تونه مثله FireFox اگه با جاوا اسکریپت زدی window.open چیزی رو بهت نشون بده؟
3. اگه برنامت جای 1 دونه فرم 20 تا فرم داشت چی؟
4. چجوری می خوای بعد از شروع کار برنامه, GUI ایی که ساختی رو با توجه به وضعیت فعلی برنامه تغییر بدی؟
5. چجوری وقتی روی یه دکمه کلیک شد کدی رو اجرا کنی؟ اون هم کد پایتون, نه کد جاوا اسکریپت؟
6. چجوری جاوا اسکریپت قراره با کدهای پایتون که تو پشت صحنه هستن حرف بزنه؟
7. یا برعکس چجوری پایتون باید با جاوا اسکریپ ارتباط برقرار کنه؟
8. اگه بخوای از ابزار های جاوا اسکریپت مثل jQuery استفاده کنی باید چیکار کنی؟
…… و تعدادی سوال دیگه که ممکنه واستون پیش بیاد. بهر حال شما دارید واسه ی دسکتاپ برنامه می نویسید نه وب, پس خیلی چیزا ممکنه فرق کنه یا حداقل به طریق دیگه ایی انجام بشه. اگه حوصله کنم سعی میکنم یه سری مقاله در این زمینه بنویسم که در مورد چم و خم این مدل برنامه نویسی توش حرف بزنم. مسلما اگه چیزی بنویسم هم در زمینه ی پایتون خواهد بود ولی تا وقتی که دارم از QT استفاده میکنم, هر زبان برنامه نویسی دیگه ایی که بتونه با QT ارتباط برقرار کنه میتونه کاری مشابه رو انجام بده.
خلاصه آقاجون تو این 12 روز فهمیدم که این WebKit مثل هلو میمونه آدم دوست داره قورتش بده این ناقلا رو!






6 comments
Comments feed for this article
آگوست 29, 2009 در 6:00 ق.ظ
psamim
سلام
خیلی جالب بود!!
البته راه های آسونتر هم هست مثلا من شنیدم با XULrunner هم میشه خارج از فایرفاکس به زبان XUL و Javascript نوشت. خود فایرفاکس رو کلیش رو با جاوااسکریپت نوشتند. XUL هم خیلی شبیه HTML هست. پس احتمالا میشه با XULrunner برنامه های دسکتاپ با جاوااسکریپت نوشت. من خیلی چیزی نمی دونم. ان شا الله شما برید سراغش و یه مقاله باحال و به درد بخور مثل همین درباره اون بنویسید. منتظریم، ممنون
آگوست 29, 2009 در 12:58 ب.ظ
امیررضا
البته که میشه نوشت. من زیاد در موردش تحقیق نکردم ولی الآن اون بیرون برنامه های زیادی هست که با XULrunner نوشته شده و این چیزه تازه ایی نیست. پایتون از XULrunner هم پشتیبانی خوبی میکنه نمونش ادیتور Komodo Edit یا Miro, که با پایتون و XULrunner نوشته شدن.
موضوع سر انتخاب شخصی خودته. یکی با webkit اینکارو میکنه یکی هم با XULrunner.
آگوست 31, 2009 در 7:33 ق.ظ
psamim
بله، اما آخه Webkit صفحات HTML رندر می کنه، فکر نمی کنم بتونه با پایتون ارتباط بگیره، برای ساختن مرورگره اما XUL برای ساختن برنامه های دسکتاپه.
آگوست 31, 2009 در 9:08 ق.ظ
امیررضا
XULrunner مجموعه ایی از تکنولوژی هاست که یکیش موتور رندرینگ Gecko هست. هم XULrunner و هم webkit در دسکتاپ اجرا میشن پس جدا از اینکه این ها Html رندر میکنن, باید اون ها رو مخصوص دسکتاپ به حساب آورد.
دو تا عکسی که اون بالا میبینی شبیه چیه؟ حتما من تونستم از طریق پایتون با webkit ارتباط برقرار کنم که یه همچین چیزی نوشتم دیگه.
این اسم ها واست آشناست حتما: Pidgin, Yelp, Liferea, Evolution, Digsby
همه ی اون برنامه ها از webkit استفاده کردن و همشونم از برنامه های معروف دسکتاپ هستن. حالا همونطور که قول دادم یه سری مقاله مینویسم که قضیه روشن تر شه اونوقت خودت میفهمی چقدر همه چیز ساده و جالبه.
آگوست 31, 2009 در 6:01 ب.ظ
psamim
خیلی ممنون!! خیلی جالب شد! حتما! منتظریم!
سپتامبر 5, 2009 در 8:42 ق.ظ
hamed
جالبه …
من هم منتظرم