Programming بایگانی - تاد

multiplatform-banner-2

از چه ابزاری برای تولید برنامه موبایل استفاده کنیم؟

توسط | مقالات فنی | ۹ نظر

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

سهم هر یک از پلت فرم‌های موبایل در حال حاضر مطابق نمودار زیر در جهان است:

سهم آندروید و آی-او-اس و ویندوزفون در بازار

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

چه ابزارهای استانداردی عرضه شده است؟

برای نوشتن برنامه های هر سیستم عامل موبایل، ابزارهای استانداردی از سوی شرکت های مادر معرفی شده است. اگر پلت فرم‌های اصلی را آندروید شرکت گوگل، iOS شرکت اپل و ویندوزفون شرکت مایکروسافت بدانیم، به ترتیب ابزارها و زبان‌های برنامه نویسی زیر جهت تولید برنامه از سوی این شرکت ها معرفی شده است:

سیستم عامل محیط توسعه زبان برنامه نویسی سایت رسمی توسعه دهندگان
آندروید Android Studio یا Eclipse Java developer.android.com
iOS Xcode Objective-C یا Swift developer.apple.com
ویندوزفون Visual Studio  عموما #C dev.windows.com 

هنگامی که از تکنولوژی های اصلی هر سیستم عامل برای تولید برنامه استفاده میکنیم، اصطلاحا از ابزارهای بومی (یا Native) بهره برده‌ایم که در واقع سیستم‌عامل مورد نظر با بهترین سرعت ممکن و بیشترین میزان هماهنگی از نظر امکانات و ظاهر برنامه را اجرا خواهد کرد. راه حل‌های جایگزین دیگری نیز برای تولید برنامه موبایل وجود دارد که برخی از ویژگی های ذکر شده‌ی اپ های بومی (Native) را ندارند.

چه ابزارهایی برای خروجی همزمان روی چند پلت‌فرم وجود دارد؟

ابزارهای تولید نرم افزار موبایل برای چند پلت فرم Xamarin Appcelerator

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

۱- ابزارهای ترکیبی (Hybrid) با استفاده از HTML5 و Adobe Air

با ورود HTML5 و پشتیبانی مرورگرهای موبایل از این استاندارد، و از طرفی معرفی Adobe Air برای موبایل، این ابزارها تلاش نموده اند تا با استفاده از همان تکنولوژی هایی که بر روی مرورگرها وجود دارد یعنی HTML, Flash, CSS و JavaScript برنامه هایی طراحی کنند که به دلیل استاندارد بودن نحوه نمایش صفحات طراحی شده با HTML5، این صفحات بر روی دستگاه های مختلف به یک شکل و به صورت همزمان قابل مشاهده خواهند بود. این ابزارها حتی با پیوند زدن Javascript با امکانات بومی دستگاه، امکان استفاده از امکانات دستگاه مانند دوربین، موقعیت مکانی GPS و امکانات ارتباطی ایمیل و پیامک را به برنامه‌های نوشته شده می‌دهند. نمونه‌های موجود عبارتند از:

ردیف نام لینک
۱ Sencha Touch https://www.sencha.com/products/touch
۲ PhoneGap http://phonegap.com
۳ SAP http://go.sap.com/developer.html
۴ Kony http://www.kony.com/products/mobilefabric
۵ Adobe Air  http://www.adobe.com/devnet/devices.html

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

از آنجایی که اکثر پلت فرمهای موجود بر پایه HTML5 یا Flash (به استثنای Starling) از امکانات افزایش سرعت سخت‌افزاری استفاده نمیکنند، معمولا عملکرد کند تری نسبت به برنامه های معمول دارند و برای برنامه هایی که نیاز به Performance بالا دارند مناسب نیستند. به همین جهت در حال حاضر اکثر برنامه های تولید شده توسط این ابزارها، شامل نمایش محتوا و یا پر کردن فرم های درخواست می‌شود.

۲- ابزارهایی که خروجی بومی می‌دهند

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

