مهدی نعمتی

مهدی نعمتی

کم کردن حجم اپلیکیشن فلاتر

برای اینکه حجم اپلیکیشن فلاتری ما کمتر بشه یه یه سری نکاتباید عمل کرد، تو این مطلب برخی از از این نکات رو بهتون میگم: خروجی گرفتن برای معماری های پردازنده های مختلف تو حالت پیشفرض برای خروجی از دستور flutter build apk استفاده میکنیم، این دستور یه فایل خروجی بهمون میده که ترکیبی از سه نوع معماری مختلف : armeabi-v7a arm64-v8a x86_64 هر سه معماری با هم داخل یه فایل apk قرار میگیره و باعث میشه حجم فایل ما خیلی زیاد بشه و از طرفی هم تقریبا همه موبایل ها هم از v7a پشتیبانی میکنند و میشه فقط یه خروجی با همین معماری گرفت و حجم فایل رو خیلی کم کرد، برای این کار دستور flutter build apk --split-per-abi رو میشه استفاده کرد تا موقع بیلد گرفتن سه تا فایل apk از هم جدا بشن و بشه انتخاب کرد کدوم فایل رو به استور ها یا مشتری ها فرستاد. استفاده ازآیکون های SVG به جای عکس به جای استفاده از آیکون با فرمت عکسی میشه از svg استفاده کرد که هم حجم کمتری داره و هم تو اندازه های مختلف کیفیت خودش رو حفظ میکنه، برای استفاده از svg هم پکیج بسیار خوبی به نام flutter_svg وجود داره که میشه به راحتی ازش استفاده کرد. استفاده از فرمت WEBP به جای JPG/PNG برای عکس ها این فرمت خیلی شبیه به فرمت عکس های عادی هست ولی با این تفاوت که حدودا 25 درصد حجم کمتری داره. بهینه سازی آیکون های svg موقع گرفتن خروجی با نرم افزار های مختلف امکان بهینه سازی فایل svg وجود داره، که باعث میشه حجم این فایل ها کمتر بشه. کم کردن حجم عکس های مورد استفاده استفاده با عکس های با کیفیت خوبه و کیفیت کار رو بالا میبره ولی میشه حجم عکس ها روبدون اینکه از کیفیت اون ها کم بشه تا حجم زیادی کم کرد، برای این کار میشه از نرم افزارهای مختلف حجم عکس ها رو کم کرد یا با استفاده از سایت هایی مثل tinypng هم بدون نرم افزار خاصی حجم عکس ها رو پایین آورد. فشرده سازی اطلاعات با استفاده از gzip فشرده سازی اطلاعات هم نقش مهمی تو کم شدن حجم فایل ها داره، با استفاده از gzip میشه فشرده سازی خوبی رو این فایل ها انجام داد. تو این لینک میتونید ببینید چجوری 1300000 بایت اطلاعات تبدیل شده به 2572 بایت با فشرده سازی 99 درصدی ! استفاده از پکیج برای فونت های گوگل با استفاده از پکیج google_fonts وقتی که از یه فونت استفاده بشه فقط همون فونت به صورت خودکار دانلود میشه

مهدی نعمتی

مهدی نعمتی

مقایسه دو نوع مختلف دیتابیس در فلاتر

