Django darslari (Mukhammad irmatov)
СтатистикаKanalda python, django va backendga aloqador mavzularda postlar bo’ladi. Author: Software Engineer Aloqa uchun: @mukhammad_irmatov Youtube sahifa: https://www.youtube.com/channel/UCo-bKPTGuDtjJf9JzjvtgNw/featured
- Последний пост
- 28 июн.
- Последнее чтение
- 14 авг.
- Постов за неделю
- 0
- Всего постов
- 21
- Тип
- открытый
- Язык
- und
- Категория
- Технологии
- В каталоге с
- 14 авг.
- 1/24сутки в ленте
- —
- 1/48двое суток
- —
- 1/72трое суток
- —
Оценка по просмотрам недавних постов: пост набирает почти всё за первые сутки.
Посты
Oldinlari startup qilish uchun ancha ter to‘kish kerak edi: haqiqiy muammoni topish, bozorni o‘rganish, tuzukroq jamoa yig‘ish va birinchi mijozlarni topish. Hozir esa vaziyat butunlay boshqacha: g‘oyani topamiz(buyam ChatGPT bilan), AI ga landing sayt tayyorlatamiz, 2 soatda Claude bilan demo tayyorlab qo’yamiz ammo na bitta foydalanuvchi, na pul to‘laydigan mijoz bor. AI dastur/ilova yasashni juda osonlashtirib yubordi lekin AI biznesni qurib berolmaydi.Oldin 10 ta g‘oyadan bittasi mahsulotga aylanardi. Hozir 10 ta odamning 9 tasida mahsulot bor, lekin uni ishlatadigan odam yo‘q. Eng qizig‘i, hamma “founder”, hamma “CEO”, hamma “stealth mode”da. Faqat mijozlar hamon bu startuplar borligidan bexabar. AI kod yozib beradi, dizayn chizadi, nom topadi, hatto investor oldida nima deyishni ham yozib beradi. Lekin odamni sizning mahsulotingiz uchun pul to‘lashga majbur qila olmaydi. Shuning uchun bugungi startup bozoridagi eng katta muammo mahsulot yaratish emas. Keraksiz mahsulotlar juda tez yaratilayotganidir. AI Startuperlar sonini ko’paytirgani rost, afsuski real muammolarni hal qiladigan startuplar soni hali unchalik ko’p emas
Futbolcha mantiq IT’da bo‘lganda: loyiha ishlashi shart emas, muhimi eng zo‘r texnologiyalarda yozilgani, deyilardi.
Mana buni yangilik desa bo’ladi Vanihoyat python 3.14 versiyasida GIL ni olib tashladi. Endi CPU bound tasklarda parallelismni his qilib ko’rishinglar mumkin faqat race conditionlardan ehtiyot bo’lasiz )
🖥 Pentium 3 vs elektrokar “Python Full Stack” kursimiz eksperti Muhammad Ermatovning hayoti shunaqa kontrastlardan iborat. Ba’zan ofisda, ba’zan tog‘ cho‘qqisida bo‘ladi. Lekin orada vaqt topib izohlaringizni o‘qishi mumkin 👇 #yuzmayuz @mohirdev
🖥 Pentium 3 vs elektrokar “Python Full Stack” kursimiz eksperti Muhammad Ermatovning hayoti shunaqa kontrastlardan iborat. Ba’zan ofisda, ba’zan tog‘ cho‘qqisida bo‘ladi. Lekin orada vaqt topib izohlaringizni o‘qishi mumkin 👇 #yuzmayuz @mohirdev
Oldin barcha loyihalarimda UUID ni ishlatar edim, yaqin 2-3 oydan beri ULID ni ishlatyapman. UUID dan ko’ra ancha qulay, o’qishga ham oson. ULID timestamp orqali yaratilgani uchun indekslar tartibli saqlanadi - insert/read ham UUID dan ko’ra tezroq. Oramizda ULID ni ishlatadiganlar bormi, nima uchun ULID ga o'tgansiz?
https://t.me/birfoizbilim/278
https://t.me/birfoizbilim/278
Oramizda Kwatt ilovasida ishlagan dasturchilar bo’lsa, iltimos Notification tizimiga qarab qo’yinglar, deyarli har doim 5-6 talab notification jo’natadi. Retry tizimi yaxshi ishlamayotgan bo’lishi, FCM tokenlarni saqlashda muammo bo’lishi ham mumkin. Yoki shunchaki, bildirishnoma yuborayotgan admin bir marta yuborish o’rniga knopkani 5-6 martalab bosyapti )
Overengineering — qanday oldini olish mumkin? Xo‘sh, overengineering to‘g‘ri ish emasligi haqida yozdik, lekin real loyihalarda undan qanday qochish mumkin? Muhimi – muammoga qarab emas, balki ehtiyojga qarab kod yozish kerak. Ko‘p hollarda, ortiqcha murakkablik dasturchining kelajakda yuzaga kelishi mumkin bo‘lgan muammolarni hozirdan "hal qilib qo’yish“ istagidan kelib chiqadi. Lekin bunday yondashuv amaliyotda 1 tonna keraksiz kod, oylab vaqtni isrof qilish va qo‘llab-quvvatlash qiyin bo‘lgan arxitektura bilan yakunlanadi. Shuning uchun ayni vaqtdagi kerakli qismlar va amaliy muammolarni hal qilishga bor e’tiborni qaratish kerak. Minimal ishlaydigan yechim yaratib, keyinchalik uni yaxshilash imkoniyatini saqlab qolish har doim eng yaxshi variant. Endi esa, overengineeringdan qanday qochish mumkin, ko‘rib chiqamiz: 1️⃣ Minimal yechimdan boshlang Loyiha uchun eng oddiy va aniq ishlaydigan yechimni tanlang. Masalan, yangi ma’lumotlar sinxronizatsiya tizimi kerakmi? Avval oddiy cron job yoki Celery task bilan hal qilib ko‘ring. Agar haqiqatan muammo yuzaga kelsa va real-time sinxronizatsiya zarur bo‘lsa, shundan keyin Redis Pub/Sub, RabbitMQ yoki Kafka kabi murakkabroq yechimlarni o‘ylab ko‘ring. 2️⃣ Haqiqiy muammoga asoslaning Ko‘p hollarda dasturchilar kelajakda bo‘lishi mumkin bo‘lgan muammolarni oldindan hal qilishga harakat qilib, hozir umuman kerak bo‘lmagan murakkab funksiya va metodlarni qo‘shishadi. Kod yozishdan oldin o‘zimizga savol berishimiz kerak: Bu muammo hozir mavjudmi? Agar yo‘q bo‘lsa, balki hozircha bu yechim kerak emasdir. 3️⃣ KISS va YAGNI prinsiplari Django yoki boshqa backend dasturlarini yozishda KISS (Keep It Simple, Stupid) va YAGNI (You Ain’t Gonna Need It) prinsiplariga amal qilish kerak. Ortib ketgan abstraktsiyalar, keraksiz servislar yoki mikroxizmatlar loyihani faqat murakkablashtiradi va qo‘llab-quvvatlashni qiyinlashtiradi. Shuning uchun, hali yo’q bo’lgan muammoni hal qilishga urinmang. 4️⃣ Refaktoring va optimallashtirishni bosqichma-bosqich bajaring Dastlab ishlaydigan, tushunarli va minimal kod yozing, keyin uni yaxshilash haqida o‘ylang. Keraksiz abstraktsiyalar qo‘shishdan oldin, kodni o‘qilishi va qo‘llab-quvvatlanishi oson bo‘lishiga e’tibor bering. Logikani to‘g‘ri modularizatsiya qilib, view, service layer yoki signal kabi qatlamlarni faqat zarur bo‘lsa ajrating. Shu tariqa kod nafaqat ishlaydi, balki keyinchalik kengaytirish va qo‘llab-quvvatlash ham oson bo‘ladi. 5️⃣ Soddalikni ustuvor qiling Ko‘p hollarda oddiy Django caching (Redis yoki memcached) yetarli bo‘ladi, lekin ba’zilar "scale bo‘lishi mumkin" degan maqsadda Kafka yoki RabbitMQ kabi murakkab queue tizimlarini erta bosqichda qo‘shishadi. Aslida esa, avval oddiy yechim bilan ishlatib ko‘rib, haqiqiy yuk ortganda optimizatsiya qilish yaxshiroq. Har qanday murakkab texnologiya — qo‘shimcha texnik qarz va qo‘llab-quvvatlash boshog’rigi degani. Xulosa: Overengineering — bu resurslarni, vaqtni va loyihani boshqarishni murakkablashtiradigan muammo. Dastlabki yechimni soddalashtirish, real ehtiyojlarga e’tibor berish va refaktoringni bosqichma-bosqich qilish — bu muammoni oldini olishning eng yaxshi usuli.
Overengineering — Katta muammolarga kichik yechim, kichik muammolarga katta yechim Dasturchilar loyiha boshlaganda yoki kod yozishda mukammallikni maqsad qilishadi. Har bir funksiya maksimal darajada reusable(qayta ishlatib bo’ladigan) bo‘lishi kerak, har bir mikroservis mustaqil ishlashi kerak, har bir metod kengaytiriladigan bo‘lishi kerak... Va oxir-oqibat, oddiy muammoni hal qilish uchun murakkab, boshqarish qiyin va ortiqcha resurs talab qiladigan arxitektura paydo bo‘ladi. Bu – Overengineering (ortiqcha muhandislik). Nega Overengineering muammo? 1️⃣ Tuzilishi qiyin va vaqtni oladi Tanishlaringizdan biri mehmonlar uchun oddiy choy tayyorlashi kerak. Unga bitta choynak va gaz plitasi yetarli. Lekin u "choy eng optimal haroratda damlansin" deb, termometr, suv filtri, avtomatik choy damlovchi apparat, maxsus vaqt o‘lchagich va qayerdandir IoT bilan boshqariladigan elektr choynak olib keladi. Mehmonlar esa choy kelguncha allaqachon uyiga ketib qolishadi. Dasturiy ta’minotda ham shunday: oddiy CRUD API uchun event-driven arxitektura, mikroservislar va Kubernetes klaster kerak emas. Eng kerakli narsani tez va samarali qilish muhim. 2️⃣ Texnik qarz yuki Tasavvur qiling, ofisingizda oddiy bitta eshik bor. Uni ochish uchun oddiy kalit yetarli. Lekin kimdir "bu eshik xavfsiz bo‘lishi kerak" deb, 4 ta qo‘shimcha kod, Face ID, karta skaneri va 2 bosqichli autentifikatsiya qo‘shadi. Boshida bu zo‘r ko‘rinishi mumkin, lekin keyinchalik kalit yo‘qoladi, Face ID ishlamaydi, yangi odamlar kirishi uchun soatlab ruxsat kutishadi va oxir-oqibat eshikni buzib ochishga to‘g‘ri keladi. Dasturda ham shunday: agar boshlang‘ich darajadagi loyiha uchun ortiqcha murakkab arxitektura yaratsangiz, u kelajakda texnik qarzga aylanadi va uni refaktor qilishga majbur bo‘lasiz. 3️⃣ Resurslar ortiqcha sarflanadi Sizga kvartira kerak. Lekin "mukammal yashash joyi bo‘lishi kerak" deb, shahar markazida katta villa qurishni rejalashtirasiz. Kredit olasiz, byurokratiya bilan shug‘ullanasiz, qurilish 5 yil davom etadi... oxirida esa kvartira narxi 2 baravar oshib ketadi va siz hali ham ijara to‘layapsiz. Xuddi shunday, oddiy monolit xizmat qilish mumkin bo‘lgan joyda murakkab mikroservis arxitekturasi, kutilmagan xatolar va ortiqcha operatsion xarajatlar muammoga aylanadi. 4️⃣ Haqiqiy biznes muammolar chetda qoladi Do‘konda oddiy savdo tizimi kerak bo‘lsa, sotuvchi faqat "Sotish" tugmasini bosishi yetarli. Lekin siz "UI zo‘r chiqsin, AI bilan tahlil qilsin, blockchain bilan ma’lumotlar xavfsiz bo‘lsin" deb murakkab tizim qurib qo‘yasiz. Natijada sotuvchi tugmani bosish o‘rniga, 5 daqiqa shaxsiy kabinetga kirib, API ishlashi kutishiga to‘g‘ri keladi. Haqiqiy biznesda foydalanuvchi uchun eng sodda va samarali yechim muhim, ortiqcha murakkablik esa faqat vaqt va pul yo‘qotilishiga sabab bo‘ladi.
Ko‘pchiligimiz Django va Python backend'da "best practices" izlaymiz, lekin aslida, yomon amaliyotlar (anti-patternlar) dan qochish hammasidan ko’ra muhimroq. Masalan, CI pipeline umuman bo‘lmasligi, yoki aksincha, 30+ daqiqada test o‘tishi, PR merge qilish uchun butun jamoaning approve berishini kutish — bular jamoaning tezligini pasaytiradi. Gitflow branch strategiyasi esa Django monolit yoki microservice ishlatilayotgan loyihalarda ko‘p hollarda ortiqcha murakkablik olib keladi. Kod yozishda ham ko‘p xatolar uchraydi. Hamma logikani bitta view ichida yozish – klassik anti-pattern. Django'da 10 ming qatorlik views.py yoki models.py yozish esa loyiha murakkabligini oshirib, kodni tushunib bo‘lmas holatga keltiradi. Keraksiz abstraksiya qilish – har doim AbstractBaseClassPatternFactoryReactor kabi classlar yozish, lekin u faqat bitta joyda ishlatilishi – bularning hammasi kodni keraksiz darajada murakkab qiladi. Database bilan ishlashda esa eng katta muammo – Django ORM optimizatsiyasiga e’tibor bermaslik. Ba’zilar har bir request uchun 1000 ta .filter(), .all(), .values() chaqirib, N+1 query muammosini yaratadi. Cache ishlatmaslik – har safar bir xil ma’lumotni qayta-qayta DB’dan olish esa server resurslarini behuda sarflaydi. Har bir mayda o‘zgarish uchun ERD chizish yoki aksincha, katta feature uchun umuman database dizayn qilmaslik ham katta muammolardan biri. Deployment va loggingda ham xatolar ko‘p. Log yozmaslik – production’da muammo chiqqanda hech qanday dalil topilmasligi, yoki aksincha, kerakmas hamma narsani logga yozib, haqiqiy muammoni topishni qiyinlashtirish – backend'ning asosiy muammolaridan biri. Bundan tashqari, frontend va backend deploy qilish uchun 30 daqiqa kutish, yoki har bir deploy’da eski faylni ustiga overwrite qilib, downtime yaratish, keyin esa rollback imkoniyati bo‘lmaganidan pushaymon bo‘lish – deploymentdagi asosiy xatolar. Xulosam shuki, best practice degan narsa yo‘q, lekin yomon amaliyotlar juda ko‘p. Django va Python backend'da keraksiz murakkablik, noto‘g‘ri database optimizatsiyasi va yomon deployment jarayonlari eng katta xatolardan hisoblanadi.
Backendchi Deploymentni Bilishi Kerakmi? Yaqin-yaqingacha backendchi uchun deploymentni bilish shart emas deb o‘ylardim. Chunki oldingi ish joylarimda kamida 2-3 ta DevOps dasturchi bo‘lar edi va bu ishlarni ular bajarardi. Backendchi sifatida kod yozaman, API larni tayyorlayman, qolgani esa DevOps'ning ishi – CI/CD, serverlarni sozlash, security va deployment kabi ishlar ularga tegishli deb hisoblar edim. Bu fikrim 1-1.5 yildan beri teskarisiga o’zgargan. Oxirgi 2-3 kun ichida Digital Ocean serveriga React ilovasini o‘zim deploy qilib ko‘rdim. Oldin faqat backend applicationlarni deploy qilib, frontend deployment bilan umuman shug‘ullanmaganim uchun bu tajriba men uchun qiziq bo‘ldi. Dastlab Docker bilan build qilib, container'ni Digital Ocean Container registry'ga saqladim, keyin serverda uni pull qilib ishga tushirdim. Natijada deployment vaqti 8-10 daqiqagacha cho‘zildi. Bundan samaraliroq usul kerak edi. Keyin React’ni shunchaki github actions yordamida build qilib, tayyor fayllarni /var/www/ katalogiga yuklab, Nginx konfiguratsiyasida root va index ni to‘g‘ri ko‘rsatdim. Natija ajoyib bo‘ldi – deployment vaqti 30-40 soniyagacha tushdi! Biroq bu usulda bitta muammo bor edi: yangi build yuklanayotgan vaqtda eski fayllar ustiga yoziladi va shu orada server ishlamay qolishi mumkin. Zero-downtime qilish uchun CI/CD pipeline yozdim: ✅ Oxirgi 3 ta build saqlanadi – agar yangi buildda xatolik bo‘lsa, avtomatik rollback ishlaydi. ✅ Deployment muvaffaqiyatli o‘tsa, Telegram bot yordamida guruhga bildirishnoma boradi. Agar sizga CI/CD qismi qiziq bo’lsa, bu linkka kirib jarayonni ko’rishingiz mumkin Xulosa: — Backendchi deploymentni bilishi kerak. DevOps mutaxassislaringiz bo‘lsa ham, real hayotda backend dasturchining ham deployment jarayonlarini tushunishi va ba’zan o‘zi bajarishi kerak bo‘lib qoladi — Backend dasturchi har doim professional DevOps darajasida bilimga ega bo‘lishi shart emas, lekin hech bo‘lmasa basic deployment, Docker, CI/CD, server konfiguratsiyasi, loglarni ko‘rish va tahlil qilish kabilarni bilsa, ishi ancha osonlashadi. — Har doim eng samarali usulni izlash kerak. Oddiy statik fayllarni container ichiga joylash o‘rniga, to‘g‘ridan-to‘g‘ri Nginx orqali serve qilish bir necha barobar tezroq ishlaydi. Siz qanday deployment usullaridan foydalanasiz?
O’zbekistonda Python dasturchilarga ish yo’q, amaliyotga ham hech kim olmayapti degan gaplarni eshitib qolaman. O’tgan bir yil ichida, 5 dan ortiq junior dasturchilarga amaliyot o’tash imkoniyatini bergan bo’lsak, deyarli hammasi turli IT kompaniyalarda ishlab yurishibdi. Amaliyot davomida o’zimiz qanday loyihalarda ishlayotgan bo’lsak (pulseev.uz, mockexam.uz, mohirlar.uz, mohirpool), ular ham biz bilan birga o’sha loyihalarda ishlashdi, tajriba orttirishdi. Amaliyotchi olish, ularga mentorlik qilish va ular bilan loyihalarda birga ishlash shaxsiy tashabbus bo’lib, kimgadir ozgina bo’lsa ham dasturchi sifatida o’sish uchun yordam berish xolos. Amaliyotchilardan ba’zi kompaniyalarga o’xshab 2-3 mln so’m amaliyot o’tash xarajatlari uchun deb pul olmaymiz yoki o’zimizdagi taniqli xalqaro kompaniyalarga o’xshab 3-4 mln so’m pul ham berolmaymiz, to’g’ri tushunish kerak. Ularga maosh taklif qiladigan vaqtlarga ham yetamiz, nasib. Har doim amaliyotchi olish e’lonini qo’yganimda, doim kimlardir norozi, nimadirlar deb ichidagi alamlarini chiqarib olgisi keladi. To’g’ri tushunish kerak, bitta amaliyotchiga katta loyiha topshirib, tugattirib olish uyoqda tursin, bir o’ziga loyihalar topshirib qo’yilmaydi, doimo u bilan birga darajasi yuqori dasturchi ishlashi, mentorlik qilish talab qilinadi, busiz iloji yo’q. Odamlar o’ylagani kabi, loyihalarni ularga qildirib olib, ketkazib yubormaymiz. Deyarli hamma amaliyotchilarga, amaliyot tugagach ish taklifi berilgan. O’ylantirayotgan jihati, biz amaliyotchilarga imkoniyat berib xato ish qilyapmizmi, buni to’xtatishimiz kerakmi shunda?
Help me help you Dasturchilikda, va umuman boshqa sohalarda ham, tez o‘rganishning eng yaxshi usullaridan biri bu savollar so‘rash orqali. Ishxonadagi dasturchilardan, chat jipidi akadan, claude opadan, stockoverflowdan, mendan va boshqalardan savol so‘rash orqali tez va to‘g‘ri yo‘nalishda harakatlanish mumkin. Shaxsan o‘zim va men bilgan ko‘pchilik yordam berishni chin dildan xohlaydi. Juda xursand ham bo‘ladi, agar yordam bera olsa. Lekin hech kim, qaytaraman hech kim, sizning ishingizni siz uchun qilib berishni xohlamaydi. - Menga rezyume yozib bera olasizmi? - Mana-bu ishni qila olmayapman, yordam bera olasizmi? - Shu loyihaning arxitekturasini chizib bera olasizmi? kabi savollar ochiqsachiga odamga yoqmaydi. Sababi bu va shunga o‘xshash savollarga to‘g‘ri va to‘liq javob berish uchun ancha bosh qotirish va vaqt sarflash talab qilinadi. Undan ham yomoni - savol berayotgan odam shu ishni qilishga yoki savolni to‘g‘ri yozishga erinayotganida. Men ishda biror kishidan savol so‘rasam, odatda taxminan quyidagicha shaklda ifodalayman: Salom Alexandro. Men loyihaning shu qismida bir muammoga duch kelyapman. Sen shu qismda juda ko‘p ishlar qilgan ekansan. Bilsang va yordam bera olsang zo‘r bo‘lar edi. Lekin agar boshqa odam yaxshiroq biladi deb o‘ylasang, iltimos o‘sha odamga meni jo‘natvor. Savolim: ‘Shu ishni qilmoqchiman. Uning uchun 3 ta yo‘ldan ketishim mumkin. 1 chisi bunaqa, 2 chisi shunaqa, 3 chisi esa munaqa. Menimcha 2 chi yo‘l eng zo‘ri, chunki shunday qilsam bunday bo‘ladi. Uni qilish mana bu yerda shunday o‘zgarish qilmoqchiman, lekin mana bunday xato chiqyapti. Bilasanmi, qayerda xato qilayotgan bo‘lishim mumkin?’ Mening maqsadim Alexandroga iloji boricha tez va to‘g‘ri javob bera olishi uchun sharoit yaratib berish. Butun contextni tushuntirib berish. Umuman olganda birovdan nimanidir xohlasangiz, sizga u o‘sha narsani berishi uchun ishini osonlashtirishingiz kerak. Yana bitta misol. Odatda ishxonalarda promotion olishingiz uchun sizning manageringiz siz haqingizda report yozishi kerak va boshliqlarga siz promotionga arzishingizni isbotlab berishi kerak. Bu oson ish emas. Manageringiz siz qilgan ishlarni eslashi, aniq misollar berishi talab qilinadi. Siz manageringizga shu reportni yozib berish orqali katta yordam qilishingiz va promotion jarayonini ancha tezlashtirib berishingiz mumkin. Siz o‘zingiz nima ishlar qilganingizni manageringizdan yaxshiroq bilasiz har holda. @jakhonrakhmonov
A friend of mine is hiring a Chief Operating Officer (COO) for their AI-based micro SaaS startup. It’s a rare chance to lead and scale a cutting-edge company – with equity included! 🤩 Key requirements: ✅ Equity is shared! ✅ Full-time commitment ✅ Fluent…
A friend of mine is hiring a Chief Operating Officer (COO) for their AI-based micro SaaS startup. It’s a rare chance to lead and scale a cutting-edge company – with equity included! 🤩 Key requirements: ✅ Equity is shared! ✅ Full-time commitment ✅ Fluent in English & Russian ✅ Strong sales and leadership skills ✅ Experience with AI and SaaS is a big plus Saas - Software as a Service. If you or someone you know is interested, DM me for more details! 🚀 DM 👉 @muhammadali_salohiddinov
видео или голосовое, без подписи
видео или голосовое, без подписи
видео или голосовое, без подписи