Milad Nouri(ツ) میلاد نوری
28.1K subscribers
1.03K photos
125 videos
7 files
275 links
یک برنامه‌نویس.
{معتقد به اینترنت آزاد برای همه}

دونیت:
https://milad.nu/page/donate

اینستاگرام و توییتر:
https://instagram.com/Milad_Nouri
‌‌
https://twitter.com/MilaDnu
Download Telegram
📈 در کمتر از ۲۴ ساعت، بیش از ۸۰۰۰ نفر اپلیکیشن رو نصب کردند

ممنون از همه دوستانی که اپ رو معرفی کردند.

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

پاسخ سوال‌هایی که پرسیده شده هم ظرف امروز و فردا داده می‌شه.

در راستای شفافیت بیشتر برای کاربرها، در سایت و نسخه جدید اپ هم اطلاعات بیشتری نوشته خواهد شد.

🖥 @MiladNouriChannel
Please open Telegram to view this post
VIEW IN TELEGRAM
31566👍57🎉38👎7🔥6🗿5🤩4🥴4😍42🏆1
سلام دوستان.
من در اسرع وقت (احتمالا فردا) یک ویس در کانال و اینستاگرام و... می‌گذارم و پاسخ بیشترین سوال‌های پرسیده شده رو می‌دم. علاوه بر اون از هر فرصتی (لایو و...) استفاده خواهم کرد که در راستای شفافیت بیشتر و... پاسخ سوال‌های بیشتری رو بدم). چرا که قلبا معتقدم شفافیت در همه زمینه‌ها حق ماست. در مورد یک اپلیکیشن ساده که جای خود دارد.

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

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

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

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

🖥 @MiladNouriChannel
Please open Telegram to view this post
VIEW IN TELEGRAM
7172👍50🔥7🙏3😍2🤣2🤩1
سوال پرتکرار بعدی در مورد این نوتیفیکیشن دائمی اپلیکیشن (تصویر اول) بود که بابت اون دسترسی نوتیفیکیشن گرفته می‌شه.

اپلیکیشن‌ مطمئن باش دو نوع عملکرد دستی و خودکار داره. عملکرد دستی شامل اسکن دستی اپ‌ها و بررسی دستی لینک داخل برنامه و... است. عملکرد خودکار مربوط به زمانیه که شما برنامه رو بستید اما به صورت خودکار هنگام نصب اپلیکیشن، اطلاعات اون رو در دیتابیس آفلاین داخل خود برنامه چک می‌کنه که اگر اطلاعاتی در موردش وجود داشت به کاربر هشدار بده.
برای چنین عملکرد خودکاری، یک سرویس باید در پیش‌زمینه فعال باشه که در برنامه‌نویسی اندروید بهش (Foreground Service) گفته می‌شه.

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

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

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

حتی موقع برنامه نویسی وقتی بخوای برای اجرای سرویس از دستوی startForeground استفاده کنی، مجبوری یک نوتیفیکیشن به این دستور ارسال کنید. (طبق تصویر دوم):
startForeground(FOREGROUND_NOTIFICATION_ID, serviceNotification)

طبق تصویر سوم که از مستندات رسمی توسعه‌دهندگان اندروید به آدرس زیر است (لینک برای ایران تحریم است و باید با وی‌پی‌ان باز کنید):
https://developer.android.com/develop/background-work/services/fgs
نوشته شده:
Foreground services show a status bar notification, to make users aware that your app is performing a task in the foreground and is consuming system resources.


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

در خط‌های بعدیش هم دقیقا مثال اپلیکیشن موزیک‌پلیر رو نوشته:
A music player app that plays music in a foreground service. The notification might show the current song being played.
‌‌
حالا این نوتیفیکیشن‌ها نوع (Type)های مختلف دارند. مثلا موزیک‌پلیرها و اپ‌های پادکست از نوع FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK (پخش رسانه) استفاده می‌کنند که باعث می‌شه در اندرویدهای جدیدتر به شکل یک مربع دیده بشه. نوع تماس و مکان و... هم داره که باعث می‌شه شکل ظاهری‌شون تغییر کنه.

حالا اپلیکیشن‌ها برای اینکه این نوتیفیکیشن خیلی بلااستفاده نباشه، روی اون برخی اطلاعات یا دکمه‌های کاربردی رو می‌ذارن.

