TGViewer
Channel Public Channel
Engineering Notes

Engineering Notes

@boboshersnotes

Kanalda asosan backend engineeringga oid postlar yozib boriladi.

Ba'zi postlarda xatoliklar bor.
Postlar foydali bo’lgan bo’lsa adminni duo qilib qo’ying. Rahmat.

Contact: @Bobosher_Musurmonov
LinkedIn: https://www.linkedin.com/in/bobosher-musurmonov
Subscribers
2.61K
Photos
162
Videos
2
Links
229

Showing posts older than #41 · Back to latest

Older Posts 20 shown
Post #40 325

Forwarded from Bobosher Musurmonov

Avval to'la algoritmni tuzib oling:
n ta sahifali hujjat uchun(misol uchun, n=100):

1-listda albatta n (bizda 100) va 1- sahifalar bo'ladi.
2-listdan boshlab har bir listda katta sahifa raqami 2 ga kamayib, kichigi 2 ga oshaveradi, yig'indisi o'zgarmaydi.
(n-2) va 3. Endi shuni rekursiya orqali yana keyingi safar (n-4) va 5, narigi safar (n-6) va 7, ... (n/2+2) va (n/2-1) gacha davom etadi.
Ikkinchi taraf esa qolganlari.

Algoritmni to'la tushunish uchun 2 ta narsani bilishingiz muhim:

1. Jarayon rekursiv. Ya'ni deylik, 100 sahifali hujjat uchun tuzilgan ikki guruh ketma-ketlikning har birining birinchi juftligini olib tashlasak, (n-4) sahifali xujjat uchun har bir sahifaga +2 qo'shilgan ketma-ketlik hosil bo'ladi(sababi, endi sahifalash 1 dan emas, 3 dan boshlanayapti). Bu xuddi har safar kitobning tashqi 1 juft varag'ini yirtib tashlashga o'xshaydi.

2. n sahifali hujjatda ixtiyoriy sahifalar juftligining yig'indisi n+1 ga teng.

2+. Tepani qayta o'qib ko'ring.
Post #39 320

Forwarded from Bobosher Musurmonov

