Just Code It </>
46 subscribers
21 photos
6 videos
4 files
21 links
1 presentation a month.
A tech summary every wednesday.
+ more small knowledge shared.
Download Telegram
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/
πŸ”₯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
πŸ‘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
πŸ”₯2πŸ‘1
This media is not supported in your browser
VIEW IN TELEGRAM
AGSL shader Use-Case #1 (Android 13)

SourceCode

Join channel...
πŸ”₯4πŸ‘1
This media is not supported in your browser
VIEW IN TELEGRAM
AGSL shader Use-Case #2 (Android 13)

Join channel
⚑6πŸ‘1
Kotlin Coroutines da Flow lar mavjud, buni hamma biladi. Ular hot va cold flow turlariga bo'linadi buni ham kopchilik bilsa kerak. Lekin Flow lar qanday yaratilganiga qarab SAFE va UNSAFE turlarga bo'linishini bilasizmi?

Agar Flow

flow{ ... emit(...) }

qilib yaratilsa u SAFE flow bo'ladi.

Agar

flowOf(....),
.asFlow(),
combine(...flows...)

qilib yaratilsa u UNSAFE flow bo'ladi.

Safe va Unsafe flowlarning bir biridan farqi esa Exception Handle qilinishida. Safe Flowlar agar ularda exception sodir bo'lsa catch qila oladi, Unsafe Flowlar esa process ni crash bolishiga olib keladi. Unsafe flowlar qiymatlar oldindan aniq bo'lganda ishlatish lozim, ya'ni network request lar uchun tog'ri kelmaydi!

*Image is generated by stablediffusion
πŸ‘7πŸ”₯2
Quick-Tip

Android Studio da package tree ning ko'rinishini ixchamroq bo'lishi uchun foydali settings
Refact.ai: Kod yozish va qayta ishlash bo'yicha AI assistenti.

Refact - bu dasturchilarga kod yozish va takomillashtirishda yordam berish uchun mo'ljallangan zamonaviy AI vositasi.

Refactda foydalanishingiz mumkin bo'lgan funksiyalar:

- Kodni to'ldirish
- Kodni o'zgartirish
- Integratsiyalashgan chat

Batafsil ma'lumot uchun havola:
https://refact.ai/
πŸ”₯5
API-larni loyihalash va yaratishning turli usullari mavjud. Rest, WebSocket, GraphQL... larni ishlatgan yoki eshitgandirsiz ammo google qaysi arxitekturasidan foydalanishini bilasizmi?

gRPC google tomonidan 2016-yil ishlab chiqilgan bo'lib hozirda googlening microservicelar aro aloqa qilish uchun arxitekturasi. Zo'r yangilik gRPC open source demak biz ham ishlatsak bo'ladi.😁

Afzalliklari:
Samarali: Malumotlar binary formatda uzatiladi
Tezroq: Serialize va Deserialize ancha tez
HTTP2: tagida http2 ishlatgani uchun imkonyatlari keng.

RestApiga qaraganda 3x-10x martta tezroq.πŸ“Ž
πŸ‘3πŸ”₯2
Encryption,Decryption,Hashing.pdf
1.9 MB
Shifrlash biz uzatilayotgan ma'lumotni faqat o'qishi mumkin bo'lgan algoritmlar jamlanmasi.Texnik nuqtai nazardan biz o'qiy oladigan ma'lumotni tushunip bo'lmaydigan ko'rinishga o'tkazish jarayoni.

Deshifrlash esa shifrlashga teskari amal bo'lip shifrlangan matnni biz kalit dep ataydigan narsa yordamida biz o'qiy oladigan ko'rinishga o'tkazish jarayoni.

Hashing bu xavsizlik maqsadida berilgan kalit,matn yoki faylni bir xil uzunlikdagi qiymat bilan almashtiruvchi matematik funksiya.Standart shifrlashdan farqli o'laroq, xeshlash har doim bir tomonlama shifrlash uchun ishlatiladi va xeshlangan qiymatlarni deshifrlash juda qiyin.

Hozirgi vaqtda shifrlash deyarli hamma sohalarda keng qo'llaniladi
- Online Banking
- Online sotuv tizimlari
- Email Communication
- VPN
- Secure Browsing

Author: Jamshid Isoqov @jamshid_io
πŸ‘6
Flows & Channels.pdf
881.9 KB
Asinxron ma'lumotlar oqimi (Asynchronous data stream) - bu valuelarni ketma-ket malum kechikish bilan uzatish.

Kotlinda Asynchronous data stream bilan ishlashda Flow va Channellardan foydalaniladi.

Kotlin Flows - Kotlin coroutines va structured concurrency ustiga qurilgan Asynchronous data stream bilan ishlovchi deklarativ mexamizm hisoblanadi.

Kotlin Channels - ikki yoki undan ortiq coroutinelar o'rtasida ma'lumot almashish imkonini beruvchi powerful concurrency konstruksiya hisoblanadi.

Author - Pirmuhammad Xusanov @Pirmuhammad1
πŸ‘7
Just Code It </>
GRPC.pdf
Quick note:
There is light version of Protobuf, use it instead of full version, it will decrease overall apk size by not generating extra files under the hood. Originally in full version Protobuf has 4 main parts/folders - core, generator, message and util. and generates all of them. In contrast lite ver. has and generates only core folder.

To Migrate to the Lite Version:
All you need to do is change the Gradle configuration:
* From com.google.protobuf:protobuf-kotlin to com.google.protobuf:protobuf-kotlin-lite
* From io.grpc:grpc-protobuf-lite to io.grpc:grpc-protobuf-lite

Then, modify your generateProtoTasks as follows:

generateProtoTasks {
all().forEach {
it.plugins {
create("grpc"){
option("lite") //add
}
create("grpckt"){
option("lite") //add
}
}
it.builtins {
create("kotlin"){
option("lite") //add
}
create("java"){
option("lite") //add
}
}
}
}

Note that the full version is typically designed for servers, while the lite version is more suited for Android (though not mandatory). πŸ–‡

Tested in simple android project :
In lite ver. app size decreased by 1.41mb.

⚠️ Lite ver. does not works with R8 so It must be excluded inside ProGuard file.

Advantages of full ver.
1. Reflection and Descriptor Support
2. Dynamic Message Handling - capable of creating new message (data) types at runtime.
3. Advanced Serialization and Parsing Capabilities
4. Extensions Support - allows adding new fields to existing messages.
5. UnknownFieldSet - captures failed messages during the parsing process.

Here are the GitHub links for further reference:
Lite version
Full version

According to the creator of Protobuf, Squidfunk, the main reason for developing Protobuf was to facilitate the writing, deleting, or reading of very specific values inside an encoded Protocol Buffers message without needing deserialization. More details can be found in this source.
πŸ”₯4
DI.pdf
539.5 KB
DI - revision by @Pirmuhammad1
πŸ‘2