من هم فعلا در نسخه اول نوشته "در حال محافظت توسط مطمئن باش" رو نوشتم که کاربر متوجه بشه سرویس برنامه در حال اجراست. و دقایقی بعد تغییر می‌کنه و وضعیت سپرهای فعال رو نمایش می‌ده تا به هر دلیلی سپری غیرفعال شد کاربر متوجه بشه.
در نظر دارم در نسخه‌های بعدی این نوتیفیکیشن رو کاربردی‌تر کنیم و در تنظیمات کاربر انتخاب کنه همین متن باشه یا به جاش تاریخ شمسی نمایش داده بشه یا دکمه اسکن برنامه‌ها و...

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

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

🖥 @MiladNouriChannel
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
16175👍49🔥5👎2👀1
Milad Nouri(ツ) میلاد نوری
سوال پرتکرار بعدی در مورد این نوتیفیکیشن دائمی اپلیکیشن (تصویر اول) بود که بابت اون دسترسی نوتیفیکیشن گرفته می‌شه. ‌ اپلیکیشن‌ مطمئن باش دو نوع عملکرد دستی و خودکار داره. عملکرد دستی شامل اسکن دستی اپ‌ها و بررسی دستی لینک داخل برنامه و... است. عملکرد خودکار…
دوستی در پاسخ به پست بالا در مورد لزوم اجرای سرویس در پیش‌زمینه نوشته بودند:

برای تشخیص و بررسی نصب اپ‌های گوشی میتونین برودکست رسیورش رو بذارین بعد اگه لازم شد اون بیاد سرویس یا اکتیویتی مربوطه رو بیاره بالا

ازشون اجازه گرفتم پاسخ‌شون رو بذارم اینجا و توضیح بدم. شاید برای دیگر دوستان برنامه‌نویس هم مفید بود.

‌‌منظور اینه که هنگامی که خود برنامه مطمئن باش بسته ست، برای تشخیص نصب اپ جدید و... به جای اجرای سرویس از broadcast receivers های زیر استفاده کنیم:
android.intent.action.PACKAGE_INSTALL
android.intent.action.PACKAGE_ADDED


ما در اندروید یک سری broadcast receivers یا گیرنده پیام داریم و موقع ساخت برنامه می‌تونیم تعریف در فایل manifest پروژه تعریف‌شون کنیم.
مثلا شما یک broadcast receivers از نوع
ACTION_BOOT_COMPLETED

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

طبق مستندات رسمی توسعه‌دهندگان اندروید در اینجا (قسمت Android 8.0) و اینجا (قسمت Broadcast Limitations)، و همانطور که در تصویر سوم و چهارم اومده:
Beginning with Android 8.0 (API level 26), the system imposes additional restrictions on manifest-declared receivers.

یعنی از اندروید ۸ به بعد، سیستم محدودیت‌های بیشتری روی رسیورهایی که در فایل مانیفست تعریف شده‌اند اعمال می‌کند.
در تصویر بعدی هم دقیقا ACTION_PACKAGE_REPLACED رو مثال زده.

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

پس گیرنده‌های پیام برای اینکه اپ ما متوجه بشه یک اپلیکیشن جدید نصب شده یا یک پیامک جدید اومده (اگر اپ ما اپ پیش‌فرض SMS نباشد)، از اندروید ۸ به بعد شامل محدودیت شده و دیگه صرفا با تعریف در فایل مانیفست پروژه فعال نمی‌شوند و باید در کد به صورت داینامیک تعریف و ثبت شوند.

در واقع Broadcast Receiver داینامیک (نه داخل مانیفست) تنها راهیه که توی اندروید ۸ به بعد برای دریافت پیامک برای اپ‌هایی که پیش‌فرض SMS نیستند باقی مونده.

حالا گیرنده (رسیور) داینامیک فقط وقتی کار می‌کنه که اپ در حال اجرا باشه (foreground یا حداقل در حافظه).

یعنی اگه کاربر اپ رو نبسته باشه یا اپ توسط سیستم بسته (Kill) نشده باشه، پیام (Broadcast) به گیرنده می‌رسه. ولی اگر اپ کامل بسته شده باشه، نه! نمی‌رسه.
حالا راه حل چیه؟ یک سرویس که به صورت foreground اجرا بشه.