Set va frozenset xuddi list va tuple kabi.
Oddiy setdan yagona farqi, frozensetda elementlar immutable, ya'ni o'zgarmas.
Bu orqali ko'plab joylarda qo'llash mumkin, masalan, dictionaryda key kabi ishlatiah mumkin (Xuddi tuple elementlarini ishlata olasiz, list elementlarini esa yo'q kabi).
Post #38 319

Forwarded from Bobosher Musurmonov

Developmentda kuchli ekaningizdan xabarim bor, hurmat qilaman. Ammo competitive programmingni bilmasligingiz ko'rinib turibdi.
Nimanidir qayerda ishlashini bilmasangiz, u foydasiz degani emas. Shunchaki siz uni vazifasini bilmaysiz.
Siz keraksiz degan narsalarga kelsak, unutmang, siz faqat oddiy userdan 1 qadam tepadasiz. Siz foydalanadigan texnologiyalar(Telegram, Python,...) ham kimlardir tomonidan ishlabb chiqilgan. Va aynan o'sha "keraksiz" narsalar yordamida. O'sha texnologiyalar sharofati bilan siz aytgan "keraksiz" narsalarsiz ham dasturlay olasiz.
Ammo CS aynan ular ustiga qurilgan.

P.S guruhni maqsadi savollarni "yaxshi-yomon"ga ajratish emas, bilsangiz, javob berish.
Post #37 322

Forwarded from Bobosher Musurmonov

@python_coderlast
Masalan, kartoshka to'g'ramoqchisiz.
Buni hatto yapon qilichi bilan ham to'g'rash mumkin, ammo aynan oshxona pichog'ida qilishadi.
Qilish mumkin bilan qilishga mo'ljallanganning orasida farq katta.
Desktop yoki game developmentni o'rganmoqchimisiz?
Pythonda ham qilish mumkin, ammo python ular uchun mo'ljallanmagan. Ularning o'zini "oshxona pichog'i" bor.
  • 👍 3
Post #36 330

Forwarded from Bobosher Musurmonov

Sertifikatlarga qiziqmaslikni maslahat bergan bo'lardim.
Muhimi o'sha sertifikat sizga nima uchun berilgani.
O'tgan yili menga ham OMUC sertifikati kerak bo'lib qolib(contestga shusiz qabul qilishmas ekan) fullstack kursini olgandim.
Rostini aytsam, 1 soat ham vaqt ketmadi.
Ertasiga qiziqib kurslariga kirib ko'rdim. Darslari unchalik sifatli emas va butun boshli loyiha ham "Ooooo" deydigan emas. Shunchaki, Udacitydagi kurslarni tagiga subtitr qo'yib, qo'shimchalar kiritishgan.

Bu bilan birovning mehnatiga hurmatsizlik qilib, ko'r-ko'rona yomonlash niyatim yo'q. Shunchaki yangi boshlovchilar vaqtini yo'qotmasin deyapman.
Yaxshi dasturchi bo'lmoqchimisiz?
INGLIZ TILINI ALBATTA O'RGANISHINGIZ KERAK. Bugun bo'lmasa ertaga, baribir shunga to'g'ri keladi.
O'zbekcha darslar orqali o'rganishingiz mumkin, ammo ishlashni boshlagach, ular ortiq sizga foydali bo'lmaydi.
Endi documentation, communitylar bilan ishlaysiz va ular 90% ingliz tilida.
O'zbekcha dars izlashga ketadigan vaqtingizni ingliz tilini o'rganishga sarflasangiz, kelajakda o'zingizga foyda.
  • 👍 5
Post #35 326

Forwarded from Bobosher Musurmonov

while o'zidan keyin shart va o'z blokida kod oladi:

while shart:
kod
kod
...


kabi.
Shart rost qiymat qabul qilsa, sikl aylanaveradi. Yolg'on qiymat qabul qilgan zahoti to'xtaydi.
Masalan,

son = 1
while son <= 3:
print(son)
son += 1


kodning natijasi
1
2
3
Bo'lib chiqadi. Sababi, har safar siklda son chiqarilib, uning qiymatiga 1 qo'shilayapti.
Bu narsa 1, 2 va 3 uchun bo'ladi.
undan keyin son = 4 bo'ladi.
Unda shart bajarilmagani uchun sikl to'xtaydi.
Post #33 343

Forwarded from Bobosher Musurmonov

Slug bu asosan, url tarkibida ishlatishga qulay field.
Masalan, bitta postga id orqali link bersangiz, /posts/id=12/ kabi bo'ladi.
Slug buni ancha yaxshi ko'rinishga keltiradi: postdan biror bir qismi(masalan, title)ni olishingiz mumkin. Masalan,
/posts/what-is-django/ kabi.
Birinchidan, url tushunarliroq bo'lsa, ikkinchidan, SEOga osonroq bo'ladi.
Post #32 348

Forwarded from Bobosher Musurmonov

Yana bir gap. Bu majburiy emas va umuman, shart ham emas. Dasturchi sifatida mualliflik huquqini hurmat qiling. Siz qandaydir tricky usullar bilan ishlatayotgan, aslida pullik dastur ustida ko'plab odam oylar mobaynida ishlagan. Xudo xohlasa, kelajakda real proyektlar qilganingizda, oylab qilgan mehnatingizni kimdir shunchaki "uxlatsa" sizga yoqqan bo'larmidi?
Xulosa qiling.
Nimanidir yaxshi tomonga o'zgartirmoqchimisiz, unda o'zingizdan boshlang.
P.S. bular qoida emas, shaxsiy fikrlarim.
  • 👍 5
Post #31 350

Forwarded from Bobosher Musurmonov

1) Python bilan NodeJSni taqqoslashning iloji yo'q, biri dasturlash tili, ikkinchisi framework.

