Mobile Developer Notes
49 subscribers
71 photos
11 videos
12 files
118 links
Mobile Developer Notes

Channel Admin: @mobiledeveloperr
Download Telegram
Forwarded from Flutter Notes
Dartda EventLoop haqida.

EventLoop (voqealar sikli).
Bu Flutter ilovalariga bloklanmaydigan operatsiyalarni bajarishga imkon beradi, bu esa UX-ni silliq bo'lishi uchun zarurdir. Masalan, tarmoq soʻrovi tugashini kutayotganda, EventLoop ilovaga foydalanuvchi maʼlumotlarini qayta ishlash va UI yangilanishlarini koʻrsatishni davom ettirish imkonini beradi.

Ps: Dart kodlari yagona/asosiy isolate-da ishga tushadi, lekin istasangiz ko'proq isolate yaratishingiz mumkin. Har bir yangi Isolate o'zining alohida xotirasi va eventloop-ga ega bo'ladi.

Flutter ilovasi ishga tushganda, Dart runtime uning uchun ajratilgan oqim jarayoni (thread process)-ni yaratadi. Bu jarayon 2 ta asosiy navbat (queue)-ni ishga tushiradi: microtask va event.

Har ikkala navbat FIFO (first-in, first-out) asosida ishlaydi. EventLoop doimiy ravishda ushbu queue-larni tekshiradi va vazifa (task)-larni quyidagicha qayta ishlaydi:

Microtask Queue: Bu queue, event queue-ga nisbatan ustunlik qiladi. EventLoop bo'sh turganda, event queue-ga o'tishdan oldin u birinchi navbatda microtask queue-dagi barcha vazifalarni bajaradi.

Event Queue: Barcha microtask-lar qayta ishlangandan so'ng, EventLoop event queue-dagi vazifalarni bajaradi. Bunga User interaksiyalari, timer-lar va boshqa asinxron hodisalar (future, stream etc) kiradi.

Manbalar:
1. Video: Link
2. Medium: Link
3. Article: Link
4. Article: Link
5. Article: Link

#Dart
👍1🔥1
Assalomu alaykum hammaga!

Google Play Console'da Identity Verification bilan muammo bo'lsa yozaversizlar, qo'ldan kelgancha yordam beraman.
🔥1
#design #color

🎨 Mobil ilova dizayni uchun ranglar palitrasi:

#231934
#246bfd
#f79193
#8ec97b

Manba: @webmakon
🔥2
AppStore/Playmarketdagi muqovalar/sarlavhalar ham yuklashlar soniga tasir qiladi desam ishonasizmi?


E'tibor bergan bo'lsangiz Youtubeda ham ohirgi paytlar muqova rasmlariga e'tibor ko'p berishmoqda, demak ko'rish soniga tasir qilyapti.

App sohasida rivojlangan davlatlar muqova, title, descriptionlarga alohida e'tibor berishni boshlagan bizda hali boshlanmadi. Ayniqsa startuperlar uchun muhim.

Manba: @flutter_uzbek
👍1
Forwarded from Samandar Ahadjonov
#flutter #tools #article #experience

👥 Loyihada mehnat qilayotkan dasturchilar soni oshib borar ekan, barcha duch keladigan bir muammo bor. Bu albatta bir loyihada arxitektura va kod yozish uslubdagi rang-barangligining ortib borishidir.

Alifda ham so'nggi vaqtlarda Dartdoshlar soni ko'paydi va yaqin orada jamoa yana kengayishi kutilyapti. Shu sababli ham yuqoridagi muammo kattalashib ketmasidan, biz dasturchilarni maksimal bir uslubga (code style) moslab borishni maqsad qildik.

Bu ishga har qanday mentoring va treninglar bilan erishish ancha mushkul. Sababi dasturchida yillar davomida shakllangan kod yozish uslubini bittada o'zgartirishni imkoniyati yo'q.

💡 Shu sababli ham eng maqbul yechim sifatida kuchaytirilgan linterdan foydalanishni yechim sifatida ko'rdik.

