Package Manager nima?
Ular boshqa dasturlarni o'rnatish/o'chirish/yangilashda yordam beradigan dasturlardir. Chunki bu ishni qo'lda bajarish judayam murakkab bo'lishi va kop vaqt olishi mumkim. Ularni 2 turga ajratish mumkin.
OS Based va Language Based.
Gradle kabi ba'zi vositalar Package larni Manage qilishdan tashqari ko'p Multi-Project Builds, Incremental Builds va Build Scans kabi ko'proq xususiyatlarga ega bo'lgan Build Automation vositasidir.
Ular boshqa dasturlarni o'rnatish/o'chirish/yangilashda yordam beradigan dasturlardir. Chunki bu ishni qo'lda bajarish judayam murakkab bo'lishi va kop vaqt olishi mumkim. Ularni 2 turga ajratish mumkin.
OS Based va Language Based.
Gradle kabi ba'zi vositalar Package larni Manage qilishdan tashqari ko'p Multi-Project Builds, Incremental Builds va Build Scans kabi ko'proq xususiyatlarga ega bo'lgan Build Automation vositasidir.
đ2đĨ1đ¤1
Flowlarni compose da lifecycle-aware qilib collect qilish uchun .collectAsStateWithLifecycle ishlatish kerak bo'ladi. Shunga o'xshash bo'lgan yana 1 ta extension
.collectAsState bor. Farqi shundaki .collectAsState android uchun emas balki boshqa platformalar uchun qilingan, android uchun faqat .collectAsStateWithLifecycle ishlatish kerak.androidx.lifecycle:lifecycle-runtime-compose:2.6.0-alpha04đĨ3đą2
Android Code Search (cs.android.com) - bu tool bilan android dasturchilar search qilgan narsalarini har xil codebase lardan topib source code ni chiqarib beradi.
đĨ3đ¤Š2
*Keragidan ortiq Breakpointlar debugging performance ga ta'sir qiladi!
Android Studio da debug qilinayotgan paytda agar sizda "Method breakpoints may dramatically slow down debugging" chiqsa yoki debug qilinayotganda qotishlar kuzatilsa unda siz method breakpoints ni uchirib quyishingiz kerak bo'ladi.
Android Studio da debug qilinayotgan paytda agar sizda "Method breakpoints may dramatically slow down debugging" chiqsa yoki debug qilinayotganda qotishlar kuzatilsa unda siz method breakpoints ni uchirib quyishingiz kerak bo'ladi.
đĨ2
GitHub Copilot - bu milliardlab kod qatorlari bilan o'rgatilgan AI bo'lib u dasturchilarga autocompletion va code-suggestion da yordam beradi.
Albatta, tekin emas, oyiga 10$, yilliga 100$. Lekin free-trial olib 60 kun bepul ishlatish mumkun.
https://github.com/features/copilot
Albatta, tekin emas, oyiga 10$, yilliga 100$. Lekin free-trial olib 60 kun bepul ishlatish mumkun.
https://github.com/features/copilot
đĨ5đ1đ1
Hech o'ylaganmisiz, dasturlash tili qandan yaratiladi?
Javob: LLVM (Low Level Virtual Machine)
LLVM - bu compiler uskunalar to'plami bo'lib, u dasturlash tilining compiler orqali binary machine code ga o'tish jarayonini abstraktsiyalash bilan siz hohlagan syntax yoki front-end texnologiyalar orqali siz hohlagan machine arxitektura (back-end) lariga compile qilish imkoniyatini beradi. Bu texnologiya orqali taniqli Swift, Kotlin, Rust tillari yaratilgan.
Javob: LLVM (Low Level Virtual Machine)
LLVM - bu compiler uskunalar to'plami bo'lib, u dasturlash tilining compiler orqali binary machine code ga o'tish jarayonini abstraktsiyalash bilan siz hohlagan syntax yoki front-end texnologiyalar orqali siz hohlagan machine arxitektura (back-end) lariga compile qilish imkoniyatini beradi. Bu texnologiya orqali taniqli Swift, Kotlin, Rust tillari yaratilgan.
đĨ2đ1
Berilgan misolni Java Memory Model aynan shunday yechishi mumkin desam ishonasizmi?!
Ha! Judayam kamdan kam ehtimollik bilan. Lekin mumkin!
Judayam kam ehtimolga ega bo'lgan bunday hatolik jiddiy loyihalarda yo'l qoyish mumkinmi? Yo'q!
Sabab: long va double primitive ozgaruvchilar thread-safe emas. Chunki ular 64-bit egallaydi, JMM esa ularga *write amalini 2ta 32-bit operatsiyasi bilan bajaradi. Shunday holatda agar bir vaqtda read va write amalini har hil oqim da bajarilsa birinchi oqiyotgan oqim birinchi 32 bit maydonini olib 2 chi 32 bit maydonini esa write amali bajarilgandan keyingi natijaning 32 bit maydonini olib gibrid qiymat hosil qilishi mumkin...
Yechim: Qo'shimcha synchronizer lar ishlatish lozim (volatile, synchronized, atomic operations...)
Manba: Java Concurrency in Practice by Brian Goetz
***korsatilgan misol tushunish osonroq bo'lishi uchun soddalashtirilgan
Ha! Judayam kamdan kam ehtimollik bilan. Lekin mumkin!
Judayam kam ehtimolga ega bo'lgan bunday hatolik jiddiy loyihalarda yo'l qoyish mumkinmi? Yo'q!
Sabab: long va double primitive ozgaruvchilar thread-safe emas. Chunki ular 64-bit egallaydi, JMM esa ularga *write amalini 2ta 32-bit operatsiyasi bilan bajaradi. Shunday holatda agar bir vaqtda read va write amalini har hil oqim da bajarilsa birinchi oqiyotgan oqim birinchi 32 bit maydonini olib 2 chi 32 bit maydonini esa write amali bajarilgandan keyingi natijaning 32 bit maydonini olib gibrid qiymat hosil qilishi mumkin...
Yechim: Qo'shimcha synchronizer lar ishlatish lozim (volatile, synchronized, atomic operations...)
Manba: Java Concurrency in Practice by Brian Goetz
***korsatilgan misol tushunish osonroq bo'lishi uchun soddalashtirilgan
đ1đ1
Forwarded from Just-Code-It Chat
Firebase ni SDK lari 3 toifaga bo'linadi.
1. Play services required - Google Play servis bilan ishlidiganlari. ( Cloud Messaging, Dynamic Links)
2. Play services recommended - Google Play servis siz ham ishlidi lekin tafsiya qilinadi. (Admob, Analytics)
3. Play services not required - Google Play servis keremaslari. (Authentication, Crashlytics, Cloud Firestore, Cloud Storage, In-App Messaging, Realtime Database, App Distribution)
1. Play services required - Google Play servis bilan ishlidiganlari. ( Cloud Messaging, Dynamic Links)
2. Play services recommended - Google Play servis siz ham ishlidi lekin tafsiya qilinadi. (Admob, Analytics)
3. Play services not required - Google Play servis keremaslari. (Authentication, Crashlytics, Cloud Firestore, Cloud Storage, In-App Messaging, Realtime Database, App Distribution)
đĨ10đ1
SHADER lar
Bu tog'ridan tog'ri ekrandagi pixellar ustida amallar bajara oladigan, ularning rangini ekranga chiqishdan oldin o'zgartira oladigan va GPU da bajariladigan *kichik programmalardir. Odatda shader deyilganda Pixel Shader lar tushiniladi lekin ularning quyidagi va undan ortiq turlari mavjud.
Pixel/Fragment shaders - bu shader turiga yozilgan amal ekranning har bir pixeli ustida bajariladi.
3D/Vertex shaders - bunda shader amali faqatgina 3D model ga biriktirilib faqatgina modelning vertex (yuzasi)ga ta'sir korsata oladi.
Geometry shaders - bu shaderlar ekranda yangi qo'shimcha graphic primitivlar (nuqta, chiziq, uchburchak...) yarata olish hususiyatiga ega.
etc...
click here for more info
Bu tog'ridan tog'ri ekrandagi pixellar ustida amallar bajara oladigan, ularning rangini ekranga chiqishdan oldin o'zgartira oladigan va GPU da bajariladigan *kichik programmalardir. Odatda shader deyilganda Pixel Shader lar tushiniladi lekin ularning quyidagi va undan ortiq turlari mavjud.
Pixel/Fragment shaders - bu shader turiga yozilgan amal ekranning har bir pixeli ustida bajariladi.
3D/Vertex shaders - bunda shader amali faqatgina 3D model ga biriktirilib faqatgina modelning vertex (yuzasi)ga ta'sir korsata oladi.
Geometry shaders - bu shaderlar ekranda yangi qo'shimcha graphic primitivlar (nuqta, chiziq, uchburchak...) yarata olish hususiyatiga ega.
etc...
click here for more info
đ4
Mapping funksiyalari bilan xayrlashamiz đ
Kotlin Konstruktor Mapper (KConMapper / KCM) avtomatik ravishda Kotlin Symbol Processing (KSP) kompilyator plagini orqali bir class va boshqa class konstruktori o'rtasida mapping qilish jarayonini amalga oshiradi.
KConMapperdan foydalanish uchun havola: https://github.com/YanneckReiss/KConMapper
Kotlin Konstruktor Mapper (KConMapper / KCM) avtomatik ravishda Kotlin Symbol Processing (KSP) kompilyator plagini orqali bir class va boshqa class konstruktori o'rtasida mapping qilish jarayonini amalga oshiradi.
KConMapperdan foydalanish uchun havola: https://github.com/YanneckReiss/KConMapper
đĨ4đ2
This media is not supported in your browser
VIEW IN TELEGRAM
Android Graphics Shading Language (AGSL)
Bu Android 13 da kirib kelgan android uchun shader tili hisoblanib tepadagi gifda ko'rsatilgan kabi rasmlar ustida effekt lar yaratish imkoniyatini beradi. Syntax tomondan juda katta qismi GLSL (OpenGL uchun shader tili) dan olingan. Ya'ni juda kam o'zgarishlar bilan GLSL tilidan yozilgan shaderni AGSL ga o'girish mumkin.
Kamchiligi esa faqat android 13 va undan tepa versiyalarda ishlaydi. âšī¸
Join this Channel for more...
Bu Android 13 da kirib kelgan android uchun shader tili hisoblanib tepadagi gifda ko'rsatilgan kabi rasmlar ustida effekt lar yaratish imkoniyatini beradi. Syntax tomondan juda katta qismi GLSL (OpenGL uchun shader tili) dan olingan. Ya'ni juda kam o'zgarishlar bilan GLSL tilidan yozilgan shaderni AGSL ga o'girish mumkin.
Kamchiligi esa faqat android 13 va undan tepa versiyalarda ishlaydi. âšī¸
Join this Channel for more...
đ3đą1
KDoctor - bu Kotlin Multiplatform Mobile ilovalarini ishlab chiqish uchun muhitni o'rnatishga yordam beradigan buyruq qatori vositasi.
KDoctor barcha kerakli komponentlarning to'g'ri o'rnatilganligini va foydalanishga tayyorligini ta'minlaydi. Agar biror narsa o'tkazib yuborilgan yoki sozlanmagan bo'lsa, KDoctor muammoni ta'kidlaydi va muammoni qanday hal qilishni taklif qiladi.
KDoctor quyidagi diagnostikani amalga oshiradi:
đTizim - operatsion tizim versiyasini tekshiradi
đJDK - JDK o'rnatilishini va JAVA_HOME sozlamalarini tekshiradi
đAndroid Studio - Android Studio o'rnatilishini, Kotlin va Kotlin Multiplatform Mobile plaginlarini tekshiradi
đXcode - Xcode o'rnatilishi va o'rnatilishini tekshiradi
đCocoapods - ruby muhitini va kakoapodlarning gemlarini o'rnatilishini tekshiradi
Batafsil ma'lumot: https://github.com/Kotlin/kdoctor
KDoctor barcha kerakli komponentlarning to'g'ri o'rnatilganligini va foydalanishga tayyorligini ta'minlaydi. Agar biror narsa o'tkazib yuborilgan yoki sozlanmagan bo'lsa, KDoctor muammoni ta'kidlaydi va muammoni qanday hal qilishni taklif qiladi.
KDoctor quyidagi diagnostikani amalga oshiradi:
đTizim - operatsion tizim versiyasini tekshiradi
đJDK - JDK o'rnatilishini va JAVA_HOME sozlamalarini tekshiradi
đAndroid Studio - Android Studio o'rnatilishini, Kotlin va Kotlin Multiplatform Mobile plaginlarini tekshiradi
đXcode - Xcode o'rnatilishi va o'rnatilishini tekshiradi
đCocoapods - ruby muhitini va kakoapodlarning gemlarini o'rnatilishini tekshiradi
Batafsil ma'lumot: https://github.com/Kotlin/kdoctor
đ5đĨ1
Forwarded from Sanjar Suvonov
Native mobil dasturlar yaratish vaqti keldi
Moko - Mobil dasturlar (android va iOS) ishlab chiqish uchun Kotlin multiplatforma kutubxonalari
Moko - Kotlin Multiplatform texnologiyasidan foydalangan holda Android va iOS uchun native mobil ilovalarni ishlab chiqishni soddalashtirish va tezlashtirishga qaratilgan.
Batafsil: https://moko.icerock.dev/
Moko - Mobil dasturlar (android va iOS) ishlab chiqish uchun Kotlin multiplatforma kutubxonalari
Moko - Kotlin Multiplatform texnologiyasidan foydalangan holda Android va iOS uchun native mobil ilovalarni ishlab chiqishni soddalashtirish va tezlashtirishga qaratilgan.
Batafsil: https://moko.icerock.dev/
đĨ3
Repository strategiyalari (Git)
Mono-Repo vs Multi-Repo
Barchamiz git repository lardan foydalanamiz, lekin oramizda multi-repo, ya'ni bir proektda birnechta git repositoryga ulangan holda ishlaydiganlar kam bo'lsa kerak. Bu holat ko'pincha, module larni bir nechta proektlarda qayta ishlata olish imkoniyati va komandalarni shu repositorylarga qarab ajratib code-ownership ni tog'ri taqsimlash qulayliklarini beradi...
Lekin bunday loyihada ishlab korgan va azobini tortgan shaxs sifatida aytamanki, bunday usul juda katta muammolarga olib kelishi mumkin. Orasida eng yomoni, branch lar kombinatsiyasi notog'ri tanlangan bo'lsa umuman proekt build bo'lmay tushunib bo'lmaydigan (*not resolved) muammolarga olib kelishi...
Bunday muammolarni mono repoga qaytmasdan yana 2 xil yangi strategiyalar orqali hal qilish mumkin.
Ular esa:
Poly-As-Mono va Mono-As-Poly
Batafsil
Join
Mono-Repo vs Multi-Repo
Barchamiz git repository lardan foydalanamiz, lekin oramizda multi-repo, ya'ni bir proektda birnechta git repositoryga ulangan holda ishlaydiganlar kam bo'lsa kerak. Bu holat ko'pincha, module larni bir nechta proektlarda qayta ishlata olish imkoniyati va komandalarni shu repositorylarga qarab ajratib code-ownership ni tog'ri taqsimlash qulayliklarini beradi...
Lekin bunday loyihada ishlab korgan va azobini tortgan shaxs sifatida aytamanki, bunday usul juda katta muammolarga olib kelishi mumkin. Orasida eng yomoni, branch lar kombinatsiyasi notog'ri tanlangan bo'lsa umuman proekt build bo'lmay tushunib bo'lmaydigan (*not resolved) muammolarga olib kelishi...
Bunday muammolarni mono repoga qaytmasdan yana 2 xil yangi strategiyalar orqali hal qilish mumkin.
Ular esa:
Poly-As-Mono va Mono-As-Poly
Batafsil
Join
đ2
Compose Helper
Composable-laringizni boshqa Composable bilan o'rash uchun oddiy plagin.
Kontekst menyuni Alt+Enter tugmalarini bosish orqali chiqaring va o'zingizga kerakli o'zgarishlarni bajaring.
Siz tanlashingiz mumkin -
- Box bilan o'rash
- Card bilan o'rash
- Column(ustun) bilan o'rash
- Row(qator) bilan o'rash
- LazyColumn bilan o'rash
- LazyRow bilan o'rash
- Asosiy composableni olib tashlash
- Composableni butunlay olib tashlash
Batafsil ma'lumot uchun: Link
Composable-laringizni boshqa Composable bilan o'rash uchun oddiy plagin.
Kontekst menyuni Alt+Enter tugmalarini bosish orqali chiqaring va o'zingizga kerakli o'zgarishlarni bajaring.
Siz tanlashingiz mumkin -
- Box bilan o'rash
- Card bilan o'rash
- Column(ustun) bilan o'rash
- Row(qator) bilan o'rash
- LazyColumn bilan o'rash
- LazyRow bilan o'rash
- Asosiy composableni olib tashlash
- Composableni butunlay olib tashlash
Batafsil ma'lumot uchun: Link
đĨ2đ1