لذت برنامه نویسی: نمایش نقشه در html5

اینم یه تجربه پراکنده دیگه!

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

وضعیت من از این قرار بود:

  • یه نقشه به فرمت ArcGIS داشتم که هیچ برنامه‌ای برای بازکردنش نداشتم. اون فرمت شامل یه نوع فایل خاص به نام shapeFile بود که نقشه رو توصیف می‌کرد.
  • من هیچ ایده‌ای نداشتم که کار به چه صورت باید انجام بشه.
  • هیچ تجربه قبلی هم با html5 و بالاخص canvas نداشتم.

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

  • اول shapeFile رو بعد از تحقیقات زیاد با استفاده از نرم‌افزار متن‌باز qGIS تبدیل کردیم به فرمت KML که یه فرمت متن‌باز برای نقشه‌هاست.
  • دوم اینکه با استفاده از jQuery فایل KML رو خونده و parse کردیم.
  • حالا که نقاط نقشه یا بهتره بگم نقاط چند ظلعی‌ها رو بصورت مجزا داشتیم هریک از اونها رو توی html5 کشیدیم و بهش رنگ و فرمت دادیم
  • یه سری هم محاسبه انجام دادم که بتونم عناصر داینامیک رو روی نقشه نشون بدم.

در کل تجربه خیلی جالبی بود و برای منی که کلا از وب سررشته خاصی نداشتم غول مرحله آخر به حساب می‌اومد و از انجامش لذت بردم.

همین!

لذت برنامه نویسی: معرفی زبان lua

اینم یه تجربه پراکنده دیگه!

امروز با یه زبان جدید آشنا شدم که اسمش lua است. این زبان رو قبلا تو کانفیگ کردن nginx و جاهای دیگه هم دیده بودم. این زبان یک زبان مفصریه و یعنی کامپایلری نداره و زمان اجرا تفسیر و اجر میشه. این زبان به نسبت ساده است و با زبان‌هایی مثل javascript و scheme مقایسه میشه. چند روز پیش هم که داشتم توی اینترنت میگشتم دیدم که یکی از ویژگی‌های این زبان اینه که شما میتونی توی یک برنامه دیگه از اون استفاده کنی. یعنی مفسرش به برنامه اضافه میشه و برنامت میتونه به با استفاده از lua برنامه ریزی بشه و مثلا plugin براش طراحی بشه.

کل مساله ای که من میخواستم حل کنم و به نظرم lua برای این کار مناسب اومد اینه که، قراره برنامه‌ای نوشته بشه که بصورت داینامیک بشه منطق کسب و کار رو توش عوض کرد. یعنی اینکه تا دیروز براساس روند a عمل میشده و امروز روند b باید عمل بشه. راه‌حل‌های زیادی برای این مساله وجود داره که در جامع ترین حالتش شما باید یه زبان توصیف مخصوص به خودت درست کنی و از اون استفاده کنی تا منطق کسب و کار رو پیاده‌سازی و تست بکنی. خب این روش الان توی تقریبا همه‌ی سیستم‌های مدیریت روند‌های کسب و کار وجود داره ولی من به ذهنم رسید وقتی یه چیزی مثل lua وجود داره و به راحتی با برنامه‌ی شما integrate میشه چرا بایستی من با تجربه و توان محدودم بخوام یه شبه زبان برنامه نویسی طراحی کنم. یه چیز دیگه که باعث شد به استفاده از lua فکر کنم این بود که  مثلا یه بخش از برنامه رو توی یه زبان دیگه بنویسی و فقط توی lua از اون استفاده کنی. این باعث میشه کارهایی که نیاز به کارایی و این چیزا دارن در زبانه دیگه طراحی بشن و فقط lua اونها رو سر هم کنه.

بعد گشتم و سعی کردم شواهدی در اینترنت پیدا کنم که ایده‌ای که به ذهنم رسیده آیا درسته یا نه. دیدم که مثلا در طراحی بازی خیلی از این ویژگی استفاده وعملا lua یک زبان برنامه‌نویسی محبوب در بین توسعه دهنده‌های بازی هست. یا دیدم که نرم‌افزاری به نام freeswitch که برای راه‌کاری تلفنی مبتنی بر voip هست از lua  به عنوان زبان طراحی روند تماس استفاده میکنه. یا با استفاده از lua شما میتونی nginx رو کنترل کنی. همچنین دیدم یه جایی مثل cisco برای سطوح دسترسی پویا از این زبان استفاده کرده. حتی lua یک سرور مثل node.js به نام luvit داره اما به اون مشهوری نیست.

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

همین!