DCM - Flutter va Dart loyihalarida kodni tahlil qilish va tozalashga yordam beruvchi pullik linter xizmatidir.


Barchamiz o'rgangan default va tekin linterlar xizmati biz xohlagan natijani bermasligi bois DCM servisini tanlab oldik va oxirgi ikki kunimda DCMni dokumentatsiyasida berilgan 400ga yaqin rule'larni birma-bir ko'zdan kechirib, o'zimizga keraklilarini terib, filterlab chiqdim.

Postga biriktirilgan suratda esa maksimal toza yozishga harakat qilib, 80%+ kodlar reviewdan o'tib merge bo'lgan super-app loyihamizning DCM o'rnatilganidan keyin yuzaga chiqqan xatolik va ogohlantirishlar soni.

Agar sizni ham jamoangizdan 3 va undan ortiq dasturchi ishlayotkan bo'lsa, loyiha kodlarini sifatliroq chiqarish uchun ushbu xizmat turidan foydalanishni tavsiya beraman.

🔜 Ishlatish jarayonida chiqadigan qiziqarli holatlarni keyingi postlarda yoritib boraman.

@ahadjonovss
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Telba Dasturchi
«Flutterda Keystore yaratish»

Videoga like bosib, comment yozib, qo'ldan kelgancha ulashamiz✊

Videoni ko'rish

Macbook uchun pul:)

Telegram | Youtube | Contact
Forwarded from MobilDasturchi.Uz (Azizbek Asqaraliyev)
Kimdadir playmarketga app qo'ymoqchi bo'lsa va account ochishda muamo bo'layotgan bo'lsa, qonunlarga to'g'ri keladigan va dinimizga to'g'ri keladigan yaxshi ilovalarni tekinga chiqarib beraman. Agar kimgadir qiziq bo'lsa @mobildasturchi_bro ga yozsin.
📦 Вышел BLoC v9.0.0

✅ Поддержка WebAssembly (wasm)

✅ Обновление примеров и туториалов по использованию

✅ Минимальный Dart v2.14

✅ Новый внутренний интерфейс EmittableStateStreamableSource заменил Emittable у BlocBase

По-сути это "посредник", который помогает тестировать блоки и внедрять кастомный source, не привязываясь к конкретной реализации BlocBase

⚠️ Удален ранее помеченный как Deprecated класс BlocOverrides. Вместо него тепреь нужно использовать Bloc.observer и Bloc.transformer

⌨️ Гайд по миграции
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from MobilDasturchi.Uz (Azizbek Asqaraliyev)
🆕 Android 16: Ruxsat etilgan yo'nalishning oxiri

🤖Android 16 da ishlab chiquvchilar
endi ekran yoʻnalishini cheklay olmaydi yoki katta ekranli qurilmalarda oyna oʻlchamlarini bloklay olmaydi.

📱📱Endi sizning loyihangiz API 36 ni qo'llab-quvvatlasa, foydalanuvchilar oyna o'lchamlarini o'zgartirishi va ekranni xohlagancha aylantirishi mumkin bo'ladi. Bu 600 dp dan kengroq ekranli barcha qurilmalar uchun amal qiladi

AndroidManifestda quyidagi atributlar e'tiborga olinmaydi:
- ekran yo'nalishi
- setRequestedOrientation()
- qayta o'lchamli Faoliyat
- minAspectRatio
- maxAspectRatio

😱 Moslashuvchanlik mobil qurilmalarda standartga aylanib bormoqda va endi dizaynerlar va mahalliy ishlab chiquvchilar ularni ushlab turish uchun ko'p mehnat qilishlari kerak.


@dasturchiMobile
Forwarded from Dr. Algorithm
Juniorlarda ko‘p uchraydigan xatolar

[1-qism]

Kecha yangi kitob o‘qishni boshlagan edim, muallifi podcast yuritar ekan. Eshitib ko‘rish uchun kirdim. Birinchi eshitib ko‘rgan mavzuyim Juniorlar haqida edi.

Juniorlarda ko‘p uchraydigan xatolar