Xamarin تلاش می‌کند تا از چارچوب .NET استفاده کرده و زبان برنامه نویسی مشترکی بین دو پلت فرم آندروید و آی-او-اس ایجاد نماید تا توسعه دهندگان به جای یادگیری دو زبان برنامه نویسی Java و Objective-C به صورت مشترک با زبان #C اقدام به نوشتن برنامه‌های خود کنند. بنابراین به صورت عمده بهره‌ای که در استفاده از این ابزار گرفته می‌شود، این است که هنگام ساخت نرم افزارهای آی-او-اس، توابع و کتابخانه‌های ارایه شده توسط شرکت اپل در زبان #C قابل دسترسی و اجرا می‌شوند. به عنوان مثال برای نمایش یک پیام به کاربر (Alert View) قطعه کدهای زیر را مشاهده کنید:

Objective-C (iOS)
 Xamarin C# (iOS)
Java (Android)
Xamarin C# (Android)

در تجربه‌ای که با ابزار Titanium یا Appcelerator داشتیم، به این نتیجه رسیدیم که برای برنامه‌ای مانند یک سیستم پخش موسیقی که نیاز به شخصی سازی (Customization) زیادی دارد، استفاده از این پلت فرم دست توسعه دهنده را می‌بندد و به حالتی منجر می‌شود که می‌بایست تعداد زیادی افزونه (Plugin) به زبان بومی iOS و آندروید نوشته شود که کارایی های دلخواه و شخصی شده را ارایه بدهد. بنابراین نه تنها توسعه دهندگان تیم شما می‌بایست به محیط Titanium مسلط باشند، بلکه بابت نیازهای خاص ایجاد شده می‌بایست بر محیط توسعه بومی iOS و آندروید نیز تسلط به دست بیاورند.

۳- چارچوب‌های ساخت بازی

بازی ها به دلیل ماهیت شان و اینکه به المان های سیستم عامل وابستگی چندانی ندارند، بهترین گزینه برای خروجی گرفتن همزمان بر روی چند پلت فرم هستند. تکنولوژی های مورد نیاز برای بازی های دو بعدی و سه بعدی در موبایل اکثرا در انتها به استفاده از OpenGL باز میگردد که API های مشابه و مستقل از سخت افزار اکثر آن را تشکیل می‌دهد. به همین دلیل ابزارهای خروجی همزمان بسیار در این زمینه موفق عمل کرده اند و موتورهایی نظیر Unity و UDK در سال های اخیر توسط بسیاری از توسعه دهندگان بازی های مستقل (Indie) مورد استفاده قرار گرفته است. تعدادی از موتورهای بازی سازی با امکان خروجی همزمان در فهرست زیر معرفی شده اند:

نام زبان برنامه نویسی توضیحات
۱ Unity #C مناسب برای بازی‌های دوبعدی و سه بعدی
http://www.unity3d.com
۲ UDK UnrealScript مناسب برای بازی‌های سه بعدی

http://www.unrealengine.com

۳ CryEngine  Lua مناسب برای بازی های سه بعدی با امکان خروجی برای کنسولها و PC

http://www.crytek.com/cryengine

۴ GameMaker  GML http://www.yoyogames.com
۵ Cocos2d-X  Lua, C++, JS مناسب برای بازی های دوبعدی و موبایل

http://www.cocos2d-x.org

۶ Corona SDK  Lua

مناسب برای بازی های دوبعدی و موبایل

رایگان، نسخه فروشی در صورت نیاز به افزودن کتابخانه‌های بومی

https://coronalabs.com/products/corona-sdk

چه زمانی از ابزارهای خروجی همزمان استفاده کنم؟

جواب به این سوال، به نیاز شما و نوع برنامه‌ای که تولید می‌کنید بستگی دارد!

اگر بازی تولید میکنید: قطعا استفاده کنید! چارچوب های تولید برنامه برای چند پلت فرم در تمام آنها عملکرد بسیار مشابه دارند و با تغییرات اندکی می‌توانید برای هر پلت فرم خروجی مورد نظر خود را بگیرید. اگر بازی خود را با Android-SDK شرکت گوگل تولید کنید، برای iOS مجبور خواهید بود بسیاری از ساختارها رابازنویسی کنید اما استفاده از چارچوب های خروجی همزمان و موتورهای بازی مانند Unity به شما کمک میکند با کمترین تغییرات بازی خود را برای پلت دوم و سومی خروجی بگیرید.