لازمه اجرای سرویس پیش‌زمینه (foreground) نمایش اجباری یک نوتیفیکیشن به کاربره که در پست قبلی مفصل در موردش نوشتم 👀
‌‌
همیشه به دوستام می‌گم برنامه‌نویسی اندروید نصفش کد و داکیومنته. نصفش تجربه و سازگاری و تست کردن روی نسخه‌های مختلف اندروید و سازنده‌های مختلف گوشی.

این وسط رفتم دیدم هنوز اون تقویم قدیمی که از ۱۳۹۶ آپدیت نشده +۵۰.۰۰۰ نصب داره.

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

#آموزش_برنامه‌نویسی_اندروید_با_میلاد_مثلا 🤷‍♂️

🖥 @MiladNouriChannel
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
15199👍39😍6🙏3🤣3👎2👀1
Milad Nouri(ツ) میلاد نوری pinned a video
Milad Nouri(ツ) میلاد نوری
📈 در کمتر از ۲۴ ساعت، بیش از ۸۰۰۰ نفر اپلیکیشن رو نصب کردند ‌ ممنون از همه دوستانی که اپ رو معرفی کردند. ‌ ایرادها و باگ‌هایی که گزارش شده بود، در حال رفع شدنه و به‌زودی آپدیت جدید منتشر می‌شه. قطعا نسخه‌های اول بدون اشکال نیست 👀 پاسخ سوال‌هایی که پرسیده…
ظرف سه روز، ده هزارتایی شدیم. 👀

هرچی کاربرها بیشتر می‌شه، گزارش‌های ارسالی از سمت کاربرها هم داره بیشتر می‌شه و این باعث می‌شه اپلیکیشن موارد بیشتری رو شناسایی کنه.
‌‌
یک‌سری پست و توضیح توی توییتر نوشتیم وقت نشده اینجا هم بنویسیم.
اکانت اپ رو می‌تونید توییتر هم دنبال کنید:
https://x.com/MotmaenBash

🖥 @MiladNouriChannel
Please open Telegram to view this post
VIEW IN TELEGRAM
25296👍34🎉17🔥11👎4🙏3
توی این گفتگو با اهورا، جواب خیلی از سوال‌ها در مورد اپلیکیشن مطمئن باش و موارد امنیتیش و... رو دادیم. 🎤
اگر در موردش سوال دارید، حتما ببینید.

🟥 مشاهده روی یوتوب

ویدئوی معرفی که اهورا ساخته هم از اینستاگرامش (اینجا) ببینید حتما. خیلی خفن شده 👀

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

🖥 @MiladNouriChannel
Please open Telegram to view this post
VIEW IN TELEGRAM
5255👍40🔥15👎7😍31🤬1
Forwarded from آروان کد
🚨 بالاخره گزارش کامل ارزیابی و ارتقاء امنیتی پروژه "مطمئن باش" (MotmaenBash) رو منتشر کردم! 🚨

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

وقتی خودم سورس کد 📱 رو بررسی کردم، واقعیت پشت پرده چیز دیگه‌ای بود: ۴۷ آسیب‌پذیری امنیتی جدی پیدا کردم که باید رفع می‌شدند!🗿 از لو رفتن کلید API فایربیس و رمزنگاری ضعیف در اندروید گرفته، تا آسیب‌پذیری‌های XSS در افزونه‌های مرورگر و درخواست مجوزهای خطرناک و بیش از حد (مثل دسترسی به تمام پیامک‌ها یا نمایش روی تمام اپ‌ها) که امنیت و حریم خصوصی کاربر رو به خطر می‌انداخت. شاید این مجوزها از نظر گوگل پلی قابل توجیه باشند، چون اپلیکیشن ادعا می‌کنه برای مبارزه با فیشینگ هست، ولی در عمل، همین مجوزها و ضعف‌های کدنویسی، خودشون می‌تونستن راه رو برای سوءاستفاده‌های جدی باز کنن!

تو این گزارش جامع، تمام این مشکلات و نقاط ضعف امنیتی رو با جزئیات کامل توضیح دادم و راه‌حل‌های عملی و Enterprise-Grade برای امن‌تر کردنش ارائه دادم.

بعد از اصلاحات، این پلتفرم حالا آماده استفاده در سطح Enterprise هست و من هم یک Pull Request کامل با مستندات لازم ارسال کردم که امیدوارم بررسی کنند.
نکته مهم: پروژه در گیت‌هاب من هم فورک شده و می‌تونید همه تغییرات و بهبودهای امنیتی رو اینجا ببینید:
📱Github