انتخاب دیتابیس مناسب برای مدیریت اطلاعات و دیتا امری بسیار مهم است که با انتخاب روش و نوع مناسب با پروژه میتواند سرعت، کارایی و مقیاس پذیری (scalability) را افزایش دهد. انتخاب دیتابیس با توجه به ساختار پروژه متفاوت می باشد و با توجه به شرایط پروژه باید نوع مناسب با آن را انتخاب کرد. تو پروژه های فلاتر هم روش ها و دیتابیس های مختلفی وجود داره که تو این مطلب ما دو نوع دیتابییس رابطه ای و غیر رابطه ای به همراه بهترین پکیج های موجود را برای استفاده به صورت محلی (locally) بررسی خواهیم کرد. Sqflite پلاگینی از SQLite که از مشهورترین و قدیمی ترین دیتابیس ها است که برای فلاتر با نام Sqflite عرضه شده است. SQLite در آگوست سال 2000 ساخته شده که به صورت cross-platform یا چند سکویی باشد تا بدون هیچ مشکلی در سیستم های 32 و 64 بیتی بتواند کار کند. این پکیج از iOS , Android و MacOS پشتیبانی میکند و از نوع دیتابیس رابطه ای می باشد (relational database). از ویژگی های بسیار مهم این این پکیج می توان به پشتیبانی عالی از تراکنش ها، چک شدن خودکار ورژن ها در هنگام ثبت اطلاعات و پشتیبانی از نخ ها در بکگراند (background thread) می باشد. برای باز کردن دیتابیس و یا افزودن تیبل به دیتابیس موجود از دستورات زیر استفاده می شود، همچنین اگر دیتابیس موجود هم نبود میتوان دستورات ساخت دیتابیس را هم به آن اضافه کرد : برای افزودن سطری از اطلاعات به جدول می تواند از دستور زیر استفاده کرد: برای ویرایش اطلاعات: همینطوری که تو کد ها مشخصه ساختار دستورات ارتباط با دیتابیس بسیار شبیه به SQL می باشد. استفاده در ویندوز و یا لینوکس هم پکیجی با اسم ​ sqflite_common_ffi برای آن ساخته شده که میتوان از آن استفاده کرد. hive به جرات میتوان گفت پر قدرت ترین و سریع ترین دیتابیس NoSQL موجود در فلاتر این پکیج است. پکیجی که با تمامی پلتفرم ها از جمله وب کامل سازگار بوده و مشکلی در استفاده از آن وجود تدارد. با سرچی ساده هم میتوان به قدرت بالای این دیتابیس پی برد که نمودارهای خواندن و نوشتن این دیتابیس در مقابل سایر دیتابیس ها بسیار بهتر می باشد. هم چنین قابلیت رمزنگاری دیتا به صورت داخلی در این دیتابیس فراهم شده است. ثبت اطلاعات در این دیتابیس به شکل زیر و بسیار ساده می باشد : برای کار با این دیتابیس نیاز به استفاده از await وجود ندارد، که کار با این دیتابیس را بسیار ساده تر میکند. چند تفاوت در ساختار پایگاه داده رابطه ای و غیر رابطه ای : پایگاه داده رابطه ای با عنوان RDBMS شناخته می شوند و دیتابیس های NoSQL به عنوان بانک اطلاعاتی غیر رابطه ای و توزیع شده شناخته می شود. پایگاه داده SQL داده ها را به صورت جدول و ستون ذخیره می کند، این درحالیست که ذخیره سازی در پایگاه داده NoSQL مبتنی بر key-valueها است. مقیاس پذیری در پایگاه داده رابطه ای سخت تر است و تقریبا نیاز دارد که کلیت پایگاه داده را تغییر داد، ولی تغییر دادن و توسعه یک بانک اطلاعاتی در پایگاه داده NoSQL بسیار روند آسان تری دارد. در انتهای کار، نمیتوان گفت کدام نوع از دیتابیس های رابطه ای و یا غیر رابطه ای بهتر از دیگری است و باید با توجه به ساختار پروژه یکی از این دو نوع دیتابیس را انتخاب کرد.

مهدی نعمتی

مهدی نعمتی

چند زبانه کردن پروژه های فلاتر

به جای اینکه اپ فلاتر ما یه زبان داشته باشه میشه به راحتی با چند خط کد بیشتر و یه پکیج کاری کرد چندتا زیان دیگه هم به پروژه اضافه بشن. پکیج easy_localization که یکی از پرطرفدار ترین پکیج ها هم هست کار چند زبانه کردن رو برای به ساده ترین روش ممکن انجام میده. با استفاده از این پکیج می تونیم به راحتی برای بسیاری از زبان ها ترجمه انجام بدیم و با استفاده از Easy Localization Loader هم می تونیم ترجمه ها را در اشکال مختلفی از فایل ها مانند JSON، CSV، YML، XML ذخیره کنیم. مراحل کار رو قدم به قدم به صورت زیر انجام میدیم: 1. پکیج رو به pubspec.yaml خود اضافه می کنیم 2. یک پوشه با ساختار زیر ایجاد کنید و فایل های ترجمه رو داخلش اضافه کنید به عنوان مثال، در این مورد، ما 3 فایل با نام های زیر ایجاد می کنیم: en-US.json es-ES.json fa-IR.json مرجله بعدی یه فایل جیسون هم اسم با مواردی که میخوایم تو پوشه زبان اضافه میکنیم و این فایل جیسون به صورت کلید و مقدار هست 4 - فایل های ترجمه رو به pubspec.yaml معرفی میکنیم 5 - به کار گرفتن زبان ها 6 - و در مرحله آخر استفاده از زبان استفاده از این پکیج خیلی ساده هست و میشه تا بینهایت زبان به برنامه های خودمون اضافه کنیم لینک پکیج هم اینجاست