اگر یک اپ ساده برای ارایه محتوا تولید می‌کنید: از چارچوب‌های خروجی همزمان با HTML5 استفاده کنید. این چارچوب‌ها ارایه‌ی محتوا را بسیار ساده کرده‌اند و محتوای شما به یک شکل در پلت فرم‌های مختلف دیده می‌شود. اگر با ActionScript یا فلش از قبل آشنا هستید، Adobe Air گزینه خوبی برای شماست.

اگر یک اپ با UI زیاد تولید می‌کنید و می‌خواهید آن را تا حد زیادی شخصی‌سازی (Customize) کنید: در استفاده از چارچوب‌های Native شک نکنید، استفاده از چارچوب‌های خروجی همزمان در بسیاری موارد مانعی بر سر راه شما برای شخصی سازی المان‌های نمایشی و UI هستند.

اگر یک اپ با UI عادی اما حجم کد منطق و پردازشی زیاد تولید می‌کنید: استفاده از ابزارهای خروجی همزمان مانند Xamarin به شما کمک می‌کند که بخش هایی از نرم افزار که به دریافت، پردازش و نگهداری اطلاعات می‌پردازد را یک بار توسعه بدهید.

بخش پنهان و خاموش برنامه های موبایل را فراموش نکنیم!

بسیاری از بازی ها وبرنامه هایی که امروزه استفاده میکنیم، اطلاعات را در خود دستگاه ذخیره نمیکنند بلکه با یک ارتباط اینترنتی خدمات را ارایه میدهند و پشت صحنه‌ی آنها، یک سرور مرکزی برای جمع آوری، نگهداری و تحویل اطلاعات وجود دارد. این مقاله به تکنولوژی های مربوط به نوشتن برنامه‌ی موبایل یا Client پرداخته است، اما اگر سیستمی که به دنبال پیاده سازی آن هستید نیاز به بخش Server دارد، می‌بایست تکنولوژی های سمت وب از جمله PHP، ASP.NET و Ruby و یا Python را هم بررسی کنید که عموما برای تولید سرویس دهنده ها مورد استفاده قرار میگیرند.

Chinese New Year Crowds from CNN

چطور یک Thread Pool بسازیم!

توسط | مقالات فنی | نظری داده نشده.

[این مقاله در سطح «متوسط» و نیازمند آشنایی خواننده با مفهوم «پردازش موازی» و زبان برنامه‌سازی «++C» است.]

در پیاده‌سازی سرویس‌دهنده‌ها موارد بسیاری وجود دارد که در آن نیازمند پردازش درخواست‌های کوچک اما متعدد هستیم. برای درک بهتر مسأله یک شعبه‌ی بانک یا یک باجه‌ی فروش بلیت را در نظر بگیرید. در مثال شعبه‌ی بانک، تعداد مراجعان در طول یک روز غالباً بسیار زیاد است. پاسخ به درخواست هر مراجع ممکن است (به طور مثال) از ۵ تا ۵۰ دقیقه طول بکشد. آنچه برای شما به عنوان یک مراجع مهم است، سرعت شعبه‌ی بانک در پاسخ به درخواست شماست و احتمالاً دوست ندارید مدت‌ها در صف طولانی مراجعان بانک حضور داشته باشید. اگر از منظر رئیس شعبه به آن نگاه کنید، با دو مسأله روبرو هستید. از سویی، مراجعان از کندی سرعت شما در پاسخگویی گلایه خواهند کرد. از سوی دیگر، شما با توجه به منابع انسانی و مالی که در دسترس دارید نمی‌توانید بیش از توانتان به باجه‌های پاسخگویی اضافه کنید.