Bilamiz-ki, ko‘p savollar Juniorlar orasida chiqadi. Middle va seniorlar savollari ancha kam va kam takrorlanadi. Bu yerda junior dasturchilarda uchraydigan xatolarning ba’zilarini keltirib o‘taman.

1. Bir vaqtda ko‘p narsa o‘rganish.

Bir vaqtda bir necha katta texnologiyani o‘rganishni boshlashadi. Python, JavaScript yoki MongoDB kabi texnologiyalarni kimdir ularga kerak degani uchun o‘rganishni boshlashadi. Bu esa salbiy natijalarga olib keladi. Biror tilni yaxshi tushunmaslik, kerak bo‘lmasa ham o‘rganishga vaqt sarflash yoki imkoniyatlarni aralashtirib tushunish va ertaga kerak bo‘lganida qo‘llay olmaslik kabi. Eng yomoni biror loyihani faqat shu aytilgan texnologiyada qilish mumkin deb o‘ylash.

Tavsiya: Bir vaqtda faqat bitta til yoki texnologiyani mukammal o‘rganishga harakat qiling.


Vaqti kelib keyin boshqasiga o‘tib olaverasiz.


2. Version contol’ni tushunmaslik.

Version contol juda ajoyib narsa. U bilan tarixga qaytish mumkin, dasturning turli variantlarini sinab ko‘rish mumkin, bir biriga xalal bermay ishlash mumkin. Gitdan yaxshisi bo‘lmasa kerak, lekin man SVNni yaxshi ko‘rar edim. Agar kimdir hali ham file va zip bilan versiya saqlab yurgan bo‘lsa, uzr siz hali junior darajasiga yaqin ham kelmabsiz.

Bu mavzuda nafaqat juniorlar, balki katta dasturchilar ham xato qilib turishadi. Vaziyatlar ham turlicha. Ba’zilarini keltirib o‘taman.

* Commit qilishni unutish
* Keraksiz filelarni repoga yuklash. Masalan, IDE ishlatadigan sozlama (config)lar, muhit (env) fayllari, vaqtincha va ishga tushuvchi fayllar (build, .class, .so va boshqalar)
* Begona shoxga (branch) kodni yuklash.
* Force-push buyrug‘ini ishlatish 🤯
* Keng tarqalgani, Commit qilib, Push qilmaslik. (Yuklashga tayyorlab, yubormaslik)

Bularni qilmaslik uchun juda ko‘p usullar va qoliplar mavjud. (GitFlow masalan).

Tavsiya: Gitdan foydalanish qoidalari va korxonalar ishlatadigan usullar bilan tanishib qo‘ying. Agar siz ishlayotgan joyda joriy qilinmagan bo‘lsa, kiritishga harakat qiling.



3. Ma’lumotlar shakllarini bilmaslik

Ma’lumotlar bilan ishlaganda ko‘pchilik yosh dasturchilar ma’lumotning xotiradagi shaklini biladi. Integer, String va Array kabi. Hayotda esa ko‘proq CSV, JSon va XML lar bilan ishlashi kerak bo‘ladi.

Ko‘rinishidan juda sodda, ammo bilmaganlar uchun vaqt oladigan narsalar. Bu shakllar mohiyatini yaxshi bilmagan dasturchi ishi tushganida parser (o‘qigich) yasashga harakat qiladi. Vaholanki buning har biri uchun minglab parserlar allaqachon internetda bor.

Bu boradagi ba’zi maslahatlar:

CSV
* Barcha matn qiymatlarni qo‘shtirnoqqa oling.
* UTF-8 kodlashdan foydalaning.

JSON
* JSON va JavaScriptni farqini bilib oling.
* JSON to‘g‘ri bo‘lish tablarini o‘rganing.
* JSON ma’lumotingizni json schema yordamida tekshirishni biling.

XML
* Atributlar va elementlarni tushib oling.
* HTML bilan farqini biling.
* XQuery va XPath yordamida so‘rov yozishni o‘rganing.
* Case sensitive (bosh va kichik harflar bir xil hisoblanishi)ni hisobga oling.
* CData nima ekanini va mohiyatini tushunib oling.

