۱۳۸۸ بهمن ۲۵, یکشنبه

From MAC OS X 10.5 to iPad to Prohibition

از زمانی که خبر تولید iPad پخش شد ما هم کنجکاو شدیم ببینیم اصلا این پلتفرم های Apple چگونه اند! آیا واقعا همانند Unix هستند یا خیر!؟

برای شروع برنامه سازی برای iPad خواستیم برای iPhone برنامه بسازیم و مطلع شدیم که بهترین زبان در این مورد زبان Objective-C می باشد که بسیار هم زبان چموشی به نظر می رسد. من به شخصه این زبان را نمی پسندم و احساس می کنم که به زور خواستند یک سری Extension را به خورد C/C++ بدهند.

چند وقتی است که Novell یک محصول به نام MonoTouch را معرفی کرده. با استفاده از آن می توان برنامه هایی Native برای iPhone نوشت، اما، به زبان C# و با استفاده از امکانات محدودتر شده از کتابخانه .Net به اضافه امکان استفاده از تمامی API های iPhone و از همه مهمتر با حظور Garbage Collector! البته این محصول مجانی نیست. مهمترین نکته در مورد آن این است که برنامه تولید شده توسط این ابزار Native است و بدون نیاز به نصب هیچ افزونه ای اجرا می شود. و با توجه به اینکه حتی خود Apple هم امکان GC را برای iPhone قرار نداده، وجود GC در این ابزار بسیار قابل توجه است. شاید تنها نقطه ضعف آن این است که حجم یک برنامه Hello Word که به وسیله MonoTouch ایجاد شده حدود 4MB خواهد بود. که این موضوع هم به دلایل بسیاری می تواند قابل چشم پوشی باشد (البته بسته به کاربرد).

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

پیش نیاز ها به ترتیب عبارتند از:

  • سیستم عامل MAC OS X
  • iPhone SDK
  • Mono Framework
  • MonoDevelop

نصب MAC OS X بر وری VMWare خودش داستانی است که شاید یک پست دیگر می طلبد، خود ما هم از اینجا کمک گرفتیم. بارها صفحه بالا آمدن MAC با آن سیب گاز زده را دیدیم ولی حتی محیط نصب هم بالا نیامد!

اما در آخر موفق شدیم.

در مورد iPhone SDK ظاهرا Apple هم در مورد ایران حساس است و نمی گذارد iPhone SDK را دانلود کنیم. به هر حال Torrent آنرا پیدا کرده و به همراه بقیه پیش نیاز ها نصب کردیم.

MonoDevelop به خوبی کار کرد و برنامه نوسی به زبان C# بر روی MAC OS امکانپذیر شد اما فقط برای برنامه های غیر iPhone ی. امکان ایجاد یک پروژه iPhone ی وجود داشت ولی هنگامی که می خواستیم فایل UI این پروژه را ویرایش کنیم به مشکل بر خوردیم.

Interface Builder نتوانست فایل xip (که در ایجاد UI کاربرد دارد) را باز کند و مشکل از نا هماهنگی نسخه ی iPhone SDK بود. ای کاش تحریم نبودیم و مجبور نبودیم یک فایل 2GB ی را دانلود کنیم و دست آخر متوجه شویم که اشتباه دانلود کردیم و ای کاش می شد هر چیزی را از مرجع آن دریافت کرد.

واقعا متاسفام که این تحریم به راحتی اثرات مشهودی بر کار ما می گذارد. خدا میداند! شاید همین تحریم باعث شد، چیزی شبیه iPad ساختیم و سپس SDK ی آنرا تولید کرده و بعد یک برنامه ساختیم مانند MonoTouch که بایت کد های CLI را به ساختار Native قابل اجرا برای آن دستگاه تبدیل کند! یا حتی از اول دستگاهی ساختیم که قابلیت اجرای بایت کد های CLI را داشته باشد. یا اصلا چرا این کارها! شاید اصلا خودمان Byte Code خودمان را تولید کردیم از نوع ملی و محلی و …!

پی نوشت 1: این شرکت هایی که نمی گذارند ایران از آنها سرویس بگیرد معمولا گناهی ندارند و فقط قانون را اجرا می کنند.
پی نوشت 2: خوشبختانه C# و CLI هر دو استاندارد هستند و ما می توانیم از آنها استفاده کنیم و یا (اگر بتوانیم) پیاده سازی خودمان را داشته باشیم؛ بدون هیچ محدودیتی.
پی نوشت 3: این پست شامل چند ScreenShot از MAC OS X و MonoDevelop اجرا شده تحت آن بود اما متاسفانه (احتمالا باز هم بخاطر تحریم) پست با تصویر را نمی توان به راحتی از طریق نرم افزار Windows Live Writer ارسال کرد. البته پی گیری این امر از حوصله و وقت ما خارج بود.

۸ نظر:

  1. salam ba goroohe barname nevisane m.a
    ghabool kon daee jan ke goroohe shoma dare too in weblog talashe bihoode mikone . chon hishki be shoma sar nemizane . faghat minevisid va kasi ham nist ke bekhoone
    amma age khastid mitoonam be shoma eftekhar dade va bogzaram ta az weblog man yad begirid ke tarrahi site yani che ?
    alisamaiee.blogfa.com
    alisamaiee@gmail.com

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

    پاسخحذف
  3. داش علی!!!! بابا ما که نون و نمک همدیگه رو خوردیم تو که خودت چند دفعه واسه من میوه اوردی D:
    اِ اِ اِ اِ اِ اِ اِ

    نه خدایش این درسته ؟!

    شما بیایی تو وبلاگ ما ما رو نخ نما کنی؟

    داییت هم که یه کامنت گذاشته همه رو نابود کرده D:

    پاسخحذف
  4. بسیار عالی بود .
    موفق باشید .

    پاسخحذف
  5. فقط دوستان من راهی برای تماس با شما پیدا نکردم . بد جور به کمک نیاز دارم . ممنون میشم که با من تماس بگیرید .

    my email address : niazmand@msn.com
    my yahoo id : arash_niazmand_p2
    سپاس دوستان من .

    پاسخحذف
  6. چه کمکی از دست ما بر میاد؟

    پاسخحذف
  7. دوست من سلام .
    من احتیاج دارم بدونم چطور میشه تحت مک کد نوشت .
    من c# کار هستم . mono project and mono develop رو نگاه کردم ، ولی چیزی دستگیرم نشد ،
    من قسمت form design در مونو کلا ندارم .
    لطفا اگر می تونید راهنمایی کنید من رو .

    سپاس .

    پاسخحذف
  8. 1 - یک عدد سیستم که روی آن Mac نصب باشد.
    2 - مراجعه به لینک زیر ثبت نام و دریافت Developer Tools XCode که به علت تحریم باید با فیلتر شکن بری که نفهمه از ایران هستی وگر نه نمیتونی برنامه رو که مجانی هم هست بگیری :
    http://developer.apple.com/technologies/tools/xcode.html
    3 - برای اطلاعات بیشتر هم میتونی از لینک زیر استفاده کنی :
    http://developer.apple.com/
    البته همونطور که خودت گفتی با C# وابزار هایی که گفتی هم میشه یه کارایی کرد ولی روش حرفه ایش اینه.
    موفق باشی

    پاسخحذف