سرویس‌دهنده‌ها با مسأله مشابهی روبرو هستند، با این تفاوت که مراجعان همان درخواست‌های دریافت‌شده و منابع در دسترس همان پردازنده‌ها و حافظه هستند. برای سرویس‌دهی بیشتر و بهتر، شیوه‌ی اختصاص منابع به درخواست‌ها از اهمیت بسیاری برخوردار است. یکی از راهکارهای اختصاص منابع، استفاده از thread برای پردازش درخواست‌هاست. اما thread به‌خودی خود علاوه بر اختصاص منبع، مصرف‌کننده‌ی آن نیز هست. به زبان ساده‌تر، استفاده از thread، علی‌رغم اینکه می‌تواند به سرعت پردازش کمک کند، دارای سربار حافظه و پردازش است. این سربار به‌ویژه وقتی که زمان پردازش هر درخواست کم باشد، خود را نشان می‌دهد، زیرا زمان صرف‌شده برای ایجاد و مدیریت هر thread نسبت به زمان پردازش درخواست قابل توجه می‌شود. بر همین اساس توصیه می‌شود که از thread برای پردازش‌هایی استفاده شود که زمان قابل توجهی را به خود اختصاص می‌دهد و نه کارهای کوچک.

با توجه به مطالب گفته شده، مسائل پیش رو را مرور می‌کنیم: نخست،‌ ما با درخواست‌های پرتعدادی روبرو هستیم که قریب به اتفاق آنها زمان کمی برای پردازش نیاز دارند، اما قرار گرفتن آنها در صف پردازش زمان قابل توجهی را به خود اختصاص می‌دهد. دوم، با توجه به منابع محدود در دسترس، ما نیاز داریم که این منابع را به شیوه‌ای مناسب به درخواست‌ها اختصاص دهیم تا تمام درخواست‌ها در کوتاه‌ترین زمان ممکن پردازش شوند. سوم، ممکن است نیاز داشته باشیم که درخواست‌ها را بر اساس درجه‌بندی و اولویت آنها پردازش کنیم، به طوری که درخواست‌های حیاتی و فوری زمان کمتری را نسبت به درخواست‌های زمان‌بر و کم اهمیت در صف پردازش صرف کنند. این مقاله برای دستیابی به این اهداف راهکاری را پیاده‌سازی می‌کند که به thread pool موسوم است.

Read More

21446

۹ دروغی که برنامه‌نویسان معمولاً به خودشان می‌گویند

توسط | مقالات فنی | ۲ نظر

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

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

Read More

ایجاد سیستم پیش‌بینی خودکار در فرم‌های وب

توسط | مقالات فنی | نظری داده نشده.

aks

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

 به منظور استفاده‌ی آسان‌تر و بهتر از فرم‌ها ترفندهایی وجود دارد که در این مقاله می‌خواهیم یکی از مهم‌ترین آنها یعنی «قابلیت پیشبینی خودکار» را معرفی کنیم.

 در این مطلب، نحوه‌ی پیاده‌سازی سیستم پیش‌بینی خودکار (Auto Complete) را با استفاده از تکنولوژی های Zend ،jQuery UI ،AJAX توضیح خواهیم دادبرای درک بهتر موضوع، لازم است تا برخی مفاهیم مقدماتی لازم برای ایجاد چنین سیستمی معرفی شودابتدا مثالی عینی را طرح کرده و سپس مرحله به مرحله پیاده‌سازی آن را تشریح خواهیم کرد.

Read More

img-cleancode-h2

۱۰ اصل برای کدنویسی تمیز

توسط | مقالات فنی | ۳ نظر

یکی از رایج‌ترین مسائلی که در هر شغلی می تواند افراد را تا مرز جنون پیش ببرد، ادامه دادن کاری است که فردی دیگر آن را قبلاً شروع کرده باشد. علت این مسئله اغلب از روش‌های کاری متفاوت افراد ناشی می‌شود. عادت‌های کاری منحصر به فردی که بعضاً سبب آشفتگی در کار میگردد.

برای برنامه‌نویسی در قالب یک تیم نیز، نوشتن یک کد تمیز که افراد مختلف تیم بتوانند درک مشترکی از آن داشته باشند، امری ضروری است. به همین علت، ملاحظاتی باید رعایت گردند که در ادامه به آن ها اشاره شده است.

Read More

می‌خواهید از آخرین اخبار تاد مطلع باشید؟ ما را در تلگرام دنبال کنید