2) Django va NodeJSni nazarda tutgan bo'lishingiz mumkin. NodeJSda ishlab ko'rmaganman, qulayliklari haqida ko'p ma'lumot bilmayman.
Djangoning eng katta kuchi bu "batteries included" xususiyatida. Ya'ni web application development jarayonida kerak bo'ladigan deyarli barcha tools ichida bor. Yana bir muhim jihati, o'sha har bir xususiyatni o'zingizga moslashingiz, qayta yozishingiz va hatto o'chirib tashlashingiz mumkin. Ya'ni Djangoni maksimal darajada o'zingizga kerakli tarzda moslashtira olasiz.

3) Bu Python community. Bu yerdan Python bilan NodeJSni taqqoslashni so'rash xuddi C++ guruhda "Python juda zo'r, to'g'rimi?" deb so'rashga o'xshaydi.
  • 👍 1
Post #30 340

Forwarded from Bobosher Musurmonov

OneToOneField bir model objectini boshqa bir modelning biror objectiga bog'lash uchun ishlatiladi.
Bizning holda UserDetail objectini User objectiga bog'lash uchun ishlatilgan. Ya'ni Har bir UserDetail objecti aynan bitta User objectiga tegishli. Aynan qaysi object ekanligini ko'rsatish uchun biz user=user yozdik. Bu yerdagi birinchi user UserDetail modelidagi user fieldi. Ikkinchi(tenglikdan keyingi) user esa biz hozirgina yaratgan User objecti.
Post #29 348

Forwarded from Bobosher Musurmonov

Python interpreted language va user uchun juda qulaylashgan. User uchun qulay bo'lishi uchun qiyinchiliklarning asosiy qismi komputerga yuklanadi. Mana shu faktorlar asosiy kamchiliklarga sabab bo'ladi. Tezlik pastligi, grafiklar bilan ishlashda noqulaylik va hokazo.
  • 😢 1
Post #28 347

Forwarded from Bobosher Musurmonov

Sababi, tepadagi gapning ma'nosini hamma tushuna olmaydi. Kimdir uchun bu gaplar shunchaki safsata. Agar sizga tushuntira olgan bo'lsam, bundan xursandman. Hamma qilayapti degani bu ish to'g'riligini anglatmaydi.
  • 😢 1
Post #27 350

Forwarded from Bobosher Musurmonov

Agar siz biror loyiha ustida yillab ishlasangiz-u, uni bittasi chiqib tekinga tarqatsa sizga yoqqan bo'larmidi? Pro versiyani tekinga tarqatish yoki umuman, tekinini topishga urinishdan oldin o'ylab ko'ring, shu ishingiz to'g'rimi?
Dinimiz bu ishingizni ma'qullaydimi yoki vijdoningiz?
Muallif mehnati va mualliflik huquqini hurmat qiling.
  • 👀 1
Post #26 374

Forwarded from Bobosher Musurmonov

Hammaga salom. Pythonni bilmaydiganlarga yordam berishinglar yaxshi, ammo tanganing ikkinchi tarafini ham hisobga olsanglar yomon bo'lmasdi. Hozir siz yordam berayotgan(student)lar aslida shu narsani vaqtida o'rganishi kerak edi(Universitetga kirishdan maqsad nima?). Hozir sizning "sharofatingiz" bilan imtihondan o'tishyapti. Ular xursand, siz xursand, ularning kelajagi esa ... Ertaga 4 yil vaqtini bekorga sarflab, universitetdan diplom bilan chiqishadi, bilim esa yo'q.
Siz ham qaysidir ma'noda ularga vaqtini isrof qilish va o'z-o'zini aldashda ko'maklashayapsiz. Sababi, agar ular bugun o'ta olmasa, ertaga o'zlari o'rganishadi.
Yordam berayapman deb o'ylab, aslida ularning ziyoniga ishlamang, azizlar. Qolgani vijdoningizga havola.
  • 😢 1
Post #25 520

Forwarded from Bobosher Musurmonov

Bu offtopic bo'lsa ham vijdonim qiynalgani uchun yozayapman.

