Django darslari (Mukhammad irmatov) @djangodarslari Channel on Telegram

Django darslari (Mukhammad irmatov)

@djangodarslari


Kanalda python, django va backendga aloqador mavzularda postlar bo’ladi.
Author: Software Engineer at SageGrader(Australia)
Aloqa uchun: @mukhammad_irmatov

Youtube sahifa:
https://www.youtube.com/channel/UCo-bKPTGuDtjJf9JzjvtgNw/featured

Django darslari (Mukhammad irmatov) (Uzbek)

Salom, sevgan do'stlar! Sizni yangi Telegram kanalimizga taklif qilamiz - "Django darslari (Mukhammad irmatov)". Bu kanalda sizga python, django va backendga aloqador mavzularda foydali postlar tajriba va bilim olish imkoniyatini beradi. Mukhammad Irmatov bu kanalning muallifi va uning postlari bilimli va amaliy bo'ladi, chunki u Avstraliyada SageGrader kompaniyasida dasturchi sifatida faoliyat ko'rsatadi. Barcha savollaringiz, takliflaringiz va fikrlaringiz uchun @mukhammad_irmatov bilan aloqaga chiqishingiz mumkin. Ayni paytda, Mukhammad Irmatovning YouTube sahifasiga o'tib, qiziqarli va foydali videolarini ko'rish imkoniyatiga ega bo'lasiz. Ushbu kanal orqali dasturlash sohasida yangi bilim va mahoratga erishishingiz mumkin. Umid qilamiz, sizga foydali va qiziqarli ma'lumotlar taqdim etishimiz siz uchun foydali bo'ladi. Telegram kanalimizga obuna bo'ling va bilimingizni yanada oshiring!

Django darslari (Mukhammad irmatov)

30 Dec, 17:45


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?

Django darslari (Mukhammad irmatov)

16 Dec, 09:39


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

Django darslari (Mukhammad irmatov)

17 Nov, 08:43


Bir do’stimiz AI asosidagi mikro SaaS startupiga Bosh operatsion direktor (COO) qidiryapti. Bu juda ham zo'r imkoniyat.🔥 Eng muhimi ulush (equity) taqdim etiladi! 🤩

Talablar:
Ulush (equity) taqsimlanadi!
To'liq ish vaqti
Ingliz va rus tillarini yaxshi bilish
Kuchli sotuv va rahbarlik ko'nikmalari
AI va SaaS sohalarida tajriba afzallik hisoblanadi

Saas - Software as a Service.

Agar siz yoki tanishlaringiz qiziqsa, DM orqali murojaat qiling! 🚀

DM 👉 @muhammadali_salohiddinov

Django darslari (Mukhammad irmatov)

17 Nov, 08:42


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

Django darslari (Mukhammad irmatov)

27 Aug, 15:04


Yakshanba kuni Piskom tog’ining yonbag’rida joylashgan Ispay qishlog’i va sharsharasiga qilgan sayohatimizdan ba’zi suratlarni sizlar bilan bo’lishmoqchiman.

Dasturchi sifatida eng ko’p vaqtimizni kompyuter qarshisida o’tkazamiz, bu o’z navbatida sog’ligimizga salbiy ta’sir qilishi mumkin. Piyoda sayr qilish, ayniqsa, tog’li hududlarga sayohat qilish ham ruhiy, ham jismoniy holatni yaxshilaydi.

Faqat kod yozish va buglarni to’g’irlash bilan band bo’lgan miyamiz toza havo da tiniqlashadi, charchoqlar chiqib ketadi, ko’z ham kompyuter ekranidan uzoqlashib, ancha dam oladi.

Sayohat qiling, salomat bo’ling 🌲

Django darslari (Mukhammad irmatov)

18 Aug, 11:06


Connection Pooling Pgbouncer nima?

Assalamu Aleykum azizlar!. Men Mukhammad Irmatov postlaridan kelib chiqib Pgbouncer haqida qisqacha ma'lumot berib o'tmoqchi edim.

Yuqoridagi postda aytib o'tilganidak Postrgesql har bir kiruvchi client request uchun connection yaratadi. Har bir connection uchun serverdan joy ajratiladi. Qarabsizki 100ta request va 100ta connection, bundan kelib chiqadiki resource to'ladi va PostgreSQL resourlar to'lguncha request larga connection ochib klientlarga javob bera oladi. Bu model Client-Server arxitekturasi deb nomlanadi, albatta sekin, effektivniy hisoblanmaydi. Shuning uchun Connection pool bizga yordam beradi. Bunga bitta misol PostgreSQL uchun albatta PgBouncer.

