Techie's Blog
146 subscribers
695 photos
198 videos
7 files
112 links
Flutter Engineer | Tech enthusiast.
Working at 🟢 https://paynet.uz

Likes traveling, books, cats 😄.
Sharing my journay to become a senior.

Community : @FlutterDevTalk
DM : @iamtechie
Download Telegram
Haaa, endi ajralish oson emas 🥲
1
Generatorga ko'pdan beri kutilayotkan bazi o'zgarishlar kiritildi.
Bir kamchiligi uni o'rnatish bo'lib qolmoqda. Reponi clone qilib ishlatishda muammo yoq lekin bilmagan odam uchun ancha qiyin bo'lmoqda.

p.s/ Bunga qanday yechim qilish mumkin ?
#fun
What will you gift for your gf on 14th feb ?
- There is no 1 4 for me )
👍2
Something 🫣
🔥2
Media is too big
VIEW IN TELEGRAM
Day8

Menimcha sekin-sekin o’z yo’limni topmoqdaman. Orada qolgan kunlar ham nima qilish haqida o’ylashga ketdi.

P.s/ NoteAppga esa deyarli hamma narsa tayyor va uni nasib qilsa youtubda ulashaman.
👍6🔥2
Media is too big
VIEW IN TELEGRAM
Day9

Kech bo’lishiga qaramay kontent joylandi. Endi esa uhlab olish kerak 😵‍💫
👍6
Yangi mehmon 😄
2
💆🏻‍♂️
This media is not supported in your browser
VIEW IN TELEGRAM
Day10.
Dam olish kunlarida toshkentning hali o’zimga kashf qilmagan joylariga sayrlar qilyapman. Bu safar Anhor park tomonlarga bordim. U yerda daraxtlar juda ko’p ekan bahorda yoki yoz issig’ida anhor bo’ylari salqin bo’lsa kerak.

P.s/ Asli u yerga oltinrang baliqalar bor deb o’ylab borgan edim, boshqa bog’da ekan 😅.
🔥3
I need a vitamin C like Cat, Cash, Car, Coffee, Computer …
😁3
New location. New office.
Men bir joyda ko’p qolishni hohlamayman. Shu sabab yangi joyga ko’chdik 😄.
🤣3👏1
Yaqinda bir inverviewda savol tushid:

"Dart single thread bo'lsa va barcha amallarni event loop boshqarsa, future tasklarni faqat resultlarini handle qilsa unda future tasklar qayerda execute qilinadi ?"

Men event loop barcha tasklarni bajaradi deb o'ylardim va men shunday malumot o'qiganman lekin interviewer dart paketi bilan keladigan qandaydir OS bajarishini javobini event loop ga qaytarishni aytdi. Chat GPT dan bu haqida so'rab quyidagilarni topdim va ulashgim keldi, kimgadir shunday savol berib qolishsa yordam berar degan umiddaman,

- OS orqali Async I/O ishlashi:
Dart’da Future orqali tarmoq yoki fayl tizimidan ma’lumot olish OS yordamida amalga oshiriladi. Misol uchun, socket I/O, database query, yoki file read/write bo‘lsa, OS Future ni event loop ga qo‘shib yuboradi.


dart:
import 'dart:io';

void main() async {
print('Fayl o‘qilmoqda...');

var fayl = File('example.txt');
var content = await fayl.readAsString(); // OS orqali Async I/O
print('Fayl ichidagi ma’lumot: $content');
}


• await fayl.readAsString(); → Bu async I/O bo‘lgani uchun, OS bu jarayonni event queue ga yuboradi.
• Event loop boshqa vazifalarni bajaradi, fayl o‘qilishi tugagach, natijani qaytaradi.

- Dart Isolate va OS Thread’lari:
Dart single-threaded bo‘lgani uchun barcha kod bitta thread da ishlaydi. Ammo Isolate yordamida boshqa CPU thread larni yaratish mumkin.


dart :
import 'dart:isolate';

void uzunHisob(IsolateSendPort sendPort) {
int sum = 0;
for (int i = 0; i < 1000000000; i++) {
sum += i;
}
sendPort.send(sum);
}

void main() async {
ReceivePort receivePort = ReceivePort();
await Isolate.spawn(uzunHisob, receivePort.sendPort);

receivePort.listen((sum) {
print('Hisob natijasi: $sum');
});

print('Asosiy thread band emas!');
}

• Isolate yangi OS thread yaratadi va hisob-kitobni alohida bajaradi.
• OS multi-threading orqali resurslarni boshqaradi.
• Asosiy thread bloklanmaydi, UI yoki boshqa vazifalar davom etadi.

Ya'ni Dart native OS lardan future tasklarni bajartiradi va javoblarni event loop ga jo'natadi. Bu haqida qolgan malumotlarni o'zingiz ham research qilib ko'rishingiz mumkin.
#savol

"SOLID, DRY, KISS, YAGNI" bular nimalar ?