Eng avval sizga ba'zi savollarni bermoqchiman:

Aynan nega sizga Professionali kerak?
Community version sizning talablaringizga javob bermayaptimi?
Nega boshqa tekin editorlardan foydalanmaysiz?
Nega Professionalni pullik qilib qo'yishgan?

Javoblar katta ehtimol bilan ko'pchilikda o'xshash bo'ladi:
Bu narsa bizga "ODAT" bo'lib qolgan.
Hamma joyda crack version.
Copyright oyoq osti bo'lib bo'lgan.
Yana kamiga crack versiyani chiqarish, uni ishlatishdan faxrlanishadi. Tan olasizmi yoki yo'q, biz, O'zbeklar mana shunday "O'ZBEKCHILIK"larni odat qilganmiz.

Sotib olishga pulim yo'q deysizmi?
Bilasizmi kim ferrari minadi?
Ferrari sotib olishga puli va xohishi bor odam. Agar puli yetmasa sekin boshqa variantlarni ko'radi.

Sizga ham tavsiyam shu. Xohlasangiz narxiga sotib oling.
Sotib olmasangiz o'sha "luxury class" versiondan hozircha voz kechib, oddiyroq biror narsa ishlatib turing.

P.S. Tepadagi gaplarim ba'zilarga shunchaki yetib bormaydi. Kimdir menga aql o'rgatishni ham boshlashi mumkin.
Shunchaki odam bo'laylik. Ertaga kattaroq loyiha ishlab chiqqan vaqtingiz xuddi shu narsa sizning boshingizga tushmasin.
Vijdonni ham ishlatib turaylik...
  • 😢 1
Post #24 428

Forwarded from Bobosher Musurmonov

Form orqali modelga field qo'shib bo'lmaydi.
Formni xuddi qutidek tasavvur qilishingiz mumkin:
Siz uni templatega bo'sh holda chiqarasiz. User esa unga ma'lumot kirgizib, yana o'zingizga qaytarib beradi.

Djangoda ikki xil form bor: Form va ModelForm.

Form bu shunchaki oddiygina 'quti'. Unga xohlagancha field kiritasiz va xohlagan ma'lumotingizni olasiz.
Bu faqat ma'lumot o'tkazish uchun. Bu yerda Modelga aloqador narsa yo'q.

ModelForm esa eng ko'p ishlatiladigan kodlarni kamaytirish uchun ishlab chiqilgan.
Ya'ni siz har bir fieldni qo'lda kiritib chiqish o'rniga faqat bir modeldagi fieldlardan qaysilarini "quti"ga chiqarishni tanlaysiz.
Natijada, bu form faqat sizdagi modelga mos ma'lumot qabul qiladi.
  • 👍 5
Post #23 382

Forwarded from Bobosher Musurmonov

Bu form adashmasam, registration uchun.
Va bilishimcha, TemplateViewdan inherit qilgansiz.
TemplateView faqat GET requestga javob beradi.
Yaxshisi, boshlanishiga function-based viewdan boshlang. Nima sodir bo'layotganini yaxshiroq tushunasiz. Yangi boshlaganda muhimi murakkab narsalar qilish emas, nima qilayotganingizni, kodingiz aslida qanday ishlayotganini tushunish.
Keyinchalik class basedga o'tsangiz bo'laveradi.
Post #21 385

Forwarded from Bobosher Musurmonov

ManyToMany relationship aslida databaseda simmetrik bo'lsa-da, yordamchi tableni djangoning o'zi tuzgani uchun biz faqat bir tarafdan reference qilamiz. Shuning uchun, ikkinchi model bu relationshipdan "bexabar" bo'ladi. Shuning uchun admin panelda ko'rinmaydi.

InlineModelAdmin orqali siz aytgan natijani olish mumkin, lekin bu unchalik yaxshi fikr emas deb o'ylayapman.
Yaxshisi, ModelAdminga filter qo'ying. Shunda, narigi model orqali "aylanib" kirishga hojat qolmaydi.
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →