بایگانی نویسنده: همایون بهزادیان

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

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

در مرحله دوم، باید تک‌تک پرسشنامه‌ها و کنترلرها و اکشن‌های مورد نیاز را با تمام جزئیات فهرست کنم. خیلی‌ها استفاده از swagger را برای تهیه مستندات توابع (و حتی ایجاد ابزارهای کارگزار و کارور) پیشنهاد می‌کنند. منتهی من استفاده ازین ابزار را دستکم در مرحله‌ی فعلی، زمان‌بر می‌دانم. این ابزار برای افرادی که فقط تحلیلگر هستند، کاربرد دارد و نه برای کسانی که برنامه‌نویس هم هستند. چرا که عملا دوباره کاری هست. ما فقط نیاز به فهرست توابع، ورودی و خروجی‌های‌شان برای تحلیل پرسشنامه‌ها داریم. مستندات و روش تهیه توابع را در زمان تهیه کد می‌توان نوشت. البته به غیر از این دلیل دیگری هم برای کنار گذاشتن swagger داشتم، فرآیند تهیه مستندات خیلی کند و زمان‌بر است به نحوی که شاید دو برابر زمان لازم برای تهیه مستندات در کد لازم است تا مستندات swagger تهیه شود.

بهرحال با گذر از swagger تصمیم گرفتم مستقیما سراغ تهیه پروتوتایپ بروم. پروتوتایپ به مفهوم پیش‌نمایش صفحات، پرسشنامه‌ها، فرم‌ها، فهرست‌ها و روابط بین هرکدام از این عناصر هست. پروتوتایپ در واقع به شما و هر کس دیگه‌ای که لازم باشد، نشان خواهند داد که سیستم چطوری باید باشد و شما به عنوان توسعه‌گر، یک نمای کلی از سیستم را خواهید داشت. برای تهیه پروتوتایپ ابزارهای زیادی هست. من ابزارهای آنلاین خوبی را بررسی کردم. شامل https://moqups.com و http://mockflow.com. این دو ابزار تقریبا خوب هستند. منتهی یکی دو ایراد دارند. اول اینکه راست به چپ نیستند و مهم‌تر اینکه رایگان نیستند یا نسخه‌ی رایگان‌شان، خیلی محدود هستند و بدتر اینکه امکان خرید دلاری برای ما فراهم نیست (حتی اگر قرار بود ماهی ۱۳ دلار، معادل حدودا ۱۵۰ هزار تومان پرداخت کنیم که بازهم رقم بالایی برای ما محسوب می‌شود)