Tavsiya: Fayllar bilan ishlaganda avval u fayl kengaytmasiga mos dasturlar bor ekanini qarab chiqing. Tayyor kutubxonalarni o‘rganib, ishlatib ko‘ring.


davomi bor...

Bitta xabarga sig‘madi. Davomini keyingi postda.

16.01.2025 London
@DrAlgorithm
Forwarded from Dr. Algorithm
Juniorlarda ko‘p uchraydigan xatolar

[2-qism] (boshi avvalgi postda)

4. Hujjatlar havola qilinish uchun mavjud.

Yangi dasturlarga kirganlar yoki junior dasturchilarda ajoyib fikr bor. Ular hujjatlarga havola qilish yoki Googledan narsa qidirishni zaiflik deb bilishadi.

Bizning sohada izlamasdan, yoki bajargan ishingizda biror havola (link) qo‘ymasdan ishlab bo‘ladimi? Bugun yozgan kodingizni ertaga ko‘rsangiz, asabiy bo‘lib o‘tirasiz-ku axir.

Hujjatlarga havolar qiling. Ertaga hamkasbingiz bilan ishlaganda, har yarim soatda oldiga borib, "bu qanaqa edi?", "bunisini nima qilgan edik, eslatvor" deb so‘roqqa tutishgan ko‘ra, bir marta ko‘rsatib berilganida izoh yozib qo‘yish, topgan maqolangiz havolasini ko‘rsatish vaqt tejaydi, ish unumli bo‘ladi.

Tavsiya: Googledan narsa izlashga uyalmang. Foydali manbalarni saqlab qo‘ying. Kodingiz yonida (ReadME) foydalangan havolalar ro‘yxatini yig‘ib yursangiz bo‘ladi.



5. Ishlatadigan ish qurolini bilmaslik.

Barcha dasturchilar, shu jumladan junior dasturchilar, kod yozish uchun IDE (ish quroli)ni ishlatishadi. Ammo uni yaxshi bilmaslik, yoki barcha imkoniyatlaridan to‘g‘ri foydalanmaslik ish unumdorligiga salbiy ta’sir qiladi.

Ish qurolining ba’zi imkoniyatlarini ko‘rib chiqsak:

Debugging (yurib chiqish):
* kod qatorlarida harakatlanish, o‘zgaruvchilar qiymatlarini tekshirish, shartli va shartsiz to‘xtash tugunlarini yasash, o‘zgaruvchilarni kuzatish va stack zanjirini ko‘rish.
* Console.log ni ishlatish hech qachon yetarli emas.

Profiling (resurs monitoringi)
* kompyuter resurslarining asosiy tushunchalaridan xabardor bo‘lish
CPU ko‘p ishlatadigan kodni topish va tuzatish
Xotiradan ko‘p foydalanishni oldini olish (memory leak)

Qurish (Build) jarayoni
* turli build sozlamalarini ishlata olish (Debug, Release versiyalar)
* Turli qurilmalar uchun yasash (web, desktop, mobile)

Sinov ish qurollari (Testing)
* Unit test - qanday qilib ishlatish va hisobot olish
* kodning qaysi qismlari sinovdan o‘tganini aniqlay olish (code coverage)

Kod uslubi (code style)
* Formatting - IDE larda tayyor formatlash imkoniyati bor (andozaga solish), shuni doim ishlatib turish
* korxona kod uslubi (corporate code style) ga moslab andozaga solish (format). Shunga git formatlash bilan to‘lib qolmaydi.

Tavsiya: Ishlatadigan ish qurolingizni yaxshilab o‘rganing. Har hafta 2-3 ta yangi imkoniyatini o‘rganish orqali 1 yilda to‘liq o‘rganib olasiz. Boshqa dasturchilardan ular ishlatadigan ish qurollarini so‘rang.



Bu kabi hayotda ko‘p uchraydigan kamchiliklar doim bo‘ladi. 20-30 yil oldin ham bor edi, hali kelajakda ham ancha vaqt davom etsa kerak. Chunki hammamiz insonmiz.