Pgbouncer bu Connection pool ga javob beruvchi, klient va DB o'rtasida turuvchi middleware protses hisoblanadi. Mijoz Pgbouncerga ulanadi va bir vaqtda pgbouncer DBga ulanadi. Pgbouncer o'ziga katta miqdorda connection so'rovlarni qabul qiladi va pooling yordamida bazaga bo'lgan haqiqiy connectionlarni kamaytiradi. Bunda http requestlarimiz tez ishlashni ham boshlaydi. Sababi har bir kiruvchi http request uchun yangi haqiqy connection ochilmaydi va yopilmaydi, CPU va Memorydan joy ajratilmaydi, bundan kelib chiqadiki baza requestlarni avvalgi holatiga qaraganda tezroq handling qiladi.

PgBouncerni 3 turdagi pool_mode mavjud.
Bular:
1. Session - mijoz sessiyani uzgandan so'ng connection poolga qaytarib beriladi.
2. Transaction - har bir tugatilgan transactiondan so'ng connection poolga qaytadi.
3. Statement - har bir sql so'rovdan so'ng connection poolga qaytadi.

Connection poolga qaytadi va boshqa kirib keluvchi requestlarga javob berishi mumkun bo'ladi. Ko'pgina hollarda Tranction pool_mode ishlatilish tavsiya beriladi.

Django darslari (Mukhammad irmatov)

17 Aug, 18:03


Bu odam nima xohlayotganini asl maqsadi nima ekanligini kimdir tushuntirib bera oladimi?

Yuborgan bot linkini hali start qilmadim, qilaveraymi 😅

P.S. Chat egasini ismi ko’rinmasin deb uchirib qo’ydim

Django darslari (Mukhammad irmatov)

16 Aug, 16:16


Pyramid code example

Pyramid freymvorkida GET va POST metodlarini ishlatishga misol

Django darslari (Mukhammad irmatov)

16 Aug, 16:12


Pyramid nomli Python frameworki bor, O’zbekistonda unchalik ham mashhurlikka erisholmagan bo’lsada, aslida ancha qulay va ko’p imkoniyatli freymvork hisoblanadi.

Django battery-included (hammasi ichida) freymvork bo’lsa, Pyramid minimalistik freymvork hisoblanadi. Kerakli komponentlar ehtiyojga qarab tanlanadi. Django shunday freymvorkki siz unga moslashishingiz kerak, Pyramid esa sizga moslashadi.

Misol uchun django da ma’lumotlar bazasi bilan ishlash uchun o’zini tayyor ORM bilan ishlashga majbursiz (istisnolar bor), Pyramidda istasangiz SqlAlchemy, istasangiz Pony ORM yoki boshqasini ishlataverasiz.

Python uchun veb freymvorklar juda ko’p, hammasini tagida bitta maqsad yotadi, u ham bo’lsa dasturchiga qulaylik yaratish. Barcha freymvorklarda requestlarni boshqarish, URL routing, database bilan ishlash(CRUD) kabi asosiy vazifalarni o’z ichiga olgan.

Siz ham xuddi shu vazifalarni o’z ichiga olgan freymvorkni o’zingiz Python yordamida yozishingiz mumkin. Mustaqil freymvork yozmoqchi bo’lsangiz Jakhongir Rakhmonov ni “Pythonda veb framework yozish” kursini tavsiya qilaman.

Django darslari (Mukhammad irmatov)

15 Aug, 03:28


Bugun olx.uz da tozalash(uborka) kunimi deyman, sayti ertalabdan ishlamayapti. CloudFront ni noto’g’ri sozlab qo’yganga o’xshaydi

P.S. Oxirgi vaqtlar olx da juda ko’p shunga o’xshash muammolar bo’lyapti.
Bu xatolik nimadan bo’lishi mumkin?

Django darslari (Mukhammad irmatov)

13 Aug, 07:03


Connection pooling nima?

Connection Pooling ma’lumotlar bazasiga ulanishlarni(connections) samarali boshqarish uchun ishlatiladi. Database ga yuborilgan har bir so’rov ma’lumotlar bazasida yangi connection ni ochadi va so’rov ga javob berilgach, connection yana yopiladi. Bu jarayon uzluksiz davom etadi, bu esa jarayonni sekinlashishiga olib keladi.

Connection pool esa ma’lumot bazasi bilan bog’langan va so’rov qabul qilishga tayyor bir nechta connectionlarni saqlab turadi. Ma’lumotlar bazasiga so’rov bo’lganda, yangi connection ochmasdan, tayyor connection orqali so’rovlarga javob beradi. Database ga so’rov yakunlangach, tayyor connection yana eski holatda ishlatishga tayyor holatga qaytadi.

