یکی از موارد مهمی که توی کار تیمی خیلی مهم هستش اینه که تیم کد های یک دست بنویسند نه اینکه هرکسی بیاد برای خودش یک شکل کد بنویسه
منظورم معماری پروژه نیست منظور من اینه که یک سری نکات رو هنگام کد نویسی رعایت بشه
مثلا توی پروژه کسی حق استفاده از print نداره یا اگر استفاده مشخص بشه کجا استفاده شده
مثلا بجای استفاده از " بزای رشته ها از ' استفاده بشه
خط نباید بیشتر از 80 کارکتر باشه و....
دارت اومده یک سری دستورات به نام linter رو ایجاد کرده که میتونید توی
analysis_options.yaml
استفاده کنید
سه قسمت داره
include
برای وارد کردن دستورات از یک فایل دیگه
مثلا از پکیج fluttet_lints
analyzer
برای کاستوم کردن static analysis
linter
برای استفاده برخی از دستورات linter
برخی شرکت ها و برنامه نویس ها از این فایل و قوانین استفاده میکنند ولی اکثرا مشاهده شده استفاده نمیکنند
فایل
analysis_options
خودم که توی پروژه هام استفاده میکنم رو بعد از این پست ارسال میکنم میتونید توی پروژه های خودتون استفاده کنید
نکته مهم : اینکه این فایل رو به هیچ وجه به پروژه ای فعلی که دستورات linter پیش فرض فلاتر استفاده شده استفاده نکنید که پروژه تبدیل میشه یک پروژه پر از خطا( البته چون خطا ها سینتکسی نیستند پروژه اجرا میشه ولی فایل ها پر از خط های قرمط میشن 😁 برای تست از فایل فعلی کپی بگیرید و فایل خودم رو بزارید )
منظورم معماری پروژه نیست منظور من اینه که یک سری نکات رو هنگام کد نویسی رعایت بشه
مثلا توی پروژه کسی حق استفاده از print نداره یا اگر استفاده مشخص بشه کجا استفاده شده
مثلا بجای استفاده از " بزای رشته ها از ' استفاده بشه
خط نباید بیشتر از 80 کارکتر باشه و....
دارت اومده یک سری دستورات به نام linter رو ایجاد کرده که میتونید توی
analysis_options.yaml
استفاده کنید
سه قسمت داره
include
برای وارد کردن دستورات از یک فایل دیگه
مثلا از پکیج fluttet_lints
analyzer
برای کاستوم کردن static analysis
linter
برای استفاده برخی از دستورات linter
برخی شرکت ها و برنامه نویس ها از این فایل و قوانین استفاده میکنند ولی اکثرا مشاهده شده استفاده نمیکنند
فایل
analysis_options
خودم که توی پروژه هام استفاده میکنم رو بعد از این پست ارسال میکنم میتونید توی پروژه های خودتون استفاده کنید
نکته مهم : اینکه این فایل رو به هیچ وجه به پروژه ای فعلی که دستورات linter پیش فرض فلاتر استفاده شده استفاده نکنید که پروژه تبدیل میشه یک پروژه پر از خطا( البته چون خطا ها سینتکسی نیستند پروژه اجرا میشه ولی فایل ها پر از خط های قرمط میشن 😁 برای تست از فایل فعلی کپی بگیرید و فایل خودم رو بزارید )
آیکون های SVG برای استفاده توی app
• https://iconbuddy.app
• https://fonty.io
• https://iconoir.com
• https://healthicons.org
• https://atlasicons.vectopus.com
• https://www.mingcute.com
• https://iconbuddy.app
• https://fonty.io
• https://iconoir.com
• https://healthicons.org
• https://atlasicons.vectopus.com
• https://www.mingcute.com
Iconbuddy
Iconbuddy - Search Engine for Open Source SVG Icons
Search, customize, and download from 250,000+ open source SVG icons.
به این آمار توجه کنید
از بین اپلیکیشن های منتشر شده در گوگل پلی 19% فلاتر و از زیکت نیتیو جلو زده
و توی اپ استور هم داره به ریکت نیتیو میرسه کم کم
منبع
https://appfigures.com/top-sdks/development/apps
از بین اپلیکیشن های منتشر شده در گوگل پلی 19% فلاتر و از زیکت نیتیو جلو زده
و توی اپ استور هم داره به ریکت نیتیو میرسه کم کم
منبع
https://appfigures.com/top-sdks/development/apps
Media is too big
VIEW IN TELEGRAM
هر زبانی که از بکند پشتیبانی میکنه نیاز به یک فریمورک خوبی داره
فریمورکی که استفاده از اون راحت باشه
دارت هم نیاز داره به یک فریم ورک خوب برای بکند که متسفانه فریمورکی نیست که بشه با اون بکند رو به راحتی توسعه داد
منم تصمیم گرفتم یک فریمورکی رو توسعه بدم که برنامه نویس های دارت بتونند راحت بکند توسعه بدن
و شما با این فریم ورک در کنار فلاتر به یک فول استک دولپر تبدیل خواهید شد😁😁
فریمورکی که استفاده از اون راحت باشه
دارت هم نیاز داره به یک فریم ورک خوب برای بکند که متسفانه فریمورکی نیست که بشه با اون بکند رو به راحتی توسعه داد
منم تصمیم گرفتم یک فریمورکی رو توسعه بدم که برنامه نویس های دارت بتونند راحت بکند توسعه بدن
و شما با این فریم ورک در کنار فلاتر به یک فول استک دولپر تبدیل خواهید شد😁😁
پیشنهاد میکنم این 2 ساعت نیم رو ببینید حتما
و در اخر اکو سیستم معیوب ایران رو متوجه میشید
https://m.youtube.com/watch?v=nOLjcyEculU&pp=ygUs2LHZh9io2LHbjCDYr9ixINmF2YfZhtiv2LMg2YbYsdmFINin2YHYstin2LE%3D
و در اخر اکو سیستم معیوب ایران رو متوجه میشید
https://m.youtube.com/watch?v=nOLjcyEculU&pp=ygUs2LHZh9io2LHbjCDYr9ixINmF2YfZhtiv2LMg2YbYsdmFINin2YHYstin2LE%3D
YouTube
رهبری در مهندسی نرمافزار / Leadership in Software Engineering
شرکتکنندگان پنل (از راست به چپ):
- حمیدرضا سلیمانی: قائم مقام (ویپی) مهندسی دیجیکالا؛ مهندس و مدیر مهندسی سابق در اسپاتیفی و کلارنا
- احسان آراسته: راهبر ارشد فنی و محصولی (سیتیاو و سیپیاو) اسنپگراسری (اکسپرس+مارکت) و قبلا علیبابا
- آرزو کشاورز:…
- حمیدرضا سلیمانی: قائم مقام (ویپی) مهندسی دیجیکالا؛ مهندس و مدیر مهندسی سابق در اسپاتیفی و کلارنا
- احسان آراسته: راهبر ارشد فنی و محصولی (سیتیاو و سیپیاو) اسنپگراسری (اکسپرس+مارکت) و قبلا علیبابا
- آرزو کشاورز:…
تست نویسی از نظر من و خیلی از برنامه نویسان یکی از مهمترین بخش های توسعه یک نرم افزار هستش اینکه قبل از انتشار نرم افزاری یا پکیجی براش تست بنویسی میشه گفت از به وجود اومدن باگ های زیادی جلوگیری میکنید
خب نسخه بتا فریم ورک جدید دارت آماده شده در حال آماده سازی داکیومنت و نوشتن تست های فریم ورک
سعی کردم فریم ورک سطح بالا و قابل درک باشه تا بچه های که با بکند آشنایی ندارند راحتر بتونند یک بکند حداقل برای اپلیکیشن های خودشون بنویسند.
بزودی بنچ مارک این فریم ورک رو هم قرار میدم
خب نسخه بتا فریم ورک جدید دارت آماده شده در حال آماده سازی داکیومنت و نوشتن تست های فریم ورک
سعی کردم فریم ورک سطح بالا و قابل درک باشه تا بچه های که با بکند آشنایی ندارند راحتر بتونند یک بکند حداقل برای اپلیکیشن های خودشون بنویسند.
بزودی بنچ مارک این فریم ورک رو هم قرار میدم
com_fluttershark_fluttersharkapp_v1.3.8.apk
4.4 MB
این نرم افزار رو نصب کنید ببینید چه اپلیکیشنی با فلاتر نوشته شده روی گوشی شما و ببینید از چه پکیج های استفاده کرده
کدام توزیع از لینوکس را ترجیح میدید؟ (برای همه کار ها برنامه نویسی، کار های روز مره و....)
Anonymous Poll
11%
Debian
76%
Ubuntu
11%
Arch Linux
9%
Mint
6%
Manjaro
6%
Fedora
ما چیزی داریم به نام مدل OSI
بچه های شبکه توی دانشگاه یا کلاس های شبکه درموردش خوندن حتماً
از 7 لایه تشکیل شده
وقتی دارید با API کار میکنید دیتای که ارسال میکنید از این 7 لایه میگذره و به مقصد میرسه
وقتی دیتای ارسال میکنید مبدا از لایه هفتم این فرایند ارسال شروع میشه
ولی توی مقصد دریافت و پردازش داده از لایه اول شروع میشه تا برسه به لایه هفتم
لایه هفتم همون اپلیکیشن شما هستش
بچه های شبکه توی دانشگاه یا کلاس های شبکه درموردش خوندن حتماً
از 7 لایه تشکیل شده
وقتی دارید با API کار میکنید دیتای که ارسال میکنید از این 7 لایه میگذره و به مقصد میرسه
وقتی دیتای ارسال میکنید مبدا از لایه هفتم این فرایند ارسال شروع میشه
ولی توی مقصد دریافت و پردازش داده از لایه اول شروع میشه تا برسه به لایه هفتم
لایه هفتم همون اپلیکیشن شما هستش
شبیه سازی که جدیدا اندروید استودیو روی نسخه عروس دریای گذاشته به صورت ریموت هستش و با وصل شده به فایر بیس و انتخاب یک پروژ از پروژه های فایربیس میتونید استفاده کنید
دیگه نگران منابع مصرفی توسط شبیه ساز به هیچ وجه نباشید 😍
همین الان دارم ازش استفاده میکنم واقعا عالیه با اینکه نسخه آلفا هستش باز خیلی خوبه
دیگه نگران منابع مصرفی توسط شبیه ساز به هیچ وجه نباشید 😍
همین الان دارم ازش استفاده میکنم واقعا عالیه با اینکه نسخه آلفا هستش باز خیلی خوبه
آیا میدانستید؟
در انتشار نسخه های اپلیکیشن (موبایل ، دسکتاپ ، وب و ...) ما چیزی به نام
Software release life cycle
که چند مرحله داره!
1) Pre-alpha
2) Alpha
3) Beta
3-1) Perpetual beta
3-2) Open and closed beta
4) Release candidate
5) Stable release
6) End-of-life
هر شرکتی برای اینکه اپلیکیشن یا پروژه ای قوی در سطح بین المللی منتشر کنه باید این 6 مرحله رو بگذرونه و خیلی از شرکت ها بزرگ این کار رو میکنند؟
حالا مرحله 6 برای زمانی هستش که نرم افزار از چرخه خارج میشه و عملا دیگه از یک زمان به بعد کار نخواهد کرد
* تقریبا توی تمام شرکت های که در ایران کار کرده بودم مستقیم میرفتیم روی مرحله 5 😅 و کلا روی این مرحله میموندیم
اگر بخوایم اپلیکیشن قوی داشته باشیم مرحله 1 تا 4 مهمترین مراحل انتشار یک اپلیکیشن یا فیچری که به اپلیکیشن اضافه کردیم هستند(توجه کنید گفتم فیچر جدید ممکنه اپلیکیشن توی مرحله 5 هستش و یک فیچری اضافه کردیم که شماره ورژن ماژور رو تغییر داده اون فیچر حتما باید این چرخه رو بگذرونه یعنی اپلیکیشن از 1.0.0 رفته روی 2.0.0 )
حتما درمورد این چرخه حیاتی انتشار اپلیکیشن و ورژن بندی اپلیکیشن تحقیق کنید
البته بین مرحله 2 و 3 چیزی به نام Feature-complete داریم که اینجا نیاوردم و معمولا از 2 مستقیم میرند روی 3 در بیشتر موارد
در انتشار نسخه های اپلیکیشن (موبایل ، دسکتاپ ، وب و ...) ما چیزی به نام
Software release life cycle
که چند مرحله داره!
1) Pre-alpha
2) Alpha
3) Beta
3-1) Perpetual beta
3-2) Open and closed beta
4) Release candidate
5) Stable release
6) End-of-life
هر شرکتی برای اینکه اپلیکیشن یا پروژه ای قوی در سطح بین المللی منتشر کنه باید این 6 مرحله رو بگذرونه و خیلی از شرکت ها بزرگ این کار رو میکنند؟
حالا مرحله 6 برای زمانی هستش که نرم افزار از چرخه خارج میشه و عملا دیگه از یک زمان به بعد کار نخواهد کرد
* تقریبا توی تمام شرکت های که در ایران کار کرده بودم مستقیم میرفتیم روی مرحله 5 😅 و کلا روی این مرحله میموندیم
اگر بخوایم اپلیکیشن قوی داشته باشیم مرحله 1 تا 4 مهمترین مراحل انتشار یک اپلیکیشن یا فیچری که به اپلیکیشن اضافه کردیم هستند(توجه کنید گفتم فیچر جدید ممکنه اپلیکیشن توی مرحله 5 هستش و یک فیچری اضافه کردیم که شماره ورژن ماژور رو تغییر داده اون فیچر حتما باید این چرخه رو بگذرونه یعنی اپلیکیشن از 1.0.0 رفته روی 2.0.0 )
حتما درمورد این چرخه حیاتی انتشار اپلیکیشن و ورژن بندی اپلیکیشن تحقیق کنید
البته بین مرحله 2 و 3 چیزی به نام Feature-complete داریم که اینجا نیاوردم و معمولا از 2 مستقیم میرند روی 3 در بیشتر موارد
از وقتی که، از جاوا و کاتلین به سمت دارت و فلاتر سوئیچ کردم دنبال فرصتی بودم که یک فریمورک برای نوشتن بکند با دارت توسعه بدم
چند سالی گذشت تا رسید به یکی دوماه قبل که استارتش رو زدم روز ها پروژه های شرکت رو انجام میدادم شب ها و روز های جمعه هم روی فریم ورک وقت میگذاشتم تا یکی دو روز پیش که نسخه آلفا رو آماده کردم داکیومنتش هم بخش ORM و بخش AUTH مونده که باید تکمیل کنم
چند تا از بچه ها داوطلب شدن نسخه آلفا رو تست کنند 💙
ویژگی هاش
فعلاً فقط برای توسعه api هستش
امکان ایجاد وب سوکت درکنار api
استفاده از ORM برای دیتابیس (نیازی به نوشتن SQL نیست)
رویتنگ مشابه به لاراول
امکان ایجاد میدلور
ولیدیشن کردن درخواست ها
داشتن سرویس پروایدر
امکان استفاده از تمام پکیج های دارت
امکان دیپلوی بر روی داکر
دلیل ایجاد فریم ورک برای دارت هم این بود چون چند بار با خود دارت پروژه های تستی بکند زدم هم سرعت توسعه و هم سرعت لود واقعا خوب بودن مخصوصا که دارت کامپایلری هستش و میشه از ایزوله ها استفاده کرد و حتی از Future ها هم استفاده کرد
اسمش رو همنام دخترم گذاشتم و انتشار عمومی نسخه بتا روز تولد دخترم که 11 ام اسفنده هستش 💙
چند سالی گذشت تا رسید به یکی دوماه قبل که استارتش رو زدم روز ها پروژه های شرکت رو انجام میدادم شب ها و روز های جمعه هم روی فریم ورک وقت میگذاشتم تا یکی دو روز پیش که نسخه آلفا رو آماده کردم داکیومنتش هم بخش ORM و بخش AUTH مونده که باید تکمیل کنم
چند تا از بچه ها داوطلب شدن نسخه آلفا رو تست کنند 💙
ویژگی هاش
فعلاً فقط برای توسعه api هستش
امکان ایجاد وب سوکت درکنار api
استفاده از ORM برای دیتابیس (نیازی به نوشتن SQL نیست)
رویتنگ مشابه به لاراول
امکان ایجاد میدلور
ولیدیشن کردن درخواست ها
داشتن سرویس پروایدر
امکان استفاده از تمام پکیج های دارت
امکان دیپلوی بر روی داکر
دلیل ایجاد فریم ورک برای دارت هم این بود چون چند بار با خود دارت پروژه های تستی بکند زدم هم سرعت توسعه و هم سرعت لود واقعا خوب بودن مخصوصا که دارت کامپایلری هستش و میشه از ایزوله ها استفاده کرد و حتی از Future ها هم استفاده کرد
اسمش رو همنام دخترم گذاشتم و انتشار عمومی نسخه بتا روز تولد دخترم که 11 ام اسفنده هستش 💙
خیلی از دوستان درمورد استفاده از دیتابیس ها و پکیچ های دارت توی فریمورک پرسیدن درمورد پکیچ ها باید بگم شما هر پکیچی که به وسیله دارت (فلاتری نباشند) رو میتونید راحت توی فریم ورک استفاده کنید و هیچ محدودیتی ندارید
برای دیتابیس ها هم به صورت پیش فرض 2 تا دیتابیس رو میتونید به صورت ORM استفاه کنید Mysql و Postgresql ولی برای استفاده کردن از دیتابیس های NO-Sql مثل Hive هم محدودیتی ندارید
یک قابلیت خیلی خوبی توی فریم ورک گنجانده شده به نام ServiceProvider میتونید یک کلاس ایجاد کنید و از سرویس پروایدر فریمورک extends کنید دوتا متد داره رجیستر و بوت که رجیستر قبل از هر چیزی صدا زده میشه و کلاس های شما مقدار دهی میشن این هم نمونه استفاده از Hive نتیجه توی مروگر
برای دیتابیس ها هم به صورت پیش فرض 2 تا دیتابیس رو میتونید به صورت ORM استفاه کنید Mysql و Postgresql ولی برای استفاده کردن از دیتابیس های NO-Sql مثل Hive هم محدودیتی ندارید
یک قابلیت خیلی خوبی توی فریم ورک گنجانده شده به نام ServiceProvider میتونید یک کلاس ایجاد کنید و از سرویس پروایدر فریمورک extends کنید دوتا متد داره رجیستر و بوت که رجیستر قبل از هر چیزی صدا زده میشه و کلاس های شما مقدار دهی میشن این هم نمونه استفاده از Hive نتیجه توی مروگر