Flutter Dev | Uzbekistan 🇺🇿
397 subscribers
574 photos
68 videos
25 files
401 links
Flutter bu - hozirgi kundagi eng yetuk kross platformali dasturlash vositasidir!

Bu kanal Flutterning o'zbek zabon vakillari uchun.

Blog avtori:
© Muhammad Aziz (@mamasodikoff)

🥛 Ayron olib bering: tirikchilik.uz/cosmos

- Web sayt: flutterdev.uz
Download Telegram
Lukeni bugun jig'i biyron.
Flutter hech kimga aytmasdan X dagi profilini Blue Sky'ga o'zgartirib qo'yibdi.

Bir og'iz soramaydimi deb PR ham ochib qo'yibdi.

Men ham BS da profil ochib follow qolib qo'yurdim. Elon Musk Googlega mushuklarini pisht degandir. Bir gap boʻlar..

Razborka

@flutterblogs
"Easy Notification" paketini ishlatib ko'rganlar bormi, oxirgi paytda shu addresga maqtovlar eshitilib qoldi.

https://pub.dev/packages/easy_notifications

@flutterblogs
#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
Kimdir menga tushuntirib bera oladimi?

"Bir-bir" ochsam OLX dagi ismim va hamma e'lonlarimni (arxivgacha) olib kelib qo'yibdi.

2 ta taxmin:

1-si Oʻzbekiston "OLX Group" qulaganda (yoki doʻppi tor kelganda) oʻzlariga bekap option qilgan.

2-si OLX datani "Bir-Bir" ga ochiqchasiga sotgan.

ORG infoda, Linkedinlarda ikkita kompaniyani bir biriga bog'liqligi yoki bir birini nomidan ish qilishi haqida gap soʻz yoʻq.

Qiziq...

@flutterblogs
Flutter Dev | Uzbekistan 🇺🇿
Photo
Mavjud "fichani" bug qilib ko'rsatishmoqda :)

(Kimdir yangi raqam olsa, raqam foydalanuvchisini eski OLX user e'lonlari keb chiqishini xisobga olishmagan chamamda, ishqilib ayollar ishlatgan nomerlarni erkaklar olib qo'yishmasinda 🤭)

Ya'ni xali OLX ga bogʻliqligini tan ham olishganicha yoʻq.
Forwarded from Диджитал в стране UZ
Подрядчики за день до дедлайна: «Дай бог, успеем»
Подрядчики в день дедлайна: «Оказца, не смогли»

Если бы у меня был в Узбекистане ещё один Телеграм-канал, я бы назвала его «Дай бог» или «Оказца».
Сан-Францисколик айтишник брат камбағалликдан шикоят қипти

Сан-Францискода яшовчи ва йилига 340 минг долдр маош оладиган бир айтишник ўзини камбағалдек ҳис қилиши ҳақида гапириб берди. (Бу бизда ойига 366 млн сўм ойлик дегани🥲)

Так вот, ITчига кўра, унинг ойлик даромади солиқлардан сўнг $18,300 бўлиб, (бизда солиқ кўп деб йиғлайдиганларга салом🤣) лекин унинг “базавий” харажатлари бу пулни деярли батамом сарфлаб юборяптикан. Бундай даромад аксарият одамлар учун орзудек кўринса-да, унинг шикояти ижтимоий тармоқларда кўплаб баҳсларга сабаб бўлди.

Ёш мутахассис ойлигининг катта қисмини уй ижараси учун сарфларкан — бу ойига $9,500. (Ука, ярим йиллик ижара пулинга Тошкентда 2 ҳоналик шахсий уй оволасан😇) Сан-Францискода кўчмас мулкининг қимматлиги оддий ҳолат, лекин бундай улкан сумма кўпчилик учун ҳануз ҳайратли кўринади. Шу билан бирга, у ўзининг замонавий кибертрак автомобили учун лизингга ойига $1,368 тўлайди. (Бизда Кибртракни миллиардерлар опкелолади холос кибрга😁) Айтишник соғлом турмуш тарзига амал қилиб яшаркан, соғлом овқатланиш эса бемазалигидан ташқари қиммат ҳам бўлади. У салат етказиб беришлари учун ойига $1,680 сарфларкан.

Шунингдек, йигит ҳар ой $2,380ни ресторанлардаги учрашувларга сарфлайди. Сан-Францискодек шаҳарда романтик кечалар қиммат туриши мумкин, лекин бу кўрсаткич ҳам бошқалар учун орзу. Унинг ҳордиқ чиқариш ва кўнгилочар машғулотлар учун ажратган харажатлари ҳам ажабланарли даражада юқори: чанғи учишга сарфланадиган пул $2,650ни ташкил этади, маданий ва кўнгилочар тадбирлар эса яна $1,802ни талаб қилади. Унинг кийим-кечак ва бошқа маиший хизматларга сарфлайдиган $200 пули ҳам умумий харажатларга қўшилади. (Нега оз? Чунки айтишник бутун умр устида битта футболкани чиритиши мумкин😁)

Шикоят қилувчи ўзини “ижтимоий босим” қурбони деб ҳисоблайди: Сан-Франциско каби инновацион марказларда юқори ҳаёт стандартига мос келмаслик руҳий босимга олиб келади. Лекин унинг “базавий” харажатлари кўпчиликка орзу. Бундай вазиятни кўриб, ҳақли савол туғилади: моддий фаровонлик ва ҳаётдан қониқиш бир-бири билан қанчалик боғлиқ?

🧠@nurbekalimov
Исследование Alif: iPhone vs Android в Узбекистане

Аналитики супераппа Alif изучили различия в поведении владельцев iPhone и Android на основе данных 1,6 млн пользователей (декабрь 2024 года).

Основные выводы:

• Android доминирует:
92% пользователей против 8% на iOS.
• В Ташкенте iPhone популярнее (29%), но в регионах Android удерживает >90%. В Сурхандарье разрыв максимальный: Android — 95%, iOS — 5%.

Средний чек у владельцев iPhone выше почти по всем категориям:

• Переводы: iOS — 6,9 млн сум, Android — 2,9 млн сум.
• Мобильная связь: iOS — 112 тыс сум, Android — 89 тыс сум.
• Авиабилеты: iOS — 7 млн сум, Android — 4 млн сум.

• Владельцы iPhone чаще выбирают международные рейсы (Ташкент — Абу-Даби), тогда как Android — Ташкент — Москва.

• Самый популярный Android-смартфон: Xiaomi Redmi 9A, iOS — iPhone 15 Pro Max.

Портрет пользователя:

• Возраст:
iPhone чаще используют молодые до 24 лет (38%), Android — старшие группы, 93% пользователей старше 35 лет.
Пол: Мужчины доминируют на обеих платформах (70% на iOS, 62% на Android).

Покупки:

• Владельцы обеих систем чаще покупают Xiaomi Redmi Note 13 Pro на Alif Shop.

В целом, Android остается массовой платформой, а пользователи iOS демонстрируют более высокую платежеспособность.

Наш сайт👉https://u-fintech.uz
ТГ канал👉
https://t.me/uzbekfintech
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
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
📱 Можно ли теперь на Windows собирать iOS приложения ?

После выпуска swift-build от Apple этот вопрос повис в воздухе

🔢 На официальном сайте Swift появилась статья посвященная выходу в опенсорс их билд-системы с Roadmap'ом проекта

Но самое главное, там есть такой топик:
Репозиторий с открытым исходным кодом также поддерживает работу с Linux и Windows.


А среди pull-request'ов есть Windows Build Fixes от стороннего разработчика

🤯 Я сам в это не верю но похоже теперь не обязательно покупать Mac для разработки под iOS
Channel name was changed to «Flutter Dev | Uzbekistan 🇺🇿»
Flutter Dev | Uzbekistan 🇺🇿
Channel photo updated
Eski manzilimiz rezervga olindi: @flutterblogs

Endi biz @flutterdevuz 🧑‍💻 miz!

Guruhimiz: @dartdevuz 🧑‍💻

Hali yaxshi logotip topmadim, ungacha shu "placeholder"

🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
2🆒1
Internetda bir entuziast Swiftda Flutter kabi UI framework yozibdi.

Nomi: ShaftUI

Ha, u aynan Flutter, faqat "Dart" o'rniga, "Swift".

Kod namunasi:

@Observable class Counter {
var count = 0
}

let counter = Counter()

class CounterView: StatelessWidget {
func build(context: any BuildContext) -> any Widget {
Column {
Text("Count: \(counter.count)")

Button {
counter.count += 1
} child: {
Text("Increment")
}
}
}
}

Batafsil: https://medium.com/@xty/shaft-a-new-cross-platform-ui-framework-for-demanding-workloads-and-developer-ergonomics-9bc1ea2fba35

GitHub: https://github.com/ShaftUI/Shaft

@flutterdevuz
👍73
Psevdo Tasodifiylik: Haqiqiy Tasodifiylikdan Farqi va Dart Tilida Ishlatilishi

Kompyuterlarda tasodifiy sonlarni yaratish zarurati ko‘plab sohalarda uchraydi. O‘yinlar, shifrlash tizimlari, statistik modellashtirish va simulyatsiyalar tasodifiy sonlarga asoslanadi. Ammo, ko‘pchilik bilmagan haqiqat shuki, kompyuterlar haqiqiy tasodifiy sonlarni hosil qila olmaydi. Ular faqat psevdo tasodifiy sonlar (PRNG - Pseudo-Random Number Generator) yaratadi. Ushbu maqolada psevdo tasodifiylikning ishlash tamoyillari va Dart dasturlash tilida tasodifiy sonlarni qanday yaratish mumkinligi haqida batafsil tushuntiramiz.

---

🔰 1. Haqiqiy tasodifiylik va psevdo tasodifiylik farqi

Haqiqiy tasodifiylik tabiat hodisalariga asoslangan bo‘lib, oldindan bashorat qilib bo‘lmaydigan natijalarga ega. Masalan:

❇️ Radioaktiv parchalanish – Atom yadrolarining tabiiy parchalanishi

❇️ Termal shovqin – Elektron komponentlardagi tasodifiy termal harakatlar

❇️ Atmosfera shovqini – Tabiiy elektromagnit signallar


Bunday manbalar haqiqiy tasodifiy son generatorlari (TRNG - True Random Number Generator) uchun ishlatiladi.

Aksincha, psevdo tasodifiy son generatorlari (PRNG) kompyuter algoritmlariga asoslanib ishlaydi va oldindan hisoblab chiqiladigan natijalarni qaytaradi. Bu deterministik jarayon bo‘lib, agar bir xil boshlang‘ich qiymat (seed) ishlatilsa, natija ham bir xil bo‘ladi.

---

🔰 2. Dart dasturlash tilida tasodifiy sonlar yaratish

Dart tilida tasodifiy sonlarni yaratish uchun dart:math kutubxonasidagi Random sinfi ishlatiladi.

2.1. Oddiy psevdo tasodifiy sonlar

Quyidagi kod Random sinfi yordamida 0 dan 99 gacha tasodifiy butun son, 0.0 dan 1.0 gacha tasodifiy o‘nlik son va true/false qiymatlarini hosil qiladi:

import 'dart:math';

void main() {
var random = Random(); // Random generator yaratish

print(random.nextInt(100)); // 0 dan 99 gacha tasodifiy son
print(random.nextDouble()); // 0.0 dan 1.0 gacha tasodifiy son
print(random.nextBool()); // true yoki false
}

Bu kod har safar ishga tushirilganda turli natijalar hosil qiladi, chunki Random avtomatik ravishda tizim vaqtiga asoslangan seed ishlatadi.


---

2.2. Seed bilan bir xil natijani olish

Agar biz seed ni qo‘lda belgilasak, har safar bir xil natijalar hosil bo‘ladi:

import 'dart:math';

void main() {
var random1 = Random(42); // Seed 42 bilan generator yaratamiz
var random2 = Random(42); // Xuddi shu seed bilan yana bitta yaratamiz

print(random1.nextInt(100)); // 86
print(random1.nextInt(100)); // 3
print(random2.nextInt(100)); // 86 (Xuddi shunday natija!)
print(random2.nextInt(100)); // 3 (Xuddi shunday natija!)
}

Ko‘rib turganingizdek, bir xil seed ishlatilganda, har safar bir xil tasodifiy sonlar qayta hosil qilinadi. Bu psevdo tasodifiylikning yaqqol belgisi.


---

2.3. Haqiqiy tasodifiylikka yaqinroq natijalar

Agar biz kriptografik xavfsiz random generator ishlatmoqchi bo‘lsak, dart:crypto kutubxonasidagi Random.secure() dan foydalanishimiz mumkin:

import 'dart:math';
import 'dart:crypto';

void main() {
var secureRandom = Random.secure();
print(secureRandom.nextInt(100)); // Haqiqiy tasodifiylikka yaqinroq natija
}

Random.secure() odatiy Random sinfiga qaraganda ancha kuchli bo‘lib, u kripto xavfsiz tasodifiy sonlar hosil qiladi.


---

🔰 3. Psevdo tasodifiylik qayerda ishlatiladi?

Psevdo tasodifiylik real hayotda ko‘plab sohalarda qo‘llaniladi:

Dart tilida Random sinfi ko‘pchilik holatlar uchun yetarli bo‘lsa ham, shifrlash va xavfsizlik talab qiladigan vaziyatlarda Random.secure() ishlatilishi tavsiya etiladi.


---

🔰 4. Psevdo tasodifiylikning cheklovlari

Psevdo tasodifiy generatorlar haqiqatdan ham tasodifiy emas, chunki:

1. Ularni bashorat qilish mumkin – Agar generatorning dastlabki seed qiymati ma'lum bo‘lsa, keyingi natijalar oldindan hisoblab chiqilishi mumkin.


2. Ular vaqt o‘tishi bilan takrorlanadi – PRNG-larning ko‘pchiligi bir muddatdan so‘ng o‘zining avvalgi holatiga qaytadi.