Django 5 da yangi qo’shilgan connection pooling va eski versiyalardagi conn_max_age connection poolingni eng oddiy ko’rinishi hisoblanadi. Production uchun app va database orasida pgbouncer ni sozlash tavsiya qilinadi

Django darslari (Mukhammad irmatov)

12 Aug, 19:39


Django 5 versiyasiga vanihoyat connection pool qo’shilibdi.

Django da DB bilan amallar tugagandan keyin, connection darhol yopilar edi. Agar DB ga yangi so’rov yubormoqchi bo’lsa, yana qaytadan connection o’rnatish kerak bo’ladi. Bu esa ko’p bo’lmasada vaqt yo’qotilishiga olib keladi.

Eski versiyalarda connection pool ni conn_max_age orqali qisman amalga oshirsa bo’lar edi, aslida bu connection pool ni ta’minlamaydi, ochilgan connection ni ma’lum bir vaqt yopmay ushlab turadi. Bu usulni yomon tarafi shundaki, agar to’g’ri boshqarilmasa, va vaqtida connectionlar yopilmasa connection pool to’lib qolishiga olib keladi va bu esa DB bottlenack ga sabab bo’ladi.

Yuqoridagi barcha muammolarni django 5 versiyasida yangi qo’shilgan connection pool bilan hal qilsa bo’ladi

Django darslari (Mukhammad irmatov)

17 Jun, 15:58


Qiziq savol tug’ildi, bu talabga mos ekanligini qanday aniqlab oladi, ya’ni bu “qobiliyat” ni aniqlash uchun qandaydir kriteria (o’lchov usuli) bormi?

Siz nima deb o’ylaysiz, bunday kompaniyaga ishga kirgan maqulmi yoki aksinchami?

Django darslari (Mukhammad irmatov)

15 Jun, 19:18


Xakerchalar(yoki botlar) mockexam.uz platformasini php da qilingan deb o’ylayapti shekilli. Qandaydir zaif joyini qidiryapti anchadan beri, SQL injection ham, DDOS ham qilib ko’rishdi, hozircha security o’z joyida.

Dastur xavfsizligini ta’minlashda standartlarga amal qilinsa + Cloudflare yoqib qo’yilsa, shuni o’zi 99% hujumlarni to’xtatib qoladi.

Django darslari (Mukhammad irmatov)

24 Apr, 16:29


ChatGPT ga rahmat, 70-80 % rezyumelar ancha yaxshilanib, to’g’ri formatga tushib qolibdi.

Faqat birgina iltimos rezyumeni wordda va hh.uz generate qilib bergan shablon da qilmanglar )

Django darslari (Mukhammad irmatov)

15 Apr, 09:38


Bu savolga o’zimda ham 100% ishlaydigan aniq yechim yo’q.
Agar “sizga mana 1 yil, va istalgancha moliyaviy resurs sarflab, shu proyektni qiling”, deganda, ishni avvalo kuchli komanda yig’ishdan boshlagan bo’lardim.

Komandaga eng kamida 1 ta Database engineer, 1 ta DevOps engineer, backend dasturchi va ishni ko’zini biladigan frontend dasturchi olinar edi.

Asosiy texnologiya sifatida FastAPI ni sinab ko’rgan bo’lardim. Boshlanishiga microservice emas, monolit arxitekturani tanlardim. Database uchun relation database masalan Postgresql va connection poolni yaxshilash uchun Pgbouncer. Data partitioning, sharding va scaling kabi database tasklarni barchasini Database engineerga yuklardim.

Caching - backend uchun Redis, front uchun (CDN) Cloudflare maqul variant. Load balancing uchun Nginx va HAProxyni kombinatsiyasi ishlatsa bo’ladi. Load balancerni monolit arxitektura bo’lsada ishlatsa bo’ladi, server ichidagi instance larga traffikni baribir taqsimlash kerak.

Message queue uchun Redis emas, aynan RabbitMQ ni ishlatgan bo’lardim, chunki RabbitMQ aynan queue uchun native tool hisoblanadi. Monitor qilish uchun Prometheus va Grafana kombinatsiyasi va albatta error logs uchun Sentry.

Serverni konteynerlash uchun Docker va Kubernetes kombinatsiyasi va Cloud server esa AWS eng maquli. AWS da ham barchasi uchun alohida servis olinadi(Postgres, Redis Cluster vahokazo) va auto scale funksiyasi yoqiladi.

CI/CD pipeline github yoki gitlab emas, Jenkins orqali amalga oshiriladi. Secure bo’lishi uchun Rate limiting application levelda yoqiladi. Xavfsizlik uchun qo’shimcha ravishda CloudFlare va AWS sozlamalari ham to’g’irlanadi.