ابزارهای آفلاینی هم هست. مثلا Sketch که البته برای Mac هست و من نتونستم بررسی کنم. همچنین Adobe XD

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

  • باید ابعاد صفحه‌ی نامحدود داشته باشند. دستکم در یک وجه. اگرچه صفحه‌های واقعی، محدودن و مثلا نمی‌توان هزاران پیکسل را در یک صفحه‌ی آیفون نمایش داد، ولی اسکرول وجود دارد. اما اسکرول در زمان طراحی، سخت است. بنابراین به راحتی می‌توان یک صفحه‌ی نامحدود در نظر گرفت که با اسکرول ترکیب خواهد شد
  • باید جعبه‌ابزار آماده داشته باشد. یکی از اهداف پروتوتایپ، پیش‌نمایش زیبای پرسشنامه‌ها و فهرست‌هاست. منتهی بعضی از ابزارها، آنچنان مینی‌مال یا خلاصه‌گرا شده‌اند که حتی عناصری مانند دکمه و تیک را ندارند!!! مثلا Adobe XD تقریبا هیچ ابزار آماده‌ای ندارد. نه دکمه، نه تیک، نه رادیو، نه تقویم، نه سربرگ و نه هیچ چیز دیگر! البته راه حلی برای این موضوع در نظر گرفته‌اند. فایلی حاوی عناصر بوت‌استرپ، گوگل متریال و سیستم مک درست کرده‌اند که بایستی دانلود شده و سپس باز شود (امکان ورود ندارد) و سپس مثلا دکمه‌ی مد نظر را از فایل بوت‌استرپ در فایل خود، کپی کنید!
  • ابزار خوب، می‌داند اغلب پروتوتایپ‌ها شامل پرسشنامه و فهرست هستند. بنابراین و برای کاهش زمان طراحی، باید چندین پرسشنامه و فهرست نمونه باشد
  • ابزار خوب، به شما خواهد گفت برای چه دکمه‌هایی کاربرد تعریف نشده است
  • ابزار خوب به شما امکان افزودن راهنما و مستندات برای هر حرکتی را خواهد داد. مثلا نمایش اینکه دکمه‌ی ایکس فقط زمانی قابل کلیک خواهد بود که دستکم تیک یکی از سطرها زده باشد را شاید نباید در پروتوتایپ پیاده کرد. اما یک راهنمای ساده می‌تواند برای سایر افراد تیم راهگشا باشد
  • ابزار خوب امکان تکرار صفحه را دارد. مثلا صفحه‌ای در پرتال ما وجود که الگوی پیامک و ایمیل ارسالی در زمان خاصی را می‌توان تعریف کرد. این پرسشنامه، الگوی پیام‌های ارسالی در زمان تغییر رمز، ایجاد کاربر، تایید پرداخت و خرید و خیلی کارهای دیگر را انجام می‌دهد. این پرسشنامه چند سربرگ دارد و خودش به تنهایی نیاز به پروتوتایپ جداگانه دارد! بنابراین قرار نیست به ازای هر الگوی تعریفی، (که در صفحه‌ی جداگانه‌ای قرار می‌گیرد) کلی صفحه‌ به پروتوتایپ افزود. بایستی فقط گفت «این صفحه نسخه‌از پرسشنامه تنظیم الگو هست که در اینجا برای ویرایش الگوی پیام تغییر رمز به کار می‌رود»

خلاصه اینکه تجربه من در استفاده از Adobe XD واقعا آزاردهنده بود. منتهی هنوز هیچ ابزار خوبی پیدا نکرده‌ام. لطفا بگویید از چه ابزاری برای تهیه پروتوتایپ استفاده می‌کنید؟

اولین برنامه با زامارین و ویژوال‌استودیو

من عاشق ویژوال‌استودیو هستم و این عشق رو هم مخفی نمی‌کنم 🙂

مدتهاست می‌خوام با ویژوال‌استودیو برای اندروید برنامه بنویسم و چند روزه که دارم تلاش می‌کنم

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

  1. مشکل اول. سلوشون را جابه‌جا کردم و دیگه برنامه کار نکرد! به نظر میاد نشانی‌ای که در سلوشون به بیلدتارگت‌ها داده شده، پیدا نمیشه. راه‌حل من؛ یک سلوشون جدید ساختم :))
  2. مشکل دوم. وقتی وی‌اس رو می‌بندم و دوباره باز می‌کنم خطای زیر رو میده:

    PathXYZ.csproj: Warning XA0105: The $(TargetFrameworkVersion) for XXXX (v6.0) is greater than the $(TargetFrameworkVersion) for your project (ZZZZ). You need to increase the $(TargetFrameworkVersion) for your project. (XA0105) (ProjectXYZ)
    راه‌حل من؛ گذاشتم نوگت همه ابزارهای مورد نیازش رو یکبار دیگه بگیره و به نظر حل شد

  3. شبیه‌ساز ویژوال‌استودیو برای اندروید نیاز داره HyperV خاموش باشه!!

چطوری با کلید اختصاصی، برنامه اندروید را در اندروید استودیو دیباگ کنیم؟

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

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

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

این فرآیند دردآور کلی طول می‌کشید و تازه چندین بار هم باید تکرار می‌شد تا جواب مد نظر رو به دست بیارم.

فکرشو بکن اگر همون لحظه وارد دیباگ می‌شدم و بسته به موقعیت اطلاعاتی رو که می‌خواستم نگاه می‌کردم نهایتا چند بار و هر بار چند ثانیه وقت می‌ذاشتم و برنامه رو درست می‌کردم. بذارید

وضعیت رو دردناک‌تر هم بکنم! زمانی که اکلیپس خطای رم و مموری میداد و کرش می‌کرد و ……

ادامه مطلب