* SOLID :
- Single responsibility principle ya'ni barcha class faqat bitta muayyan vazifani bajarishi kerak, birdaniga barcha ishni bir funksya bajarishdan qaytaradi;
- Open/Closed principle ya'ni class qo'shimchalar uchun ochiq (open to extend), o'zgarishlar uchun yopiq bo'lishi kerak (closed to modify) ;
- Liskov substitution principle ya'ni agar S class T klassdan voris olsa, T ning istalgan o'rnida S ni ishla olish kerak.
- Interface segregation principle ya'ni katta interfacelar o'ziga hos kichik interfacelarga bo'linishi kerak. Bu degani class o'ziga kerak bo'lmagan metodlarni implement qilishga majbur bo'lmasligi kerak va interface kichik interfacechalarga bo'linishi kerak.
- Dependency inversion principle ya'ni teskari bog'liqlik. High-level classlar low-level classlarga emas balki ularning abstraksiyalariga bog'liq bo'lishi kerak.

* DRY (Don't repeat yourself) ya'ni bir funksyani har hil klassda qayta-qayta yozish kerakmasligni anglatadi. Bu jamoaviy ishlaganda sodir bo'ladi va bir classda bitta vazigani bajaradigan 3-4 ta funksyalarni ko'rish mumkin bo'ladi;

* KISS (Keep it simple, stupid) ya'ni bazida funksyalarni juda ham murakkab yozib yuboriladi va buni boshida o'zi va Hudo keyin faqat Hudo biladigan holatga keltiriladi. Bu prinspl bundan qaytarib oddiyroq barcha tushunadigan qilib yozishga chaqiradi. Baht oddiylikda deydiku 😁😁.

* YAGNI (You aren't gonna need it) ya'ni kimlardir hayollaridagi supper mega zo'r funksyani yozaman deb class ochib qo'yadi lekin keyin esidan chiqib qolib ketaveradiku shunaqa holatni oldini olishni eslatadi. Faqat kerakli narsani yoz, qolganini kezi kelganda yozasan degani.

Kelajakda qandaydir inteviewlarda kerak bo'lib qolishi mumkin 😉.
👍3
#thoughts

Mndee o'ylab qarasam, holimga shukurdan boshqa narsa yarashmaydi.

Oilamdan uzoqda yashash, ishlash, o'zimni eplab yurish, oilamga ozgina bo'lsa ham yordam berish, bir joyda to'xtab qolishga qarshilik, o'sish, o'rganish, to'g'ri yo'lga intilish, xato qilish va ulardan o'rganish, boriga shukur qilish. Holim bazilarga orzu bu ham bir inom. Hechkim begunoh emas va shu qatori meni ham gunoh va kamchiliklarim bor. Bularni ko'rib kamchiliklarimga ko'nib, xatolarimni to'g'irlashda yordam beradigan yaxshi insonlar davrasi. Bularni barchasiga shukur qilib harakat qilish kerak.
🔥7
#savol

OOP va uning 4 asosiy prinsiplari ?

OOP (Object Oriented Programming) Obyektga yo'naltirilgan dasturlash - kodni modullarga bo'lish, qayta ishlashga moslashtirish, ko'dlarni kengaytirishga qulaylashtirishga yordam beradigan dasturlash paradigmasi.

1. 💥 Inkapsulyatsiya (Encapsulation) - class memberlarini yashirish va to'g'ridan-to'g'ri foydalanishni cheklash;
2. 💥 Abstraksiya (Abstraction) - Classning yoki funksyani soddalashtirish va ishlash jarayonini yashirish. Bu deyarli sklet vazifasida ishlaydi. Abstraksiya ichidagi funksyalar hight-level va ularning class ichidagi bodylari low-level funksiya deb ataladi.
3. 💥 Merosxorlik (Inheritance) - Bitta class boshqa classning xususyat va metodlarini meros qila olishi. Bunda merol olgan class CHILD CLASS meros bergan class esa PARENT CLASS deb ataladi.
4. 💥 Polimorfizm (Polymorphism) - Bir hil nomda har hil parametrdagi funksyalarning bo'lishi. Bu ikki hil overload va overrirde bo'ladi.
Overload - bir sinfda bir nomda har hil parametrdagi funksyalarni yozish
Override - meros qilib olingan classning metodlarini yangi classda o'zgartirib yozish.

Ushbu savol barcha interviewlarda beriladi. O'ylamanki foydasi tegib qoladi.
🔥4
#savol

Dartda kompilyatsiya (Compilation) turlari ?

Dart asosan ikkita asosiy kompilyatsiya usulini qo'llab-quvvatlaydi :
- AOT (Ahead-of-Time) - oldindan kompilyatsiya;
- JIT (Just-in-Time) - bajarish vaqtida kompilyatsiya;

AOT - kodni ishga tushishidan oldin optimallashtiradi va mashina tiliga o'giradi. Bu asosan Flutterda apk yoki ipa fayllarni chiqarishda ishlatiladi.

JIT - bu kod ishlashi davomida optimallashtiriladi va kompilyatsiya qilinadi. Bu asosan run yoki debug qilganda ishlaydi va Hot-reload orqali kodni qayta ishga tushurmay o'zgarishlari ko'rish mumkin va bu flutterning key feature bo'lib hizmat qiladi.

updated

Hot Restart ham JIT da ishlar ekan