Ammo, savol berish, xatolar ustida ishlash, yangilikka qiziqish bu kamchiliklar oldimi oladi. Shaxsiy rivojlanishimizga yordam beradi.

Shunday ekan, uyalmay izlaning.



Izoh:
Repo - repository. Version control’da saqlanadigan joy nomi. Siz yozgan kodlaringiz yashaydigan shahar.
Force-push - gitga ma’lumot yuklash vaqtida xatolik yuz berganida, barcha boshqalarning o‘zgarishlarini inkor qilib, sizning kodni gitga yuklash.
SVN - Subversion. git chiqishidan avvalroq muomalada bo‘lgan version control dasturi.
IDE - Integrated Development Environment, kod yozish muhiti.

16.01.2025 London
@DrAlgorithm
Forwarded from Janob Panda
ChatGPT dan “gaz” olishni istasangiz, mana shu gapni unga yuboring:

“Roast me as hard as you can based on everything you know about me. Don't hold back even a little bit. I can take it all. In Uzbek”

Natijasini komment da qoldiring, ko’raylikchi qanday inson ekansiz ))

@mukhammadkarim_tukhtaboev
🤣1
Forwarded from Botir Ziyatov
AI mani savodsiz dasturchi qilib qo'ydi

Endi dokumentlarni o'qimayman. AI hamma narsani tezda tushuntira olsa, nega o'qishga ovora bo'lish kerak?

Xatoliklarni tuzatish ko'nikmalarim susayib bormoqda. Bazida xato xabarlarini ham o'qimayman, ularni shunchaki nusxalab AI ga qo'yaman va AI dan tushuntirish so'rayman.

Ilgari har bir xato xabar manga nimadir o'rgatardi. Endi-chi? AI yechim beradi, lekin hech narsa o'rganmayman.

Bu muammoni hal qilish uchun haftada bir kun "AI siz kun" o'tkazmoqchiman. Chunki AI bizni yaxshiroq dasturchi qilmaydi, aksincha unga qaram qilib qo'yadi.

Kelajakda yangi avlod dasturchilari faqat AI ga savol berishni biladi-yu, javoblarni tushunmaydi. Bu esa xavfli tendentsiyadir.

@botirziyatov
Dasturchilar o’qishi shart:

Agar siz yozayotgan tizimizda online to’lov qismi bo’lsa to’lov to’g’risidagi ma’lumotlarni soliqda ko’rinishini ta’minlang. Bu juda muhim!

Yaqinda bitta eCommerce platformasini yaxshigina summaga jarima solishibdi.
Dasturchining aybi bilan desam hayron qolmang.
Sababi sotilgan tovarlar haqida soliqqa avtomatik ma'lumotlar yuborilmagan. Bu daromadlarni yashirish va soliqdan qochishga teng!

Yechimi: soliq.uz saytidagi aqlli intellektdan ham maslahat olsangiz bo'ladi

@AmonAkramovich - ITdagi maslahatchingiz
Forwarded from MobilDasturchi.Uz (Azizbek Asqaraliyev)
Dart 3.8 yangilik! 🚀

Endi Null-aware elements yordamida kolleksiyalarda null tekshiruvini ancha qisqartirish mumkin!

Masalan, quyidagi kod:

Stack(
fit: StackFit.expand,
children: [
const AbsorbPointer(),
if (widget.child != null) widget.child!,
],
)

endi shunday yoziladi:

Stack(
fit: StackFit.expand,
children: [
const AbsorbPointer(),
?widget.child,
],
)

Yuqoridagi ?widget.child yozuvi null bo‘lmagan taqdirda faqat widget.child ni qo‘shadi. Kode ancha ixcham va tushunarli bo‘ldi!

Siz bu "shirin" imkoniyatni kutyapsizmi? 🫠

👍 – Ha, albatta!
👌 – Chiqqanda ko‘ramiz
👎 – Foydasini ko‘rmayapman



@dasturchiMobile
👍5