محاسبه ساده اندازه تصاویر برای اندروید

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

مثلا اگر یک عکس داشته باشید که برای چگالی xxxhdpi باشد و عرض آن ۱۲۰۰ پیکسل باشد، برای اندازه xhdpi اندازه‌اش چقدر باید باشد؟

برای حل این مشکل به ظاهر ساده، ولی سخت یک فایل اکسل ساده درست کردم به صورت زیر:

excel

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

مثلا در این حالت، تصویری که من داشتم مناسب برای چگالی xxhdpi با عرض ۱۸۴ پیکسل بود. متناسب با این تصویر، می‌توانم برای چکالی ldpi تصویری با عرض ۶۹ پیکسل، متناسب با چگالی mdpi تصویری با عرض ۹۲ پیکسل و …. قرار دهم

دانلود فایل اکسل برای تبدیل چگالی‌های مختلف اندروید به هم

 

چطوری در شبیه‌ساز جنی‌موشن (Genymotion)، صفحه‌کلید را نشان دهیم؟

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

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

ادامه مطلب

سرویس فوق العاده TinyPNG برای کاهش حجم برنامه های اندروید

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

چندین فرمت عمده تصاویر که تقریبا همه جا مورد پشتیبانی هستند، عبارتند از BMP، JPG، GIF و PNG. ادامه مطلب

تولید بانک های اطلاعاتی برنامه های اندروید با OrmLite

بانک های اطلاعاتی جز جداناپذیر اغلب برنامه های کاربردی هستند. فرقی نمی کند شما بخواهید یک برنامه todo ساده بنویسید یا برنامه پیشرفته مدیریت مالی، در هر صورت شما نیاز به بانک اطلاعاتی دارید. در اندروید هم به طور ویژه به این موضوع پرداخته شده و به صورت پیش فرض بانک اطلاعاتی SQLite پشتیبانی می شود.

ادامه مطلب

معرفی برنامه Farayan Android Code Generator

من برنامه نویسی از جزیره مایکروسافت هستم، جایی که ابزارهای جادویی ویژوال استودیو کار را آنچنان ساده کرده که حتی متوجه فرآیند های پیچیده آن نمی شویم.

یکی از بهترین کارهایی که ویژوال استودیو انجام می دهد تولید خودکار کدهایی هست که شما هیچگاه آنها را ندیده اید، ولی همیشه از آن استفاده کرده اید. مثلا Web Form ها دارای ابزارهایی هستند که به راحتی در کد پس زمینه با شناسه (ID) شان قابل دسترس هستند. شما احتمالا هیچگاه متوجه فرآیندی که ویژوال استودیو به صورت خودکار انجام میدهد نشده اید. ویژوال استودیو، کد های markup (موجود در فایل های ASPX و ASCX) را پردازش کرده و فایل های متناسب با آن را تولید می کند. سپس این کلاس تولید شده را در کنار کلاس کد پس زمینه (Code Behind) قرار می دهد و شما بدون اینکه متوجه باشید از پراپرتی هایی که در کلاس دوم تعریف شده اند استفاده می کند.

ادامه مطلب

چطور در اکلیپس (Eclipse) یک اکتیویتی (Activity) جدید ایجاد کنیم؟

فرایند ایجاد یک activity جدید در eclipse می تواند بسیار سخت باشد، ابتدا باید فایل layout آنرا ایجاد کنید، سپس فایل جاوا مرتبط را ایجاد کنید و در نهایت در فایل AndroidMonifest آن را اضافه کنید. اگر تمام این مراحل را خیلی سریع انجام بدهید و هیچگونه اشتباهی در کار نداشته باشید، حداقل یک دقیقه وقت شما را خواهد گرفت.

ادامه مطلب

رفع خطای INSTALL_PARSE_FAILED_MANIFEST_MALFORMED

اخیرا یک پروژه جدید تعریف کرده ام با اسم پکیج Farayan.FaraBank

همانطور که می دانید، نام این بسته، به صورت استاندارد جاوا نیست. زمانی که میخواستم برنامه را اجرا کنم، در کنسول eclipse خطای زیر نشان داده می شد و برنامه اجرا نمیشد:

ادامه مطلب