امنیت واقعی، فراتر از هیاهوست.......

آروان کد🌐
Please open Telegram to view this post
VIEW IN TELEGRAM
2🤣12658👍18🤔5👎1
آروان کد
🚨 بالاخره گزارش کامل ارزیابی و ارتقاء امنیتی پروژه "مطمئن باش" (MotmaenBash) رو منتشر کردم! 🚨 پروژه "مطمئن باش" که توسط میلاد نوری معرفی شد، این روزها حسابی وایرال شده و افراد و رسانه‌های زیادی مثل اهورا نیازی و زومیت هم کلی ازش تبلیغ و حمایت کردند. شعار…
این اینجا باشه به عنوان آرشیو. تا بیام در موردش بنویسم.

ظاهرا روی تصویر به من لیبل اسکم زده. یک سری توضیح جالب هم نوشته :)

در موردش می‌نویسم که ببینیم چطور بدون اینکه یک خط از سورس برنامه رو بخونه، با اندک دانش و سوال برنامه نویسی یا امنیت، با AI یک چیزی درست کرده و پول ریکویست زده و سریع فرستاده توی کانالش.
4👍13928😁13
Milad Nouri(ツ) میلاد نوری
این اینجا باشه به عنوان آرشیو. تا بیام در موردش بنویسم. ‌ ظاهرا روی تصویر به من لیبل اسکم زده. یک سری توضیح جالب هم نوشته :) ‌ در موردش می‌نویسم که ببینیم چطور بدون اینکه یک خط از سورس برنامه رو بخونه، با اندک دانش و سوال برنامه نویسی یا امنیت، با AI یک چیزی…
عجب.
در مورد اطلاعات دروغی که نوشتی و یک سری مزخرف و شنیده‌هات و ۴تا اصطلاح فنی و امنیتی رو قاطی کردی و منتشر کردی توضیح می‌دم. شما هم مستنداتت در مورد اسکم بودن یا موارد امنیتی که فرستادی رو پابلیش می‌کنی.
4🤣27647👍38😁7🤔3😐3🔥2
رو کروم اندروید می‌تونید روی نوار آدرس، تاچ رو نگه دارید و بزنید نوار آدرس بره پایین صفحه.

‌اگر به پایین بودن نوار آدرس عادت دارید، حالا دیگه می‌تونید برگردید به کروم 😄

🖥 @MiladNouriChannel
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍15632😁13🤯8😐6👀6😍4🔥1🏆1🗿1
‏اپلیکیشن "مطمئن باش"
در سه روز اول، +۱۰.۰۰۰
و در هفته اول +۲۰.۰۰۰
و حالا در کمتر از سه هفته، +۳۰.۰۰۰ بار نصب شده. 🎉

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

اخطار اپلیکیشن دارای ریسک در صورتی که از منابع غیرمعتبر (غیر از مارکت‌های معروف و شناخته شده جهان) نصب شود و ترکیب دسترسی‌های آن امکان سواستفاده به سبک بدافزارهای بانکی و... را فراهم کند.

حتی اگر برنامه مورد نظر در دیتابیس "مطمئن باش" موجود نباشه 👌

آپدیت جدید منتظر تایید گوگل‌پلی است و احتمالا فردا یا پس‌فردا منتشر می‌شود.

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

👍 با حمایت مالی (دونیت) می‌توانید از ادامه توسعه این پروژه حمایت کنید:

https://motmaenbash.ir/donate.html

🖥 @MiladNouriChannel
Please open Telegram to view this post
VIEW IN TELEGRAM
221309👍39🔥14🙏7👎4🎉2🤯1🤬1🏆1🗿1
‏چند وقت پیش چندتا شعر کُردی رو دادم به چت جی‌پی‌تی در موردشون یک سری سوال پرسیدم.
برای تست چندبار هم کُردی باهاش چت کردم.
از اون به بعد بعضی وقت‌ها اول جواب‌هاش (مثلا در مورد برنامه‌نویسی و...) می‌نویسه میلاد گیان 😄

🖥 @MiladNouriChannel
Please open Telegram to view this post
VIEW IN TELEGRAM
3😁288🤣14056😍17👍9🗿3🎉2👎1🤬1🤩1