آرمین حبیبی

آرمین حبیبی

جابه جایی بین برنچ ها در گیت بدون حذف تغییرات جاری

امروز اومدیم ببینیم چطوری میشه بدون حذف تغییراتی که دادیم و یا commit کردن تغییراتی که داریم بین برنچ ها جا به جا بشیم. یک موقع هست که دارید توی برنچ A کار میکنید و بنا به دلایلی چون فیکس کردن باگ در برنچ دیگر ، تغییرات force که لازم هست سریع اتفاق بیوفته و... بخواهید به برنچ B سوییچ کنید. خب حالا اینجا git یک قابلیتی داره به عنوان stash که میتونید تغییراتی که هنوز وقت commit کردن آن نرسیده را در یک محفظه ای در جای امن و مخفی ذخیره کنید. البته دقت کنید این تغییرات در دایرکتوری(Directory) جاری ذخیره میشه نه در برنچ، بنابراین میتونید تو هر برنچ این تغییرات رو برگردونید. توجه کنید توی هر ذخیره کردن، ایندکس گذاری انجام میشه و به عنوان id اون stash شناخته میشه. با کلمه کلیدی به همراه ایندکس: stash@{0} تا اینجا تقریبا فهمیدیم که stash چیه و چطور کار میکنه، حالا بریم وارد فاز عملی بشیم😎. دستورات مهمی که باید بدونیم رو در لیست زیر قرار میدم به همراه توضیح در بخش بعدی. git stash git stash list git stash show git stash pop git stash save git stash apply git stash drop git stash clear git stash: وقتی میخواهید تمام تغییرات جاری رو دخیره کنید از دستور git stash استفاده میکنید. git stash list: میتونید لیست تمام stash هایی که ذخیره کردید رو ببینید. برای اینکه دقیقا اون stash رو ببینید میتونید بعد این دستور، کد اون commit رو وارد کنید. البته لازم نیست کد رو کامل وارد کنید، باید حداقل 4 کاراکتر باشه تا قبول کنه. نکته: درصورتی بهتون کد اون commit رو میده که پیام دستی نداده باشید موقع ذخیره کردن توسط دستور git stash save. git stash show: اگر میخواهید دقیقا ببینید چه فایلی تغییر کرده میتونید از دستور git stash show استفاده کنید. امکان مشاهده بخشی که تغییر کرده هم هست. بعد دستور بالا، u- یا p- بنویسید تا کد تغییر کرده رو ببینید. git stash pop: توی برگردوندن اون تغییرات میتونید از دستور git stash pop استفاده کنید. اگر آیدی stash رو وارد نکنید همیشه آخرین stash رو برمیگردونه. اگه میخواهید یک stash خاص رو برگردونید میتونید بعد دستور بالا آیدی stash رو وارد کنید. git stash save: این دستور فرق زیادی با دستور git stash نداره، فقط با دستور save میتونید موقع ذخیره کردن تغییرات ، پیام دلخواه وارد کنید ، به صورت پیشفرض اگه پیامی ندهید ، کد commit به همراه آخرین پیام commit رو ذخیره میکند. git stash apply: با این دستور هم میتونید تغییرات رو برگردونید ولی با یک تفاوت، اونم اینه تغییراتی که برگشت دادین دیگه از اون محفظه حذف نمیشه و باقی میمونه. درصورتی که تو دستور pop اون تغییرات جایگزین میشن و دیگه محفظه ای وجود نداره از اون stash. git stash drop: با این دستور اولین stash حذف خواهد شد. اگه میخواهید stash خاصی رو حذف کنید میتونید آی دی اون stash رو بعد این دستور وارد کنید. git stash clear: اگه میخواهید تمام stash هارو حذف کنید از دستور git stash clear استفاده کنید. توجه کنید برای اینکه این دستورات به درستی کار کنه و مشکلی پیش نیاد از ویرایشگر(editor )خوده git استفاده کنید به جای terminal یا powershell و... این ها دستورات مهمی بودن که برای کار با stash میبایست یاد میگرفتید و البته دستورات دیگه هم وجود داره که تو این مقاله نمیگنجه توضیح بدم اگه دوست داشتین و براتون جالب شد میتونید درباره اشون تحقیق کنید.​ الان دیگه باید بتونید بین برنچ ها بدون حذف تغییرات جاری جابه جا بشید. بدرود🙌